
Solid
Install this when you want every agent-written feature, refactor, and fix to follow SOLID, TDD red-green-refactor, and maintainable design instead of one-off snippets.
Overview
Solid is a journey-wide agent skill that enforces SOLID, TDD, and clean-code craftsmanship—usable whenever a solo builder needs disciplined implementation, refactor, review, or debug work before shipping.
Install
npx skills add https://github.com/ramziddin/solid-skills --skill solidWhat is this skill?
- Mandates TDD red-green-refactor before implementation—failing test first, simplest green code, then refactor
- Applies SOLID, clean code, and professional design across features, refactors, architecture, and reviews
- Frames good code as testable, flexible, maintainable work that supports discover, change, test, debug, deploy, and monit
- Rule of Three and duplication removal embedded in the refactor step of the non-negotiable process
- Explicit triggers for writing code, refactoring, planning architecture, reviewing quality, debugging, and creating tests
- Non-negotiable 3-step TDD loop: RED, GREEN, REFACTOR
- Rule of Three called out for duplication removal during refactor
Adoption & trust: 1.8k installs on skills.sh; 439 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You ship fast with agents but end up with junior-quality structure, missing tests, and designs that are painful to change or debug.
Who is it for?
Solo builders who want one consistent senior-engineering ritual across features, refactors, architecture sketches, reviews, and test creation with Claude Code, Cursor, or Codex.
Skip if: Pure product copy, one-off SEO drafts, or tasks where you refuse to write tests and only need a throwaway script with no maintenance path.
When should I use this skill?
Writing code, implementing features, refactoring, planning architecture, designing systems, reviewing code, debugging, creating tests, or making design decisions.
What do I get? / Deliverables
After the skill runs, the agent follows red-green-refactor and SOLID-oriented decisions so new code stays testable and maintainable across features and fixes.
- Test-first implementations aligned with described behavior
- Refactored modules with reduced duplication after green tests
- Architecture and review notes that reflect SOLID and maintainability goals
Recommended Skills
Journey fit
Useful at every journey phase - explore requirements and options before committing to a direction.
Where it fits
Sketch module boundaries and dependencies using SOLID before committing to a full build scope.
Implement a UI feature starting with a failing test that describes user-visible behavior.
Review an agent PR for duplication, coupling, and whether tests actually encode requirements.
Backfill characterization tests before refactoring legacy code the agent touched.
Debug a production issue with smallest green fix plus refactor only after a reproducing test exists.
How it compares
Use as procedural craft guidance in SKILL.md, not as a drop-in static analyzer or CI security gate.
Common Questions / FAQ
Who is solid for?
Indie and solo developers who delegate implementation to agents but still want SOLID, TDD, and maintainability norms on every coding session.
When should I use solid?
During Build when implementing features; during Ship for reviews and tests; during Operate when debugging; during Validate when planning architecture; whenever SKILL.md says you are writing, refactoring, or deciding design.
Is solid safe to install?
It is documentation-only procedural knowledge with no bundled executables; review the Security Audits panel on this Prism page before trusting any third-party skill source.
SKILL.md
READMESKILL.md - Solid
# Solid Skills: Professional Software Engineering You are now operating as a senior software engineer. Every line of code you write, every design decision you make, and every refactoring you perform must embody professional craftsmanship. ## When This Skill Applies **ALWAYS use this skill when:** - Writing ANY code (features, fixes, utilities) - Refactoring existing code - Planning or designing architecture - Reviewing code quality - Debugging issues - Creating tests - Making design decisions ## Core Philosophy > "Code is to create products for users & customers. Testable, flexible, and maintainable code that serves the needs of the users is GOOD because it can be cost-effectively maintained by developers." The goal of software: Enable developers to **discover, understand, add, change, remove, test, debug, deploy**, and **monitor** features efficiently. ## The Non-Negotiable Process ### 1. ALWAYS Start with Tests (TDD) **Red-Green-Refactor is not optional:** ``` 1. RED - Write a failing test that describes the behavior 2. GREEN - Write the SIMPLEST code to make it pass 3. REFACTOR - Clean up, remove duplication (Rule of Three) ``` **The Three Laws of TDD:** 1. You cannot write production code unless it makes a failing test pass 2. You cannot write more test code than is sufficient to fail 3. You cannot write more production code than is sufficient to pass **Design happens during REFACTORING, not during coding.** See: [references/tdd.md](references/tdd.md) ### 2. Apply SOLID Principles Rigorously Every class, every module, every function: | Principle | Question to Ask | |-----------|-----------------| | **S**RP - Single Responsibility | "Does this have ONE reason to change?" | | **O**CP - Open/Closed | "Can I extend without modifying?" | | **L**SP - Liskov Substitution | "Can subtypes replace base types safely?" | | **I**SP - Interface Segregation | "Are clients forced to depend on unused methods?" | | **D**IP - Dependency Inversion | "Do high-level modules depend on abstractions?" | See: [references/solid-principles.md](references/solid-principles.md) ### 3. Write Clean, Human-Readable Code **Naming (in order of priority):** 1. **Consistency** - Same concept = same name everywhere 2. **Understandability** - Domain language, not technical jargon 3. **Specificity** - Precise, not vague (avoid `data`, `info`, `manager`) 4. **Brevity** - Short but not cryptic 5. **Searchability** - Unique, greppable names **Structure:** - One level of indentation per method - No `else` keyword when possible (early returns) - When validating untrusted strings against an object/map, use `Object.hasOwn(...)` (or `Object.prototype.hasOwnProperty.call(...)`) — do not use the `in` operator, which matches prototype keys - **ALWAYS wrap primitives in domain objects** - IDs, emails, money amounts, etc. - First-class collections (wrap arrays in classes) - One dot per line (Law of Demeter) - Keep entities small (< 50 lines for classes, < 10 for methods) - No more than two instance variables per class **Value Objects are MANDATORY for:** ```typescript // ALWAYS create value objects for: class UserId { constructor(private readonly value: string) {} } class Email { constructor(private readonly value: string) { /* validate */ } } class Money { constructor(private readonly amount: number, private readonly currency: string) {} } class OrderId { constructor(private readonly value: string) {} } // NEVER use raw primitives for domain concepts: // BAD: function createOrder(userId: string, email: string) // GOOD: function createOrder(userId: UserId, email: Email) ``` See: [references/clean-code.md](reference