Agent skill
code-generation
Use go:generate effectively - mockgen, stringer, templates, reducing boilerplate
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/code-generation-baphled-dotopencode
SKILL.md
Skill: code-generation
What I do
I provide expertise in using Go's generate tool to automate the creation of boilerplate code. I focus on standard tools like mockgen, stringer, and custom template-based generation to improve maintainability and reduce manual coding.
When to use me
- When adding or updating interface definitions that require new mocks
- When working with enums that need string representation methods
- When implementing repetitive patterns that can be automated via templates
Core principles
- Automate repetitive tasks: Use generation for code that follows a predictable pattern.
- Explicit directives: Place
//go:generatedirectives in the files where the source material is defined. - Consistency: Ensure generated code follows project style and passes all linting checks.
- Visibility: Use standard file naming (e.g.,
_string.go,_mock.go) to distinguish generated files from manual ones.
Patterns & examples
Using stringer for enums:
//go:generate stringer -type=Status
type Status int
const (
Unknown Status = iota
Pending
Active
)
Using mockgen for interfaces:
//go:generate mockgen -destination=mocks/user_repo.go -package=mocks . UserRepository
type UserRepository interface {
Get(id int) (*User, error)
}
Custom template-based generation:
Create a small Go tool that uses the text/template package to generate code from a source definition, then trigger it with //go:generate go run generator.go.
Running generation:
Run go generate ./... from the project root to update all generated files.
Anti-patterns to avoid
- ❌ Manual editing: Never edit a generated file. Changes will be overwritten next time
go generateruns. - ❌ Ignoring generated files: Generated code should generally be committed to version control so consumers don't need to install all generation tools.
- ❌ Too much generation: Don't over-engineer solutions. Only generate code when manual maintenance is demonstrably costly or error-prone.
KB Reference
~/vaults/baphled/3. Resources/Knowledge Base/AI Development System/Skills/Code-Quality/Code Generation.md
Related skills
golang: For idiomatic patterns and template usagegomock: Specifics of using the GoMock generation toolsautomation: For integrating generation into CI/CD pipelines
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?