go-project-standardlisted
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