From SDD Engineering
Executes an already-approved SDD plan through build → review → fix → gate. Takes a persisted PLAN-*.md (the HOW — produced SEPARATELY via sdd-engineering:plan-implementation) and optionally its spec, fans out implementer per task unit (parallel, worktree-isolated), runs the review gates (plan-verifier + architecture-reviewer + /code-review) in parallel, drives a BOUNDED post-review fix loop, and stops at the pre-push gate. It ORCHESTRATES only — writes no code itself; the main thread owns user Q&A, parallel fan-out, /code-review, and worktree integration. Spec authoring (sdd-engineering:write-spec) and planning (sdd-engineering:plan-implementation) are run manually before this.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdd-engineering:run-planWhen to use
Trigger phrases: '/run-plan', 'run the plan', 'execute PLAN-...', 'build from this plan', 'run the SDD implementation'. Requires an existing PLAN-*.md — if there is no plan yet, run sdd-engineering:plan-implementation first (and sdd-engineering:write-spec before that). Explicit, user-invoked: it fans out many workers and writes code, so start it only on request.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You **orchestrate** the implementation tail of Spec-Driven Development: take an **already-approved
You orchestrate the implementation tail of Spec-Driven Development: take an already-approved
plan and drive it through build → review → fix → gate. The upstream steps — the spec
(sdd-engineering:write-spec) and the plan (sdd-engineering:plan-implementation) — are run
separately, by hand, before you. You start from their output.
You run in the main thread and write no code yourself. Every heavy phase is delegated to a
subagent (Task tool); you own only what a subagent cannot do: talk to the user
(AskUserQuestion), fan out parallel subagents, run slash commands / skills (/code-review,
engineering-paved-path:pr-self-review), and integrate worktree output back into the branch.
Context hygiene. Hold only the plan's task units, ids, and the review findings — never paste code/diffs in full into your own context. Let each subagent read files in its own context and return a short summary.
INTAKE (read PLAN-*.md) ─► BUILD (implementer ∥, integrate worktrees) ─►
REVIEW ( plan-verifier ‖ architecture-reviewer ‖ /code-review ) ─► FIX LOOP ─►
VERIFY (drive the real app end-to-end, NOT mocks) ─►╴gate╶─► pr-self-review ─► report
AC whose Verify:
hint names a test nobody wrote comes back UNVERIFIABLE (static) / NOT FOUND from
plan-verifier — that is expected, not a defect. plan-verifier still earns its keep on:
manual / code-presence evidence, non-functional criteria (authz/tenancy scoping,
secrets-not-logged, i18n keys), DoD gates (migration generated, contract updated in every
copy), and the gold-plating backward pass — none of which depend on tests. If the project runs a
dedicated test-authoring phase before BUILD, add it there to close the test-hinted ACs.architecture-reviewer and plan-verifier MAY run on a cheaper model tier to
save cost; their prompts are heavily grounding-constrained, so this is a sanctioned downgrade —
but if you see false VIOLATIONs or confident-but-unmet METs, flag it and move those agents
back to a stronger model./code-review effort defaults to medium here — reserve ultra (cloud, expensive) for
large or high-risk diffs, and only on the user's say-so.implementer. You orchestrate, ask, and integrate.PLAN-*.md is provided or found, stop and tell the user to
run sdd-engineering:plan-implementation first (and sdd-engineering:write-spec before that). Do
not invent a plan.blocked stops that unit until you resolve it./run caught it.)PLAN-*.md path the user gave, or the newest one if they say
"the plan". If none exists, stop (boundary 2). Optionally note the spec it traces (SPEC-NN)
for cross-reference.AC-N + Verify: hints), and the non-functional requirements. Keep this structure; you
pass each worker only its own unit, not the whole plan.Fan out implementer, one per task unit, following the plan's parallelization graph:
engineering-paved-path:engineering-insights at the end (single writer).Fan out in one message — they are independent:
plan-verifier (Task) — plan path + built code. Requirement coverage: is every AC
actually implemented (evidence, not quality). Expect UNVERIFIABLE/NOT FOUND on ACs whose
test evidence a dedicated test-authoring phase would have produced (if you didn't run one).architecture-reviewer (Task) — structural topology only (onion / feature-based
invariants). It does not hunt bugs./code-review (Skill, medium) — line-level correctness bugs, the gap architecture-reviewer
leaves. Scope to the branch diff; ultra only for large/risky diffs on the user's say-so.Collect the three reports by reference.
file:line once).VIOLATION + /code-review high-confidence bug + plan-verifier
NOT FOUND/PARTIAL on a required AC/DoD (excluding the expected test-evidence gaps above).SMELL / UNPLANNED / low-confidence / nit → surface to the user; don't auto-fix.sdd-engineering:plan-implementation) or
a spec amendment (sdd-engineering:write-spec), run separately, not a blind code patch.implementer, scoped to the
finding's files, in a worktree; it must keep tests + typecheck green. A plan-verifier
NOT FOUND may need a small new task unit (missing behavior), not just an edit. Integrate
as in Phase 1.ACs — not the whole review again.Green mocked tests + clean static review do not prove the feature works. Before the gate, drive the actual built feature end-to-end and observe real behavior — the runtime path every test mocked away.
/run (or /verify):
bring up the project's real stack end-to-end (datastore + services + UI as applicable), then hit
the new route with real data, trigger the real background job / external call, click through the
new UI, read the response / screenshot. The app as a user meets it — not an import-and-console.log./run surfaced it.Skip ONLY when the diff has no runtime surface (docs / tests / config-only). Any change to product source has one — drive it.
engineering-paved-path:pr-self-review (Skill) over the whole diff — the pre-push gate; it
blocks on any critical.AskUserQuestion) whether to push / open a PR, or
hold. Only run git-outbound commands on explicit confirmation.SPEC-NN) · files changed · test results · review verdicts
before → after the fix loop · runtime verification (what real flow you drove in Phase 3.5
sdd-engineering:retro to capture a retrospective of THIS run (agents,
tokens, what was hard / duplicated / missed, recommendations) — run it now, while the per-agent
telemetry is still fresh in context, before it scrolls out.AskUserQuestion, main-thread only)Each fix-loop round decision (Phase 3) · the ship decision (Phase 4). Everything else runs
delegated and unattended. (Spec/plan clarifications happened earlier, in the separate
sdd-engineering:write-spec and sdd-engineering:plan-implementation steps.)
Independent subagents go in one message: same-wave implementers (Phase 1), the three review gates (Phase 2). Respect disjoint-file-sets and the ≤3–5-worker ceiling; sequence anything that shares files or depends on a prior wave's committed result.
PLAN-*.md) stays the single source of truth for the HOW across phases/chats.Converse in the language of the request; keep agent/skill names, paths, and commands verbatim.
npx claudepluginhub rostk/my-monkeys --plugin sdd-engineeringCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.