Planning and Task Breakdown
Decompose work into small, verifiable tasks with a parallel-dispatchable structure. The output is a plan document — never code — that downstream runners (CI matrices, single-agent execution sessions) consume to do the work.
When to use
- After a
/shape brief covering multi-repo, multi-week, or multi-slice work
- When a spec or task feels too large to start in one session
- When work needs to parallelize across agents or sessions
- When implementation order isn't obvious
When not to use. Single-file changes with obvious scope, or specs that already contain well-defined tasks.
The planning process
- Plan mode. Read in read-only mode. Map dependencies, note risks. Do not write code during planning.
- Identify the dependency graph. Bottom-up — foundations first.
- Slice vertically. Each task is a feature path through every layer it needs (schema + API + UI), not a horizontal layer of the system. Horizontal slicing produces half-finished branches.
- Write task blocks. Each task is YAML frontmatter (id, depends_on, parallel_safe, conflicts_with, files_write, files_read, branch_suffix, scope) plus prose (description, acceptance, verification). Format and field semantics:
references/task-block-format.md.
- Order and checkpoint. Phases are presentational; the DAG is the execution order. Checkpoints are synchronization barriers — dispatch pauses until they clear.
- Declare the Execution DAG. Top-of-document summary of edges using
→ and ||. Format and dispatcher contract: references/execution-dag.md.
Universal rules
- Stable IDs, never renumbered. Use content-based slugs (
T-auth-schema). Renumbering breaks every reference. Retire dropped IDs rather than reusing them.
files_write is authoritative, not advisory. The dispatcher uses it for conflict detection. Under-declare → parallel collisions; over-declare → false serialization.
- The DAG is a summary, not the source of truth. Per-task
depends_on is authoritative. The verification checklist enforces that they agree.
- Day-zero ready set must be non-empty. At least one task has
depends_on: []. If none do, the plan is malformed.
scope: L must be split before dispatch. Agents perform best on XS / S / M.
- Plan, do not implement. This skill never writes code. The output is a plan document; execution is a separate step.
- Every plan carries a
**Status:** line. Lifecycle proposed → in-progress → shipped | superseded. A fresh plan starts at proposed; keep it current as the work moves. It is the signal for retiring completed plans (prune shipped/superseded plans manually), so an unmarked plan never gets recognized as done. See assets/plan-document-template.md.
References
references/task-block-format.md — per-task YAML frontmatter and prose structure, field-by-field semantics
references/execution-dag.md — DAG syntax, dispatcher contract, checkpoints, worked example
assets/plan-document-template.md — full document template
references/parallelization-decisions.md — when to set each YAML field; contract-first, barrel-file, migration patterns
references/task-sizing-and-redflags.md — sizing table, when to split, common rationalizations, red flags
Verification
Before starting implementation, confirm:
1---2name: planning-and-task-breakdown3description: Breaks work into ordered, parallel-dispatchable tasks with an execution DAG. Output format is consumable by CI matrices and parallel agent runners — each task has a stable ID, declared file writes, conflict edges, and branch suffix. Use when you have a spec, brief, or shaper output and need to decompose it into implementable units. Use when a task feels too large, when scope spans multi-repo or multi-week work, or when parallel execution across multiple agents is on the table.4---56# Planning and Task Breakdown78Decompose work into small, verifiable tasks with a parallel-dispatchable structure. The output is a plan document — never code — that downstream runners (CI matrices, single-agent execution sessions) consume to do the work.910## When to use1112- After a `/shape` brief covering multi-repo, multi-week, or multi-slice work13- When a spec or task feels too large to start in one session14- When work needs to parallelize across agents or sessions15- When implementation order isn't obvious1617**When not to use.** Single-file changes with obvious scope, or specs that already contain well-defined tasks.1819## The planning process20211. **Plan mode.** Read in read-only mode. Map dependencies, note risks. *Do not write code during planning.*222. **Identify the dependency graph.** Bottom-up — foundations first.233. **Slice vertically.** Each task is a feature path through every layer it needs (schema + API + UI), not a horizontal layer of the system. Horizontal slicing produces half-finished branches.244. **Write task blocks.** Each task is YAML frontmatter (id, depends_on, parallel_safe, conflicts_with, files_write, files_read, branch_suffix, scope) plus prose (description, acceptance, verification). Format and field semantics: [`references/task-block-format.md`](references/task-block-format.md).255. **Order and checkpoint.** Phases are *presentational*; the DAG is the execution order. Checkpoints are synchronization barriers — dispatch pauses until they clear.266. **Declare the Execution DAG.** Top-of-document summary of edges using `→` and `||`. Format and dispatcher contract: [`references/execution-dag.md`](references/execution-dag.md).2728## Universal rules2930- **Stable IDs, never renumbered.** Use content-based slugs (`T-auth-schema`). Renumbering breaks every reference. Retire dropped IDs rather than reusing them.31- **`files_write` is authoritative, not advisory.** The dispatcher uses it for conflict detection. Under-declare → parallel collisions; over-declare → false serialization.32- **The DAG is a summary, not the source of truth.** Per-task `depends_on` is authoritative. The verification checklist enforces that they agree.33- **Day-zero ready set must be non-empty.** At least one task has `depends_on: []`. If none do, the plan is malformed.34- **`scope: L` must be split before dispatch.** Agents perform best on XS / S / M.35- **Plan, do not implement.** This skill never writes code. The output is a plan document; execution is a separate step.36- **Every plan carries a `**Status:**` line.** Lifecycle `proposed` → `in-progress` → `shipped` | `superseded`. A fresh plan starts at `proposed`; keep it current as the work moves. It is the signal for retiring completed plans (prune `shipped`/`superseded` plans manually), so an unmarked plan never gets recognized as done. See [`assets/plan-document-template.md`](assets/plan-document-template.md).3738## References3940- [`references/task-block-format.md`](references/task-block-format.md) — per-task YAML frontmatter and prose structure, field-by-field semantics41- [`references/execution-dag.md`](references/execution-dag.md) — DAG syntax, dispatcher contract, checkpoints, worked example42- [`assets/plan-document-template.md`](assets/plan-document-template.md) — full document template43- [`references/parallelization-decisions.md`](references/parallelization-decisions.md) — when to set each YAML field; contract-first, barrel-file, migration patterns44- [`references/task-sizing-and-redflags.md`](references/task-sizing-and-redflags.md) — sizing table, when to split, common rationalizations, red flags4546## Verification4748Before starting implementation, confirm:4950- [ ] The plan has a `**Status:**` line (a fresh plan starts at `proposed`)51- [ ] Every task has a stable `id` (content-based slug, not a number)52- [ ] Every task has acceptance criteria and a verification step53- [ ] Every task declares `depends_on`, `parallel_safe`, `files_write`54- [ ] Every pair of tasks whose `files_write` overlap is in each other's `conflicts_with`55- [ ] At least one task has `depends_on: []` (a non-empty day-zero ready set)56- [ ] No task is `scope: L` (split it before dispatch)57- [ ] No task touches more than ~5 files58- [ ] The Execution DAG matches the per-task `depends_on` (no orphan IDs, no missing edges)59- [ ] Checkpoints exist between major phases and are referenced in the DAG60- [ ] The human has reviewed and approved the plan