Code Review — Go
Apply Go-specific linting using the checklist in this skill directory.
Step 0 — Load Project Map
Check for .agentic/project-map.md:
- If present: read it. Use the layer structure, key modules table, and non-obvious conventions it defines to orient all findings. Skip redundant filesystem exploration.
- If absent: run lightweight auto-discovery:
- Read
go.modto identify module name and Go version - List top-level directories
- Read the entry point in
cmd/for ~20 lines of context - Suggest running the
project-mapskill after this review to avoid this overhead next time
- Read
Step 1 — Load Checklist
Read checklist.md in this skill directory and apply every item to the codebase.
Step 2 — Determine Scope
- If the user specifies files, review those.
- Otherwise review the current diff:
git diff HEADor staged changes. - Do not review files outside stated scope.
Step 3 — Analyze with Go-specific Lenses
Work through the checklist systematically. For each issue found, note:
- File path and line number
- Risk level:
critical/high/medium/low - Description of the issue
- Why it matters (explain the impact)
- Verifiable source reference when the finding is non-obvious
For concurrency/state-transition issues too complex for prose, emit a Mermaid stateDiagram-v2 diagram showing the problematic and correct state transitions.
Step 4 — Write the Review
Output the review in this exact format:
## Code Review — Go
### What Works Well
- [At least one specific positive observation with file reference]
### Findings
#### Critical
- `path/to/file.go:42` [critical] Description. Why it must change. *Source: [Go Memory Model](https://go.dev/ref/mem)*
#### High
- `path/to/file.go:18` [high] Description. Why it matters. *Source: ...*
#### Medium
- `path/to/file.go:7` [medium] Description.
#### Low
- `path/to/file.go:5` [low] Minor note.
### Suggested Improvements
[Concrete alternatives and solutions for the most impactful findings]
### Summary
[One paragraph: overall quality, main risks, merge recommendation]
Step 5 — Tone and Sources
- Be direct and specific. Reference exact line numbers.
- Cite verifiable sources (Go specification, Go Blog, official docs, well-known style guides) inline for non-obvious findings. Include the source name and URL.
- Explain why, not just what to change.
- Assume good intent. Use sandwich communication: open with positives, then findings by severity descending, then actionable improvement path.
- For race condition or state machine issues too complex for prose: emit a
stateDiagram-v2Mermaid block showing the problematic and correct state transitions.
Source: soulcodex/agentic — distributed by TomeVault.