Ship features with AI —
without giving up the decisions.

sdd is a spec-driven development framework: a gated pipeline — spec → plan → build → review → ship — that you drive from a terminal, or hand off to a headless runner that collaborates with you through ticket comments.

spec ──[approve]──▶ plan ──[approve]──▶ build + test + debug ──[loop]──▶ review ──[approve]──▶ ship ▲ you ▲ you ▲ autonomous ▲ you ▲ you

The idea

Gate the decisions, automate the mechanics. You gate the high-judgment steps — is the spec right? is the plan sound? — and anything irreversible (branch, PR, merge). The mechanical loop — write code, run the tests, read the failure, fix — runs autonomously, bounded by a max iteration count.

Each step writes a real file the next one reads: spec.mdplan.md → the diff → review.md. The artifact chain is the message bus, not a long, degrading AI conversation. That's what keeps every stage's context small, fresh, and checkable — and what makes the pipeline restartable at any gate.

GATES

You stay in control

Every stage stops for your approval. Builds branch off your trunk first, never commit, and never merge.

EXPERTS

A panel, not one voice

Product, UX, security — plus your domain experts (medical, fintech…) — raise questions at the spec gate and findings at review. They surface; they never assert.

VERIFIED

Trust through tests

The build loop proves its work against your real test suite; review findings are adversarially verified before you see them.

Install

Requires Node ≥ 18 and pnpm. The AI stages reuse your existing Claude Code login (no API key needed).

git clone git@github.com:timriley-io/spec-driven-development.git
cd spec-driven-development
pnpm install

# add an `sdd` command to your shell (run from the repo root)
printf '\nsdd() { local d="$PWD"; (cd %q && pnpm --silent sdd --root "$d" "$@"); }\n' "$PWD" >> ~/.zshrc
source ~/.zshrc

Bash users: append to ~/.bashrc instead. It's a shell function (not an alias) so subcommands and quoted arguments forward correctly.

The everyday loop

# from your project directory:
sdd                          # bootstrap once; after that, a bare `sdd` is a live navigator
sdd spec "add CSV export"    # draft the spec — experts weigh in, you answer its questions
sdd plan csv-export          # decompose into an ordered task list
sdd build csv-export         # implement + run tests on an sdd/<slug> branch
sdd review csv-export        # multi-lens review of the diff against the spec

Or the whole pipeline in one shot: sdd feature "add CSV export". And you don't have to remember any of these commands — a bare sdd drops you into a live navigator.

The sdd navigator: a keyboard-driven list of features, each with its recommended next stage; pressing enter runs that stage inline with a live spinner
Bare sdd in a set-up repo — pick a feature, press , and the next stage runs right there. No re-typing commands.

Guided, not just gated. Questions come with suggested answers (pick with a digit or type your own); your answers stay on screen as a transcript you can step back through with esc; every AI wait shows a live spinner + elapsed time and the model it's using; and the write gate previews the actual artifact, syntax-coloured, with a clickable path. See how it works →

Model / cost: the AI stages inherit your Claude Code model; pick one at setup or prefix any command with SDD_MODEL=sonnet for a cheaper run — either way it's shown in each command's preamble. sdd --verbose narrates what's happening; sdd --version tells you what you're on.

Scale it up when you're ready