SuperAPI AI Directory

solid-go

Coding & development

View repository

Updated 10-15 21:49

About this skill

Before writing any new code it requires a DRY check against internal/core/services and internal/core/ports. See solid-principles.md for the overview, the per-principle references for SRP/OCP/LSP/ISP/DIP detail, architecture-patterns.md for hexagonal/modular layout, and the templates for module/service/interface/handler/error/test scaffolding.

SOLID Go - Modular Architecture

Agent Workflow (MANDATORY)

Before ANY implementation, spawn 3 agents in parallel, one Agent call each with a name:

  1. fuse-ai-pilot:explore-codebase - Analyze existing architecture
  2. fuse-ai-pilot:research-expert - Verify Go docs via Context7
  3. fuse-ai-pilot:sniper - Post-implementation validation

DRY - Reuse Before Creating (MANDATORY)

Before writing ANY new code:

  1. Grep the codebase for similar interfaces, services, or logic
  2. Check shared locations: internal/core/services/, internal/core/ports/
  3. If similar code exists -> extend/reuse instead of duplicate
  4. If code will be used by 2+ features -> create it in internal/core/

Architecture (Modules MANDATORY)

Layer Location
Handlers internal/modules/[feature]/handlers/
Services internal/modules/[feature]/services/
Repositories internal/modules/[feature]/repositories/
Ports (interfaces) internal/modules/[feature]/ports/
Models internal/modules/[feature]/models/
Shared internal/core/{services,ports,models}/

NEVER use flat internal/ structure - always internal/modules/[feature]/


Critical Rules (MANDATORY)

Rule Value
File limit FUSE_SOLID_MAX_LINES
Handlers Thin, 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 over FUSE_SOLID_MAX_LINES Split by responsibility
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