← ClaudeAtlas

go-project-standardlisted

Use when the user asks to create or review a Go module's layout (cmd/internal), go.mod, or golangci-lint config.
painhardcore/developer-standards · ★ 1 · Code & Development · score 74
Install: claude install-skill painhardcore/developer-standards
# go-project-standard Lean Go module coach. Not a project-layout generator, and not a Make, CI, or Docker author. ## Scope Not here: Make target names (`makefile-standard`), GitHub Actions (`ci-standard`), Dockerfile and image build (`dockerfile-standard`), Compose topology (`compose-standard`). Full golang-standards/project-layout trees, hard coverage gates, and inventing binaries the repo does not need are out of scope. ## Workflow ### 1. Inspect needs Inventory: `go.mod` and Go version, existing packages and `main` entrypoints, current linter config, tests, `tools.go` against `tool`. Read Make and CI only to know where the handoffs are; do not redefine them here. ### 2. Detect profile No `main` is a `library`. Cobra, urfave/cli, or kong is a `cli`. Any other binary is a `service`. Confirm with the human when it is ambiguous. Details: [`references/profiles.md`](references/profiles.md). ### 3. Apply standard Read [`references/rules.yaml`](references/rules.yaml), the source of truth for rule IDs. Full rules: [`references/go-project-standard.md`](references/go-project-standard.md). | Artifact | Greenfield start | |----------|------------------| | Lint | [`assets/.golangci.yml.template`](assets/.golangci.yml.template) → `.golangci.yml` | | library layout | [`assets/layout.library.md.template`](assets/layout.library.md.template) | | service layout | [`assets/layout.service.md.template`](assets/layout.service.md.template) | | cli layout | [`assets/layout.cli.md.templat