From sdd
Breaks a designed feature into atomic ≤1-day tasks with a dependency graph, per-task Definition of Done, and a machine-readable tasks.json for the implement engine. Refuses unless spec.md, sad.md, and an Accepted ADR exist.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdd:tasksinheritThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Task-breakdown generator: atomic tasks ≤1 day, each a separately reviewable change (≤~500 LOC preferred), with a visible dependency graph and a Definition of Done per task. One task = one focused session = one PR. "Build the feature" is not a task — break it down.
Task-breakdown generator: atomic tasks ≤1 day, each a separately reviewable change (≤~500 LOC preferred), with a visible dependency graph and a Definition of Done per task. One task = one focused session = one PR. "Build the feature" is not a task — break it down.
Task files link to upstream artifacts (spec.md §AC-N, sad.md §6, data-model.md, contracts/openapi.yaml, adr/NNNN-*.md) — they do not duplicate them. Alongside the human-facing markdown, this skill emits tasks.json, the contract the implement engine reads to build its dependency DAG.
Tech Lead.
<slug> — feature slug.docs/features/<slug>/spec.md + docs/features/<slug>/sad.md + ≥1 Accepted ADR in adr/. Missing → STOP and point at the producing skill (specify / design / decide-adr).data-model.md and contracts/openapi.yaml.sad.md frontmatter target_surfaces — gates which layers appear (step 4). Absent or empty → warn («surfaces undeclared — re-run design, or proceeding as backend-service») and treat as [backend-service] (→ ../_shared/surfaces.md); never silently emit ui tasks for an undeclared surface.docs/features/<slug>/tasks/: _epic.md (summary + links + the DAG flowchart), tracker.md (status table), one <task-slug>.md per task. Templates → ./templates/_epic.md, ./templates/tracker.md, ./templates/task.md. Validate the _epic.md flowchart per ../_shared/mermaid-check.md (render-parse with mmdc if available, else the structural lint; fix before committing).migration (DB) · domain (entities/invariants) · infra (repo/persistence) · app (service/use-case) · ports (handler/API) · ui (UI components / screens / view-state — only when a UI surface is declared) · tests · wiring (composition/DI) · docs. sad.md frontmatter target_surfaces gates which layers appear (→ ../_shared/surfaces.md): a web-frontend / mobile-app / desktop-app surface adds ui tasks; a backend-only feature emits domain/infra/app/ports (no ui); a cli feature app/ports; a worker domain/infra. Each ui task names the existing components / tokens / styling it reuses (from architecture-map.md §Frontend) — a new component is listed only when no existing primitive fits. List 8–20 items by size (see ../_shared/size-matrix.md).deps: [...]. Identify parallel branches (e.g. the migration and a pure-domain task can start together). This graph IS the DAG implement will topologically sort into phases.acs it satisfies (spec §5 IDs) and a files_hint — the directories/files it will touch. files_hint lets implement serialize tasks whose file sets overlap, and layer: migration is always serialized (ordered migration sequence); layer: ui is not auto-serialized — UI tasks parallelize unless their files_hint overlaps. A migration task's files_hint is the staged pair docs/features/<slug>/migrations/<NN>_* (which implement promotes into the live migrations/ when it runs the task) — not a live migrations/ path.<TBD lead>). Adapt to the team's sizing if any.tasks.json (step contract below) — the same model the markdown reflects, in machine form, at docs/features/<slug>/tasks.json._epic.md + the task files. Otherwise provide copy-paste-ready bodies. Never hard-bind to one tracker.acs cover every spec §5 AC; tasks.json validates against the contract.tasks: <slug> (breakdown + tasks.json). Then emit the stage-handoff block per ../_shared/handoff.md — What I did + Review (tasks/, tasks.json) + Run next (/clear, then /sdd:plan-tests <slug>, then /sdd:implement <slug>).tasks.json contract (read by implement){
"slug": "<slug>",
"tasks": [
{
"id": "T1",
"title": "imperative, specific",
"layer": "migration|domain|infra|app|ports|ui|tests|wiring|docs",
"deps": ["T0"],
"acs": ["AC-01", "AC-02"],
"dod": "one testable sentence",
"files_hint": ["path/or/dir/the/task/touches"]
}
]
}
tasks.json use the same field names (deps, acs) — this skill emits both from one model, so there's no translation layer to drift.deps must form a DAG (no cycles) and reference only ids present in the file.layer: migration tasks are serialized by implement (ordered migration sequence); layer: ui is not auto-serialized (UI tasks parallelize); tasks with overlapping files_hint are serialized into the same lane regardless of layer.sad.md frontmatter target_surfaces (a UI surface adds ui; a backend-only feature has none) → ../_shared/surfaces.md.tasks/_epic.md + tasks/tracker.md + one tasks/<task>.md per task exist, linking (not duplicating) upstream.tasks.json exists and validates: acyclic deps, every acs entry is a real spec §5 AC, every task has a dod and a files_hint.acs.tasks.json out of sync with the markdown — they must reflect the same model../templates/_epic.md · ./templates/tracker.md · ./templates/task.md../_shared/size-matrix.md — how many tasks for the feature size.../_shared/surfaces.md — target_surfaces (read from sad.md) gates which layers appear; a UI surface adds the ui layer (not auto-serialized).npx claudepluginhub genkovich/sdd --plugin sddGenerates dependency-ordered, actionable tasks.md from feature design artifacts (plan.md, spec.md, optionally data-model.md, contracts, research.md). For use inside active top-level workflows (/smith-new, /smith-bugfix, etc.) to decompose features into implementable task lists.
Decomposes feature requests into phased task boards with dependency mapping, parallelization flags, risk flags, edge cases, and test matrices.
Breaks complex features into atomic JSON subtasks with dependencies, acceptance criteria, deliverables, and agent assignments. Use for multi-file changes or parallelizable work.