mcpField
S
solid-go

solid-go

github.com/fusengineDevelopment3439 installsUpdated 2w ago
Repository

About solid-go

solid-go is a skill for modular Go architecture, defining feature directories, interface placement and size, and providing SOLID references and implementation templates. It is for Go developers seeking consistent code organization, reuse, and dependency-injection practices.

Key features

  1. 01Requires feature-based code modules
  2. 02Restricts interfaces to ports directories
  3. 03Sets file and handler size limits
  4. 04Requires small interfaces and godoc comments
  5. 05Provides SOLID and architecture references
  6. 06Includes module and test templates

Use cases

  1. 01Plan directories for Go feature modules
  2. 02Split oversized handlers or interfaces
  3. 03Check shared code before adding features
  4. 04Scaffold services and HTTP handlers

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/fusengine/agents --skill solid-go

After installing, type/solid-goin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
architecture-patterns.md
dependency-inversion.md
interface-segregation.md
liskov-substitution.md
open-closed.md
single-responsibility.md
solid-principles.md
references/templates/
error.md
handler.md
interface.md
module.md
service.md
test.md

Details

From the project README
SOLID Go enforces a modular architecture for Go 1.27+: every feature lives under `internal/modules/[feature]/` (handlers, services, repositories, ports, models) with shared code in `internal/core/`, interfaces (ports) live only in `ports/` directories and stay small (1-3 methods, the Go idiom), functions accept interfaces but return structs, and every exported function carries a godoc comment.

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

Comments

Markdown supported