Acerca de
Esta habilidad proporciona una lista de verificación estructurada para revisar código en Go, centrándose en patrones idiomáticos, manejo de errores y cobertura de pruebas. Opera en modos para revisar diferencias (como PRs) o archivos/paquetes completos. Úsela para revisiones generales de calidad de código, no para auditorías específicas de seguridad o rendimiento.
Instalación rápida
Claude Code
Recomendadonpx skills add eduardo-sl/go-agent-skills -a claude-code/plugin add https://github.com/eduardo-sl/go-agent-skillsgit clone https://github.com/eduardo-sl/go-agent-skills.git ~/.claude/skills/go-code-reviewCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
Go Code Review
Structured code review process for Go. Reviews should be constructive, specific, and cite the relevant principle behind each finding.
Operating Modes
Pick the mode that matches the request before starting:
- Diff review (default) — review only the changed lines plus enough surrounding context to judge them. Use for PRs and working-tree changes.
- File/package review — review the named files or packages in full, including their tests.
- Full audit — sweep the entire codebase. Use the strategy in "Auditing Large Codebases" below and aggregate everything into one report.
Review Process
Execute these steps in order. For each finding, classify severity:
- 🔴 BLOCKER — Must fix before merge. Correctness, data loss, security.
- 🟡 WARNING — Should fix. Maintainability, idiomatic Go, clarity.
- 🟢 SUGGESTION — Consider improving. Style, naming, documentation.
0. Run the Toolchain First
Before reading code manually, let the tools catch the mechanical issues (skip any tool that is not installed and note it in the report):
go build ./... # it must compile
go vet ./... # suspicious constructs
golangci-lint run # if the repo has a config
go test -race ./... # tests pass, no data races
Report tool findings alongside manual findings — a failing go vet is
an automatic 🔴 BLOCKER. Never report an issue a tool already proves
absent.
1. Correctness & Safety
Error Handling
- Every error is checked. No blank identifier
_discarding errors silently. - Errors are wrapped with context:
fmt.Errorf("fetch user %d: %w", id, err). - Error values compared with
errors.Is()/errors.As(), never==. - No
panicoutside ofinit()or truly unrecoverable situations. - Errors handled exactly once — no log-and-return patterns.
Nil Safety
- Pointer receivers checked before dereference when nil is a valid state.
- Map reads guarded or use comma-ok idiom.
- Channel operations consider closed/nil channels.
- Slice operations check bounds where relevant.
Concurrency
- Shared mutable state protected by
sync.Mutexor channels. - No goroutine leaks — every goroutine has a clear termination path.
- Context propagation: all blocking calls accept and respect
context.Context. sync.WaitGrouporerrgroup.Groupused for goroutine lifecycle.
2. API Design
- Exported functions have doc comments starting with the function name.
- Accept interfaces, return concrete types.
- Use functional options (
WithTimeout(d)) over config structs for optional params. - Context is always the first parameter:
func Foo(ctx context.Context, ...). - Return
erroras the last return value. - Avoid
boolparameters — prefer named types or options.
3. Idiomatic Go
- Uses
:=for local variables,varfor zero-value intent. - No unnecessary
elseafter return/continue/break. - Guard clauses and early returns reduce nesting.
deferused for cleanup, placed right after resource acquisition.rangeused over manual index iteration where appropriate.- Struct literals use field names.
- Interfaces defined at consumer, not producer.
4. Package Structure
- Package names are short, lowercase, singular nouns.
- No circular dependencies between packages.
internal/used for non-public packages.cmd/contains main packages, one per binary.- Clear separation of concerns — no god packages.
5. Testing
- Test functions follow
TestXxxnaming convention. - Table-driven tests used for multiple input/output combinations.
- Test helpers use
t.Helper()for clean stack traces. - No test logic in
init()— useTestMainwhen needed. - Tests use
testify/assertortestify/requireconsistently, or stdlib only. - Edge cases covered: empty input, nil, zero values, max values.
t.Parallel()used where safe.
6. Documentation
- All exported types, functions, and constants have doc comments.
- Doc comments start with the name of the entity.
- Package-level doc comment in
doc.gofor non-trivial packages. - Complex algorithms or business logic have inline comments explaining why.
7. Dependencies
go.modhas no replace directives in committed code (except monorepos).- No unused dependencies.
- Dependencies are from well-maintained, reputable sources.
- Indirect dependencies are understood and acceptable.
Auditing Large Codebases
When the scope exceeds ~20 files, do not read everything in one linear pass. Split the audit into independent passes:
- Enumerate packages (
go list ./...) and group them by layer (handlers, services, stores, shared libraries). - Run one focused pass per concern from sections 1-7 (correctness, API design, idioms, structure, testing, docs, dependencies).
- If your environment supports delegating work to parallel sub-agents or tasks, assign each pass to one — they are independent by design. Otherwise run them sequentially, one concern at a time.
- Require every finding to cite
file.go:lineand severity so the final aggregation is mechanical: merge, deduplicate, sort by severity.
Review Output Format
## Code Review Summary
**Files reviewed:** <list>
**Overall assessment:** APPROVE | REQUEST CHANGES | COMMENT
### Findings
#### 🔴 BLOCKER: <title>
- **File:** `path/to/file.go:42`
- **Issue:** <what is wrong>
- **Why:** <which principle or guideline>
- **Fix:** <concrete suggestion>
#### 🟡 WARNING: <title>
...
#### 🟢 SUGGESTION: <title>
...
### What's Done Well
<genuine positive observations — always include at least one>
Repositorio GitHub
Preguntas frecuentes
¿Qué es el Skill go-code-review?
go-code-review es un Skill de Claude creado por eduardo-sl. Los Skills agrupan instrucciones y recursos que Claude carga cuando los necesita para realizar tareas relacionadas con go-code-review sin indicaciones adicionales.
¿Cómo instalo go-code-review?
Usa los comandos de instalación de esta página: añade go-code-review a Claude Code como plugin o clona su repositorio en tu directorio de skills y reinicia Claude para cargarlo.
¿A qué categoría pertenece go-code-review?
go-code-review pertenece a la categoría Pruebas.
¿Se puede usar go-code-review gratis?
Sí. go-code-review aparece en AIMCP y se puede instalar gratis.
Habilidades relacionadas
Esta Skill de Claude ejecuta el benchmark lm-evaluation-harness para evaluar modelos de lenguaje en más de 60 tareas académicas estandarizadas como MMLU y GSM8K. Está diseñada para que los desarrolladores comparen la calidad de los modelos, realicen seguimiento del progreso del entrenamiento o reporten resultados académicos. La herramienta admite varios backends, incluidos modelos de HuggingFace y vLLM.
Esta habilidad proporciona conocimiento integral para implementar Cron Triggers de Cloudflare y programar Workers mediante expresiones cron. Cubre la configuración de tareas periódicas, trabajos de mantenimiento y flujos de trabajo automatizados, manejando problemas comunes como expresiones cron inválidas y inconvenientes de zonas horarias. Los desarrolladores pueden utilizarla para configurar manejadores programados, probar activadores cron e integrar con Workflows y Green Compute.
Esta habilidad de Claude proporciona un kit de herramientas basado en Playwright para probar aplicaciones web locales mediante scripts de Python. Permite verificación de frontend, depuración de interfaz de usuario, captura de pantallas y visualización de registros, mientras gestiona los ciclos de vida del servidor. Úsela para tareas de automatización de navegadores, pero ejecute los scripts directamente en lugar de leer su código fuente para evitar contaminación del contexto.
Esta habilidad ayuda a los desarrolladores a completar el trabajo terminado verificando que las pruebas pasen y luego presentando opciones estructuradas de integración. Guía el flujo de trabajo para fusionar, crear PRs o limpiar ramas después de que se completa la implementación. Úsala cuando tu código esté listo y probado para finalizar sistemáticamente el proceso de desarrollo.
