planning-and-task-breakdown
addyosmani/agent-skills
Разбейте работу на небольшие, поддающиеся проверке задачи с четко сформулированными критериями приемки, упорядоченные по зависимостям и разбитые по вертикали для надежной реализации.
...Расширить всеПланирование и разбивка задач
Обзор
Разбейте работу на небольшие, поддающиеся проверке задачи с четко сформулированными критериями приемки. Правильное разбиение на задачи — это то, что отличает агента, надежно выполняющего работу, от того, кто создает беспорядочный хаос. Каждая задача должна быть достаточно небольшой, чтобы ее можно было реализовать, протестировать и проверить за один сеанс, посвященный исключительно ей.
Когда использовать
- У вас есть техническое задание, и вам нужно разбить его на реализуемые части
- Задача кажется слишком большой или неопределённой, чтобы приступить к ней
- Работа должна быть распределена между несколькими агентами или сессиями
- Вам нужно донести объем работы до человека
- Порядок реализации не очевиден
Когда НЕ следует использовать: изменения в одном файле с очевидным объемом работ или когда спецификация уже содержит четко определенные задачи.
Процесс планирования
Шаг 1: Переход в режим планирования
Прежде чем писать какой-либо код, работайте в режиме «только для чтения»:
- Ознакомьтесь со спецификацией и соответствующими разделами кодовой базы
- Определите существующие шаблоны и соглашения
- Отобразите зависимости между компонентами
- Отметьте риски и неизвестные факторы
НЕ пишите код на этапе планирования. Результатом этой работы является документ с планом, а не реализация.
Шаг 2: Определите граф зависимостей
Отобразите, что от чего зависит:
Схема базы данных
│
├── Модели/типы API
│ │
│ ├── Конечные точки API
│ │ │
│ │ └── Клиент API интерфейса пользователя
│ │ │
│ │ └── Компоненты пользовательского интерфейса
│ │
│ └── Логика валидации
│
└── Исходные данные / миграции
Порядок реализации следует графику зависимостей снизу вверх: сначала создаются основы.
Шаг 3: Вертикальное разделение
Вместо того чтобы сначала создавать всю базу данных, затем весь API, а потом весь пользовательский интерфейс — создавайте по одному полному функциональному пути за раз:
Неправильно (горизонтальное разделение):
Задача 1: Создать всю схему базы данных
Задача 2: Создать все конечные точки API
Задача 3: Создать все компоненты пользовательского интерфейса
Задача 4: Связать всё воедино
Правильно (вертикальное разделение):
Задача 1: Пользователь может создать учётную запись (схема + API + пользовательский интерфейс для регистрации)
Задача 2: Пользователь может войти в систему (схема аутентификации + API + пользовательский интерфейс для входа)
Задача 3: Пользователь может создать задачу (схема задачи + API + пользовательский интерфейс для создания)
Задача 4: Пользователь может просматривать список задач (запрос + API + пользовательский интерфейс для просмотра списка)
Каждый вертикальный срез обеспечивает рабочую, тестируемую функциональность.
Шаг 4: Написание задач
Каждая задача имеет следующую структуру:
## Задача [N]: [Краткое описательное название]
**Описание:** Один абзац, объясняющий, что делает эта задача.
**Критерии приемки:**
- [ ] [Конкретное, тестируемое условие]
- [ ] [Конкретное, тестируемое условие]
**Проверка:**
- [ ] Тесты прошли успешно: `npm test -- --grep "feature-name"`
- [ ] Сборка завершилась успешно: `npm run build`
- [ ] Ручная проверка: [описание того, что необходимо проверить]
**Зависимости:** [Номера задач, от которых зависит данная задача, или «Нет»]
**Файлы, которые, вероятно, будут затронуты:**
- `src/path/to/file.ts`
- `tests/path/to/test.ts`
**Предполагаемый объём:** [Небольшой: 1–2 файла | Средний: 3–5 файлов | Большой: 5 и более файлов]
Шаг 5: Порядок выполнения и контрольные точки
Расположите задачи таким образом, чтобы:
- были соблюдены зависимости (сначала создайте основу)
- Каждая задача оставляла систему в рабочем состоянии
- Контрольные точки проверки устанавливались после каждых 2–3 задач
- Задачи с высоким риском выполнялись на ранних этапах (быстрое выявление неисправностей)
Добавьте явные контрольные точки:
## Контрольная точка: после задач 1–3
- [ ] Все тесты пройдены
- [ ] Приложение собирается без ошибок
- [ ] Основной пользовательский поток работает от начала до конца
- [ ] Перед продолжением необходимо провести проверку с участием человека
Рекомендации по определению объёма задач
| Размер | Файлы | Объем | Пример |
|---|---|---|---|
| XS | 1 | Изменение одной функции или параметра конфигурации | Добавить правило проверки |
| S | 1–2 | Один компонент или конечная точка | Добавить новую конечную точку API |
| M | 3–5 | Один фрагмент функциональности | Поток регистрации пользователя |
| L | 5–8 | Многокомпонентная функция | Поиск с фильтрацией и пагинацией |
| XL | 8+ | Слишком большой — разбить на более мелкие части | — |
Если задача имеет размер L или больше, её следует разбить на более мелкие задачи. Агент наиболее эффективно справляется с задачами размера S и M.
Когда следует разбивать задачу на более мелкие части:
- На её выполнение потребуется более одной сессии сосредоточенной работы (примерно 2+ часа работы агента)
- Вы не можете описать критерии приемки в 3 или менее пунктах
- Она затрагивает две или более независимых подсистем (например, аутентификацию и биллинговую систему)
- Вы замечаете, что в названии задачи используете союз «и» (это признак того, что речь идет о двух задачах)
Шаблон документа планирования
# План реализации: [Название функции/проекта]
## Обзор
[Один абзац с кратким описанием того, что мы создаём]
## Архитектурные решения
- [Ключевое решение 1 и обоснование]
- [Ключевое решение 2 и обоснование]
## Список задач
### Этап 1: Основа
- [ ] Задача 1: ...
- [ ] Задача 2: ...
### Контрольная точка: Основа
- [ ] Тесты пройдены, сборка прошла успешно
### Этап 2: Основные функции
- [ ] Задача 3: ...
- [ ] Задача 4: ...
### Контрольная точка: Основные функции
- [ ] Сквозной рабочий процесс работает
### Этап 3: Доработка
- [ ] Задача 5: ...
- [ ] Задача 6: ...
### Контрольная точка: Завершение
- [ ] Все критерии приёмки выполнены
- [ ] Готово к рецензированию
## Риски и меры по их снижению
| Риск | Последствия | Меры по снижению |
|------|--------|------------|
| [Риск] | [Высокий/Средний/Низкий] | [Стратегия] |
## Открытые вопросы
- [Вопрос, требующий участия человека]
Возможности параллелизации
При наличии нескольких агентов или сеансов:
- Безопасно для параллелизации: независимые фрагменты функциональности, тесты для уже реализованных функций, документация
- Должно выполняться последовательно: миграции баз данных, изменения общего состояния, цепочки зависимостей
- Требует координации: функции, использующие общий контракт API (сначала определите контракт, затем выполняйте параллелизацию)
Распространённые обоснования
| Обоснование | Реальность |
|---|---|
| «Я разберусь по ходу дела» | Именно так вы в итоге получаете запутанный клубок проблем и переделку. 10 минут планирования экономят часы. |
| «Задачи очевидны» | Все равно запишите их. Четко сформулированные задачи выявляют скрытые зависимости и забытые крайние случаи. |
| «Планирование — это лишняя трата времени» | Планирование — это и есть задача. Реализация без плана — это просто набор текста. |
| «Я всё могу удержать в голове» | Объём памяти ограничен. Записанные планы сохраняются даже после завершения сеанса и очистки памяти. |
Красные флажки
- Начало реализации без письменного списка задач
- Задачи, в которых говорится «реализовать функцию» без критериев приемки
- Отсутствие этапов проверки в плане
- Все задачи имеют размер XL
- Отсутствие контрольных точек между задачами
- Порядок зависимостей не учтён
Верификация
Перед началом реализации убедитесь, что:
- Каждая задача имеет критерии приемки
- Каждая задача имеет этап проверки
- Зависимости между задачами определены и упорядочены правильно
- Ни одна задача не затрагивает более ~5 файлов
- Между основными этапами предусмотрены контрольные точки
- Человек проверил и утвердил план
См. также
Критерии приемки определяются для каждой задачи и отвечают на вопрос «создали ли мы то, что нужно?». Они дополняют общепроектное «Определение завершенности» — постоянный порог, который каждая задача должна преодолеть, прежде чем она будет считаться завершённой. См. references/definition-of-done.md.
---
name: planning-and-task-breakdown
description: Decompose work into small, verifiable tasks with explicit acceptance criteria, ordered by dependencies and sliced vertically for reliable implementation.
---
# 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, 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:
```markdown
## Task [N]: [Short descriptive title]
**Description:** One paragraph explaining what this task accomplishes.
**Acceptance criteria:**
- [ ] [Specific, testable condition]
- [ ] [Specific, testable condition]
**Verification:**
- [ ] Tests pass: `npm test -- --grep "feature-name"`
- [ ] Build succeeds: `npm run build`
- [ ] 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:
```markdown
## 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)
## Plan Document Template
```markdown
# 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]
```
## 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. |
## Red Flags
- Starting implementation without a written task list
- 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
- [ ] 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`.
Все файлы
0 файловУстановить planning-and-task-breakdown
Скачайте файлы навыков и распакуйте их в каталог .claude/skills/.
Скачать ZIPКлонируйте репозиторий и скопируйте файлы навыка в свой проект.
git clone https://github.com/addyosmani/agent-skills/tree/main/skills/planning-and-task-breakdown # Copy SKILL.md to your .claude/skills/ directory
Копировать





Дом
