@jakerdy/agentica 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +291 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +27 -0
- package/globals/anti-spaghetti.md +65 -0
- package/globals/lang-python.md +105 -0
- package/globals/lang-typescript.md +61 -0
- package/globals/use-agentica.md +127 -0
- package/package.json +55 -0
- package/prompts/architect.prompt.md +302 -0
- package/prompts/change.prompt.md +915 -0
- package/prompts/create.prompt.md +953 -0
- package/prompts/implement.prompt.md +389 -0
- package/prompts/init.prompt.md +123 -0
- package/prompts/readme.prompt.md +355 -0
- package/prompts/refactor.prompt.md +712 -0
- package/prompts/reverse.prompt.md +777 -0
- package/prompts/tasks.prompt.md +1041 -0
- package/prompts/validate.prompt.md +480 -0
- package/stacks/python/cli/product.md +41 -0
- package/stacks/python/cli/structure.md +40 -0
- package/stacks/python/cli/tech.md +29 -0
- package/stacks/python/gui/product.md +41 -0
- package/stacks/python/gui/structure.md +41 -0
- package/stacks/python/gui/tech.md +29 -0
- package/stacks/python/lib/product.md +41 -0
- package/stacks/python/lib/structure.md +34 -0
- package/stacks/python/lib/tech.md +30 -0
- package/stacks/python/monorepo/product.md +41 -0
- package/stacks/python/monorepo/structure.md +29 -0
- package/stacks/python/monorepo/tech.md +30 -0
- package/stacks/typescript/cli/product.md +41 -0
- package/stacks/typescript/cli/structure.md +34 -0
- package/stacks/typescript/cli/tech.md +31 -0
- package/stacks/typescript/lib/product.md +41 -0
- package/stacks/typescript/lib/structure.md +33 -0
- package/stacks/typescript/lib/tech.md +31 -0
- package/stacks/typescript/monorepo/product.md +41 -0
- package/stacks/typescript/monorepo/structure.md +34 -0
- package/stacks/typescript/monorepo/tech.md +47 -0
- package/stacks/typescript/server/product.md +41 -0
- package/stacks/typescript/server/structure.md +35 -0
- package/stacks/typescript/server/tech.md +30 -0
- package/stacks/typescript/spa/product.md +41 -0
- package/stacks/typescript/spa/structure.md +36 -0
- package/stacks/typescript/spa/tech.md +29 -0
- package/templates/architecture/AR-0000 - /320/220/321/200/321/205/320/270/321/202/320/265/320/272/321/202/321/203/321/200/320/260 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX.md" +136 -0
- package/templates/change/CH-0000 - /320/230/320/267/320/274/320/265/320/275/320/265/320/275/320/270/320/265 /320/262 /321/204/320/270/321/207/320/265 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/320/265 XXX.md" +33 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/product.md" +121 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/tasks.md" +38 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/tech.md" +155 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/validation.md" +31 -0
|
@@ -0,0 +1,1041 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentica.tasks
|
|
3
|
+
description: Декомпозиция спецификации фичи на фазы реализации и атомарные задачи
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Ввод пользователя
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
$ARGUMENTS
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Ты **ОБЯЗАН** учесть ввод пользователя (аргументы и контекст) перед тем как продолжить.
|
|
13
|
+
|
|
14
|
+
## Цель и принципы работы
|
|
15
|
+
|
|
16
|
+
Твоя задача — декомпозировать готовую спецификацию фичи (FT-XXXX) на **реализуемый план работ**.
|
|
17
|
+
Работай строго линейно: **Валидация → Чтение спеки → Анализ → Планирование фаз → Декомпозиция задач → Валидационные критерии → Пауза для review → Git → Отчёт**.
|
|
18
|
+
|
|
19
|
+
Хороший план задач — это не просто "список дел", а **пошаговая инструкция для агента-разработчика**, которая обеспечивает:
|
|
20
|
+
- **Правильный порядок:** Нельзя сделать B до того, как сделан A.
|
|
21
|
+
- **Атомарность:** Каждая задача — это 1 файл или группа связанных изменений.
|
|
22
|
+
- **Проверяемость:** После каждой задачи должно быть понятно, что считать "готово".
|
|
23
|
+
- **Фазовость:** Код должен оставаться в валидном состоянии после каждой фазы.
|
|
24
|
+
|
|
25
|
+
**Ключевые принципы:**
|
|
26
|
+
1. **Incremental Delivery:** Код работоспособен после каждой фазы, не только в конце.
|
|
27
|
+
2. **Memory для структуры:** Используй `memory` для накопления фактов о зависимостях между задачами.
|
|
28
|
+
3. **Graph of Dependencies:** Явно обозначай зависимости между фазами (диаграмма).
|
|
29
|
+
4. **Test-Driven Planning:** Каждая фаза должна завершаться задачей "написать тесты для фазы N".
|
|
30
|
+
5. **Checkpoint перед реализацией:** Пользователь должен одобрить план до того, как запустится `agentica.implement`.
|
|
31
|
+
|
|
32
|
+
### Глобальные запреты (Safety Guards)
|
|
33
|
+
|
|
34
|
+
Останови выполнение и не продолжай работу, если:
|
|
35
|
+
1. Спецификация FT-XXXX **не существует** (остановись и предложи пользователю воспользоваться агентом: `agentica.create`).
|
|
36
|
+
2. Спецификация FT-XXXX **неполная** (`product.md` или `tech.md` отсутствуют или содержат только заглушки).
|
|
37
|
+
3. Запрос требует **создания новой фичи**, а не планирования существующей (остановись и предложи пользователю воспользоваться агентом: `agentica.create`).
|
|
38
|
+
4. Запрос требует **изменения существующего кода**, а не добавления нового (остановись и предложи пользователю воспользоваться агентом: `agentica.change` → `agentica.tasks` для CH-XXXX).
|
|
39
|
+
5. Запрос требует **написания кода** напрямую (сначала нужен план через `agentica.tasks`, затем `agentica.implement`).
|
|
40
|
+
6. `tasks.md` уже заполнен и пользователь не просил его переписать (спроси подтверждение на переписывание).
|
|
41
|
+
|
|
42
|
+
В случае остановки: объясни причину и предложи корректную команду.
|
|
43
|
+
|
|
44
|
+
## Топология и размещение файлов
|
|
45
|
+
|
|
46
|
+
Спецификация фичи состоит из набора документов в директории `.agentica/features/FT-XXXX - <Название>/`:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
FT-XXXX - <Название фичи>/
|
|
50
|
+
├── product.md # Продуктовое описание (ЧТО и ЗАЧЕМ) — уже создан
|
|
51
|
+
├── tech.md # Техническое решение (КАК) — уже создан
|
|
52
|
+
├── research.md # Исследование библиотек (опционально) — может быть создан
|
|
53
|
+
├── tasks.md # Задачи для реализации — ЗАПОЛНЯЕТСЯ ЭТОЙ КОМАНДОЙ
|
|
54
|
+
└── validation.md # Критерии приемки — ДОПОЛНЯЕТСЯ ЭТОЙ КОМАНДОЙ
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Git workflow:**
|
|
58
|
+
- На момент выполнения команды уже существует ветка вида `<scope-id>/FT-XXXX-<slug>`.
|
|
59
|
+
- Все изменения делаются в этой ветке.
|
|
60
|
+
- После завершения работы делается коммит с сообщением: `chore(FT-XXXX): add implementation tasks and validation criteria`.
|
|
61
|
+
|
|
62
|
+
## Фаза 1: Валидация контекста и определение скоупа
|
|
63
|
+
|
|
64
|
+
### Шаг 1.1: Поиск спецификации FT-XXXX
|
|
65
|
+
|
|
66
|
+
Определи номер целевой спецификации:
|
|
67
|
+
|
|
68
|
+
**Вариант A: Явное указание в аргументах**
|
|
69
|
+
```text
|
|
70
|
+
/agentica.tasks --id FT-0012
|
|
71
|
+
```
|
|
72
|
+
→ Используй `FT-0012`
|
|
73
|
+
|
|
74
|
+
**Вариант B: Из контекста ветки**
|
|
75
|
+
1. Прочитай текущую git ветку через `run_in_terminal`: `git branch --show-current`
|
|
76
|
+
2. Извлеки номер из паттерна `<scope-id>/FT-XXXX-<slug>` (например, `api-client/FT-0012-batch-upload` → `FT-0012`)
|
|
77
|
+
|
|
78
|
+
**Вариант C: Из открытого файла**
|
|
79
|
+
1. Проверь путь открытого файла в editorContext.
|
|
80
|
+
2. Если он содержит `.agentica/features/FT-XXXX`, извлеки номер.
|
|
81
|
+
|
|
82
|
+
**Вариант D: Интерактивный выбор**
|
|
83
|
+
Если контекста недостаточно:
|
|
84
|
+
1. Просканируй `.agentica/features/` (или `./packages/<name>/.agentica/features/`).
|
|
85
|
+
2. Найди все директории вида `FT-XXXX - <название>`.
|
|
86
|
+
3. Задай вопрос через интсрумент `ask_questions` со списком найденных спек.
|
|
87
|
+
|
|
88
|
+
### Шаг 1.2: Определение скоупа проекта
|
|
89
|
+
|
|
90
|
+
1. Прочитай `structure.md` из корня проекта.
|
|
91
|
+
2. Определи тип проекта: Single-project или Monorepo.
|
|
92
|
+
3. Определи путь к целевой спецификации:
|
|
93
|
+
- **Single-project:** `./.agentica/features/FT-XXXX - <название>/`
|
|
94
|
+
- **Monorepo:** `./packages/<name>/.agentica/features/FT-XXXX - <название>/`
|
|
95
|
+
|
|
96
|
+
### Шаг 1.3: Проверка наличия спецификации
|
|
97
|
+
|
|
98
|
+
Проверь наличие обязательных файлов:
|
|
99
|
+
1. `product.md` — **ОБЯЗАТЕЛЬНО**. Если отсутствует или пустой — STOP (остановись и предложи пользователю воспользоваться агентом: `agentica.create`).
|
|
100
|
+
2. `tech.md` — **ОБЯЗАТЕЛЬНО**. Если отсутствует или пустой — STOP (остановись и предложи пользователю воспользоваться агентом: `agentica.create`).
|
|
101
|
+
3. `research.md` — опционально, но если существует — прочитай.
|
|
102
|
+
4. `tasks.md` — если уже заполнен и пользователь не просил переписать → STOP (спроси подтверждение на переписывание).
|
|
103
|
+
|
|
104
|
+
Если проверка пройдена — переходи к Фазе 2.
|
|
105
|
+
|
|
106
|
+
## Фаза 2: Чтение и анализ спецификации
|
|
107
|
+
|
|
108
|
+
### Шаг 2.1: Чтение продуктовой спецификации (product.md)
|
|
109
|
+
|
|
110
|
+
Прочитай `product.md` полностью и извлеки:
|
|
111
|
+
|
|
112
|
+
**Продуктовый контекст:**
|
|
113
|
+
- Для кого фича? (целевая аудитория)
|
|
114
|
+
- Зачем фича? (продуктовая мотивация)
|
|
115
|
+
- Что должно получиться? (ожидаемый результат)
|
|
116
|
+
|
|
117
|
+
**User Stories:**
|
|
118
|
+
- Список всех пользовательских сценариев
|
|
119
|
+
- Критерии приемки для каждого сценария
|
|
120
|
+
- Приоритеты (если указаны)
|
|
121
|
+
|
|
122
|
+
**Ограничения и риски:**
|
|
123
|
+
- Продуктовые ограничения (производительность, UX требования)
|
|
124
|
+
- Известные риски
|
|
125
|
+
|
|
126
|
+
Сохрани ключевые факты в `memory`:
|
|
127
|
+
```
|
|
128
|
+
category: general
|
|
129
|
+
subject: @<scope>/FT-XXXX--product
|
|
130
|
+
fact: User story: Admin uploads CSV file up to 100MB via CLI command
|
|
131
|
+
citations: product.md:45-52
|
|
132
|
+
reason: This defines scope boundary for implementation. Need to add file size validation task.
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Шаг 2.2: Чтение технической спецификации (tech.md)
|
|
136
|
+
|
|
137
|
+
Прочитай `tech.md` полностью и извлеки:
|
|
138
|
+
|
|
139
|
+
**Архитектурные решения:**
|
|
140
|
+
- Какие модули/компоненты нужно создать?
|
|
141
|
+
- Какие интерфейсы/контракты определены?
|
|
142
|
+
- Какие паттерны используются?
|
|
143
|
+
|
|
144
|
+
**Технический стек:**
|
|
145
|
+
- Какие библиотеки нужно использовать?
|
|
146
|
+
- Какие уже существующие модули нужно интегрировать?
|
|
147
|
+
- Какие технологии применяются?
|
|
148
|
+
|
|
149
|
+
**Структура файлов:**
|
|
150
|
+
- Где должны располагаться новые файлы?
|
|
151
|
+
- Какая иерархия модулей?
|
|
152
|
+
|
|
153
|
+
**Интеграционные точки:**
|
|
154
|
+
- С какими существующими модулями нужна интеграция?
|
|
155
|
+
- Какие API/интерфейсы нужно реализовать?
|
|
156
|
+
|
|
157
|
+
Сохрани структурные факты в `memory`:
|
|
158
|
+
```
|
|
159
|
+
category: file_specific
|
|
160
|
+
subject: @<scope>/FT-XXXX--structure
|
|
161
|
+
fact: BatchUploadService depends on FileValidator and CSVParser modules
|
|
162
|
+
citations: tech.md:123-145
|
|
163
|
+
reason: FileValidator and CSVParser must be implemented before BatchUploadService. Defines task order.
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
category: general
|
|
168
|
+
subject: @<scope>/FT-XXXX--integration
|
|
169
|
+
fact: Must integrate with existing ErrorHandler for consistent error reporting
|
|
170
|
+
citations: tech.md:234-240
|
|
171
|
+
reason: Need task to adapt errors from new modules to ErrorHandler format. Integration point.
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Шаг 2.3: Чтение исследования (research.md, если существует)
|
|
175
|
+
|
|
176
|
+
Если `research.md` существует, прочитай его и извлеки:
|
|
177
|
+
- Какие библиотеки выбраны и почему?
|
|
178
|
+
- Какие альтернативы были отвергнуты?
|
|
179
|
+
- Какие ограничения библиотек нужно учесть?
|
|
180
|
+
|
|
181
|
+
Сохрани в `memory` факты о библиотеках:
|
|
182
|
+
```
|
|
183
|
+
category: general
|
|
184
|
+
subject: @<scope>/FT-XXXX--libraries
|
|
185
|
+
fact: Using papaparse for CSV parsing, max file size limited to 100MB by memory constraints
|
|
186
|
+
citations: research.md:67-89
|
|
187
|
+
reason: Need to add validation task for file size before parsing. Library limitation affects design.
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Шаг 2.4: Чтение контекста проекта/пакета
|
|
191
|
+
|
|
192
|
+
Прочитай дополнительные контекстные файлы из скоупа:
|
|
193
|
+
1. `structure.md` — структура проекта/пакета
|
|
194
|
+
2. `tech.md` (проектный) — общие технические стандарты
|
|
195
|
+
3. `AGENTS.codestyle.md` (если есть в корне) — правила качества кода
|
|
196
|
+
|
|
197
|
+
Извлеки:
|
|
198
|
+
- Где должны располагаться новые файлы? (директории, naming conventions)
|
|
199
|
+
- Какие code style правила нужно соблюдать?
|
|
200
|
+
- Какие testing frameworks используются?
|
|
201
|
+
|
|
202
|
+
## Фаза 3: Анализ зависимостей и определение фаз
|
|
203
|
+
|
|
204
|
+
### Шаг 3.1: Построение графа зависимостей компонентов
|
|
205
|
+
|
|
206
|
+
На основе `tech.md` составь граф зависимостей всех компонентов фичи:
|
|
207
|
+
|
|
208
|
+
**Пример:**
|
|
209
|
+
```
|
|
210
|
+
FileValidator (независимый)
|
|
211
|
+
CSVParser (независимый)
|
|
212
|
+
ErrorAdapter (зависит от existing ErrorHandler)
|
|
213
|
+
BatchUploadService (зависит от FileValidator, CSVParser)
|
|
214
|
+
CLI Command (зависит от BatchUploadService)
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Сохрани граф в `memory`:
|
|
218
|
+
```
|
|
219
|
+
category: general
|
|
220
|
+
subject: @<scope>/FT-XXXX--dependencies
|
|
221
|
+
fact: Dependency chain: FileValidator → BatchUploadService → CLI Command
|
|
222
|
+
citations: tech.md analysis
|
|
223
|
+
reason: Defines implementation order. Cannot implement CLI before BatchUploadService is ready.
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Шаг 3.2: Определение фаз реализации
|
|
227
|
+
|
|
228
|
+
Группируй компоненты в **фазы** по следующим принципам:
|
|
229
|
+
|
|
230
|
+
**Принцип 1: Независимость**
|
|
231
|
+
Компоненты без зависимостей (или зависящие только от существующего кода) идут в **Фазу 1 (Foundation)**.
|
|
232
|
+
|
|
233
|
+
**Принцип 2: Уровни абстракции**
|
|
234
|
+
- Низкоуровневые утилиты и базовые структуры → **Фаза 2 (Core)**
|
|
235
|
+
- Бизнес-логика → **Фаза 3 (Business Logic)**
|
|
236
|
+
- Интеграции и UI/CLI → **Фаза 4 (Integration)**
|
|
237
|
+
|
|
238
|
+
**Принцип 3: Тестируемость**
|
|
239
|
+
Каждая фаза должна быть полностью тестируема независимо от следующих фаз.
|
|
240
|
+
|
|
241
|
+
**Принцип 4: Incremental Delivery**
|
|
242
|
+
После каждой фазы код должен:
|
|
243
|
+
- Компилироваться без ошибок
|
|
244
|
+
- Проходить все существующие тесты
|
|
245
|
+
- Проходить новые тесты для текущей фазы
|
|
246
|
+
|
|
247
|
+
**Стандартная структура фаз:**
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
Phase 1: Foundation (Подготовка инфраструктуры)
|
|
251
|
+
- Создание директорий и базовых файлов
|
|
252
|
+
- Определение интерфейсов и типов
|
|
253
|
+
- Установка и настройка зависимостей
|
|
254
|
+
- Написание каркаса без реализации
|
|
255
|
+
|
|
256
|
+
Phase 2: Core Implementation (Независимые компоненты)
|
|
257
|
+
- Реализация утилит без внешних зависимостей
|
|
258
|
+
- Базовые валидаторы, парсеры, адаптеры
|
|
259
|
+
- Unit-тесты для каждого компонента
|
|
260
|
+
|
|
261
|
+
Phase 3: Business Logic (Основная логика)
|
|
262
|
+
- Реализация сервисов, использующих Core компоненты
|
|
263
|
+
- Оркестрация и координация между модулями
|
|
264
|
+
- Integration тесты для бизнес-логики
|
|
265
|
+
|
|
266
|
+
Phase 4: Integration (Интеграция с системой)
|
|
267
|
+
- CLI команды, HTTP handlers, UI компоненты
|
|
268
|
+
- Интеграция с существующими модулями
|
|
269
|
+
- Error handling и логирование
|
|
270
|
+
- E2E тесты
|
|
271
|
+
|
|
272
|
+
Phase 5: Polish & Documentation (Финализация)
|
|
273
|
+
- Оптимизация производительности
|
|
274
|
+
- Улучшение сообщений об ошибках
|
|
275
|
+
- Написание документации (README, примеры)
|
|
276
|
+
- Обновление CHANGELOG
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Адаптируй эту структуру под специфику фичи. Для простых фич может быть 2-3 фазы, для сложных — 5-7.
|
|
280
|
+
|
|
281
|
+
### Шаг 3.3: Создание диаграммы зависимостей фаз
|
|
282
|
+
|
|
283
|
+
Создай текстовую диаграмму, показывающую порядок выполнения фаз:
|
|
284
|
+
|
|
285
|
+
**Для последовательных фаз:**
|
|
286
|
+
```mermaid
|
|
287
|
+
graph LR
|
|
288
|
+
P1[Phase 1: Foundation] --> P2[Phase 2: Core]
|
|
289
|
+
P2 --> P3[Phase 3: Business Logic]
|
|
290
|
+
P3 --> P4[Phase 4: Integration]
|
|
291
|
+
P4 --> P5[Phase 5: Polish]
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Для частично параллельных фаз:**
|
|
295
|
+
```mermaid
|
|
296
|
+
graph TD
|
|
297
|
+
P1[Phase 1: Foundation] --> P2a[Phase 2a: FileValidator]
|
|
298
|
+
P1 --> P2b[Phase 2b: CSVParser]
|
|
299
|
+
P1 --> P2c[Phase 2c: ErrorAdapter]
|
|
300
|
+
|
|
301
|
+
P2a --> P3[Phase 3: BatchUploadService]
|
|
302
|
+
P2b --> P3
|
|
303
|
+
P2c --> P3
|
|
304
|
+
|
|
305
|
+
P3 --> P4[Phase 4: CLI Command]
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
Сохрани структуру фаз в `memory`:
|
|
309
|
+
```
|
|
310
|
+
category: general
|
|
311
|
+
subject: @<scope>/FT-XXXX--phases
|
|
312
|
+
fact: 5 sequential phases: Foundation → Core → Business → Integration → Polish
|
|
313
|
+
citations: Dependency analysis
|
|
314
|
+
reason: Will structure tasks.md sections. Each phase is a checkpoint with tests.
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
## Фаза 4: Декомпозиция фаз на атомарные задачи
|
|
318
|
+
|
|
319
|
+
### Шаг 4.1: Правила декомпозиции задач
|
|
320
|
+
|
|
321
|
+
**Что такое "атомарная задача"?**
|
|
322
|
+
- **Один артефакт:** Создание/изменение 1 файла или группы тесно связанных файлов.
|
|
323
|
+
- **Одна функция:** Реализация одного метода, класса, функции, или небольшой группы связанных функций.
|
|
324
|
+
- **Проверяемость:** Понятно, когда задача выполнена (файл создан, тесты проходят, функция работает).
|
|
325
|
+
- **Время выполнения:** 10-30 минут на задачу для человека (1-5 минут для агента).
|
|
326
|
+
|
|
327
|
+
**Плохая задача (слишком размыто):**
|
|
328
|
+
```
|
|
329
|
+
- [ ] Реализовать загрузку файлов
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**Хорошая задача (атомарно):**
|
|
333
|
+
```
|
|
334
|
+
- [ ] TSK-2-003: Создать FileValidator с методом validateSize(file: File): boolean
|
|
335
|
+
- [ ] TSK-2-004: Добавить валидацию MIME-типа в FileValidator.validateType(file: File): boolean
|
|
336
|
+
- [ ] TSK-2-005: Написать unit-тесты для FileValidator (5 test cases)
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**Нумерация задач:**
|
|
340
|
+
Формат: `TSK-<PhaseNumber>-<TaskNumber>`
|
|
341
|
+
- `PhaseNumber` — номер фазы (1, 2, 3...)
|
|
342
|
+
- `TaskNumber` — номер задачи внутри фазы (001, 002, 003...)
|
|
343
|
+
|
|
344
|
+
Примеры:
|
|
345
|
+
- `TSK-1-001` — первая задача первой фазы
|
|
346
|
+
- `TSK-3-012` — двенадцатая задача третьей фазы
|
|
347
|
+
|
|
348
|
+
### Шаг 4.2: Типы задач
|
|
349
|
+
|
|
350
|
+
**Тип 1: Создание структуры (Scaffolding)**
|
|
351
|
+
```
|
|
352
|
+
- [ ] TSK-1-001: Создать директорию src/upload/ и src/upload/validators/
|
|
353
|
+
- [ ] TSK-1-002: Создать файл src/upload/types.ts с интерфейсами UploadOptions и UploadResult
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
**Тип 2: Реализация интерфейса/класса**
|
|
357
|
+
```
|
|
358
|
+
- [ ] TSK-2-003: Реализовать класс FileValidator в src/upload/validators/file-validator.ts
|
|
359
|
+
- [ ] TSK-2-004: Реализовать метод validateSize() в FileValidator
|
|
360
|
+
- [ ] TSK-2-005: Реализовать метод validateType() в FileValidator
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**Тип 3: Интеграция модулей**
|
|
364
|
+
```
|
|
365
|
+
- [ ] TSK-3-008: Интегрировать FileValidator в BatchUploadService
|
|
366
|
+
- [ ] TSK-3-009: Добавить обработку ошибок валидации через ErrorHandler
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
**Тип 4: Тестирование**
|
|
370
|
+
```
|
|
371
|
+
- [ ] TSK-2-010: Написать unit-тесты для FileValidator (5 test cases: size ok, size exceeded, valid MIME, invalid MIME, edge cases)
|
|
372
|
+
- [ ] TSK-3-015: Написать integration-тесты для BatchUploadService (3 scenarios: success, validation error, parser error)
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
**Тип 5: Документация**
|
|
376
|
+
```
|
|
377
|
+
- [ ] TSK-5-020: Добавить JSDoc комментарии для публичного API BatchUploadService
|
|
378
|
+
- [ ] TSK-5-021: Создать примеры использования в docs/examples/batch-upload.md
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**Тип 6: Git Checkpoint**
|
|
382
|
+
```
|
|
383
|
+
- [ ] TSK-2-011: Git commit: "feat(upload): add FileValidator with size and type validation"
|
|
384
|
+
- [ ] TSK-3-016: Git commit: "feat(upload): implement BatchUploadService with error handling"
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Шаг 4.3: Декомпозиция каждой фазы
|
|
388
|
+
|
|
389
|
+
Для каждой фазы:
|
|
390
|
+
|
|
391
|
+
1. **Составь список артефактов:**
|
|
392
|
+
- Какие файлы нужно создать?
|
|
393
|
+
- Какие интерфейсы/классы/функции реализовать?
|
|
394
|
+
|
|
395
|
+
2. **Определи порядок реализации:**
|
|
396
|
+
- Какие компоненты независимы (можно делать параллельно)?
|
|
397
|
+
- Какие зависят друг от друга (строгий порядок)?
|
|
398
|
+
|
|
399
|
+
3. **Добавь задачи на тестирование:**
|
|
400
|
+
- После каждого компонента — unit-тесты
|
|
401
|
+
- В конце фазы — integration/e2e тесты
|
|
402
|
+
|
|
403
|
+
4. **Добавь Git checkpoint:**
|
|
404
|
+
- В конце фазы — коммит с описанием сделанного
|
|
405
|
+
|
|
406
|
+
**Пример декомпозиции Phase 2 (Core Implementation):**
|
|
407
|
+
|
|
408
|
+
Компоненты Phase 2: FileValidator, CSVParser
|
|
409
|
+
|
|
410
|
+
```markdown
|
|
411
|
+
## Phase 2: Core Implementation (Независимые компоненты)
|
|
412
|
+
|
|
413
|
+
**Checkpoint:** После этой фазы: FileValidator и CSVParser полностью реализованы и протестированы, готовы к использованию в BatchUploadService.
|
|
414
|
+
|
|
415
|
+
### FileValidator
|
|
416
|
+
|
|
417
|
+
- [ ] TSK-2-001: Создать src/upload/validators/file-validator.ts с классом FileValidator
|
|
418
|
+
- [ ] TSK-2-002: Реализовать конструктор FileValidator(options: ValidatorOptions)
|
|
419
|
+
- [ ] TSK-2-003: Реализовать метод validateSize(file: File): ValidationResult
|
|
420
|
+
- [ ] TSK-2-004: Реализовать метод validateType(file: File): ValidationResult
|
|
421
|
+
- [ ] TSK-2-005: Реализовать метод validate(file: File): ValidationResult (объединяет все проверки)
|
|
422
|
+
- [ ] TSK-2-006: Написать unit-тесты для FileValidator (tests/upload/validators/file-validator.test.ts):
|
|
423
|
+
- Test: validateSize возвращает success для файла 50MB (лимит 100MB)
|
|
424
|
+
- Test: validateSize возвращает error для файла 150MB (лимит 100MB)
|
|
425
|
+
- Test: validateType возвращает success для text/csv
|
|
426
|
+
- Test: validateType возвращает error для application/json
|
|
427
|
+
- Test: validate возвращает error если хотя бы одна проверка failed
|
|
428
|
+
|
|
429
|
+
### CSVParser
|
|
430
|
+
|
|
431
|
+
- [ ] TSK-2-007: Создать src/upload/parsers/csv-parser.ts с классом CSVParser
|
|
432
|
+
- [ ] TSK-2-008: Реализовать конструктор CSVParser(options: ParserOptions)
|
|
433
|
+
- [ ] TSK-2-009: Реализовать метод parse(content: string): ParseResult<Row[]>
|
|
434
|
+
- [ ] TSK-2-010: Добавить обработку ошибок парсинга (malformed CSV, encoding issues)
|
|
435
|
+
- [ ] TSK-2-011: Написать unit-тесты для CSVParser (tests/upload/parsers/csv-parser.test.ts):
|
|
436
|
+
- Test: parse возвращает массив объектов для валидного CSV
|
|
437
|
+
- Test: parse обрабатывает CSV с quoted strings
|
|
438
|
+
- Test: parse возвращает ошибку для malformed CSV
|
|
439
|
+
- Test: parse корректно определяет delimiter (comma vs semicolon)
|
|
440
|
+
- Test: parse обрабатывает empty файл
|
|
441
|
+
|
|
442
|
+
### Checkpoint
|
|
443
|
+
|
|
444
|
+
- [ ] TSK-2-012: Проверить что все тесты фазы 2 проходят: `bun test -- tests/upload/validators/ tests/upload/parsers/`
|
|
445
|
+
- [ ] TSK-2-013: Git commit: "feat(upload): implement FileValidator and CSVParser with full test coverage"
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### Шаг 4.4: Сохранение структуры задач в Memory
|
|
449
|
+
|
|
450
|
+
Для каждой фазы сохрани в `memory` список задач:
|
|
451
|
+
|
|
452
|
+
```
|
|
453
|
+
category: general
|
|
454
|
+
subject: @<scope>/FT-XXXX--phase2-tasks
|
|
455
|
+
fact: Phase 2 has 13 tasks: FileValidator (6), CSVParser (5), Checkpoint (2)
|
|
456
|
+
citations: Task breakdown analysis
|
|
457
|
+
reason: Will be used for progress tracking in implement phase. Each task is atomic unit.
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
## Фаза 5: Заполнение tasks.md
|
|
461
|
+
|
|
462
|
+
### Шаг 5.1: Чтение шаблона tasks.md
|
|
463
|
+
|
|
464
|
+
Прочитай шаблон из `.agentica/templates/feature/FT-0000 - Название фичи или модуля XXX/tasks.md`.
|
|
465
|
+
|
|
466
|
+
### Шаг 5.2: Структура документа tasks.md
|
|
467
|
+
|
|
468
|
+
Документ состоит из следующих разделов:
|
|
469
|
+
|
|
470
|
+
```markdown
|
|
471
|
+
# FT-XXXX - Список задач - <Название фичи>
|
|
472
|
+
|
|
473
|
+
Документы:
|
|
474
|
+
- [Продуктовое описание - <Название>](../product.md)
|
|
475
|
+
- [Тех-задание <Название>](../tech.md)
|
|
476
|
+
- [Чек-лист для валидации <Название>](../validation.md)
|
|
477
|
+
- [Исследование библиотек <Название>](../research.md) <!-- если есть -->
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## Фазы реализации
|
|
482
|
+
|
|
483
|
+
<Список фаз с кратким описанием>
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## Диаграмма зависимостей фаз
|
|
488
|
+
|
|
489
|
+
<Mermaid диаграмма, показывающая порядок выполнения>
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
## Phase 1: <Название фазы>
|
|
494
|
+
|
|
495
|
+
**Checkpoint:** <Критерий завершения фазы>
|
|
496
|
+
|
|
497
|
+
<Список задач TSK-1-001, TSK-1-002...>
|
|
498
|
+
|
|
499
|
+
---
|
|
500
|
+
|
|
501
|
+
## Phase 2: <Название фазы>
|
|
502
|
+
|
|
503
|
+
...
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
### Шаг 5.3: Заполнение списка фаз
|
|
507
|
+
|
|
508
|
+
Перепиши секцию "Фазы реализации" на основе данных из Фазы 3:
|
|
509
|
+
|
|
510
|
+
````markdown
|
|
511
|
+
## Фазы реализации
|
|
512
|
+
|
|
513
|
+
- **Phase 1: Foundation (Подготовка инфраструктуры)** — создание директорий, интерфейсов, установка зависимостей
|
|
514
|
+
- **Phase 2: Core Implementation (Независимые компоненты)** — реализация FileValidator, CSVParser с тестами
|
|
515
|
+
- **Phase 3: Business Logic (Основная логика)** — реализация BatchUploadService, интеграция компонентов
|
|
516
|
+
- **Phase 4: Integration (Интеграция с системой)** — CLI команда, error handling, e2e тесты
|
|
517
|
+
- **Phase 5: Polish & Documentation (Финализация)** — оптимизация, документация, примеры
|
|
518
|
+
````
|
|
519
|
+
|
|
520
|
+
### Шаг 5.4: Заполнение диаграммы зависимостей
|
|
521
|
+
|
|
522
|
+
Вставь диаграмму из Шага 3.3:
|
|
523
|
+
|
|
524
|
+
````markdown
|
|
525
|
+
## Диаграмма зависимостей фаз
|
|
526
|
+
|
|
527
|
+
```mermaid
|
|
528
|
+
graph TD
|
|
529
|
+
P1[Phase 1: Foundation] --> P2
|
|
530
|
+
|
|
531
|
+
subgraph P2 [Phase 2: Core Implementation]
|
|
532
|
+
direction TB
|
|
533
|
+
F1[FileValidator]
|
|
534
|
+
F2[CSVParser]
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
P2 --> P3[Phase 3: Business Logic: BatchUploadService]
|
|
538
|
+
P3 --> P4[Phase 4: Integration: CLI Command]
|
|
539
|
+
P4 --> P5[Phase 5: Polish & Documentation]
|
|
540
|
+
```
|
|
541
|
+
````
|
|
542
|
+
|
|
543
|
+
### Шаг 5.5: Заполнение задач каждой фазы
|
|
544
|
+
|
|
545
|
+
Для каждой фазы создай раздел с:
|
|
546
|
+
1. **Заголовок:** `## Phase N: <Название>`
|
|
547
|
+
2. **Checkpoint:** Критерий завершения фазы (что должно работать после фазы)
|
|
548
|
+
3. **Группировка задач:** Если в фазе несколько компонентов, группируй задачи по компонентам (подзаголовки `### КомпонентName`)
|
|
549
|
+
4. **Список задач:** Каждая задача в формате `- [ ] TSK-N-XXX: <Описание>`
|
|
550
|
+
|
|
551
|
+
**Пример:**
|
|
552
|
+
|
|
553
|
+
```markdown
|
|
554
|
+
## Phase 2: Core Implementation (Независимые компоненты)
|
|
555
|
+
|
|
556
|
+
**Checkpoint:** После этой фазы FileValidator и CSVParser полностью реализованы и протестированы, готовы к использованию в BatchUploadService. Все unit-тесты проходят.
|
|
557
|
+
|
|
558
|
+
### FileValidator
|
|
559
|
+
|
|
560
|
+
- [ ] TSK-2-001: Создать src/upload/validators/file-validator.ts с классом FileValidator
|
|
561
|
+
- [ ] TSK-2-002: Реализовать конструктор FileValidator(options: ValidatorOptions)
|
|
562
|
+
- [ ] TSK-2-003: Реализовать метод validateSize(file: File): ValidationResult
|
|
563
|
+
- [ ] TSK-2-004: Реализовать метод validateType(file: File): ValidationResult
|
|
564
|
+
- [ ] TSK-2-005: Реализовать метод validate(file: File): ValidationResult
|
|
565
|
+
- [ ] TSK-2-006: Написать unit-тесты для FileValidator (5 test cases)
|
|
566
|
+
|
|
567
|
+
### CSVParser
|
|
568
|
+
|
|
569
|
+
- [ ] TSK-2-007: Создать src/upload/parsers/csv-parser.ts с классом CSVParser
|
|
570
|
+
- [ ] TSK-2-008: Реализовать конструктор CSVParser(options: ParserOptions)
|
|
571
|
+
- [ ] TSK-2-009: Реализовать метод parse(content: string): ParseResult<Row[]>
|
|
572
|
+
- [ ] TSK-2-010: Добавить обработку ошибок парсинга (malformed CSV, encoding issues)
|
|
573
|
+
- [ ] TSK-2-011: Написать unit-тесты для CSVParser (5 test cases)
|
|
574
|
+
|
|
575
|
+
### Phase Checkpoint
|
|
576
|
+
|
|
577
|
+
- [ ] TSK-2-012: Проверить что все тесты фазы 2 проходят: `bun test -- tests/upload/validators/ tests/upload/parsers/`
|
|
578
|
+
- [ ] TSK-2-013: Git commit: "feat(upload): implement FileValidator and CSVParser with full test coverage"
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
### Шаг 5.6: Создание/обновление tasks.md
|
|
582
|
+
|
|
583
|
+
Если `tasks.md` еще не существует:
|
|
584
|
+
1. Создай файл `<path-to-FT-XXXX>/tasks.md`
|
|
585
|
+
2. Заполни его согласно шагам 5.3-5.5
|
|
586
|
+
|
|
587
|
+
Если `tasks.md` существует (пустой или с заглушками):
|
|
588
|
+
1. Замени содержимое на новое
|
|
589
|
+
|
|
590
|
+
## Фаза 6: Дополнение validation.md специфичными критериями
|
|
591
|
+
|
|
592
|
+
### Шаг 6.1: Чтение шаблона validation.md
|
|
593
|
+
|
|
594
|
+
Прочитай существующий `<path-to-FT-XXXX>/validation.md`.
|
|
595
|
+
|
|
596
|
+
Шаблон уже содержит:
|
|
597
|
+
- **Инструментальную проверку** (VAL-001 до VAL-010) — стандартные проверки (тесты, линтер, компиляция)
|
|
598
|
+
- **Семантическую проверку** (VAL-101 до VAL-113) — общие критерии качества
|
|
599
|
+
|
|
600
|
+
### Шаг 6.2: Добавление фича-специфичных критериев
|
|
601
|
+
|
|
602
|
+
На основе `product.md` и `tech.md` добавь **дополнительные критерии** в конец документа.
|
|
603
|
+
|
|
604
|
+
**Категории дополнительных критериев:**
|
|
605
|
+
|
|
606
|
+
**A. Продуктовые критерии (Feature-specific acceptance)**
|
|
607
|
+
Проверки, специфичные для этой фичи:
|
|
608
|
+
|
|
609
|
+
```markdown
|
|
610
|
+
## Фича-специфичная валидация
|
|
611
|
+
|
|
612
|
+
### Продуктовые критерии (Feature Acceptance)
|
|
613
|
+
|
|
614
|
+
- [ ] VAL-201: Команда `batch-upload` должна принимать путь к директории и загружать все CSV файлы из неё
|
|
615
|
+
- [ ] VAL-202: Файлы размером более 100MB должны отклоняться с понятным сообщением об ошибке
|
|
616
|
+
- [ ] VAL-203: После загрузки должен выводиться отчёт с количеством успешных/неуспешных файлов
|
|
617
|
+
- [ ] VAL-204: При ошибке парсинга CSV должна выводиться информация о строке с ошибкой
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
**B. Технические критерии (Implementation-specific)**
|
|
621
|
+
Проверки архитектурных решений из `tech.md`:
|
|
622
|
+
|
|
623
|
+
```markdown
|
|
624
|
+
### Технические критерии (Implementation)
|
|
625
|
+
|
|
626
|
+
- [ ] VAL-301: FileValidator должен быть переиспользуемым и не зависеть от BatchUploadService
|
|
627
|
+
- [ ] VAL-302: CSVParser должен использовать библиотеку papaparse согласно tech.md
|
|
628
|
+
- [ ] VAL-303: Ошибки из FileValidator и CSVParser должны оборачиваться через ErrorHandler для единообразия
|
|
629
|
+
- [ ] VAL-304: BatchUploadService должен поддерживать dependency injection для FileValidator и CSVParser (для тестируемости)
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
**C. Интеграционные критерии (Integration points)**
|
|
633
|
+
Проверки интеграций с существующими модулями:
|
|
634
|
+
|
|
635
|
+
```markdown
|
|
636
|
+
### Интеграционные критерии (Integration)
|
|
637
|
+
|
|
638
|
+
- [ ] VAL-401: CLI команда должна использовать существующий CommandRunner без дублирования логики
|
|
639
|
+
- [ ] VAL-402: Логирование должно использовать существующий Logger, не console.log
|
|
640
|
+
- [ ] VAL-403: Конфигурация лимитов (размер файла) должна читаться из config.ts, не хардкодиться
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
**D. Performance критерии (если указаны в product.md/tech.md)**
|
|
644
|
+
|
|
645
|
+
```markdown
|
|
646
|
+
### Производительность (Performance)
|
|
647
|
+
|
|
648
|
+
- [ ] VAL-501: Загрузка 10 файлов по 50MB каждый должна занимать не более 30 секунд
|
|
649
|
+
- [ ] VAL-502: Парсинг CSV с 100k строк должен занимать не более 5 секунд
|
|
650
|
+
- [ ] VAL-503: Пиковое потребление памяти при загрузке 100MB файла не должно превышать 300MB
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
### Шаг 6.3: Нумерация дополнительных критериев
|
|
654
|
+
|
|
655
|
+
Используй следующую нумерацию:
|
|
656
|
+
- **VAL-2XX** — Продуктовые критерии (Feature Acceptance)
|
|
657
|
+
- **VAL-3XX** — Технические критерии (Implementation)
|
|
658
|
+
- **VAL-4XX** — Интеграционные критерии (Integration)
|
|
659
|
+
- **VAL-5XX** — Производительность (Performance)
|
|
660
|
+
- **VAL-6XX** — Безопасность (Security), если применимо
|
|
661
|
+
- **VAL-7XX** — Accessibility/UX (если применимо для GUI)
|
|
662
|
+
|
|
663
|
+
### Шаг 6.4: Обновление validation.md
|
|
664
|
+
|
|
665
|
+
Добавь новый раздел в конец `validation.md`:
|
|
666
|
+
|
|
667
|
+
```markdown
|
|
668
|
+
## Фича-специфичная валидация
|
|
669
|
+
|
|
670
|
+
<Все критерии из Шага 6.2>
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
Не удаляй существующие разделы "Инструментальная проверка" и "Семантическая проверка".
|
|
674
|
+
|
|
675
|
+
## Фаза 7: Интерактивная проверка с пользователем
|
|
676
|
+
|
|
677
|
+
### Шаг 7.1: Формирование сводки
|
|
678
|
+
|
|
679
|
+
Создай краткую сводку проделанной работы:
|
|
680
|
+
|
|
681
|
+
```markdown
|
|
682
|
+
## Сводка планирования
|
|
683
|
+
|
|
684
|
+
**Спецификация:** FT-XXXX - <Название фичи>
|
|
685
|
+
|
|
686
|
+
**Фазы реализации:** <N> фаз
|
|
687
|
+
1. Phase 1: <Название> — <количество задач>
|
|
688
|
+
2. Phase 2: <Название> — <количество задач>
|
|
689
|
+
3. ...
|
|
690
|
+
|
|
691
|
+
**Всего задач:** <N>
|
|
692
|
+
|
|
693
|
+
**Особенности:**
|
|
694
|
+
- <Любые важные замечания о плане>
|
|
695
|
+
- <Риски или области, требующие внимания>
|
|
696
|
+
- <Зависимости от внешних библиотек>
|
|
697
|
+
|
|
698
|
+
**Дополнительные критерии валидации:** <N> критериев добавлено в validation.md
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
### Шаг 7.2: Запрос на review
|
|
702
|
+
|
|
703
|
+
Выведи сообщение пользователю:
|
|
704
|
+
|
|
705
|
+
```
|
|
706
|
+
Я создал план реализации для FT-XXXX.
|
|
707
|
+
|
|
708
|
+
**Структура:**
|
|
709
|
+
- X фаз реализации
|
|
710
|
+
- Y атомарных задач
|
|
711
|
+
- Z дополнительных критериев валидации
|
|
712
|
+
|
|
713
|
+
**Ключевые решения:**
|
|
714
|
+
- [Опиши 2-3 ключевых архитектурных решения в плане]
|
|
715
|
+
|
|
716
|
+
Пожалуйста, проверь [tasks.md](path/to/tasks.md) и [validation.md](path/to/validation.md).
|
|
717
|
+
|
|
718
|
+
Если всё устраивает, напиши "продолжай" и я закоммичу изменения.
|
|
719
|
+
Если нужны правки — опиши, что изменить.
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
### Шаг 7.3: Обработка фидбека
|
|
723
|
+
|
|
724
|
+
**Если пользователь ответил "продолжай" (или эквивалент):**
|
|
725
|
+
→ Переходи к Фазе 8 (Git commit)
|
|
726
|
+
|
|
727
|
+
**Если пользователь запросил изменения:**
|
|
728
|
+
1. Внеси правки в `tasks.md` и/или `validation.md`
|
|
729
|
+
2. Повтори Шаг 7.2 (запрос на review)
|
|
730
|
+
|
|
731
|
+
**Если пользователь запросил масштабные изменения (например, "переделай полностью"):**
|
|
732
|
+
→ Вернись к Фазе 3 (пересмотр фаз) или Фазе 4 (пересмотр задач)
|
|
733
|
+
|
|
734
|
+
## Фаза 8: Git Commit и финализация
|
|
735
|
+
|
|
736
|
+
### Шаг 8.1: Проверка git статуса
|
|
737
|
+
|
|
738
|
+
Выполни команды:
|
|
739
|
+
```bash
|
|
740
|
+
git status
|
|
741
|
+
```
|
|
742
|
+
|
|
743
|
+
Убедись что:
|
|
744
|
+
- Текущая ветка: `<scope-id>/FT-XXXX-<slug>`
|
|
745
|
+
- Изменённые файлы: `tasks.md`, `validation.md`
|
|
746
|
+
|
|
747
|
+
### Шаг 8.2: Git Add
|
|
748
|
+
|
|
749
|
+
```bash
|
|
750
|
+
git add <path-to-FT-XXXX>/tasks.md <path-to-FT-XXXX>/validation.md
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
### Шаг 8.3: Git Commit
|
|
754
|
+
|
|
755
|
+
```bash
|
|
756
|
+
git commit -m "chore(FT-XXXX): add implementation tasks and validation criteria
|
|
757
|
+
|
|
758
|
+
- Decomposed specification into N phases and Y tasks
|
|
759
|
+
- Added Z feature-specific validation criteria
|
|
760
|
+
- Defined checkpoints for incremental delivery"
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
### Шаг 8.4: Предложение Push (опционально)
|
|
764
|
+
|
|
765
|
+
Спроси пользователя:
|
|
766
|
+
```
|
|
767
|
+
Изменения закоммичены локально.
|
|
768
|
+
Запушить ветку в remote? (y/n)
|
|
769
|
+
```
|
|
770
|
+
|
|
771
|
+
Если "y":
|
|
772
|
+
```bash
|
|
773
|
+
git push origin <branch-name>
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
## Фаза 9: Итоговый отчёт
|
|
777
|
+
|
|
778
|
+
### Шаг 9.1: Формирование отчёта
|
|
779
|
+
|
|
780
|
+
Выведи структурированный отчёт:
|
|
781
|
+
|
|
782
|
+
````markdown
|
|
783
|
+
## ✅ Планирование завершено
|
|
784
|
+
|
|
785
|
+
**Спецификация:** FT-XXXX - <Название фичи>
|
|
786
|
+
**Ветка:** <branch-name>
|
|
787
|
+
**Коммит:** <commit-hash>
|
|
788
|
+
|
|
789
|
+
### Структура плана
|
|
790
|
+
|
|
791
|
+
**Фазы:** <N>
|
|
792
|
+
1. Phase 1: <Название> — <кол-во задач> tasks
|
|
793
|
+
2. Phase 2: <Название> — <кол-во задач> tasks
|
|
794
|
+
3. ...
|
|
795
|
+
|
|
796
|
+
**Всего задач:** <Y>
|
|
797
|
+
|
|
798
|
+
**Критерии валидации:**
|
|
799
|
+
- Стандартные: 23 критерия (инструментальные + семантические)
|
|
800
|
+
- Специфичные для фичи: <Z> критериев
|
|
801
|
+
|
|
802
|
+
### Обновлённые файлы
|
|
803
|
+
|
|
804
|
+
- [tasks.md](<path>) — полный план реализации с чекпоинтами
|
|
805
|
+
- [validation.md](<path>) — расширенные критерии приёмки
|
|
806
|
+
|
|
807
|
+
### Следующие шаги
|
|
808
|
+
|
|
809
|
+
**Для начала реализации:**
|
|
810
|
+
```
|
|
811
|
+
/agentica.implement --id FT-XXXX
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
Агент будет выполнять задачи по порядку, делая коммиты после каждой фазы.
|
|
815
|
+
|
|
816
|
+
**Для валидации после реализации:**
|
|
817
|
+
```
|
|
818
|
+
/agentica.validate --id FT-XXXX
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
Агент проверит все критерии из validation.md.
|
|
822
|
+
|
|
823
|
+
### Рекомендации
|
|
824
|
+
|
|
825
|
+
<Любые замечания или рекомендации для реализации>
|
|
826
|
+
````
|
|
827
|
+
|
|
828
|
+
## Приложение A: Примеры хорошей декомпозиции
|
|
829
|
+
|
|
830
|
+
### Пример 1: Простая CLI фича (3 фазы, 15 задач)
|
|
831
|
+
|
|
832
|
+
**Фича:** Добавить команду `export --format json|yaml`
|
|
833
|
+
|
|
834
|
+
**Phase 1: Foundation (5 задач)**
|
|
835
|
+
- TSK-1-001: Создать src/commands/export.ts
|
|
836
|
+
- TSK-1-002: Определить интерфейс ExportOptions
|
|
837
|
+
- TSK-1-003: Добавить команду в CLI registry
|
|
838
|
+
- TSK-1-004: Добавить зависимость js-yaml в package.json
|
|
839
|
+
- TSK-1-005: Git commit: "chore: add export command structure"
|
|
840
|
+
|
|
841
|
+
**Phase 2: Core Implementation (6 задач)**
|
|
842
|
+
- TSK-2-001: Реализовать ExportCommand.execute()
|
|
843
|
+
- TSK-2-002: Реализовать JSONFormatter.format()
|
|
844
|
+
- TSK-2-003: Реализовать YAMLFormatter.format()
|
|
845
|
+
- TSK-2-004: Добавить валидацию --format параметра
|
|
846
|
+
- TSK-2-005: Написать unit-тесты для форматтеров (8 test cases)
|
|
847
|
+
- TSK-2-006: Git commit: "feat(export): implement JSON and YAML formatters"
|
|
848
|
+
|
|
849
|
+
**Phase 3: Integration & Polish (4 задачи)**
|
|
850
|
+
- TSK-3-001: Добавить e2e тест для команды export
|
|
851
|
+
- TSK-3-002: Добавить примеры в --help текст
|
|
852
|
+
- TSK-3-003: Обновить README.md с примерами использования
|
|
853
|
+
- TSK-3-004: Git commit: "docs(export): add examples and tests"
|
|
854
|
+
|
|
855
|
+
### Пример 2: Сложная бизнес-логика (5 фаз, 35 задач)
|
|
856
|
+
|
|
857
|
+
**Фича:** Система уведомлений с email/SMS/webhook
|
|
858
|
+
|
|
859
|
+
**Phase 1: Foundation (8 задач)**
|
|
860
|
+
- Создание директорий (notifications/, providers/, templates/)
|
|
861
|
+
- Определение интерфейсов (NotificationProvider, NotificationMessage, DeliveryResult)
|
|
862
|
+
- Установка зависимостей (nodemailer, twilio, axios)
|
|
863
|
+
- Создание конфигурации (notification.config.ts)
|
|
864
|
+
|
|
865
|
+
**Phase 2: Core Providers (12 задач)**
|
|
866
|
+
- Реализация EmailProvider (4 задачи: класс, отправка, retry, тесты)
|
|
867
|
+
- Реализация SMSProvider (4 задачи: класс, отправка, валидация номера, тесты)
|
|
868
|
+
- Реализация WebhookProvider (4 задачи: класс, POST request, signature, тесты)
|
|
869
|
+
|
|
870
|
+
**Phase 3: Business Logic (8 задач)**
|
|
871
|
+
- Реализация NotificationService (оркестратор)
|
|
872
|
+
- Шаблонизация сообщений
|
|
873
|
+
- Приоритизация (urgent/normal/low)
|
|
874
|
+
- Retry механизм с exponential backoff
|
|
875
|
+
- Тесты для NotificationService
|
|
876
|
+
|
|
877
|
+
**Phase 4: Integration (4 задачи)**
|
|
878
|
+
- Интеграция с существующим EventBus
|
|
879
|
+
- Error handling через ErrorHandler
|
|
880
|
+
- Логирование через Logger
|
|
881
|
+
- E2E тесты
|
|
882
|
+
|
|
883
|
+
**Phase 5: Polish (3 задачи)**
|
|
884
|
+
- Rate limiting для SMS
|
|
885
|
+
- Метрики и мониторинг
|
|
886
|
+
- Документация и примеры
|
|
887
|
+
|
|
888
|
+
## Приложение B: Anti-Patterns (чего избегать)
|
|
889
|
+
|
|
890
|
+
### ❌ Anti-Pattern 1: Слишком крупные задачи
|
|
891
|
+
|
|
892
|
+
**Плохо:**
|
|
893
|
+
```
|
|
894
|
+
- [ ] TSK-2-001: Реализовать весь NotificationService
|
|
895
|
+
```
|
|
896
|
+
|
|
897
|
+
**Почему плохо:** Невозможно понять, что значит "готово". 100+ строк кода в одной задаче.
|
|
898
|
+
|
|
899
|
+
**Правильно:**
|
|
900
|
+
```
|
|
901
|
+
- [ ] TSK-2-001: Создать класс NotificationService со структурой
|
|
902
|
+
- [ ] TSK-2-002: Реализовать метод send(message: NotificationMessage)
|
|
903
|
+
- [ ] TSK-2-003: Реализовать метод selectProvider(type: NotificationType)
|
|
904
|
+
- [ ] TSK-2-004: Реализовать retry механизм в sendWithRetry()
|
|
905
|
+
- [ ] TSK-2-005: Написать unit-тесты для NotificationService (10 test cases)
|
|
906
|
+
```
|
|
907
|
+
|
|
908
|
+
### ❌ Anti-Pattern 2: Нарушение порядка зависимостей
|
|
909
|
+
|
|
910
|
+
**Плохо:**
|
|
911
|
+
```
|
|
912
|
+
Phase 2:
|
|
913
|
+
- [ ] TSK-2-001: Реализовать BatchUploadService
|
|
914
|
+
- [ ] TSK-2-002: Реализовать FileValidator
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
**Почему плохо:** BatchUploadService зависит от FileValidator, но File Validator идёт после.
|
|
918
|
+
|
|
919
|
+
**Правильно:**
|
|
920
|
+
```
|
|
921
|
+
Phase 2:
|
|
922
|
+
- [ ] TSK-2-001: Реализовать FileValidator
|
|
923
|
+
- [ ] TSK-2-002: Написать тесты для FileValidator
|
|
924
|
+
- [ ] TSK-2-003: Реализовать BatchUploadService (использует FileValidator)
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
### ❌ Anti-Pattern 3: Фаза без тестов
|
|
928
|
+
|
|
929
|
+
**Плохо:**
|
|
930
|
+
```
|
|
931
|
+
Phase 2: Core Implementation
|
|
932
|
+
- [ ] TSK-2-001: Реализовать FileValidator
|
|
933
|
+
- [ ] TSK-2-002: Реализовать CSVParser
|
|
934
|
+
- [ ] TSK-2-003: Git commit
|
|
935
|
+
```
|
|
936
|
+
|
|
937
|
+
**Почему плохо:** Нет тестов. Невозможно проверить что фаза завершена корректно.
|
|
938
|
+
|
|
939
|
+
**Правильно:**
|
|
940
|
+
```
|
|
941
|
+
Phase 2: Core Implementation
|
|
942
|
+
- [ ] TSK-2-001: Реализовать FileValidator
|
|
943
|
+
- [ ] TSK-2-002: Написать unit-тесты для FileValidator (5 test cases)
|
|
944
|
+
- [ ] TSK-2-003: Реализовать CSVParser
|
|
945
|
+
- [ ] TSK-2-004: Написать unit-тесты для CSVParser (6 test cases)
|
|
946
|
+
- [ ] TSK-2-005: Проверить что все тесты фазы проходят
|
|
947
|
+
- [ ] TSK-2-006: Git commit
|
|
948
|
+
```
|
|
949
|
+
|
|
950
|
+
### ❌ Anti-Pattern 4: Отсутствие чекпоинтов
|
|
951
|
+
|
|
952
|
+
**Плохо:**
|
|
953
|
+
```
|
|
954
|
+
Phase 1: (20 задач)
|
|
955
|
+
Phase 2: (25 задач)
|
|
956
|
+
```
|
|
957
|
+
|
|
958
|
+
**Почему плохо:** 45 задач без промежуточных коммитов. Невозможно откатиться.
|
|
959
|
+
|
|
960
|
+
**Правильно:**
|
|
961
|
+
```
|
|
962
|
+
Phase 1: Foundation (10 задач + коммит)
|
|
963
|
+
Phase 2a: Core Validators (5 задач + коммит)
|
|
964
|
+
Phase 2b: Core Parsers (5 задач + коммит)
|
|
965
|
+
Phase 3: Business Logic (10 задач + коммит)
|
|
966
|
+
```
|
|
967
|
+
|
|
968
|
+
### ❌ Anti-Pattern 5: Неатомарные задачи
|
|
969
|
+
|
|
970
|
+
**Плохо:**
|
|
971
|
+
```
|
|
972
|
+
- [ ] TSK-2-001: Реализовать FileValidator и написать тесты и добавить документацию
|
|
973
|
+
```
|
|
974
|
+
|
|
975
|
+
**Почему плохо:** Три разных действия в одной задаче. Непонятно когда задача "наполовину готова".
|
|
976
|
+
|
|
977
|
+
**Правильно:**
|
|
978
|
+
```
|
|
979
|
+
- [ ] TSK-2-001: Реализовать класс FileValidator с методами validate*
|
|
980
|
+
- [ ] TSK-2-002: Написать unit-тесты для FileValidator
|
|
981
|
+
- [ ] TSK-2-003: Добавить JSDoc комментарии для FileValidator
|
|
982
|
+
```
|
|
983
|
+
|
|
984
|
+
## Приложение C: Шаблон Checkpoint'а для фазы
|
|
985
|
+
|
|
986
|
+
Каждый checkpoint должен отвечать на вопросы:
|
|
987
|
+
|
|
988
|
+
```markdown
|
|
989
|
+
## Phase N: <Название>
|
|
990
|
+
|
|
991
|
+
**Checkpoint (Критерий завершения фазы):**
|
|
992
|
+
|
|
993
|
+
✅ **Что работает:**
|
|
994
|
+
- <Список реализованных компонентов>
|
|
995
|
+
- <Какие функции доступны>
|
|
996
|
+
|
|
997
|
+
✅ **Что протестировано:**
|
|
998
|
+
- Unit-тесты: <N> test cases проходят
|
|
999
|
+
- Integration-тесты: <M> scenarios проходят (если применимо)
|
|
1000
|
+
|
|
1001
|
+
✅ **Код валиден:**
|
|
1002
|
+
- `bun run typecheck` — ✅ без ошибок
|
|
1003
|
+
- `bun run lint` — ✅ без ошибок
|
|
1004
|
+
- `bun test` — ✅ все тесты проходят
|
|
1005
|
+
|
|
1006
|
+
✅ **Git:**
|
|
1007
|
+
- Коммит: <описание коммита>
|
|
1008
|
+
- Ветка: <branch-name>
|
|
1009
|
+
|
|
1010
|
+
**Следующая фаза:** Phase N+1 - <Название следующей фазы>
|
|
1011
|
+
```
|
|
1012
|
+
|
|
1013
|
+
---
|
|
1014
|
+
|
|
1015
|
+
## Финальные советы
|
|
1016
|
+
|
|
1017
|
+
1. **Будь конкретным:** "Реализовать функцию" → "Реализовать функцию validateEmail(email: string): boolean в src/validators/email.ts"
|
|
1018
|
+
|
|
1019
|
+
2. **Тестируй каждую фазу:** После каждой фазы должны быть тесты и git commit.
|
|
1020
|
+
|
|
1021
|
+
3. **Разделяй большие задачи:** Если задача требует >50 строк кода — раздели на подзадачи.
|
|
1022
|
+
|
|
1023
|
+
4. **Используй Memory:** Сохраняй зависимости между задачами, чтобы не потерять контекст.
|
|
1024
|
+
|
|
1025
|
+
5. **Фокусируйся на приоритетах:** Если фича большая — выдели MVP (Phase 1-2), затем enhancement'ы (Phase 3-4).
|
|
1026
|
+
|
|
1027
|
+
6. **Checkpoint is king:** После каждой фазы код должен быть workable, tested, committed.
|
|
1028
|
+
|
|
1029
|
+
---
|
|
1030
|
+
|
|
1031
|
+
## Завершение работы
|
|
1032
|
+
|
|
1033
|
+
После выполнения всех фаз (1-9):
|
|
1034
|
+
- `tasks.md` заполнен полным планом реализации
|
|
1035
|
+
- `validation.md` дополнен специфичными критериями
|
|
1036
|
+
- Пользователь подтвердил план
|
|
1037
|
+
- Изменения закоммичены
|
|
1038
|
+
- Отчёт выведен
|
|
1039
|
+
|
|
1040
|
+
**Команда успешно завершена. Спецификация готова к реализации.**
|
|
1041
|
+
|