@gian-tiaga/eda 1.0.5 → 2.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 (63) hide show
  1. package/MIGRATION.md +60 -80
  2. package/README.md +116 -36
  3. package/agents/eda-plan-review-api/agent.json +9 -0
  4. package/agents/eda-plan-review-api/prompt.md +35 -0
  5. package/agents/eda-plan-review-architecture/agent.json +9 -0
  6. package/agents/eda-plan-review-architecture/prompt.md +35 -0
  7. package/agents/eda-plan-review-database/agent.json +9 -0
  8. package/agents/eda-plan-review-database/prompt.md +35 -0
  9. package/agents/eda-plan-review-execution/agent.json +9 -0
  10. package/agents/eda-plan-review-execution/prompt.md +35 -0
  11. package/agents/eda-plan-review-feasibility/agent.json +9 -0
  12. package/agents/eda-plan-review-feasibility/prompt.md +35 -0
  13. package/agents/eda-plan-review-frontend/agent.json +9 -0
  14. package/agents/eda-plan-review-frontend/prompt.md +35 -0
  15. package/agents/eda-plan-review-performance/agent.json +9 -0
  16. package/agents/eda-plan-review-performance/prompt.md +35 -0
  17. package/agents/eda-plan-review-previous/agent.json +9 -0
  18. package/agents/eda-plan-review-previous/prompt.md +28 -0
  19. package/agents/eda-plan-review-requirements/agent.json +9 -0
  20. package/agents/eda-plan-review-requirements/prompt.md +35 -0
  21. package/agents/eda-plan-review-rules/agent.json +9 -0
  22. package/agents/eda-plan-review-rules/prompt.md +35 -0
  23. package/agents/eda-plan-review-security/agent.json +9 -0
  24. package/agents/eda-plan-review-security/prompt.md +35 -0
  25. package/agents/eda-plan-review-verification/agent.json +9 -0
  26. package/agents/eda-plan-review-verification/prompt.md +35 -0
  27. package/agents/eda-review-api/prompt.md +4 -3
  28. package/agents/eda-review-architecture/prompt.md +4 -3
  29. package/agents/eda-review-business/agent.json +15 -0
  30. package/agents/eda-review-business/prompt.md +47 -0
  31. package/agents/eda-review-code-quality/prompt.md +5 -4
  32. package/agents/eda-review-correctness/prompt.md +4 -3
  33. package/agents/eda-review-database/prompt.md +4 -3
  34. package/agents/eda-review-documentation/prompt.md +4 -3
  35. package/agents/eda-review-frontend/prompt.md +4 -3
  36. package/agents/eda-review-performance/prompt.md +4 -3
  37. package/agents/eda-review-plan-alignment/prompt.md +4 -3
  38. package/agents/eda-review-previous-reviews/prompt.md +5 -4
  39. package/agents/eda-review-references/prompt.md +4 -3
  40. package/agents/eda-review-rules/prompt.md +4 -3
  41. package/agents/eda-review-security/prompt.md +4 -3
  42. package/agents/eda-review-tests/prompt.md +4 -3
  43. package/bin/cli.js +2 -2
  44. package/lib/install.js +524 -368
  45. package/package.json +3 -2
  46. package/skills/eda-aim/SKILL.md +1 -1
  47. package/skills/eda-business/SKILL.md +162 -0
  48. package/skills/eda-discover-automations/SKILL.md +4 -2
  49. package/skills/eda-explore/SKILL.md +7 -6
  50. package/skills/eda-fix/SKILL.md +5 -4
  51. package/skills/eda-fix-by-review/SKILL.md +41 -57
  52. package/skills/eda-manual-test/SKILL.md +13 -5
  53. package/skills/eda-orhestra/SKILL.md +14 -11
  54. package/skills/eda-plan/SKILL.md +45 -42
  55. package/skills/eda-plan-execute/SKILL.md +8 -6
  56. package/skills/eda-plan-polish/SKILL.md +53 -169
  57. package/skills/eda-plan-review/SKILL.md +189 -0
  58. package/skills/eda-plan-review-fix/SKILL.md +88 -0
  59. package/skills/eda-polish/SKILL.md +19 -31
  60. package/skills/eda-prepare-ai/SKILL.md +7 -2
  61. package/skills/eda-review/SKILL.md +21 -21
  62. package/skills/eda-roadmap/SKILL.md +6 -3
  63. package/skills/eda-send-review/SKILL.md +8 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "1.0.5",
3
+ "version": "2.1.0",
4
4
  "description": "Пакет скилов и специализированных агентов eda-* для Claude Code и Codex CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,6 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@inquirer/checkbox": "^4.3.2",
43
- "@inquirer/select": "^5.1.5"
43
+ "@inquirer/select": "^5.1.5",
44
+ "yaml": "^2.9.0"
44
45
  }
45
46
  }
@@ -9,7 +9,7 @@ description: 'Согласует одну или несколько провер
9
9
 
10
10
  ## Настройки
11
11
 
12
- Прочитай только раздел `aim` из `docs/settings.yaml`, если файл есть. Применяй только `version: 2`.
12
+ Прочитай только раздел `aim` из `docs/settings.yaml`, если файл есть. Применяй только `version: 3`.
13
13
 
14
14
  ```yaml
15
15
  aim:
@@ -0,0 +1,162 @@
1
+ ---
2
+ name: eda-business
3
+ description: 'Создаёт и обновляет согласованное описание проекта, требований и бизнес-логики по тематическим карточкам.'
4
+ ---
5
+
6
+ # Скил: Бизнес-логика (eda-business)
7
+
8
+ Создаёшь и поддерживаешь согласованную бизнес-документацию проекта: короткое оглавление `docs/business.md` и самостоятельные тематические карточки в `docs/business/`. Каждая карточка подробно фиксирует значимые решения своей темы, но не засоряется сведениями соседних тем и деталями конкретной реализации.
9
+
10
+ ## Вход из сообщения пользователя
11
+
12
+ Текст рядом с вызовом скилла в текущем сообщении — главный вход. Извлеки названную тему, требования, ограничения, ответы на бизнес-вопросы и прямые указания по существующим карточкам.
13
+
14
+ - Если пользователь назвал тему, работай только с ней. Не расширяй вызов до полного аудита проекта.
15
+ - Если тема не названа, проанализируй проект и предложи упорядоченный список тем, которые действительно стоит описать. Для полного каталога первой предлагай `about`, затем только доказанные проектом домены и сценарии.
16
+ - Явные требования из текущего сообщения считай подтверждёнными. Выводы из кода, тестов и других документов сначала показывай как предложения.
17
+
18
+ Старое обсуждение не считай входом, если пользователь явно не связал его с текущим вызовом.
19
+
20
+ ## Главные правила
21
+
22
+ 1. **Только business-документация.** Меняй лишь `docs/business.md` и Markdown-файлы непосредственно в `docs/business/`. Не правь код, настройки, правила, архитектуру, планы, тесты или другие документы.
23
+ 2. **Целевое поведение.** Карточки фиксируют согласованные требования и бизнес-логику, даже если код пока им не соответствует. Фактические отличия вынеси в последний раздел `Расхождения с реализацией`.
24
+ 3. **Никаких догадок как фактов.** Код помогает найти существующие сценарии и вопросы, но не подтверждает продуктовые решения сам по себе.
25
+ 4. **Одна тема за раз.** После согласования общего списка полно опиши и подтверди значимые решения текущей темы до записи, затем переходи к следующей.
26
+ 5. **В индекс — только готовое.** Не записывай предложенные, незавершённые или спорные темы в `docs/business.md` и не создавай для них черновые карточки.
27
+ 6. **Самодостаточные карточки.** Основной текст не должен требовать чтения исходного кода, плана или внешнего материала, чтобы понять бизнес-правило.
28
+ 7. **Не проектируй конкретную реализацию.** Не назначай язык, фреймворк, библиотеку, конкретную СУБД, схему данных, классы, функции, внутренние модули или порядок технических изменений.
29
+ 8. **Сохраняй подтверждённое.** При обновлении не удаляй и не ослабляй существующее правило, не переименовывай и не удаляй карточку без явного решения пользователя.
30
+ 9. **Полнота без шума.** Зафиксируй все подтверждённые детали, которые меняют целевое поведение темы: правила, выбранные алгоритмы, состояния, переходы, ограничения, исключения и наблюдаемые результаты. Не сокращай сложную тему ради краткости; убирай повторы, общие рассуждения и факты, не влияющие на правило.
31
+ 10. **Строгая граница темы.** Карточка описывает только названную тему. Сведения о соседнем домене, внутреннем модуле или другой карточке опускай; если у них есть самостоятельное бизнес-значение, предложи отдельную тему, но не включай её в текущую.
32
+ 11. **`about` — только обзор.** Это не сводная бизнес-спецификация и не каталог остальных карточек. Кратко опиши сам проект и перечисли его основные пользовательские возможности; не раскладывай их по модулям и не детализируй правила, сценарии и исключения других тем.
33
+ 12. **Карточка не привязана к коду.** Код, тесты и конфиги используй для поиска вопросов и проверки текущего поведения, но пиши карточку устойчивым предметным языком. Не включай пути и строки исходников, имена классов, функций, файлов и внутренних модулей — в том числе в `about` и `Расхождения с реализацией`.
34
+ 13. **Алгоритм допустим, стек — нет.** Фиксируй выбранный функциональный или security-механизм, если он определяет поведение продукта: например, JWT либо непрозрачные токены с хранением в базе данных, правила выпуска, срока действия, обновления и отзыва. Не регламентируй язык, framework, библиотеку, конкретную СУБД, таблицы и способ программной сборки механизма, если это не отдельное подтверждённое ограничение продукта.
35
+
36
+ ## Интерактивные вопросы
37
+
38
+ Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
39
+
40
+ - Claude Code: используй `AskUserQuestion`.
41
+ - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос с 2–3 вариантами, рекомендацией и остановись до ответа.
42
+ - Codex exec / неинтерактивный запуск: не читай stdin. Если требуется решение или подтверждение, заверши `blocked: нужен ответ пользователя`, перечисли варианты и не записывай неподтверждённые файлы.
43
+ - Не запускай команды, ожидающие интерактивный ввод в терминале.
44
+
45
+ Задавай пакетами не больше трёх связанных вопросов. Не спрашивай факты, которые можно надёжно выяснить из проекта.
46
+
47
+ ## Процесс
48
+
49
+ ### 1. Прочитать существующий контекст
50
+
51
+ Прочитай `docs/business.md` и только карточки, которые относятся к текущей теме. Затем изучи минимальный набор релевантных источников, достаточный для понимания именно этой темы. Для `about` обычно достаточно основного README, метаданных проекта и пользовательских точек входа; не обходи каждый внутренний модуль, route, модель или тест.
52
+
53
+ Не загружай все карточки и весь код без необходимости. Разделяй:
54
+
55
+ - подтверждённые требования пользователя;
56
+ - уже записанные бизнес-правила;
57
+ - наблюдаемое поведение реализации;
58
+ - гипотезы и вопросы.
59
+
60
+ ### 2. Выбрать темы при пустом вызове
61
+
62
+ Если тема не задана, составь короткий список только из реально применимых и непересекающихся тем. Для каждой одной фразой укажи, что именно будет описано. Не используй обязательный универсальный набор и не создавай тему для каждого технического модуля: `auth`, `posts`, `payments` и другие названия допустимы только при наличии самостоятельных правил продукта.
63
+
64
+ Покажи список через `AskUserQuestion` и попроси подтвердить его или изменить. До подтверждения ничего не записывай. После ответа прорабатывай темы последовательно. Если работа прервана, следующий пустой вызов заново анализирует индекс и предлагает только отсутствующие или требующие актуализации темы.
65
+
66
+ ### 3. Согласовать текущую тему
67
+
68
+ Сначала сформулируй суть темы в одном-двух предложениях. Затем собери все конкретные решения, необходимые для полного описания целевого поведения этой темы. Требования, термины, сценарии, состояния, ограничения, исключения и критерии приёмки добавляй по смыслу, а не ради заполнения универсального чеклиста. Не пропускай значимую конкретику только потому, что карточка получится длинной.
69
+
70
+ Например, карточка аутентификации может подробно фиксировать выбранный вид токенов, их выпуск, срок действия, обновление, отзыв, завершение сессий и значимые ошибки. В ней допустимо выбрать JWT или токены, хранящиеся в базе данных, но не следует назначать язык, framework, библиотеку, конкретную СУБД, таблицы, классы и файлы.
71
+
72
+ Для `about` подготовь короткое описание проекта и компактный список его основных возможностей. Не включай аудиторию, решаемую проблему, границы, общие ограничения или пользовательские сценарии отдельными разделами, если пользователь их явно не запросил и они не нужны для самого краткого описания. Не упоминай устройство внутренних модулей и не пересказывай содержимое тематических карточек.
73
+
74
+ Сравни с реализацией только подтверждённые правила непосредственно текущей темы. Расхождение описывай как отличие наблюдаемого поведения от целевого, без ссылок на исходники и без пересказа устройства кода. В `Расхождения с реализацией` не добавляй наблюдения о соседних модулях, случайно замеченные дефекты, технический долг и неполноту других карточек. Для `about` не перечисляй пофункциональные расхождения: они относятся к отдельным тематическим карточкам. Если прямого существенного расхождения по теме нет, напиши `Известных расхождений не обнаружено.`
75
+
76
+ Покажи человеку короткий текст будущей карточки целиком и запроси итоговое подтверждение через `AskUserQuestion`. Если остаётся спорное решение, сначала закрой его отдельным вопросом. Не записывай карточку до подтверждения.
77
+
78
+ ### 4. Записать карточку и индекс
79
+
80
+ Используй стабильное имя файла в lowercase ASCII kebab-case: `docs/business/<topic>.md`.
81
+
82
+ У обычной тематической карточки нет обязательного набора содержательных разделов. Выбирай структуру по сложности темы и фиксируй в ней всю значимую подтверждённую конкретику без лишних разделов, например:
83
+
84
+ ```markdown
85
+ # <Название темы>
86
+
87
+ <краткое описание темы>
88
+
89
+ ## Правила
90
+
91
+ - <только необходимые согласованные правила>
92
+
93
+ ## Расхождения с реализацией
94
+
95
+ <подтверждённые отличия с доказательствами либо «Известных расхождений не обнаружено.»>
96
+ ```
97
+
98
+ Если отдельный раздел `Правила` не нужен, не создавай его. Для сложной темы добавь столько смысловых разделов, сколько требуется, чтобы не смешивать правила, алгоритмы, состояния, исключения и критерии. Для простой темы не создавай пустые или формальные разделы.
99
+
100
+ Для `about.md` используй простой обзорный формат:
101
+
102
+ ```markdown
103
+ # О проекте
104
+
105
+ <краткое описание проекта>
106
+
107
+ ## Основные возможности
108
+
109
+ - <возможность на уровне пользователя>
110
+
111
+ ## Расхождения с реализацией
112
+
113
+ Известных расхождений не обнаружено.
114
+ ```
115
+
116
+ Сохраняй `Расхождения с реализацией` последним разделом любой карточки.
117
+
118
+ Создай или обнови `docs/business.md` как короткое оглавление только существующих согласованных карточек:
119
+
120
+ ```markdown
121
+ # Бизнес-логика проекта
122
+
123
+ | Описание | Карточка |
124
+ |---|---|
125
+ | Краткое описание проекта и основные возможности | [О проекте](business/about.md) |
126
+ | Регистрация, вход, восстановление доступа и права пользователей | [Авторизация](business/auth.md) |
127
+ ```
128
+
129
+ Описание должно позволять другому скилу решить, нужна ли карточка для текущей задачи, не открывая её. В индексе не должно быть статусов, планов будущих тем или содержания самих карточек.
130
+
131
+ ### 5. Проверить результат
132
+
133
+ Убедись, что:
134
+
135
+ - индекс содержит только существующие согласованные карточки и ровно две колонки `Описание` и `Карточка`;
136
+ - новая или обновлённая карточка соответствует подтверждённому содержанию;
137
+ - карточка не содержит сведений о соседних темах и не раздута необязательными разделами;
138
+ - `about` остаётся коротким обзором проекта и его основных возможностей без описания внутренних модулей;
139
+ - сложная тема подробно фиксирует все значимые подтверждённые правила, алгоритмы, состояния и исключения;
140
+ - текст карточки не ссылается на файлы, строки, классы, функции и внутренние модули текущей реализации;
141
+ - выбранный механизм поведения отделён от языка, framework, библиотеки, конкретной СУБД и схемы реализации;
142
+ - каждое правило однозначно и проверяемо на уровне поведения;
143
+ - техническая реализация не выдана за бизнес-требование;
144
+ - раздел `Расхождения с реализацией` последний и отделяет целевое состояние от текущего;
145
+ - существующие несвязанные карточки сохранены без изменений.
146
+
147
+ ### 6. Финал
148
+
149
+ Коротко сообщи путь к карточке и индексу, какие решения зафиксированы и какие расхождения с реализацией обнаружены. Если после пустого вызова остались подтверждённые темы, переходи к следующей; дополнительное разрешение продолжить не спрашивай.
150
+
151
+ ## Чего НЕ делать
152
+
153
+ - Записывать неподтверждённые темы или черновики в индекс.
154
+ - Выводить бизнес-правило только из текущего кода и сразу считать его целевым.
155
+ - Подменять карточку исследованием, roadmap, архитектурой или планом реализации.
156
+ - Сокращать сложную тему до общего описания и терять подтверждённые правила или алгоритмы.
157
+ - Переписывать в карточку структуру кода, пути, строки, классы, функции и внутренние модули.
158
+ - Использовать `about` как сводку всех доменов, модулей, правил и расхождений проекта.
159
+ - Переносить в текущую карточку подробности и расхождения соседней темы «для контекста».
160
+ - Создавать ссылки из индекса на отсутствующие файлы.
161
+ - Молча удалять, переименовывать или ослаблять подтверждённые требования.
162
+ - Сохранять business-документацию вне `docs/business.md` и `docs/business/`.
@@ -11,7 +11,7 @@ description: 'Аудирует автоматические проверки п
11
11
 
12
12
  Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
13
13
 
14
- Поддерживается только `version: 2`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолт: `discover-automations.include_plans: false`.
14
+ Поддерживается только `version: 3`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолт: `discover-automations.include_plans: false`.
15
15
 
16
16
  Если актуального раздела `discover-automations` нет, но есть прежний раздел `automate`, используй `automate.include_plans` как совместимый fallback и сообщи, что настройку следует переименовать. Если присутствуют оба раздела, применяй только `discover-automations`.
17
17
 
@@ -55,6 +55,7 @@ description: 'Аудирует автоматические проверки п
55
55
  - Все выбранные ревью, отчёты о фиксах по ревью и обычные фиксы.
56
56
  - В режиме `plans`: все выбранные планы из `docs/plans/`.
57
57
  - `docs/rules.md`, `docs/arch.md` (если есть) — прочитай и строго следуй им.
58
+ - Сначала определи затронутые историей и текущим аудитом доменные области. Затем через `docs/business.md` выбери только карточки этих областей; если подходящих нет, продолжай без business-контекста. Используй карточки лишь для поиска автоматизируемых инвариантов и acceptance-сценариев, не расширяй аудит на несвязанные темы.
58
59
  - Какие языки и фреймворки в проекте — определи сам.
59
60
  - Какие инструменты качества уже установлены и работают: линтеры, форматтеры, статанализаторы, typecheck, все виды тестов, coverage, архитектурные проверки, валидаторы конфигов, security/supply-chain сканеры, performance budgets, pre-commit, CI, release/post-deploy проверки и npm/composer/make-скрипты.
60
61
  - Какие агентные усиления уже есть: `.claude/skills/`, `.codex/skills/`, MCP-конфиги, локальные скилы, команды для ревью/планирования. Не предлагай дубль уже установленному.
@@ -107,7 +108,7 @@ description: 'Аудирует автоматические проверки п
107
108
  ```markdown
108
109
  ---
109
110
  date: <YYYY-MM-DD HH:MM>
110
- sources: [docs/reviews/..., docs/review-fixes/..., docs/fixes/...]
111
+ sources: [docs/reviews/..., docs/review-fixes/..., docs/fixes/..., docs/business/...]
111
112
  mode: <normal | plans>
112
113
  status: draft
113
114
  ---
@@ -119,6 +120,7 @@ status: draft
119
120
  - Стек проекта: <по конфигам>
120
121
  - Уже работающие инструменты: <список>
121
122
  - Уже найденные скилы/MCP/агентные проверки: <список или «не найдены»>
123
+ - Применимые business-карточки: <пути или «нет»>
122
124
 
123
125
  ## Покрытие экстремального каталога
124
126
  | Группа | Уже есть | Пробелы | Статус | Причина N/A |
@@ -11,7 +11,7 @@ description: 'Исследует техническую тему или зада
11
11
 
12
12
  Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
13
13
 
14
- Поддерживается только `version: 2`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолты: `explore.strict: false`, `explore.decision_mode: recommend_and_ask`.
14
+ Поддерживается только `version: 3`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолты: `explore.strict: false`, `explore.decision_mode: recommend_and_ask`.
15
15
 
16
16
  | Настройка | Значения | Аргументы в сообщении |
17
17
  |---|---|---|
@@ -43,8 +43,8 @@ description: 'Исследует техническую тему или зада
43
43
  3. **Развилки закрывай по `decision_mode`.** Значимые развилки подтверждай до финализации, мелкие локальные решения выбирай сам и не создавай шум.
44
44
  4. **Риски вплетай в исследование.** Не создавай отдельный обязательный раздел или этап рисков. Если риск влияет на выбор, источник, ограничение или будущую проверку, фиксируй его рядом с соответствующим решением: что может пойти не так и как это учитывается — снимаем, принимаем или выносим за рамки.
45
45
  5. **Версии проверяй.** Если речь о пакетах, библиотеках, CLI, сервисах или другом ПО, а версия не задана контекстом, проверь последнюю стабильную версию через context7, если он доступен, или через web search по официальным источникам.
46
- 6. **Прочитай рамку проекта.** Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Если существует `docs/references.md`, прочитай индекс, выбери только карточки, применимые к исследуемым компонентам, и прочитай их целиком; нерелевантные карточки не загружай.
47
- 7. **Соблюдай приоритеты.** Подтверждённое решение пользователя важнее `docs/rules.md`, затем идёт `docs/arch.md`, затем релевантные карточки. Не рекомендуй отклонение от эталона без явной причины и подтверждения пользователя.
46
+ 6. **Прочитай рамку проекта.** Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Сначала определи исследуемую задачу, затем через `docs/business.md` выбери только карточки затронутого поведения, а через `docs/references.md` — только карточки затронутых компонентов. Нерелевантные карточки не загружай.
47
+ 7. **Разделяй источники.** Текущий запрос задаёт область исследования; применимые business-карточки — требования к затронутому поведению; rules, architecture и references — техническая рамка. Если запрос противоречит business-карточке, остановись и через `AskUserQuestion` спроси, изменить задачу или пересогласовать правило через `eda-business`. Не рекомендуй отклонение от технического эталона без явной причины и подтверждения пользователя.
48
48
  7. **Каждое фактическое утверждение — со ссылкой** (`file.ext:42`, URL, коммит). Без ссылки — помечай как «гипотеза» и не делай её основанием выбранного решения.
49
49
  8. **Простой язык.** Термины — только когда без них нельзя, сразу с пояснением.
50
50
  9. **Таблицы > сплошной текст** для фактов, развилок, сравнений, версий и источников.
@@ -70,7 +70,7 @@ description: 'Исследует техническую тему или зада
70
70
 
71
71
  ### 2. Собрать контекст
72
72
 
73
- Работай read-only: читай код, документы, конфиги, тесты, историю и внешние источники. Прочитай `docs/rules.md` и `docs/arch.md`, если они есть. Если есть `docs/references.md`, выбери по индексу только применимые карточки и используй их кодовые примеры как эталон ожидаемой формы решения.
73
+ Работай read-only: читай код, документы, конфиги, тесты, историю и внешние источники. Прочитай `docs/rules.md` и `docs/arch.md`, если они есть. Если есть `docs/business.md`, выбери по описаниям только карточки, непосредственно относящиеся к исследуемому поведению; если подходящих нет, продолжай без них. Если есть `docs/references.md`, выбери по индексу только применимые технические карточки и используй их кодовые примеры как эталон ожидаемой формы решения.
74
74
 
75
75
  Если исследование касается пакетов или ПО:
76
76
  - сначала проверь, не зафиксирована ли версия в запросе, lock-файле, package/config-файле, `docs/rules.md`, `docs/arch.md` или связанном документе;
@@ -102,6 +102,7 @@ reviewer: <pending | none | claude | codex>
102
102
  sources:
103
103
  rules: <путь или —>
104
104
  arch: <путь или —>
105
+ business: [<пути к применимым карточкам или пусто>]
105
106
  references: [<пути к применимым карточкам или пусто>]
106
107
  ---
107
108
 
@@ -148,13 +149,13 @@ Quality gate перед сохранением:
148
149
  Если ты в Claude Code — запускай Codex CLI:
149
150
 
150
151
  ```bash
151
- codex exec "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md, карточки из sources.references при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, архитектура не выдумана, применимые эталоны учтены, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
152
+ codex exec "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md, применимые карточки из sources.business и sources.references при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, применимые бизнес-требования учтены, архитектура не выдумана, применимые эталоны учтены, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, нарушения бизнес-требований, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
152
153
  ```
153
154
 
154
155
  Если ты в Codex — запускай Claude CLI с теми же требованиями:
155
156
 
156
157
  ```bash
157
- claude -p "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md, карточки из sources.references при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, архитектура не выдумана, применимые эталоны учтены, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
158
+ claude -p "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md, применимые карточки из sources.business и sources.references при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, применимые бизнес-требования учтены, архитектура не выдумана, применимые эталоны учтены, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, нарушения бизнес-требований, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
158
159
  ```
159
160
 
160
161
  CLI нет — `AskUserQuestion`: продолжать без ревью или прервать.
@@ -37,10 +37,10 @@ description: 'Вносит изменения в код по плану или
37
37
  Определи `$FIX_CONTEXT`: путь к файлу прочитай, план из `docs/plans/` используй как план фикса, текст используй как контекст. Если входа нет или он неоднозначен — спроси через `AskUserQuestion`.
38
38
 
39
39
  ### 2. Прочитать рамку проекта
40
- Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Если существует `docs/references.md`, выбери по индексу только применимые карточки и используй их примеры как ожидаемую форму реализации. Если `$FIX_CONTEXT` ссылается на план с `sources.references`, прочитай перечисленные карточки; если ссылается на research, review, issue или другой файл — прочитай и его.
40
+ Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Сначала определи задачу фикса и затронутое поведение. Если связанный план содержит `sources.business`, прочитай только перечисленные применимые карточки; иначе через `docs/business.md` выбери по описаниям только карточки этой темы. Если подходящих карточек нет, продолжай без business-контекста. Если существует `docs/references.md`, выбери по индексу только применимые технические карточки и используй их примеры как ожидаемую форму реализации. Если `$FIX_CONTEXT` ссылается на research, review, issue или другой файл — прочитай и его.
41
41
 
42
42
  ### 3. Сделать фикс
43
- Найди релевантный код и внеси минимальные правки. Следуй применимому примеру; отклоняйся только по причине, подтверждённой пользователем или уже записанной во входном плане. Если задача состоит из нескольких пунктов, иди по ним последовательно. Останавливайся и спрашивай, если пункт противоречит коду или документации, требует необоснованного отклонения от карточки, продуктового решения, рискованной операции, миграции, удаления данных или затрагивает секреты.
43
+ Найди релевантный код и внеси минимальные правки. Текущая задача задаёт scope, применимая business-карточка — требования к затронутому поведению, reference-карточка — форму реализации. Если задача противоречит business-карточке, остановись, покажи конфликт и через `AskUserQuestion` спроси: изменить задачу или сначала пересогласовать правило через `eda-business`. Следуй применимому техническому примеру; отклоняйся только по причине, подтверждённой пользователем или уже записанной во входном плане. Если задача состоит из нескольких пунктов, иди по ним последовательно. Останавливайся и спрашивай также при рискованной операции, миграции, удалении данных или работе с секретами.
44
44
 
45
45
  ### 4. Добавить или обновить тесты
46
46
  Если фикс меняет поведение — добавь тест рядом с изменением или обнови существующий. Если тесты не нужны, в отчёте коротко объясни почему.
@@ -61,7 +61,7 @@ status: done
61
61
  # Фикс: <краткий заголовок>
62
62
 
63
63
  ## Контекст
64
- <что было передано на вход и какие правила, архитектура и карточки учтены>
64
+ <что было передано на вход и какие правила, архитектура, business- и reference-карточки учтены>
65
65
 
66
66
  ## Что изменено
67
67
  | # | Файл | Что изменено | Зачем |
@@ -86,4 +86,5 @@ status: done
86
86
  - Выполнять большой план с чекбоксами и журналом `docs/executions/` — это `eda-plan-execute`.
87
87
  - Применять замечания из готового ревью — это `eda-fix-by-review`.
88
88
  - Сохранять отчёт куда-либо кроме `docs/fixes/`.
89
- - Игнорировать применимую карточку или молча отклоняться от её примера.
89
+ - Загружать несвязанные business-карточки или расширять ими scope фикса.
90
+ - Игнорировать применимую карточку или молча отклоняться от её требований либо примера.
@@ -5,80 +5,72 @@ description: 'Исправляет код по готовому ревью из
5
5
 
6
6
  # Скил: Исправитель по ревью (eda-fix-by-review)
7
7
 
8
- Берёшь готовое ревью из `docs/reviews/`, применяешь замечания к коду, сохраняешь отчёт о фиксах в `docs/review-fixes/`. После всех правок — полный прогон тестов и линтеров.
8
+ Берёшь готовое ревью из `docs/reviews/` или сообщения, применяешь все находки к коду и сохраняешь отчёт в `docs/review-fixes/`. После правок выполняешь полный прогон тестов и линтеров.
9
9
 
10
10
  ## Вход из сообщения пользователя
11
11
 
12
- Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
12
+ Текст рядом с вызовом скилла в текущем сообщении — главный вход. Сначала разбери тему, задачу, путь к файлу, номера замечаний, ограничения и прямые указания. Если входа достаточно, продолжай без вопроса. Старое обсуждение не считай входом, если пользователь явно не связал его с текущим вызовом.
13
13
 
14
- Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
15
-
16
- ## Режим запуска
17
-
18
- Обычный режим: все пункты «Править обязательно» применяешь сразу, «На усмотрение автора» выносишь через `AskUserQuestion`, «Не править» пропускаешь.
19
-
20
- Режим `apply-optional`: все пункты «Править обязательно» применяешь без исключений. По каждому пункту «На усмотрение автора» сам принимаешь решение без вопроса: применяешь, если правка явно улучшает качество, снижает риск или стоит дёшево; отклоняешь, если польза спорная, правка расширяет scope, создаёт риск регрессии, конфликтует с правилами/архитектурой или требует продуктового решения. Название режима означает «разобрать optional без вопроса», а не «механически применить все optional». Пункты «Не править» всё равно пропускаешь.
14
+ У нового формата ревью одна группа находок: каждый пункт обязательно исправить. Режимов выбора рекомендаций нет. Если дан старый файл с разделами `Править обязательно`, `На усмотрение автора` и `Не править`, применяй только пункты из `Править обязательно`; остальные старые предложения не переноси в работу и отчёт.
21
15
 
22
16
  ## Главные правила
23
17
 
24
- 1. **Перед правкой кода** прочитай `docs/rules.md` и `docs/arch.md`. Если есть `docs/references.md`, выбери по индексу только карточки для затронутых замечаниями компонентов и прочитай их целиком. Приоритет: подтверждённое решение пользователя → правила → архитектура → карточки. Сделай это один раз в начале.
25
- 2. **Интерактивные вопросы** — по разделу ниже.
26
- 3. **Не переформулируй замечания.** Применяй то, что написано в ревью. Если непонятно — спроси через `AskUserQuestion`.
27
- 4. **Не делаешь само ревью и не коммитишь.** Только применяешь замечания и пишешь отчёт.
28
- 5. **Логика по группам ревью:** «Править обязательно» — правишь все сразу; «На усмотрение автора» — спроси через `AskUserQuestion`, кроме режима `apply-optional`, где сам решаешь применить или отклонить; «Не править» — пропускаешь и отмечаешь в отчёте.
29
- 6. **Тесты — внутри той же правки.** Замечание касается поведения → правка кода + тесты к ней в одном шаге, точечно прогнал.
30
- 7. **Финальный полный прогон тестов и линтеров — обязателен.** В конце, не на каждой правке.
31
- 8. **Простой язык** в формулировках и сообщениях. **Таблицы** для отчёта о фиксах.
18
+ 1. Перед правкой прочитай `docs/rules.md` и `docs/arch.md`. Определи замечания и затронутое поведение; затем через `sources.business` связанного плана или `docs/business.md` выбери только применимые business-карточки, а через `docs/references.md` — только карточки затронутых компонентов.
19
+ 2. Применяй все выбранные находки. Не переоценивай их полезность и не превращай исправление в более широкий рефакторинг.
20
+ 3. Задавай вопрос только если находка неоднозначна, противоречит коду или обязательной документации, требует продуктового решения, расширяет scope либо ведёт к рискованному действию. В остальных случаях работай автономно.
21
+ 4. Не делай новое ревью и не коммить. Только исправляй замечания и пиши отчёт.
22
+ 5. Если находка касается поведения, добавь или обнови точечный тест в той же правке и прогони его.
23
+ 6. В конце обязательно прогони полный набор тестов и линтеров один раз.
24
+ 7. Пиши просто и конкретно; в отчёте используй таблицу.
32
25
 
33
26
  ## Интерактивные вопросы
34
27
 
35
- Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
28
+ Когда без ответа нельзя безопасно продолжать:
29
+
36
30
  - Claude Code: используй `AskUserQuestion`.
37
- - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
38
- - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
39
- - Не запускай команды, которые ждут интерактивного ввода в терминале; перед такими командами спроси в хост-интерфейсе или остановись с `blocked`.
40
- - Для исправления кода это правило важнее требования довести фиксы до конца: не применяй пункты «на усмотрение автора» без ответа пользователя, кроме явного режима `apply-optional`, где решение принимает сам агент; не переформулируй замечания и не правь чужие/несвязанные поломки вместо ответа пользователя.
31
+ - Codex interactive: используй `request_user_input`, если доступен; иначе задай один короткий вопрос с 2–3 вариантами и остановись до ответа.
32
+ - Codex exec и другой неинтерактивный запуск: не читай stdin; верни `blocked: нужен ответ пользователя`, перечисли вопрос и варианты, не выполняй рискованное действие.
33
+
34
+ Не запускай команды, которые ждут интерактивного ввода в терминале. Вопрос не разрешает молча заменить находку другой правкой или исправлять несвязанные поломки.
41
35
 
42
36
  ## Этапы
43
37
 
44
38
  ### 1. Выбрать ревью
45
- Сначала разбери текст рядом с вызовом: путь к ревью, название или часть названия, «последнее ревью», номера замечаний или вставленный текст замечаний. Если замечания вставлены в сообщение — используй режим `$REVIEW_SOURCE=review_text`, не выбирай файл ревью и сохрани отчёт с `review: text`.
46
39
 
47
- Если найдено ровно одно ревью — используй режим `$REVIEW_SOURCE=review_file` и продолжай без вопроса. Если замечания даны текстом — используй режим `$REVIEW_SOURCE=review_text` и продолжай без вопроса. Если найдено несколько одинаково подходящих ревью — `AskUserQuestion` со списком вариантов. Если входа нет — `AskUserQuestion` со списком последних файлов из `docs/reviews/`. Если `docs/reviews/` отсутствует или пуста и вход не содержит замечания — остановись с понятным вопросом или статусом `blocked: нужно ревью`.
40
+ Разбери путь к ревью, название, «последнее ревью», номера находок или вставленный текст. Для текста используй `$REVIEW_SOURCE=review_text`, не выбирай файл и сохраняй отчёт с `review: text`.
41
+
42
+ Если найден ровно один файл, используй `$REVIEW_SOURCE=review_file`. Если найдено несколько равно подходящих файлов или входа нет, задай один вопрос со списком. Если `docs/reviews/` пуста и текст замечаний не дан, остановись с `blocked: нужно ревью`.
48
43
 
49
44
  ### 2. Прочитать контекст
50
- Прочитай `docs/rules.md`, `docs/arch.md`, если они есть. Через `docs/references.md` выбери только применимые карточки. Если связанный план содержит `sources.references`, прочитай перечисленные карточки и не загружай остальные.
51
45
 
52
- Если `$REVIEW_SOURCE=review_file`, прочитай сам файл ревью. Если ревью ссылается на план/research — прочитай и их.
46
+ Прочитай `docs/rules.md` и `docs/arch.md`, если они есть. Для исправляемого поведения выбери только применимые business-карточки и технические reference-карточки. Если связанный план уже задаёт `sources.business` или `sources.references`, используй относящиеся к находкам пути из этих списков.
47
+
48
+ При `$REVIEW_SOURCE=review_file` прочитай ревью целиком, а также явно связанные план и research. При `$REVIEW_SOURCE=review_text` работай по текущему сообщению. Файла ревью нет: не пытайся читать `$REVIEW_FILE` и не ищи план или research без явной ссылки.
53
49
 
54
- Если `$REVIEW_SOURCE=review_text`, работай по замечаниям из текущего сообщения пользователя. Файла ревью нет: не пытайся читать `$REVIEW_FILE` и не ищи связанные plan/research, если они не указаны в тексте.
50
+ ### 3. Применить находки
55
51
 
56
- ### 3. Применить замечания
57
- Раздели пункты ревью по группам (берёшь из раздела «Рекомендации»):
58
- - **Править обязательно** → правишь все пункты сразу. Если меняешь поведение — добавь точечный тест в этой же правке.
59
- - **На усмотрение автора** → в обычном режиме собери в один-два раунда `AskUserQuestion`, применяй по решению пользователя; в режиме `apply-optional` сам реши по каждому пункту, применяй только принятые решения без вопроса, а отклонённые фиксируй с причиной.
60
- - **Не править** → пропусти.
52
+ Исправь все находки нового формата либо выбранные пользователем номера. Для старого формата возьми только пункты из `Править обязательно`. Делай минимальную достаточную правку и точечную проверку после каждого логического изменения.
61
53
 
62
- Останавливайся и спрашивай, если замечание непонятно, противоречит коду или проектной документации, требует необоснованного отклонения от карточки либо задевает рискованное вне ревью (удаление, миграции, секреты). Подтверждённое отклонение зафиксируй в отчёте.
54
+ Остановись с вопросом при неоднозначности, конфликте с правилами, архитектурой или business-карточкой, необходимости расширить scope либо выполнить рискованное действие. При конфликте с business-карточкой предложи изменить состав исправлений или сначала пересогласовать правило через `eda-business`. Подтверждённое отклонение от технической карточки зафиксируй в отчёте.
63
55
 
64
56
  ### 4. Финальная проверка
65
- Прогони полный сьют тестов и линтеры. Команды — стандартные для стека; непонятно — `AskUserQuestion`. Свои поломки — правишь и повторяешь. Чужие/несвязанные — `AskUserQuestion`.
66
57
 
67
- ### 5. Сохранить отчёт о фиксах и связать с ревью
68
- Сохрани отчёт в `docs/review-fixes/{YYYY-MM-DD}_{HH-MM}_{slug}.md` (slug — тот же что у ревью или близкий). Если `$REVIEW_SOURCE=review_file`, затем **допиши в конец файла ревью** (`$REVIEW_FILE`) раздел со ссылкой:
58
+ Прогони полный сьют тестов и линтеры стандартными командами проекта. Свои поломки исправь и повтори проверку. При чужой или несвязанной ошибке остановись с конкретным блокером.
59
+
60
+ ### 5. Сохранить отчёт и связать с ревью
61
+
62
+ Сохрани `docs/review-fixes/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. Если `$REVIEW_SOURCE=review_file`, допиши в конец `$REVIEW_FILE`:
69
63
 
70
64
  ```markdown
71
65
  ## Применённые фиксы
72
66
  Отчёт: `docs/review-fixes/{file}.md`
73
67
  ```
74
68
 
75
- Если `$REVIEW_SOURCE=review_text`, не дописывай ссылку в исходное ревью: такого файла нет. В отчёте укажи `review: text`.
76
-
77
- Шаблон отчёта:
69
+ Если `$REVIEW_SOURCE=review_text`, не дописывай ссылку в исходное ревью: исходного файла нет.
78
70
 
79
71
  ```markdown
80
72
  ---
81
- review: <путь к docs/reviews/...>
73
+ review: <docs/reviews/... | text>
82
74
  date: <YYYY-MM-DD HH:MM>
83
75
  status: done
84
76
  ---
@@ -89,13 +81,6 @@ status: done
89
81
  | # | Замечание | Файлы | Тесты | Статус |
90
82
  |---|-----------|-------|-------|--------|
91
83
  | 1 | <кратко из ревью> | `path/a.py` | `path/test_a.py` (2 ✓) | ✓ применено |
92
- | 2 | ... | ... | — | ✓ применено |
93
- | 3 | ... | — | — | ✗ отклонено (на усмотрение, причина: <короткое обоснование>) |
94
- | 4 | ... | — | — | — не править (по решению ревью) |
95
-
96
- ## Решения по optional
97
- - **Принято:** <номера и коротко почему>
98
- - **Отклонено:** <номера и коротко почему, чтобы следующие ревьюеры не повторяли это как открытое замечание>
99
84
 
100
85
  ## Финальная проверка
101
86
  - **Тесты:** `<команда>` — ✓ / ✗
@@ -103,17 +88,16 @@ status: done
103
88
  - **Заметки:** <если что-то осталось не зелёным — почему>
104
89
  ```
105
90
 
106
- Если `$REVIEW_SOURCE=review_file` и в режиме `apply-optional` отклонены пункты «На усмотрение автора», в добавляемом в ревью разделе `## Применённые фиксы` после ссылки на отчёт добавь короткий список `Отклонённые optional-решения` с причинами. Это нужно, чтобы следующие ревьюеры видели уже принятое решение и не повторяли тот же optional-пункт без новых аргументов.
107
-
108
91
  ### 6. Финал
109
- Короткое сообщение: путь к ревью или «источник: текст из сообщения», путь к отчёту о фиксах, сколько применено / пропущено / отклонено, результат финальной проверки, состояние git («не закоммичено»). Подсказка дальше — `eda-commit`.
92
+
93
+ Короткое сообщение: путь к ревью или «источник: текст из сообщения», путь к fix-отчёту, сколько находок применено, результат финальной проверки и состояние git «не закоммичено». Предложи `eda-commit`.
110
94
 
111
95
  ## Чего НЕ делать
96
+
112
97
  - Делать само ревью — это `eda-review`.
113
- - Коммитить, пушить — это `eda-commit`.
114
- - Применять или отклонять «на усмотрение» молча без явного режима `apply-optional` или ответа пользователя.
115
- - Игнорировать «не править» и пробовать «на всякий случай» — это нарушает решение ревью.
116
- - Гонять полный сьют и линтеры на каждой правке — только в конце.
117
- - Пропускать финальную проверку.
118
- - Сохранять отчёт куда-либо кроме `docs/review-fixes/`.
119
- - Игнорировать применимую карточку или молча отклоняться от её примера.
98
+ - Коммитить или пушить — это `eda-commit`.
99
+ - Выбирать, какие находки достойны исправления: принятая находка уже обязательна.
100
+ - Расширять scope ради улучшений, которых нет в находках.
101
+ - Гонять полный сьют после каждого пункта или пропускать финальную проверку.
102
+ - Сохранять отчёт вне `docs/review-fixes/`.
103
+ - Загружать несвязанные business-карточки или молча отклоняться от применимого правила.
@@ -24,6 +24,7 @@ description: 'Проводит ручную smoke/acceptance-проверку и
24
24
  7. **Разрушительное подтверждай.** Реальные платежи, удаление данных, отправку email/SMS/push, изменение production/staging-данных, миграции, очистку БД и похожие действия выполняй только после `AskUserQuestion`.
25
25
  8. **Проверяй фактическое поведение.** Не ограничивайся чтением кода. Если сценарий нельзя выполнить, зафиксируй `blocked` и конкретную причину.
26
26
  9. **Отчёт обязателен.** Сохрани результат в `docs/manual-tests/`, даже если проверка заблокирована или нашла баги.
27
+ 10. **Задача важнее дополнительного контекста.** Основной чеклист строй по выполненной задаче: текущему сообщению и явно связанному плану, issue, review или fix-отчёту. Business-карточки подключай только после определения target и только для непосредственно затронутого поведения.
27
28
 
28
29
  ## Интерактивные вопросы
29
30
 
@@ -36,25 +37,29 @@ description: 'Проводит ручную smoke/acceptance-проверку и
36
37
  ## Этапы
37
38
 
38
39
  ### 1. Определить цель проверки
39
- Разбери вход пользователя. Если указан файл плана, ревью, research, issue или другой артефакт — прочитай его. Если входа нет, изучи `git diff HEAD`, изменённые файлы, README и релевантные роуты/страницы/компоненты.
40
+ Разбери вход пользователя и зафиксируй `$TASK_CONTEXT`: что было сделано и какие результаты пользователь ожидает проверить. Если указан файл плана, ревью, research, issue, fix-отчёт или другой артефакт — прочитай его. Это главный источник сценариев и критериев. Если входа нет, изучи `git diff HEAD`, изменённые файлы, README и релевантные роуты/страницы/компоненты.
40
41
 
41
42
  Определи `$TEST_TARGET`: `api`, `frontend`, `fullstack` или `other`. Если цель всё ещё неоднозначна и можно проверить не то окружение или не тот сценарий — спроси через `AskUserQuestion`.
42
43
 
43
44
  ### 2. Прочитать рамку проекта
44
45
  Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Найди команды запуска, тестовые URL, API-контракты, seed/test users и ограничения окружения в README, package scripts, docker compose, Makefile, OpenAPI/Swagger/Postman-файлах и существующих e2e-тестах.
45
46
 
47
+ После определения `$TASK_CONTEXT` и фактически изменённого поведения прочитай `docs/business.md`, если индекс существует. По описаниям выбери только карточки, которые прямо относятся к проверяемой задаче. Если таких карточек нет, продолжай без business-контекста и без предупреждения. Не открывай остальные карточки и не расширяй ими smoke-проверку.
48
+
49
+ Если ожидаемый результат задачи противоречит применимой business-карточке, не выбирай правильный вариант самостоятельно. До неоднозначного сценария покажи конфликт и через `AskUserQuestion` спроси: проверять изменённую задачу как новое правило или сначала пересогласовать карточку через `eda-business`. В неинтерактивном режиме зафиксируй `blocked` с этим вопросом.
50
+
46
51
  Не устанавливай Playwright, браузеры, пакеты, docker images или системные зависимости молча. Если без этого проверка невозможна — спроси через `AskUserQuestion` или зафиксируй `blocked` в неинтерактивном режиме.
47
52
 
48
53
  ### 3. Составить smoke-чеклист
49
54
  Составь короткий чеклист:
50
55
  - запуск приложения или API;
56
+ - явные acceptance criteria и сценарии выполненной задачи;
51
57
  - основной happy path изменённой области;
52
- - 1–2 негативных или edge-сценария;
53
- - явные acceptance criteria из плана или входа пользователя;
58
+ - 1–2 негативных или edge-сценария, которые следуют из задачи;
54
59
  - для фронта: console errors, network errors и видимые regressions на основной странице;
55
60
  - для API: status code, схема/ключевые поля ответа, обработка неверного ввода или прав доступа, если это относится к задаче.
56
61
 
57
- Не расширяй проверку до полного exploratory QA, если пользователь не попросил.
62
+ Применимая business-карточка может добавить важный инвариант, ожидаемый результат или один релевантный негативный сценарий, который задача не сформулировала явно. Она не заменяет критерии задачи и не требует тестировать всю предметную область. Не расширяй проверку до полного exploratory QA, если пользователь не попросил.
58
63
 
59
64
  ### 4. Запустить окружение
60
65
  Если приложение ещё не запущено и команды очевидны, запусти нужные dev/API-серверы. Дождись готовности по логам, healthcheck, открытому порту или успешному запросу. Если порт занят, проверь, подходит ли уже запущенный сервис; если нет — спроси или выбери очевидный альтернативный порт только когда проект это поддерживает.
@@ -98,6 +103,9 @@ status: <passed | failed | blocked>
98
103
  ## Контекст
99
104
  <что проверялось и откуда взяты сценарии>
100
105
 
106
+ ## Business-контекст
107
+ <только если использовался: применимые карточки и какие сценарии или ожидания они добавили>
108
+
101
109
  ## Окружение
102
110
  | Что | Значение |
103
111
  |---|---|
@@ -117,7 +125,7 @@ status: <passed | failed | blocked>
117
125
  <ссылки на скриншоты, логи или «Нет»>
118
126
 
119
127
  ## Итог
120
- <passed / failed / blocked и короткое объяснение>
128
+ <passed / failed / blocked и короткое объяснение относительно выполненной задачи>
121
129
  ```
122
130
 
123
131
  Если найден баг, статус отчёта `failed`. Если проверка невозможна из-за окружения, авторизации, отсутствующих зависимостей или непонятного риска, статус `blocked`.