@alxyrgin/agent-forge 1.0.0 → 3.0.0
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/README.md +104 -51
- package/dist/index.js +194 -51
- package/dist/index.js.map +1 -1
- package/package.json +12 -2
- package/templates/agents/documentation/gatekeeper.md.ejs +83 -0
- package/templates/agents/documentation/librarian.md.ejs +80 -0
- package/templates/agents/documentation/verifier.md.ejs +92 -0
- package/templates/agents/documentation/writer.md.ejs +189 -0
- package/templates/agents/pipeline/analyst.md.ejs +65 -0
- package/templates/agents/{core → pipeline}/architect.md.ejs +38 -1
- package/templates/agents/pipeline/developer.md.ejs +75 -0
- package/templates/agents/pipeline/inspector.md.ejs +123 -0
- package/templates/agents/pipeline/planner.md.ejs +211 -0
- package/templates/agents/pipeline/reviewer.md.ejs +158 -0
- package/templates/agents/pipeline/skeptic.md.ejs +105 -0
- package/templates/agents/pipeline/tester.md.ejs +134 -0
- package/templates/agents/planning/decomposer.md.ejs +103 -0
- package/templates/agents/planning/interviewer.md.ejs +104 -0
- package/templates/agents/planning/researcher.md.ejs +96 -0
- package/templates/agents/planning/validator.md.ejs +97 -0
- package/templates/agents/security/auditor.md.ejs +105 -0
- package/templates/agents/security/deployer.md.ejs +81 -0
- package/templates/agents/security/prompter.md.ejs +87 -0
- package/templates/agents/security/scaffolder.md.ejs +75 -0
- package/templates/hooks/protect-docs.sh.ejs +25 -0
- package/templates/memory/checkpoint.yml.ejs +21 -0
- package/templates/memory/tech-debt.md.ejs +9 -1
- package/templates/root/CLAUDE.md.ejs +228 -30
- package/templates/root/settings.json.ejs +15 -1
- package/templates/rules/agent-output-format.md.ejs +80 -0
- package/templates/rules/context-loading.md.ejs +70 -0
- package/templates/rules/development-cycle.md.ejs +163 -29
- package/templates/rules/quality-gates.md.ejs +80 -0
- package/templates/rules/rollback-protocol.md.ejs +60 -0
- package/templates/rules/shared-resources.md.ejs +73 -0
- package/templates/skills/core/code/SKILL.md.ejs +85 -0
- package/templates/skills/core/complete-task/SKILL.md.ejs +22 -9
- package/templates/skills/core/done/SKILL.md.ejs +66 -0
- package/templates/skills/core/end-session/SKILL.md.ejs +14 -6
- package/templates/skills/core/review/SKILL.md.ejs +1 -1
- package/templates/skills/core/start-session/SKILL.md.ejs +73 -10
- package/templates/skills/core/take-task/SKILL.md.ejs +279 -30
- package/templates/skills/core/test/SKILL.md.ejs +200 -0
- package/templates/skills/extra/audit-wave/SKILL.md.ejs +58 -0
- package/templates/skills/extra/dashboard/SKILL.md.ejs +64 -0
- package/templates/skills/extra/decompose/SKILL.md.ejs +72 -0
- package/templates/skills/extra/feature/SKILL.md.ejs +83 -0
- package/templates/skills/extra/interview/SKILL.md.ejs +66 -0
- package/templates/skills/extra/prompts/SKILL.md.ejs +65 -0
- package/templates/skills/extra/security/SKILL.md.ejs +77 -0
- package/templates/skills/extra/skill-master/SKILL.md.ejs +51 -0
- package/templates/skills/extra/spec/SKILL.md.ejs +111 -0
- package/templates/skills/extra/techspec/SKILL.md.ejs +97 -0
- package/templates/skills/extra/write-report/SKILL.md.ejs +26 -0
- package/templates/agents/core/analyst.md.ejs +0 -56
- package/templates/agents/core/developer.md.ejs +0 -54
- package/templates/agents/core/doc-writer.md.ejs +0 -50
- package/templates/agents/core/progress-tracker.md.ejs +0 -56
- package/templates/agents/core/reviewer.md.ejs +0 -52
- package/templates/agents/core/security-auditor.md.ejs +0 -51
- package/templates/agents/core/unit-tester.md.ejs +0 -56
- package/templates/agents/extra/acceptance-tester.md.ejs +0 -48
- package/templates/agents/extra/integration-tester.md.ejs +0 -49
- package/templates/agents/extra/planner.md.ejs +0 -89
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: end-session
|
|
3
|
-
description: Завершение рабочей сессии. Сохраняет контекст, обновляет memory bank, создаёт лог сессии.
|
|
3
|
+
description: Завершение рабочей сессии. Сохраняет контекст, checkpoint, обновляет memory bank, создаёт лог сессии.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
@@ -17,7 +17,14 @@ allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
|
17
17
|
Что ещё было сделано в этой сессии, помимо того, что я зафиксировал?
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
## 2.
|
|
20
|
+
## 2. Сохранить checkpoint (если задача не закончена)
|
|
21
|
+
|
|
22
|
+
Прочитай `dev-infra/memory/checkpoint.yml`. Если `active: true`:
|
|
23
|
+
- Убедись, что `current_step`, `step_name` и `context` актуальны
|
|
24
|
+
- Обнови `last_updated` на текущую дату
|
|
25
|
+
- Сообщи пользователю: «Checkpoint сохранён. При следующем /start-session предложу восстановление.»
|
|
26
|
+
|
|
27
|
+
## 3. Обновить active-context.md
|
|
21
28
|
|
|
22
29
|
Перезапиши `dev-infra/memory/active-context.md`:
|
|
23
30
|
- **Дата:** сегодня
|
|
@@ -27,15 +34,15 @@ allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
|
27
34
|
- **Блокеры:** если появились
|
|
28
35
|
- **Важные решения:** если были (также добавь в decisions.md)
|
|
29
36
|
|
|
30
|
-
##
|
|
37
|
+
## 4. Обновить progress.md
|
|
31
38
|
|
|
32
39
|
Пересчитай статусы задач из tasks.json.
|
|
33
40
|
|
|
34
|
-
##
|
|
41
|
+
## 5. Определить участника
|
|
35
42
|
|
|
36
43
|
Определи, кто работал в этой сессии. Если неясно — спроси.
|
|
37
44
|
|
|
38
|
-
##
|
|
45
|
+
## 6. Создать лог сессии
|
|
39
46
|
|
|
40
47
|
Получи текущее время: `date +%H:%M`
|
|
41
48
|
|
|
@@ -65,7 +72,7 @@ allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
|
65
72
|
- [если есть]
|
|
66
73
|
```
|
|
67
74
|
|
|
68
|
-
##
|
|
75
|
+
## 7. Коммит и пуш
|
|
69
76
|
|
|
70
77
|
Формат коммита:
|
|
71
78
|
```
|
|
@@ -75,6 +82,7 @@ memory(Участник): обновление после сессии YYYY-MM-D
|
|
|
75
82
|
Включить в коммит:
|
|
76
83
|
- dev-infra/memory/active-context.md
|
|
77
84
|
- dev-infra/memory/progress.md
|
|
85
|
+
- dev-infra/memory/checkpoint.yml
|
|
78
86
|
- dev-infra/sessions/YYYY-MM-DD_HH-MM.md
|
|
79
87
|
- dev-infra/tasks/tasks.json (если обновлён)
|
|
80
88
|
|
|
@@ -25,5 +25,5 @@ Agent(subagent_type="reviewer", prompt="Проверь файл [путь]. Па
|
|
|
25
25
|
1. Загрузи задачу из `dev-infra/tasks/tasks.json`
|
|
26
26
|
2. Найди acceptance_criteria и связанные файлы
|
|
27
27
|
3. ДЕЛЕГИРУЙ агенту reviewer
|
|
28
|
-
4. Если задача работает с данными —
|
|
28
|
+
4. Если задача работает с данными — укажи reviewer'у фокус на безопасность (check_security: true)
|
|
29
29
|
5. Покажи сводный отчёт
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: start-session
|
|
3
|
-
description: Начало рабочей сессии. Загружает контекст проекта, показывает прогресс и рекомендует задачу.
|
|
3
|
+
description: Начало рабочей сессии. Загружает контекст проекта, показывает прогресс и рекомендует задачу. Используй при запуске Claude Code, начале работы, или когда пользователь говорит «начать», «что делать», «где мы».
|
|
4
4
|
user-invocable: true
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
allowed-tools: Read, Glob, Grep, Bash
|
|
@@ -16,43 +16,106 @@ allowed-tools: Read, Glob, Grep, Bash
|
|
|
16
16
|
git fetch origin
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Проверь, есть ли новые
|
|
19
|
+
Проверь, есть ли новые коммиты от других разработчиков:
|
|
20
20
|
```bash
|
|
21
21
|
git log HEAD..origin/<%= defaultBranch || 'main' %> --oneline
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Если есть новые коммиты —
|
|
24
|
+
Если есть новые коммиты — подтяни изменения:
|
|
25
25
|
```bash
|
|
26
26
|
git pull origin <%= defaultBranch || 'main' %>
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
Если есть изменения — сообщи пользователю:
|
|
30
|
+
```
|
|
31
|
+
Подтянуты изменения от [автор]: [описание коммитов]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Если конфликт слияния — сообщи и помоги разрешить.
|
|
35
|
+
|
|
29
36
|
## 2. Загрузить контекст
|
|
30
37
|
|
|
31
38
|
Прочитай параллельно:
|
|
32
39
|
- `dev-infra/memory/active-context.md`
|
|
33
40
|
- `dev-infra/memory/progress.md`
|
|
34
41
|
- `dev-infra/tasks/tasks.json`
|
|
42
|
+
- `dev-infra/memory/checkpoint.yml`
|
|
43
|
+
|
|
44
|
+
### Checkpoint recovery
|
|
45
|
+
|
|
46
|
+
Если в `checkpoint.yml` поле `active: true` — есть незавершённая задача:
|
|
47
|
+
```
|
|
48
|
+
Обнаружен незавершённый checkpoint:
|
|
49
|
+
- Задача: [task_id] — [task_title]
|
|
50
|
+
- Размер: [feature_size]
|
|
51
|
+
- Последний шаг: [current_step]
|
|
52
|
+
- Последнее обновление: [last_updated]
|
|
53
|
+
|
|
54
|
+
Продолжить с [current_step] через /take-task [task_id]?
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 2.5. Проверка tech-debt триггеров
|
|
58
|
+
|
|
59
|
+
Прочитай `dev-infra/memory/tech-debt.md`. Для каждой записи со статусом `open` или `partially_resolved`:
|
|
60
|
+
1. Проверь поле «Триггер замены» — наступил ли триггер?
|
|
61
|
+
2. Сопоставь с текущим состоянием проекта:
|
|
62
|
+
- Задача-триггер в статусе `done`? (проверь tasks.json)
|
|
63
|
+
- Ресурс появился? (production DB, API-ключ)
|
|
64
|
+
- Milestone завершён?
|
|
65
|
+
|
|
66
|
+
Если найдены TD-записи с наступившими триггерами — покажи:
|
|
67
|
+
```
|
|
68
|
+
Tech-debt: можно закрыть N записей:
|
|
69
|
+
- TD-XXX: [описание] -> триггер «[триггер]» наступил ([почему])
|
|
70
|
+
- TD-YYY: [описание] -> триггер «[триггер]» наступил ([почему])
|
|
71
|
+
|
|
72
|
+
Создать задачи на закрытие или отложить?
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Если пользователь подтверждает — создай задачи в tasks.json (тип: tech-debt, приоритет по влиянию).
|
|
76
|
+
Если нет наступивших триггеров — пропусти молча.
|
|
35
77
|
|
|
36
78
|
## 3. Показать сводку
|
|
37
79
|
|
|
38
80
|
Выведи компактно:
|
|
39
|
-
-
|
|
40
|
-
- **Дедлайн:**
|
|
41
|
-
- **Прогресс:** задач done / in_progress / todo
|
|
81
|
+
- **Этап и milestone:** какой этап, какой milestone, процент выполнения
|
|
82
|
+
- **Дедлайн:** дата (контракт / внутренний), сколько дней осталось
|
|
83
|
+
- **Прогресс:** сколько задач done / in_progress / todo / blocked
|
|
42
84
|
- **Блокеры:** если есть — подсветить
|
|
85
|
+
- **Tech-debt:** N open / N partially_resolved (если есть с наступившими триггерами — подсветить)
|
|
43
86
|
|
|
44
87
|
## 4. Показать незавершённые задачи
|
|
45
88
|
|
|
46
|
-
Из tasks.json покажи задачи со статусом `in_progress
|
|
89
|
+
Из tasks.json покажи задачи со статусом `in_progress` (те, что уже начаты).
|
|
47
90
|
Если таких нет — покажи `todo` с приоритетом critical/high.
|
|
48
91
|
|
|
49
92
|
## 5. Рекомендовать задачу
|
|
50
93
|
|
|
51
|
-
Выбери ОДНУ задачу и объясни почему:
|
|
94
|
+
Выбери ОДНУ конкретную задачу и объясни почему:
|
|
52
95
|
- Приоритет (critical первые)
|
|
53
|
-
- Зависимости выполнены?
|
|
96
|
+
- Зависимости выполнены? (dependencies — все ли в статусе done?)
|
|
54
97
|
- Дедлайн (что ближе?)
|
|
98
|
+
- Исполнитель (задачи текущего разработчика приоритетнее)
|
|
99
|
+
|
|
100
|
+
Формат:
|
|
101
|
+
```
|
|
102
|
+
Рекомендую начать с [ID] «[название]» — приоритет [priority],
|
|
103
|
+
зависимость [dep] выполнена, дедлайн [date].
|
|
104
|
+
Берём эту задачу?
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Проверка плана (опционально)
|
|
108
|
+
|
|
109
|
+
Если при загрузке контекста обнаружены проблемы:
|
|
110
|
+
- Просроченные задачи (deadline_internal < сегодня, status != done)
|
|
111
|
+
- Задачи in_progress >7 дней без обновлений
|
|
112
|
+
- Блокирующие зависимости (todo зависит от todo)
|
|
113
|
+
|
|
114
|
+
Добавь к сводке:
|
|
115
|
+
```
|
|
116
|
+
Обнаружены проблемы с планом (N шт.). Рекомендую: /plan validate
|
|
117
|
+
```
|
|
55
118
|
|
|
56
119
|
## 6. Ожидать решения
|
|
57
120
|
|
|
58
|
-
Дождись
|
|
121
|
+
Дождись ответа пользователя. Если согласен — автоматически запусти `/take-task` для этой задачи.
|
|
@@ -1,69 +1,318 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: take-task
|
|
3
|
-
description:
|
|
3
|
+
description: |
|
|
4
|
+
Взять задачу в работу и запустить полный цикл разработки.
|
|
5
|
+
Определяет размер (S/M/L), запускает агентов по пайплайну, проверяет quality gates.
|
|
6
|
+
|
|
7
|
+
Use when: «возьми задачу», «давай делать», «начни работу над», «следующая задача», «take task»
|
|
4
8
|
user-invocable: true
|
|
5
9
|
disable-model-invocation: false
|
|
6
10
|
argument-hint: "[task-id]"
|
|
7
11
|
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, Agent, WebSearch
|
|
8
12
|
---
|
|
9
13
|
|
|
10
|
-
# Взять задачу и запустить
|
|
14
|
+
# Взять задачу и запустить цикл разработки
|
|
11
15
|
|
|
12
16
|
Аргумент: `$ARGUMENTS` — ID задачи (опционально). Если не указан — покажи доступные.
|
|
13
17
|
|
|
18
|
+
## Шаг 0. Checkpoint (восстановление после обрыва)
|
|
19
|
+
|
|
20
|
+
1. Прочитай `dev-infra/memory/checkpoint.yml`
|
|
21
|
+
2. Если `active: true` — предложи восстановление:
|
|
22
|
+
```
|
|
23
|
+
Обнаружен незавершённый checkpoint:
|
|
24
|
+
- Задача: [task_id] — [task_title]
|
|
25
|
+
- Последний шаг: [current_step]
|
|
26
|
+
- Прогресс: [completed_steps / total_steps]
|
|
27
|
+
|
|
28
|
+
Продолжить с [current_step] или начать заново?
|
|
29
|
+
```
|
|
30
|
+
3. При продолжении — перейди к текущему шагу, загрузив контекст из checkpoint
|
|
31
|
+
4. При начале заново — очисти checkpoint (active: false)
|
|
32
|
+
|
|
14
33
|
## Если ID не указан
|
|
15
34
|
|
|
16
35
|
1. Прочитай `dev-infra/tasks/tasks.json`
|
|
17
36
|
2. Покажи задачи для текущего milestone со статусом `todo`, отсортированные по приоритету
|
|
18
37
|
3. Проверь зависимости: не предлагай задачу, если её dependencies не в статусе done
|
|
19
|
-
4.
|
|
38
|
+
4. Для каждой: ID, название, приоритет, wave, дедлайн
|
|
39
|
+
5. Спроси, какую задачу взять
|
|
20
40
|
|
|
21
|
-
##
|
|
41
|
+
## Определение размера
|
|
22
42
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
43
|
+
| Критерий | S (Small) | M (Medium) | L (Large) |
|
|
44
|
+
|----------|-----------|------------|-----------|
|
|
45
|
+
| Файлы | 1-2 | 3-5 | >5 или новый модуль |
|
|
46
|
+
| AC | Нет или простые | Есть AC | Несколько AC + ПМИ |
|
|
47
|
+
| Зависимости | 0-1 | 1-2 | 3+ |
|
|
48
|
+
| Тип | Фикс, правка, конфиг | Новая функция | Новый модуль, архитектура |
|
|
26
49
|
|
|
27
|
-
### Шаг 2. Анализ требований — ДЕЛЕГИРОВАТЬ агенту analyst
|
|
28
50
|
```
|
|
29
|
-
|
|
51
|
+
Задача [ID]: [название]
|
|
52
|
+
Размер: [S / M / L] — [обоснование]
|
|
53
|
+
Пайплайн: [N шагов]
|
|
30
54
|
```
|
|
31
55
|
|
|
32
|
-
|
|
56
|
+
## Обновить статус и создать план
|
|
33
57
|
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
58
|
+
- tasks.json: статус -> `in_progress`, updated -> сегодня
|
|
59
|
+
- active-context.md: обновить «Что делаем сейчас»
|
|
60
|
+
- checkpoint.yml:
|
|
61
|
+
```yaml
|
|
62
|
+
active: true
|
|
63
|
+
task_id: [ID]
|
|
64
|
+
task_title: [название]
|
|
65
|
+
feature_size: [S/M/L]
|
|
66
|
+
current_step: start
|
|
67
|
+
started_at: [ISO-8601]
|
|
68
|
+
steps: {}
|
|
69
|
+
```
|
|
70
|
+
- Создать прогресс-бар через TaskCreate по размеру
|
|
37
71
|
|
|
38
|
-
|
|
72
|
+
**Для S (6 шагов):**
|
|
39
73
|
```
|
|
40
|
-
|
|
74
|
+
TaskCreate(subject="[ID] Реализация кода")
|
|
75
|
+
TaskCreate(subject="[ID] Тесты + Inspector")
|
|
76
|
+
TaskCreate(subject="[ID] Quick Review")
|
|
77
|
+
TaskCreate(subject="[ID] Tech-debt проверка")
|
|
78
|
+
TaskCreate(subject="[ID] Фиксация результата")
|
|
41
79
|
```
|
|
42
|
-
- Покажи план пользователю, дождись подтверждения
|
|
43
80
|
|
|
44
|
-
|
|
81
|
+
**Для M (8 шагов):**
|
|
45
82
|
```
|
|
46
|
-
|
|
83
|
+
TaskCreate(subject="[ID] Анализ требований")
|
|
84
|
+
TaskCreate(subject="[ID] TDD — failing тесты (RED)")
|
|
85
|
+
TaskCreate(subject="[ID] Реализация + тесты (GREEN)")
|
|
86
|
+
TaskCreate(subject="[ID] Inspector — качество тестов")
|
|
87
|
+
TaskCreate(subject="[ID] Код-ревью")
|
|
88
|
+
TaskCreate(subject="[ID] Tech-debt проверка")
|
|
89
|
+
TaskCreate(subject="[ID] Фиксация результата")
|
|
47
90
|
```
|
|
48
|
-
- Проверь: код соответствует плану?
|
|
49
91
|
|
|
50
|
-
|
|
92
|
+
**Для L (10 шагов):**
|
|
51
93
|
```
|
|
52
|
-
|
|
94
|
+
TaskCreate(subject="[ID] Анализ требований")
|
|
95
|
+
TaskCreate(subject="[ID] Архитектура + ревью плана")
|
|
96
|
+
TaskCreate(subject="[ID] Reality Check (skeptic)")
|
|
97
|
+
TaskCreate(subject="[ID] TDD + Код + Тесты (per-feature)")
|
|
98
|
+
TaskCreate(subject="[ID] Inspector — качество тестов")
|
|
99
|
+
TaskCreate(subject="[ID] Код-ревью")
|
|
100
|
+
TaskCreate(subject="[ID] Tech-debt проверка")
|
|
101
|
+
TaskCreate(subject="[ID] Фиксация результата")
|
|
53
102
|
```
|
|
54
|
-
- Если тесты падают — верни developer'у
|
|
55
103
|
|
|
56
|
-
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Шаги пайплайна
|
|
107
|
+
|
|
108
|
+
### [1] Анализ требований (M, L)
|
|
109
|
+
|
|
110
|
+
**Перед вызовом analyst:**
|
|
111
|
+
1. Прочитай tasks.json — извлеки задачу (description, acceptance_criteria, pmi_scenarios, risks)
|
|
112
|
+
2. Прочитай `dev-infra/tests/acceptance/` — найди конкретные метрики для AC
|
|
113
|
+
3. Прочитай `dev-infra/memory/tech-debt.md` — найди связанные TD-записи
|
|
114
|
+
4. Прочитай `dev-infra/memory/decisions.md` — найди связанные ADR
|
|
115
|
+
|
|
57
116
|
```
|
|
58
|
-
Agent(subagent_type="
|
|
117
|
+
Agent(subagent_type="analyst", prompt="
|
|
118
|
+
Проанализируй задачу [ID].
|
|
119
|
+
Описание: [description]
|
|
120
|
+
AC: [AC-X.X-XX — полная метрика, не только ID]
|
|
121
|
+
PMI: [pmi-XX — описание]
|
|
122
|
+
Риски: [R-XXX — описание, приоритет]
|
|
123
|
+
Tech-debt: [TD-NNN — если связан]
|
|
124
|
+
Решения: [ADR-NNN — если связан]
|
|
125
|
+
")
|
|
59
126
|
```
|
|
60
|
-
- Если CRITICAL/HIGH — верни developer'у
|
|
61
127
|
|
|
62
|
-
|
|
128
|
+
**Обработка verdict:**
|
|
129
|
+
- `COMPLETE` -> показать результат пользователю, перейти к следующему шагу
|
|
130
|
+
- `NEEDS_DISCOVERY` -> показать вопросы пользователю, дождаться ответа, зафиксировать в decisions.md, повторить analyst
|
|
131
|
+
|
|
132
|
+
Checkpoint: `steps.analysis = {status: done, verdict: ..., key_findings: [...]}`
|
|
133
|
+
|
|
134
|
+
### Discovery (если NEEDS_DISCOVERY)
|
|
135
|
+
|
|
136
|
+
1. Покажи вопросы из analyst в формате:
|
|
137
|
+
```
|
|
138
|
+
Вопрос 1: [текст]
|
|
139
|
+
Варианты:
|
|
140
|
+
a) [вариант] — [trade-off]
|
|
141
|
+
b) [вариант] — [trade-off]
|
|
142
|
+
```
|
|
143
|
+
2. Дождись ответа пользователя
|
|
144
|
+
3. Зафиксируй решение в `dev-infra/memory/decisions.md` (формат ADR)
|
|
145
|
+
4. Повторно вызови analyst с дополненным контекстом
|
|
146
|
+
|
|
147
|
+
### [2] Архитектура + ревью плана (L)
|
|
148
|
+
|
|
149
|
+
Запусти параллельно:
|
|
150
|
+
|
|
63
151
|
```
|
|
64
|
-
Agent(subagent_type="
|
|
152
|
+
Agent(subagent_type="architect", prompt="
|
|
153
|
+
Спроектируй [модуль]. Требования от аналитика: [результат analyst].
|
|
154
|
+
Верни: структуру файлов, API-контракты, модели, стратегию контроля доступа.
|
|
155
|
+
Раздели на features для per-feature loop (с порядком по зависимостям).
|
|
156
|
+
")
|
|
157
|
+
|
|
158
|
+
Agent(subagent_type="reviewer", prompt="
|
|
159
|
+
mode: plan_review
|
|
160
|
+
Проверь план архитектора на полноту.
|
|
161
|
+
Требования: [результат analyst].
|
|
162
|
+
AC: [полные метрики]
|
|
163
|
+
Риски: [R-XXX с описанием]
|
|
164
|
+
")
|
|
65
165
|
```
|
|
66
166
|
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
167
|
+
**Обработка verdict (комбинация):**
|
|
168
|
+
- architect(READY) + reviewer(APPROVE) -> показать пользователю, ждать подтверждения
|
|
169
|
+
- architect(READY) + reviewer(REQUEST_CHANGES) -> architect исправляет -> повторить оба
|
|
170
|
+
- architect(NEEDS_INPUT) -> запросить данные -> повторить
|
|
171
|
+
|
|
172
|
+
Checkpoint: `steps.architecture = {status: done, plan_summary: "...", files: [...]}`
|
|
173
|
+
|
|
174
|
+
### [3] Reality Check (L)
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
Agent(subagent_type="skeptic", prompt="
|
|
178
|
+
Проверь спецификацию на миражи: [план от architect].
|
|
179
|
+
Кодовая база: <%= srcDir %>
|
|
180
|
+
")
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Обработка verdict:**
|
|
184
|
+
- `PASS` -> продолжить
|
|
185
|
+
- `PASS_WITH_WARNINGS` -> передать warnings developer'у в prompt
|
|
186
|
+
- `FAIL` -> вернуть architect, показать issues
|
|
187
|
+
|
|
188
|
+
Checkpoint: `steps.skeptic = {status: done, verdict: ..., warnings: [...]}`
|
|
189
|
+
|
|
190
|
+
### [4] TDD — failing тесты, RED (M, L)
|
|
191
|
+
|
|
192
|
+
Для M-задач — один вызов. Для L — per-feature.
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
Agent(subagent_type="tester", prompt="
|
|
196
|
+
mode: tdd
|
|
197
|
+
Создай failing тесты для [фича/задача].
|
|
198
|
+
TDD-якоря: [tdd_anchors из tasks.json]
|
|
199
|
+
Директория тестов: <%= testDir %>
|
|
200
|
+
Фреймворк: <%= testFramework %>
|
|
201
|
+
Тесты должны FAIL (код ещё не написан).
|
|
202
|
+
")
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Проверь: тесты действительно fail. Если pass — значит якоря некорректны.
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
<%= testCommand %>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Checkpoint: `steps.tdd = {status: done, failing_tests: [...]}`
|
|
212
|
+
|
|
213
|
+
### [5] Реализация + тесты (per-feature)
|
|
214
|
+
|
|
215
|
+
**Для S-задач:** один цикл developer -> tester -> inspector.
|
|
216
|
+
**Для M-задач:** developer -> tester(GREEN) -> inspector.
|
|
217
|
+
**Для L-задач:** per-feature loop из плана architect.
|
|
218
|
+
|
|
219
|
+
Per-feature loop (L):
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
features = план architect -> details.features (упорядочены по зависимостям)
|
|
223
|
+
|
|
224
|
+
for feature in features:
|
|
225
|
+
# 1. Developer реализует
|
|
226
|
+
Agent(subagent_type="developer", prompt="
|
|
227
|
+
Реализуй [feature]. План: [план].
|
|
228
|
+
Warnings от skeptic: [если есть].
|
|
229
|
+
TDD: сделай failing тесты GREEN.
|
|
230
|
+
Failing тесты: [список из шага TDD].
|
|
231
|
+
Запусти: <%= testCommand %>
|
|
232
|
+
")
|
|
233
|
+
|
|
234
|
+
# Проверка verdict developer
|
|
235
|
+
if developer.verdict == BLOCKED:
|
|
236
|
+
-> показать пользователю, разобрать блокировку
|
|
237
|
+
|
|
238
|
+
# 2. Tester проверяет
|
|
239
|
+
Agent(subagent_type="tester", prompt="
|
|
240
|
+
level: unit
|
|
241
|
+
Проверь [конкретные файлы feature].
|
|
242
|
+
Убедись: failing тесты теперь GREEN.
|
|
243
|
+
Добавь edge cases сверх TDD-якорей.
|
|
244
|
+
Покрытие >=80%.
|
|
245
|
+
Фреймворк: <%= testFramework %>
|
|
246
|
+
Запусти: <%= testCommand %>
|
|
247
|
+
")
|
|
248
|
+
|
|
249
|
+
# Проверка verdict tester
|
|
250
|
+
if tester.verdict == FAIL:
|
|
251
|
+
-> передать developer для исправления -> повторить tester
|
|
252
|
+
|
|
253
|
+
# 3. Inspector проверяет качество тестов
|
|
254
|
+
Agent(subagent_type="inspector", prompt="
|
|
255
|
+
Проверь качество тестов для [feature].
|
|
256
|
+
Файлы: [тестовые файлы от tester].
|
|
257
|
+
")
|
|
258
|
+
|
|
259
|
+
# Проверка verdict inspector
|
|
260
|
+
if inspector.verdict == REQUEST_CHANGES:
|
|
261
|
+
-> передать tester для исправления -> повторить inspector
|
|
262
|
+
|
|
263
|
+
Checkpoint: steps.developer.features_done += 1
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Checkpoint: `steps.developer = {status: done, files_changed: [...], features_done: N, features_total: N}`
|
|
267
|
+
|
|
268
|
+
### [6] Ревью (S. quick, M/L. full)
|
|
269
|
+
|
|
270
|
+
**S-задачи (quick review):**
|
|
271
|
+
```
|
|
272
|
+
Agent(subagent_type="reviewer", prompt="
|
|
273
|
+
mode: quick
|
|
274
|
+
Проверь: [файлы от developer].
|
|
275
|
+
Только: security, контроль доступа, критические баги.
|
|
276
|
+
1 раунд, MEDIUM/LOW -> tech-debt.
|
|
277
|
+
")
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
**M/L-задачи (full review):**
|
|
281
|
+
```
|
|
282
|
+
Agent(subagent_type="reviewer", prompt="
|
|
283
|
+
Проверь код: [файлы от developer].
|
|
284
|
+
AC: [полные метрики из tasks.json — НЕ только ID]
|
|
285
|
+
Риски: [R-XXX с описанием]
|
|
286
|
+
Раунд: 1/3.
|
|
287
|
+
")
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Обработка verdict:**
|
|
291
|
+
- `APPROVE` -> перейти к tech-debt
|
|
292
|
+
- `REQUEST_CHANGES` (раунд 1-2) -> developer исправляет -> reviewer повторяет (раунд N+1)
|
|
293
|
+
- `ESCALATE` (раунд 3) -> показать пользователю все findings -> 3 варианта:
|
|
294
|
+
- (a) Принять как tech-debt -> TD-NNN
|
|
295
|
+
- (b) Исправить вручную -> повторить ревью
|
|
296
|
+
- (c) Отменить задачу -> rollback
|
|
297
|
+
|
|
298
|
+
Checkpoint: `steps.review = {status: done, round: N, verdict: ..., findings_count: N}`
|
|
299
|
+
|
|
300
|
+
### [7] Tech-debt проверка (ВСЕ размеры)
|
|
301
|
+
|
|
302
|
+
Team Lead проверяет 3 источника:
|
|
303
|
+
|
|
304
|
+
1. **Reviewer findings** — MEDIUM/LOW не исправленные в этой задаче
|
|
305
|
+
2. **Implementation deviations** — ищи в коде: mock, simplified, workaround, deferred, TODO, FIXME, HACK
|
|
306
|
+
3. **Skeptic warnings** (L) — не адресованные в коде
|
|
307
|
+
|
|
308
|
+
Если найдено -> добавить TD-NNN в `dev-infra/memory/tech-debt.md`.
|
|
309
|
+
Если нет -> `tech_debt: none` в checkpoint.
|
|
310
|
+
|
|
311
|
+
### [8] Фиксация
|
|
312
|
+
|
|
313
|
+
1. Покажи пользователю итог: что сделано, файлы, тесты, ревью, tech-debt
|
|
314
|
+
2. Обнови tasks.json: status -> done, updated -> сегодня
|
|
315
|
+
3. Обнови progress.md: пересчитать прогресс milestone
|
|
316
|
+
4. Обнови active-context.md: убрать задачу, добавить результат
|
|
317
|
+
5. Очисти checkpoint: `active: false`
|
|
318
|
+
6. Предложи коммит
|