datadog/create-go-module
Create a new Go module in the agent repository
npx skills add https://github.com/DataDog/datadog-agent --skill create-go-module
Create a new Go module in the datadog-agent multi-module repository. This repo has 100+ Go modules managed via modules.yml and inter-module replace directives.
Use AskUserQuestion to collect the following. If $ARGUMENTS provides the path, skip that question.
comp/core/mything/def, pkg/util/mypkg). This becomes github.com/DataDog/datadog-agent/<path>.go.mod and registers the module.The create-module task requires all changes to be committed. Check with git status and warn the user if there are uncommitted changes.
dda inv create-module --path=<module-path>
This task automatically:
go.mod with the correct module path and Go versionreplace directives for inter-module dependenciesmodules.yml as independent: truetidy across all modulesinternal-deps-checker, check-mod-tidy, check-go-mod-replaces)Read modules.yml and review the new entry. The task sets independent: true by default. Adjust if needed:
| Field | Values | Notes |
|---|---|---|
| independent | true/false | true = tagged and tested independently |
| used_by_otel | true | Set if the module is used by the OTel agent build |
| should_tag | false | Set for internal tooling modules that shouldn't be tagged |
| should_test_condition | never/always | Override test behavior |
| lint_targets / test_targets | list of paths | Override default targets |
Most modules use default (no special config) or just set used_by_otel: true.
Report whether the task succeeded or failed. If it failed, read the error output and help fix the issue.
create-module — the task may restore files on failure.go.work and all necessary replace directives are set up.modules.yml or dda inv modules.show./create-go-module — Interactive: prompts for the module path/create-go-module comp/core/mything/def — Pre-fills the pathTake datadog/create-go-module from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.