@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
@@ -1,12 +1,11 @@
1
1
  ---
2
2
  name: eda-polish
3
- description: 'Итеративно ревьюит и исправляет изменения до заданной оценки качества.'
3
+ description: 'Итеративно ревьюит и исправляет изменения до чистого результата и заданной оценки качества.'
4
4
  ---
5
5
 
6
6
  # Скил: Полировка изменений (eda-polish)
7
7
 
8
- Оркестрируй цикл `eda-review` → `eda-fix-by-review apply-optional` → повторное `eda-review`. Основной агент только управляет итерациями, читает сохранённые артефакты и сообщает результат.
9
- В начале каждой итерации запускай полное `eda-review` целевого изменения.
8
+ Оркестрируй цикл `eda-review` → `eda-fix-by-review` → повторное `eda-review`. Основной агент только управляет итерациями, читает сохранённые артефакты и сообщает результат. В начале каждой итерации запускай полное `eda-review` целевого изменения.
10
9
 
11
10
  ## Вход из сообщения пользователя
12
11
 
@@ -16,12 +15,12 @@ description: 'Итеративно ревьюит и исправляет изм
16
15
 
17
16
  ## Правила
18
17
 
19
- 1. Каждый вызов `eda-review` и `eda-fix-by-review apply-optional` запускай отдельным изолированным субагентом. Основной агент не делает их работу.
18
+ 1. Каждый вызов `eda-review` и `eda-fix-by-review` запускай отдельным изолированным субагентом. Основной агент не делает их работу.
20
19
  2. Если нативные субагенты недоступны, остановись; не заменяй шаги CLI-процессами.
21
- 3. Сравнивай порог только со `score` полного ревью со статусом `reviewed` или `reviewed-with-warnings`.
22
- 4. Все пункты «править обязательно» исправь. Для каждого optional-пункта fix-агент сам решает, применять ли его, и сохраняет причины отклонения, чтобы следующие ревьюеры не повторяли решение без новых аргументов.
20
+ 3. Успех требует одновременно: полный review со статусом `reviewed` или `reviewed-with-warnings`, `result: clean`, ноль находок и `score >= threshold`.
21
+ 4. Любая находка обязательно исправляется независимо от score. Порог не превращает найденную проблему в допустимую.
23
22
  5. Не коммить и не отправляй ревью.
24
- 6. Останавливайся при повторном сбое обязательной проверки review, блокере fix-агента, отсутствии применимых замечаний ниже порога или если score не растёт два круга подряд.
23
+ 6. Останавливайся при повторном сбое обязательной проверки review, блокере fix-агента, неизменном наборе находок один полный круг или достижении лимита.
25
24
 
26
25
  ## Вопросы
27
26
 
@@ -29,53 +28,42 @@ description: 'Итеративно ревьюит и исправляет изм
29
28
 
30
29
  ## Цикл
31
30
 
32
- Сформируй `$TARGET_CONTEXT`, `$THRESHOLD`, `$LIMIT` и внутренний журнал: номер итерации, review file, score, fix report и причина продолжения.
31
+ Сформируй `$TARGET_CONTEXT`, `$THRESHOLD`, `$LIMIT` и журнал: номер итерации, review file, result, score, список находок, fix report и причина продолжения.
33
32
 
34
33
  Для каждой итерации:
35
34
 
36
- 1. Запусти отдельного субагента с задачей:
35
+ 1. Запусти отдельного субагента:
37
36
 
38
37
  ```text
39
38
  Используй eda-review для <TARGET_CONTEXT>.
40
39
  План: <PLAN_FILE | none>.
41
40
  Overrides проверок и моделей: <из запроса | none>.
42
- Верни путь к файлу, status, score и coverage.
41
+ Верни путь к файлу, status, result, score, находки и coverage.
43
42
  ```
44
43
 
45
- 2. Если review остановился из-за обязательного агента, останови весь цикл. `reviewed-with-warnings` из-за недоступных previous reviews разрешён и не блокирует цикл.
46
- 3. Если `score >= threshold`, заверши успешно.
47
- 4. Если score ниже порога, прочитай рекомендации. Если обязательных и optional-пунктов нет, остановись `blocked: нет применимых замечаний для повышения оценки`.
48
- 5. Запусти отдельного субагента:
44
+ 2. Если review остановился из-за обязательного агента, останови цикл. `reviewed-with-warnings` из-за недоступных previous reviews разрешён.
45
+ 3. Если `result: clean`, находок нет и `score >= threshold`, заверши успешно. Если `result` противоречит числу находок, считай файл невалидным и остановись.
46
+ 4. Если находки есть, запусти отдельного субагента:
49
47
 
50
48
  ```text
51
- Используй eda-fix-by-review apply-optional для <REVIEW_FILE>.
52
- Примени все обязательные замечания. По каждому optional сам реши, применять ли его; отклонённые решения сохрани с причиной.
49
+ Используй eda-fix-by-review для <REVIEW_FILE>.
50
+ Примени все находки минимальными достаточными правками и выполни проверки.
53
51
  Верни путь к fix-отчёту и результат проверок.
54
52
  ```
55
53
 
56
- 6. При успешных исправлениях начни следующую итерацию с новым полным `eda-review`.
54
+ 5. После успешных исправлений начни новую итерацию с полным `eda-review`.
57
55
 
58
- Если score не растёт два проверенных круга подряд, остановись раньше лимита. Если достигнут лимит, не скрывай незавершённую сходимость.
56
+ Если после полного круга набор находок не изменился, остановись раньше лимита с конкретными оставшимися проблемами. При достижении лимита не скрывай незавершённую сходимость. Состояние `clean` со score ниже threshold является несогласованным с контрактом `eda-review`: при отсутствии находок score должен быть `100`; остановись как на ошибке контракта.
59
57
 
60
58
  ## Финал
61
59
 
62
- Сообщи:
63
-
64
- - результат: достигнут порог, достигнут лимит, blocked, нет применимых замечаний или score не растёт;
65
- - итоговую оценку и порог;
66
- - количество итераций;
67
- - последний review file и fix report;
68
- - предупреждения coverage, если они были;
69
- - что изменения не закоммичены.
70
-
71
- При успехе предложи `eda-commit`. При неуспехе назови конкретный блокер или оставшиеся замечания.
60
+ Сообщи результат, итоговый result и score, порог, число итераций, последний review file и fix report, оставшиеся находки и coverage warnings. Укажи, что изменения не закоммичены. При успехе предложи `eda-commit`; при неуспехе назови конкретный блокер.
72
61
 
73
62
  ## Чего НЕ делать
74
63
 
75
64
  - Делать ревью или исправления основным агентом.
76
65
  - Запускать отдельный этап проверки готового ревью.
77
- - Сравнивать порог с неполным или заблокированным ревью.
78
- - Механически применять все optional-пункты.
79
- - Терять причины отклонённых optional-решений.
66
+ - Считать цикл успешным только по score при наличии находок.
67
+ - Выбирать или отклонять принятые находки.
80
68
  - Переписывать `docs/settings.yaml`, правила или архитектуру ради score.
81
69
  - Коммитить, пушить или отправлять ревью.
@@ -15,7 +15,7 @@ description: 'Готовит проект к работе с AI: проекти
15
15
 
16
16
  1. **Не правишь код.** Меняй только `docs/rules.md`, `docs/arch.md`, `docs/references.md`, `docs/references/*.md`, `AGENTS.md` и `CLAUDE.md`; не ставь пакеты и не меняй конфиги.
17
17
  2. **Опирайся на проект.** Читай код, структуру, зависимости, команды, тесты, инфраструктуру, git-историю и существующие документы. Не генерируй универсальный шаблон.
18
- 3. **Разделяй документы по назначению.** `docs/rules.md` задаёт проверяемые обязанности и запреты при работе над проектом; `docs/arch.md` фиксирует устройство, границы и владение ответственностью; references показывают уже устоявшуюся форму реализации; `AGENTS.md` объясняет, что это за проект и где читать обязательную рамку. Архитектурное решение не становится правилом только потому, что его удалось сформулировать как запрет.
18
+ 3. **Разделяй документы по назначению.** Business-карточки задают подтверждённое целевое поведение и редактируются только через `eda-business`; `docs/rules.md` задаёт проверяемые обязанности и запреты при работе над проектом; `docs/arch.md` фиксирует устройство, границы и владение ответственностью; references показывают уже устоявшуюся форму реализации; `AGENTS.md` объясняет, что это за проект и где читать обязательную рамку. Архитектурное решение не становится правилом только потому, что его удалось сформулировать как запрет.
19
19
  4. **Обновляй осмысленно.** Сохраняй актуальное, исправляй неверное, удаляй устаревшее и перестраивай документ настолько сильно, насколько требует проект. Не спрашивай отдельно, что делать с каждым существующим файлом.
20
20
  5. **Не выдавай предположение за факт.** Значимые неподтверждённые архитектурные решения предложи пользователю; после выбора зафиксируй принятый вариант.
21
21
  6. **Предлагай экстремальный профиль проверок.** Не ограничивайся уже установленными командами или базовыми lint/test. Пройди весь каталог ниже, предложи все применимые проверки и объясни каждое `не применимо`; в документацию переноси только подтверждённые правила.
@@ -42,7 +42,9 @@ description: 'Готовит проект к работе с AI: проекти
42
42
 
43
43
  ### 2. Прочитать существующую документацию
44
44
 
45
- Прочитай `docs/rules.md`, `docs/arch.md`, `docs/references.md`, карточки из `docs/references/`, `AGENTS.md` и `CLAUDE.md`, если они есть. Также прочитай релевантные документы из `docs/`, на которые они ссылаются. Найди дубли, противоречия и устаревшие сведения.
45
+ Прочитай `docs/rules.md`, `docs/arch.md`, `docs/references.md`, карточки из `docs/references/`, `AGENTS.md` и `CLAUDE.md`, если они есть. Если существует `docs/business.md`, сначала определи область текущей подготовки, затем по описаниям выбери относящиеся к ней карточки; при полном bootstrap весь описанный продуктовый контекст может быть применим. Business-карточки используй как требования к целевому поведению, но не редактируй. Также прочитай релевантные документы из `docs/`, на которые они ссылаются. Найди дубли, противоречия и устаревшие сведения.
46
+
47
+ Если текущая задача подготовки противоречит business-карточке, остановись, покажи конфликт и через `AskUserQuestion` спроси: изменить задачу подготовки или сначала пересогласовать правило через `eda-business`. Не переноси противоречие молча в архитектуру или rules.
46
48
 
47
49
  ### 3. Определить область обновления
48
50
 
@@ -222,6 +224,7 @@ description: 'Готовит проект к работе с AI: проекти
222
224
  Сделай `AGENTS.md` короткой входной картой для AI-агента. В нём должны быть:
223
225
  - краткое описание проекта;
224
226
  - ссылки на `docs/rules.md`, `docs/arch.md`, `docs/references.md` и другие действительно обязательные документы из `docs/`;
227
+ - ссылка на `docs/business.md`, если индекс существует, с требованием выбирать по нему только карточки, применимые к текущей задаче;
225
228
  - требование прочитать их и следовать им до работы над проектом.
226
229
 
227
230
  Не копируй в `AGENTS.md` правила, архитектуру, полное дерево папок, длинное описание стека, справочник команд или содержимое README. Если старый файл раздут или построен иначе, сократи или перестрой его целиком.
@@ -237,6 +240,7 @@ description: 'Готовит проект к работе с AI: проекти
237
240
  - каждое правило задаёт проверяемое действие или запрет, а архитектурные границы не продублированы в форме императива;
238
241
  - `docs/arch.md` объясняет подход, структуру папок, части системы и их связи без повторения правил;
239
242
  - `docs/references.md` ссылается на все актуальные карточки и не содержит самих примеров;
243
+ - существующий `docs/business.md` учтён как вход, не изменён этим скилом и указан в `AGENTS.md`;
240
244
  - каждая карточка самодостаточна, содержит законченный пример кода и не содержит ссылок или неподтверждённых элементов;
241
245
  - для нового проекта без нескольких устойчивых реализаций не созданы выдуманные reference-карточки;
242
246
  - `AGENTS.md` остаётся коротким и ведёт к обязательным документам;
@@ -255,6 +259,7 @@ description: 'Готовит проект к работе с AI: проекти
255
259
  ## Чего НЕ делать
256
260
 
257
261
  - Править файлы вне разрешённого набора проектной документации.
262
+ - Создавать или обновлять `docs/business.md` и `docs/business/*.md` вместо `eda-business`.
258
263
  - Спрашивать, какие документы обновлять, если пользователь их не назвал: по умолчанию обновляется весь набор.
259
264
  - Просить выбрать режим перезаписи для каждого существующего файла.
260
265
  - Ограничивать правила фиксированным количеством или разбавлять их пояснениями и предложениями.
@@ -13,11 +13,11 @@ description: 'Проводит полное read-only ревью diff, ветк
13
13
 
14
14
  Если входа достаточно, продолжай без вопроса. Без аргументов ревьюй незакоммиченный `git diff HEAD`. Ссылка на PR/MR задаёт target однозначно. Если пользователь дал только корень удалённого репозитория, обязательно попроси указать PR/MR, ветку, коммит или файлы; весь репозиторий и последний PR автоматически не выбирай.
15
15
 
16
- Разовые указания вида «без performance», «включи database», «architecture на opus» или «tests на gpt-5.6-sol» важнее `docs/settings.yaml` и действуют только на текущий запуск.
16
+ Разовые указания вида «без performance», «без business», «включи database», «включи business», «architecture на opus» или «tests на gpt-5.6-sol» важнее `docs/settings.yaml` и действуют только на текущий запуск.
17
17
 
18
18
  ## Настройки
19
19
 
20
- Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 2`. Используй `review.agents.<check>.mode` и `review.agents.<check>.model.<platform>`. Если файла нет или версия отличается, используй defaults и добавь предупреждение; настройки v1 не применяй.
20
+ Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 3`. Используй `review.agents.<check>.mode` и `review.agents.<check>.model.<platform>`. Если файла нет или версия отличается, используй defaults и добавь предупреждение; старые настройки не применяй.
21
21
 
22
22
  Допустимые режимы:
23
23
 
@@ -27,7 +27,7 @@ description: 'Проводит полное read-only ревью diff, ветк
27
27
 
28
28
  Допустимые модели по умолчанию: Claude Code — `haiku`, `sonnet`, `opus`; Codex — `gpt-5.6-luna`, `gpt-5.6-terra`, `gpt-5.6-sol`. Неизвестное или отсутствующее значение замени default-значением конкретного агента и добавь предупреждение в покрытие.
29
29
 
30
- Если `version: 2` существует, но раздела `review.agents` нет, используй defaults ниже. Устаревшие поля `review.strict`, `review.include_code_quality` и раздел `review-check` не применяй; добавь предупреждение с просьбой перенести настройки вручную. Существующий файл настроек не переписывай.
30
+ Если `version: 3` существует, но раздела `review.agents` нет, используй defaults ниже и добавь предупреждение. Устаревшие поля `review.strict`, `review.include_code_quality` и раздел `review-check` не применяй. Существующий файл настроек не переписывай.
31
31
 
32
32
  | Проверка | Default mode | Claude | Codex |
33
33
  |---|---|---|---|
@@ -35,6 +35,7 @@ description: 'Проводит полное read-only ревью diff, ветк
35
35
  | `architecture` | `auto` | `opus` | `gpt-5.6-sol` |
36
36
  | `rules` | `always` | `haiku` | `gpt-5.6-luna` |
37
37
  | `references` | `auto` | `haiku` | `gpt-5.6-luna` |
38
+ | `business` | `auto` | `sonnet` | `gpt-5.6-terra` |
38
39
  | `plan_alignment` | `auto` | `sonnet` | `gpt-5.6-terra` |
39
40
  | `code_quality` | `always` | `sonnet` | `gpt-5.6-terra` |
40
41
  | `tests` | `always` | `sonnet` | `gpt-5.6-terra` |
@@ -60,9 +61,10 @@ description: 'Проводит полное read-only ревью diff, ветк
60
61
  2. Прочитай `AGENTS.md`, `CLAUDE.md`, `docs/rules.md`, `docs/arch.md` и сам target настолько, чтобы выбрать проверки и передать агентам точный контекст. На этом шаге не делай собственное code review.
61
62
  3. Определи `$PLAN_FILE`. Если его нет, используй `none` и не пытайся восстановить последний план наугад.
62
63
  4. Определи `$REFERENCE_FILES`: если план содержит `sources.references`, используй их; иначе через `docs/references.md` выбери только применимые карточки для компонентов target. Если карточек нет, используй `none`.
63
- 5. Сформируй краткий `$REVIEW_CONTEXT`: тип target, base, изменённые области, применимые документы и явные решения пользователя. Не включай в него domain-инструкции агентов.
64
+ 5. Определи `$BUSINESS_FILES`: сначала установи исходную задачу и фактически затронутое пользовательское или доменное поведение по текущему сообщению, плану и target. Если план содержит `sources.business`, используй только относящиеся к этому поведению пути; иначе прочитай `docs/business.md` и по описаниям выбери только применимые карточки. Если индекс отсутствует, подходящих карточек нет или изменения не затрагивают бизнес-поведение, используй `none`. Не загружай все карточки только потому, что индекс существует.
65
+ 6. Сформируй краткий `$REVIEW_CONTEXT`: тип target, base, исходную задачу из текущего сообщения, плана, PR/MR title/body или явно связанного issue/артефакта, изменённые области, применимые документы и явные решения пользователя. Если надёжного описания задачи нет, явно напиши `task: unknown`, а не восстанавливай намерение по догадке. Не включай в контекст domain-инструкции агентов.
64
66
 
65
- Приоритет решений: подтверждённое решение пользователя → действующие правила → архитектура → применимые карточки.
67
+ Текущая задача задаёт область и намерение изменений. Применимые business-карточки проверяют затронутое поведение, но не расширяют target. Если задача явно меняет правило карточки, это возможная рассинхронизация business-документации, которую должен классифицировать `eda-review-business`, а не основание молча объявить реализацию неверной.
66
68
 
67
69
  ## Выбрать проверки
68
70
 
@@ -71,6 +73,7 @@ description: 'Проводит полное read-only ревью diff, ветк
71
73
  - `always` включай всегда, `off` всегда пропускай.
72
74
  - `architecture` в `auto` включай при изменении границ модулей, зависимостей, публичных контрактов или разделения ответственности.
73
75
  - `references` включай только при непустом `$REFERENCE_FILES`.
76
+ - `business` включай только при непустом `$BUSINESS_FILES` и изменении пользовательского или доменного поведения.
74
77
  - `plan_alignment` включай только при непустом `$PLAN_FILE`.
75
78
  - `security` включай для auth, permissions, внешнего ввода, файлов, сети, секретов, криптографии и других границ доверия.
76
79
  - `performance` включай для запросов, пакетной обработки, кешей, конкурентности, памяти или горячих путей.
@@ -100,6 +103,7 @@ description: 'Проводит полное read-only ревью diff, ветк
100
103
  TARGET: <target>
101
104
  PLAN_FILE: <path | none>
102
105
  REFERENCE_FILES: <paths | none>
106
+ BUSINESS_FILES: <paths | none>
103
107
  MODEL: <фактически выбранная модель>
104
108
  REVIEW_CONTEXT: <краткий общий контекст>
105
109
 
@@ -110,7 +114,7 @@ REVIEW_CONTEXT: <краткий общий контекст>
110
114
 
111
115
  ## Проверить ответы и обработать сбои
112
116
 
113
- Проверь для каждого ответа `status`, `check`, фактически запрошенный `model` и структуру `findings`. Несовпадение модели считай ошибкой контракта. Находка без конкретного риска и доказательства не подтверждена.
117
+ Проверь для каждого ответа `status`, `check`, фактически запрошенный `model` и структуру `находки`. Несовпадение модели считай ошибкой контракта. Каждая находка означает дефект, который обязательно исправить. Находка без точного места, конкретного достижимого риска, доказательства и проверяемого способа исправления не подтверждена.
114
118
 
115
119
  - При `blocked`, неверном YAML или отсутствующих обязательных полях один раз повтори того же агента на той же модели с исходным контекстом и описанием ошибки формата.
116
120
  - `completed` означает успешно выполненную проверку. `not_applicable` перенеси в skipped с причиной и не повторяй.
@@ -124,9 +128,11 @@ REVIEW_CONTEXT: <краткий общий контекст>
124
128
 
125
129
  1. Проверь находки по указанным evidence и отклони неподтверждённые.
126
130
  2. Объедини дубли разных агентов в один пункт, сохранив все полезные доказательства.
127
- 3. Распредели проблемы по тяжести и рекомендации `required` или `optional`.
128
- 4. Сам выставь итоговый `score` от 0 до 100 по серьёзности, вероятности, влиянию и общему качеству реализации. Не используй фиксированные вычеты, среднее или минимум оценок агентов. Добавь короткое обоснование числа.
129
- 5. Не выполняй дополнительное самостоятельное ревью и не добавляй новые domain-находки от себя.
131
+ 3. Оставь только конкретные ошибки, нарушения контрактов и существенные неточности, которые нельзя безопасно игнорировать. Косметические улучшения, вкусовой рефакторинг, спекулятивное усиление, необязательные тесты, документацию и оптимизации отклони, а не превращай в находку.
132
+ 4. Для каждой принятой находки проверь точное место, доказательство, практическое влияние, минимальное исправление и способ проверки. Если хотя бы одного элемента нет, отклони находку.
133
+ 5. Сам выставь итоговый `score` от 0 до 100 по серьёзности, вероятности, влиянию и общему качеству реализации. Не используй фиксированные вычеты, среднее или минимум оценок агентов. Ориентир: `100` — находок нет; `95–99` — только low; `80–94` — medium или несколько low; `60–79` — high; ниже `60` — critical или нужна существенная переработка. Любое снижение score связывай с принятыми находками; если находок нет, score равен `100`. Добавь короткое обоснование числа.
134
+ 6. Установи `result: clean`, только если находок нет; при любой находке используй `result: changes-required` независимо от score.
135
+ 7. Не выполняй дополнительное самостоятельное ревью и не добавляй новые domain-находки от себя.
130
136
 
131
137
  Ревью содержит только проблемы. Не перечисляй выполненную работу, похвалу и успешные проверки. Исключение — короткий технический раздел покрытия.
132
138
 
@@ -140,6 +146,7 @@ target: <что проверено>
140
146
  plan: <docs/plans/... | none>
141
147
  score: <0..100>
142
148
  status: <reviewed | reviewed-with-warnings>
149
+ result: <clean | changes-required>
143
150
  date: <YYYY-MM-DD HH:MM>
144
151
  checks:
145
152
  - name: <check>
@@ -166,6 +173,10 @@ checks:
166
173
 
167
174
  <Только подтверждённые plan_alignment-проблемы. Если плана нет: «Проверка плана пропущена: план не указан и не найден.»>
168
175
 
176
+ ## Проблемы бизнес-логики
177
+
178
+ <Только подтверждённые business-проблемы: нарушение карточки или рассинхронизация карточки с явно изменившей правило задачей. Если проверка не запускалась или проблем нет — коротко укажи это.>
179
+
169
180
  ## Проблемы в коде
170
181
 
171
182
  ### 1. <короткий заголовок>
@@ -176,29 +187,18 @@ checks:
176
187
 
177
188
  - **Тип:** <check>
178
189
  - **Тяжесть:** <critical | high | medium | low>
179
- - **Рекомендация:** <править обязательно | на усмотрение автора>
180
190
  - **Файлы:** `<path:line>`
181
191
  - **Что подтверждает проблему:** <evidence>
182
192
  - **Как исправить:** <общий подход и конкретные шаги>
183
193
  - **Тесты:** <что добавить или обновить>
184
194
 
185
- ## Рекомендации
186
-
187
- ### Править обязательно
188
- - <номера или «Нет»>
189
-
190
- ### На усмотрение автора
191
- - <номера или «Нет»>
192
-
193
- ### Не править
194
- - <только явно отклонённые пункты или «Нет»>
195
195
  ```
196
196
 
197
197
  Основная часть каждого замечания — главный ответ: простой язык, 1–3 коротких абзаца и контекст, понятный без чтения diff или плана. Файлы, строки, SQL, DTO и внутренние имена давай ниже в `Технические детали`.
198
198
 
199
199
  ## Финал
200
200
 
201
- Коротко сообщи путь к ревью, статус, score, количество обязательных и optional-проблем, completed/skipped/warnings. Предложи `eda-fix-by-review` для исправления или `eda-commit`, если результат приемлем.
201
+ Коротко сообщи путь к ревью, status, result, score, количество находок, completed/skipped/warnings. При `changes-required` предложи `eda-fix-by-review`; при `clean` — `eda-commit`.
202
202
 
203
203
  ## Чего НЕ делать
204
204
 
@@ -21,8 +21,9 @@ description: 'Создаёт продуктовый или технически
21
21
  4. **Каждая задача короткая, но однозначная.** Читатель должен понять границы задачи без дополнительного созвона.
22
22
  5. **Можно чуть подробнее, если это снимает двусмысленность.** Допускается одно короткое описание: что должно появиться, для кого и какой результат ожидается.
23
23
  6. **Не выдумывай обязательства.** Если пользователь дал только направление, формулируй разумный черновик и явно помечай предположения.
24
- 7. **Прочитай `docs/rules.md` и `docs/arch.md`**, если есть, чтобы не противоречить зафиксированным правилам и архитектурным ограничениям.
25
- 8. **Существующие roadmap-файлы учитывай только при явной необходимости.** Если пользователь просит продолжить, обновить или не дублировать прошлый roadmap — прочитай релевантные файлы из `docs/roadmaps/`.
24
+ 7. **Прочитай рамку проекта.** Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Сначала определи тему и границы текущего roadmap; затем через `docs/business.md` выбери только карточки, чьё описание прямо относится к этой теме. Если подходящих карточек нет, продолжай без business-контекста.
25
+ 8. **Не разрешай конфликт молча.** Если задача противоречит применимой business-карточке, остановись, покажи конкретное противоречие и через `AskUserQuestion` спроси: изменить задачу roadmap или сначала пересогласовать правило через `eda-business`.
26
+ 9. **Существующие roadmap-файлы учитывай только при явной необходимости.** Если пользователь просит продолжить, обновить или не дублировать прошлый roadmap — прочитай релевантные файлы из `docs/roadmaps/`.
26
27
 
27
28
  ## Интерактивные вопросы
28
29
 
@@ -46,7 +47,7 @@ description: 'Создаёт продуктовый или технически
46
47
 
47
48
  ### 2. Собрать минимальный контекст
48
49
 
49
- Прочитай `docs/rules.md` и `docs/arch.md`, если они есть. Не делай глубокое исследование кода, если пользователь прямо не просит привязать roadmap к текущему состоянию проекта.
50
+ Прочитай `docs/rules.md` и `docs/arch.md`, если они есть. Определи продуктовую тему roadmap, затем прочитай `docs/business.md`, если индекс существует, и только применимые по описанию карточки. Business-карточки уточняют требования затронутой темы, но не расширяют roadmap на другие домены. Не делай глубокое исследование кода, если пользователь прямо не просит привязать roadmap к текущему состоянию проекта.
50
51
 
51
52
  Если пользователь просит продолжить или обновить существующий roadmap:
52
53
  - найди релевантный файл по указанному пути или теме;
@@ -73,6 +74,7 @@ status: draft
73
74
  sources:
74
75
  rules: <путь или —>
75
76
  arch: <путь или —>
77
+ business: [<пути к применимым карточкам или пусто>]
76
78
  previous_roadmap: <путь или —>
77
79
  ---
78
80
 
@@ -106,6 +108,7 @@ Quality gate перед сохранением:
106
108
  - есть ровно один основной список задач в разделе `Задачи`;
107
109
  - каждая задача имеет короткое название и понятное описание;
108
110
  - задачи не содержат деталей реализации: файлов, библиотек, API, команд, миграций, схем таблиц, тестовых стратегий;
111
+ - `sources.business` содержит только карточки, применимые к теме roadmap, либо пустой список;
109
112
  - roadmap можно использовать как вход для `eda-explore` или `eda-plan`, но сам он не является исследованием или планом реализации.
110
113
 
111
114
  ### 5. Финал
@@ -11,7 +11,7 @@ description: 'Публикует готовое ревью из `docs/reviews/`
11
11
 
12
12
  Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настройки.
13
13
 
14
- Поддерживается только `version: 2`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолт: `send-review.close_previous_reviews: false`.
14
+ Поддерживается только `version: 3`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолт: `send-review.close_previous_reviews: false`.
15
15
 
16
16
  | Настройка | Значения | Аргументы в сообщении |
17
17
  |---|---|---|
@@ -53,9 +53,9 @@ description: 'Публикует готовое ревью из `docs/reviews/`
53
53
  ### 2. Выбрать ревью и что отправлять
54
54
  Сначала разбери текст рядом с вызовом: путь к ревью, название или часть названия, «последнее ревью», PR (`PR 12`, `#12`), статус отправки (`comment`, `review-comment`, `approve`, `request-changes`) и указание закрыть или сохранить предыдущие ревью.
55
55
 
56
- Если найдено ровно одно ревью — продолжай без вопроса. Если найдено несколько одинаково подходящих ревью — `AskUserQuestion` со списком вариантов. Если входа нет — `AskUserQuestion` со списком последних файлов из `docs/reviews/`. Если `docs/reviews/` отсутствует или пуста — остановись с понятным вопросом или статусом `blocked: нужно ревью`. Прочитай файл целиком: оценку, замечания, рекомендации. Отсутствие статуса отправки само по себе не считается недостатком входа и не требует вопроса.
56
+ Если найдено ровно одно ревью — продолжай без вопроса. Если найдено несколько одинаково подходящих ревью — `AskUserQuestion` со списком вариантов. Если входа нет — `AskUserQuestion` со списком последних файлов из `docs/reviews/`. Если `docs/reviews/` отсутствует или пуста — остановись с понятным вопросом или статусом `blocked: нужно ревью`. Прочитай файл целиком: result, оценку и замечания. Отсутствие статуса отправки само по себе не считается недостатком входа и не требует вопроса.
57
57
 
58
- **Что отправлять.** По умолчанию — все замечания. Если в тексте указано подмножество, отправь только его. Синтаксис свободный, распознавай по смыслу: по номерам («пункты 1, 3, 5»), по обязательности («только обязательные» → раздел «Править обязательно»), по типу («только security» → замечания с этим `Тип`). Выбор влияет и на сводку, и на комментарии к строкам.
58
+ **Что отправлять.** По умолчанию — все замечания. Если в тексте указано подмножество, отправь только его. Синтаксис свободный, распознавай по смыслу: по номерам («пункты 1, 3, 5») или по типу («только security» → замечания с этим `Тип`). У находок нет разных степеней обязательности: каждый отправляемый пункт требует исправления. Выбор влияет и на сводку, и на комментарии к строкам. Для старого формата отправляй только раздел `Править обязательно`; предложения из остальных групп отбрасывай.
59
59
 
60
60
  ### 3. Найти целевой PR
61
61
  Если номер PR указан в тексте пользователя — используй его. Иначе попробуй `gh pr view --json number,url,headRefName` — если у текущей ветки уже есть PR, возьми его номер.
@@ -73,7 +73,7 @@ Review отправляется всегда; здесь выбирается т
73
73
  | явно указано `comment` / `review-comment` | `COMMENT` | не задавать |
74
74
  | статус не указан | `COMMENT` | не задавать |
75
75
 
76
- `comment` и `review-comment` означают review без решения о принятии изменений (`event=COMMENT`) — обычный комментарий-ревью, который тоже несёт сводку и комментарии к строкам. Явно приложенный или названный пользователем контекст текущего вызова учитывай наравне с текстом рядом со скиллом. Не выводи статус из score, раздела рекомендаций, не связанного с вызовом старого обсуждения или предыдущих запусков. Если в текущем контексте одновременно указаны несовместимые статусы и приоритет неясен — `AskUserQuestion` с тремя вариантами.
76
+ `comment` и `review-comment` означают review без решения о принятии изменений (`event=COMMENT`) — обычный комментарий-ревью, который тоже несёт сводку и комментарии к строкам. Явно приложенный или названный пользователем контекст текущего вызова учитывай наравне с текстом рядом со скиллом. Не выводи статус из result, score, старого обсуждения или предыдущих запусков. Если в текущем контексте одновременно указаны несовместимые статусы и приоритет неясен — `AskUserQuestion` с тремя вариантами.
77
77
 
78
78
  ### 5. Собрать сводку и комментарии к строкам
79
79
  Из выбранных пунктов собери две части.
@@ -84,12 +84,12 @@ Review отправляется всегда; здесь выбирается т
84
84
  ## Ревью: <заголовок>
85
85
 
86
86
  **Оценка:** N/100. <одно-два предложения почему>
87
+ **Результат:** <clean | changes-required>
87
88
 
88
89
  <короткое резюме: что отправлено и общий вывод>
89
90
 
90
- ### Рекомендации
91
- - **Править обязательно:** 1, 3, 5
92
- - **На усмотрение автора:** 2, 4
91
+ ### Замечания
92
+ 1. **[тип]** <краткая суть и требуемое исправление>
93
93
 
94
94
  ### Замечания вне diff
95
95
  1. **[тип]** `path/file.py:42` — <что не так>. → <что предлагаешь>
@@ -170,7 +170,7 @@ gh api graphql -f query='mutation($id: ID!) { resolveReviewThread(input: {thread
170
170
  - Делать само ревью или править замечания — это `eda-review` / `eda-fix-by-review`.
171
171
  - Отправлять всё одним обычным комментарием PR, когда строки можно привязать к diff — обычный комментарий только fallback при отсутствии diff.
172
172
  - Терять замечания вне diff — они идут в сводку отдельным разделом.
173
- - Выводить `approve` или `request-changes` из score, рекомендаций или не связанного с вызовом старого контекста — без явного статуса в контексте текущего вызова всегда `COMMENT`.
173
+ - Выводить `approve` или `request-changes` из result, score или не связанного с вызовом старого контекста — без явного статуса в контексте текущего вызова всегда `COMMENT`.
174
174
  - Скрывать или резолвить чужие, ручные или не связанные с предыдущими отправками `eda-send-review` комментарии.
175
175
  - Закрывать предыдущие отправки до успешной публикации нового ревью.
176
176
  - Передавать тело через `-b "..."` со спецсимволами — только `--input` (Reviews API) или `--body-file` (fallback).