effective-go
Apply Go best practices, idioms, and conventions from golang.org/doc/effective_go. Use when writing, reviewing, or refactoring Go code to ensure idiomatic, clean, and efficient implementations.
When & Why to Use This Skill
This Claude skill empowers developers to write high-quality, idiomatic Go code by strictly adhering to the official 'Effective Go' guidelines. It solves the problem of inconsistent coding styles and non-standard implementations by providing expert guidance on formatting, naming conventions, error handling, and concurrency, ensuring your Golang projects are clean, efficient, and maintainable.
Use Cases
- Automated Code Audits: Use the skill during pull request reviews to identify non-idiomatic patterns and ensure compliance with standard Go conventions like gofmt and proper naming.
- Legacy Code Refactoring: Modernize older Go codebases by applying contemporary best practices, such as replacing panics with proper error handling and optimizing interface usage.
- Idiomatic Concurrency Implementation: Guide the development of concurrent systems by ensuring the 'share memory by communicating' principle is followed through correct channel usage.
- Technical Documentation: Ensure all exported symbols in a Go package are documented according to official standards to improve codebase discoverability and usability.
| name | Effective Go |
|---|---|
| description | "Apply Go best practices, idioms, and conventions from golang.org/doc/effective_go. Use when writing, reviewing, or refactoring Go code to ensure idiomatic, clean, and efficient implementations." |
Effective Go
Apply best practices and conventions from the official Effective Go guide to write clean, idiomatic Go code.
When to Apply
Use this skill automatically when:
- Writing new Go code
- Reviewing Go code
- Refactoring existing Go implementations
Key Reminders
Follow the conventions and patterns documented at https://go.dev/doc/effective_go, with particular attention to:
- Formatting: Always use
gofmt- this is non-negotiable - Naming: No underscores, use MixedCaps for exported names, mixedCaps for unexported
- Error handling: Always check errors; return them, don't panic
- Concurrency: Share memory by communicating (use channels)
- Interfaces: Keep small (1-3 methods ideal); accept interfaces, return concrete types
- Documentation: Document all exported symbols, starting with the symbol name
References
- Official Guide: https://go.dev/doc/effective_go
- Code Review Comments: https://go.dev/wiki/CodeReviewComments
- Standard Library: Use as reference for idiomatic patterns
- Error Handling Reference: See
references/error-handling.mdfor comprehensive error handling patterns (wrapping, sentinel errors, custom types, testing)