| name | go-project-planning |
| description | Go Project Planning Skill |
Go Project Planning Skill
This skill provides architectural patterns and planning guidance for Go projects. Use it when:
- Starting a new Go project
- Planning feature implementations
- Reviewing architectural decisions
- Writing BDD specifications
NOTE: This skill references the shared Go patterns in ~/.claude/skills/golang/references/. All detailed patterns, code examples, and guidelines are maintained there as the single source of truth.
Quick Reference
Project Structure
project/
├── cmd/ # Composition root
│ └── myapp/
│ ├── main.go # Entry point
│ └── root.go # Cobra root command
├── internal/
│ ├── domain/ # INNER: Pure business logic
│ ├── ports/ # INNER: Interface contracts
│ ├── application/ # APPLICATION: Use cases
│ └── adapters/ # OUTER: Infrastructure
├── api/ # API definitions (proto, OpenAPI)
├── .go-arch-lint.yml # Architecture enforcement
├── .golangci.yml # Linting rules
├── Taskfile.yml # Build targets (required)
└── go.mod
Quality Gates (NON-NEGOTIABLE)
Before completing any task:
task build
task test
task lint
go-arch-lint check
IMPORTANT:
- Always use Taskfile targets
- NEVER modify linting configuration files (
.golangci.yml, .go-arch-lint.yml, .go-ai-lint.yml)
- NEVER use
//nolint: directives - there are no exceptions
- Fix the code, not the rules
Go Cloud SDK (Portable Components)
Follow Go Cloud SDK patterns for cloud-agnostic components. See go-cloud-sdk.md.
bucket, _ := blob.OpenBucket(ctx, os.Getenv("BUCKET_URL"))