@alxyrgin/agent-forge 1.0.0 → 3.1.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 +384 -96
- package/dist/index.js +355 -58
- 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
|
@@ -2,53 +2,187 @@
|
|
|
2
2
|
|
|
3
3
|
## Главное правило
|
|
4
4
|
|
|
5
|
-
При `/take-task` запускается
|
|
5
|
+
При `/take-task` запускается автоматический цикл. Агенты вызываются по порядку. Пользователь подтверждает только ключевые решения (план, архитектура). Маршрутизация — по verdict каждого агента (см. quality-gates.md).
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Feature-size маршрутизация
|
|
8
|
+
|
|
9
|
+
| Размер | Критерии | Шаги |
|
|
10
|
+
|--------|----------|------|
|
|
11
|
+
| **S** | 1-2 файла, фикс, конфиг | 6 шагов |
|
|
12
|
+
| **M** | 3-5 файлов, новая функция | 8 шагов |
|
|
13
|
+
| **L** | >5 файлов, новый модуль | 10 шагов |
|
|
14
|
+
|
|
15
|
+
## S-pipeline (6 шагов)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
[0] CHECKPOINT
|
|
19
|
+
[1] КОД ─────── developer
|
|
20
|
+
[2] ТЕСТЫ ───── tester(unit) → inspector
|
|
21
|
+
[3] QUICK REVIEW ── reviewer(mode: quick, 1 раунд)
|
|
22
|
+
[4] TECH-DEBT
|
|
23
|
+
[5] ФИКСАЦИЯ
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
S-задачи теперь включают quick review (security + контроль доступа + critical bugs) и inspector после тестов.
|
|
27
|
+
|
|
28
|
+
## M-pipeline (8 шагов)
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
[0] CHECKPOINT
|
|
32
|
+
[1] АНАЛИЗ ──── analyst
|
|
33
|
+
[2] TDD (RED) ── tester(mode: tdd) — failing тесты по tdd_anchors
|
|
34
|
+
[3] КОД + ТЕСТЫ (GREEN) ── developer → tester(unit) → inspector (per-feature)
|
|
35
|
+
[4] РЕВЬЮ ───── reviewer (full, макс. 3 раунда)
|
|
36
|
+
[5] TECH-DEBT
|
|
37
|
+
[6] ФИКСАЦИЯ
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
M-задачи включают TDD-якоря: сначала failing тесты, потом код.
|
|
41
|
+
|
|
42
|
+
## L-pipeline (10 шагов)
|
|
8
43
|
|
|
9
44
|
```
|
|
10
45
|
/take-task [ID]
|
|
11
46
|
│
|
|
12
47
|
▼
|
|
13
|
-
[
|
|
14
|
-
│
|
|
48
|
+
[0] CHECKPOINT ─── проверить checkpoint.yml
|
|
49
|
+
│ Если active → предложить восстановление
|
|
50
|
+
│ Обновить: active=true, task_id, started_at
|
|
51
|
+
│ ✎ checkpoint
|
|
15
52
|
▼
|
|
16
|
-
[
|
|
17
|
-
│
|
|
53
|
+
[1] АНАЛИЗ ─────── Agent(analyst)
|
|
54
|
+
│ → JSON с verdict COMPLETE/NEEDS_DISCOVERY
|
|
55
|
+
│ Gate: NEEDS_DISCOVERY → discovery → retry
|
|
56
|
+
│ ✎ checkpoint: steps.analysis = {status, verdict, key_findings}
|
|
18
57
|
▼
|
|
19
|
-
[
|
|
20
|
-
│
|
|
58
|
+
[2] АРХИТЕКТУРА ── Параллельно:
|
|
59
|
+
│ Agent(architect) → план
|
|
60
|
+
│ Agent(reviewer, mode: plan_review) → второе мнение
|
|
61
|
+
│ Gate: оба READY/APPROVE → next
|
|
62
|
+
│ Gate: конфликт → architect исправляет → retry
|
|
63
|
+
│ Пользователь подтверждает план
|
|
64
|
+
│ ✎ checkpoint: steps.architecture = {status, plan_summary, files}
|
|
21
65
|
▼
|
|
22
|
-
[
|
|
23
|
-
│
|
|
66
|
+
[3] REALITY CHECK ─ Agent(skeptic) → mirage detection
|
|
67
|
+
│ Gate: PASS → next
|
|
68
|
+
│ Gate: PASS_WITH_WARNINGS → developer получит warnings
|
|
69
|
+
│ Gate: FAIL → вернуть architect
|
|
70
|
+
│ ✎ checkpoint: steps.skeptic = {status, verdict, warnings}
|
|
24
71
|
▼
|
|
25
|
-
[
|
|
26
|
-
│
|
|
72
|
+
[4] TDD + КОД + ТЕСТЫ ── per-feature цикл:
|
|
73
|
+
│
|
|
74
|
+
│ Для каждой фичи в плане architect:
|
|
75
|
+
│ ┌─────────────────────────────────────────────┐
|
|
76
|
+
│ │ 4a. Agent(tester, mode: tdd) → failing tests│
|
|
77
|
+
│ │ по tdd_anchors из tasks.json │
|
|
78
|
+
│ │ 4b. Agent(developer) → реализация │
|
|
79
|
+
│ │ 4c. Agent(tester, level: unit) → GREEN check │
|
|
80
|
+
│ │ + edge cases сверх якорей │
|
|
81
|
+
│ │ 4d. Agent(inspector) → качество тестов │
|
|
82
|
+
│ │ Gate: REQUEST_CHANGES → tester fixes │
|
|
83
|
+
│ └─────────────────────────────────────────────┘
|
|
84
|
+
│ Порядок фич — по зависимостям из плана architect
|
|
85
|
+
│ Покрытие ≥80% на выходе из цикла
|
|
86
|
+
│ ✎ checkpoint: steps.developer = {status, files_changed, files_remaining}
|
|
27
87
|
▼
|
|
28
|
-
[
|
|
29
|
-
│
|
|
88
|
+
[5] РЕВЬЮ ─────── Agent(reviewer, max 3 rounds)
|
|
89
|
+
│ + проверка контроля доступа (check_security: true)
|
|
90
|
+
│ Gate: APPROVE → next
|
|
91
|
+
│ Gate: REQUEST_CHANGES → developer fixes → re-review
|
|
92
|
+
│ Gate: ESCALATE (round 3) → пользователь решает
|
|
93
|
+
│ ✎ checkpoint: steps.review = {status, round, findings_count}
|
|
30
94
|
▼
|
|
31
|
-
[
|
|
32
|
-
|
|
95
|
+
[6] TECH-DEBT ──── Team Lead проверяет 3 источника:
|
|
96
|
+
│ 1. Reviewer findings (MEDIUM/LOW не исправленные)
|
|
97
|
+
│ 2. Implementation deviations (mock, simplified, workaround)
|
|
98
|
+
│ 3. Skeptic warnings (не адресованные в коде)
|
|
99
|
+
│ Если найдено → TD-NNN в tech-debt.md
|
|
100
|
+
│ Если нет → tech_debt: none в checkpoint
|
|
33
101
|
▼
|
|
34
|
-
[
|
|
35
|
-
|
|
102
|
+
[7] ФИКСАЦИЯ ──── tasks.json(done), progress.md, active-context.md
|
|
103
|
+
checkpoint.yml(active: false)
|
|
104
|
+
Предложить коммит
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Checkpoint
|
|
108
|
+
|
|
109
|
+
Файл `dev-infra/memory/checkpoint.yml` обновляется после КАЖДОГО шага (символ ✎).
|
|
110
|
+
|
|
111
|
+
Формат checkpoint:
|
|
112
|
+
```yaml
|
|
113
|
+
active: true
|
|
114
|
+
task_id: TASK-XXX
|
|
115
|
+
task_title: Название
|
|
116
|
+
feature_size: S|M|L
|
|
117
|
+
current_step: analysis|architecture|skeptic|developer|review|tech_debt|finalize
|
|
118
|
+
started_at: ISO-8601
|
|
119
|
+
steps:
|
|
120
|
+
analysis: {status: done, verdict: COMPLETE}
|
|
121
|
+
architecture: {status: done, plan_summary: "...", files: [...]}
|
|
122
|
+
skeptic: {status: done, verdict: PASS_WITH_WARNINGS, warnings: [...]}
|
|
123
|
+
developer: {status: in_progress, files_changed: [...], features_done: 2, features_total: 4}
|
|
124
|
+
review: {status: pending}
|
|
125
|
+
tech_debt: {status: pending}
|
|
36
126
|
```
|
|
37
127
|
|
|
38
|
-
##
|
|
128
|
+
## Таблица пропуска шагов
|
|
129
|
+
|
|
130
|
+
| Размер | Выполняются | Пропускаются |
|
|
131
|
+
|--------|------------|--------------|
|
|
132
|
+
| **S (6)** | [0] checkpoint, [1] код, [2] тесты+inspector, [3] quick-review, [4] tech-debt, [5] фиксация | анализ, архитектура, skeptic |
|
|
133
|
+
| **M (8)** | [0] checkpoint, [1] анализ, [2] TDD(RED), [3] код+тесты+inspector, [4] ревью(full), [5] tech-debt, [6] фиксация | архитектура параллельная, skeptic |
|
|
134
|
+
| **L (10)** | ВСЕ шаги | Ничего |
|
|
135
|
+
|
|
136
|
+
Шаг 0 (checkpoint) и tech-debt выполняются ВСЕГДА.
|
|
137
|
+
|
|
138
|
+
## Per-feature loop
|
|
139
|
+
|
|
140
|
+
Формализованный цикл для шага «Код + Тесты»:
|
|
141
|
+
|
|
142
|
+
1. Architect предоставляет список фич с порядком (по зависимостям)
|
|
143
|
+
2. Для каждой фичи выполняется полный мини-цикл: tdd(RED) → developer → tester(GREEN) → inspector
|
|
144
|
+
3. При FAIL на любом этапе — откат к developer для исправления
|
|
145
|
+
4. Переход к следующей фиче только после APPROVE от inspector
|
|
146
|
+
5. Checkpoint обновляется после каждой фичи: features_done + 1
|
|
147
|
+
|
|
148
|
+
## Wave-execution (для milestone)
|
|
149
|
+
|
|
150
|
+
При `/feature [milestone] --wave N`:
|
|
39
151
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
| Тестирование | шаги 3-4 (нет нового кода) |
|
|
45
|
-
| Документация | шаги 3-6 |
|
|
46
|
-
| Новый модуль | выполнить ВСЕ шаги |
|
|
152
|
+
1. Из tasks.json выбираются задачи для wave N (поле `wave` в задаче)
|
|
153
|
+
2. Задачи выполняются последовательно через /take-task pipeline
|
|
154
|
+
3. Между задачами обновляется checkpoint
|
|
155
|
+
4. После волны: smoke test (<%= testCommand %>), обновление прогресса, коммит
|
|
47
156
|
|
|
48
|
-
|
|
157
|
+
Волны определяются при планировании (/plan init):
|
|
158
|
+
- Wave 1 — задачи без зависимостей
|
|
159
|
+
- Wave 2 — зависят от Wave 1
|
|
160
|
+
- Wave 3 — полировка, документация, tech-debt
|
|
49
161
|
|
|
50
|
-
|
|
162
|
+
## Integration тесты
|
|
163
|
+
|
|
164
|
+
tester(integration) вызывается в /audit-wave перед сдачей milestone. Не в каждой задаче.
|
|
165
|
+
|
|
166
|
+
## Фазовый подход для milestone
|
|
167
|
+
|
|
168
|
+
Перед стартом нового milestone — discuss phase:
|
|
169
|
+
1. Обсудить scope, приоритеты, зависимости
|
|
170
|
+
2. Зафиксировать решения в decisions.md
|
|
171
|
+
3. Разбить на волны через /plan init (поле wave в задачах)
|
|
172
|
+
|
|
173
|
+
## Discovery
|
|
174
|
+
|
|
175
|
+
Если требование неясно:
|
|
51
176
|
1. Сформулируй конкретный вопрос
|
|
52
177
|
2. Покажи варианты решения с trade-offs
|
|
53
178
|
3. Дождись ответа
|
|
54
|
-
4. Зафиксируй в `dev-infra/memory/decisions.md`
|
|
179
|
+
4. Зафиксируй в `dev-infra/memory/decisions.md` (формат ADR)
|
|
180
|
+
|
|
181
|
+
## Связь с артефактами
|
|
182
|
+
|
|
183
|
+
Перед началом задачи загрузить:
|
|
184
|
+
- tasks.json → описание, acceptance_criteria (с метриками!), pmi_scenarios, risks, tdd_anchors
|
|
185
|
+
- dev-infra/tests/acceptance/ → конкретные метрики
|
|
186
|
+
- dev-infra/tests/pmi/ → процедуры тестирования
|
|
187
|
+
|
|
188
|
+
Reviewer получает AC с полными метриками (не только ID).
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Quality Gates — ворота пайплайна
|
|
2
|
+
|
|
3
|
+
Формальные правила маршрутизации между этапами разработки. Team Lead проверяет verdict каждого агента и направляет пайплайн по соответствующему пути.
|
|
4
|
+
|
|
5
|
+
## Матрица маршрутизации
|
|
6
|
+
|
|
7
|
+
### Анализ -> Архитектура
|
|
8
|
+
|
|
9
|
+
| Verdict analyst | Действие |
|
|
10
|
+
|-----------------|----------|
|
|
11
|
+
| COMPLETE | Передать результат architect |
|
|
12
|
+
| NEEDS_DISCOVERY | Показать вопросы пользователю -> дождаться ответа -> зафиксировать в decisions.md -> повторить analyst |
|
|
13
|
+
|
|
14
|
+
### Архитектура -> Reality Check
|
|
15
|
+
|
|
16
|
+
Параллельно запускаются architect и reviewer(plan_review). Решение принимается по комбинации:
|
|
17
|
+
|
|
18
|
+
| architect | reviewer(plan) | Действие |
|
|
19
|
+
|-----------|---------------|----------|
|
|
20
|
+
| READY | APPROVE | Передать skeptic |
|
|
21
|
+
| READY | REQUEST_CHANGES | architect исправляет по замечаниям -> повторить оба |
|
|
22
|
+
| NEEDS_INPUT | любой | Запросить данные у пользователя -> повторить architect |
|
|
23
|
+
|
|
24
|
+
Конфликт architect vs reviewer: если architect считает план готовым, но reviewer видит проблемы — приоритет у reviewer. Пользователь подтверждает финальный план.
|
|
25
|
+
|
|
26
|
+
### Reality Check -> Код
|
|
27
|
+
|
|
28
|
+
| Verdict skeptic | Действие |
|
|
29
|
+
|-----------------|----------|
|
|
30
|
+
| PASS | Передать developer |
|
|
31
|
+
| PASS_WITH_WARNINGS | Передать developer, включить warnings в prompt |
|
|
32
|
+
| FAIL | Вернуть architect для исправления -> повторить skeptic |
|
|
33
|
+
|
|
34
|
+
### Код -> Тесты -> Inspector
|
|
35
|
+
|
|
36
|
+
Per-feature цикл:
|
|
37
|
+
|
|
38
|
+
| Этап | Verdict | Действие |
|
|
39
|
+
|------|---------|----------|
|
|
40
|
+
| developer | DONE | Передать tester |
|
|
41
|
+
| developer | BLOCKED | Разобрать блокировку с пользователем |
|
|
42
|
+
| tester | PASS (>=80%) | Передать inspector |
|
|
43
|
+
| tester | FAIL | Передать developer для исправления -> повторить tester |
|
|
44
|
+
| inspector | APPROVE | Перейти к следующей фиче или к ревью |
|
|
45
|
+
| inspector | REQUEST_CHANGES | Передать tester для исправления тестов -> повторить inspector |
|
|
46
|
+
|
|
47
|
+
### Ревью -> Финализация
|
|
48
|
+
|
|
49
|
+
| Verdict reviewer | Раунд | Действие |
|
|
50
|
+
|------------------|-------|----------|
|
|
51
|
+
| APPROVE | любой | Перейти к tech-debt |
|
|
52
|
+
| REQUEST_CHANGES | 1-2 | developer исправляет -> reviewer повторяет (раунд N+1) |
|
|
53
|
+
| REQUEST_CHANGES | 3 | Эскалация — ESCALATE |
|
|
54
|
+
| ESCALATE | 3 | Показать пользователю все findings |
|
|
55
|
+
|
|
56
|
+
### Эскалация (Escalation Protocol)
|
|
57
|
+
|
|
58
|
+
После 3 раундов ревью с неразрешёнными CRITICAL:
|
|
59
|
+
|
|
60
|
+
1. Team Lead показывает пользователю все нерешённые findings
|
|
61
|
+
2. Пользователь выбирает:
|
|
62
|
+
- **(a) Принять как tech-debt** — записать TD-NNN, продолжить
|
|
63
|
+
- **(b) Исправить вручную** — пользователь правит, повторить ревью
|
|
64
|
+
- **(c) Отменить задачу** — rollback по rollback-protocol.md
|
|
65
|
+
3. Решение фиксируется в `dev-infra/memory/decisions.md` (формат ADR)
|
|
66
|
+
|
|
67
|
+
## Quick Review (S-задачи)
|
|
68
|
+
|
|
69
|
+
S-задачи проходят облегчённое ревью (mode: quick):
|
|
70
|
+
- 1 раунд (без повторов)
|
|
71
|
+
- Проверяется только: security, контроль доступа, критические баги
|
|
72
|
+
- MEDIUM/LOW не блокируют, идут в tech-debt
|
|
73
|
+
- APPROVE / REQUEST_CHANGES (только для CRITICAL)
|
|
74
|
+
|
|
75
|
+
## Правила
|
|
76
|
+
|
|
77
|
+
1. Каждый verdict обрабатывается — нет «проигнорировать и продолжить»
|
|
78
|
+
2. Максимум 3 retry на любом этапе (кроме discovery — без лимита)
|
|
79
|
+
3. При сбое агента (garbage output) — 1 retry с уточнённым prompt, затем эскалация
|
|
80
|
+
4. Checkpoint обновляется после каждого gate
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Rollback Protocol — процедура отката
|
|
2
|
+
|
|
3
|
+
## При ошибке агента
|
|
4
|
+
|
|
5
|
+
| Тип ошибки | Действие |
|
|
6
|
+
|------------|----------|
|
|
7
|
+
| Compilation error | developer retry с конкретной ошибкой в prompt |
|
|
8
|
+
| Tests crash (не FAIL, а crash) | tester диагностирует -> developer исправляет |
|
|
9
|
+
| Agent returns garbage | 1 retry с уточнённым prompt -> при повторе — эскалация |
|
|
10
|
+
| Agent timeout | Retry с меньшим scope (разбить задачу) |
|
|
11
|
+
| Repeated failure (3+) | Остановить пайплайн, показать пользователю, спросить |
|
|
12
|
+
|
|
13
|
+
## При отмене задачи mid-pipeline
|
|
14
|
+
|
|
15
|
+
1. Проверить uncommitted changes: `git status`
|
|
16
|
+
2. Если есть изменения — `git stash` с описательным сообщением:
|
|
17
|
+
```
|
|
18
|
+
git stash push -m "WIP: [task_id] — отмена на шаге [step]"
|
|
19
|
+
```
|
|
20
|
+
3. Обновить checkpoint:
|
|
21
|
+
```yaml
|
|
22
|
+
active: false
|
|
23
|
+
status: aborted
|
|
24
|
+
abort_reason: "причина"
|
|
25
|
+
stash_ref: "stash@{0}" # если был stash
|
|
26
|
+
```
|
|
27
|
+
4. Обновить tasks.json: status -> `todo` (не оставлять `in_progress`)
|
|
28
|
+
5. Обновить active-context.md: убрать текущую задачу
|
|
29
|
+
6. Уведомить пользователя о результате отката
|
|
30
|
+
|
|
31
|
+
## При восстановлении после отмены
|
|
32
|
+
|
|
33
|
+
1. Прочитать checkpoint — найти abort_reason и stash_ref
|
|
34
|
+
2. Предложить пользователю:
|
|
35
|
+
- **(a) Восстановить** — `git stash pop`, продолжить с checkpoint
|
|
36
|
+
- **(b) Отбросить** — `git stash drop`, начать задачу заново
|
|
37
|
+
- **(c) Отложить** — оставить stash, взять другую задачу
|
|
38
|
+
|
|
39
|
+
## Decision Tree
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Ошибка возникла?
|
|
43
|
+
|-- Агент вернул ошибку
|
|
44
|
+
| |-- Понятная ошибка (compilation, test fail)
|
|
45
|
+
| | '-- Передать ошибку developer/tester -> retry
|
|
46
|
+
| '-- Непонятная ошибка (garbage, timeout)
|
|
47
|
+
| |-- Retry #1 с уточнённым prompt
|
|
48
|
+
| '-- Retry failed -> показать пользователю
|
|
49
|
+
|-- Пользователь отменил задачу
|
|
50
|
+
| '-- Stash -> checkpoint(aborted) -> tasks(todo)
|
|
51
|
+
'-- Сессия оборвалась (crash, disconnect)
|
|
52
|
+
'-- Checkpoint сохраняет состояние -> при /take-task предложит восстановление
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Правила
|
|
56
|
+
|
|
57
|
+
1. Никогда не использовать `git reset --hard` без явного запроса пользователя
|
|
58
|
+
2. Всегда использовать `git stash` вместо отбрасывания изменений
|
|
59
|
+
3. Checkpoint обновляется до операции отката (чтобы можно было восстановиться)
|
|
60
|
+
4. Stash-сообщения всегда содержат task_id для трассировки
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Shared Resources — реестр singleton-ресурсов
|
|
2
|
+
|
|
3
|
+
## Правило
|
|
4
|
+
|
|
5
|
+
Singleton-ресурсы (подключения к БД, клиенты API, логгеры, кэши) создаются ОДИН раз и переиспользуются. Дублирование singleton — баг.
|
|
6
|
+
|
|
7
|
+
## Реестр
|
|
8
|
+
|
|
9
|
+
| Ресурс | Файл | Тип | Описание |
|
|
10
|
+
|--------|------|-----|----------|
|
|
11
|
+
| _пока ресурсов нет_ | | | |
|
|
12
|
+
|
|
13
|
+
## Правила создания
|
|
14
|
+
|
|
15
|
+
1. **Проверь реестр** — возможно, ресурс уже существует
|
|
16
|
+
2. **Создай в одном месте** — singleton factory в выделенном файле
|
|
17
|
+
3. **Добавь в реестр** — обнови таблицу выше
|
|
18
|
+
4. **Не создавай дубликатов** — если ресурс есть, используй существующий
|
|
19
|
+
|
|
20
|
+
## Паттерн
|
|
21
|
+
|
|
22
|
+
<% if (stack === 'typescript') { %>
|
|
23
|
+
```typescript
|
|
24
|
+
// <%= srcDir %>lib/database.ts — singleton
|
|
25
|
+
let instance: Database | null = null;
|
|
26
|
+
|
|
27
|
+
export function getDatabase(): Database {
|
|
28
|
+
if (!instance) {
|
|
29
|
+
instance = new Database(process.env.DATABASE_URL);
|
|
30
|
+
}
|
|
31
|
+
return instance;
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
<% } else if (stack === 'python') { %>
|
|
35
|
+
```python
|
|
36
|
+
# <%= srcDir %>lib/database.py — singleton
|
|
37
|
+
_instance: Database | None = None
|
|
38
|
+
|
|
39
|
+
def get_database() -> Database:
|
|
40
|
+
global _instance
|
|
41
|
+
if _instance is None:
|
|
42
|
+
_instance = Database(os.environ["DATABASE_URL"])
|
|
43
|
+
return _instance
|
|
44
|
+
```
|
|
45
|
+
<% } else if (stack === 'go') { %>
|
|
46
|
+
```go
|
|
47
|
+
// <%= srcDir %>lib/database.go — singleton
|
|
48
|
+
var (
|
|
49
|
+
dbOnce sync.Once
|
|
50
|
+
dbInstance *Database
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
func GetDatabase() *Database {
|
|
54
|
+
dbOnce.Do(func() {
|
|
55
|
+
dbInstance = NewDatabase(os.Getenv("DATABASE_URL"))
|
|
56
|
+
})
|
|
57
|
+
return dbInstance
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
<% } else { %>
|
|
61
|
+
```
|
|
62
|
+
// Singleton pattern: создай ресурс один раз, используй везде
|
|
63
|
+
```
|
|
64
|
+
<% } %>
|
|
65
|
+
|
|
66
|
+
## Антипаттерн
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
// НЕ ДЕЛАЙ ТАК — создание нового подключения в каждом обработчике
|
|
70
|
+
function handleRequest() {
|
|
71
|
+
const db = new Database(url); // каждый запрос — новое подключение!
|
|
72
|
+
}
|
|
73
|
+
```
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code
|
|
3
|
+
description: |
|
|
4
|
+
Ad-hoc написание кода без полного пайплайна спецификаций.
|
|
5
|
+
Plan -> Tests -> Code -> Review.
|
|
6
|
+
|
|
7
|
+
Use when: «напиши код», «write code», «code», «закодь», «реализуй»
|
|
8
|
+
user-invocable: true
|
|
9
|
+
argument-hint: "[description]"
|
|
10
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, Agent
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Ad-hoc код
|
|
14
|
+
|
|
15
|
+
Аргумент: `$ARGUMENTS` — описание того, что нужно написать.
|
|
16
|
+
|
|
17
|
+
## Фаза 1. Быстрый план
|
|
18
|
+
|
|
19
|
+
На основе описания:
|
|
20
|
+
1. Определи файлы для создания/изменения
|
|
21
|
+
2. Определи подход (новый модуль, расширение существующего, фикс)
|
|
22
|
+
3. Покажи пользователю:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
## План
|
|
26
|
+
- Файлы: [список]
|
|
27
|
+
- Подход: [описание]
|
|
28
|
+
- Тесты: [что покрыть]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Спроси: «Выполнить?»
|
|
32
|
+
|
|
33
|
+
**Checkpoint:** план утверждён.
|
|
34
|
+
|
|
35
|
+
## Фаза 2. Тесты (TDD, если применимо)
|
|
36
|
+
|
|
37
|
+
Если задача нетривиальная (>1 функция):
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Agent(subagent_type="tester", prompt="
|
|
41
|
+
mode: tdd
|
|
42
|
+
Создай failing тесты для: [описание].
|
|
43
|
+
Файлы: [expected test files].
|
|
44
|
+
Директория тестов: <%= testDir %>
|
|
45
|
+
Фреймворк: <%= testFramework %>
|
|
46
|
+
")
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Checkpoint:** тесты написаны.
|
|
50
|
+
|
|
51
|
+
## Фаза 3. Код
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Agent(subagent_type="developer", prompt="
|
|
55
|
+
Реализуй: [описание].
|
|
56
|
+
План: [план из фазы 1].
|
|
57
|
+
Failing тесты: [если есть].
|
|
58
|
+
Сделай тесты GREEN.
|
|
59
|
+
Запусти: <%= testCommand %>
|
|
60
|
+
")
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Checkpoint:** код написан.
|
|
64
|
+
|
|
65
|
+
## Фаза 4. Quick Review
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Agent(subagent_type="reviewer", prompt="
|
|
69
|
+
mode: quick
|
|
70
|
+
Проверь: [файлы от developer].
|
|
71
|
+
Security, контроль доступа, критические баги.
|
|
72
|
+
")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Checkpoint:** ревью пройдено.
|
|
76
|
+
|
|
77
|
+
## Фаза 5. Итог
|
|
78
|
+
|
|
79
|
+
Покажи: файлы, тесты, ревью. Предложи коммит.
|
|
80
|
+
|
|
81
|
+
## Final Check
|
|
82
|
+
|
|
83
|
+
- [ ] Код написан
|
|
84
|
+
- [ ] Тесты проходят
|
|
85
|
+
- [ ] Quick review пройден
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: complete-task
|
|
3
|
-
description: Завершить задачу. Проверяет тесты, обновляет прогресс,
|
|
3
|
+
description: Завершить задачу. Проверяет тесты, smoke verification, обновляет прогресс, очищает checkpoint.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
argument-hint: "[task-id]"
|
|
@@ -14,24 +14,37 @@ allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
|
14
14
|
## 1. Определить задачу
|
|
15
15
|
- Из аргумента или найти in_progress задачу в tasks.json
|
|
16
16
|
|
|
17
|
-
## 2.
|
|
17
|
+
## 2. Smoke verification
|
|
18
|
+
- Запусти полный набор тестов: `<%= testCommand %>`
|
|
19
|
+
- Если тесты падают — **не завершай задачу**, сообщи пользователю
|
|
20
|
+
|
|
21
|
+
## 3. Проверить готовность
|
|
18
22
|
- **Тесты написаны?** Ищи тесты в `<%= testDir %>`
|
|
19
|
-
- **Тесты проходят?**
|
|
23
|
+
- **Тесты проходят?** Результат из шага 2
|
|
20
24
|
- **Критерии приёмки?** Проверь выполнение
|
|
21
25
|
|
|
22
|
-
##
|
|
26
|
+
## 4. Проверить технический долг (ОБЯЗАТЕЛЕН для всех размеров — S/M/L)
|
|
23
27
|
- Mock-данные вместо реальных?
|
|
24
28
|
- Упрощённая логика?
|
|
25
29
|
- Workaround?
|
|
26
30
|
|
|
27
31
|
Если да — добавь запись в `dev-infra/memory/tech-debt.md`.
|
|
28
32
|
|
|
29
|
-
##
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
## 5. Обновить систему
|
|
34
|
+
|
|
35
|
+
Team Lead обновляет напрямую:
|
|
36
|
+
1. `dev-infra/tasks/tasks.json` — статус задачи → `done`, updated → сегодня
|
|
37
|
+
2. `dev-infra/memory/progress.md` — пересчитать прогресс по milestone
|
|
38
|
+
3. `dev-infra/memory/active-context.md` — обновить текущий контекст
|
|
39
|
+
|
|
40
|
+
## 6. Очистить checkpoint
|
|
41
|
+
|
|
42
|
+
Обнови `dev-infra/memory/checkpoint.yml`:
|
|
43
|
+
```yaml
|
|
44
|
+
active: false
|
|
32
45
|
```
|
|
33
46
|
|
|
34
|
-
##
|
|
47
|
+
## 7. Предложить следующую задачу
|
|
35
48
|
- По приоритету и зависимостям
|
|
36
49
|
|
|
37
|
-
##
|
|
50
|
+
## 8. Предложить коммит
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: done
|
|
3
|
+
description: |
|
|
4
|
+
Финализация фичи: обновление документации, архивация, коммит.
|
|
5
|
+
|
|
6
|
+
Use when: «фича готова», «finalize», «done», «завершить фичу», «финализируй фичу»
|
|
7
|
+
user-invocable: true
|
|
8
|
+
argument-hint: "[feature-name or milestone]"
|
|
9
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, Agent
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Финализация фичи
|
|
13
|
+
|
|
14
|
+
Аргумент: `$ARGUMENTS` — название фичи или milestone.
|
|
15
|
+
|
|
16
|
+
## Фаза 1. Проверка состояния
|
|
17
|
+
|
|
18
|
+
1. Прочитай tasks.json — все задачи фичи в статусе done?
|
|
19
|
+
2. Прочитай progress.md — прогресс актуален?
|
|
20
|
+
3. Прочитай tech-debt.md — есть ли незакрытый TD?
|
|
21
|
+
|
|
22
|
+
Если есть незавершённые задачи — показать список, спросить.
|
|
23
|
+
|
|
24
|
+
**Checkpoint:** состояние проверено.
|
|
25
|
+
|
|
26
|
+
## Фаза 2. Документация
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Agent(subagent_type="librarian", prompt="
|
|
30
|
+
Проверь документацию для [фича/milestone]:
|
|
31
|
+
- Memory bank актуален?
|
|
32
|
+
- Progress обновлён?
|
|
33
|
+
- Active-context актуален?
|
|
34
|
+
- Нет устаревших ссылок?
|
|
35
|
+
")
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Если OUTDATED — обновить необходимые файлы.
|
|
39
|
+
|
|
40
|
+
**Checkpoint:** документация проверена.
|
|
41
|
+
|
|
42
|
+
## Фаза 3. Обновление PK Files
|
|
43
|
+
|
|
44
|
+
Обнови:
|
|
45
|
+
- `dev-infra/memory/progress.md` — итоговый прогресс
|
|
46
|
+
- `dev-infra/memory/active-context.md` — убрать завершённые задачи
|
|
47
|
+
- `dev-infra/memory/tech-debt.md` — закрыть resolved TD
|
|
48
|
+
|
|
49
|
+
## Фаза 4. Завершение
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
## Фича [название] финализирована
|
|
53
|
+
|
|
54
|
+
- Задач завершено: N
|
|
55
|
+
- Tech-debt: K open, M resolved
|
|
56
|
+
- Документация: актуальна
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Предложи коммит.
|
|
60
|
+
|
|
61
|
+
## Final Check
|
|
62
|
+
|
|
63
|
+
- [ ] Все задачи done
|
|
64
|
+
- [ ] Документация актуальна
|
|
65
|
+
- [ ] PK files обновлены
|
|
66
|
+
- [ ] Коммит предложен
|