Skip to content
Back to skills

Create Go Module

ASecurity

Create a new Go module in the agent repository

  • 3,754 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
devopsgobashgit

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add DataDog/datadog-agent --skill create-go-module --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Create Go Module?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Create Go Module
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/datadog-create-go-module/badge)](https://www.skillsdirectory.com/skills/datadog-create-go-module)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: create-go-module
description: Create a new Go module in the agent repository
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
argument-hint: "[module-path]"
model: sonnet
---

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

```bash
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:

| 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`.

### 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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.