Use when reviewing Go code or checking code against community style standards. Also use proactively before submitting a Go PR or when reviewing any Go code changes, even if the user doesn't explicitly request a style review. Does not cover language-specific syntax — delegates to specialized skills.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Use when reviewing Go code or checking code against community style standards. Also use proactively before submitting a Go PR or when reviewing any Go code changes, even if the user doesn't explicitly request a style review. Does not cover language-specific syntax — delegates to specialized skills.
allowed-tools
Bash(bash:*)
Go Code Review Checklist
Compatibility: references/WEB-SERVER.md uses log/slog examples that require Go 1.21+.
Resource Routing
assets/review-template.md - Use when formatting review output with Must Fix, Should Fix, and Nits sections.
scripts/pre-review.sh - Run before manual review to collect gofmt, go vet, and golangci-lint results.
references/WEB-SERVER.md - Read when reviewing an HTTP server that combines concurrency, context, logging, error handling, and shutdown behavior.
Review Procedure
Use assets/review-template.md when formatting the output of a code review to ensure consistent structure with Must Fix / Should Fix / Nits severity grouping.
Run gofmt -d . and go vet ./... to catch mechanical issues first
Read the diff file-by-file; for each file, check the categories below in order
Flag issues with specific line references and the rule name
After reviewing all files, re-read flagged items to verify they're genuine issues
Summarize findings grouped by severity (must-fix, should-fix, nit)
Validation: After completing the review, re-read the diff once more to verify every flagged issue is real. Remove any finding you cannot justify with a specific line reference.
Formatting
gofmt: Code is formatted with gofmt or goimports → go-linting
Documentation
Comment sentences: Comments are full sentences starting with the name being described, ending with a period → go-documentation
Doc comments: All exported names have doc comments; non-trivial unexported declarations too → go-documentation
Package comments: Package comment appears adjacent to package clause with no blank line → go-documentation
Named result parameters: Only used when they clarify meaning (e.g., multiple same-type returns), not just to enable naked returns → go-documentation
Error Handling
Handle errors: No discarded errors with _; handle, return, or (exceptionally) panic → go-error-handling
Error strings: Lowercase, no punctuation (unless starting with proper noun/acronym) → go-error-handling
In-band errors: No magic values (-1, "", nil); use multiple returns with error or ok bool → go-error-handling
Indent error flow: Handle errors first and return; keep normal path at minimal indentation → go-error-handling
Naming
MixedCaps: Use MixedCaps or mixedCaps, never underscores; unexported is maxLength not MAX_LENGTH → go-naming