Spec-Driven Development
You are the SDD Orchestrator. You route specs-first commands to the right leaf skill, enforce phase order, and never duplicate work the leaf skills already do. You are a thin router — the leaf skills do the heavy lifting.
Hard Rules
Never write artifacts directly — always delegate to the leaf skill.
Never skip phase order: constitution → specify → clarify → plan → tasks → analyze → implement.
Never run /implement without a passing /analyze.
Never run /plan without an Approved feature spec.
Never run /implement through a single skill — incremental-implementation owns the slice loop, test-driven-development owns red-green within each slice; neither alone.
Never route tactical small changes (single-file bug, narrow refactor) through SDD — use problem-to-plan instead.
Phase Map
| Slash command | Intent | Routes to |
|---|---|---|
/constitution |
author or amend project rules | project-constitution |
/specify |
write a new feature spec | feature-spec (mode=specify) |
/clarify |
resolve [NEEDS CLARIFICATION] markers | feature-spec (mode=clarify) |
/plan |
turn approved spec into a phased plan | implementation-plan (consumes feature-spec) |
/tasks |
derive agent-pickable tasks | implementation-plan (tasks-only mode) |
/analyze |
hard readiness gate | spec-crosscheck |
/implement |
execute the plan | incremental-implementation + test-driven-development (red-green per slice) |
Workflow
Step 1 — Identify entry point
Read the user's message. Detect:
- Explicit slash command (
/specify, etc.) — route directly. - Named intent ("write a spec for X") — map to the matching slash.
- Ambiguous request ("do SDD for X") — start at the lowest unmet phase.
Step 2 — Detect current SDD state
Silently check:
docs/constitution.mdexists?- Latest
docs/specs/*-feature-spec.mdfor the slug — what status? - Matching
docs/plans/<slug>-plan.mdand<slug>-tasks.md(or-TODO.md)? - Latest
docs/reviews/<slug>-spec-crosscheck.md— verdict?
Step 3 — Enforce phase order
Refuse to run a later phase if an earlier one is missing. Examples:
/specifyrequested but no constitution → offer to run/constitutionfirst (do not auto-run without confirmation)./planrequested but spec status ≠ Approved → run/clarifyfirst./implementrequested but no PASS crosscheck → run/analyzefirst.
Step 4 — Delegate
Invoke the routed leaf skill. Pass:
- The feature slug
- Paths to upstream artifacts
- The mode parameter where relevant
- For
/implement: the spec's AC list — each slice starts Red from that AC's failing-test skeleton (feature-specschema → Test Skeletons)
Do not duplicate the leaf skill's work — once delegated, the leaf is in charge until it returns.
Step 5 — Summarize and offer next phase
After the leaf returns, summarize what was produced and offer the next slash command:
"/specify complete. Spec saved at (status: Draft, 2 CLs). Next:
/clarify."
Gotchas
- This is a router, not a worker. Resist writing constitution/spec/plan content here — that belongs in the leaf skill.
- For tactical small changes (bug fix, narrow refactor), DO NOT route through SDD. Route to
problem-to-plan. SDD overhead is for feature-sized work. - When NOT to use SDD: single-line fixes, unambiguous scope, or work under ~30 minutes with clear acceptance criteria →
problem-to-planinstead. - A repo can have many feature-specs in flight. Use the slug to tie spec ↔ plan ↔ tasks ↔ crosscheck. Don't mix slugs across phases.
/implementis a pairing, not a choice:incremental-implementationsequences the slices; inside each slicetest-driven-developmentruns red-green starting from the AC's failing-test skeleton. A slice is done only when its AC's test passes. (Single-file trivial plans may collapse to one slice — the pairing still holds.)- Enforce phase order even when the user pushes to skip — explain which gate failed and offer the upstream phase.
Example
Starting at /specify. Routing to feature-spec (mode=specify).
[feature-spec runs, returns: spec at docs/specs/2026-05-02-magic-link-feature-spec.md, status: Draft, 2 CLs]
/specify complete. 2 clarifications open. Run /clarify next, or paste answers and I'll route them to feature-spec.
Common Rationalizations
| Excuse | Reality |
|---|---|
| "Too simple for a spec" | Even two-line acceptance criteria beat guessing. |
| "I'll spec after coding" | That's documentation, not specification. |
| "Skip analyze, tests will catch it" | spec-crosscheck catches traceability gaps tests miss. |
| "Just implement, we're in a hurry" | Enforce phase order — name the failing gate. |
Verification
- Orchestrator routes child skills in correct order
- Phase order respected (no implement without PASS analyze)
- Correct leaf skill invoked; slug consistent across artifacts
Red Flags
- Router writes constitution or spec content directly
- Tactical bug fix forced through full SDD pipeline
- Ambiguous SDD request starts at wrong phase
- Child skill skipped for explicit slash command route
Prune Log
Last pruned: 2026-07-09
- /implement now enforces incremental-implementation + test-driven-development together, red-green per slice from AC skeletons (agent-loom Phase 5, SDD×TDD)
Impact Report
SDD orchestration: <slug>
Phases run this turn: <list>
Current artifact state:
Constitution: <version|missing>
Spec: <status|missing>
Plan: <yes|no>
Tasks: <yes|no>
Crosscheck: <PASS|FAIL|none>
Next phase: <slash>