Agent skill
golang-review
Go code standards enforcing idiomatic patterns, safety, and maintainability. Use when writing, generating, or reviewing Go code.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/golang-review
SKILL.md
Go Code Review Skill
Rules ensuring maintainability, safety, and developer velocity. MUST rules enforced by CI/review; SHOULD rules are strong recommendations; CAN rules allowed without extra approval.
1 — Before Coding
- BP-1 (MUST): Ask clarifying questions for ambiguous requirements
- BP-2 (MUST): Draft and confirm approach before coding
- BP-3 (SHOULD): List pros/cons when multiple approaches exist
- BP-4 (SHOULD): Define testing strategy and observability signals upfront
2 — Modules & Dependencies
- MD-1 (SHOULD): Prefer stdlib; introduce dependencies with clear justification
- MD-2 (CAN): Use govulncheck for updates
3 — Code Style
- CS-1 (MUST): Enforce gofmt, go vet
- CS-2 (MUST): Avoid name stutter in packages
- CS-3 (SHOULD): Small interfaces near consumers; prefer composition
- CS-4 (SHOULD): Avoid reflection on hot paths; prefer generics
- CS-5 (MUST): Use input structs for functions with >2 arguments
- CS-6 (SHOULD): Declare input structs before consuming functions
4 — Errors
- ERR-1 (MUST): Wrap with %w and context
- ERR-2 (MUST): Use errors.Is/As for control flow
- ERR-3 (SHOULD): Define sentinel errors in package
- ERR-4 (CAN): Use context.WithCancelCause for error propagation
5 — Concurrency
- CC-1 (MUST): Sender closes channels; receivers never close
- CC-2 (MUST): Tie goroutine lifetime to context.Context
- CC-3 (MUST): Protect shared state with sync.Mutex/atomic
- CC-4 (SHOULD): Use errgroup for fan-out work
- CC-5 (CAN): Buffered channels only with rationale
6 — Contexts
- CTX-1 (MUST): ctx must be first parameter; never store in structs
- CTX-2 (MUST): Propagate non-nil ctx; honor Done/deadlines
- CTX-3 (CAN): Expose WithX helpers deriving deadlines from config
7 — Testing
- T-1 (MUST): Table-driven, deterministic, hermetic tests
- T-2 (MUST): Run with -race flag in CI; use t.Cleanup
- T-3 (SHOULD): Mark safe tests with t.Parallel()
8 — Logging & Observability
- OBS-1 (MUST): Structured logging with slog, levels, consistent fields
- OBS-2 (SHOULD): Correlate logs/metrics/traces via request IDs
- OBS-3 (CAN): Provide debug/pprof endpoints with auth guards
9 — Performance
- PERF-1 (MUST): Measure before optimizing using pprof, benchmarks
- PERF-2 (SHOULD): Avoid allocations on hot paths; reuse buffers
- PERF-3 (CAN): Add microbenchmarks for critical functions
10 — Configuration
- CFG-1 (MUST): Config via env/flags; validate on startup; fail fast
- CFG-2 (MUST): Treat config as immutable after initialization
- CFG-3 (SHOULD): Provide sensible defaults and clear documentation
- CFG-4 (CAN): Support hot-reload only with correctness guarantees
11 — APIs & Boundaries
- API-1 (MUST): Document exported items; minimize exported surface
- API-2 (MUST): Accept interfaces where variation needed; return concrete types
- API-3 (SHOULD): Keep functions small, orthogonal, composable
- API-5 (CAN): Use constructor options pattern for extensibility
12 — Security
- SEC-1 (MUST): Validate inputs; set explicit I/O timeouts; prefer TLS
- SEC-2 (MUST): Never log secrets; manage outside code
- SEC-3 (SHOULD): Limit filesystem/network access by default
- SEC-4 (CAN): Add fuzz tests for untrusted inputs
13 — CI/CD
- CI-1 (MUST): Lint, vet, test (-race), build on every PR
- CI-2 (MUST): Reproducible builds with -trimpath; embed version via -ldflags
- CI-3 (SHOULD): Require review sign-off for MUST rules
- CI-4 (CAN): Publish SBOM; run govulncheck/license checks
14 — Tooling Gates
- G-1 (MUST): go vet ./... passes
- G-2 (MUST): golangci-lint run passes with project config
- G-3 (MUST): go test -race ./... passes
Review Checklist
When reviewing Go code:
- Readability: Is the code clear and self-documenting?
- Complexity: Is cyclomatic complexity reasonable?
- Data structures: Are appropriate structures/algorithms used?
- Dependencies: Are hidden dependencies factored out?
- Naming: Is function/variable naming consistent?
- Error handling: Are errors wrapped with context?
- Concurrency: Are goroutines properly managed?
- Testing: Are tests table-driven and comprehensive?
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?