@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.
Files changed (64) hide show
  1. package/README.md +384 -96
  2. package/dist/index.js +355 -58
  3. package/dist/index.js.map +1 -1
  4. package/package.json +12 -2
  5. package/templates/agents/documentation/gatekeeper.md.ejs +83 -0
  6. package/templates/agents/documentation/librarian.md.ejs +80 -0
  7. package/templates/agents/documentation/verifier.md.ejs +92 -0
  8. package/templates/agents/documentation/writer.md.ejs +189 -0
  9. package/templates/agents/pipeline/analyst.md.ejs +65 -0
  10. package/templates/agents/{core → pipeline}/architect.md.ejs +38 -1
  11. package/templates/agents/pipeline/developer.md.ejs +75 -0
  12. package/templates/agents/pipeline/inspector.md.ejs +123 -0
  13. package/templates/agents/pipeline/planner.md.ejs +211 -0
  14. package/templates/agents/pipeline/reviewer.md.ejs +158 -0
  15. package/templates/agents/pipeline/skeptic.md.ejs +105 -0
  16. package/templates/agents/pipeline/tester.md.ejs +134 -0
  17. package/templates/agents/planning/decomposer.md.ejs +103 -0
  18. package/templates/agents/planning/interviewer.md.ejs +104 -0
  19. package/templates/agents/planning/researcher.md.ejs +96 -0
  20. package/templates/agents/planning/validator.md.ejs +97 -0
  21. package/templates/agents/security/auditor.md.ejs +105 -0
  22. package/templates/agents/security/deployer.md.ejs +81 -0
  23. package/templates/agents/security/prompter.md.ejs +87 -0
  24. package/templates/agents/security/scaffolder.md.ejs +75 -0
  25. package/templates/hooks/protect-docs.sh.ejs +25 -0
  26. package/templates/memory/checkpoint.yml.ejs +21 -0
  27. package/templates/memory/tech-debt.md.ejs +9 -1
  28. package/templates/root/CLAUDE.md.ejs +228 -30
  29. package/templates/root/settings.json.ejs +15 -1
  30. package/templates/rules/agent-output-format.md.ejs +80 -0
  31. package/templates/rules/context-loading.md.ejs +70 -0
  32. package/templates/rules/development-cycle.md.ejs +163 -29
  33. package/templates/rules/quality-gates.md.ejs +80 -0
  34. package/templates/rules/rollback-protocol.md.ejs +60 -0
  35. package/templates/rules/shared-resources.md.ejs +73 -0
  36. package/templates/skills/core/code/SKILL.md.ejs +85 -0
  37. package/templates/skills/core/complete-task/SKILL.md.ejs +22 -9
  38. package/templates/skills/core/done/SKILL.md.ejs +66 -0
  39. package/templates/skills/core/end-session/SKILL.md.ejs +14 -6
  40. package/templates/skills/core/review/SKILL.md.ejs +1 -1
  41. package/templates/skills/core/start-session/SKILL.md.ejs +73 -10
  42. package/templates/skills/core/take-task/SKILL.md.ejs +279 -30
  43. package/templates/skills/core/test/SKILL.md.ejs +200 -0
  44. package/templates/skills/extra/audit-wave/SKILL.md.ejs +58 -0
  45. package/templates/skills/extra/dashboard/SKILL.md.ejs +64 -0
  46. package/templates/skills/extra/decompose/SKILL.md.ejs +72 -0
  47. package/templates/skills/extra/feature/SKILL.md.ejs +83 -0
  48. package/templates/skills/extra/interview/SKILL.md.ejs +66 -0
  49. package/templates/skills/extra/prompts/SKILL.md.ejs +65 -0
  50. package/templates/skills/extra/security/SKILL.md.ejs +77 -0
  51. package/templates/skills/extra/skill-master/SKILL.md.ejs +51 -0
  52. package/templates/skills/extra/spec/SKILL.md.ejs +111 -0
  53. package/templates/skills/extra/techspec/SKILL.md.ejs +97 -0
  54. package/templates/skills/extra/write-report/SKILL.md.ejs +26 -0
  55. package/templates/agents/core/analyst.md.ejs +0 -56
  56. package/templates/agents/core/developer.md.ejs +0 -54
  57. package/templates/agents/core/doc-writer.md.ejs +0 -50
  58. package/templates/agents/core/progress-tracker.md.ejs +0 -56
  59. package/templates/agents/core/reviewer.md.ejs +0 -52
  60. package/templates/agents/core/security-auditor.md.ejs +0 -51
  61. package/templates/agents/core/unit-tester.md.ejs +0 -56
  62. package/templates/agents/extra/acceptance-tester.md.ejs +0 -48
  63. package/templates/agents/extra/integration-tester.md.ejs +0 -49
  64. 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
- [1] АНАЛИЗ ──── агент analyst
14
- Читает документацию, критерии, ПМИ
48
+ [0] CHECKPOINT ─── проверить checkpoint.yml
49
+ Если active предложить восстановление
50
+ │ Обновить: active=true, task_id, started_at
51
+ │ ✎ checkpoint
15
52
 
16
- [2] DISCOVERY ── если есть неясности
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
- [3] ПЛАН ────── агент architect (для новых модулей)
20
- Предлагает структуру, API, схемы
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
- [4] КОД ─────── агент developer
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
- [5] ТЕСТЫ ───── агент unit-tester
26
- Покрытие ≥80%, запуск <%= testCommand %>
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
- [6] РЕВЬЮ ───── агент reviewer
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
- [7] ФИКСАЦИЯ ── обновить tasks.json, progress.md
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
- [8] TECH-DEBT ── проверить отклонения от целевой реализации
35
- Зафиксировать в tech-debt.md
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
- | Анализ / изучение | шаги 3-6 (нет кода) |
43
- | Мелкий фикс | шаг 3 (нет нового модуля) |
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
- ## Discovery-интервью
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
- - **Тесты проходят?** Запусти `<%= testCommand %>`
23
+ - **Тесты проходят?** Результат из шага 2
20
24
  - **Критерии приёмки?** Проверь выполнение
21
25
 
22
- ## 3. Проверить технический долг
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
- ## 4. Обновить систему
30
- ```
31
- Agent(subagent_type="progress-tracker", prompt="Задача [ID] завершена. Обнови tasks.json, progress.md, active-context.md.")
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
- ## 5. Предложить следующую задачу
47
+ ## 7. Предложить следующую задачу
35
48
  - По приоритету и зависимостям
36
49
 
37
- ## 6. Предложить коммит
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
+ - [ ] Коммит предложен