How it works

The architecture in five minutes — enough to predict what the tool will do before you run it.

Artifacts are the message bus

Most AI coding fails the same way: one long conversation that slowly degrades. sdd avoids that structurally — each stage reads a small, real file and writes another.

The files live in specs/<feature>/, committed and human-editable, and they're the only context hand-off between stages. That keeps every stage's context small and fresh — and makes the pipeline restartable at any gate.

The artifact chain: request to spec.md to plan.md to a diff on a branch to review.md to your merge, with approval gates between stages

Two layers

Generic behaviour is kept strictly apart from project knowledge, so every agent's context stays lean. The plugin ships the pipeline; sdd setup generates your project's layer from evidence — it detects the stack, actually runs the safe commands for a real baseline, drafts PRODUCT.md from the code, then asks you the 3–5 sharpest questions to correct it.

Inference is presented as a correction, never as fact.

Layer 1, the plugin (commands, experts, hooks) finds Layer 2, your repo (PRODUCT.md, CLAUDE.md, specs) by convention

Guided, not just gated

Gating the decisions only helps if the tool makes each decision easy. So every AI stage opens with a one-line preamble — which model it's running and which project root — then interrogates you one question at a time, each with 2–3 suggested answers you can pick with a digit or override with your own.

Answered questions stay on screen as a transcript; press esc to step back and revise one. Every wait on the model shows a live spinner and elapsed time (never a dead "drafting…"), and nothing is written blind — the gate previews the actual artifact, syntax-coloured and scrollable, with a clickable path. Every command ends with a Next: line, so you always know the move.

Greenfield-aware. On an empty repo the spec asks which platform/stack to build on (with suggestions), and plan task 1 scaffolds the project — so build always has real files to change.

A spec interrogation: a model/root preamble, a transcript of two answered questions, the current question with three numbered suggested answers and an input line, then a scrollable preview of the spec at the write gate

A live navigator, not a wall of commands

Run sdd in a set-up repo and you land in a keyboard-driven navigator — not a re-run of setup. It lists every feature with its position in the pipeline and the recommended next stage; arrow to one and press to run that stage inline, then land right back on the list. No re-typing sdd plan … — just p/b/r to run a stage, n for a new feature, m to switch model, l to connect a board.

Piped or in CI it prints a static summary instead; sdd help lists every command, and sdd --version tells you what you're running.

The sdd navigator: a keyboard-driven list of features each showing its pipeline stage and recommended next step, a key legend, and a stage running inline with a live spinner

Experts: perspectives, not stages

Experts are lenses convened in parallel at the two gates where diverse perspective pays off: at the spec gate they raise their sharpest questions (which you answer); at the review gate each reviews the diff independently, findings are merged, and a skeptic pass refutes the weak ones before anything reaches you.

Domain experts are personas, not credentials. A medical expert surfaces considerations for a qualified human, grounded in your PRODUCT.md invariants — it never asserts domain facts from model memory.

Four expert lenses independently review the diff; findings are merged, deduplicated, adversarially verified, and only verified findings reach you

The board: labels are the truth

For the autonomous workflow, gate state lives as labels on GitHub issues. The runner polls for actionable labels and does the stage's work; you advance gates by relabelling — which is all sdd approve and sdd bounce do.

The ticket's comment thread is the conversation: the runner drafts, posts its open questions, parks under sdd:awaiting-you, and refines from your reply on the next poll — idempotently. The optional GitHub Project is an aggregating view, never a second source of truth.

A ticket's gate labels advancing: sdd:spec, awaiting-you, spec-review, plan, build-review, done — with runner and human actions between

Safety by containment, not trust

Builds branch off your trunk first (the runner uses an isolated worktree per ticket). The build agent edits files but cannot run commands — the CLI runs your tests and feeds failures back into the bounded fix loop. A PreToolUse hook auto-approves read-only commands and routes anything outward-facing to a human prompt.

Nothing merges itself, a red build parks instead of advancing, and ship is your gesture — always.

A terminal showing sdd build moving to a feature branch; file edits allowed, shell commands gated, tests run by the CLI; never commits or merges

Multi-repo products

One product spanning several repos gets a thin product layer: a registry of parts with a shared PRODUCT.md. Specs declare ## Touchpoints, plans decompose into per-part task groups, and the build fans out — a branch and PR in each part's repo. Walkthrough →

One plan with api- and web-tagged tasks fanning out into a green PR in each part's repo

Deeper design notes

Each piece has a full design note in the repo: agents · experts · tracking · orchestration · ticket-dialogue · execution-safety · multi-repo

← Home Command reference →