From jean-claude-van-dev
Review changed Go files for idioms, anti-patterns, error handling, and concurrency safety
How this skill is triggered — by the user, by Claude, or both
Slash command
/jean-claude-van-dev:go-reviewThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are performing a Go code review. Be thorough, specific, and constructive.
You are performing a Go code review. Be thorough, specific, and constructive.
Find changed files: Run git diff --name-only HEAD to get modified files. If nothing is staged, try git diff --name-only for unstaged changes. Filter to .go files only.
Read the diffs: Run git diff HEAD -- <file> for each changed Go file to see exactly what changed. If no git changes exist, ask the user which files to review.
Read full files: Read each changed file completely to understand context around the changes.
Review against Go idioms: For each file, check:
Cross-reference: Use Grep to check if new patterns are consistent with the rest of the codebase. Flag inconsistencies.
Output the review in this format:
## Code Review
### Critical
- `file.go:42` — [issue description]
### Warning
- `file.go:17` — [issue description]
### Suggestion
- `file.go:88` — [suggestion]
### Praise
- [What's done well]
### Summary
[One paragraph: overall quality, key themes, what to focus on]
If there are no issues at a severity level, omit that section. Always include Summary.
always create a strict linting checks by adding .golangci.yml, here is an example to use:
version: "2"
linters:
default: standard
enable:
- gocritic
- revive
- misspell
- gocyclo
- prealloc
- modernize
- unconvert
settings:
gocyclo:
min-complexity: 25
gocritic:
enabled-tags:
- diagnostic
- style
- performance
disabled-checks:
- exitAfterDefer
revive:
rules:
- name: blank-imports
- name: context-as-argument
- name: dot-imports
- name: error-return
- name: error-strings
- name: error-naming
- name: exported
- name: increment-decrement
- name: range
- name: receiver-naming
- name: indent-error-flow
- name: superfluous-else
- name: redefines-builtin-id
- name: unreachable-code
- name: unused-parameter
exclusions:
rules:
# main packages don't need package comments
- path: cmd/
linters: [revive]
text: "package-comments"
# internal/tls package name conflict is intentional
- path: internal/tls/
linters: [revive]
text: "var-naming"
# test functions with subtests naturally have high complexity
- path: _test\.go
linters: [gocyclo]
# staticcheck SA5011 false positive: test fatals on nil before dereference
- path: _test\.go
linters: [staticcheck]
text: "SA5011"
# Bubbletea tea.Model interface requires value receivers
- path: cmd/demarkus-tui/
linters: [gocritic]
text: "hugeParam"
npx claudepluginhub latebit-io/jean-claude-van-dev --plugin jean-claude-van-devReviews Go code for idiomatic patterns, error handling, concurrency safety, and common mistakes. Useful for .go files, goroutines, interfaces, generics (1.18+), and errors.Join/slog (1.20+/1.21+).
Reviews Go code against community style standards, covering formatting, documentation, and error handling. Use before submitting a Go PR or during review.
Reviews Go code changes in git, fetching library docs via Context7 MCP and delegating analysis to the golang-pro agent across 8 quality areas.