mcpField
S
solid-ruby

solid-ruby

github.com/fusengineDevelopment3438 installsUpdated 2w ago
Repository

About solid-ruby

solid-ruby is an agent skill for applying modular, SOLID-oriented architecture in Ruby 4.0+ and Rails 8 projects. It defines module locations, code and documentation rules, reuse checks, and reference guides and templates for implementation.

Key features

  1. 01Feature-based module structure
  2. 02Shared core services and contracts
  3. 03Mandatory YARD docs and frozen strings
  4. 04DRY checks before new code
  5. 05SOLID references and scaffolding templates

Use cases

  1. 01Structure a new Rails feature module
  2. 02Check for reusable services before coding
  3. 03Create services, contracts, models, and tests
  4. 04Review code against modular architecture rules

Install

Copy the command and run it in a terminal.

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

After installing, type/solid-rubyin 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/
contract.md
error.md
model.md
module.md
service.md
test.md

Details

From the project README
SOLID Ruby enforces a modular architecture for Ruby 4.0+/Rails 8: every feature lives under `app/modules/[feature]/` (controllers, services, repositories, contracts, models) with shared code in `app/modules/core/`, contracts (duck-typing modules) live only in `contracts/` directories, `# frozen_string_literal: true` is required in every file, and every public method carries YARD documentation.

Before writing any new code it requires a DRY check against app/modules/core/services and app/modules/core/contracts. See solid-principles.md for the overview, the per-principle references for SRP/OCP/LSP/ISP/DIP detail, and the templates for module/service/contract/model/error/test scaffolding.

SOLID Ruby - 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 Ruby/Rails 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 modules, services, or logic
  2. Check shared locations: app/modules/core/services/, app/modules/core/contracts/
  3. If similar code exists -> extend/reuse instead of duplicate
  4. If code will be used by 2+ features -> create it in app/modules/core/

Architecture (Modules MANDATORY)

LayerLocation
Controllersapp/modules/[feature]/controllers/
Servicesapp/modules/[feature]/services/
Repositoriesapp/modules/[feature]/repositories/
Contractsapp/modules/[feature]/contracts/
Modelsapp/modules/[feature]/models/
Sharedapp/modules/core/{services,contracts,concerns}/

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


Critical Rules (MANDATORY)

RuleValue
File limitFUSE_SOLID_MAX_LINES
ControllersThin, delegate to services
Contractscontracts/ directory ONLY (duck typing modules)
YARD docEvery public method documented
Frozen string# frozen_string_literal: true in every file
ConcernsUse for shared behavior (like interfaces)

Reference Guide

Concepts
TopicReferenceWhen to consult
SOLID Overviewsolid-principles.mdQuick reference
SRPsingle-responsibility.mdFat classes
OCPopen-closed.mdAdding strategies
LSPliskov-substitution.mdContracts
ISPinterface-segregation.mdFat modules
DIPdependency-inversion.mdInjection
Architecturearchitecture-patterns.mdModular Rails
Templates
TemplateWhen to use
module.mdFeature module structure
service.mdBusiness logic service
contract.mdDuck typing contracts
model.mdActive Record model
error.mdCustom exceptions
test.mdRSpec tests

Forbidden

Anti-PatternFix
Files over FUSE_SOLID_MAX_LINESSplit by responsibility
Business logic in modelsExtract to service
Fat controllersDelegate to services
Flat app/ structureUse app/modules/[feature]/
God classesSplit by responsibility

Comments

Markdown supported