@gian-tiaga/eda 0.5.2 → 0.5.4

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.
package/README.md CHANGED
@@ -28,8 +28,8 @@ eda init
28
28
  | Скил | Что делает | Куда складывает |
29
29
  |---|---|---|
30
30
  | `eda-roadmap` | Создаёт roadmap-файл: список будущих задач с короткими, понятными и недвусмысленными описаниями без деталей реализации, файлов, библиотек, API и пошагового плана | `docs/roadmaps/` |
31
- | `eda-explore` | Исследует тему до конкретного результата: описание проблемы, релевантная архитектура, закрытые развилки, риски внутри решений и короткий выбранный вариант решения без плана. Если нужны пакеты или ПО — проверяет актуальные стабильные версии через context7 или web search | `docs/researches/` |
32
- | `eda-plan` | Пишет план реализации через стандартный Plan Mode хост-агента. Подтягивает контекст из `docs/rules.md`, `docs/arch.md`, при желании — релевантное исследование. Затем три параллельных модели (слабая, средняя, мощная) проверяют план на реалистичность, пропущенные шаги и нарушения правил — главный планировщик сам решает, что применить | `docs/plans/` |
31
+ | `eda-explore` | Исследует тему до конкретного результата: описание проблемы, релевантная архитектура, закрытые развилки, риски внутри решений и короткий выбранный вариант решения без плана. В дефолтном режиме ведёт исследование как диалог: факты собирает сам, а значимые развилки выносит тебе с рекомендацией. Если нужны пакеты или ПО — проверяет актуальные стабильные версии через context7 или web search | `docs/researches/` |
32
+ | `eda-plan` | Пишет план реализации через стандартный Plan Mode хост-агента. Подтягивает контекст из `docs/rules.md`, `docs/arch.md`, при желании — релевантное исследование. В плане явно фиксирует контракты БД/API, если задача их затрагивает. Затем три параллельных субагента/модели (слабая, средняя, мощная) проверяют план на реалистичность, пропущенные шаги и нарушения правил — главный планировщик сам решает, что применить | `docs/plans/` |
33
33
  | `eda-execute` | Выполняет план. Спрашивает, где работать (текущая ветка, новая ветка, отдельный worktree). Тесты пишет внутри каждого шага. В конце — полный прогон тестов и линтеров | `docs/executions/` |
34
34
  | `eda-fix` | Делает обычные фиксы по короткому контексту, баг-репорту или файлу плана. Перед правками читает правила и архитектуру, добавляет нужные тесты, прогоняет проверки и сохраняет историю правок | `docs/fixes/` |
35
35
  | `eda-review` | Делает код-ревью с оценкой 0–100 и сверкой с планом работ, но в файл пишет только проблемы: ошибки, недоделки, неточности, нарушения правил/архитектуры, риски и недостающие тесты. Не перечисляет выполненную работу. Затем параллельные специализированные агенты проверяют выполнение плана, архитектуру, правила и при включённой настройке качество кода. В строгом режиме — ещё и кросс-ревью между Claude и Codex | `docs/reviews/` |
@@ -50,8 +50,8 @@ eda init
50
50
  | Скил | Флаг | Что включает | Когда стоит использовать |
51
51
  |---|---|---|---|
52
52
  | `eda-explore` | `strict` | После сохранения отчёта отдаёт его соседнему CLI (Claude → Codex или наоборот) на критическое ревью конкретности, фактов, развилок, рисков и версий; затем доправляет отчёт по замечаниям | Серьёзные исследования, которые лягут в основу больших решений; когда хочется второго мнения от другой модели/среды |
53
- | `eda-plan` | `strict` | После мета-ревью трёх моделей (это есть всегда) отдаёт план соседнему CLI на дополнительный круг проверки; доправляет план | Большие или ответственные планы, особенно затрагивающие смежные системы |
54
- | `eda-review` | `strict` | После мета-ревью специализированными агентами отдаёт ревью соседнему CLI на дополнительный круг проверки; доправляет ревью по его замечаниям | Ревью важных PR; когда нужен максимальный охват |
53
+ | `eda-plan` | `strict` | После обычного мета-ревью трёх субагентов/моделей отдаёт план соседнему CLI на дополнительный круг проверки; доправляет план | Большие или ответственные планы, особенно затрагивающие смежные системы |
54
+ | `eda-review` | `strict` | После обычного мета-ревью специализированными субагентами отдаёт ревью соседнему CLI на дополнительный круг проверки; доправляет ревью по его замечаниям | Ревью важных PR; когда нужен максимальный охват |
55
55
 
56
56
  ---
57
57
 
@@ -71,7 +71,7 @@ defaults:
71
71
  # Задаёт размер плана по умолчанию для eda-plan.
72
72
  # normal | short | ask_each_time
73
73
  plan_size: normal
74
- # Определяет, как eda-explore и eda-plan принимают существенные решения.
74
+ # Определяет, как eda-explore ведёт исследовательские развилки, а eda-plan принимает существенные решения.
75
75
  # autonomous | recommend_and_ask | ask_each_time
76
76
  decision_mode: recommend_and_ask
77
77
  # Задаёт стратегию тестов по умолчанию для eda-plan.
@@ -95,7 +95,7 @@ review:
95
95
  Что означают настройки:
96
96
  - `defaults.strict` — включает strict-режим по умолчанию для `eda-explore`, `eda-plan` и `eda-review`.
97
97
  - `defaults.plan_size` — размер плана для `eda-plan`: `normal`, `short` или `ask_each_time`.
98
- - `defaults.decision_mode` — как `eda-explore` и `eda-plan` принимают существенные решения: `autonomous` выбирает сам, `recommend_and_ask` рекомендует и спрашивает, `ask_each_time` спрашивает по каждой значимой развилке.
98
+ - `defaults.decision_mode` — как `eda-explore` ведёт исследовательские развилки, а `eda-plan` принимает существенные решения: `autonomous` выбирает сам, `recommend_and_ask` рекомендует и спрашивает по значимым развилкам, `ask_each_time` спрашивает по каждой развилке, которая влияет на ход работы или итоговый выбор.
99
99
  - `defaults.test_strategy` — стратегия тестов для `eda-plan`: `after_each_phase`, `tdd_each_phase`, `end_of_plan` или `ask_each_time`.
100
100
  - `defaults.logging_strategy` — стратегия логирования для `eda-plan`: `debug_precise`, `standard` или `ask_each_time`.
101
101
  - `automate.include_plans` — добавляет `docs/plans/` в обычный запуск `eda-automate`.
@@ -127,6 +127,7 @@ automate может запускаться от review, fix-by-review или fix
127
127
 
128
128
  - **Простой язык.** Скилы общаются с тобой так, чтобы понял человек без глубоких знаний предмета. Термины — только когда без них нельзя.
129
129
  - **Все вопросы — интерактивно.** В Claude Code — через `AskUserQuestion`; в интерактивном Codex — через `request_user_input` или блокирующий вопрос в чат. В `codex exec` и других неинтерактивных запусках скил не имитирует диалог: если без ответа нельзя безопасно продолжать, он завершает работу со статусом `blocked: нужен ответ пользователя`.
130
+ - **Мета-проверки — через субагентов.** В интерактивном Codex обычные проверки планов и ревью запускаются через `spawn_agent` или аналогичный инструмент субагентов. Отдельный `codex exec` остаётся fallback для неинтерактивного режима и механизмом strict-кросс-проверки соседним CLI.
130
131
  - **Артефакты по папкам.** Исследования отдельно, планы отдельно, ревью отдельно. Между файлами — ссылки. Через месяц легко найти, кто что когда решал.
131
132
  - **Границы между скилами жёсткие.** `execute` не коммитит — это работа `commit`. `review` не правит код — это `fix-by-review`. Никаких размытых ответственностей.
132
133
  - **Доверие модели.** Скилы короткие. Они говорят «что» и «почему», а «как именно» — модель разбирается сама.
package/lib/install.js CHANGED
@@ -270,7 +270,7 @@ defaults:
270
270
  # Задаёт размер плана по умолчанию для eda-plan.
271
271
  # normal | short | ask_each_time
272
272
  plan_size: ${settings.planSize}
273
- # Определяет, как eda-explore и eda-plan принимают существенные решения.
273
+ # Определяет, как eda-explore ведёт исследовательские развилки, а eda-plan принимает существенные решения.
274
274
  # autonomous | recommend_and_ask | ask_each_time
275
275
  decision_mode: ${settings.decisionMode}
276
276
  # Задаёт стратегию тестов по умолчанию для eda-plan.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "description": "Набор скилов eda-* для Claude Code и Codex CLI: roadmap, explore, plan, execute, fix, review, fix-by-review, send-review, commit, docs, automate",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-explore
3
- description: 'Исследует тему или задачу до конкретного результата: проясняет проблему, архитектуру, развилки, связанные риски и короткий выбранный вариант решения без плана реализации. Работает read-only, задаёт блокирующие вопросы, когда без ответа нельзя выбрать решение, а существенные решения подтверждает по `defaults.decision_mode` из `docs/settings.yaml`. Если исследование касается пакетов, библиотек, CLI, сервисов или другого ПО, проверяет актуальные стабильные версии через context7, если он доступен, или через web search по официальным источникам. Итог сохраняет в docs/researches/. Кросс-ревью соседним агентом (Claude ↔ Codex) включается флагом `strict` или настройкой `defaults.strict: true` в `docs/settings.yaml`.'
3
+ description: 'Исследует тему или задачу до конкретного результата: проясняет проблему, архитектуру, развилки, риски и короткий выбранный вариант решения без плана реализации. Работает read-only и ведёт исследование как диалог: факты собирает сам, а значимые развилки выносит пользователю по `defaults.decision_mode` из `docs/settings.yaml`. Если исследование касается пакетов, библиотек, CLI, сервисов или другого ПО, проверяет актуальные стабильные версии через context7, если он доступен, или через web search по официальным источникам. Итог сохраняет в docs/researches/. Кросс-ревью соседним агентом (Claude ↔ Codex) включается флагом `strict` или настройкой `defaults.strict: true`.'
4
4
  ---
5
5
 
6
6
  # Скил: Исследователь решений (eda-explore)
@@ -20,7 +20,7 @@ description: 'Исследует тему или задачу до конкре
20
20
 
21
21
  Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
22
22
 
23
- Если входа достаточно, продолжай без подтверждения. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск исследовать не то. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
23
+ Если входа достаточно, не спрашивай подтверждение самой темы. `AskUserQuestion` на этом этапе задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск исследовать не то. Это не отменяет обязательные вопросы по исследовательским развилкам ниже. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
24
24
 
25
25
  ## Настройки проекта
26
26
 
@@ -37,24 +37,28 @@ description: 'Исследует тему или задачу до конкре
37
37
  | Ключ | Значения | Что значит |
38
38
  |---|---|---|
39
39
  | `defaults.decision_mode` | `autonomous` | Агент сам выбирает по коду, правилам, архитектуре, источникам и рискам, затем записывает причину. |
40
- | `defaults.decision_mode` | `recommend_and_ask` | Агент исследует варианты, рекомендует один, но по существенным решениям задаёт блокирующий вопрос до финализации. |
41
- | `defaults.decision_mode` | `ask_each_time` | Агент спрашивает по каждой значимой развилке, даже если есть сильная рекомендация. |
40
+ | `defaults.decision_mode` | `recommend_and_ask` | Дефолт. Агент сам собирает факты, рекомендует вариант и спрашивает пользователя по каждой значимой развилке исследования до финализации. |
41
+ | `defaults.decision_mode` | `ask_each_time` | Агент спрашивает по каждой развилке, которая влияет на направление исследования или итоговый выбор, даже если есть сильная рекомендация. |
42
42
 
43
43
  Если `defaults.decision_mode` отсутствует или неизвестен, считай его `recommend_and_ask`.
44
44
 
45
- Существенные решения — это решения, которые меняют архитектуру, зависимости, стоимость, безопасность, эксплуатацию или будущую миграцию проекта. Всегда считай существенными:
45
+ Значимая исследовательская развилка — это выбор, который меняет направление исследования, итоговую рекомендацию, границы задачи, архитектуру, зависимости, стоимость, безопасность, эксплуатацию, совместимость или будущую миграцию проекта. Не спрашивай о фактах, которые можно выяснить через код, документы или источники; спрашивай о выборе, предпочтении или компромиссе.
46
+
47
+ Всегда считай значимыми:
46
48
  - выбор нового пакета, библиотеки, фреймворка, SDK, CLI или сервиса;
47
49
  - выбор базы данных, ORM/query builder, очереди, кэша, storage, search, background jobs;
48
50
  - миграции данных, изменение схемы, формат хранения или стратегия совместимости;
49
51
  - auth, permissions, payments, crypto, secrets, персональные данные и другие security-sensitive решения;
50
52
  - cloud/provider choices, managed services, лицензии, cost/lock-in и SLA;
51
53
  - архитектурные паттерны, затрагивающие несколько модулей или публичные контракты.
54
+ - продуктовый компромисс между скоростью, качеством, UX, стоимостью, сроком или объёмом;
55
+ - выбор, который влияет на то, какой результат будет передан в `eda-plan`.
52
56
 
53
57
  ## Главные правила
54
58
 
55
59
  1. **Никаких правок кода.** Запись только в `docs/researches/`.
56
60
  2. **Итог — конкретика.** Нельзя заканчивать абстрактными описаниями, списком возможностей или «можно выбрать один из вариантов».
57
- 3. **Развилки закрывай по `decision_mode`.** Обычные локальные развилки можно выбрать по коду, правилам, архитектуре, источникам и рискам. Существенные решения в `recommend_and_ask` и `ask_each_time` подтверждай у пользователя до финализации. Если выбор зависит только от пользователя задай блокирующий вопрос в любом режиме.
61
+ 3. **Развилки закрывай по `decision_mode`.** В `recommend_and_ask` значимые развилки исследования подтверждай у пользователя до финализации: сначала собери факты, затем дай рекомендацию и варианты. В `ask_each_time` спрашивай ещё чаще: по каждой развилке, которая влияет на ход исследования или итоговый выбор. В `autonomous` выбирай сам, если выбор можно обосновать кодом, правилами, архитектурой, источниками и рисками. Мелкие локальные решения, которые не меняют смысл исследования и легко обратимы, выбирай сам и не создавай шум.
58
62
  4. **Риски вплетай в исследование.** Не создавай отдельный обязательный раздел или этап рисков. Если риск влияет на выбор, источник, ограничение или будущую проверку, фиксируй его рядом с соответствующим решением: что может пойти не так и как это учитывается — снимаем, принимаем или выносим за рамки.
59
63
  5. **Версии проверяй.** Если речь о пакетах, библиотеках, CLI, сервисах или другом ПО, а версия не задана контекстом, проверь последнюю стабильную версию через context7, если он доступен, или через web search по официальным источникам.
60
64
  6. **Прочитай `docs/rules.md` и `docs/arch.md`**, если есть, и используй их как рамку.
@@ -94,19 +98,21 @@ description: 'Исследует тему или задачу до конкре
94
98
 
95
99
  ### 3. Закрыть развилки
96
100
 
97
- Собери все существенные развилки: архитектурные, продуктовые, технические, миграционные, по зависимостям и совместимости.
101
+ Собери все значимые развилки: архитектурные, продуктовые, технические, миграционные, по зависимостям и совместимости.
102
+
103
+ Не начинай с вопросов, если можно сначала быстро собрать факты. После первичного контекста сгруппируй близкие развилки в пакет из 1–3 вопросов, чтобы пользователь принимал решения осознанно, а диалог не распадался на мелочи.
98
104
 
99
105
  Для каждой развилки:
100
106
  - перечисли варианты;
101
107
  - выбери один вариант или подготовь рекомендацию;
102
108
  - запиши источник и причину выбора;
103
109
  - если у варианта есть важный риск, опиши его здесь же и сразу зафиксируй, как он влияет на выбранное решение;
104
- - если развилка существенная и `decision_mode: recommend_and_ask` — задай `AskUserQuestion`: 2–3 варианта, первым рекомендованный, короткая причина рекомендации, вариант «свой вариант», фраза «Я продолжу только после ответа.»;
105
- - если развилка значимая и `decision_mode: ask_each_time` — задай `AskUserQuestion` даже при сильной рекомендации;
110
+ - если развилка значимая и `decision_mode: recommend_and_ask` — задай `AskUserQuestion`: 2–3 варианта, первым рекомендованный, короткая причина рекомендации, вариант «свой вариант», фраза «Я продолжу только после ответа.»;
111
+ - если развилка влияет на ход исследования или итоговый выбор и `decision_mode: ask_each_time` — задай `AskUserQuestion` даже при сильной рекомендации;
106
112
  - если `decision_mode: autonomous` и выбор можно обосновать кодом, правилами, архитектурой, источниками и рисками — выбери сам и запиши почему;
107
113
  - если выбрать нельзя без пользовательского решения — задай `AskUserQuestion` и не продолжай финализацию.
108
114
 
109
- Не прячь существенный выбор внутри текста. Например, если нужен пакет для базы данных, сначала сравни 2–3 подходящих варианта, затем в `recommend_and_ask` спроси подтверждение выбора пакета/БД до записи финального решения.
115
+ Не прячь значимый выбор внутри текста. Например, если нужен пакет для базы данных, сначала сравни 2–3 подходящих варианта, затем в `recommend_and_ask` спроси подтверждение выбора пакета/БД до записи финального решения.
110
116
 
111
117
  Если по ходу исследования находится высокий риск без понятного решения, это блокер: задай `AskUserQuestion` или заверши со статусом `blocked`. Не выноси риски в отдельную секцию ради формы; они должны естественно лежать в `Решении`, причинах выбора, ограничениях, проверках версий или итоговом выводе.
112
118
 
@@ -143,7 +149,7 @@ sources:
143
149
  - объяснение, почему выбран этот вариант, а не альтернативы.
144
150
 
145
151
  ## Ответы на вопросы
146
- Вопросы, которые были заданы в процессе исследования, и ответы пользователя. Если вопросов не было — «Не требовались.»
152
+ Вопросы и развилки, которые были вынесены пользователю в процессе исследования, а также ответы пользователя. Если вопросов не было — «Не требовались.»
147
153
 
148
154
  ## Итог
149
155
  Короткая конкретика: что делать дальше на уровне подхода, без плана реализации.
@@ -154,7 +160,7 @@ Quality gate перед сохранением:
154
160
  - в `Суть` чётко описано, что исследовали и какая проблема решается;
155
161
  - в `Решение` есть выбранный вариант решения, а не набор равных альтернатив;
156
162
  - в `Решение` есть описание архитектуры или явно сказано, почему архитектурный слой не затронут;
157
- - в `Ответы на вопросы` записаны все вопросы, заданные пользователю в процессе исследования, и ответы на них, чтобы `eda-plan` не задавал их повторно;
163
+ - в `Ответы на вопросы` записаны все вопросы и пользовательские выборы по развилкам, заданные в процессе исследования, чтобы `eda-plan` не задавал их повторно;
158
164
  - в `Итог` есть короткая конкретика, что делать дальше на уровне подхода, без пошагового плана;
159
165
  - нет незакрытых развилок;
160
166
  - нет рисков, которые перечислены отдельно от решения и никак не влияют на выбор, ограничения или будущие проверки;
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: eda-plan
3
- description: 'Пишет план реализации по тексту рядом с вызовом или указанному research-файлу через стандартный Plan Mode (Claude Code / Codex). Перед планированием читает docs/rules.md, docs/arch.md и строго следует им; research подтягивает без вопроса, если он указан или явно нужен. Поддерживает `short` для небольших фич: 1–2 фазы и компактный ревьюируемый объём. В начале фиксирует режим принятия решений, стратегию тестов и логирования из docs/settings.yaml или уточняет их у пользователя. Существенные решения подтверждает по `defaults.decision_mode`. Нормализует результат в исполнимый план с алгоритмом, фазами, проверками и без неразрешённых альтернатив; сохраняет его в docs/plans/. Всегда проверяет план тремя параллельными моделями на реалистичность, пропущенные шаги, нарушения правил и риски. Кросс-CLI включается флагом `strict` или настройкой `defaults.strict: true`. Вопросы задаёт только когда без ответа нельзя безопасно продолжать, настройки требуют спрашивать или существенное решение требует подтверждения.'
3
+ description: 'Пишет план реализации по тексту рядом с вызовом или указанному research-файлу через стандартный Plan Mode (Claude Code / Codex). Перед планированием читает docs/rules.md, docs/arch.md и строго следует им; research подтягивает без вопроса, если он указан или явно нужен. Поддерживает `short` для небольших фич: 1–2 фазы и компактный ревьюируемый объём. В начале фиксирует режим принятия решений, стратегию тестов и логирования из docs/settings.yaml или уточняет их у пользователя. Существенные решения подтверждает по `defaults.decision_mode`. Нормализует результат в исполнимый план с алгоритмом, фазами, проверками и без неразрешённых альтернатив; сохраняет его в docs/plans/. Всегда проверяет план тремя субагентами/моделями на реалистичность, пропущенные шаги, нарушения правил и риски. Кросс-CLI включается флагом `strict` или настройкой `defaults.strict: true`. Вопросы задаёт только когда без ответа нельзя безопасно продолжать, настройки требуют спрашивать или существенное решение требует подтверждения.'
4
4
  ---
5
5
 
6
6
  # Скил: Планировщик (eda-plan)
7
7
 
8
- Собираешь контекст, прогоняешь задачу через **стандартный Plan Mode** хост-агента, нормализуешь результат в исполнимый план и сохраняешь его в файл. Затем три параллельные модели проверяют план на реалистичность — главный планировщик сам решает, что применить из их предложений. При `strict` — ещё и кросс-CLI на втором круге.
8
+ Собираешь контекст, прогоняешь задачу через **стандартный Plan Mode** хост-агента, нормализуешь результат в исполнимый план и сохраняешь его в файл. Затем три параллельных субагента/модели проверяют план на реалистичность — главный планировщик сам решает, что применить из их предложений. При `strict` — ещё и кросс-CLI на втором круге.
9
9
 
10
10
  ## Режимы вызова
11
11
 
@@ -95,6 +95,8 @@ description: 'Пишет план реализации по тексту ряд
95
95
  - выбор нового пакета, библиотеки, фреймворка, SDK, CLI или сервиса;
96
96
  - выбор базы данных, ORM/query builder, очереди, кэша, storage, search, background jobs;
97
97
  - миграции данных, изменение схемы, формат хранения или стратегия совместимости;
98
+ - новые или изменённые схемы таблиц: поля, типы, связи, индексы, уникальные ограничения;
99
+ - новые или изменённые API/внешние контракты: маршруты, auth/permissions, request/query/body, response, ошибки и статус-коды;
98
100
  - auth, permissions, payments, crypto, secrets, персональные данные и другие security-sensitive решения;
99
101
  - cloud/provider choices, managed services, лицензии, cost/lock-in и SLA;
100
102
  - архитектурные паттерны, затрагивающие несколько модулей или публичные контракты.
@@ -179,6 +181,8 @@ Research подтягивай так:
179
181
  До Plan Mode закрой существенные решения:
180
182
  - выпиши существенные развилки, которые следуют из задачи и контекста;
181
183
  - если research содержит подтверждённый ответ пользователя по развилке — используй его и запиши как подтверждённое решение;
184
+ - если задача меняет БД или API/внешний контракт, проверь, подтверждены ли конкретные схемы таблиц или API-контракты пользователем в текущем сообщении, правилах, архитектуре или research с подтверждённым ответом пользователя;
185
+ - если конкретные схемы БД или API-контракты не подтверждены явно, до Plan Mode задай блокирующий вопрос и получи подтверждение пользователя; не проектируй таблицы и маршруты молча внутри Plan Mode;
182
186
  - если `decision_mode: autonomous` и выбор можно обосновать кодом, правилами, архитектурой, источниками и рисками — выбери сам и запиши почему;
183
187
  - если `decision_mode: recommend_and_ask` — задай `AskUserQuestion`: 2–3 варианта, первым рекомендованный, короткая причина рекомендации, вариант «свой вариант», фраза «Я продолжу только после ответа.»;
184
188
  - если `decision_mode: ask_each_time` — задай `AskUserQuestion` по каждой значимой развилке, даже при сильной рекомендации;
@@ -231,11 +235,10 @@ Research подтягивай так:
231
235
  6. Пары «вопрос → ответ» из этапа 3 и подтверждения существенных решений из research.
232
236
  7. Ссылки на `docs/rules.md`, `docs/arch.md`, исследование (без пересказа — Plan Mode прочитает сам) и явное требование строго следовать правилам и архитектуре.
233
237
  8. Инструкция: «все вопросы пользователю — только по разделу "Интерактивные вопросы", никаких догадок и продолжения без ответа».
234
- 9. Инструкция: «финальный план должен иметь раздел "Целевой алгоритм", фазы с целью/результатом/проверкой и не должен смешивать исследование с планом исполнения».
235
- 10. Инструкция: «стратегии тестов и логирования обязательны: они должны быть отражены в решениях, фазах, проверках, разделах "Тесты" и "Логирование"».
236
- 11. Инструкция: «если `plan_size: short`, план обязан уложиться в 1–2 фазы, компактный ревьюируемый объём и объяснение ожидаемого объёма изменений».
237
- 12. Инструкция: «если нужны пакеты или ПО, используй только конкретные версии; если версия не задана контекстом, она должна быть проверена через context7 или поиск и указана с источником».
238
- 13. Инструкция: «не добавляй неподтверждённые существенные решения в финальный план; если они возникли внутри Plan Mode, остановись и спроси пользователя».
238
+ 9. Инструкция: «финальный план должен быть нормализован в обязательную структуру из этапа 5 и не должен смешивать исследование с планом исполнения».
239
+ 10. Инструкция: «зафиксированные стратегии тестов и логирования должны быть применены в плане, а не просто записаны в YAML».
240
+ 11. Инструкция: «если `plan_size: short`, соблюдай ограничения короткого плана из раздела "Размер плана"».
241
+ 12. Инструкция: «не добавляй неподтверждённые существенные решения в финальный план; если они возникли внутри Plan Mode, остановись и спроси пользователя».
239
242
 
240
243
  Не выходи, пока пользователь не подтвердил план.
241
244
 
@@ -278,6 +281,18 @@ sources:
278
281
  ## Целевой алгоритм
279
282
  Пошаговое описание целевого поведения системы от входного события до финального состояния. Это обзор всей картины, не список файлов.
280
283
 
284
+ ## Контракты реализации
285
+
286
+ ### Данные и БД
287
+ Если БД не меняется: `Не затрагивается`.
288
+
289
+ Если меняется, явно укажи таблицы, поля, типы, обязательность, default, связи, индексы, уникальные ограничения, миграции и совместимость со старыми данными. Backfill и rollback укажи, если они нужны.
290
+
291
+ ### API и внешние контракты
292
+ Если API и внешние контракты не меняются: `Не затрагивается`.
293
+
294
+ Если меняются, явно укажи метод и путь, auth/permissions, request/query/body, response, ошибки и статус-коды. Webhooks, events, queues и внешние сервисы укажи, если они есть.
295
+
281
296
  ## Фазы выполнения
282
297
 
283
298
  ### 1. <Название фазы>
@@ -310,8 +325,12 @@ sources:
310
325
  - Риски не выносятся в отдельный обязательный раздел. Закрытые риски из research, контекста и мета-ревью должны быть встроены туда, где они исполняются: в `Принятые решения`, фазы, сценарии тестирования, проверки, логирование или эксплуатационные шаги.
311
326
  - Существенные решения в `Принятых решениях` имеют источник подтверждения или явное обоснование автономного выбора.
312
327
  - В `Целевой алгоритм` попадает сквозная картина процесса.
328
+ - В `Контракты реализации` попадают схемы данных, БД, API и внешние контракты. Если область не затрагивается, напиши `Не затрагивается`.
329
+ - Если план меняет БД, `Данные и БД` обязаны явно описывать таблицы, поля, типы, обязательность/default, связи, индексы/unique, миграции и совместимость со старыми данными.
330
+ - Если план меняет API или внешний контракт, `API и внешние контракты` обязаны явно описывать method/path, auth/permissions, request/query/body, response, ошибки/status codes и внешние каналы при наличии.
313
331
  - В `Фазы выполнения` попадают только исполнимые шаги.
314
332
  - Каждая фаза обязана иметь `Цель`, `Что сделать`, `Результат`, `Сценарии тестирования`, `Проверка`.
333
+ - В фазах нельзя ограничиваться общими формулировками вроде «обновить UI», «добавить сервис», «реализовать логику». Если фаза затрагивает UI, опиши пользовательский сценарий, состояния успеха/ошибки и видимый результат. Если фаза затрагивает внутреннюю логику, опиши ответственность изменяемых частей, поток данных, новые состояния/ошибки и существующие места, которые нужно адаптировать.
315
334
  - Отдельный раздел порядка выполнения не нужен: линейный порядок задаётся номерами фаз и шагами внутри фаз.
316
335
  - `test_strategy` обязан менять структуру фаз: TDD — тесты в начале фаз, after_each_phase — тесты после каждой фазы, end_of_plan — отдельная финальная фаза тестов.
317
336
  - `logging_strategy` обязан быть отражён в целевом алгоритме, фазах и отдельном разделе `Логирование`.
@@ -321,8 +340,12 @@ sources:
321
340
 
322
341
  Перед сохранением проверь quality gate:
323
342
  - есть `Целевой алгоритм`;
343
+ - есть `Контракты реализации` с подразделами `Данные и БД` и `API и внешние контракты`;
344
+ - если задача затрагивает БД, схема данных не пропущена и не заменена общими словами;
345
+ - если задача затрагивает API или внешний контракт, маршруты/контракты не пропущены и не заменены общими словами;
324
346
  - фазы идут в реалистичном порядке реализации;
325
347
  - у каждой фазы есть цель, результат, сценарии тестирования и проверка;
348
+ - UI и внутренняя логика в фазах описаны через конкретное поведение, поток данных, состояния и ошибки, если задача их затрагивает;
326
349
  - нет неразрешённых формулировок «выбрать», «решить», «можно так или так», «предпочтительно», «при необходимости»;
327
350
  - текст написан простым языком: без лишнего жаргона, непояснённых сокращений и тяжёлых терминов;
328
351
  - мета-уровень не смешан с шагами исполнения;
@@ -336,15 +359,22 @@ sources:
336
359
 
337
360
  Сохрани файл и покажи путь.
338
361
 
339
- ### 6. Мета-ревью плана тремя моделями (параллельно)
340
- Запусти **в одном сообщении и одним batch** трёх агентов на трёх разных моделях — слабая, средняя, мощная. Не запускай сначала одного-двух, не жди их ответы и не запускай третьего позже: все три проверки должны стартовать до чтения любого результата.
362
+ ### 6. Мета-ревью плана тремя субагентами/моделями (параллельно)
363
+ Запусти **в одном сообщении и одним batch** трёх агентов на трёх разных моделях — слабая, средняя, мощная. В интерактивном Codex это означает субагентов, а не отдельные процессы `codex exec`. Не запускай сначала одного-двух, не жди их ответы и не запускай третьего позже: все три проверки должны стартовать до чтения любого результата.
341
364
 
342
365
  | Среда | Слабая (быстрая) | Средняя (код) | Мощная (флагман) |
343
366
  |---|---|---|---|
344
367
  | Claude Code (`Agent` tool) | `model: "haiku"` | `model: "sonnet"` | `model: "opus"` |
345
- | Codex CLI (`codex exec --model …`) | `gpt-5.4-mini` | `gpt-5.3-codex` | `gpt-5.5` |
368
+ | Codex interactive (`spawn_agent`) | `gpt-5.4-mini` | `gpt-5.3-codex` | `gpt-5.5` |
369
+ | Codex exec / non-interactive fallback (`codex exec --model …`) | `gpt-5.4-mini` | `gpt-5.3-codex` | `gpt-5.5` |
370
+
371
+ В Claude Code запускай три параллельных `Agent` tool в одном ответе/tool-use batch с моделями из таблицы и передавай им промпты нужной глубины из таблицы ниже.
372
+
373
+ В интерактивном Codex, если доступен инструмент субагентов (`spawn_agent` или аналог), запускай три параллельных субагента через него. Не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны.
374
+
375
+ В `codex exec`, другом неинтерактивном режиме или Codex без инструмента субагентов используй fallback: три параллельных `codex exec --model <id>` одной Bash-командой с `&` и общим `wait`.
346
376
 
347
- В Claude Code запускай три параллельных `Agent` tool в одном ответе/tool-use batch с моделями из таблицы и передавай им промпты нужной глубины из таблицы ниже. В Codex запускай три параллельных `codex exec --model <id>` одной Bash-командой с `&` и общим `wait`. Если `gpt-5.5` недоступен (ограничение account/auth) — возьми `gpt-5.4` как мощную. Если какой-либо идентификатор отсутствует у тебя — возьми ближайший аналог того же тира из доступных в твоей версии Codex.
377
+ Если `gpt-5.5` недоступен (ограничение account/auth) — возьми `gpt-5.4` как мощную. Если какой-либо идентификатор отсутствует у тебя — возьми ближайший аналог того же тира из доступных в твоей версии Codex.
348
378
 
349
379
  Каждому передай путь к файлу плана, `docs/rules.md`, `docs/arch.md` (если есть), исследование из `sources.research` (если есть). Формулируй задание как содержательную проверку с глубиной чтения, указанной для тира модели ниже.
350
380
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-review
3
- description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл) с обязательной сверкой с планом работ из `docs/plans/`. Если план не указан и его нельзя однозначно определить, спрашивает путь к плану до ревью. Перед ревью читает `docs/rules.md` и `docs/arch.md`. Формирует ревью только по проблемам: ошибки, недоделки, неточности, нарушения правил/архитектуры, риски и недостающие тесты. Не перечисляет выполненную работу. Сохраняет в docs/reviews/. Всегда запускает параллельные специализированные проверки: выполнение плана, следование архитектуре, следование правилам; проверка качества кода включается настройкой `review.include_code_quality: true` в `docs/settings.yaml`. Кросс-CLI (Claude ↔ Codex) включается флагом `strict` или настройкой `defaults.strict: true`. Не правит код — это `eda-fix-by-review`.'
3
+ description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл) с обязательной сверкой с планом работ из `docs/plans/`. Если план не указан и его нельзя однозначно определить, спрашивает путь к плану до ревью. Перед ревью читает `docs/rules.md` и `docs/arch.md`. Формирует ревью только по проблемам: ошибки, недоделки, неточности, нарушения правил/архитектуры, риски и недостающие тесты. Не перечисляет выполненную работу. Сохраняет в docs/reviews/. Всегда запускает параллельные специализированные субагентные проверки: выполнение плана, следование архитектуре, следование правилам; проверка качества кода включается настройкой `review.include_code_quality: true` в `docs/settings.yaml`. Кросс-CLI (Claude ↔ Codex) включается флагом `strict` или настройкой `defaults.strict: true`. Не правит код — это `eda-fix-by-review`.'
4
4
  ---
5
5
 
6
6
  # Скил: Ревьюер (eda-review)
@@ -174,7 +174,7 @@ meta_reviewers: []
174
174
  Покажи путь.
175
175
 
176
176
  ### 3. Мета-ревью специализированными агентами (параллельно)
177
- Запусти **в одном сообщении и одним batch** агентов с разными ролями. Базовые три роли обязательны всегда. Если включена проверка качества кода, в тот же batch добавь четвёртого агента `quality-check`. Не запускай сначала часть агентов, не жди их ответы и не запускай остальных позже: все проверки должны стартовать до чтения любого результата.
177
+ Запусти **в одном сообщении и одним batch** агентов с разными ролями. В интерактивном Codex это означает субагентов, а не отдельные процессы `codex exec`. Базовые три роли обязательны всегда. Если включена проверка качества кода, в тот же batch добавь четвёртого агента `quality-check`. Не запускай сначала часть агентов, не жди их ответы и не запускай остальных позже: все проверки должны стартовать до чтения любого результата.
178
178
 
179
179
  Роли агентов:
180
180
  - `plan-check`: проверяет, что реализация действительно выполнила `$PLAN_FILE`, включая частичные пункты, пропущенные требования, лишние отклонения и недостающие проверки.
@@ -183,8 +183,9 @@ meta_reviewers: []
183
183
  - `quality-check`: запускай только если `review.include_code_quality: true` или пользователь явно попросил качество кода. Проверяет качество реализации: читаемость, сложность, дублирование, имена, размер и ответственность функций/классов, сцепление модулей, поддерживаемость и соответствие локальному стилю. Quality-замечания помечай типом `quality`; по умолчанию рекомендация `на усмотрение автора`, кроме случаев, где сложность, дублирование или неясная структура реально создают риск багов, тестовых пробелов или дорогого сопровождения.
184
184
 
185
185
  Модели:
186
- - Claude Code: запускай все роли на `model: "sonnet"`.
187
- - Codex: запускай все роли на `gpt-5.3-codex`.
186
+ - Claude Code: запускай все роли через `Agent` tool на `model: "sonnet"`.
187
+ - Codex interactive: если доступен инструмент субагентов (`spawn_agent` или аналог), запускай все роли через него на `gpt-5.3-codex`; не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны.
188
+ - Codex exec / неинтерактивный fallback: если инструмента субагентов нет, запускай роли через параллельные `codex exec --model gpt-5.3-codex` одной Bash-командой с `&` и общим `wait`.
188
189
  - Если нужный идентификатор недоступен, возьми ближайшую code-capable модель того же уровня. Не используй быструю слабую модель для этих проверок: они должны читать diff, план, правила, архитектуру и релевантный код.
189
190
 
190
191
  Каждому дай путь к файлу ревью, `$TARGET`, `$PLAN_FILE`, `docs/rules.md`, `docs/arch.md`, `docs/settings.yaml`, связанный research при наличии. Каждый агент должен читать не только ревью, но и фактический diff/код, достаточный для проверки своей роли.