--- name: spec-driven-development description: Spec-Driven Development (SDD) methodology for AI software factories — where structured specifications are the input, AI agents generate the code, and quality gates enforce correctness at each pipeline phase. Use when designing a spec → review → decompose → implement → verify pipeline that any AI coding tool (Claude Code, Cursor, Hermes Agent, Devin, OpenHands) can follow. license: MIT compatibility: Tool-agnostic — methodology applies to any AI coding agent. Templates use markdown and Gherkin. Scripts require bash. metadata: source: https://github.com/magnus919/agent-skills/spec-driven-development spec-version: 1.2.0 --- # Spec-Driven Development for AI Software Factories A methodology for building software where **specifications are the executable input** to an AI code generation pipeline. The factory model: specs are blueprints, AI agents are the assembly line, verification is quality control, and gates catch defects before they compound. ## Pipeline Overview ``` INCEPTION → [SPECIFY] → REVIEW → [DECOMPOSE] → REVIEW → [IMPLEMENT] → REVIEW → [VERIFY] → DELIVER ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↓ Phase 1 Gate 1 Phase 2 Gate 2 Phase 3 Gate 3 Phase 4 Gate 4 ``` Each phase passes through a gate before the next begins. A defect caught at Gate 1 costs minutes to fix; the same defect found at Gate 4 costs hours. > **SDD Core Principles** > 1. **Precision over clarity.** A precise-but-dense spec is better than a readable-but-ambiguous one. The AI cannot ask for clarification — it implements one interpretation at random. > 2. **Completeness over brevity.** Every missing acceptance criterion is a missing feature. Specifying an edge case upfront costs minutes; discovering it in production costs hours or days. > 3. **Testability over descriptiveness.** An AC that cannot produce CLEAR PASS or CLEAR FAIL is not an AC — it's a hope. > 4. **Gates catch defects early.** A Gate 1 (spec review) fix costs minutes. A Gate 4 (acceptance review) fix costs hours — the entire implementation may need to be discarded. > 5. **Spec is the single source of truth.** Every downstream artifact traces back to the spec. Deviations are defects unless explicitly documented. > 6. **Spec IS the test (when possible).** Gherkin-style ACs serve double duty as test cases. No separate test writing required. ## Loading Guide | Reference | Load when | File | |-----------|-----------|------| | SDD Overview & Philosophy | You need to understand the *why* — the software factory metaphor, how SDD differs from traditional requirements, the core principle that specs are executable inputs not communication artifacts | `references/sdd-overview.md` | | The AI Factory Pipeline | You need the full 5-phase pipeline with phase inputs, outputs, and transition rules — or you're designing a new pipeline from scratch | `references/ai-factory-pipeline.md` | | Spec Quality Gates | You've written a SPEC.md and need to validate it before Gate 1 — the 7 gates that separate a good spec from a vague one | `references/spec-quality-gates.md` | | Phase Gate Methodology | You're running a review gate (any of the 4) and need the decision criteria, verdict format, and escalation path | `references/phase-gate-methodology.md` | | Methodology Selection Matrix | You're deciding which spec methodology (BDD, Formal, DbC, OpenAPI, ADRs) fits your context — when each applies and their AI-readiness ratings | `references/methodology-matrix.md` | | NFR Encoding for AI Specs | You need to express non-functional requirements (performance, security, observability) in machine-readable format | `references/nfr-encoding.md` | | Format Translation | You need to map between spec formats — Gherkin ↔ OpenAPI ↔ SPEC.md ↔ JSON Schema — or translate a human PRD into an AI-ready spec | `references/format-translation.md` | | Critiques & Tradeoffs | You need to decide *when not* to use SDD — the honest limitations: spec bottleneck, GIGO, drift, over/under-specification, the formal methods tax | `references/critiques-and-tradeoffs.md` | | Worked Example — Complete SPEC.md | You want to see a fully-realized specification to calibrate your output depth — shows proper AC format, edge case enumeration, NFR thresholds, data contracts, and assumptions for a password reset feature | `references/example-spec.md` | ## Methodology Quick-Pick Not sure which spec methodology fits your situation? Use this quick reference table (load `references/methodology-matrix.md` for full depth): | Concern | Reach For | AI-Readiness | Format Produces | |---------|-----------|-------------|-----------------| | REST API contracts | OpenAPI | VERY HIGH | YAML/JSON specification | | Event/message schemas (Kafka, RabbitMQ) | AsyncAPI | HIGH | YAML/JSON channel specs | | Behavioral requirements (what the system does) | BDD / Gherkin | HIGH | `.feature` files with Given/When/Then | | Interface correctness (pre/post/invariants) | Design by Contract | VERY HIGH | Assertions in code | | Distributed system correctness (consensus, protocols) | TLA+ / Alloy | VERY HIGH (narrow scope) | Mathematical model | | Architecture decisions (why we chose X) | ADRs | MEDIUM | Structured markdown | | System structure (boxes-and-lines) | C4 Model | MEDIUM-HIGH | PlantUML / structured text | | Raw stakeholder intent | User Stories | LOW (needs refinement) | "As a... I want..." | **Composite approach:** Most systems need 3-4 of these working together. REST APIs get OpenAPI, event streams get AsyncAPI, critical behavior gets Gherkin scenarios, and cross-team interface boundaries get DbC assertions. ## Templates | Template | Pipeline Phase | File | |----------|---------------|------| | SPEC.md | **Phase 1** — Spec Authoring (SPECIFY). Write this first: problem, scope, user stories, ACs, edge cases, NFRs, data contracts | `templates/SPEC.md` | | REVIEW.md | **Gate 1-4** — Phase-Gate Review. Use at every gate transition: spec review, plan review, implementation review, acceptance review | `templates/REVIEW.md` | | TASK-PLAN.md | **Phase 2** — Work Decomposition (DECOMPOSE). Extract from an approved spec: task groups, dependency graph, per-task ACs, implementation directives | `templates/TASK-PLAN.md` | | VERIFICATION.md | **Phase 4** — Verification (VERIFY). After implementation: AC pass/fail matrix, compliance score, failure dossiers with remediation | `templates/VERIFICATION.md` | ## Scripts | Script | When to run | File | |--------|-------------|------| | `spec-quality-check.sh` | After writing or editing a SPEC.md — validates all required sections exist (problem statement, scope, ACs, edge cases, NFRs, assumptions) | `scripts/spec-quality-check.sh` | | `spec-to-tasks.sh` | After writing a TASK-PLAN.md — validates every spec AC has a covering task reference | `scripts/spec-to-tasks.sh` | ## Trigger Conditions Load this skill when: - **You're building a software factory** — a system where AI agents produce code from structured specifications through a gated pipeline - You're designing or refining an AI code generation pipeline where specs drive implementation - You need to write a specification that an AI agent (not just a human) will consume - You're evaluating spec methodologies (BDD, Formal, OpenAPI-first) for a project - You need templates for SPEC.md, TASK-PLAN.md, REVIEW.md, or VERIFICATION.md - You're reviewing or verifying AI-generated code against its specification ## Quick Reference: Pipeline Steps | Step | Action | Load This Reference | Produces | |------|--------|-------------------|----------| | 1 | Write SPEC.md from template — problem, scope, stories, ACs, edge cases, NFRs | `references/spec-quality-gates.md` (validate before Gate 1) | `SPEC.md` | | 2 | Run **spec-quality-check.sh** on SPEC.md | — | Validation report | | 3 | **Gate 1** — Review spec against quality gates, produce REVIEW.md | `references/spec-quality-gates.md`, `references/phase-gate-methodology.md` | `REVIEW.md` (APPROVED/CONDITIONS/REJECTED) | | 4 | Decompose approved spec into TASK-PLAN.md — each task traces to a spec section | `references/ai-factory-pipeline.md` (Decompose phase) | `TASK-PLAN.md` | | 5 | **Gate 2** — Review task plan for dependency honesty, spec coverage | `references/phase-gate-methodology.md` | `REVIEW.md` | | 6 | Implement each task — one task per agent session | — | Code/PR | | 7 | **Gate 3** — Verify implementation against spec (not code style) | `references/phase-gate-methodology.md` | `REVIEW.md` | | 8 | Run verification against all ACs — produce VERIFICATION.md | — | `VERIFICATION.md` | | 9 | **Gate 4** — Review verification report, deliver only if no BLOCKING failures | `references/phase-gate-methodology.md` | Final approval | For deeper methodology context, load `references/sdd-overview.md` (philosophy) or `references/ai-factory-pipeline.md` (full pipeline detail with parallel execution). ## Pipeline Mode & Entry Points ### Where to Enter the Pipeline You don't always start at SPECIFY. Enter at the phase matching what you already have: | You Have This | Enter At | Start With | |-------------|----------|------------| | A vague idea, conversation, or PRD | **Phase 1 — SPECIFY** | `templates/SPEC.md` + `references/format-translation.md` | | Approved product scope with interaction contracts | **Phase 1 — SPECIFY** | [product-design-and-ux](../product-design-and-ux/SKILL.md) handoff + `templates/SPEC.md` | | A clear, approved specification | **Phase 2 — DECOMPOSE** | `templates/TASK-PLAN.md` + `references/ai-factory-pipeline.md` | | A spec + approved task plan | **Phase 3 — IMPLEMENT** | Task cards with per-task directives | | Existing code needing verification | **Phase 4 — VERIFY** | `templates/VERIFICATION.md` | ### Which Pipeline Mode to Use Not every change needs all 4 gates. Choose your mode: | Mode | When to Use | Gates to Run | Spec Depth | |------|-------------|-------------|------------| | **Full** | Greenfield feature, multi-agent work, high-risk change, complex interfaces | All 4 gates | Full SPEC.md with ACs, NFRs, data contracts, edge cases | | **Lightweight** | Simple bug fix, well-understood change, single-file edit | Gate 1 (light) → Implement → Gate 4 (light) | Single user story, 1-3 ACs, abbreviated NFRs | | **Minimal** | Prototype, spike, exploration, throwaway code | None — skip formal gates | Mini-spec: 1 paragraph + 3 ACs. No NFR table, no contracts | > **Rule of thumb:** If you know the fix in under 60 seconds and it touches one file, use Lightweight mode. If you're not sure what the right solution is, use Full mode — the gates will catch your mistakes early. ## Gate Recovery & Revision What happens when a gate rejects your artifact? The pipeline doesn't stop — it iterates. ### The Revision Loop ``` Artifact submitted → Gate review → REJECTED or CONDITIONS ↓ Return to current phase ↓ Patch specific findings ↓ Resubmit for re-review ↓ APPROVED → next phase ``` ### How to Patch, Not Rewrite Each finding identifies a narrow, fixable defect. Patch at the finding's location: | Finding Severity | Action | Example | |-----------------|--------|---------| | **BLOCKING** | Fix immediately — gate cannot pass until resolved | Rewrite untestable AC with binary PASS/FAIL condition | | **CRITICAL** | Must fix. Gate may pass with documented exception if ≤2 findings | Add missing edge cases to User Stories section | | **MINOR** | Fix before next phase if feasible. Gate can pass with remediation plan | Add request/response schemas to Data Contracts | | **INFO** | Note for future improvement. No action required for gate pass | Suggestion for alternative field naming | ### Re-Review Scope After patching, the reviewer determines scope: - **Full re-review:** Required when REJECTED verdict. The entire artifact is re-evaluated, not just patched sections. - **Targeted re-review:** Possible with CONDITIONS verdict. Only the affected findings and surrounding context are reviewed. **Risk of partial fixes:** Fixing only BLOCKING findings and ignoring CRITICAL ones guarantees re-rejection at the same gate. The CRITICAL findings that cost minutes to fix at Gate 1 will cost hours if caught at Gate 4. ### Common Revision Patterns | Failure Pattern | Fix Strategy | Prevention | |----------------|-------------|------------| | Untestable ACs (vague language like "should handle", "should be efficient") | Rewrite each AC with explicit Given/When/Then and binary outcome | Apply Gate 1 check before submitting | | Missing edge cases | Add edge case enumeration per story — 3 minimum per story | Use the "five things that could go wrong" test from spec-quality-gates | | Vague NFRs ("should be fast", "should be secure") | Replace with specific threshold + verification method | Use the "can I write a test for this?" test from nfr-encoding reference | | Incomplete contracts (endpoint listed but no schemas) | Add full request/response schemas for every endpoint | Check Gate 5 before submitting | | Scope creep (ambiguous in-scope items) | Tighten scope description and expand Out of Scope | Apply the "would someone include more than intended?" test ## Tool-Agnostic Design This skill describes the **methodology**, not a specific tool. The pipeline works with: - **Claude Code** — use CLAUDE.md as spec context, plan-then-implement mode - **Cursor** — Plan Mode + .cursorrules for spec context, Agent Mode for implementation - **Hermes Agent** — native SDD pipeline (authoring → review → decomposition → verification) - **Devin / OpenHands** — task-based implementation from spec-derived task plans - **GitHub Copilot Workspace** — issue-driven with spec as structured issue body - **droid (Factory)** — task cards from spec decomposition The templates are format-agnostic (markdown). Adapt the handoff mechanism (CLAUDE.md, .cursorrules, AGENTS.md) to your tool.