@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.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +291 -0
  3. package/dist/cli.js +64 -0
  4. package/dist/cli.js.map +27 -0
  5. package/globals/anti-spaghetti.md +65 -0
  6. package/globals/lang-python.md +105 -0
  7. package/globals/lang-typescript.md +61 -0
  8. package/globals/use-agentica.md +127 -0
  9. package/package.json +55 -0
  10. package/prompts/architect.prompt.md +302 -0
  11. package/prompts/change.prompt.md +915 -0
  12. package/prompts/create.prompt.md +953 -0
  13. package/prompts/implement.prompt.md +389 -0
  14. package/prompts/init.prompt.md +123 -0
  15. package/prompts/readme.prompt.md +355 -0
  16. package/prompts/refactor.prompt.md +712 -0
  17. package/prompts/reverse.prompt.md +777 -0
  18. package/prompts/tasks.prompt.md +1041 -0
  19. package/prompts/validate.prompt.md +480 -0
  20. package/stacks/python/cli/product.md +41 -0
  21. package/stacks/python/cli/structure.md +40 -0
  22. package/stacks/python/cli/tech.md +29 -0
  23. package/stacks/python/gui/product.md +41 -0
  24. package/stacks/python/gui/structure.md +41 -0
  25. package/stacks/python/gui/tech.md +29 -0
  26. package/stacks/python/lib/product.md +41 -0
  27. package/stacks/python/lib/structure.md +34 -0
  28. package/stacks/python/lib/tech.md +30 -0
  29. package/stacks/python/monorepo/product.md +41 -0
  30. package/stacks/python/monorepo/structure.md +29 -0
  31. package/stacks/python/monorepo/tech.md +30 -0
  32. package/stacks/typescript/cli/product.md +41 -0
  33. package/stacks/typescript/cli/structure.md +34 -0
  34. package/stacks/typescript/cli/tech.md +31 -0
  35. package/stacks/typescript/lib/product.md +41 -0
  36. package/stacks/typescript/lib/structure.md +33 -0
  37. package/stacks/typescript/lib/tech.md +31 -0
  38. package/stacks/typescript/monorepo/product.md +41 -0
  39. package/stacks/typescript/monorepo/structure.md +34 -0
  40. package/stacks/typescript/monorepo/tech.md +47 -0
  41. package/stacks/typescript/server/product.md +41 -0
  42. package/stacks/typescript/server/structure.md +35 -0
  43. package/stacks/typescript/server/tech.md +30 -0
  44. package/stacks/typescript/spa/product.md +41 -0
  45. package/stacks/typescript/spa/structure.md +36 -0
  46. package/stacks/typescript/spa/tech.md +29 -0
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
+