sdd-engineering
Spec Driven Development pipeline: spec, plan, implement, verify and retro with dedicated agents
Install
- 1. Add the marketplace (once)
- 2. Install the plugin
Its 3 dependencies install automatically with it.
Add to team settings →Dependencies
- engineering-paved-path ^1.0.0 · Stack skills for React, Next.js and Fastify apps: architecture, component placement, testing and security
- research-tools ^1.0.0 · Read-only researcher agent for codebase and external questions, with cited evidence and an explicit list of what it could not establish
- architecture-review ^1.0.0 · Read-only architecture reviewer for a change or an area, against onion architecture and frontend UI placement rules
Used by
No other plugin in this marketplace depends on this one.
Contents
- Skills6
- Agents4
Artifacts
Skills6
- engineering-insightsCaptures durable, non-obvious engineering insights into the project's knowledge file for the area the work touched (config knowledgeFiles in .claude/sdd-engineering.json): gotchas, approaches that worked, dead ends and antipatterns, codebase conventions, tool or library quirks, recurring errors with their fix, open questions. Use in the main session when something was learned that a future session would otherwise relearn, at the end of substantial work, on "wrap up", "retro", "save this learning", "remember this gotcha", or when /sdd-engineering:engineering-insights is invoked. Reads the file first, never duplicates, writes only specific file-grounded entries, appends through a script that cannot overwrite prior content, and rebuilds the file's index. Never runs inside a subagent.
- mermaid-diagramCreates Mermaid diagrams embedded in markdown: flowcharts, sequence, class, ER, state, Gantt, mindmap and other diagram types, with a guide to picking the right one. Use when writing a spec, a design note or docs that need a workflow, user flow, feature states, service communication, API flow, data model or architecture diagram, or when the user asks to visualize something as a diagram.
- run-planRuns the implementation half of Spec Driven Development from a finished plan: implementer (lanes or phases) → integration checks → plan-verifier → architecture review with fix iterations until clean → final verification and a per-requirement report. Takes a plan path from the project's plans directory, plus optional notes and design or screenshot paths. The spec (spec-creator) and the plan (implementation-planner) are made beforehand; this command never writes either. Never commits. Runs only when the user invokes /sdd-engineering:run-plan.
- sdd-formatShared format of the Spec Driven Development pipeline: the project config file (.claude/sdd-engineering.json), the feature spec template with EARS acceptance criteria and verification hints, the [NEEDS CLARIFICATION] marker grammar and its checker, the implementation plan template, the default glob-to-skill routing table and how verification commands are run. Use when writing, reading, planning from or verifying a spec or a plan, or when a project's SDD paths, routing or verify commands must be resolved.
- sdd-statusShows the state of the Spec Driven Development pipeline in this project: the ACTIVE sdd-engineering version (read from the installed plugin's own manifest, so it proves which copy is running), whether the project config exists, specs by status with open [NEEDS CLARIFICATION] markers, plans, configured verify commands, the plugin's dependencies, and the one next step. Read-only. Manual only: runs when the user invokes /sdd-engineering:sdd-status.
- workflow-retroRetrospective of a finished multi-agent run (spec-creator, /sdd-engineering:run-plan, a Workflow script, any session that dispatched subagents): how many agents ran and in what order, token spend, what each agent found hard or easy, what was duplicated, missed or lost, plus concrete proposals. Output goes to chat and to one append-only entry in the project's retro ledger (config retroLedger, default docs/retro/ledger.md), project learnings included. Source: this conversation's context by default; deep parses the session transcripts. Manual only: runs when the user invokes /sdd-engineering:workflow-retro, never automatically.
Agents4
- implementation-plannerTurns EXISTING requirements (a spec in the specs directory, a user request, a brainstorm brief) into a written Implementation Plan for the current repository: where each file goes, which stack skills the routing table assigns to it, which project knowledge constraints apply, which contracts change, how each item is verified, and how it is executed — single-agent or multi-agent lanes. Spec-driven by default: given a detailed spec (SPEC-NN-*.md with checkable acceptance criteria, no blocking open question and no [NEEDS CLARIFICATION] marker) it plans straight from it with no requirements questions — only the execution mode must be settled. Without a spec it first reviews the requirements and returns clarifying questions, recommendations and the execution-mode question for the caller to put to the user, and writes the plan only after the answers. Use after a spec is approved, or when a request needs a plan before implementation. Writes one plan file to the plans directory. Never writes or edits specifications, never implements, never reviews.
- implementerExecutes an existing Implementation Plan from the plans directory: loads the stack skills the plan and the routing table assign to each file, writes the code, runs the project's configured verify commands, and reports per plan item with evidence. Runs a whole plan, one lane, or one phase. Also runs in fix mode: the plan path plus a list of findings (from sdd-engineering:plan-verifier or a reviewer) to fix, and nothing else. Use from /sdd-engineering:run-plan, or when a written plan needs executing — dispatch it ONLY after the plan file exists on disk, and always with that path; it refuses to start otherwise. Does not design the plan, does not commit, and does not perform architecture or security review.
- plan-verifierChecks finished code against an existing Implementation Plan in the plans directory, work item by work item, as a party that wrote neither, and rolls the result up per spec acceptance criterion through the plan's traceability table. Enumerates every item and its Done means from the plan file FIRST, then settles each against the working tree with evidence (it may run the project's configured verify commands), and returns exactly one verdict row per item plus one per requirement. Use after implementation and before review, or for the final per-requirement verdict that lets a spec be marked implemented; also re-checks named items after fixes. Refuses to start without a plan path. Never substitutes generic code-review advice for the per-item check, and never edits anything.
- spec-creatorWrites feature specifications for Spec Driven Development: turns a feature request (plus design sources and any screenshots) into one <specsDir>/SPEC-NN-<slug>.md with EARS acceptance criteria, verification hints, NFRs, edge cases, module interactions, provenance, untrusted inputs and a traceability matrix. Works in two passes: first analyses the request, the design and the code (dispatching research-tools:researcher subagents in parallel when it needs facts it cannot read itself) and returns design gaps, uncovered corner cases, cross-module questions and UX proposals for the caller to put to the user; only after those answers does it write the spec and self-check it. Use when a feature needs a spec before planning, or to approve or mark implemented an existing spec. Writes only in the specs directory. Never plans implementation, never writes code.
Security
Runs no hooks starts no MCP servers agents or skills can run shell commands agents or skills can write files no network calls found self-contained
Static analysis of this plugin's files, made when the site was built. It shows what the files say, not what the plugin does when it runs, and it is not a guarantee. Read the source before you install.
Tools agents and skills may use
- Skill sdd-status
ReadGlobGrep - Agent implementation-planner
ReadGrepGlobBashWriteAgentSkillcan run commands, can write files - Agent implementer
ReadGrepGlobEditWriteBashSkillcan write files, can run commands - Agent plan-verifier
ReadGrepGlobBashSkillcan run commands - Agent spec-creator
ReadGrepGlobWriteEditAgentSkillcan write files
Network use
No network indicators found in scripts or hook commands.
Self-contained
No path leaves the plugin directory. ${CLAUDE_PLUGIN_ROOT} is the plugin directory.
README
A Spec Driven Development (SDD) pipeline for Claude Code. A feature goes from an idea to reviewed, verified code in three hand-started stages: a spec with checkable acceptance criteria, a plan that traces every criterion to a work item, and a run that implements the plan, checks it item by item, reviews the architecture and fixes what the review finds. Each stage is done by a dedicated agent with a narrow write scope, and every product decision stays with you.
It works in any repository. Paths and commands come from an optional project config, and the one thing it cannot guess, how to run your checks, it asks you once.
Contents
- Install
- What's inside
- How everything works together
- Quick start: one feature in five minutes
- How to use it
- Configuration
- Dependencies
- Models and cost
- Limits and safety
- Evals
- Credits
Install
In a Claude Code session:
/plugin marketplace add DmytrivDev/DevDigest-AI-Marketplace
/plugin install sdd-engineering@devdigest-marketplace
Or from a shell:
claude plugin marketplace add DmytrivDev/DevDigest-AI-Marketplace
claude plugin install sdd-engineering@devdigest-marketplace
Its three dependencies, engineering-paved-path, research-tools and
architecture-review, are installed and enabled automatically. Check with
claude plugin list.
Compatibility
Claude Code >=2.1.110 (version-constrained plugin dependencies); tested with 2.1.301.
Details, and the features this plugin relies on: COMPATIBILITY.md.
What's inside
| Component | Type | Namespaced name | What it does | Triggers |
|---|---|---|---|---|
spec-creator |
agent (Opus) | sdd-engineering:spec-creator |
Turns a feature request (plus designs and screenshots) into one spec with EARS acceptance criteria, edge cases, NFRs and a traceability matrix. Two passes: questions first, the file only after your answers. Also flips a spec to approved or implemented when you say so. |
On request by name, or when Claude delegates spec writing; dispatched with subagent_type |
implementation-planner |
agent (Opus) | sdd-engineering:implementation-planner |
Turns an approved spec (or a plain request) into one plan: affected files, the stack skills that govern each, contract changes, work items with Done means, execution lanes or phases, the verification plan. |
On request by name, or when Claude delegates planning |
implementer |
agent (Sonnet) | sdd-engineering:implementer |
Executes a plan, one lane or one phase of it, or a list of findings (fix mode). Loads the routed stack skills, writes code, runs the configured checks, reports per item. | Dispatched by run-plan; or by name |
plan-verifier |
agent (Sonnet) | sdd-engineering:plan-verifier |
Read-only. Settles the working tree against the plan: exactly one verdict row per work item and one per requirement. | Dispatched by run-plan; or by name |
run-plan |
skill (command) | /sdd-engineering:run-plan |
Orchestrates the implementation half: preflight → implement → integrate → verify ⟲ fix → review ⟲ fix → final verify → report. Never commits. | Manual only |
sdd-status |
skill (command) | /sdd-engineering:sdd-status |
Read-only status: the active plugin version (from the installed copy's own manifest, with its path), config, specs by status, open markers, plans, verify packages, dependencies, and the next step. | Manual only |
workflow-retro |
skill (command) | /sdd-engineering:workflow-retro |
Retrospective of a finished multi-agent run: agents, order, tokens, what was hard, duplicated or lost, plus proposals. Appends one entry to the retro ledger. | Manual only |
engineering-insights |
skill | /sdd-engineering:engineering-insights |
Captures durable, non-obvious learnings (gotchas, what worked, dead ends, conventions, recurring errors) into the knowledge file of the area the work touched: reads it first, dedups, appends through a script that cannot overwrite, rebuilds a line-numbered index. Main session only, never a subagent. | On request, at the end of substantial work, "wrap up", "save this learning" |
sdd-format |
skill (reference) | sdd-engineering:sdd-format |
The shared contract: config keys, spec template, EARS rules, [NEEDS CLARIFICATION] grammar and checker, plan template, routing table, verification rules. |
Preloaded into the four agents and loaded by run-plan; not shown in the / menu |
mermaid-diagram |
skill | sdd-engineering:mermaid-diagram |
Mermaid diagram guide and templates (flows, states, sequences, ER). | Preloaded into spec-creator; auto when Claude needs a diagram |
| evals | claude plugin eval cases |
— | Six guard-rail checks (two negative) and the fixed cost-baseline scenario. See Evals. | Run by you |
The pipeline also dispatches two agents from its dependencies:
research-tools:researcher (facts from the code or the web, for the spec and the plan) and
architecture-review:architecture-reviewer (the review step of run-plan).
How everything works together
flowchart TD
SC["spec-creator · Pass 1 questions → Pass 2 spec"] -->|"user approves"| PL["implementation-planner → plan"]
PL --> RP["/sdd-engineering:run-plan plan.md"]
RP --> I["implementer (lanes / phases)"] --> CHK["project verify command"]
CHK --> V1{"plan-verifier"}
V1 -->|"gaps"| FX["implementer fix mode"] --> V1
V1 -->|"all built"| AR["architecture-review:architecture-reviewer"]
AR -->|"CRITICAL / WARNING"| FX2["implementer fix mode → re-review"] --> AR
AR -->|"clean"| V2["plan-verifier · per-AC verdict"]
V2 --> RETRO["/sdd-engineering:workflow-retro (manual)"]
SC -.->|"facts"| R["research-tools:researcher"]
PL -.->|"facts"| R
Three stages, each started by you. The spec and the plan need your decisions; the run needs a clean context, so start it in a new chat.
The stages at a glance
| # | Stage | Who runs it | Input | Output | Your decision |
|---|---|---|---|---|---|
| 1 | Spec, Pass 1 | spec-creator |
feature request, designs, screenshots, notes | questions with proposed defaults, design gaps, UX proposals; no file | answer each question, accept or decline each proposal |
| 1 | Spec, Pass 2 | spec-creator |
Pass 1 report + your answers | <specsDir>/SPEC-NN-<slug>.md, Status: draft, index row |
review the spec; unanswered points become markers |
| 1 | Approval | spec-creator |
"the user approved <spec>" |
Status: approved (refused while any marker remains) |
you approve; nobody else can |
| 2 | Plan | implementation-planner |
approved spec path + execution mode | <plansDir>/<slug>.plan.md |
choose single-agent or multi-agent; read Requirements traceability and every Done means |
| 3 | Run | /sdd-engineering:run-plan |
plan path, optional notes and design paths | changed files, a ledger, a final report with a per-requirement table | verify commands if not configured; triage asks; disputed findings; escalations |
| 4 | Ship | you | the diff and the report | commit, PR; then spec-creator marks the spec implemented |
you commit; you confirm implemented |
| 5 | Retro (optional) | /sdd-engineering:workflow-retro |
this conversation, or the session transcripts (deep) |
chat summary + one ledger entry with proposals | you start it; you decide which proposals to apply |
1. Spec: spec-creator
Dispatch it with the request, any design files or screenshots, and notes. It reads the
project's docs, the config's designs and knowledgeFiles, existing specs and the code, and
sends research-tools:researcher for facts it cannot read itself.
- Pass 1 returns
NO SPEC WRITTEN — needs input: the feature as understood, a design review (gaps, uncovered corner cases, cross-module questions, untrusted inputs), questions each with a proposed default, and proposals to accept or decline. A default applies only if you accept it. - Pass 2 runs when you re-dispatch it with your answers. It writes the spec from the
sdd-formattemplate, adds the index row, self-checks the file on disk, and reportsSPEC WRITTENwith the marker count. - Approval is a third, tiny dispatch: tell it you approved the spec. It sets
Status: approvedonly if the spec holds zero markers.
A spec says what is built and how we know it works: EARS acceptance criteria
(WHEN …, the system shall …), each with a Verify: hint, edge cases, NFRs, contracts at
service boundaries, provenance of inputs, a traceability matrix. How it is built is the
plan's job.
2. Plan: implementation-planner
Dispatch it with the spec path and the execution mode you chose. Then it finishes in one pass: on a plannable spec it asks no requirements questions, because the spec already went through them with you.
- single-agent: one implementer runs the work items in order, split into sequential phases if the plan is long. Cheaper and simplest to review.
- multi-agent: work items are grouped into lanes with disjoint files; lanes without dependencies run in parallel. Faster on a wide change, more tokens, one integration risk.
The plan lists the affected files and the stack skills that govern each (from the routing
table), contract changes (shared schemas, migrations, seed data, build-only failures, plus
your contractChecks), work items with checkable Done means, and a verification plan built
only from commands that exist. It refuses a spec that still holds a marker and lists every
OQ-n. Without a spec (a plain request), it first returns its own questions, then plans.
Before you run it, read the plan's Requirements traceability and every Done means:
that is what everything downstream is judged against.
3. Run: /sdd-engineering:run-plan
/sdd-engineering:run-plan docs/plans/<slug>.plan.md [notes…] [design or screenshot paths…]
The session becomes an orchestrator. It dispatches agents, runs the cheap checks itself, keeps a ledger, and never writes production code or reviews anything itself.
| Step | What happens | Loops and limits |
|---|---|---|
| Preflight | Reads the config and the plan header; stops if the plan's spec holds a [NEEDS CLARIFICATION] marker; asks once for missing verify commands; warns on the default branch and offers git switch -c feat/<slug>; creates or resumes the ledger |
a note that adds scope stops the run |
| Implement | one sdd-engineering:implementer per lane (parallel) or phase (sequential) |
structural BLOCKED → back to you |
| Integrate | each touched package's verify.full command, plus extra checks only if the plan names them |
red → fix mode, max 2 rounds |
| Verify #1 | sdd-engineering:plan-verifier: is every item built? |
gaps → fix mode → re-check of the fixed items only, max 2 rounds |
| Review ⟲ fix | architecture-review:architecture-reviewer on the changed files (plus a security reviewer if your project has one installed) |
CRITICAL / WARNING fixed by default, SUGGESTION listed, plan conflicts asked; re-review sees only the lines the fix changed; max 3 rounds |
| Verify #2 | final full checks + plan-verifier's per-item and per-requirement tables | — |
| Report | DONE, DONE WITH OPEN ITEMS or STOPPED at <step>, open items, skipped suggestions, ledger path |
— |
Triage. Every finding gets an id F<n> and a decision in the ledger. The implementer may
answer a finding with disputed and evidence; you decide those. A finding that reopens after
a fix, or open findings after round 3, are escalated to you with options: another round,
accept as is, or change the plan.
Resuming. The ledger at <runLedgerDir>/<slug>.md (default .claude/sdd/runs/) records
every completed step. After a context reset, run the same command again and choose "resume".
4. Ship, then close the spec
run-plan never commits. Review the diff, follow your project's branching rules, commit and
open a PR. Then re-dispatch spec-creator with plan-verifier's per-requirement table and
your confirmation: it sets the spec to implemented only when every AC is verified.
5. Retro (optional): /sdd-engineering:workflow-retro
After a multi-agent run, in the same conversation, /sdd-engineering:workflow-retro reports
how many agents ran and in what order, token spend, what each agent found hard or easy, what
was duplicated, missed or lost, and at least one proposal (or "none" with the reason).
/sdd-engineering:workflow-retro deep also parses the session transcripts: nested agents,
fresh vs cached tokens, files read by several agents, results that never reached their
caller. One entry is appended to the retro ledger (default docs/retro/ledger.md) through a
script that refuses to change existing content. It proposes; it never edits an agent, skill,
spec or plan.
Spec statuses and the marker lifecycle
stateDiagram-v2
[*] --> draft: spec-creator Pass 2
draft --> draft: answers re-dispatched, markers removed
draft --> approved: you approve and the spec has 0 markers
approved --> implemented: every AC verified and you confirm
implemented --> [*]
draft: editable. Any marker keeps a spec here.approved: never edited in substance again. A changed decision is a new spec withSupersedes: SPEC-NN; the old spec gains only aSuperseded by:line.implemented: set byspec-creatorfrom plan-verifier's per-requirement table and your confirmation.
Markers. A point you did not decide is never filled in silently. spec-creator writes it
inline where the assumption would have gone:
[NEEDS CLARIFICATION: OQ-1 — round the discounted total to two decimals, or whole units?]
| Rule | Detail |
|---|---|
| Mirror | each marker has a line under ## Open questions: OQ-1 → AC-3 — … |
| Cap | at most 3 per spec; more and no file is written, back to Pass 1 |
| Status | any marker keeps the spec draft; approval is refused |
| Planner | refuses the whole spec and lists every OQ-n with file:line |
run-plan |
stops in preflight if the plan's spec holds one |
| Checker | skills/sdd-format/scripts/check-specs.mjs --dir <specsDir> (bundled; run-plan runs it in preflight) fails on a marker in an approved or implemented spec, an unmirrored or id-less marker, more than 3 markers, or a missing Status: |
To clear a marker: answer the question, re-dispatch spec-creator with the answer, then
approve. A question you explicitly defer, and that blocks no criterion, is a plain open
question: no marker, no block.
To run the checker in CI, copy skills/sdd-format/scripts/check-specs.mjs from this plugin
into your repo; it has no dependencies.
What is never automatic
- Commits, pushes and PRs. No agent and no skill in this plugin commits. Creating a branch happens only after you say yes.
- Approval. Only you approve a spec, and only you confirm
implemented. - Product decisions. Every proposed default needs your explicit yes; an unanswered question becomes a marker.
/sdd-engineering:run-planand/sdd-engineering:workflow-retro. Both aredisable-model-invocation: true: Claude cannot start them, only you can.- Saving config.
run-planwrites theverifykey into.claude/sdd-engineering.jsononly if you agree.
Quick start: one feature in five minutes
The sample feature is "shoppers can apply a coupon at checkout".
0. Optional: tell the pipeline how to check your code. Create
.claude/sdd-engineering.json:
{
"verify": [
{ "package": "app", "dir": ".", "files": "npx vitest related --run {files}", "full": "npm run typecheck && npm test" }
]
}
Skip it and run-plan asks you once. Add .claude/sdd/runs/ to .gitignore.
1. Ask for a spec.
Use the sdd-engineering:spec-creator agent to write a spec for: shoppers can apply a
discount coupon at checkout. Design: docs/design/checkout.png
You get NO SPEC WRITTEN — needs input with questions such as "percentage or fixed
amount? (proposed default: percentage)", "can coupons be combined? (proposed default: no)".
2. Answer.
Re-dispatch spec-creator with my answers: percentage only; one coupon per cart; codes are
case-insensitive; expired codes show "This code has expired". Accept proposals 1 and 3,
decline 2.
You get SPEC WRITTEN — specs/SPEC-01-checkout-coupons.md, Status: draft, Markers: 0.
Read it.
3. Approve.
Re-dispatch spec-creator: the user approved specs/SPEC-01-checkout-coupons.md.
4. Plan.
Use sdd-engineering:implementation-planner on specs/SPEC-01-checkout-coupons.md.
Execution mode: single-agent (my choice).
You get PLAN WRITTEN — docs/plans/checkout-coupons.plan.md. Read its traceability table and
the Done means lines.
5. Run it, in a new chat.
/sdd-engineering:run-plan docs/plans/checkout-coupons.plan.md
Answer what it asks (verify commands if you skipped step 0, the branch, triage). You end with
a report like DONE — 4/4 items, 5/5 ACs verified · review: 1 round, 2 fixed.
6. Ship and close. Review the diff, commit, open a PR. Then:
Dispatch spec-creator with this per-requirement table; the user confirms: mark
specs/SPEC-01-checkout-coupons.md implemented.
7. Optional retro, still in the run's chat:
/sdd-engineering:workflow-retro
How to use it
Dispatch an agent
Ask in plain language and name the agent, or dispatch it from another agent or a script with
subagent_type:
| Agent | subagent_type |
Minimum brief |
|---|---|---|
| spec-creator | sdd-engineering:spec-creator |
the feature request (+ design paths); for Pass 2, the Pass 1 report and your answers |
| implementation-planner | sdd-engineering:implementation-planner |
the spec path + the execution mode you chose |
| implementer | sdd-engineering:implementer |
the plan path (+ lane or phase id; or a findings list for fix mode) |
| plan-verifier | sdd-engineering:plan-verifier |
the plan path (+ item ids and the previous table for re-check mode) |
Agents never talk to you directly. Their questions come back in their final report, and the main session relays them.
Example: plan from a request, without a spec
Use sdd-engineering:implementation-planner to plan this: "add a CSV export button to the
orders table, admins only". Execution mode: single-agent.
There is no spec, so the planner takes its two-pass route: it returns
NO PLAN WRITTEN — needs input with the requirements as understood, questions with defaults,
and recommendations. Re-dispatch it with your answers and it writes the plan, recording your
answers in its Clarifications and recommendations section.
Example: check a branch against its plan
Use sdd-engineering:plan-verifier on docs/plans/checkout-coupons.plan.md. The change is on
the current branch, uncommitted.
It enumerates every work item and its Done means before reading any code, then settles each
one with evidence. You get one row per item (verified, partially verified,
not verified or unverifiable), one row per acceptance criterion, plan items with no
change, and changes no item asked for.
Example: run with notes and designs
/sdd-engineering:run-plan docs/plans/checkout-coupons.plan.md reuse the existing Drawer component docs/design/coupon-field.png
The image becomes a design passed to lanes that touch UI code; "reuse the existing Drawer component" constrains how and is passed on. A note that adds behaviour the plan does not have stops the run: re-plan or drop the note.
Example: a deep retro
/sdd-engineering:workflow-retro deep --since 2026-10-16T09:00:00Z
Example: keep a lesson for the next session
/sdd-engineering:engineering-insights the coupon import: allSettled in chunks, not Promise.all
It picks the knowledge file whose area the work touched (from knowledgeFiles), reads it,
skips what is already recorded, and appends at most five dated, file:line-grounded entries
under fixed sections. With no knowledgeFiles configured, it proposes docs/knowledge.md
and creates it only after you agree.
Configuration
Everything is optional. The pipeline reads .claude/sdd-engineering.json in the project
root; a missing file or key means the default. The full format is in the
sdd-engineering:sdd-format skill (§1).
{
"specsDir": "specs",
"plansDir": "docs/plans",
"verify": [
{
"package": "web",
"dir": "apps/web",
"files": "npx vitest related --run {files}",
"full": "npm run typecheck && npm test && npm run build"
},
{
"package": "api",
"dir": "services/api",
"files": "npx vitest related --run {files}",
"full": "npm run typecheck && npm test"
}
],
"routing": "docs/sdd-routing.md",
"designs": ["docs/design/", "docs/screenshots/"],
"knowledgeFiles": ["docs/gotchas.md"],
"runLedgerDir": ".claude/sdd/runs",
"retroLedger": "docs/retro/ledger.md",
"contractChecks": [
{ "name": "Shared types", "question": "Does a type shared by web and api change?", "check": "npm run check:shared" }
]
}
| Key | Default | Used by | Meaning |
|---|---|---|---|
specsDir |
specs |
spec-creator, planner, run-plan | where specs and their README.md index live |
plansDir |
docs/plans |
planner, implementer, plan-verifier, run-plan | where plans live |
verify |
none: asked once, never guessed | implementer, plan-verifier, run-plan | per package: dir, a targeted command with {files}, a full command |
routing |
the sdd-format §5 table |
planner, implementer, reviewer | a project file with its own glob → skill table, same columns |
designs |
none | spec-creator, run-plan | design sources: mock files, exported artboards, screenshot folders |
knowledgeFiles |
none | spec-creator, planner, researcher, reviewer; written by engineering-insights | project gotchas and notes; read-only for every agent. /sdd-engineering:engineering-insights is the only writer, append-only, from the main session |
runLedgerDir |
.claude/sdd/runs |
run-plan | run ledgers; add it to .gitignore |
retroLedger |
docs/retro/ledger.md |
workflow-retro | append-only retro log; usually committed |
contractChecks |
none | planner, plan-verifier | extra items for the plan's Contract changes section |
verify in practice. files runs once per work item after its last edit, with the
touched files substituted for {files} (relative to dir). full runs once per touched
package at integration and once at the end. A package with no entry is reported as
not run — no verify command configured, never as passed.
Routing. The default table maps common TypeScript layouts to the
engineering-paved-path:* skills: server modules to onion-architecture, UI trees to
frontend-ui-architecture, routes, auth, config, env files and CI workflows to security,
and so on. Rows that do not match your project cost nothing. A file no row matches is named
as a coverage gap, never treated as reviewed.
Dependencies
flowchart LR
SDD["sdd-engineering"] -->|"^1.0.0"| EPP["engineering-paved-path"]
SDD -->|"^1.0.0"| RT["research-tools"]
SDD -->|"^1.0.0"| AR["architecture-review"]
AR -->|"^1.0.0"| EPP
| Plugin | Range | What this pipeline uses from it |
|---|---|---|
engineering-paved-path |
^1.0.0 |
the stack skills the routing table assigns: onion-architecture, frontend-ui-architecture, security, fastify-best-practices, next-best-practices, react-best-practices, react-testing-library. The planner names them per file, the implementer loads them before editing. |
research-tools |
^1.0.0 |
research-tools:researcher, the only agent spec-creator and implementation-planner may dispatch: read-only facts with file:line or dated sources, and an explicit Not established list |
architecture-review |
^1.0.0 |
architecture-review:architecture-reviewer, the review and re-review steps of run-plan |
All three install automatically with this plugin and can also be used on their own. No other
plugin in the marketplace depends on sdd-engineering.
Models and cost
| Agent | Model | Max turns | Why |
|---|---|---|---|
spec-creator |
Opus | 50 | product and design judgement, runs once per feature |
implementation-planner |
Opus | 50 | technical design, runs once per feature |
implementer |
Sonnet | — | follows a written plan; the bulk of the tokens |
plan-verifier |
Sonnet | 40 | conformance against written Done means, strict evidence rules |
architecture-review:architecture-reviewer |
Sonnet | — | rule-checking against two skills, re-run every fix round |
research-tools:researcher |
Sonnet | — | bounded fact-finding with a report budget |
run-plan orchestrator |
your session's model | — | dispatches and triages; reads no source to judge it |
Run length matters more than mode. An agent's cost is roughly tool calls × context, and context only grows, so one long run costs far more than several short ones. That is why:
- plans group work into runs of one package and 3–5 items, in either mode;
- checks are targeted, once per work item, and the full suite runs only at integration and at the end;
run-planpasses paths, never the plan text or whole reports, and re-checks or re-reviews only what a fix touched;- the review loop stops at 3 rounds and verification loops at 2.
Multi-agent mode buys wall-clock time on a wide change, not lower cost. To see where the
tokens went, run /sdd-engineering:workflow-retro deep and compare agents by fresh tokens;
totals are dominated by cheap cache reads.
Limits and safety
| Component | Tools | May write | Never |
|---|---|---|---|
spec-creator |
Read, Grep, Glob, Write, Edit, Agent, Skill | <specsDir>/SPEC-NN-<slug>.md; the ## Index table of <specsDir>/README.md; an existing spec only as the lifecycle allows |
source, plans, docs, knowledge files; dispatches only research-tools:researcher |
implementation-planner |
Read, Grep, Glob, Bash (read-only git history), Write, Agent, Skill | one new <plansDir>/<slug>.plan.md (no Edit at all) |
specs, source; tests or builds; dispatches only research-tools:researcher |
implementer |
Read, Grep, Glob, Edit, Write, Bash, Skill | the files of its plan, lane, phase or findings list | commit, push, branch or PR; weaken a test; run commands outside config verify and the plan; destroy local data |
plan-verifier |
Read, Grep, Glob, Bash (read and check), Skill | nothing | edit anything; run state-changing git |
run-plan (your session) |
your session's tools | its ledger; the verify key of the config, with your yes; a new branch, with your yes |
commit, push or PR; edit the spec or the plan; write production code |
sdd-status (your session) |
Read, Glob, Grep |
nothing | write any file, run a shell, dispatch an agent |
workflow-retro (your session) |
your session's tools | scratch files; one appended entry in the retro ledger, through its script | edit agents, skills, specs, plans or knowledge files |
engineering-insights (your session) |
your session's tools | appended entries in a knowledgeFiles file and its .index.md, through its scripts; a new knowledge file or the knowledgeFiles key, with your yes |
run inside a subagent; edit or reorder existing entries |
architecture-review:architecture-reviewer |
Read, Grep, Glob | nothing | — |
research-tools:researcher |
Read, Grep, Glob, Bash (read-only), WebSearch, WebFetch | nothing | — |
- Write scopes are instructions, not a sandbox. No hook enforces them. Review the diff before you commit, as you would any change.
- Everything an agent reads is data. Spec text, code comments and web pages are never followed as instructions.
- No hooks and no MCP servers ship with this plugin. The only scripts are the spec checker (read-only), the two retro scripts (one reads transcripts, one appends to the ledger) and the two engineering-insights scripts (one appends to a knowledge file, one writes its index).
- The
workflow-retrocollector reads your local transcripts under~/.claude/projects/. Quotes in the ledger are kept to a line or two, because a brief can carry your own words and the ledger is usually committed. - No security reviewer ships here. If your project installs one,
run-planuses it when security-routed files change; otherwise its report says that no security review ran.
Evals
Eight claude plugin eval cases in evals/: six check the guard rails of the pipeline, one checks sdd-status, and one is the fixed scenario of the cost baseline (docs/COST-BASELINE.md in the marketplace repo):
| Case | Pass means |
|---|---|
spec-creator-pass1-writes-no-file |
a request with gaps gets Pass 1 questions with defaults; no spec file is created |
planner-refuses-spec-with-marker |
the planner refuses a spec holding a marker, lists OQ-1, writes no plan |
plan-verifier-one-row-per-item |
exactly one verdict row per work item; the unbuilt item is not verified |
run-plan-preflight-stops-on-marker |
run-plan stops in preflight; no implementer is dispatched |
workflow-retro-not-auto-triggered |
"the run finished" does not start a retro |
irrelevant-request-no-sdd |
an everyday coding question does not start the pipeline (negative) |
sdd-status-reports-state |
/sdd-engineering:sdd-status prints the active version and its path, spec counts, markers, plans and the right next step, read-only (new in 1.1.0) |
baseline-spec-and-plan |
the cost-baseline scenario: spec-creator writes a spec and implementation-planner a plan for one small feature, judged for format and scope |
Three cases carry a tiny sample project (a spec, a plan, a few source files) in a
fixture.sh next to their case.yaml. It writes the files into the empty eval workspace and
runs only with --scaffold. Read the scripts first; they only create files and, in one case,
a local git commit.
Run from the root of the marketplace repository, because the cases load the three dependency plugins from their sibling directories:
claude plugin eval ./plugins/sdd-engineering --scaffold --allow-tools Bash Write Edit --no-publish
- Every run is a real, billed model call, and each case runs with and without the plugin
unless you pass
--ablation none. --allow-tools Bash Write Editletsrun-planandplan-verifierrun their checks, and makes the "writes no file" graders test the agents' own discipline rather than a missing permission.- One case:
--case planner-refuses-spec-with-marker. More confidence before a release:--runs 3. CI: add--trust-plugin --json out.jsonand pin--model. - Results go to
evals/results/, which is gitignored.
Credits
mermaid-diagramand every agent and skill in this plugin are original work, released with this marketplace.- EARS (Easy Approach to Requirements Syntax): Mavin et al., IEEE RE'09.
- The
[NEEDS CLARIFICATION]marker follows the GitHub Spec Kit convention, extended here with anOQ-nid.
Compatibility
Show the compatibility notes
Claude Code: >=2.1.110
| Minimum Claude Code | 2.1.110 — needed for version-constrained plugin dependencies |
| Tested with | Claude Code 2.1.301 on Windows 11 |
| Operating systems | Windows, macOS, Linux |
| Other requirements | Node.js >=18 on PATH for the bundled scripts (check-specs.mjs, collect-run.mjs, append-ledger.mjs, engineering-insights scripts) |
Features this plugin relies on
- Dependencies
engineering-paved-path,research-toolsandarchitecture-review, each^1.0.0(version-constraineddependencies, Claude Code>=2.1.110). - Plugin subagents with
model,maxTurns,toolsandskillsfrontmatter. - Skills with
disable-model-invocation: true(run-plan,workflow-retro,sdd-status), which only run when you invoke them. - The
${CLAUDE_SKILL_DIR}and${CLAUDE_PLUGIN_ROOT}substitutions for bundled scripts. - The same namespaced
skills:preload andSkill-tool fallback asarchitecture-review. claude plugin evalfor the cases inevals/.
If you use a newer Claude Code feature in this plugin, add it here and raise the minimum version to the release that introduced it, citing the official changelog or docs.
Checking your setup
claude --version
claude plugin list --json
claude plugin list --json must show the plugin enabled, with no dependency-unsatisfied,
range-conflict or no-matching-tag errors.
- 1.1.0 1 added Oct 17, 2026 · 2cb898c
- 1.0.1 1 added, 4 updated Oct 17, 2026 · 3937621
- 1.0.0 Plugin added with 8 artifacts Oct 16, 2026 · a81051e