create-go-module

SkillAI & models

create-go-module lets your AI create a new Go module inside the datadog-agent repository. Once added, your AI can set up and register a new module for you, saving you the manual setup work.

Available today. Use it from your connected AI after setup.

Add the skill, then ask your AI to create a new Go module in the datadog-agent repository and tell it the name you want.

Then ask your AI: use the create-go-module skill

What your AI can do with it

  • Create a new Go module in the datadog-agent repository
  • Register the new module so it is recognized in the repository

What this skill tells your AI

The instructions your AI receives, as published by datadog/datadog-agent in .agents/skills/create-go-module/SKILL.md and read by ahel’s review.

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.

Instructions

Step 1: Gather information from the user

Use AskUserQuestion to collect the following. If $ARGUMENTS provides the path, skip that question.

  1. Module path: The path relative to the repo root (e.g. comp/core/mything/def, pkg/util/mypkg). This becomes github.com/DataDog/datadog-agent/<path>.

  2. Does the directory already contain Go code?: If yes, the tool will also update dependent modules. If no, it just creates the go.mod and registers the module.

Step 2: Ensure clean git state

The create-module task requires all changes to be committed. Check with git status and warn the user if there are uncommitted changes.

Step 3: Run the create-module task

dda inv create-module --path=<module-path>

This task automatically:

  • Creates go.mod with the correct module path and Go version
  • Adds replace directives for inter-module dependencies
  • Registers the module in modules.yml as independent: true
  • Runs tidy across all modules
  • Runs linters (internal-deps-checker, check-mod-tidy, check-go-mod-replaces)

Step 4: Adjust modules.yml if needed

Read modules.yml and review the new entry. The task sets independent: true by default. Adjust if needed:

FieldValuesNotes
independenttrue/falsetrue = tagged and tested independently
used_by_oteltrueSet if the module is used by the OTel agent build
should_tagfalseSet for internal tooling modules that shouldn't be tagged
should_test_conditionnever/alwaysOverride test behavior
lint_targets / test_targetslist of pathsOverride default targets

Most modules use default (no special config) or just set used_by_otel: true.

Step 5: Report results

Report whether the task succeeded or failed. If it failed, read the error output and help fix the issue.

Important Notes

  • All changes must be committed before running create-module — the task may restore files on failure.
  • After creation, the module is automatically added to go.work and all necessary replace directives are set up.
  • To see the current module list: modules.yml or dda inv modules.show.

Usage

  • /create-go-module — Interactive: prompts for the module path
  • /create-go-module comp/core/mything/def — Pre-fills the path

Signals

GitHub stars
4k
Forks
1k
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
create-go-module
Source
github.com/datadog/datadog-agent