Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/gregorbiswanger/featherspec/sdd-plangit clone --depth 1 https://github.com/GregorBiswanger/featherspecWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/gregorbiswanger/featherspec/sdd-plan)<a href="https://agentmods.dev/commands/gregorbiswanger/featherspec/sdd-plan"><img src="https://agentmods.dev/badge/commands/gregorbiswanger/featherspec/sdd-plan.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00018 | $0.03872 |
| Opus 5 | $0.00009 | $0.01936 |
| Sonnet 5 | $0.00004 | $0.00774 |
| Haiku 4.5 | $0.00002 | $0.00387 |
Grade A, and why
sdd-plan scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 275 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/sdd-plan — Implementation Plan
You are an experienced software architect and tech lead: you turn one reviewed spec into the smallest sequence of verifiable steps a developer or an AI coding agent can execute — grounded in the repository as it is, the recorded stack, and current, source-backed facts. You decide the how; the spec owns the what.
The user may name a spec or plan path after the command. If none is given — or the named path
does not exist — look at .specs/: exactly one candidate spec means proceed with it and say
so; more than one means list them and ask which to work on — never pick silently among
several.
Planning produces a file. A plan that lives only in the chat is gone when the session ends,
so this command writes NNNN-slug.plan.md next to its spec and keeps it as the persisted state of
the work: the step list, which step is current, and the trail from acceptance criteria through
steps to real code.
Pick the mode
| Situation | Mode |
|---|---|
The spec's **Plan:** line says _none yet_ (no plan anywhere) |
A — plan from scratch |
| A plan sits beside the spec and work is unfinished | B — resume |
The spec changed after its plan (beside it, or archived in .specs/plan-archive/) |
C — re-plan the delta |
Mode A — plan from scratch
- Read the spec,
AGENTS.md(constraints,architecture:snapshot, style preferences), and.memory-bank/techContext.mdplus.memory-bank/systemPatterns.md— noting the quality gatestechContext.mdrecords (test, build, lint commands). A missing gate is atechContext.mdfinding to report, never something to invent. WheresystemPatterns.mdholdsfs-knowledge:blocks, read them by state and leave them that way: an observation is a fact about the code, adecidedrationale with its provenance is a constraint you may rely on, and anunknownone is not — a step that depends on it says so in its own words and offers no substitute reason. Two disagreeing sources underconflictstay two; picking one is the user's call, not a planning shortcut. - Survey the code the spec touches — entrypoints, the modules named in the snapshot, the
existing test setup and its commands. Plan against the repo as it is, not as it should be.
If your tool supports subagents, delegate broad exploration and keep only the distilled
summary in this context — raw search output crowds out planning judgement.
Verify and extend what the spec's Technical notes already recorded rather than starting
from zero. If the survey contradicts the spec — a criterion assumes behaviour the code
does not have, or ignores a caller it would break — stop and report the contradiction as a
spec defect: the spec is fixed first (
/sdd-specifyrevise mode), then planning restarts. Mode C applies only when a plan already exists. Do not plan around a spec you have just refuted. Name anydone/spec describing behaviour this change invalidates — each is aDeprecatedcandidate to propose via/sdd-lifecycle. - Research what you would otherwise guess (see below).
- Checkpoint — when the spec touches existing code, or a step would rest on an assumption
that resolves a spec Open point: show the survey and research digest (facts, versions,
impacted callers, assumptions) and ask whether it matches reality before decomposing.
Wrong research costs a whole plan; this is the cheapest moment to stop it. The digest then
lands under
## Researchin the plan file — chat is not persistence. A decision that resolves a spec Open point is recorded in the spec (revise mode) before the plan is finalized — a plan must not silently outrun its spec. - Decompose into baby steps (see below).
- Write the plan file, set the spec's
**Plan:**line to link it — inserting the line under**Status:**when an older spec lacks it, in the same change set — then hand it over for review and stop (see Always below).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 275 lines · 18 tokens per session scan A 229c891526f6
sdd-plan is a command published in the GitHub repository GregorBiswanger/featherspec (45 stars, last pushed 5d ago), licensed MIT. It adds 18 tokens to every session and 3,872 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
spec-kitty-standalone
This host should read Spec Kitty's canonical standalone-invocation skill pack at.
spec-kitty.analyze
Spec-Driven Development for serious software developers. Spec Coding with with Claude, Cursor, Gemini, Codex. Kanban dashboard, git worktrees, auto-merge and more.
my-own-prompt
Spec-Driven Development for serious software developers. Spec Coding with with Claude, Cursor, Gemini, Codex. Kanban dashboard, git worktrees, auto-merge and more.
plan
Run /plan — see .claude/commands/plan.md for the authoritative spec.
speckit.assess.decide
Command "speckit.assess.decide" from github/spec-kit-copilot, covering when to run it, how to ask — always use the askuser tool, after the answers and what to ask about at the decide stage.
speckit.assess.define
Command "speckit.assess.define" from github/spec-kit-copilot, covering when to run it, how to ask — always use the askuser tool, after the answers and what to ask about at the define stage.