Planning And Task Breakdown
Addy OsmaniCommunityCreated by Addy Osmani
- Skill
- Guidelines
- Software development
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a rigorous framework for planning software development projects. It emphasizes vertical slicing of features, dependency mapping, and the creation of explicit, testable tasks. By requiring a formal plan document and a structured task list before any code is written, it helps agents avoid common pitfalls like scope creep, tangled dependencies, and incomplete verification. The process ensures that work is broken down into small, session-sized units that maintain system stability throughout the development lifecycle.
What it does
- Decomposes large, vague requirements into small, implementable tasks.
- Maps dependency graphs to determine the correct implementation order.
- Promotes vertical slicing to ensure each task delivers functional, testable value.
- Standardizes task structure with acceptance criteria and verification steps.
- Establishes checkpoints to ensure system integrity during development.
- Provides guidelines for managing plan documents and task lists without destroying existing work.
When to use it
- When you have a project specification but the implementation path is unclear.
- When a task feels too large or complex to start immediately.
- When you need to estimate the scope of a feature or project.
- When work needs to be parallelized across multiple agents or sessions.
- When you need to communicate project scope and progress to a human.
Advantages
- Reduces rework by identifying dependencies and risks early.
- Ensures every task is testable and verifiable.
- Prevents the loss of work state by enforcing strict rules on plan management.
- Improves reliability by keeping tasks small and focused.
- Facilitates better collaboration and human oversight through clear documentation.
Usage examples
- “I need to add a user authentication system. Can you plan this out?”
- The agent will read the requirements, create a tasks/plan.md file with an architecture overview, and generate a tasks/todo.md file with ordered, vertical-slice tasks for the database, API, and UI.
- “This feature is too big to start. Help me break it down.”
- The agent will analyze the feature, identify the dependency graph, and propose a series of small, S or M-sized tasks with acceptance criteria and verification steps.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/addyosmani/planning-and-task-breakdown/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip planning-and-task-breakdown.zip -d .agents/skills
Documentation by Addy Osmani
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 / migrationsImplementation 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 everythingGood (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:
Dependencies are satisfied (build foundation first)
Each task leaves the system in a working state
Verification checkpoints occur after every 2-3 tasks
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 proceedingTask 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/buildcommand 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 writingtasks/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.mdortasks/todo.mdthat still has unchecked tasks for different work, without askingWriting
tasks/todo.mdwhen 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.
Files
- ATTRIBUTION.mdAdded by AutoGineer895 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md10.3 KiB
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Addy Osmani
- Publisher
- Addy Osmani (Community)
- Source
- addyosmani/agent-skills · skills/planning-and-task-breakdown · commit 301b02b
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Addy Osmani or Addy Osmani.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download planning-and-task-breakdown.zip