@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
@@ -5,13 +5,13 @@ description: 'Выполняет настраиваемую цепочку `eda-
5
5
 
6
6
  # Скил: Оркестра полного цикла (eda-orhestra)
7
7
 
8
- Выполняй настроенные `eda-*`-скилы по порядку. По умолчанию цепочка остаётся полной: `eda-plan` → `eda-plan-execute` → `eda-polish` → `eda-manual-test`; failed-отчёт ручной проверки передаётся в `eda-fix`, после чего повторяются включённые polish и manual-test.
8
+ Выполняй настроенные `eda-*`-скилы по порядку. По умолчанию цепочка: `eda-plan` без проверок → `eda-plan-polish` → `eda-plan-execute` → `eda-polish` → `eda-manual-test`. Failed-отчёт ручной проверки передавай в `eda-fix`, затем возвращайся к `eda-manual-test` до `passed` или лимита QA-циклов.
9
9
 
10
10
  ## Настройки
11
11
 
12
12
  Прочитай только раздел `orhestra` из `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее любого поля настроек.
13
13
 
14
- Поддерживается только `version: 2`. При другой версии, отсутствующем `orhestra.steps` или невалидном значении используй дефолты ниже; настройки старого формата не применяй. Дефолт режима: `orhestra.mode: automatic`.
14
+ Поддерживается только `version: 3`. При другой версии, отсутствующем `orhestra.steps` или невалидном значении используй дефолты ниже; настройки старого формата не применяй. Дефолт режима: `orhestra.mode: automatic`.
15
15
 
16
16
  ```yaml
17
17
  orhestra:
@@ -20,6 +20,10 @@ orhestra:
20
20
  - id: plan
21
21
  skill: eda-plan
22
22
  enabled: true
23
+ args: "без проверок"
24
+ - id: plan-polish
25
+ skill: eda-plan-polish
26
+ enabled: true
23
27
  args: ""
24
28
  - id: execute
25
29
  skill: eda-plan-execute
@@ -37,7 +41,6 @@ orhestra:
37
41
  skill: eda-fix
38
42
  args: ""
39
43
  then:
40
- - polish
41
44
  - manual-test
42
45
  max_cycles: 5
43
46
  ```
@@ -48,13 +51,13 @@ orhestra:
48
51
  - `steps`: упорядоченный непустой список. Выполняй сверху вниз только элементы с `enabled: true`; отсутствующий `enabled` считай `true`.
49
52
  - `id`: уникальное непустое имя шага для ссылок из `on_failure.then`.
50
53
  - `skill`: имя установленного `eda-*`-скила. Не разрешай `eda-orhestra`, `eda-aim`, `eda-commit`, `eda-send-review`, `eda-worktree` и `eda-merge-worktree`.
51
- - `args`: строка, которую нужно дословно добавить к входу этого скилла. Отсутствующее значение считай пустой строкой. Для `eda-polish` здесь же задавай штатные `threshold N` и `limit N`; дефолт — `limit 5`.
54
+ - `args`: строка, которую нужно дословно добавить к входу этого скилла. Отсутствующее значение считай пустой строкой. Для дефолтного `eda-plan` передавай `без проверок`, чтобы оба вида ревью выполнил следующий `eda-plan-polish`. Для `eda-polish` здесь же задавай штатные `threshold N` и `limit N`; дефолт — `limit 5`.
52
55
  - `on_failure`: опциональный обработчик `failed` у шага `eda-manual-test`. Если поля нет, сохрани failed-отчёт и остановись без исправлений.
53
56
  - `on_failure.skill` и `on_failure.args`: разрешённый установленный скил исправления и его аргументы; дефолты `eda-fix` и пустая строка. Для `skill` действуют те же запреты, что для `steps[].skill`.
54
57
  - `on_failure.then`: id шагов, которые после исправления нужно повторить в указанном порядке. Пропускай отключённые шаги. Список должен содержать id активного `eda-manual-test`, иначе исправление нельзя подтвердить.
55
58
  - `on_failure.max_cycles`: положительное целое число, дефолт `5`.
56
59
 
57
- Старый v2 только с `orhestra.mode` означает полную дефолтную цепочку. Настройки проекта не переписывай во время запуска.
60
+ Если в v3 есть только `orhestra.mode`, используй полную дефолтную цепочку. Настройки проекта не переписывай во время запуска.
58
61
 
59
62
  Для совместимости старое значение `steps[].skill: eda-execute` нормализуй в памяти в `eda-plan-execute`. Файл настроек не переписывай; остальные неизвестные или удалённые скилы не заменяй автоматически.
60
63
 
@@ -62,7 +65,7 @@ orhestra:
62
65
 
63
66
  Сохрани весь текст рядом с вызовом в `$USER_REQUEST`. Извлеки задачу, пути к готовым артефактам, режим и разовые изменения цепочки.
64
67
 
65
- Поддерживай естественные overrides: `без полировки`, `полировка 2 итерации`, `без ручных тестов`, `только plan и execute`, `после plan запусти plan-polish strict`, `для manual-test <args>`. Явное перечисление порядка заменяет порядок из настроек; локальное включение, отключение или параметры меняют только названный шаг. Фразу `полировка N итераций` нормализуй в `limit N` внутри `args` шага. Не принимай слово из описания самой задачи за override без явной связи с цепочкой.
68
+ Поддерживай естественные overrides: `без полировки плана`, `без полировки кода`, `полировка кода 2 итерации`, `без ручных тестов`, `только plan и execute`, `plan-polish threshold 95 limit 3`, `для manual-test <args>`. Явное перечисление порядка заменяет порядок из настроек; локальное включение, отключение или параметры меняют только названный шаг. Фразу `полировка кода N итераций` нормализуй в `limit N` внутри `args` шага `eda-polish`; аналогичную фразу о плане — в `args` шага `eda-plan-polish`. Не принимай слово из описания самой задачи за override без явной связи с цепочкой.
66
69
 
67
70
  Если передан готовый план, а включённый `eda-plan` должен создать тот же план, пропусти этот шаг как уже выполненный и запиши причину. Остальные шаги не додумывай и не подменяй: если им не хватает входного артефакта, обработай их вопрос по выбранному режиму.
68
71
 
@@ -83,7 +86,7 @@ orhestra:
83
86
  - Для вопроса `eda-plan-execute` о месте выполнения выбирай текущую ветку, если пользователь явно не запросил ветку или worktree.
84
87
  - Не спрашивай о переходе между успешными шагами.
85
88
 
86
- Автоматический режим не разрешает необратимые внешние действия, расширение scope, публикацию, расходы, удаление данных, ослабление проверок или изменение production/staging. Подтверждение из-за такого риска передай человеку; в неинтерактивной среде остановись с `blocked: нужен ответ пользователя`. Обратимые решения плана, включая БД/API-контракты и подтверждение готового плана, выбирай сам.
89
+ Автоматический режим не разрешает необратимые внешние действия, расширение scope, публикацию, расходы, удаление данных, ослабление проверок вне настроенной цепочки или изменение production/staging. Дефолтное `без проверок` у `eda-plan` не считай ослаблением: следующий обязательный `eda-plan-polish` выполняет проверку и доводку плана. Подтверждение из-за риска передай человеку; в неинтерактивной среде остановись с `blocked: нужен ответ пользователя`. Обратимые решения плана, включая БД/API-контракты и подтверждение готового плана, выбирай сам.
87
90
 
88
91
  ### Manual
89
92
 
@@ -116,25 +119,25 @@ orhestra:
116
119
  1. Запусти скилл с подготовленным вводом.
117
120
  2. Обработай его вопрос по режиму.
118
121
  3. Прочитай сохранённый артефакт и явный статус. `blocked`, неполный обязательный результат или непройденная обязательная проверка останавливают цепочку.
119
- 4. Для `eda-polish` считай успехом только последний полный review со статусом `reviewed` или `reviewed-with-warnings` и `score >= threshold`; отдельного polish-файла нет.
122
+ 4. Для `eda-polish` считай успехом только последний полный review со статусом `reviewed` или `reviewed-with-warnings`, `result: clean`, без находок и с `score >= threshold`; отдельного polish-файла нет.
120
123
  5. Для успешного шага сохрани все пути и передай их следующему.
121
124
 
122
125
  Если `eda-manual-test` вернул `failed`:
123
126
 
124
127
  1. Если у этого шага нет `on_failure`, остановись с результатом `manual-test: failed`.
125
128
  2. Запусти `on_failure.skill` с manual-test-отчётом, `$USER_REQUEST`, предыдущими артефактами и `on_failure.args`.
126
- 3. После успешного fix увеличь счётчик и выполни активные шаги из `on_failure.then` в заданном там порядке. Их собственные `args` сохраняются.
129
+ 3. После успешного fix увеличь счётчик и выполни активные шаги из `on_failure.then` в заданном там порядке. Их собственные `args` сохраняются. В дефолтной цепочке здесь только `manual-test`: после QA-фикса вернись к ручной проверке, не запускай полировку кода повторно.
127
130
  4. Если повторный manual-test снова `failed`, начни следующий QA-цикл.
128
131
  5. Остановись с `blocked: QA не сходится`, если достигнут `on_failure.max_cycles`, два fix-цикла подряд не меняют результат того же сценария, нужен выход за scope или окружение не позволяет проверить.
129
132
  6. После `passed` продолжи линейную цепочку со шага, следующего за исходным manual-test.
130
133
 
131
- Если manual-test отключён или отсутствует, failure-цикл не запускай и не изображай ручную проверку. Если polish отключён, не требуй review score и не запускай его после fix через `on_failure.then`.
134
+ Если manual-test отключён или отсутствует, failure-цикл не запускай и не изображай ручную проверку. Если шаг `eda-polish` отключён, не требуй review score. Если `eda-plan-polish` отключён, не требуй оценку плана. Не запускай ни одну из полировок после fix, если её id нет в `on_failure.then`.
132
135
 
133
136
  ## Финал
134
137
 
135
138
  Сообщи режим, фактически выполненную цепочку с args и лимитами, пропущенные шаги и причины, пути ко всем артефактам, последний review score при наличии, результат manual-test при наличии, число QA-циклов и состояние git «не закоммичено».
136
139
 
137
- Успех означает, что все включённые шаги завершились по собственным контрактам. Если manual-test был включён, после последних изменений обязателен `passed`; если он отключён, явно напиши «ручные тесты пропущены настройкой». Если polish отключён, явно напиши «полировка пропущена настройкой».
140
+ Успех означает, что все включённые шаги завершились по собственным контрактам. Если manual-test был включён, после последних изменений обязателен `passed`; если он отключён, явно напиши «ручные тесты пропущены настройкой». Если отключён `eda-plan-polish`, явно напиши «полировка плана пропущена настройкой». Если отключён `eda-polish`, явно напиши «полировка кода пропущена настройкой».
138
141
 
139
142
  ## Чего НЕ делать
140
143
 
@@ -1,21 +1,22 @@
1
1
  ---
2
2
  name: eda-plan
3
- description: 'Создаёт подробный исполнимый план реализации задачи и сохраняет его в `docs/plans/`.'
3
+ description: 'Создаёт конкретный исполнимый план реализации задачи и сохраняет его в `docs/plans/`.'
4
4
  ---
5
5
 
6
6
  # Скил: Планировщик (eda-plan)
7
7
 
8
- Собираешь контекст, запускаешь стандартный Plan Mode хост-агента, нормализуешь результат в файл `docs/plans/`, явно помечаешь зависимости задач и формируешь связные фазы для выполнения одним агентом, затем проверяешь план тремя параллельными субагентами/моделями. В `strict` добавляешь кросс-CLI проверку.
8
+ Собираешь контекст, запускаешь стандартный Plan Mode хост-агента, нормализуешь результат в файл `docs/plans/`, явно помечаешь зависимости задач и формируешь связные фазы для выполнения одним агентом. По настройкам запускаешь специализированный цикл `eda-plan-polish`, а в strict — независимую кросс-CLI проверку.
9
9
 
10
10
  ## Режим запуска
11
11
 
12
12
  Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
13
13
 
14
- Поддерживается только `version: 2`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолты: `plan.strict: false`, `plan.size: normal`, `plan.decision_mode: recommend_and_ask`, `plan.test_strategy: ask_each_time`, `plan.logging_strategy: ask_each_time`.
14
+ Поддерживается только `version: 3`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолты: `plan.strict: false`, `plan.review: true`, `plan.size: normal`, `plan.decision_mode: recommend_and_ask`, `plan.test_strategy: ask_each_time`, `plan.logging_strategy: ask_each_time`.
15
15
 
16
16
  | Настройка | Значения | Аргументы в сообщении |
17
17
  |---|---|---|
18
18
  | `plan.strict` | `true`, `false` | `strict`; выключение: `normal`, `без strict`, `без строгого режима` |
19
+ | `plan.review` | `true`, `false` | включение: `с ревью плана`, `с plan-review`; выключение: `без ревью плана`, `без plan-review` |
19
20
  | `plan.size` | `normal`, `short`, `ask_each_time` | `short`; обычный: `обычный план`, `не short` |
20
21
  | `plan.decision_mode` | `autonomous`, `recommend_and_ask`, `ask_each_time` | `autonomous`, `recommend_and_ask`, `ask_each_time`, «сам выбирай», «рекомендуй и спрашивай», «спрашивай всё» |
21
22
  | `plan.test_strategy` | `after_each_phase`, `tdd_each_phase`, `end_of_plan`, `ask_each_time` | явное указание стратегии тестов |
@@ -27,6 +28,8 @@ description: 'Создаёт подробный исполнимый план р
27
28
 
28
29
  `test_strategy` обязан менять план: `tdd_each_phase` начинает каждую фазу с тестов, `after_each_phase` добавляет тесты после реализации каждой фазы, `end_of_plan` выносит тесты в отдельную финальную фазу. `logging_strategy` обязан отражаться в алгоритме, фазах и разделе `Логирование`.
29
30
 
31
+ `без проверок` одновременно устанавливает `plan.review: false` и `plan.strict: false`. `plan.review` и `plan.strict` независимы: можно оставить только один вид проверки. Более конкретное прямое указание в том же сообщении имеет приоритет.
32
+
30
33
  ## Вход из сообщения пользователя
31
34
 
32
35
  Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Разбери тему, задачу, путь к файлу, режим, ограничения и прямые указания.
@@ -54,14 +57,16 @@ description: 'Создаёт подробный исполнимый план р
54
57
 
55
58
  1. Никаких правок кода, миграций, конфигов и зависимостей. Запись только в `docs/plans/`.
56
59
  2. `docs/rules.md` и `docs/arch.md` — обязательная рамка планирования, а не справочный контекст. Прочитай их, выдели применимые правила и архитектурные ограничения, передай их в Plan Mode как обязательные требования.
57
- 3. Если существует `docs/references.md`, прочитай индекс, выбери только карточки для затронутых компонентов и прочитай их целиком. Их кодовые примеры задают ожидаемую форму реализации; нерелевантные карточки не загружай.
58
- 4. Приоритет: подтверждённое решение пользователя → `docs/rules.md` → `docs/arch.md` → релевантные карточки. Если запрос, research, черновик или шаг плана конфликтует с этой рамкой, не финализируй план. Спроси, адаптировать подход, отдельно изменить рамку или прервать планирование. Отклонение от карточки допустимо только с подтверждённой причиной, записанной в плане.
59
- 5. Не переформулируй запрос пользователя перед Plan Mode: передавай оригинал, ответы на вопросы и найденную рамку.
60
- 6. План сохраняется до мета-ревью, иначе ревьюерам нечего читать.
61
- 7. Финальный план должен быть простым, исполнимым и без альтернатив вида «выбрать», «решить», «можно так или так», «предпочтительно».
62
- 8. Если нужны пакеты, библиотеки, CLI, сервисы или другое ПО, а версия не указана в контексте или lock/config-файлах, найди последнюю стабильную версию через context7 или web search по официальным источникам. Не пиши `latest` без конкретной версии и источника.
63
- 9. Если выбран `plan.size: short`, но задача не укладывается в ограничения, не сохраняй short-план: объясни причину, оцени нужный объём и спроси, продолжать в `normal` или сузить задачу.
64
- 10. Каждой задаче в фазах присвой уникальный ID и укажи её прямые зависимости. Собери каждую фазу вокруг одной связной цели и объёма, который один исполнитель может реализовать и проверить за один проход; слишком крупную или несвязную фазу раздели.
60
+ 3. Сначала определи задачу и затронутое поведение. Если существует `docs/business.md`, по описаниям выбери только применимые карточки и прочитай их целиком; нерелевантные карточки не загружай. Business-карточки ограничивают только затронутое поведение и не расширяют задачу.
61
+ 4. Если существует `docs/references.md`, прочитай индекс, выбери только карточки для затронутых компонентов и прочитай их целиком. Их кодовые примеры задают ожидаемую форму реализации; нерелевантные карточки не загружай.
62
+ 5. Если запрос, research или черновик плана противоречит применимой business-карточке, не выбирай источник молча и не финализируй план. Покажи конфликт и через `AskUserQuestion` спроси: изменить задачу или сначала пересогласовать business-правило через `eda-business`. Конфликты с rules, architecture или references разрешай отдельным явным решением пользователя.
63
+ 6. Не переформулируй запрос пользователя перед Plan Mode: передавай оригинал, ответы на вопросы и найденную рамку.
64
+ 7. План сохраняется до любой включённой проверки, иначе ревьюерам нечего читать.
65
+ 8. Финальный план должен быть простым, исполнимым и без альтернатив вида «выбрать», «решить», «можно так или так», «предпочтительно».
66
+ 9. Если нужны пакеты, библиотеки, CLI, сервисы или другое ПО, а версия не указана в контексте или lock/config-файлах, найди последнюю стабильную версию через context7 или web search по официальным источникам. Не пиши `latest` без конкретной версии и источника.
67
+ 10. Если выбран `plan.size: short`, но задача не укладывается в ограничения, не сохраняй short-план: объясни причину, оцени нужный объём и спроси, продолжать в `normal` или сузить задачу.
68
+ 11. Каждой задаче в фазах присвой уникальный ID и укажи её прямые зависимости. Собери каждую фазу вокруг одной связной цели и объёма, который один исполнитель может реализовать и проверить за один проход; слишком крупную или несвязную фазу раздели.
69
+ 12. Пиши конкретно и без воды. Каждая формулировка должна определять действие, место изменения, поведение или контракт, зависимость, проверку либо существенное принятое решение. Если её удаление ничего из этого не меняет, удали её из плана.
65
70
 
66
71
  ## Этапы
67
72
 
@@ -69,6 +74,7 @@ description: 'Создаёт подробный исполнимый план р
69
74
 
70
75
  - Разбери текущий вход и настройки.
71
76
  - Прочитай `docs/rules.md`, `docs/arch.md`, если они есть; выпиши применимые команды проверки, требования к тестам, границы модулей, зависимости, API, миграции, безопасность, документацию и локальные запреты.
77
+ - Если есть `docs/business.md`, сначала установи границы задачи, затем по описаниям выбери только карточки затронутого поведения и выпиши применимые требования, сценарии и критерии приёмки. Если подходящих карточек нет, продолжай без business-контекста.
72
78
  - Если есть `docs/references.md`, выбери по индексу применимые карточки, прочитай их и выпиши обязательные элементы кодовых примеров.
73
79
  - Research подтягивай без вопроса, если путь указан; если в сообщении есть описание задачи без research-файла — используй описание как контекст и не спрашивай research автоматически. Если пользователь явно просит research, но файл не указал, предложи последние файлы из `docs/researches/` и вариант «нет».
74
80
  - Проверь версии нужных пакетов/ПО, если они не зафиксированы в запросе, правилах, архитектуре, research или lock/config-файлах.
@@ -87,6 +93,7 @@ description: 'Создаёт подробный исполнимый план р
87
93
  6. Требование: план следует правилам, архитектуре и применимым эталонам с указанным приоритетом; при конфликте или необоснованном отклонении остановиться и спросить пользователя.
88
94
  7. Требование: финальный план нормализуется в структуру ниже, не смешивает исследование с исполнением и не добавляет неподтверждённые существенные решения.
89
95
  8. Требование: каждая задача получает уникальный ID и прямые зависимости, а каждая фаза образует связный объём работы для одного исполнителя.
96
+ 9. Требование: конкретика не равна максимальной подробности. Не пересказывать запрос и существующий код, не повторять один контракт в нескольких разделах, не добавлять очевидные пояснения и не выдумывать пути, символы или API ради видимости конкретики.
90
97
 
91
98
  Не выходи из Plan Mode, пока пользователь не подтвердил план.
92
99
 
@@ -103,12 +110,14 @@ plan_size: <normal | short>
103
110
  decision_mode: <autonomous | recommend_and_ask | ask_each_time>
104
111
  status: <draft | meta-reviewed | reviewed>
105
112
  reviewer: <pending | none | claude | codex>
106
- meta_reviewers: []
113
+ plan_review: <docs/plan-reviews/... | none>
114
+ plan_review_fix: <docs/plan-review-fixes/... | none>
107
115
  test_strategy: <after_each_phase | tdd_each_phase | end_of_plan>
108
116
  logging_strategy: <debug_precise | standard>
109
117
  sources:
110
118
  rules: <путь или —>
111
119
  arch: <путь или —>
120
+ business: [<пути к применимым карточкам или пусто>]
112
121
  references: [<пути к применимым карточкам или пусто>]
113
122
  research: <путь или —>
114
123
  ---
@@ -168,13 +177,16 @@ sources:
168
177
  - Одну фазу целиком выполняет один изолированный субагент `eda-plan-execute`. Задачи фазы должны относиться к общей цели, иметь согласованный scope и помещаться в один исполнительский проход вместе с точечными и фазовыми проверками.
169
178
  - В `Контракты реализации` попадают схемы данных, БД, API и внешние контракты; если область не затрагивается, напиши `Не затрагивается`.
170
179
  - В фазах нельзя ограничиваться общими формулировками вроде «обновить UI», «добавить сервис», «реализовать логику». Для UI опиши пользовательский сценарий, состояния успеха/ошибки и видимый результат; для внутренней логики — ответственность частей, поток данных, состояния и ошибки.
171
- - Если нужен раздел `Открытые вопросы`, оставь `status: draft`, сохрани файл и не запускай мета-ревью до ответа пользователя.
180
+ - Не дублируй один и тот же контракт, решение или критерий между разделами. Зафиксируй его в наиболее подходящем месте, а в задачах укажи только действие, которое опирается на него.
181
+ - Не пересказывай задачу, кодовую базу и очевидные механические шаги. Оставляй только сведения, которые меняют реализацию или способ её проверки; точные пути и символы указывай только когда они подтверждены контекстом.
182
+ - Если нужен раздел `Открытые вопросы`, оставь `status: draft`, сохрани файл и не запускай plan-review до ответа пользователя.
172
183
 
173
- Quality gate перед сохранением и после мета-ревью:
184
+ Quality gate перед сохранением и после каждой включённой проверки:
174
185
 
175
186
  - есть `Целевой алгоритм` и `Контракты реализации` с подразделами `Данные и БД`, `API и внешние контракты`;
187
+ - применимые business-карточки выбраны только после определения scope задачи, записаны в `sources.business` и отражены в поведении и критериях приёмки;
176
188
  - план строго следует `docs/rules.md` и `docs/arch.md`;
177
- - план следует применимым карточкам или явно фиксирует подтверждённую причину отклонения;
189
+ - план следует применимым reference-карточкам или явно фиксирует подтверждённую причину отклонения;
178
190
  - нет конфликтов с правилами, архитектурой, границами модулей, API, миграциями, зависимостями и командами проверки;
179
191
  - БД/API изменения описаны конкретно, а не общими словами;
180
192
  - каждая фаза имеет цель, шаги, результат, сценарии тестирования и проверку;
@@ -183,51 +195,42 @@ Quality gate перед сохранением и после мета-ревью
183
195
  - для `short` не больше 2 фаз и явно указан ожидаемый объём;
184
196
  - пакеты/ПО имеют конкретные версии или ссылку на существующий lock/config;
185
197
  - нет неподтверждённых существенных решений и неразрешённых альтернатив;
198
+ - нет общих призывов, повторов и пояснений, удаление которых не меняет действия, контракты, зависимости, проверки или принятые решения;
186
199
  - план можно передать в `eda-plan-execute` без нового исследования.
187
200
 
188
- ### 4. Мета-ревью тремя субагентами/моделями
189
-
190
- Запусти три проверки параллельно, в одном batch, до чтения любого результата. Главный планировщик сам решает, что применять; предложения не вставляются механически.
191
-
192
- | Среда | Быстрая | Кодовая | Флагман |
193
- |---|---|---|---|
194
- | Claude Code (`Agent` tool) | `haiku` | `sonnet` | `opus` |
195
- | Codex interactive (`spawn_agent`) | `gpt-5.4-mini` | `gpt-5.3-codex` | `gpt-5.5` |
196
- | Codex exec / non-interactive fallback | `gpt-5.4-mini` | `gpt-5.3-codex` | `gpt-5.5` |
201
+ ### 4. Специализированная полировка плана
197
202
 
198
- В интерактивном Codex, если доступен инструмент субагентов (`spawn_agent` или аналог), используй его. Не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны. В неинтерактивном fallback запускай три `codex exec --model <id>` параллельно одной Bash-командой с `&` и общим `wait`.
203
+ Если `plan.review: false`, пропусти этап, оставь `plan_review: none`, `plan_review_fix: none` и перейди к strict-этапу или финалу. Не запускай старое общее мета-ревью.
199
204
 
200
- Промпт всем: прочитать план, `docs/rules.md`, `docs/arch.md`, карточки из `sources.references`, research из `sources.research` при наличии и релевантный код по глубине модели. Найти пропущенные шаги, нарушения правил/архитектуры/эталонов, необоснованные отклонения, скрытые риски, риски для смежного кода, недостающие тесты, шаги без критериев готовности, неверные зависимости и слишком крупные или несвязные фазы для одного исполнителя. Формат ответа: `+ N | − N | ~ N: причина`; флагману явно скажи открывать файлы модулей, API, тестов и сценариев, на которые ссылается план.
205
+ Если `plan.review: true`, запусти `eda-plan-polish` в отдельном изолированном субагенте с чистым контекстом. Основной планировщик не делает review или fix. При недоступности нативных субагентов остановись; не используй CLI-fallback для этого этапа.
201
206
 
202
- После ответов интегрируй принятые замечания в основные разделы плана, снова прогони quality gate и добавь:
207
+ 1. Запусти один `eda-plan-polish`:
203
208
 
204
- ```markdown
205
- ## Изменения после мета-ревью
206
-
207
- ### После моделей
208
- - **+ Добавлено:** <3–7 главных изменений>
209
- - **~ Изменено:** <1–5 уточнений>
210
- - **− Убрано:** <если удалено>
211
- - **Отклонено:** <существенные отклонённые предложения и причина>
212
- ```
209
+ ```text
210
+ Используй eda-plan-polish для <PLAN_FILE>.
211
+ Исходная задача и решения: <текущий запрос и ответы пользователя>.
212
+ Верни результат, последний review/fix, score, threshold и открытые ID.
213
+ ```
213
214
 
214
- В YAML поменяй `status: draft` на `meta-reviewed`, в `meta_reviewers` запиши модели.
215
+ 2. Проверь артефакты и SHA-256 цепочку, затем снова прогони локальный quality gate структуры плана.
216
+ 3. При `ready` убедись, что front matter содержит `status: reviewed`, последний `plan_review` и последний `plan_review_fix` либо `none`. Содержательных правок не делай.
217
+ 4. При limit, отсутствии прогресса или `blocked` не выдавай план за подтверждённый; сообщи открытые ID и передай пользователю только конкретный вопрос, если он действительно нужен.
215
218
 
216
219
  ### 5. Strict: кросс-CLI и допил
217
220
 
218
- Обычный режим пропускает этот этап. В `strict` отдай файл соседнему CLI:
221
+ `plan.strict` не зависит от `plan.review`. Обычный режим пропускает этот этап. В `strict` отдай файл соседнему CLI:
219
222
 
220
223
  ```bash
221
- codex exec "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карточки из sources.references и связанное исследование из sources.research при наличии. Затем глубоко проверь план по релевантному коду: открой файлы, модули, API и тесты, которые следуют из плана, и оцени фактическую реализуемость. Критическое ревью на русском: пропущенные шаги, неучтённые зависимости, нарушения правил, архитектуры и эталонов, необоснованные отклонения, скрытые риски, недостающие тесты и шаги без критериев готовности. Список '- [тип] описание — что предлагаешь'." > "${PLAN_FILE%.md}_review.md"
224
+ codex exec "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, применимые карточки из sources.business и sources.references и связанное исследование из sources.research при наличии. Затем глубоко проверь план по релевантному коду: открой файлы, модули, API и тесты, которые следуют из плана, и оцени фактическую реализуемость. Верни только конкретные ошибки и неточности, которые обязательно исправить: для каждой укажи место, доказательство, практический риск и минимальную правку. Не предлагай стилистические улучшения, дополнительные пояснения или расширение текста, если без них план уже однозначно исполним. Список '- [тип] описание — что исправить'." > "${PLAN_FILE%.md}_review.md"
222
225
  ```
223
226
 
224
227
  Если ты в Codex — запускай `claude -p` с тем же заданием. Если соседней CLI нет, спроси, продолжать без ревью или прервать.
225
228
 
226
- Бесспорные замечания внеси в план, спорные вынеси через `AskUserQuestion`, отклонённые зафиксируй с причиной в `## Реакция на ревью`. Поменяй `status: meta-reviewed` на `reviewed`, покажи дифф.
229
+ Бесспорные замечания внеси в план, спорные вынеси через `AskUserQuestion`, отклонённые зафиксируй с причиной в `## Реакция на ревью`. Поменяй `status: draft` или `status: meta-reviewed` на `reviewed`, покажи дифф.
227
230
 
228
231
  ### 6. Финал
229
232
 
230
- Коротко сообщи режим, путь к плану, путь к review-файлу в `strict`, 3–5 главных шагов простыми словами и что дальше делает `eda-plan-execute`.
233
+ Коротко сообщи режим, выполнялись ли plan-polish и strict, путь к плану, пути к последним plan-review/plan-review-fix и strict-review при наличии, итоговый status, score/threshold, открытые ID, 3–5 главных шагов и что дальше делает `eda-plan-execute`.
231
234
 
232
235
  ## Чего НЕ делать
233
236
 
@@ -241,5 +244,5 @@ codex exec "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карто
241
244
  - Сохранять сырой текст Plan Mode без нормализации.
242
245
  - Оставлять финальный план исследованием, списком наблюдений или журналом мета-ревью.
243
246
  - Смешивать альтернативы с принятыми решениями.
244
- - Пропускать мета-ревью тремя моделями или запускать ревьюеров частями.
247
+ - Выполнять plan-review, plan-review-fix или plan-polish основным агентом либо запускать старые три общих ревьюера.
245
248
  - Пропускать кросс-CLI молча в `strict`: если CLI нет, спроси.
@@ -18,8 +18,8 @@ description: 'Выполняет готовый план из `docs/plans/` по
18
18
  1. **Основной агент только управляет.** Разрешены чтение контекста, построение очереди, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию проекта и git-состояние меняют только назначенные субагенты.
19
19
  2. **Фазы выполняй строго последовательно.** Не запускай следующую фазу, пока исполнитель текущей не завершил все её задачи и отдельная проверка фазы не прошла.
20
20
  3. **Одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Сохраняй идентификатор исполнителя и продолжай его же для вопросов и исправлений этой фазы, пока среда позволяет.
21
- 4. **Рамку читает исполнитель фазы.** Каждый исполнитель целиком читает план, `docs/rules.md`, `docs/arch.md` и индекс `docs/references.md`, если файлы существуют. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, исполнитель читает эту карточку целиком перед соответствующим изменением.
22
- 5. **Соблюдай приоритет и блокируй конфликт.** Приоритет: подтверждённое решение пользователя → `docs/rules.md` → `docs/arch.md` → релевантные карточки. При конфликте или необоснованном отклонении от примера применимой карточки исполнитель возвращает `blocked`, а основной агент спрашивает, адаптировать план, вернуться к `eda-plan` или отдельно изменить документацию.
21
+ 4. **Рамку читает исполнитель фазы.** Каждый исполнитель целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы он читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Нерелевантные карточки не загружает.
22
+ 5. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, исполнитель возвращает `blocked`, а основной агент показывает конфликт и через `AskUserQuestion` спрашивает: изменить план через `eda-plan` или сначала пересогласовать правило через `eda-business`. Конфликты с rules, architecture или references также не разрешай молча.
23
23
  6. **Отмечай только подтверждённое.** Ставь задаче `[x]` только после `completed` от исполнителя и успешной точечной проверки. Фазу закрывай только после отдельного `passed` от проверяющего фазы. При последующем опровержении верни отметку в незавершённое состояние.
24
24
  7. **Проверки нельзя подавлять.** Не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, добавлять игноры или ослаблять команды и правила. Причину падения исправляет исполнитель соответствующей фазы, затем отдельный субагент повторяет проверку.
25
25
  8. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
@@ -103,10 +103,10 @@ current_phase: <номер>
103
103
 
104
104
  - рабочую директорию, `$PLAN_FILE`, номер и полный текст текущей фазы;
105
105
  - краткие результаты уже завершённых фаз;
106
- - пути к `docs/rules.md`, `docs/arch.md` и `docs/references.md`;
106
+ - пути к `docs/rules.md`, `docs/arch.md`, `docs/business.md` и `docs/references.md`;
107
107
  - ограничения пользователя, команды и критерии проверки фазы, запрет коммитить и запрет менять план и журнал.
108
108
 
109
- Исполнитель целиком читает `$PLAN_FILE`, `docs/rules.md` и `docs/arch.md`, затем выполняет все задачи назначенной фазы по прямым зависимостям. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, исполнитель читает эту карточку целиком перед соответствующим изменением. После каждой задачи он выполняет её точечные проверки, а в конце — все проверки фазы. Требуй YAML-результат:
109
+ Исполнитель целиком читает `$PLAN_FILE`, `docs/rules.md` и `docs/arch.md`, затем выполняет все задачи назначенной фазы по прямым зависимостям. Перед изменением поведения он читает применимые карточки из `sources.business`; если поле отсутствует, выбирает их по описаниям из `docs/business.md`. Если подходящих карточек нет, продолжает без business-контекста. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, исполнитель читает эту карточку целиком перед соответствующим изменением. После каждой задачи он выполняет её точечные проверки, а в конце — все проверки фазы. Требуй YAML-результат:
110
110
 
111
111
  ```yaml
112
112
  status: completed | needs_input | failed | blocked
@@ -118,6 +118,7 @@ tasks:
118
118
  summary: <кратко>
119
119
  checks: [<результаты точечных проверок>]
120
120
  files_changed: [<пути>]
121
+ business_read: [<пути или пусто>]
121
122
  references_read: [<пути или пусто>]
122
123
  checks:
123
124
  - command: <команда или критерий>
@@ -143,7 +144,7 @@ questions: [<вопросы или пусто>]
143
144
 
144
145
  ### 7. Проверять каждую фазу
145
146
 
146
- После `completed` от исполнителя запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md`, `docs/arch.md` и индекс `docs/references.md`, если они существуют. Если итог фазы затрагивает компонент, для которого в индексе указана карточка, проверяющий читает её целиком. Затем он выполняет все проверки из раздела фазы и подтверждает критерии результата. Требуй YAML:
147
+ После `completed` от исполнителя запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`. Он читает только business-карточки, применимые к поведению этой фазы, и только reference-карточки затронутых компонентов; для старого плана использует соответствующие индексы как fallback. Отсутствие применимой business-карточки не блокирует проверку. Затем он выполняет все проверки из раздела фазы и подтверждает критерии результата. Требуй YAML:
147
148
 
148
149
  ```yaml
149
150
  status: passed | failed | blocked
@@ -153,6 +154,7 @@ checks:
153
154
  status: passed | failed
154
155
  result: <кратко>
155
156
  failures: [<проблемы с доказательствами или пусто>]
157
+ business_read: [<пути или пусто>]
156
158
  references_read: [<пути или пусто>]
157
159
  ```
158
160
 
@@ -160,7 +162,7 @@ references_read: [<пути или пусто>]
160
162
 
161
163
  ### 8. Выполнить финальную проверку
162
164
 
163
- После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только проверяет и не меняет файлы, целиком читает план, `docs/rules.md`, `docs/arch.md` и индекс `docs/references.md`, если они существуют. Если итоговые изменения затрагивают компонент, для которого в индексе указана карточка, проверяющий читает её целиком перед оценкой соответствующего результата.
165
+ После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только проверяет и не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`, затем выбирает только business-карточки итогового изменённого поведения и reference-карточки затронутых компонентов. Отсутствие подходящей business-карточки не требует предупреждения и не блокирует проверку.
164
166
 
165
167
  Если финальная проверка упала из-за сделанных изменений, сопоставь ошибки с фазами и передай каждую группу исполнителю соответствующей фазы; несколько затронутых фаз исправляй по порядку плана. Если продолжить прежнего исполнителя невозможно, запусти одного нового изолированного исполнителя для каждой затронутой фазы. Затем повтори всю финальную проверку новым субагентом. Чужую или несвязанную поломку зафиксируй и используй `AskUserQuestion`, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
166
168