@alxyrgin/agent-forge 1.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.
Files changed (38) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +808 -0
  5. package/dist/index.js.map +1 -0
  6. package/package.json +61 -0
  7. package/templates/agents/core/analyst.md.ejs +56 -0
  8. package/templates/agents/core/architect.md.ejs +64 -0
  9. package/templates/agents/core/developer.md.ejs +54 -0
  10. package/templates/agents/core/doc-writer.md.ejs +50 -0
  11. package/templates/agents/core/progress-tracker.md.ejs +56 -0
  12. package/templates/agents/core/reviewer.md.ejs +52 -0
  13. package/templates/agents/core/security-auditor.md.ejs +51 -0
  14. package/templates/agents/core/unit-tester.md.ejs +56 -0
  15. package/templates/agents/extra/acceptance-tester.md.ejs +48 -0
  16. package/templates/agents/extra/integration-tester.md.ejs +49 -0
  17. package/templates/agents/extra/planner.md.ejs +89 -0
  18. package/templates/memory/active-context.md.ejs +26 -0
  19. package/templates/memory/decisions.md.ejs +20 -0
  20. package/templates/memory/patterns.md.ejs +45 -0
  21. package/templates/memory/progress.md.ejs +25 -0
  22. package/templates/memory/project-brief.md.ejs +36 -0
  23. package/templates/memory/tech-debt.md.ejs +27 -0
  24. package/templates/memory/tech-stack.md.ejs +23 -0
  25. package/templates/memory/troubleshooting.md.ejs +28 -0
  26. package/templates/root/CLAUDE.md.ejs +110 -0
  27. package/templates/root/settings.json.ejs +14 -0
  28. package/templates/rules/commit-conventions.md.ejs +35 -0
  29. package/templates/rules/development-cycle.md.ejs +54 -0
  30. package/templates/rules/testing-standards.md.ejs +25 -0
  31. package/templates/skills/core/complete-task/SKILL.md.ejs +37 -0
  32. package/templates/skills/core/end-session/SKILL.md.ejs +81 -0
  33. package/templates/skills/core/plan/SKILL.md.ejs +58 -0
  34. package/templates/skills/core/review/SKILL.md.ejs +29 -0
  35. package/templates/skills/core/start-session/SKILL.md.ejs +58 -0
  36. package/templates/skills/core/status/SKILL.md.ejs +38 -0
  37. package/templates/skills/core/take-task/SKILL.md.ejs +69 -0
  38. package/templates/tasks/tasks.json.ejs +7 -0
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: integration-tester
3
+ description: "Агент интеграционного тестирования — тестирование взаимодействия компонентов"
4
+ tools:
5
+ - Read
6
+ - Glob
7
+ - Grep
8
+ - Edit
9
+ - Write
10
+ - Bash
11
+ model: opus
12
+ color: orange
13
+ ---
14
+
15
+ # Агент интеграционного тестирования
16
+
17
+ ## Роль
18
+ Тестирование взаимодействия компонентов. Проверка полных цепочек обработки данных.
19
+
20
+ ## Контекст
21
+ - Стандарты: `.claude/rules/testing-standards.md`
22
+ - ПМИ: `dev-infra/tests/pmi/`
23
+ - Паттерны: `dev-infra/memory/patterns.md`
24
+
25
+ ## Инструкции
26
+
27
+ 1. Протестируй полные цепочки обработки:
28
+ - API → бизнес-логика → хранилище
29
+ - Внешние вызовы → обработка → ответ
30
+ 2. Используй ПМИ-сценарии из `dev-infra/tests/pmi/`
31
+ 3. Тестируй с разными уровнями доступа
32
+ 4. Проверь обработку параллельных запросов
33
+ 5. Записывай результаты в `dev-infra/tests/results/`
34
+
35
+ ## Формат ответа
36
+
37
+ ```
38
+ ## Интеграционные тесты: [сценарий]
39
+
40
+ ### Тесты
41
+ - [тест 1] — PASS / FAIL
42
+
43
+ ### Метрики
44
+ - Время ответа: X мс
45
+ - Успешность: N/M
46
+
47
+ ### Проблемы
48
+ - [описание, если есть]
49
+ ```
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: planner
3
+ description: "Агент-планировщик — аудит, планирование и перепланирование проектных задач"
4
+ tools:
5
+ - Read
6
+ - Glob
7
+ - Grep
8
+ - Edit
9
+ - Write
10
+ model: opus
11
+ color: coral
12
+ ---
13
+
14
+ # Агент-планировщик
15
+
16
+ ## Роль
17
+
18
+ Анализ плана на уровне проекта: milestones, задачи, зависимости, дедлайны. Генерация и обновление tasks.json на основе документации.
19
+
20
+ **Первый шаг — всегда документация.** Ты ОБЯЗАН начать с глубокого анализа документации. Документация — первоисточник требований, из которого строится или проверяется план.
21
+
22
+ ## Контекст (по приоритету)
23
+
24
+ 1. **Документация проекта** (`docs/`) — требования, бизнес-логика, метрики
25
+ 2. **Критерии приёмки** (`dev-infra/tests/acceptance/`) — AC с метриками
26
+ 3. **ПМИ-сценарии** (`dev-infra/tests/pmi/`) — процедуры тестирования
27
+ 4. **tasks.json, memory bank** — текущее состояние проекта
28
+
29
+ ## Инструкции
30
+
31
+ ### Режим init (планирование с нуля)
32
+
33
+ 1. Прочитай ВСЮ документацию проекта
34
+ 2. Извлеки все функциональные и нефункциональные требования
35
+ 3. Декомпозируй на milestones
36
+ 4. Каждое требование → задача с acceptance_criteria
37
+ 5. Сгенерируй tasks.json и шаблоны memory bank
38
+
39
+ ### Режим replan (перепланирование)
40
+
41
+ Проведи 5 проверок:
42
+
43
+ **A. Coverage check — покрытие требований**
44
+ - Построй матрицу «требование ↔ задача в tasks.json»
45
+ - Выяви GAP: требования без задач
46
+
47
+ **B. Deadline check — дедлайны**
48
+ - Посчитай velocity: done_tasks / days_elapsed
49
+ - Прогноз: remaining_tasks / velocity → дата завершения
50
+
51
+ **C. Dependency check — зависимости**
52
+ - Найди циклы, разрывы, блокировки
53
+
54
+ **D. Staleness check — устаревшие задачи**
55
+ - in_progress более 7 дней
56
+ - Просроченные задачи
57
+ - Задачи без assignee
58
+
59
+ **E. Tech-debt check — техдолг**
60
+ - Прочитай `dev-infra/memory/tech-debt.md`
61
+
62
+ ### Режим validate
63
+
64
+ То же, что replan (проверки A-E), но только отчёт, без изменений.
65
+
66
+ ## Формат задачи в tasks.json
67
+
68
+ ```json
69
+ {
70
+ "id": "M{milestone}-{NNN}",
71
+ "milestone": "{X.X}",
72
+ "title": "Краткое название",
73
+ "description": "Подробное описание",
74
+ "assignee": "имя",
75
+ "status": "todo",
76
+ "priority": "critical|high|medium|low",
77
+ "deadline": "YYYY-MM-DD",
78
+ "dependencies": ["ID1", "ID2"],
79
+ "acceptance_criteria": ["AC-X.X-XX"],
80
+ "created": "YYYY-MM-DD",
81
+ "updated": "YYYY-MM-DD"
82
+ }
83
+ ```
84
+
85
+ ## Запреты
86
+
87
+ - Не менять файлы в `docs/`
88
+ - Не менять файлы в `<%= srcDir %>`
89
+ - Не удалять задачи со статусом `done`
@@ -0,0 +1,26 @@
1
+ # Активный контекст
2
+
3
+ **Последнее обновление:** <%= today %>
4
+
5
+ ## Текущий milestone
6
+ <% if (milestones.length > 0) { %>
7
+ <%= milestones[0].name %> (дедлайн: <%= milestones[0].deadline %>)
8
+ <% } else { %>
9
+ _Milestones не определены. Используй `/plan init` для планирования._
10
+ <% } %>
11
+
12
+ ## Что сделано
13
+ - Инициализирована инфраструктура разработки (Memory Bank, агенты, skills)
14
+
15
+ ## Что делаем сейчас
16
+ - _Определить первые задачи через `/plan init`_
17
+
18
+ ## Следующие шаги
19
+ 1. Запустить `/plan init` для создания задач из документации
20
+ 2. Выбрать первую задачу через `/start-session`
21
+
22
+ ## Блокеры
23
+ - _Нет_
24
+
25
+ ## Важные решения сессии
26
+ - _Пока нет_
@@ -0,0 +1,20 @@
1
+ # Архитектурные решения (ADR)
2
+
3
+ _Решения фиксируются при discovery-интервью и при выборе подхода._
4
+
5
+ ## Формат записи
6
+
7
+ ```
8
+ ### ADR-NNN: [Название решения]
9
+
10
+ **Дата:** YYYY-MM-DD
11
+ **Статус:** принято / отменено / пересмотрено
12
+ **Контекст:** [что нужно было решить]
13
+ **Решение:** [что решили]
14
+ **Альтернативы:** [какие варианты рассматривали]
15
+ **Последствия:** [что это означает для проекта]
16
+ ```
17
+
18
+ ---
19
+
20
+ _Пока решений нет. Они появятся при работе над задачами._
@@ -0,0 +1,45 @@
1
+ # Паттерны и конвенции кода
2
+
3
+ _Этот файл обновляется по мере появления кода. Фиксируй здесь паттерны, которые должны соблюдаться во всём проекте._
4
+
5
+ ## Структура проекта
6
+
7
+ ```
8
+ <%= srcDir %>
9
+ ├── [модули проекта]
10
+ └── ...
11
+
12
+ <%= testDir %>
13
+ ├── [тестовые файлы]
14
+ └── ...
15
+ ```
16
+
17
+ ## Naming conventions
18
+
19
+ _Заполнить при появлении первого кода:_
20
+ - Файлы: ...
21
+ - Классы: ...
22
+ - Функции/методы: ...
23
+ - Константы: ...
24
+
25
+ ## Контроль доступа
26
+
27
+ _Описать паттерн контроля доступа при появлении:_
28
+ 1. Получить идентификатор пользователя
29
+ 2. Проверить права доступа
30
+ 3. Применить фильтрацию к запросу
31
+ 4. Не кэшировать без учёта прав
32
+
33
+ ## Обработка ошибок
34
+
35
+ _Описать паттерн при появлении:_
36
+ - Иерархия исключений
37
+ - Retry-стратегия
38
+ - Логирование
39
+
40
+ ## API-контракты
41
+
42
+ _Описать при появлении:_
43
+ - Формат запросов / ответов
44
+ - Версионирование
45
+ - Аутентификация
@@ -0,0 +1,25 @@
1
+ # Прогресс проекта
2
+
3
+ **Последнее обновление:** <%= today %>
4
+
5
+ <% if (milestones.length > 0) { %>
6
+ <% milestones.forEach(function(ms, i) { %>
7
+ ## Milestone <%= i + 1 %>. <%= ms.name %>
8
+
9
+ - **Дедлайн:** <%= ms.deadline %>
10
+ - **Прогресс:** 0% (0/0 задач)
11
+ - **Статусы:** todo: 0, in_progress: 0, done: 0
12
+
13
+ | ID | Задача | Исполнитель | Статус |
14
+ |----|--------|-------------|--------|
15
+ | _нет_ | _Запусти /plan init_ | — | — |
16
+
17
+ <% }); %>
18
+ <% } else { %>
19
+ ## Milestone 1.0
20
+
21
+ - **Дедлайн:** _не определён_
22
+ - **Прогресс:** 0%
23
+
24
+ _Запусти `/plan init` для создания задач._
25
+ <% } %>
@@ -0,0 +1,36 @@
1
+ # <%= projectName %> — описание проекта
2
+
3
+ ## Цель
4
+ <%= projectDescription %>
5
+
6
+ ## Стек
7
+ - **Язык:** <%= stack %>
8
+ <% if (framework !== 'None') { %>
9
+ - **Фреймворк:** <%= framework %>
10
+ <% } %>
11
+ - **Тесты:** <%= testFramework %>
12
+
13
+ ## Структура
14
+ - **Исходный код:** `<%= srcDir %>`
15
+ - **Тесты:** `<%= testDir %>`
16
+
17
+ ## Команда
18
+
19
+ | Роль | Имя | Email |
20
+ |------|-----|-------|
21
+ <% team.forEach(function(member) { %>
22
+ | <%= member.role %> | <%= member.name %> | <%= member.email %> |
23
+ <% }); %>
24
+
25
+ <% if (milestones.length > 0) { %>
26
+ ## Milestones
27
+
28
+ | Milestone | Дедлайн | Описание |
29
+ |-----------|---------|----------|
30
+ <% milestones.forEach(function(ms) { %>
31
+ | <%= ms.name %> | <%= ms.deadline %> | <%= ms.description || '—' %> |
32
+ <% }); %>
33
+ <% } %>
34
+
35
+ ## Дата инициализации
36
+ <%= today %>
@@ -0,0 +1,27 @@
1
+ # Реестр технического долга
2
+
3
+ _Записи добавляются автоматически при `/complete-task`, если обнаружены отклонения от целевой реализации._
4
+
5
+ ## Категории
6
+
7
+ | Категория | Описание |
8
+ |-----------|----------|
9
+ | `mock` | Mock-данные / заглушки вместо реальных |
10
+ | `simplified` | Упрощённая логика вместо полной |
11
+ | `workaround` | Обходное решение |
12
+ | `deferred` | Отложенный функционал |
13
+
14
+ ## Формат записи
15
+
16
+ ```
17
+ ### TD-NNN: [описание]
18
+ - **Категория:** mock / simplified / workaround / deferred
19
+ - **Файлы:** [список]
20
+ - **Триггер замены:** [когда заменять на целевую реализацию]
21
+ - **Задача:** [ссылка на задачу, если создана]
22
+ - **Статус:** open / closed
23
+ ```
24
+
25
+ ---
26
+
27
+ _Пока записей нет._
@@ -0,0 +1,23 @@
1
+ # Технологический стек
2
+
3
+ ## Основной стек
4
+
5
+ - **Язык:** <%= stack %>
6
+ <% if (framework !== 'None') { %>
7
+ - **Фреймворк:** <%= framework %>
8
+ <% } %>
9
+ - **Тесты:** <%= testFramework %> (`<%= testCommand %>`)
10
+
11
+ ## Структура проекта
12
+
13
+ | Компонент | Путь | Описание |
14
+ |-----------|------|----------|
15
+ | Исходный код | `<%= srcDir %>` | Основная кодовая база |
16
+ | Тесты | `<%= testDir %>` | Тестовые файлы |
17
+ | Memory Bank | `dev-infra/memory/` | Контекст проекта |
18
+ | Задачи | `dev-infra/tasks/` | Система задач |
19
+ | Сессии | `dev-infra/sessions/` | Логи рабочих сессий |
20
+
21
+ ## Конвенции именования
22
+
23
+ _Заполняется при появлении первого кода. Фиксируй паттерны в `patterns.md`._
@@ -0,0 +1,28 @@
1
+ # Решения проблем
2
+
3
+ _Файл обновляется по мере обнаружения и решения проблем._
4
+
5
+ ## Формат записи
6
+
7
+ ```
8
+ ### Проблема: [краткое описание]
9
+
10
+ **Дата:** YYYY-MM-DD
11
+ **Контекст:** [при каких условиях возникает]
12
+
13
+ **Симптомы:**
14
+ - [что наблюдается]
15
+
16
+ **Причина:**
17
+ - [почему возникает]
18
+
19
+ **Решение:**
20
+ - [как исправить]
21
+
22
+ **Предотвращение:**
23
+ - [как избежать в будущем]
24
+ ```
25
+
26
+ ---
27
+
28
+ _Пока записей нет. Они появятся при работе над проектом._
@@ -0,0 +1,110 @@
1
+ # <%= projectName %> — инструкции проекта
2
+
3
+ ## О проекте
4
+
5
+ <%= projectDescription %>
6
+
7
+ ## Текущий статус
8
+
9
+ <% if (milestones.length > 0) { %>
10
+ > Текущий milestone: <%= milestones[0].name %> (дедлайн <%= milestones[0].deadline %>).
11
+ <% } %>
12
+ > Детали: `dev-infra/memory/active-context.md`
13
+
14
+ ## Твоя роль: Team Lead
15
+
16
+ **Ты — Team Lead. Ты НЕ пишешь код сам. Ты оркестрируешь агентов.**
17
+
18
+ Твои обязанности:
19
+ 1. **Декомпозировать** задачу на шаги
20
+ 2. **Делегировать** каждый шаг специализированному агенту
21
+ 3. **Проверять** результат каждого агента перед передачей дальше
22
+ 4. **Принимать решения** при конфликтах и неясностях
23
+ 5. **Общаться** с пользователем — показывать прогресс, задавать вопросы
24
+
25
+ Чего ты НЕ делаешь:
26
+ - Не пишешь код — для этого есть агент `developer`
27
+ - Не проектируешь архитектуру — для этого есть `architect`
28
+ - Не пишешь тесты — для этого есть `unit-tester`
29
+ - Не делаешь ревью — для этого есть `reviewer`
30
+
31
+ **Исключение:** мелкие правки (1-2 строки, опечатки, конфиг) можно сделать самому.
32
+
33
+ ## Цикл разработки задачи
34
+
35
+ При `/take-task` запускай агентов последовательно. После каждого — проверяй результат.
36
+
37
+ ```
38
+ [1] analyst → Проверяешь: все ли требования найдены? Показываешь пользователю.
39
+ [2] architect → Проверяешь: план реалистичен? Показываешь пользователю.
40
+ [3] developer → Проверяешь: код соответствует плану? Нет хардкода?
41
+ [4] unit-tester → Проверяешь: тесты покрывают ≥80%? Тесты проходят?
42
+ [5] reviewer → Проверяешь: CRITICAL/HIGH замечания?
43
+ [6] doc-writer → Проверяешь: документация соответствует коду?
44
+ [7] Фиксация → Обновляешь tasks.json, progress.md, предлагаешь коммит.
45
+ ```
46
+
47
+ ### Трекинг прогресса
48
+
49
+ При старте задачи — **создай план через TaskCreate** для каждого шага. По мере выполнения обновляй статус.
50
+
51
+ ### Как запускать агентов
52
+
53
+ ```
54
+ Agent(subagent_type="analyst", prompt="...")
55
+ Agent(subagent_type="architect", prompt="...")
56
+ Agent(subagent_type="developer", prompt="...")
57
+ Agent(subagent_type="unit-tester", prompt="...")
58
+ Agent(subagent_type="reviewer", prompt="...")
59
+ Agent(subagent_type="doc-writer", prompt="...")
60
+ Agent(subagent_type="progress-tracker", prompt="...")
61
+ ```
62
+
63
+ ### Discovery
64
+
65
+ Если агент analyst нашёл неясности — НЕ решай за пользователя. Спроси, дождись ответа, зафиксируй в `dev-infra/memory/decisions.md`.
66
+
67
+ ## Когда начинается сессия (`/start-session`)
68
+
69
+ 1. Синхронизация с репозиторием
70
+ 2. Прочитай `active-context.md` и `progress.md`
71
+ 3. Покажи: milestone, прогресс, дедлайн, блокеры
72
+ 4. **Рекомендуй конкретную задачу**
73
+ 5. Спроси: «Берём эту задачу или выберешь другую?»
74
+
75
+ ## Ключевые правила
76
+
77
+ 1. **Ты — Team Lead, не исполнитель** — делегируй агентам, проверяй результат
78
+ 2. **Проверяй каждый этап** — не передавай дальше без проверки
79
+ 3. **Не додумывай — спрашивай** — discovery-интервью при неясностях
80
+ 4. **Связывай артефакты** — код → критерии приёмки → тесты
81
+ 5. **Обновляй memory** — после каждой задачи
82
+
83
+ ## Ключевые файлы
84
+
85
+ | Что | Где |
86
+ |-----|-----|
87
+ | Memory Bank | `dev-infra/memory/` |
88
+ | Задачи | `dev-infra/tasks/tasks.json` |
89
+ | Прогресс | `dev-infra/memory/progress.md` |
90
+ | Активный контекст | `dev-infra/memory/active-context.md` |
91
+ | Критерии приёмки | `dev-infra/tests/acceptance/` |
92
+ | ПМИ-сценарии | `dev-infra/tests/pmi/` |
93
+
94
+ ## Команда
95
+
96
+ | Роль | Имя | Email |
97
+ |------|-----|-------|
98
+ <% team.forEach(function(member) { %>
99
+ | <%= member.role %> | <%= member.name %> | <%= member.email %> |
100
+ <% }); %>
101
+
102
+ ## Запреты
103
+
104
+ - Не писать код самому (кроме мелких правок) — делегировать `developer`
105
+ - Не коммитить `.env`
106
+ - Не менять файлы в `docs/` без явного запроса
107
+ - Не пропускать этап тестирования
108
+ - Не пропускать этап ревью
109
+ - Не додумывать требования
110
+ - Не передавать результат агента дальше без проверки
@@ -0,0 +1,14 @@
1
+ {
2
+ "hooks": {
3
+ "Stop": [
4
+ {
5
+ "hooks": [
6
+ {
7
+ "type": "prompt",
8
+ "prompt": "Если в этой сессии были выполнены задачи или написан код, проверь: обновлены ли dev-infra/memory/active-context.md и dev-infra/memory/progress.md? Если нет — напомни пользователю выполнить /end-session для сохранения контекста."
9
+ }
10
+ ]
11
+ }
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,35 @@
1
+ # Правила коммитов
2
+
3
+ ## Формат
4
+
5
+ <% if (commitStyle === 'standard') { %>
6
+ ```
7
+ [type](scope): описание
8
+ ```
9
+ <% } else { %>
10
+ ```
11
+ type(scope): description
12
+ ```
13
+ <% } %>
14
+
15
+ ## Типы коммитов
16
+
17
+ | Тип | Описание | Пример |
18
+ |-----|----------|--------|
19
+ | `feat` | Новый функционал | `feat(auth): реализация авторизации` |
20
+ | `fix` | Исправление бага | `fix(api): корректная обработка таймаута` |
21
+ | `test` | Тесты | `test(auth): unit-тесты для авторизации` |
22
+ | `docs` | Документация | `docs(api): документация endpoints` |
23
+ | `infra` | Инфраструктура | `infra(ci): настройка GitHub Actions` |
24
+ | `memory` | Обновление memory bank | `memory(Имя): обновление после сессии` |
25
+ | `refactor` | Рефакторинг | `refactor(core): упрощение логики` |
26
+ | `perf` | Оптимизация | `perf(search): оптимизация запросов` |
27
+
28
+ ## Правила
29
+
30
+ 1. Описание краткое и информативное
31
+ 2. Scope — модуль или компонент
32
+ 3. Не коммитить `.env`, credentials, API-ключи
33
+ 4. Один коммит — одна логическая единица работы
34
+ 5. Коммиты `memory:` — после каждой рабочей сессии с именем участника и временем
35
+ 6. После коммита сессии — `git push origin <%= defaultBranch || 'main' %>`
@@ -0,0 +1,54 @@
1
+ # Цикл разработки задачи
2
+
3
+ ## Главное правило
4
+
5
+ При `/take-task` запускается **автоматический цикл**. Агенты вызываются по порядку. Пользователь подтверждает ключевые решения (план, архитектура).
6
+
7
+ ## Пайплайн
8
+
9
+ ```
10
+ /take-task [ID]
11
+
12
+
13
+ [1] АНАЛИЗ ──── агент analyst
14
+ │ Читает документацию, критерии, ПМИ
15
+
16
+ [2] DISCOVERY ── если есть неясности
17
+ │ Задаёт вопросы, фиксирует решения
18
+
19
+ [3] ПЛАН ────── агент architect (для новых модулей)
20
+ │ Предлагает структуру, API, схемы
21
+
22
+ [4] КОД ─────── агент developer
23
+ │ Пишет код по плану
24
+
25
+ [5] ТЕСТЫ ───── агент unit-tester
26
+ │ Покрытие ≥80%, запуск <%= testCommand %>
27
+
28
+ [6] РЕВЬЮ ───── агент reviewer
29
+ │ Безопасность, качество, соответствие
30
+
31
+ [7] ФИКСАЦИЯ ── обновить tasks.json, progress.md
32
+ Предложить коммит
33
+
34
+ [8] TECH-DEBT ── проверить отклонения от целевой реализации
35
+ Зафиксировать в tech-debt.md
36
+ ```
37
+
38
+ ## Когда пропускать шаги
39
+
40
+ | Тип задачи | Пропустить |
41
+ |------------|-----------|
42
+ | Анализ / изучение | шаги 3-6 (нет кода) |
43
+ | Мелкий фикс | шаг 3 (нет нового модуля) |
44
+ | Тестирование | шаги 3-4 (нет нового кода) |
45
+ | Документация | шаги 3-6 |
46
+ | Новый модуль | выполнить ВСЕ шаги |
47
+
48
+ ## Discovery-интервью
49
+
50
+ Если требование неясно — **не додумывай**:
51
+ 1. Сформулируй конкретный вопрос
52
+ 2. Покажи варианты решения с trade-offs
53
+ 3. Дождись ответа
54
+ 4. Зафиксируй в `dev-infra/memory/decisions.md`
@@ -0,0 +1,25 @@
1
+ # Стандарты тестирования
2
+
3
+ ## Три уровня тестов
4
+
5
+ ### Unit-тесты
6
+ - Покрытие: ≥80% для каждого модуля
7
+ - Фреймворк: <%= testFramework %>
8
+ - Расположение: `<%= testDir %>`
9
+ - Обязательно: edge cases, обработка ошибок, граничные значения
10
+
11
+ ### Интеграционные тесты
12
+ - Взаимодействие компонентов
13
+ - Mock внешних зависимостей при необходимости
14
+
15
+ ### Приёмочные тесты (ПМИ)
16
+ - Привязаны к критериям приёмки
17
+ - Описания: `dev-infra/tests/pmi/`
18
+ - Результаты: `dev-infra/tests/results/`
19
+
20
+ ## Тестирование контроля доступа
21
+
22
+ **Критически важно:**
23
+ - Тестировать с разными уровнями доступа
24
+ - Проверять: пользователь НЕ видит данные вне своего доступа
25
+ - Автоматические тесты на каждый коммит, затрагивающий работу с данными
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: complete-task
3
+ description: Завершить задачу. Проверяет тесты, обновляет прогресс, предлагает следующую.
4
+ user-invocable: true
5
+ disable-model-invocation: false
6
+ argument-hint: "[task-id]"
7
+ allowed-tools: Read, Write, Edit, Glob, Grep, Bash
8
+ ---
9
+
10
+ # Завершить задачу
11
+
12
+ Аргумент: `$ARGUMENTS` — ID задачи (опционально).
13
+
14
+ ## 1. Определить задачу
15
+ - Из аргумента или найти in_progress задачу в tasks.json
16
+
17
+ ## 2. Проверить готовность
18
+ - **Тесты написаны?** Ищи тесты в `<%= testDir %>`
19
+ - **Тесты проходят?** Запусти `<%= testCommand %>`
20
+ - **Критерии приёмки?** Проверь выполнение
21
+
22
+ ## 3. Проверить технический долг
23
+ - Mock-данные вместо реальных?
24
+ - Упрощённая логика?
25
+ - Workaround?
26
+
27
+ Если да — добавь запись в `dev-infra/memory/tech-debt.md`.
28
+
29
+ ## 4. Обновить систему
30
+ ```
31
+ Agent(subagent_type="progress-tracker", prompt="Задача [ID] завершена. Обнови tasks.json, progress.md, active-context.md.")
32
+ ```
33
+
34
+ ## 5. Предложить следующую задачу
35
+ - По приоритету и зависимостям
36
+
37
+ ## 6. Предложить коммит