| name | golang-idiomatic-go |
| description | Idiomatic Go style and best practices review. Use when checking interface design, pointer usage, or Go-specific idioms. Ensures code follows standard Go conventions and readability principles. |
| license | MIT |
| metadata | {"author":"saifoelloh","version":"2.1.0","parent_skill":"golang-best-practices","sources":["Learning Go: An Idiomatic Approach (Jon Bodner)","Effective Go"],"last_updated":"2026-03-13"} |
Golang Idiomatic Patterns
Expert-level review for idiomatic Go patterns. Ensures code follows Go conventions, proper interface design, and appropriate pointer usage.
When to Apply
Use this skill when:
- Ensuring code follows Go idioms
- Reviewing interface design patterns
- Checking pointer vs value usage
- Verifying "Accept interfaces, return structs" pattern
- Auditing usecase complexity
- Ensuring small, focused interfaces
Rule Categories by Priority
| Priority | Count | Focus |
|---|
| High | 1 | Method receivers |
| Medium | 5 | Go idioms and patterns |
Rules Covered (6 total)
High-Impact Patterns (1)
high-pointer-receiver - Use pointer receivers for mutations
Medium Improvements (5)
medium-interface-pollution - Keep interfaces small (<5 methods)
medium-accept-interface-return-struct - API flexibility pattern
medium-pointer-overuse - Don't overuse pointers for small types
medium-usecase-complexity - Move business logic to domain entities
medium-interface-in-implementation - Define interfaces where used
Common Idiomatic Patterns
Accept Interfaces, Return Structs
func Process(r io.Reader) (*Result, error) {
return &Result{}, nil
}
Small Interfaces
type Reader interface {
Read(p []byte) (n int, err error)
}
Pointer Receivers for Mutations
func (u *User) UpdateEmail(email string) {
u.Email = email
}
Trigger Phrases
This skill activates when you say:
- "Is this idiomatic Go?"
- "Review Go style"
- "Check interface design"
- "Verify pointer usage"
- "Review Go conventions"
- "Check for Go anti-patterns"
How to Use
For Idiomatic Review
- Check method receivers (pointer vs value)
- Verify interface sizes and locations
- Review pointer usage appropriateness
- Check "accept interfaces, return structs" pattern
Output Format
## Idiomatic Go Improvements: X
### [Rule Name] (Line Y)
**Pattern**: Interface Design / Pointer Usage / Method Receiver
**Issue**: Violates Go idiom
**Fix**: Suggested correction
**Example**:
```go
// Idiomatic Go code
Related Skills
Philosophy
Based on "Learning Go" and Effective Go:
- Simplicity over cleverness - Boring code is good code
- Interfaces are satisfied implicitly - Define where used
- Composition over inheritance - Embed types, don't extend
- Clear is better than clever - Readability wins
Notes
- Focus on Go-specific patterns
- Not general programming practices
- Emphasizes Go conventions and idioms
- Based on Effective Go and community standards