golang-review/SKILL.md
Act as a senior Go engineer performing a critical design and testing review. Evaluates architecture, patterns, idiomaticity, over-engineering, testing strategy, and proposes concrete improvements — all grounded in the codebase. Use when: reviewing a Go codebase for design soundness, testing robustness, or overall code quality before merging or after prototyping.
npx skillsauth add skyosev/agent-skills golang-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Perform a senior-level design and testing review of a Go codebase. Evaluate architecture, patterns, idiomaticity, over-engineering, and testing strategy. Produce a report with concrete, codebase-grounded improvements.
Idiomatic Go first. Architecture and patterns must follow Go conventions — explicit error handling, small interfaces, flat package layout, composition over inheritance. If a pattern fights the language, replace it.
Simplicity is robustness. The simplest design that meets real requirements wins. Reject abstractions, layers, and indirections that aren't backed by actual use cases.
Test at the right level. Unit tests for logic, integration tests for boundaries, end-to-end for critical paths. Don't over-mock; don't under-test. The strategy must be practical to implement and maintain.
Every conclusion grounded in code. No hand-waving. Every finding must cite specific files, functions, and lines from the codebase as evidence.
Improvements must earn their place. Every suggested change must explain why it is better (simplicity, robustness, maintainability) and acknowledge trade-offs.
Evaluate whether the architecture and patterns are idiomatic, simple, and robust.
Signals to check:
Action: Flag non-idiomatic patterns with the idiomatic alternative. Flag unclear responsibilities or missing boundaries that could cause implementation or maintenance issues.
Detect abstractions, layers, or extensibility that aren't backed by real requirements.
Signals to check:
Action: Recommend removal or inlining. If the abstraction exists for a stated future need, note it and assess whether the cost is justified.
Assess whether the testing approach is aligned with the architecture and covers the right cases.
Signals to check:
docs/testing_guide.md)? If so, does the code follow it?Action: If the strategy is misaligned or has gaps, propose a rebalanced approach — what to test, where, and how.
Synthesize findings into actionable changes.
For each improvement:
main/master)BASE=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo main)
SCOPE=$(git diff --name-only $(git merge-base HEAD $BASE)...HEAD)
Constrain all subsequent analysis to the resolved surface.AGENTS.md, README.md, docs/testing_guide.md (if they exist).Save as YYYY-MM-DD-code-review-{$LLM-name}.md in the project's docs folder (or project root if no docs folder
exists).
# Go Code Review — {date}
## Scope
- Surface: {diff / path / codebase}
- Files: {count or list}
- Exclusions: {list}
## Design & Architecture Assessment
| # | Location | Finding | Impact | Recommendation |
| - | -------- | ------- | ------ | -------------- |
| 1 | file:line | Non-idiomatic error wrapping pattern | Readability, consistency | Use `fmt.Errorf` with `%w` |
## Over-Engineering
| # | Location | Abstraction | Consumers | Recommendation |
| - | -------- | ----------- | --------- | -------------- |
| 1 | file:line | `ConfigManager` struct | 1 | Inline |
## Testing Strategy Assessment
| # | Location | Finding | Gap / Issue | Recommendation |
| - | -------- | ------- | ----------- | -------------- |
| 1 | pkg/auth/ | No integration tests | Auth boundary untested | Add integration test for token flow |
## Proposed Improvements (Priority Order)
1. **Must-fix**: {critical design issues, missing critical test coverage}
2. **Should-fix**: {over-engineering, misaligned test levels, non-idiomatic patterns}
3. **Consider**: {minor simplifications, test ergonomics, documentation gaps}
file/path.go:line with the exact code.development
Transforms vague feature ideas into precise, codebase-grounded technical requirements. Use when requirements are ambiguous/incomplete, the user struggles to describe behavior, terminology is unclear, or multiple concepts are mixed. Output is a requirements spec—NOT an implementation plan.
tools
Audit TypeScript type definitions for design debt — duplicated shapes, missing derivations, over-engineered generics, under-constrained type parameters, reinvented utility types, and disorganized type architecture. Type structure and maintainability, not type enforcement. Use when: reviewing type definitions for maintainability, reducing type duplication, simplifying over-engineered type-level logic, or reorganizing type architecture after growth.
development
Audit TypeScript test code for quality gaps — missing coverage on critical paths, brittle tests coupled to implementation, over-mocking, assertion-free tests, missing edge cases, and duplicated test setup. Focuses on test effectiveness, not production code structure. Use when: reviewing TypeScript test suites for reliability, reducing false-positive test failures, improving coverage of critical business logic, or cleaning up test debt.
tools
Audit TypeScript class and interface design for SOLID violations — god classes, rigid extension points, broken substitutability, fat interfaces, and concrete dependency chains. Focuses on responsibility assignment and abstraction fitness. Use when: reviewing class hierarchies, preparing for extension with new variants, reducing coupling between services, or improving testability of class-heavy code.