The agent guesses what you meant.
With Empirical SDDA spec you agreed on, before any code.
Type to search the guide and reference desk.
Spec-driven development for coding agents
Empirical SDD turns a request into a spec, checks, review, and a clean merge, all recorded in your repository. Every step has proof. Nothing ships without your sign-off. And any session can pick up exactly where the last one stopped.
npm install --global empirical-sdd
empirical installWhy
Coding agents write code quickly. Empirical SDD adds the process that makes it safe to ship.
The agent guesses what you meant.
With Empirical SDDA spec you agreed on, before any code.
Done means it looked done.
With Empirical SDDDone means the checks ran, with receipts.
The agent reviews its own work.
With Empirical SDDAn independent review of the exact diff.
Merged wherever, whenever.
With Empirical SDDMerged into a clean target, only with your sign-off.
How it works
Shell
Run npm install --global empirical-sdd, then empirical install and pick your agents.
In your agent
Type /empirical-init in Claude Code or $empirical-init in Codex. Review the proposed setup, then apply it.
In your agent
Ask like you always do. Empirical SDD takes it from there: spec, checks, proof, next step.
Coming back later?
Continue the active feature.Workflow
Anything that changes behavior runs the full Complex loop. Small, reversible edits take the Fast route.
Agree what done means.
Pick the approach.
Break it down.
Write the code.
Refresh repo knowledge if stale.
Run the checks.
Judge the diff.
Merge into a clean target.
In words. Specify, Design, Plan, Implement. Refresh context only if the repo knowledge is stale. Verify, Review, Integrate. Any failure sends the work back to Implement. Deliver and Publish are separate, and each needs your sign-off.
Small, reversible edits skip the loop. The checks still run, and if a Fast attempt fails the work is promoted to Complex with the failed attempt on record.
Guardrails
Empirical SDD does
Empirical SDD never
Proof
Every acceptance criterion points to a real run and a receipt tied to that exact code. Change the code and the receipt goes stale.
A fresh-context reviewer or your review bot judges the exact committed diff. A green test is never mistaken for a review.
Reviewed changes are replayed against a separate target before they count as shared behavior.
Under the hood
Setup adds a .empirical/ folder and a small entry in your agent instructions. Work adds specs, decisions, and receipts next to your code. No database, no background service.
Use Up and Down to move through paths, or Home and End to jump. Selecting a path updates the ownership detail beside the tree.
Not persisted: the dynamic packet returned to an isolated reviewer. Only a submitted canonical result, its human-readable rendering, pointer, and receipt belong in the committed tree.
Day to day
Where does the current feature stand?Continue the active feature.Run Empirical SDD Doctor and explain any findings.| What you see | What to do |
|---|---|
| Changes don't go through Empirical SDD | Run Init again to repair the setup, then reopen your agent. |
| A new request resumed old work | On purpose: unfinished work comes first. Finish it, or approve a separate worktree for the new thing. |
| Proof went stale after an edit | Run the checks again. Old receipts can't be edited or reused. |
| It asks for credentials | Use OAuth or the secrets file. Never paste secrets into chat. |
Docs
Short site, long docs. Everything precise lives in these references.
01
02
03
Free and open source
Install, run Init, and ask for the change you were going to make anyway.