Solid go
SOLID principles for Go 1.23+. Files < 100 lines, interfaces separated, modular architecture. Modules MANDATORY. Use when: writing or refactoring Go code, structuring internal/modules/[feature]/ layers, or defining ports/ interfaces.From its SKILL.md
npx -y skills add fusengine/agents --skill solid-goAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 22 stars22 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.9 KB, 790 tokens by cl100k_base, as published. Nobody here has run it
SOLID Go - Modular Architecture
Agent Workflow (MANDATORY)
Before ANY implementation, use TeamCreate to spawn 3 agents:
- fuse-ai-pilot:explore-codebase - Analyze existing architecture
- fuse-ai-pilot:research-expert - Verify Go docs via Context7
- fuse-ai-pilot:sniper - Post-implementation validation
DRY - Reuse Before Creating (MANDATORY)
Before writing ANY new code:
- Grep the codebase for similar interfaces, services, or logic
- Check shared locations:
internal/core/services/,internal/core/ports/ - If similar code exists -> extend/reuse instead of duplicate
- If code will be used by 2+ features -> create it in
internal/core/
Architecture (Modules MANDATORY)
| 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]/
Critical Rules (MANDATORY)
| 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) |
Reference Guide
Concepts
| 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 |
Templates
| 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 |
Forbidden
| 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 |
What ships with it: 13 files
100.5 KB alongside SKILL.md
references/
- architecture-patterns.md12.5 KB
- dependency-inversion.md9.4 KB
- interface-segregation.md7.9 KB
- liskov-substitution.md7.8 KB
- open-closed.md6.9 KB
- single-responsibility.md5.6 KB
- solid-principles.md2.6 KB
- templates/error.md8.1 KB
- templates/handler.md8.8 KB
- templates/interface.md6.1 KB
- templates/module.md7.3 KB
- templates/service.md7.3 KB
- templates/test.md10.2 KB