planning-and-task-breakdown

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.

By addyosmani · 35,955 installs

npx skills add addyosmani/agent-skills --skill planning-and-task-breakdown

Source repository · Upstream listing

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: 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): Good (vertical slicing): 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): 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: 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 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 .