Planning and task breakdown

Breaks work into ordered tasks.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/planning-and-task-breakdown.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit addyosmani/agent-skills/skills/planning-and-task-breakdown#main ~/.claude/skills/planning-and-task-breakdown

For one project only, change the path to .claude/skills/planning-and-task-breakdown.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Planning and task breakdown

Show the full text258 lines
namedescription
planning-and-task-breakdownBreaks work into ordered tasks. Use when you have a spec or clear requirements and need to break work into implementable tasks. Use when a task feels too large to start, when you need to estimate scope, or when parallel work is possible.

Planning and Task Breakdown

Overview

Decompose work into small, verifiable tasks with explicit acceptance criteria. Good task breakdown is the difference between an agent that completes work reliably and one that produces a tangled mess. Every task should be small enough to implement, test, and verify in a single focused session.

When to Use

  • You have a spec and need to break it into implementable units
  • A task feels too large or vague to start
  • Work needs to be parallelized across multiple agents or sessions
  • You need to communicate scope to a human
  • The implementation order isn't obvious

When NOT to use: Single-file changes with obvious scope, or when the spec already contains well-defined tasks.

The Planning Process

Step 1: Enter Plan Mode

Before writing any code, operate in read-only mode:

  • Read the spec and relevant codebase sections
  • Identify existing patterns and conventions
  • Map dependencies between components
  • Note risks and unknowns

Do NOT write code during planning. The output is a plan document saved to tasks/plan.md and a task list recorded in the task list target (see Output Files; default tasks/todo.md), not implementation.

Step 2: Identify the Dependency Graph

Map what depends on what:

Database schema
    │
    ├── API models/types
    │       │
    │       ├── API endpoints
    │       │       │
    │       │       └── Frontend API client
    │       │               │
    │       │               └── UI components
    │       │
    │       └── Validation logic
    │
    └── Seed data / migrations

Implementation order follows the dependency graph bottom-up: build foundations first.

Step 3: Slice Vertically

Instead of building all the database, then all the API, then all the UI — build one complete feature path at a time:

Bad (horizontal slicing):

Task 1: Build entire database schema
Task 2: Build all API endpoints
Task 3: Build all UI components
Task 4: Connect everything

Good (vertical slicing):

Task 1: User can create an account (schema + API + UI for registration)
Task 2: User can log in (auth schema + API + UI for login)
Task 3: User can create a task (task schema + API + UI for creation)
Task 4: User can view task list (query + API + UI for list view)

Each vertical slice delivers working, testable functionality.

Step 4: Write Tasks

Each task follows this structure, whether it lands in the markdown task list or as an item in an external tracker (see Output Files):

## Task [N]: [Short descriptive title]

**Description:** One paragraph explaining what this task accomplishes.

**Acceptance criteria:**
- [ ] [Specific, testable condition]
- [ ] [Specific, testable condition]

**Verification:**
- [ ] Tests pass: [the repository's focused-test command]
- [ ] Build succeeds: [the repository's build command]
- [ ] Manual check: [description of what to verify]

**Dependencies:** [Task numbers this depends on, or "None"]

**Files likely touched:**
- `src/path/to/file.ts`
- `tests/path/to/test.ts`

**Estimated scope:** [Small: 1-2 files | Medium: 3-5 files | Large: 5+ files]
Step 5: Order and Checkpoint

Arrange tasks so that:

  1. Dependencies are satisfied (build foundation first)
  2. Each task leaves the system in a working state
  3. Verification checkpoints occur after every 2-3 tasks
  4. High-risk tasks are early (fail fast)

Add explicit checkpoints to the task list target:

## Checkpoint: After Tasks 1-3
- [ ] All tests pass
- [ ] Application builds without errors
- [ ] Core user flow works end-to-end
- [ ] Review with human before proceeding

Task Sizing Guidelines

Size Files Scope Example
XS 1 Single function or config change Add a validation rule
S 1-2 One component or endpoint Add a new API endpoint
M 3-5 One feature slice User registration flow
L 5-8 Multi-component feature Search with filtering and pagination
XL 8+ Too large — break it down further —

If a task is L or larger, it should be broken into smaller tasks. An agent performs best on S and M tasks.

When to break a task down further:

  • It would take more than one focused session (roughly 2+ hours of agent work)
  • You cannot describe the acceptance criteria in 3 or fewer bullet points
  • It touches two or more independent subsystems (e.g., auth and billing)
  • You find yourself writing "and" in the task title (a sign it is two tasks)

Output Files

  • Plan document: Save the implementation plan to tasks/plan.md. This is always a markdown file — design decisions, risks, and open questions don't map cleanly onto individual tracker issues.
  • Task list: Record each task in the task list target (defined below).

Create the tasks/ directory if it does not exist.

Never overwrite an incomplete plan. Before writing tasks/plan.md or tasks/todo.md, check whether they already exist and still contain unchecked tasks:

  • Same work being replanned (the user asked to revise or extend this plan) → update the existing files in place.
  • Different work → stop and ask. The unchecked tasks may be mid-build in another session. Do not delete, overwrite, or rename the existing files on your own; present the conflict and let the user decide (finish the old plan first, explicitly discard it, or tell you where the new plan should go).

The same rule applies to an external task list target: never bulk-close or delete another plan's open tracker items to make room for new ones.

Task List Target

The task list target is where tasks and checkpoints are recorded. It is defined once, here; every other reference in this skill defers to it.

  • Default: a checklist-style markdown file at tasks/todo.md. This is the convention the /build command and other downstream tooling expect. Use it unless the project says otherwise.
  • External tracker: if the project's agent rules (CLAUDE.md, AGENTS.md, etc.) or the user designate an issue tracker (e.g. GitHub Issues, Jira, Linear, bd/beads), create one tracker item per task instead of writing tasks/todo.md. Map the Step 4 structure onto the tracker's fields: acceptance criteria and verification steps in the item body, dependencies via the tracker's linking mechanism (bd dep add, "blocked by", etc.). Record Step 5 checkpoints as tracker items too, or as a checklist in the plan document if the tracker has no natural equivalent.

When using an external tracker, note it in tasks/plan.md (e.g. "Tasks tracked in Linear project FOO") so downstream steps and future sessions know where to look, and keep the plan document's Task List section as an ordered index of tracker item IDs or links rather than a duplicate checklist.

Plan Document Template

# Implementation Plan: [Feature/Project Name]

## Overview
[One paragraph summary of what we're building]

## Architecture Decisions
- [Key decision 1 and rationale]
- [Key decision 2 and rationale]

## Task List

### Phase 1: Foundation
- [ ] Task 1: ...
- [ ] Task 2: ...

### Checkpoint: Foundation
- [ ] Tests pass, builds clean

### Phase 2: Core Features
- [ ] Task 3: ...
- [ ] Task 4: ...

### Checkpoint: Core Features
- [ ] End-to-end flow works

### Phase 3: Polish
- [ ] Task 5: ...
- [ ] Task 6: ...

### Checkpoint: Complete
- [ ] All acceptance criteria met
- [ ] Ready for review

## Risks and Mitigations
| Risk | Impact | Mitigation |
|------|--------|------------|
| [Risk] | [High/Med/Low] | [Strategy] |

## Open Questions
- [Question needing human input]

When tasks live in an external tracker, keep the Task List section above as an ordered index of tracker item IDs or links instead of a duplicate checklist.

Parallelization Opportunities

When multiple agents or sessions are available:

  • Safe to parallelize: Independent feature slices, tests for already-implemented features, documentation
  • Must be sequential: Database migrations, shared state changes, dependency chains
  • Needs coordination: Features that share an API contract (define the contract first, then parallelize)

Common Rationalizations

Rationalization Reality
"I'll figure it out as I go" That's how you end up with a tangled mess and rework. 10 minutes of planning saves hours.
"The tasks are obvious" Write them down anyway. Explicit tasks surface hidden dependencies and forgotten edge cases.
"Planning is overhead" Planning is the task. Implementation without a plan is just typing.
"I can hold it all in my head" Context windows are finite. Written plans survive session boundaries and compaction.
"The old tasks/plan.md is stale, I'll just replace it" Unchecked tasks may be mid-build in another session. Overwriting them destroys work state that exists nowhere else. Stop and ask.

Red Flags

  • Starting implementation without a written task list
  • Overwriting a tasks/plan.md or tasks/todo.md that still has unchecked tasks for different work, without asking
  • Writing tasks/todo.md when the project has designated an external tracker (or scattering tasks across both)
  • Tasks that say "implement the feature" without acceptance criteria
  • No verification steps in the plan
  • All tasks are XL-sized
  • No checkpoints between tasks
  • Dependency order isn't considered

Verification

Before starting implementation, confirm:

  • Every task has acceptance criteria
  • Every task has a verification step
  • Task dependencies are identified and ordered correctly
  • Tasks are recorded in the task list target (default tasks/todo.md)
  • No pre-existing incomplete plan was overwritten without explicit user confirmation
  • No task touches more than ~5 files
  • Checkpoints exist between major phases
  • The human has reviewed and approved the plan

See Also

Acceptance criteria are per-task and answer "did we build the right thing?". They sit on top of the project-wide Definition of Done, the standing bar every task clears before it counts as done. See ../../references/definition-of-done.md.

1---
2name: planning-and-task-breakdown
3description: Breaks work into ordered tasks. Use when you have a spec or clear requirements and need to break work into implementable tasks. Use when a task feels too large to start, when you need to estimate scope, or when parallel work is possible.
4---
5 
6# Planning and Task Breakdown
7 
8## Overview
9 
10Decompose work into small, verifiable tasks with explicit acceptance criteria. Good task breakdown is the difference between an agent that completes work reliably and one that produces a tangled mess. Every task should be small enough to implement, test, and verify in a single focused session.
11 
12## When to Use
13 
14- You have a spec and need to break it into implementable units
15- A task feels too large or vague to start
16- Work needs to be parallelized across multiple agents or sessions
17- You need to communicate scope to a human
18- The implementation order isn't obvious
19 
20**When NOT to use:** Single-file changes with obvious scope, or when the spec already contains well-defined tasks.
21 
22## The Planning Process
23 
24### Step 1: Enter Plan Mode
25 
26Before writing any code, operate in read-only mode:
27 
28- Read the spec and relevant codebase sections
29- Identify existing patterns and conventions
30- Map dependencies between components
31- Note risks and unknowns
32 
33**Do NOT write code during planning.** The output is a plan document saved to `tasks/plan.md` and a task list recorded in the task list target (see Output Files; default `tasks/todo.md`), not implementation.
34 
35### Step 2: Identify the Dependency Graph
36 
37Map what depends on what:
38 
39```
40Database schema
41 │
42 ├── API models/types
43 │ │
44 │ ├── API endpoints
45 │ │ │
46 │ │ └── Frontend API client
47 │ │ │
48 │ │ └── UI components
49 │ │
50 │ └── Validation logic
51 │
52 └── Seed data / migrations
53```
54 
55Implementation order follows the dependency graph bottom-up: build foundations first.
56 
57### Step 3: Slice Vertically
58 
59Instead of building all the database, then all the API, then all the UI — build one complete feature path at a time:
60 
61**Bad (horizontal slicing):**
62```
63Task 1: Build entire database schema
64Task 2: Build all API endpoints
65Task 3: Build all UI components
66Task 4: Connect everything
67```
68 
69**Good (vertical slicing):**
70```
71Task 1: User can create an account (schema + API + UI for registration)
72Task 2: User can log in (auth schema + API + UI for login)
73Task 3: User can create a task (task schema + API + UI for creation)
74Task 4: User can view task list (query + API + UI for list view)
75```
76 
77Each vertical slice delivers working, testable functionality.
78 
79### Step 4: Write Tasks
80 
81Each task follows this structure, whether it lands in the markdown task list or as an item in an external tracker (see Output Files):
82 
83```markdown
84## Task [N]: [Short descriptive title]
85 
86**Description:** One paragraph explaining what this task accomplishes.
87 
88**Acceptance criteria:**
89- [ ] [Specific, testable condition]
90- [ ] [Specific, testable condition]
91 
92**Verification:**
93- [ ] Tests pass: [the repository's focused-test command]
94- [ ] Build succeeds: [the repository's build command]
95- [ ] Manual check: [description of what to verify]
96 
97**Dependencies:** [Task numbers this depends on, or "None"]
98 
99**Files likely touched:**
100- `src/path/to/file.ts`
101- `tests/path/to/test.ts`
102 
103**Estimated scope:** [Small: 1-2 files | Medium: 3-5 files | Large: 5+ files]
104```
105 
106### Step 5: Order and Checkpoint
107 
108Arrange tasks so that:
109 
1101. Dependencies are satisfied (build foundation first)
1112. Each task leaves the system in a working state
1123. Verification checkpoints occur after every 2-3 tasks
1134. High-risk tasks are early (fail fast)
114 
115Add explicit checkpoints to the task list target:
116 
117```markdown
118## Checkpoint: After Tasks 1-3
119- [ ] All tests pass
120- [ ] Application builds without errors
121- [ ] Core user flow works end-to-end
122- [ ] Review with human before proceeding
123```
124 
125## Task Sizing Guidelines
126 
127| Size | Files | Scope | Example |
128|------|-------|-------|---------|
129| **XS** | 1 | Single function or config change | Add a validation rule |
130| **S** | 1-2 | One component or endpoint | Add a new API endpoint |
131| **M** | 3-5 | One feature slice | User registration flow |
132| **L** | 5-8 | Multi-component feature | Search with filtering and pagination |
133| **XL** | 8+ | **Too large — break it down further** | — |
134 
135If a task is L or larger, it should be broken into smaller tasks. An agent performs best on S and M tasks.
136 
137**When to break a task down further:**
138- It would take more than one focused session (roughly 2+ hours of agent work)
139- You cannot describe the acceptance criteria in 3 or fewer bullet points
140- It touches two or more independent subsystems (e.g., auth and billing)
141- You find yourself writing "and" in the task title (a sign it is two tasks)
142 
143## Output Files
144 
145- **Plan document:** Save the implementation plan to `tasks/plan.md`. This is always a markdown file — design decisions, risks, and open questions don't map cleanly onto individual tracker issues.
146- **Task list:** Record each task in the **task list target** (defined below).
147 
148Create the `tasks/` directory if it does not exist.
149 
150**Never overwrite an incomplete plan.** Before writing `tasks/plan.md` or `tasks/todo.md`, check whether they already exist and still contain unchecked tasks:
151 
152- Same work being replanned (the user asked to revise or extend this plan) → update the existing files in place.
153- Different work → **stop and ask.** The unchecked tasks may be mid-build in another session. Do not delete, overwrite, or rename the existing files on your own; present the conflict and let the user decide (finish the old plan first, explicitly discard it, or tell you where the new plan should go).
154 
155The same rule applies to an external task list target: never bulk-close or delete another plan's open tracker items to make room for new ones.
156 
157### Task List Target
158 
159The task list target is where tasks and checkpoints are recorded. It is defined once, here; every other reference in this skill defers to it.
160 
161- **Default: a checklist-style markdown file at `tasks/todo.md`.** This is the convention the `/build` command and other downstream tooling expect. Use it unless the project says otherwise.
162- **External tracker:** if the project's agent rules (`CLAUDE.md`, `AGENTS.md`, etc.) or the user designate an issue tracker (e.g. GitHub Issues, Jira, Linear, `bd`/beads), create one tracker item per task instead of writing `tasks/todo.md`. Map the Step 4 structure onto the tracker's fields: acceptance criteria and verification steps in the item body, dependencies via the tracker's linking mechanism (`bd dep add`, "blocked by", etc.). Record Step 5 checkpoints as tracker items too, or as a checklist in the plan document if the tracker has no natural equivalent.
163 
164When using an external tracker, note it in `tasks/plan.md` (e.g. "Tasks tracked in Linear project FOO") so downstream steps and future sessions know where to look, and keep the plan document's Task List section as an ordered index of tracker item IDs or links rather than a duplicate checklist.
165 
166## Plan Document Template
167 
168```markdown
169# Implementation Plan: [Feature/Project Name]
170 
171## Overview
172[One paragraph summary of what we're building]
173 
174## Architecture Decisions
175- [Key decision 1 and rationale]
176- [Key decision 2 and rationale]
177 
178## Task List
179 
180### Phase 1: Foundation
181- [ ] Task 1: ...
182- [ ] Task 2: ...
183 
184### Checkpoint: Foundation
185- [ ] Tests pass, builds clean
186 
187### Phase 2: Core Features
188- [ ] Task 3: ...
189- [ ] Task 4: ...
190 
191### Checkpoint: Core Features
192- [ ] End-to-end flow works
193 
194### Phase 3: Polish
195- [ ] Task 5: ...
196- [ ] Task 6: ...
197 
198### Checkpoint: Complete
199- [ ] All acceptance criteria met
200- [ ] Ready for review
201 
202## Risks and Mitigations
203| Risk | Impact | Mitigation |
204|------|--------|------------|
205| [Risk] | [High/Med/Low] | [Strategy] |
206 
207## Open Questions
208- [Question needing human input]
209```
210 
211When tasks live in an external tracker, keep the Task List section above as an ordered index of tracker item IDs or links instead of a duplicate checklist.
212 
213## Parallelization Opportunities
214 
215When multiple agents or sessions are available:
216 
217- **Safe to parallelize:** Independent feature slices, tests for already-implemented features, documentation
218- **Must be sequential:** Database migrations, shared state changes, dependency chains
219- **Needs coordination:** Features that share an API contract (define the contract first, then parallelize)
220 
221## Common Rationalizations
222 
223| Rationalization | Reality |
224|---|---|
225| "I'll figure it out as I go" | That's how you end up with a tangled mess and rework. 10 minutes of planning saves hours. |
226| "The tasks are obvious" | Write them down anyway. Explicit tasks surface hidden dependencies and forgotten edge cases. |
227| "Planning is overhead" | Planning is the task. Implementation without a plan is just typing. |
228| "I can hold it all in my head" | Context windows are finite. Written plans survive session boundaries and compaction. |
229| "The old `tasks/plan.md` is stale, I'll just replace it" | Unchecked tasks may be mid-build in another session. Overwriting them destroys work state that exists nowhere else. Stop and ask. |
230 
231## Red Flags
232 
233- Starting implementation without a written task list
234- Overwriting a `tasks/plan.md` or `tasks/todo.md` that still has unchecked tasks for different work, without asking
235- Writing `tasks/todo.md` when the project has designated an external tracker (or scattering tasks across both)
236- Tasks that say "implement the feature" without acceptance criteria
237- No verification steps in the plan
238- All tasks are XL-sized
239- No checkpoints between tasks
240- Dependency order isn't considered
241 
242## Verification
243 
244Before starting implementation, confirm:
245 
246- [ ] Every task has acceptance criteria
247- [ ] Every task has a verification step
248- [ ] Task dependencies are identified and ordered correctly
249- [ ] Tasks are recorded in the task list target (default `tasks/todo.md`)
250- [ ] No pre-existing incomplete plan was overwritten without explicit user confirmation
251- [ ] No task touches more than ~5 files
252- [ ] Checkpoints exist between major phases
253- [ ] The human has reviewed and approved the plan
254 
255## See Also
256 
257Acceptance criteria are per-task and answer "did we build the right thing?". They sit on top of the project-wide Definition of Done, the standing bar every task clears before it counts as done. See `../../references/definition-of-done.md`.
258 

Discussion

Alternatives

Also in Roadmap & prioritiesSee all 277 in Product →