Spec and test driven development for Claude Code. Enforces spec-first, one-test-at-a-time TDD via slash commands, a PreToolUse guard hook, a git pre-commit gate, and a Stop-hook coverage audit.
Fan out independent roadmap slices in parallel — one worktree-isolated subagent per slice, each running the stdd loop unattended. Whole loop by default; --impl runs only tdd→review for slices whose specs are already authored and red-teamed. Invoke with /stdd:batch [slice ...] [--impl].
Merge finished parallel slice worktrees back into the primary branch — the fan-in half of /stdd:batch. Use once slices built in worktrees are ready to integrate; conservative by design, it stops rather than force anything past a merge conflict or a failing suite. Invoke with /stdd:land [slice ...].
Estimate or measure the test strength of ONE spec by mutation testing. Default mode samples meaningful mutations via a worktree-isolated sub-agent; --exhaustive drives a real mutation-testing framework (Stryker / mutmut) for a complete, trendable score. Read-only to your tree — always isolated, never gates. A per-module capstone, not part of the everyday loop. Invoke with /stdd:mutate <feature-name> [--exhaustive].
Turn a project sketch into a roadmap and a just-in-time spec backlog. Writes docs/roadmap.md — an ordered list of vertical slices, each mapped to a domain-nested spec path — without bulk-drafting specs, plus docs/open-questions.md when the sketch carries empirical bets and docs/out-of-scope.md when it draws deliberate non-goals. When the sketch is too foggy to decompose, records the blocking questions instead of guessing slices. Invoke with /stdd:plan <sketch-path-or-description>.
Retire a whole feature: delete its spec, source, and tests together, sweep docs/ for dangling references, and record the decision (a superseding ADR or an out-of-scope note) so it isn't re-proposed. For dropping some behaviour from a feature that still exists, revise with /stdd:spec instead. Invoke with /stdd:remove <feature-name>.
Executes bash commands
Hook triggers when Bash tool is used
Modifies files
Hook triggers on file write and edit operations
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
stdd is a Claude Code plugin that makes the agent write a spec and a test before it writes code, and stops it committing while a test fails.
The rules are enforced by shell scripts wired to Git hooks, not by asking the model nicely. So the agent can't skip a step, even when it's tempted to.
stdd draws a hard line between three kinds of decision.
One rule holds it together: only the mechanical checks can gate. When stdd asks for a spec review before you build, the check is just that a review ran against the current spec; a hash proves that. Whether the review was any good is your call, not the script's.
Install the plugin:
/plugin marketplace add dominik-rehse/stdd
/plugin install stdd@stdd
Set up your project once:
/stdd:setup
Then work one slice at a time:
/stdd:spec auth/login # interview you into a spec with numbered criteria
/stdd:review auth/login --spec # red-team the spec before you build
/stdd:tdd auth/login # write a failing test, make it pass, refactor, repeat
If the agent tries to jump straight to code, the guard stops it:
✗ Write blocked: no spec or test exists for src/auth/login.ts.
Write the spec and a failing test first, or run /stdd:spec auth/login.
And a commit with a failing test doesn't go through:
✗ Commit blocked: 1 test failing.
That's the whole idea. The rest of this page is detail.
The slash commands are where Claude works on your code. You stay in the loop on the decisions that matter, and the checks hold whatever it writes to a fixed bar.
| Command | What it does |
|---|---|
/stdd:setup | Set up the project: folders, test runner, pre-commit gate. Run once. |
/stdd:plan <sketch> | Turn a rough sketch into an ordered backlog of slices in docs/roadmap.md. |
/stdd:spec <name> | Interview you into one self-contained spec, with numbered acceptance criteria. |
/stdd:review <name> --spec | Red-team a spec in a fresh context before you build. Required for a critical spec. |
/stdd:tdd <name> | Run the loop, one criterion at a time: RED → GREEN → REFACTOR → MARK. |
/stdd:review <name> | Show which criteria have tests. No name: sweep docs/ for drift. |
/stdd:remove <name> | Retire a whole feature: delete its spec, code, and tests together, sweep docs/, record the decision. |
/stdd:mutate <name> | Optional. Estimate how strong a spec's tests are, by mutation testing. Never gates. |
/stdd:worktree <name> | Set up a parallel worktree for a slice marked Independent? yes. |
/stdd:batch [slice ...] | Fan out independent slices to parallel worktree subagents. |
/stdd:land [slice ...] | Merge the finished worktrees back, re-check, clean up. Stops on any conflict or failure. |
The usual path is plan once, then for each slice: spec → review --spec →
tdd, with mutate when a spec is worth the extra scrutiny.
npx claudepluginhub dominik-rehse/stdd --plugin stddBun + TypeScript stack rules: TS conventions, formatting, bun:test testing, security, Bun-first tooling, and Bun runtime / built-in API guidance.
Language-agnostic baseline rules for Claude Code: minimal-change principle, Conventional Commits, documentation conventions, and Context7 MCP guidance for library lookups.
hone is a development model where a human writes a short Plan and an automated loop then builds, verifies, consolidates, reviews, and lands each change unattended in a git worktree; a scheduled garden loop (/hone:garden) cuts staleness between changes. The repo keeps only durable truth that cannot go stale, and every cycle deletes something. Enforced by a PreToolUse guard, a Stop-hook gate and nag, two fault-finding critics, and default-on land gates for irreversible changes (authority) and real-environment proof.
Automated Test-Driven Development enforcement
Spec-driven development pipeline for Claude Code: interview-to-spec, spec-approach, tdd, verify, diagnose, and a feature orchestrator.
Test-Driven Generation plugin for Claude Code
Spectacular skills/commands library for spec-anchored development and parallel task execution
Guides AI agents through disciplined coding practices. Language and build-system agnostic core with extensible language/build skills.
Test-driven development skill that enforces red-green-refactor, one test at a time