Help us improve
Share bugs, ideas, or general feedback.
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. Requires spec.md, sad.md, and an Accepted ADR.
npx claudepluginhub genkovich/sdd --plugin sddHow 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.
Decomposes feature requests into phased task boards with dependency mapping, parallelization flags, risk flags, edge cases, and test matrices.
Generates 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.
Breaks complex features into atomic JSON subtasks with dependencies, acceptance criteria, deliverables, and agent assignments. Use for multi-file changes or parallelizable work.
Share bugs, ideas, or general feedback.
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.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).