name: mcaf-solid-maintainability
description: "Apply SOLID, SRP, cohesion, composition-over-inheritance, and small-file discipline to code changes. Use when refactoring large files or classes, setting maintainability limits in AGENTS.md, documenting justified exceptions, or reviewing design quality."
compatibility: "Requires repository write access; uses maintainability limits from root or local AGENTS.md."
MCAF: SOLID Maintainability
Trigger On
- files, classes, or functions are too large or too coupled
- maintainability limits in
AGENTS.mdneed to be added or tightened - a change needs a justified temporary exception
Value
- produce a concrete project delta: code, docs, config, tests, CI, or review artifact
- reduce ambiguity through explicit planning, verification, and final validation skills
- leave reusable project context so future tasks are faster and safer
Do Not Use For
- writing architecture docs without touching code structure or policy
- cosmetic formatting-only edits
Inputs
- the nearest
AGENTS.md - the code under change
- current testing seams and dependency boundaries
Quick Start
- Read the nearest
AGENTS.mdand confirm scope and constraints. - Run this skill's
Workflowthrough theRalph Loopuntil outcomes are acceptable. - Return the
Required Result Formatwith concrete artifacts and verification evidence.
Workflow
- Read the active values for:
file_max_loctype_max_locfunction_max_locmax_nesting_depthexception_policy
- Evaluate the change through SOLID:
- single responsibility
- explicit dependencies
- composition before inheritance
- boundaries that are easy to test
- Remove hardcoded values and inline string literals from implementation code by moving them into named constants, enums, configuration, or dedicated types.
- Split by responsibility, not by arbitrary line count alone.
- If a limit must be exceeded temporarily, document the exception exactly where
exception_policyrequires it.
Deliver
- smaller, more cohesive code
- updated maintainability policy when repo rules changed
- explicit exception records when a temporary breach is justified
Validate
- size limits are respected or explicitly waived
- responsibilities are clearer after the change
- the refactor improves testability instead of only moving lines around
- literals that matter are named once and reused instead of repeated inline
- no numeric limit was moved into framework prose or skill metadata
Ralph Loop
Use the Ralph Loop for every task, including docs, architecture, testing, and tooling work.
- Brainstorm first (mandatory):
- analyze current state
- define the problem, target outcome, constraints, and risks
- generate options and think through trade-offs before committing
- capture the recommended direction and open questions
- Plan second (mandatory):
- write a detailed execution plan from the chosen direction
- list final validation skills to run at the end, with order and reason
- Execute one planned step and produce a concrete delta.
- Review the result and capture findings with actionable next fixes.
- Apply fixes in small batches and rerun the relevant checks or review steps.
- Update the plan after each iteration.
- Repeat until outcomes are acceptable or only explicit exceptions remain.
- If a dependency is missing, bootstrap it or return
status: not_applicablewith explicit reason and fallback path.
Required Result Format
status:complete|clean|improved|configured|not_applicable|blockedplan: concise plan and current iteration stepactions_taken: concrete changes madevalidation_skills: final skills run, or skipped with reasonsverification: commands, checks, or review evidence summaryremaining: top unresolved items ornone
For setup-only requests with no execution, return status: configured and exact next commands.
Load References
- read
references/limits-and-exceptions.mdfirst - open
references/maintainability.mdfor broader design guidance - open
references/exception-handling.mdwhen documenting a temporary breach
Example Requests
- "Split this 700-line service into cohesive parts."
- "Add maintainability limits to AGENTS."
- "Refactor this class to follow SOLID and document the one exception."
Guardrails
- numeric limits belong in
AGENTS.md, not in the framework guide or skill metadata - a justified exception is a debt record, not a permanent escape hatch