smithery/saifoelloh

golang-idiomatic-go

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.

Installation

$ npx skills add smithery/saifoelloh --skill golang-idiomatic-go

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/saifoelloh.

npx skills add smithery/saifoelloh

Browse all from smithery/saifoelloh

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Version2.1.0
LicenseMIT
More 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

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,389 B
  • docs SUMMARY.md 186 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

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

// ✅ GOOD: Accept interface, return struct
func Process(r io.Reader) (*Result, error) {
    // ...
    return &Result{}, nil
}

Small Interfaces

// ✅ GOOD: Small, focused interface
type Reader interface {
    Read(p []byte) (n int, err error)
}

Pointer Receivers for Mutations

// ✅ GOOD: Pointer receiver modifies state
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

  1. Check method receivers (pointer vs value)
  2. Verify interface sizes and locations
  3. Review pointer usage appropriateness
  4. 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**:

// Idiomatic Go code


## Related Skills

- [golang-clean-architecture](../clean-architecture/SKILL.md) - For interface segregation
- [golang-design-patterns](../design-patterns/SKILL.md) - For usecase complexity

## 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