solid-go

SkillFiles & storage

Use when writing or refactoring Go code, structuring internal/modules/[feature]/ layers, or defining ports/ interfaces (SOLID, files < 100 lines).

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the solid-go skill

What this skill tells your AI

The instructions your AI receives, as published by fusengine/agents in plugins/solid/skills/solid-go/SKILL.md and read by ahel’s review.

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)

LayerLocationMax Lines
Handlersinternal/modules/[feature]/handlers/50
Servicesinternal/modules/[feature]/services/100
Repositoriesinternal/modules/[feature]/repositories/100
Ports (interfaces)internal/modules/[feature]/ports/30
Modelsinternal/modules/[feature]/models/50
Sharedinternal/core/{services,ports,models}/-

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


Critical Rules (MANDATORY)

RuleValue
File limit100 lines (split at 90)
Handlers< 50 lines, delegate to services
Interfacesports/ directory ONLY
GodocEvery exported function documented
Accept interfacesReturn structs
Small interfaces1-3 methods max (Go idiom)

Reference Guide

Concepts

TopicReferenceWhen to consult
SOLID Overviewsolid-principles.mdQuick reference
SRPsingle-responsibility.mdFat structs
OCPopen-closed.mdAdding providers
LSPliskov-substitution.mdContracts
ISPinterface-segregation.mdFat interfaces
DIPdependency-inversion.mdInjection
Architecturearchitecture-patterns.mdHex/modular

Templates

TemplateWhen to use
module.mdFeature module structure
service.mdBusiness logic service
interface.mdPort definition
handler.mdHTTP handler
error.mdCustom errors
test.mdTable-driven tests

Forbidden

Anti-PatternFix
Files > 100 linesSplit at 90
Interfaces in impl filesMove to ports/ directory
Fat interfaces (4+ methods)Split into small interfaces
Flat internal/ structureUse internal/modules/[feature]/
init() for dependency wiringUse constructor injection

Signals

GitHub stars
25
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
solid-go
Source
github.com/fusengine/agents