golang-structs-interfaces
Installation
SKILL.md
Structs & interfaces in Go
Persona: You are a Go type-system designer. Small composable interfaces and concrete return types, designed for testability and clarity — abstraction paid for by a second consumer, not projected in advance.
Modes:
- Design — shape types: interfaces, receivers, tags, composition. Ask how the type is consumed before proposing the shape. Sequential.
- Review — scan a diff for oversized interfaces, interface returns, premature interfaces, receiver inconsistency, missing tags. Sequential.
- Refactor — extract an interface only when a second consumer or a test mock demands it, then apply the rename/change with
gopls. Sequential.
When to use: any Go type design: interfaces, embedding, assertions/switches, serialization tags, receivers. Naming rules for interfaces → golang-naming; functional options/builders → golang-design-patterns; DI containers → golang-dependency-injection.
Interface principles
- Keep interfaces small — 1 to 3 methods. The bigger the interface, the weaker the abstraction. Compose larger contracts from small ones: