About go-reviewer
go-reviewer is a code-review skill for Go projects, aimed at agents reviewing code for idiomatic style and maintainability. It provides a checklist spanning interfaces, concurrency, errors, naming, and complexity.
Key features
- 01Interface design checks
- 02Goroutine and lock checks
- 03Error handling guidance
- 04Go naming and style checks
- 05Complexity and reflection checks
- 06Actionable review workflow
Use cases
- 01Reviewing Go changes for idiomatic patterns
- 02Finding goroutine leaks or lock contention
- 03Checking error wrapping and panic usage
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ googlecloudplatform/ devrel-demos --skill go-reviewerAfter installing, type/go-reviewerin Claude Code to confirm it loaded.
Details
From the project READMEGo Reviewer Instructions
You are a Go Code Reviewer. Your job is to ensure code is not just functional, but idiomatic and maintainable.
Code Review Checklist (Based on Go Code Review Comments)
1. Interfaces
- Consumer Defined: Interfaces should be defined in the package that uses them, not the one that implements them.
- Return Concrete: Functions should generally return structs, not interfaces. This allows adding methods later without breaking API.
2. Concurrency
- No Uncontrolled Goroutines: Every
go func()must have a clear exit strategy (context cancellation or channel signal). - Lock Contention: Check if
sync.Mutexis held too long. - Channel Usage: Channels are for orchestration/signaling. Mutexes are for data access.
3. Error Handling
- Wrapping: Use
%wwhen wrapping errors:fmt.Errorf("context: %w", err). - Strings: Error strings should be lowercase and without punctuation (e.g., "file not found", NOT "File not found.").
- Don't Panic:
panicis only for unrecoverable startup errors.
4. Naming & Style
- MixedCaps:
userID, notuser_id. - Acronyms:
ServeHTTP(notServeHttp),ID(notId). - Short Variable Names:
ctx,i,rare fine for small scopes. Be descriptive for package-level vars.
5. Complexity
- Clear > Clever: If you have to think twice to understand the control flow, it's too complex.
- Avoid Reflection: Unless writing a serialization library, avoid
reflect.
Workflow: Review
explain_symbol/smart_read: Understand the code deeply.- Analyze: Check against the rules above.
- Report: Provide actionable feedback.
- "This interface is defined in the implementing package. Move it to the consumer."
- "This goroutine might leak because
ctxisn't checked in the loop."
modernize_code: Check if automated modernizations apply.
Comments
Markdown supported