From fuse-solid
SOLID principles for Go 1.23+. Files < 100 lines, interfaces separated, modular architecture. Modules MANDATORY.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fuse-solid:solid-goThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before ANY implementation, use `TeamCreate` to spawn 3 agents:
references/architecture-patterns.mdreferences/dependency-inversion.mdreferences/interface-segregation.mdreferences/liskov-substitution.mdreferences/open-closed.mdreferences/single-responsibility.mdreferences/solid-principles.mdreferences/templates/error.mdreferences/templates/handler.mdreferences/templates/interface.mdreferences/templates/module.mdreferences/templates/service.mdreferences/templates/test.mdBefore ANY implementation, use TeamCreate to spawn 3 agents:
Before writing ANY new code:
internal/core/services/, internal/core/ports/internal/core/| Layer | Location | Max Lines |
|---|---|---|
| Handlers | internal/modules/[feature]/handlers/ | 50 |
| Services | internal/modules/[feature]/services/ | 100 |
| Repositories | internal/modules/[feature]/repositories/ | 100 |
| Ports (interfaces) | internal/modules/[feature]/ports/ | 30 |
| Models | internal/modules/[feature]/models/ | 50 |
| Shared | internal/core/{services,ports,models}/ | - |
NEVER use flat internal/ structure - always internal/modules/[feature]/
| Rule | Value |
|---|---|
| File limit | 100 lines (split at 90) |
| Handlers | < 50 lines, delegate to services |
| Interfaces | ports/ directory ONLY |
| Godoc | Every exported function documented |
| Accept interfaces | Return structs |
| Small interfaces | 1-3 methods max (Go idiom) |
| Topic | Reference | When to consult |
|---|---|---|
| SOLID Overview | solid-principles.md | Quick reference |
| SRP | single-responsibility.md | Fat structs |
| OCP | open-closed.md | Adding providers |
| LSP | liskov-substitution.md | Contracts |
| ISP | interface-segregation.md | Fat interfaces |
| DIP | dependency-inversion.md | Injection |
| Architecture | architecture-patterns.md | Hex/modular |
| Template | When to use |
|---|---|
| module.md | Feature module structure |
| service.md | Business logic service |
| interface.md | Port definition |
| handler.md | HTTP handler |
| error.md | Custom errors |
| test.md | Table-driven tests |
| Anti-Pattern | Fix |
|---|---|
| Files > 100 lines | Split at 90 |
| Interfaces in impl files | Move to ports/ directory |
| Fat interfaces (4+ methods) | Split into small interfaces |
Flat internal/ structure | Use internal/modules/[feature]/ |
init() for dependency wiring | Use constructor injection |
npx claudepluginhub fusengine/agents --plugin fuse-solidDesigns Go types with composition, embedding, type assertions, interface segregation, DI via interfaces, struct tags, and pointer/value receiver patterns.
Provides idiomatic Go patterns for backend APIs with Gin, Echo, Fiber: standard project structure, custom error handling, handler dependency injection, concurrency best practices.
Provides idiomatic Go patterns and best practices for error handling, concurrency like worker pools, simplicity, zero values, and interfaces. Activates for writing, reviewing, refactoring, or designing Go code.