api
Use to derive the API contract for a feature — an OpenAPI 3.1 document at docs/features/{slug}/contracts/openapi.yaml plus a…
Use to break a product idea into incremental steps and keep that decomposition living — one docs/roadmap.md with a destination sentence, the steps table (source-anchored, sized XS–XL or marked fog), the fog vocabulary (what's in scope but not yet formulated, what never
$ npx -y skills add genkovich/sdd --skill roadmap --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/roadmapContext preview
The summary Claude sees to decide when to auto-load this skill.
Use to break a product idea into incremental steps and keep that decomposition living — one docs/roadmap.md with a destination sentence, the steps table (source-anchored, sized XS–XL or marked fog), the fog vocabulary (what's in scope but not yet formulated, what never
name: roadmap model: inherit effort: medium agents: [] description: > Use to break a product idea into incremental steps and keep that decomposition living — one docs/roadmap.md with a destination sentence, the steps table (source-anchored, sized XS–XL or marked fog), the fog vocabulary (what's in scope but not yet formulated, what never graduates, which decisions are still open and who owns them), the dependency graph that owns every edge, and the execution path: dependency-respecting waves that show what can run in parallel (e.g. in worktrees) and what must wait. Triggers on "roadmap", "break this down", "decompose the idea", "what depends on what", "execution plan", "/sdd:roadmap", "роадмап", "розбий ідею на кроки", "що від чого залежить", "що можна паралельно". Takes any scope — a whole product, an epic, or a single feature. Reads docs/idea-brief.md or a PRD (+ design canon and architecture map when they exist; neither is required). It decomposes and orders — it is NOT a prioritization scorecard and NOT a dated Gantt; specify/ship keep step statuses in sync as features move.
The **decomposition layer** between the idea and the per-feature pipeline. SDD builds one feature at a time under `docs/features/<slug>/`; `roadmap` answers the question that comes *before* any feature: **where are we going, how does the idea break into steps, what depends on what, and in which order — and in what parallel lanes — do we walk them.** One living `docs/roadmap.md`, repo-level utility (like `survey`).
**Scope is whatever you bring.** A whole product, one epic, or a single feature — the unit of the input does not change the unit of the output. A one-feature request gets decomposed the same way; there are simply fewer steps, and «fewer» is a legitimate answer. The skill never refuses a request for being too small, and never inflates one to look like a product plan.
Five load-bearing properties, in priority order:
1. **A destination** — one sentence for what is true once the last step ships. Without it the steps are a list of work with nothing to be a decomposition *of*. 2. **Steps** — the idea decomposed into incremental, source-anchored slices (each row cites the brief/PRD section it comes from; size XS–XL per [`../_shared/size-matrix.md`](../_shared/size-matrix.md)). 3. **A word for what you don't know yet.** `Size` is `XS…XL` **or** `fog`, in the same cell, because they answer the same question and only one of them can be true: sizing something nobody has formulated yet is how an estimate becomes a lie. Fog lives in `## Not yet specified` until a recon pass sharpens it, and then the row trades `fog` for a real size. 4. **Dependencies** — an explicit graph, and the graph is where edges live. Every edge has a one-line reason (data model, UI zone, auth precondition). No edge without a real blocker, and no second copy of the edges in a column that could disagree with it. 5. **Execution path** — waves that respect the graph: wave N only contains steps whose deps are in earlier waves, and steps inside one wave are **conflict-safe in the codebase** (different modules / UI zones — so they can run as parallel worktree lanes). Each wave row names the zone.
**Not here:** RICE or any scoring (order IS the prioritization), dates (a decomposition, not a promise), solution detail (lives in the feature's spec). Question phrasing → [`../_shared/ask-style.md`](../_shared/ask-style.md); prose follows `artifact_language`, table structure and the `Status` / `Size` values stay English → [`../_shared/artifact-language.md`](../_shared/artifact-language.md).
Whoever owns product direction (PM / lead / the solo maintainer).
a PRD / a vision note (ask which, if several). This is the only hard input.
conflict-safety. Its absence costs precision in one column, not the roadmap.
1. **Ensure the settings file (first thing, after this skill's own gate).** If `.claude/sdd.local.md` is absent, create it now from the canonical template — documented defaults + the self-documenting body — and patch `.gitignore`; if it exists, read it and never overwrite. The one procedure lives in [`../_shared/settings-file.md`](../_shared/settings-file.md). Creating is unconditional; **changing values is only ever offered by [`config`](../config/SKILL.md)**. Say one line: «`.claude/sdd.local.md` created with documented defaults — `/sdd:config` to tune it». **Then locate sources.** Find the idea source (`docs/idea-brief.md` first, then PRD candidates). None found → say so and STOP: a roadmap without a source is fiction, and the fix is one command — `/sdd:interview` writes that brief. **That is the only hard stop.**
`docs/architecture-map.md` is **optional and never a gate**. Present → its module inventory supplies the zones in `## Execution path`. Absent → the roadmap is written anyway, every zone that is not an existing path is marked `(new)`, and the handoff says plainly that the waves are a first cut worth re-cutting after `/sdd:survey` fills the map. A missing map degrades one column; it does not block the decomposition.
**Greenfield (`docs/architecture-map.md` says `mode: greenfield-bootstrap`, or an empty repo with no `docs/features/*` besides `_scaffold/`): the first step is `scaffold`** — unless its `scaffold: materialize skeleton` commit already exists, then it is marked done. Every other step assumes a skeleton to build into — a repo with no module layout, no test harness and no migration tooling cannot receive step 1 as written. Its source
A self-contained Claude Code plugin that carries a feature from a one-line idea to reviewed, verified, shipped code through 23 atomic, stack-agnostic skills and a TDD implementation engine — with a living decomposition roadmap above the per-feature flow and a
Use to derive the API contract for a feature — an OpenAPI 3.1 document at docs/features/{slug}/contracts/openapi.yaml plus a…
Use to run an ambiguity sweep over a written spec.md and close every under-specified point before planning or design proceeds —…
Use to classify a feature into XS/S/M/L/XL and write docs/features/{slug}/.size plus the pipeline route…
Use to create and tune the per-project settings file `.claude/sdd.local.md` — the one place that decides how deeply the pipeline…
Use to design the data model AND generate the actual forward + rollback migrations in one pass — shippable SQL, not a plan.…
Use to record a post-hoc or asynchronous architecture decision as a MADR ADR when it was NOT captured during the synchronous…