@gian-tiaga/eda 3.6.0 → 3.7.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.
package/MIGRATION.md CHANGED
@@ -87,8 +87,9 @@ docs/
87
87
 
88
88
  - **Удалены двенадцать агентов `eda-plan-review-*`.** Проверку плана целиком выполняет один субагент по фиксированному чек-листу. `eda update` стирает файлы этих агентов из `.claude/agents/` и `.codex/agents/`.
89
89
  - **Секция `plan-review.agents` больше не читается.** Начиная с 3.1.1 `eda update` находит её в готовом файле настроек и убирает вместе с другими устаревшими ключами — `review-check`, `review.strict`, `review.include_code_quality`. Дефолт `plan-review.threshold` — `100`, `plan-polish.limit` — `2`.
90
- - **У `eda-review` появился режим исполнения.** `review.execution` принимает `subagents` или `single`; default `subagents` сохраняет прежнее поведение. В `single` все выбранные проверки выполняет один review-runner, поэтому модели отдельных `review.agents` не применяются.
91
- - **У `eda-orhestra` появился режим исполнения.** `orhestra.execution` принимает `subagents`, `single` или `single_propagated`; default `subagents` сохраняет прежнее поведение. `single` выполняет верхние этапы текущим агентом, а `single_propagated` дополнительно передаёт `single` совместимым execute/review-этапам.
90
+ - **Режим `single` переименован в `main`.** `eda update` переносит `review.execution: single` и `plan-execute.mode: single` в `main`, а `orhestra.execution: single` и `single_propagated` — в `main` и `main_propagated`. В `main` работу выполняет основной агент без субагентов; модели отдельных `review.agents` не применяются.
91
+ - **У `eda-review` есть режим исполнения.** `review.execution` принимает `subagents` или `main`; default `subagents` сохраняет прежнее поведение. Безусловный Claude `context: fork` удалён, поэтому `main` не создаёт отдельного агента для ревью.
92
+ - **У `eda-orhestra` появился режим исполнения.** `orhestra.execution` принимает `subagents`, `main` или `main_propagated`; default `subagents` сохраняет прежнее поведение. `main` выполняет верхние этапы текущим агентом, а `main_propagated` дополнительно передаёт `main` совместимым execute/review-этапам.
92
93
  - **У `eda-polish` больше нет порога.** Цикл завершается только при нуле находок и останавливается досрочно, если за круг число открытых находок не сократилось. Аргумент вида `args: "threshold 90 limit 2"` в шаге оркестратора `eda update` приводит к виду `args: "limit 2"`.
93
94
  - **Формат ревью дополнен.** У каждой находки появилось поле `repro` — чем проблема воспроизводится, — а в отчёт добавлен раздел «Отклонено» с причинами отклонения. `eda-fix-by-review` может отклонить находку, но только фактически неверную и с обоснованием в отчёте. Старые файлы ревью читаются как есть.
94
95
 
package/README.md CHANGED
@@ -41,7 +41,7 @@ eda update-all ~/Code
41
41
 
42
42
  | Скил | Что делает | Куда складывает |
43
43
  |---|---|---|
44
- | `eda-orhestra` | Выполняет настраиваемую цепочку `eda-*`-скилов. В `subagents` каждый этап получает чистый контекст, в `single` этапы выполняет текущий агент, а `single_propagated` дополнительно передаёт `single` в совместимые execute/review-этапы. По умолчанию: план без проверок → полировка плана → выполнение → автономное ревью и исправления → ручные тесты. Если QA нашёл баг, оркестра запускает fix и повторяет только ручной тест. В `orhestra.steps` шаги можно переставлять, отключать и снабжать `args`. Не коммитит | Артефакты включённых скилов |
44
+ | `eda-orhestra` | Выполняет настраиваемую цепочку `eda-*`-скилов. В `subagents` каждый этап получает чистый контекст, в `main` этапы выполняет текущий агент, а `main_propagated` дополнительно передаёт `main` в совместимые execute/review-этапы. По умолчанию: план без проверок → полировка плана → выполнение → автономное ревью и исправления → ручные тесты. Если QA нашёл баг, оркестра запускает fix и повторяет только ручной тест. В `orhestra.steps` шаги можно переставлять, отключать и снабжать `args`. Не коммитит | Артефакты включённых скилов |
45
45
  | `eda-aim` | Сначала через отдельного агента-планировщика согласует с человеком одну или несколько простых проверяемых целей, затем передаёт их агентам-исполнителям и повторяет работу до независимого подтверждения агентом-проверяющим. При необходимости использует установленные скилы в отдельных изолированных субагентах. В `automatic` отвечает на безопасные рабочие вопросы самостоятельно, в `manual` передаёт их человеку; режим задаётся через `aim.mode` или текущий вызов. Точный список новых целей человек подтверждает всегда | `docs/artifacts/aims/` и артефакты задействованных скилов |
46
46
  | `eda-new-project` | Помогает стартовать новый проект: собирает и согласует требования, функциональность и границы, ограничения и архитектурные драйверы, сравнивает варианты основного стека и фиксирует выбранные компоненты с актуальными стабильными версиями. Не проектирует архитектуру, правила, проверки, AI-скилы или MCP; сохраняет подтверждённый стартовый бриф и всегда без дополнительного вопроса запускает полный технический bootstrap через `eda-prepare-ai` | `docs/artifacts/project-starts/`, затем артефакты `eda-prepare-ai` |
47
47
  | `eda-business` | Совместно с человеком описывает целевое поведение проекта по тематическим карточкам: сложные темы фиксирует подробно, но без шума, соседних модулей и привязки к текущему коду. Может закрепить значимый механизм вроде JWT или серверного хранения токенов, но не язык, библиотеку или конкретную СУБД. `about` содержит лишь короткое описание проекта и основные возможности | `docs/business.md`, `docs/business/` |
@@ -51,12 +51,12 @@ eda update-all ~/Code
51
51
  | `eda-plan-review` | Одним read-only проходом проверяет план по фиксированному чек-листу из 16 пунктов: покрытие запроса, отсутствие развилок, соответствие правилам и архитектуре, дубли, регистр текста, фазы и объём. Замечания вне списка не принимает. Оценка — доля закрытых пунктов, поэтому растёт монотонно. План не меняет | `docs/artifacts/plan-reviews/` |
52
52
  | `eda-plan-review-fix` | Закрывает проваленные пункты чек-листа минимальным изменением плана с совпадающим SHA-256. План не растёт: сначала удаление и замена, прирост объёма за один заход не больше 3%. Новое ревью не делает и код не меняет | `docs/artifacts/plan-review-fixes/` |
53
53
  | `eda-plan-polish` | Оркестрирует изолированный цикл plan-review → plan-review-fix. Хранит снапшот лучшей версии плана: как только score перестаёт расти, останавливается и восстанавливает лучшую версию, а не последнюю. По умолчанию две review-итерации. Кросс-CLI strict не используется | `docs/artifacts/plan-reviews/`, `docs/artifacts/plan-review-fixes/` |
54
- | `eda-plan-execute` | Управляет выполнением плана по фазам в режиме `subagents`, `single` или `auto`. В `subagents` каждую фазу целиком выполняет отдельный изолированный субагент: он читает план, правила, архитектуру и только business/reference-карточки затронутого поведения и компонентов. Фазы проходят строго последовательно и принимаются независимыми проверяющими. В `single` весь план по тем же правилам выполняет и проверяет основной агент в одном контексте, а `auto` выбирает режим по плану. Отметки подтверждённых задач и журнал ведёт основной агент | `docs/artifacts/executions/` |
54
+ | `eda-plan-execute` | Управляет выполнением плана по фазам в режиме `subagents`, `main` или `auto`. В `subagents` каждую фазу целиком выполняет отдельный изолированный субагент: он читает план, правила, архитектуру и только business/reference-карточки затронутого поведения и компонентов. Фазы проходят строго последовательно и принимаются независимыми проверяющими. В `main` весь план по тем же правилам выполняет и проверяет основной агент в одном контексте, а `auto` выбирает режим по плану. Отметки подтверждённых задач и журнал ведёт основной агент | `docs/artifacts/executions/` |
55
55
  | `eda-fix` | Делает обычные фиксы по короткому контексту, баг-репорту или плану. Перед правками читает правила, архитектуру и только применимые карточки, добавляет нужные тесты, прогоняет проверки и сохраняет историю правок | `docs/artifacts/fixes/` |
56
56
  | `eda-review` | Оркестрирует отдельные read-only проверки корректности, архитектуры, правил, references, business-правил, плана, качества, тестов, безопасности, производительности, frontend/UI/UX, API, БД, документации и предыдущих ревью. Сохраняет только доказанные дефекты, которые обязательно исправить; косметические и спекулятивные предложения отбрасывает. Любая находка даёт `changes-required`, а чистое ревью — `clean` и 100/100. Без аргументов ревьюит `git diff HEAD` | `docs/artifacts/reviews/` |
57
57
  | `eda-fix-by-review` | Применяет все находки из ревью с учётом правил, архитектуры и применимых карточек. Спрашивает только при неоднозначности, конфликте, расширении scope или рискованном действии. В конце ссылается на отчёт прямо в файле ревью | `docs/artifacts/review-fixes/` |
58
58
  | `eda-manual-test` | Делает ручную проверку после изменений. По умолчанию проверка полная: разбирает план или другой артефакт по разделам, дополняет его фактическим `git diff HEAD` и закрывает матрицу областей — API, база данных, консольные команды, интерфейс, алгоритмы, фон и интеграции, права и роли, конфигурация, логи, регрессии рядом. Область нельзя закрыть чтением кода или зелёными автотестами; незакрытая область даёт `blocked`. Быстрый smoke включается настройкой `manual-test.depth` или словом в запросе. Применимая business-карточка может добавить только относящийся к задаче инвариант или сценарий. Не правит код, не пишет автотесты и не коммитит | `docs/artifacts/manual-tests/` |
59
- | `eda-polish` | Оркестрирует доводку изменений: запускает полное `eda-review`, затем `eda-fix-by-review` и повторяет цикл до `clean` и отсутствия находок либо до лимита 5 итераций. Все находки исправляются, score остаётся справочным. Каждый шаг идёт в изолированном нативном субагенте. Не коммитит | `docs/artifacts/reviews/`, `docs/artifacts/review-fixes/` |
59
+ | `eda-polish` | Оркестрирует доводку изменений: запускает полное `eda-review`, затем `eda-fix-by-review` и повторяет цикл до `clean` и отсутствия находок либо до лимита 5 итераций. В `main` оба контракта выполняет основной агент без субагентов, в `subagents` каждый шаг получает отдельный изолированный контекст. Все находки исправляются, score остаётся справочным. Не коммитит | `docs/artifacts/reviews/`, `docs/artifacts/review-fixes/` |
60
60
  | `eda-send-review` | На `sonnet` / `gpt-5.6-terra` отправляет ревью на GitHub PR через `gh` всегда в едином формате: общий комментарий-сводка плюс комментарии к строкам кода. Без явно указанного типа использует `comment`; `approve` и `request-changes` берёт только из контекста текущего вызова. По настройке может скрыть предыдущие сводки eda-send-review и зарезолвить их inline-треды. По умолчанию шлёт все пункты. Claude-модель закрепляется при установке; Codex-модель хранится как рекомендуемый будущий override | (комментарий в PR) |
61
61
  | `eda-commit` | Работает как лёгкий оркестратор одного `sonnet` / `gpt-5.6-terra` агента: тот сам собирает git-контекст, делит выбранный состав на логические коммиты, пишет сообщения и тексты PR по исходному запросу и фактическому diff, точечно коммитит и выполняет явно заданные push/PR/merge-действия. Для PR использует шаблон репозитория, отражает все группы изменений и указывает только реально выполненные проверки. С явным контекстом охватывает указанный состав; без контекста берёт все tracked-изменения и содержательные untracked-файлы, кроме очевидных кэшей и локальных служебных артефактов. В Claude Code сам оркестратор закреплён за `sonnet`; в Codex остаётся на активной модели сессии из-за отсутствия per-skill override. При вероятном секрете агент блокируется до индексации затронутой группы. После любого push всегда возвращает ссылку — на существующий PR или на его создание — и спрашивает, создавать ли PR, если его нет. Если продолжение не задано, предлагает применимые варианты | (git, опционально GitHub PR) |
62
62
  | `eda-worktree` | На `haiku` / `gpt-5.6-luna` создаёт через пакетного агента git worktree рядом с основным проектом в папке `{name}-work-{n}` и одноимённую ветку. Базу берёт из аргумента или спрашивает | соседняя папка `{name}-work-{n}` |
@@ -114,7 +114,7 @@ eda update-all ~/Code
114
114
  | `eda-review-documentation` | `haiku`, read-only | `gpt-5.6-luna`, read-only | Проверяет обязательные обновления документации |
115
115
  | `eda-review-previous-reviews` | `haiku`, read-only | `gpt-5.6-luna`, read-only | Перепроверяет незакрытые удалённые замечания |
116
116
 
117
- Агенты устанавливаются отдельно от скилов. Модели review-агентов в таблице — сбалансированные defaults; `docs/settings.yaml` или прямое указание пользователя может заменить модель конкретной проверки на текущий запуск в режиме `subagents`. `eda-aim` последовательно разделяет согласование, выполнение и независимую проверку, а при необходимости использует установленные скилы только в отдельных изолированных субагентах; основной агент передаёт вопросы и структурированные результаты. `eda-commit` сохраняет исходный запрос и целиком передаёт сбор контекста, выбор файлов, коммит и разрешённое продолжение одному простому агенту. `eda-worktree` и `eda-merge-worktree` передают одному специализированному агенту git-операцию, обрабатывают его вопрос или результат и сами команды не выполняют. `eda-review` поддерживает два режима: `subagents` параллельно запускает применимых review-агентов, а `single` один раз читает общий контекст и выполняет те же проверки одним агентом по встроенной матрице. В Claude Code установленный `eda-review` всегда выполняется через `context: fork`, в том числе из `eda-polish`. В Codex шаги polish и специализированные review-агенты запускаются с `fork_turns: "none"`, без наследования истории. В `subagents` все выбранные проверки отправляются одним нативным параллельным пакетом без ручных партий и shell-опроса.
117
+ Агенты устанавливаются отдельно от скилов. Модели review-агентов в таблице — сбалансированные defaults; `docs/settings.yaml` или прямое указание пользователя может заменить модель конкретной проверки на текущий запуск в режиме `subagents`. `eda-aim` последовательно разделяет согласование, выполнение и независимую проверку, а при необходимости использует установленные скилы только в отдельных изолированных субагентах; основной агент передаёт вопросы и структурированные результаты. `eda-commit` сохраняет исходный запрос и целиком передаёт сбор контекста, выбор файлов, коммит и разрешённое продолжение одному простому агенту. `eda-worktree` и `eda-merge-worktree` передают одному специализированному агенту git-операцию, обрабатывают его вопрос или результат и сами команды не выполняют. `eda-review` поддерживает два режима: `subagents` параллельно запускает применимых review-агентов, а `main` выполняет те же проверки основным агентом по встроенной матрице без субагентов. В Codex специализированные review-агенты запускаются с `fork_turns: "none"`, без наследования истории. В `subagents` все выбранные проверки отправляются одним нативным параллельным пакетом без ручных партий и shell-опроса.
118
118
 
119
119
  Для Claude Code установленный `eda-commit` получает `model: sonnet`, а `eda-worktree` и `eda-merge-worktree` — `model: haiku`. В Codex у скилов пока нет отдельного per-skill model override: основной поток остаётся на выбранной пользователем модели, но он выполняет только лёгкую оркестрацию; содержательная работа `eda-commit` закреплена за `gpt-5.6-terra`, а worktree-операции — за `gpt-5.6-luna`.
120
120
 
@@ -122,9 +122,9 @@ eda update-all ~/Code
122
122
 
123
123
  ## 🚩 Флаги скилов
124
124
 
125
- У некоторых скилов есть флаг `strict` — он включает дополнительные тяжёлые проверки. Передаётся как часть запроса агенту, например: `eda-explore strict <тема>`. Также strict можно включить отдельно в `docs/settings.yaml`, например через `explore.strict: true`. У `eda-review` режим исполнения задаётся через `subagents` / `single`, а состав проверок — через собственные `mode` и `model`.
125
+ У некоторых скилов есть флаг `strict` — он включает дополнительные тяжёлые проверки. Передаётся как часть запроса агенту, например: `eda-explore strict <тема>`. Также strict можно включить отдельно в `docs/settings.yaml`, например через `explore.strict: true`. У `eda-review` режим исполнения задаётся через `subagents` / `main`, а состав проверок — через собственные `mode` и `model`.
126
126
 
127
- У `eda-plan-execute` есть режимы `subagents` / `single` / `auto`. Режим можно разово указать в вызове, например `eda-plan-execute single docs/artifacts/plans/....md`; без него используется `plan-execute.mode` из настроек, а без настроек — `auto`.
127
+ У `eda-plan-execute` есть режимы `subagents` / `main` / `auto`. Режим можно разово указать в вызове, например `eda-plan-execute main docs/artifacts/plans/....md`; без него используется `plan-execute.mode` из настроек, а без настроек — `auto`.
128
128
 
129
129
  У `eda-aim` есть режимы `automatic` / `manual`. В автоматическом основной агент сам отвечает на безопасные рабочие вопросы по рекомендации субагента и фактам проекта, в ручном передаёт их человеку. Режим можно разово указать в вызове; без него используется `aim.mode` из настроек. Точный список новых целей перед записью в `docs/artifacts/aims/` всё равно один раз подтверждает человек.
130
130
 
@@ -132,15 +132,15 @@ eda update-all ~/Code
132
132
 
133
133
  | Скил | Флаг | Что включает | Когда стоит использовать |
134
134
  |---|---|---|---|
135
- | `eda-orhestra` | `automatic` / `manual`, `subagents` / `single` / `single_propagated`, `без полировки плана`, `без полировки кода`, `полировка кода N итераций`, `без ручных тестов` | Разово меняет вопросы, исполнение, состав цепочки и параметры шагов поверх `docs/settings.yaml` | `single` экономит верхний слой, `single_propagated` также включает single у совместимых execute/review-этапов |
135
+ | `eda-orhestra` | `automatic` / `manual`, `subagents` / `main` / `main_propagated`, `без полировки плана`, `без полировки кода`, `полировка кода N итераций`, `без ручных тестов` | Разово меняет вопросы, исполнение, состав цепочки и параметры шагов поверх `docs/settings.yaml` | `main` экономит верхний слой, `main_propagated` также включает main у совместимых execute/review-этапов |
136
136
  | `eda-aim` | `automatic` / `manual` | Разово меняет способ ответа на рабочие вопросы поверх `aim.mode`; подтверждение точного списка новых целей остаётся обязательным | Автономная работа или совместное прохождение развилок с человеком |
137
137
  | `eda-explore` | `strict` | После сохранения отчёта отдаёт его соседнему CLI (Claude → Codex или наоборот) на критическое ревью конкретности, фактов, развилок, рисков и версий; затем доправляет отчёт по замечаниям | Серьёзные исследования, которые лягут в основу больших решений; когда хочется второго мнения от другой модели/среды |
138
138
  | `eda-plan` | `strict`, `без ревью плана`, `без проверок` | `strict` независимо включает кросс-CLI проверку; `без ревью плана` отключает встроенный review/fix; `без проверок` отключает оба вида ревью | Когда нужно разделить создание плана и его последующую полировку |
139
139
  | `eda-plan-review` | `threshold N` | Разово меняет долю закрытых пунктов, при которой план считается готовым | Для самостоятельного аудита готового плана |
140
- | `eda-plan-execute` | `subagents` / `single` / `auto` | Разово меняет, где выполняются фазы, поверх `plan-execute.mode` | `single` для небольшого плана в одном контексте, `subagents` для большого или тяжёлого |
140
+ | `eda-plan-execute` | `subagents` / `main` / `auto` | Разово меняет, где выполняются фазы, поверх `plan-execute.mode` | `main` для небольшого плана в одном контексте, `subagents` для большого или тяжёлого |
141
141
  | `eda-plan-polish` | `threshold N`, `limit N` | Меняет gate и максимальное число подтверждающих review-итераций | Для доводки ответственных планов перед `eda-plan-execute` |
142
142
  | `eda-manual-test` | `full` / `полная проверка`, `smoke` / `быстро` | Разово меняет глубину ручной проверки поверх `manual-test.depth` | `smoke` для короткой правки, `full` — когда нужно закрыть все области после плана |
143
- | `eda-review` | `subagents` / `single` | Разово меняет способ выполнения выбранных проверок поверх `review.execution` | `single` экономит контекст на частых локальных ревью; `subagents` сохраняет независимость ролей для ответственных изменений |
143
+ | `eda-review` | `subagents` / `main` | Разово меняет способ выполнения выбранных проверок поверх `review.execution` | `main` экономит контекст на частых локальных ревью; `subagents` сохраняет независимость ролей для ответственных изменений |
144
144
 
145
145
  ---
146
146
 
@@ -157,8 +157,8 @@ orhestra:
157
157
  # Режим полного цикла eda-orhestra.
158
158
  # automatic | manual
159
159
  mode: automatic
160
- # Где выполняются этапы и передаётся ли single совместимым вложенным скилам.
161
- # subagents | single | single_propagated
160
+ # Где выполняются этапы и передаётся ли main совместимым вложенным скилам.
161
+ # subagents | main | main_propagated
162
162
  execution: subagents
163
163
  # Упорядоченная цепочка. Шаги можно отключать, удалять и переставлять.
164
164
  steps:
@@ -239,7 +239,7 @@ plan-polish:
239
239
 
240
240
  plan-execute:
241
241
  # Где eda-plan-execute выполняет фазы плана.
242
- # subagents — каждая фаза в отдельном субагенте, single — весь план одним контекстом, auto — решает по плану.
242
+ # subagents — каждая фаза в отдельном субагенте, main — весь план одним контекстом, auto — решает по плану.
243
243
  mode: auto
244
244
 
245
245
  manual-test:
@@ -250,7 +250,7 @@ manual-test:
250
250
  depth: full
251
251
 
252
252
  review:
253
- # subagents — отдельный специализированный агент на проверку, single — все проверки одним агентом.
253
+ # subagents — отдельный специализированный агент на проверку, main — все проверки основным агентом без субагентов.
254
254
  execution: subagents
255
255
  # Каждая проверка имеет собственный режим запуска; модели применяются только в subagents.
256
256
  agents:
@@ -390,7 +390,7 @@ discover-automations:
390
390
 
391
391
  Что означают настройки:
392
392
  - `orhestra.mode` — `automatic` безопасно закрывает рабочие вопросы без промежуточных подтверждений; `manual` пишет план вместе с человеком и передаёт ему вопросы.
393
- - `orhestra.execution` — `subagents` запускает каждый этап отдельно, `single` выполняет верхнюю цепочку текущим агентом, `single_propagated` дополнительно передаёт `single` шагам `eda-plan-execute`, `eda-polish` и прямому `eda-review`; default `subagents`. Другие вложенные скилы сохраняют собственный контракт.
393
+ - `orhestra.execution` — `subagents` запускает каждый этап отдельно, `main` выполняет верхнюю цепочку текущим агентом, `main_propagated` дополнительно передаёт `main` шагам `eda-plan-execute`, `eda-polish` и прямому `eda-review`; default `subagents`. Другие вложенные скилы сохраняют собственный контракт.
394
394
  - `orhestra.steps` — выполняемый сверху вниз workflow. `enabled: false` отключает шаг, а `args` передаёт ему дополнительные параметры. Например, для `eda-polish`: `args: "limit 2"`. Шаги можно переставлять или добавлять, но git/publish-скиллы оркестратор не запускает.
395
395
  - Старое значение `steps[].skill: eda-execute` во время запуска автоматически понимается как `eda-plan-execute`; существующий `docs/settings.yaml` установщик не переписывает.
396
396
  - `steps[].on_failure` — настраивает исправление failed manual-test прямо рядом с этим шагом: `skill` и `args` задают фикс, `then` — повторяемые id шагов, `max_cycles` — лимит. Если обработчика нет, оркестратор сохраняет failed-отчёт и останавливается.
@@ -400,11 +400,11 @@ discover-automations:
400
400
  - `plan.size`, `plan.decision_mode`, `plan.test_strategy`, `plan.logging_strategy` — режим и структура работы `eda-plan`.
401
401
  - `plan-review.threshold` — доля закрытых пунктов чек-листа для статуса `ready`, default `100`. Отдельных агентов у `plan-review` больше нет: проверку целиком делает один субагент.
402
402
  - `plan-polish.limit` — максимальное число подтверждающих review-итераций; default `2`. Цикл останавливается раньше, если score перестал расти.
403
- - `plan-execute.mode` — где `eda-plan-execute` выполняет фазы: `subagents` — каждая фаза в отдельном изолированном субагенте с независимой проверкой, `single` — весь план одним контекстом без субагентов, `auto` — выбор по плану; default `auto`. Явный режим в вызове имеет приоритет.
403
+ - `plan-execute.mode` — где `eda-plan-execute` выполняет фазы: `subagents` — каждая фаза в отдельном изолированном субагенте с независимой проверкой, `main` — весь план одним контекстом без субагентов, `auto` — выбор по плану; default `auto`. Явный режим в вызове имеет приоритет.
404
404
  - `manual-test.depth` — глубина ручной проверки в `eda-manual-test`: `full` — закрыть все применимые области матрицы покрытия, `smoke` — только запуск и основной сценарий изменённой области, `ask_each_time` — спрашивать каждый раз; default `full`. Явная глубина в вызове имеет приоритет.
405
- - `review.execution` — где выполняются проверки `eda-review`: `subagents` запускает отдельные специализированные роли, `single` выполняет те же выбранные проверки одним агентом с однократной загрузкой общего контекста; default `subagents`. Явный режим в вызове имеет приоритет.
405
+ - `review.execution` — где выполняются проверки `eda-review`: `subagents` запускает отдельные специализированные роли, `main` выполняет те же выбранные проверки основным агентом без субагентов и с однократной загрузкой общего контекста; default `subagents`. Явный режим в вызове имеет приоритет.
406
406
  - `review.agents.<check>.mode` — запускать проверку всегда, автоматически по контексту или отключить.
407
- - `review.agents.<check>.model.claude` и `.codex` — модель конкретной проверки в соответствующей среде для `subagents`; в `single` используется текущая модель агента.
407
+ - `review.agents.<check>.model.claude` и `.codex` — модель конкретной проверки в соответствующей среде для `subagents`; в `main` используется текущая модель агента.
408
408
  - `eda-review` не делит находки по обязательности: каждый принятый пункт требует исправления, а предложения без доказанного практического дефекта отбрасываются. Score остаётся экспертной оценкой серьёзности; любая находка блокирует `clean` независимо от score.
409
409
  - `send-review.close_previous_reviews` — после успешной новой отправки скрывает предыдущие сводки, созданные `eda-send-review` текущим GitHub-пользователем, и резолвит связанные inline-треды; прямое указание в текущем запросе переопределяет настройку.
410
410
  - `discover-automations.include_plans` — добавляет `docs/artifacts/plans/` в обычный запуск `eda-discover-automations`.
@@ -421,7 +421,7 @@ discover-automations:
421
421
 
422
422
  `eda-orhestra` по умолчанию запускает основной цикл одной командой:
423
423
 
424
- В default `subagents` каждая стрелка передаёт явный вход и пути к артефактам в новый изолированный субагент. В `single` и `single_propagated` верхние этапы идут последовательно в текущем контексте.
424
+ В default `subagents` каждая стрелка передаёт явный вход и пути к артефактам в новый изолированный субагент. В `main` и `main_propagated` верхние этапы идут последовательно в текущем контексте.
425
425
 
426
426
  ```text
427
427
  plan без проверок → plan-polish → plan-execute → polish → manual-test ──passed──> готово
@@ -466,7 +466,7 @@ discover-automations может запускаться от review, fix-by-revie
466
466
 
467
467
  `eda-manual-test` обычно ставится после `eda-plan-execute`, `eda-fix` или `eda-fix-by-review`, чтобы руками проверить API, базу, консольные команды, интерфейс и алгоритмы перед ревью или коммитом.
468
468
 
469
- Использовать всю цепочку не обязательно — каждый скил самодостаточен. Для полного прохода одной задачи можно вызвать `eda-orhestra automatic <задача>` или `eda-orhestra manual <задача>`. Разовые варианты: `eda-orhestra single <задача>`, `eda-orhestra single_propagated <задача>`, `eda-orhestra automatic без полировки плана <задача>`, `eda-orhestra полировка кода 2 итерации <задача>`, `eda-orhestra без ручных тестов <задача>`. Постоянный режим исполнения задаётся в `orhestra.execution`, порядок и аргументы — в `orhestra.steps`. Новый проект можно начать с `eda-new-project`; существующий — с `eda-prepare-ai`, `eda-roadmap`, `eda-explore`, или сразу с `eda-plan-execute` на готовом плане, или просто `eda-commit`, когда правки уже сделаны. Для параллельной работы есть `eda-worktree`, а для возврата ветки из worktree в текущую ветку — `eda-merge-worktree`.
469
+ Использовать всю цепочку не обязательно — каждый скил самодостаточен. Для полного прохода одной задачи можно вызвать `eda-orhestra automatic <задача>` или `eda-orhestra manual <задача>`. Разовые варианты: `eda-orhestra main <задача>`, `eda-orhestra main_propagated <задача>`, `eda-orhestra automatic без полировки плана <задача>`, `eda-orhestra полировка кода 2 итерации <задача>`, `eda-orhestra без ручных тестов <задача>`. Постоянный режим исполнения задаётся в `orhestra.execution`, порядок и аргументы — в `orhestra.steps`. Новый проект можно начать с `eda-new-project`; существующий — с `eda-prepare-ai`, `eda-roadmap`, `eda-explore`, или сразу с `eda-plan-execute` на готовом плане, или просто `eda-commit`, когда правки уже сделаны. Для параллельной работы есть `eda-worktree`, а для возврата ветки из worktree в текущую ветку — `eda-merge-worktree`.
470
470
 
471
471
  Вызов `eda-commit` без контекста охватывает все незакоммиченные tracked-изменения и содержательные untracked-файлы; очевидные кэши, временные и локальные служебные артефакты остаются вне коммитов. Executor сам делит полный состав на необходимое число логически цельных коммитов — один, три или больше. Например, запрос `eda-commit сразу отправь ветку, создай PR и дай ссылку` использует тот же полный состав и выполняет всю указанную цепочку без отдельного вопроса после серии коммитов.
472
472
 
@@ -476,7 +476,7 @@ discover-automations может запускаться от review, fix-by-revie
476
476
 
477
477
  - **Простой язык.** Скилы общаются с тобой так, чтобы понял человек без глубоких знаний предмета. Термины — только когда без них нельзя.
478
478
  - **Все вопросы — интерактивно.** В Claude Code — через `AskUserQuestion`; в интерактивном Codex — через `request_user_input` или блокирующий вопрос в чат. В `codex exec` и других неинтерактивных запусках скил не имитирует диалог: если без ответа нельзя безопасно продолжать, он завершает работу со статусом `blocked: нужен ответ пользователя`.
479
- - **Способ review настраивается.** В `subagents` `eda-review` запускает установленных read-only агентов нативным механизмом Claude/Codex и блокируется при их недоступности без CLI-fallback. В `single` один review-runner выполняет те же выбранные проверки по общей матрице без leaf-субагентов и повторной загрузки общего контекста.
479
+ - **Способ review настраивается.** В `subagents` `eda-review` запускает установленных read-only агентов нативным механизмом Claude/Codex и блокируется при их недоступности без CLI-fallback. В `main` основной агент выполняет те же выбранные проверки по общей матрице без субагентов и повторной загрузки общего контекста.
480
480
  - **Технические остановки обрабатываются по причине.** Оркестраторы ждут свободный слот при лимите параллельности, запрашивают недостающее разрешение, один раз продолжают агента после временной API-ошибки и без бессмысленных retry останавливаются при лимите глубины, исчерпанной квоте или неизвестном сбое.
481
481
  - **Повторяемые роли — в пакетных агентах.** Скилы управляют процессом, а стабильные изолированные роли получают собственный prompt, модель и доступ. Полные review-prompts не дублируются в оркестраторе.
482
482
  - **Артефакты по папкам.** Исследования отдельно, планы отдельно, ревью отдельно. Между файлами — ссылки. Через месяц легко найти, кто что когда решал.
package/lib/install.js CHANGED
@@ -358,12 +358,12 @@ const ORHESTRA_EXECUTION_CHOICES = [
358
358
  name: 'Каждый этап выполнять отдельным изолированным субагентом'
359
359
  },
360
360
  {
361
- value: 'single',
362
- name: 'Все этапы выполнять текущим агентом без передачи режима внутрь'
361
+ value: 'main',
362
+ name: 'Все этапы выполнять основным агентом без передачи режима внутрь'
363
363
  },
364
364
  {
365
- value: 'single_propagated',
366
- name: 'Все этапы выполнять текущим агентом и передавать single совместимым скилам'
365
+ value: 'main_propagated',
366
+ name: 'Все этапы выполнять основным агентом и передавать main совместимым скилам'
367
367
  }
368
368
  ];
369
369
  const AIM_MODE_CHOICES = [
@@ -398,8 +398,8 @@ const PLAN_EXECUTE_MODE_CHOICES = [
398
398
  name: 'Каждую фазу выполнять отдельным изолированным субагентом'
399
399
  },
400
400
  {
401
- value: 'single',
402
- name: 'Выполнять весь план одним контекстом без субагентов'
401
+ value: 'main',
402
+ name: 'Выполнять весь план основным агентом без субагентов'
403
403
  }
404
404
  ];
405
405
  const PLAN_SIZE_CHOICES = [
@@ -487,8 +487,8 @@ const REVIEW_EXECUTION_CHOICES = [
487
487
  name: 'Каждую review-проверку выполнять отдельным специализированным субагентом'
488
488
  },
489
489
  {
490
- value: 'single',
491
- name: 'Все review-проверки выполнять одним агентом в общем контексте'
490
+ value: 'main',
491
+ name: 'Все review-проверки выполнять основным агентом без субагентов'
492
492
  }
493
493
  ];
494
494
  const CLAUDE_REVIEW_MODEL_CHOICES = [
@@ -604,13 +604,20 @@ export async function updateAll({
604
604
  if (resolvedSettingsMode === 'skip' && await fileExists(projectSettingsPath)) {
605
605
  const existingContent = await fs.readFile(projectSettingsPath, 'utf8');
606
606
  const migrated = migrateSettingsContent(existingContent);
607
- if (migrated.version === SETTINGS_VERSION && migrated.missingKeys.size === 0 && migrated.retiredPaths.length === 0) {
607
+ if (
608
+ migrated.version === SETTINGS_VERSION
609
+ && migrated.missingKeys.size === 0
610
+ && migrated.retiredPaths.length === 0
611
+ && migrated.normalizedPaths.length === 0
612
+ ) {
608
613
  output.write(`Полный файл настроек сохранён: ${SETTINGS_RELATIVE_PATH}\n`);
609
614
  } else {
610
615
  await writeSettingsContent(projectDir, formatSettings(migrated.settings));
611
616
  output.write(migrated.retiredPaths.length > 0
612
617
  ? `Из файла настроек убраны устаревшие ключи (${migrated.retiredPaths.join(', ')}): ${SETTINGS_RELATIVE_PATH}\n`
613
- : `Старый или неполный файл настроек перенесён на version: ${SETTINGS_VERSION}: ${SETTINGS_RELATIVE_PATH}\n`);
618
+ : migrated.normalizedPaths.length > 0
619
+ ? `Переименованы значения настроек (${migrated.normalizedPaths.join(', ')}): ${SETTINGS_RELATIVE_PATH}\n`
620
+ : `Старый или неполный файл настроек перенесён на version: ${SETTINGS_VERSION}: ${SETTINGS_RELATIVE_PATH}\n`);
614
621
  }
615
622
  } else {
616
623
  await writeSettingsContent(projectDir, sharedSettingsContent);
@@ -795,7 +802,7 @@ export async function askSettings({
795
802
  selectPrompt,
796
803
  seedAgents: settings.review.agents,
797
804
  missingKeys,
798
- skipModels: settings.review.execution === 'single'
805
+ skipModels: settings.review.execution === 'main'
799
806
  });
800
807
  }
801
808
  return settings;
@@ -1079,7 +1086,9 @@ async function ensureSettings(cwd, { input = process.stdin, output = process.std
1079
1086
  }
1080
1087
 
1081
1088
  const migrated = migrateSettingsContent(existingContent);
1082
- const needsMigration = migrated.version !== SETTINGS_VERSION || migrated.missingKeys.size > 0;
1089
+ const needsMigration = migrated.version !== SETTINGS_VERSION
1090
+ || migrated.missingKeys.size > 0
1091
+ || migrated.normalizedPaths.length > 0;
1083
1092
  if (!needsMigration && migrated.retiredPaths.length === 0) {
1084
1093
  output.write(`Настройки уже есть: ${SETTINGS_RELATIVE_PATH}\n`);
1085
1094
  return;
@@ -1113,7 +1122,9 @@ async function configureSettings(cwd, { input = process.stdin, output = process.
1113
1122
  }
1114
1123
 
1115
1124
  const migrated = migrateSettingsContent(existingContent);
1116
- const needsMigration = migrated.version !== SETTINGS_VERSION || migrated.missingKeys.size > 0;
1125
+ const needsMigration = migrated.version !== SETTINGS_VERSION
1126
+ || migrated.missingKeys.size > 0
1127
+ || migrated.normalizedPaths.length > 0;
1117
1128
  if (!needsMigration && migrated.retiredPaths.length === 0) {
1118
1129
  output.write(`Настройки ${SETTINGS_RELATIVE_PATH} версии ${SETTINGS_VERSION} полные — вопросы не требуются.\n`);
1119
1130
  return;
@@ -1156,6 +1167,7 @@ function migrateSettingsContent(content) {
1156
1167
 
1157
1168
  const settings = structuredClone(DEFAULT_SETTINGS);
1158
1169
  const missingKeys = new Set();
1170
+ const normalizedPaths = [];
1159
1171
  const transfer = (key, value, validator, setter) => {
1160
1172
  if (validator(value)) setter(value);
1161
1173
  else missingKeys.add(key);
@@ -1164,14 +1176,22 @@ function migrateSettingsContent(content) {
1164
1176
  const bool = value => typeof value === 'boolean';
1165
1177
  const positiveInt = value => Number.isInteger(value) && value > 0;
1166
1178
  const score = value => Number.isInteger(value) && value >= 1 && value <= 100;
1179
+ const normalizeExecutionValue = (key, value, aliases) => {
1180
+ if (!Object.hasOwn(aliases, value)) return value;
1181
+ normalizedPaths.push(key);
1182
+ return aliases[value];
1183
+ };
1167
1184
 
1168
1185
  const legacyDefaults = objectValue(raw.defaults);
1169
1186
  const orhestra = objectValue(raw.orhestra);
1170
1187
  transfer('orhestra.mode', orhestra.mode, oneOf(['automatic', 'manual']), value => { settings.orhestra.mode = value; });
1171
1188
  transfer(
1172
1189
  'orhestra.execution',
1173
- orhestra.execution,
1174
- oneOf(['subagents', 'single', 'single_propagated']),
1190
+ normalizeExecutionValue('orhestra.execution', orhestra.execution, {
1191
+ single: 'main',
1192
+ single_propagated: 'main_propagated'
1193
+ }),
1194
+ oneOf(['subagents', 'main', 'main_propagated']),
1175
1195
  value => { settings.orhestra.execution = value; }
1176
1196
  );
1177
1197
  const steps = normalizeStoredOrhestraSteps(orhestra.steps);
@@ -1227,8 +1247,8 @@ function migrateSettingsContent(content) {
1227
1247
  const planExecute = objectValue(raw['plan-execute']);
1228
1248
  transfer(
1229
1249
  'planExecute.mode',
1230
- planExecute.mode,
1231
- oneOf(['subagents', 'single', 'auto']),
1250
+ normalizeExecutionValue('plan-execute.mode', planExecute.mode, { single: 'main' }),
1251
+ oneOf(['subagents', 'main', 'auto']),
1232
1252
  value => { settings.planExecute.mode = value; }
1233
1253
  );
1234
1254
 
@@ -1243,8 +1263,8 @@ function migrateSettingsContent(content) {
1243
1263
  const review = objectValue(raw.review);
1244
1264
  transfer(
1245
1265
  'review.execution',
1246
- review.execution,
1247
- oneOf(['subagents', 'single']),
1266
+ normalizeExecutionValue('review.execution', review.execution, { single: 'main' }),
1267
+ oneOf(['subagents', 'main']),
1248
1268
  value => { settings.review.execution = value; }
1249
1269
  );
1250
1270
  transferAgentSettings({
@@ -1278,6 +1298,7 @@ function migrateSettingsContent(content) {
1278
1298
  return {
1279
1299
  settings,
1280
1300
  missingKeys,
1301
+ normalizedPaths,
1281
1302
  retiredPaths: findRetiredSettingsPaths(raw),
1282
1303
  version: Number.isInteger(raw.version) ? raw.version : null
1283
1304
  };
@@ -1418,8 +1439,8 @@ orhestra:
1418
1439
  # Режим полного цикла eda-orhestra.
1419
1440
  # automatic | manual
1420
1441
  mode: ${orhestra.mode ?? 'automatic'}
1421
- # Где выполняются этапы и передаётся ли single совместимым вложенным скилам.
1422
- # subagents | single | single_propagated
1442
+ # Где выполняются этапы и передаётся ли main совместимым вложенным скилам.
1443
+ # subagents | main | main_propagated
1423
1444
  execution: ${orhestra.execution ?? 'subagents'}
1424
1445
  # Упорядоченная цепочка. Шаги можно отключать, удалять и переставлять.
1425
1446
  steps:
@@ -1470,7 +1491,7 @@ plan-polish:
1470
1491
 
1471
1492
  plan-execute:
1472
1493
  # Где eda-plan-execute выполняет фазы плана.
1473
- # subagents — каждая фаза в отдельном субагенте, single — весь план одним контекстом, auto — решает по плану.
1494
+ # subagents — каждая фаза в отдельном субагенте, main — весь план одним контекстом, auto — решает по плану.
1474
1495
  mode: ${settings.planExecute.mode}
1475
1496
 
1476
1497
  manual-test:
@@ -1482,7 +1503,7 @@ manual-test:
1482
1503
 
1483
1504
  review:
1484
1505
  # Где eda-review выполняет выбранные проверки.
1485
- # subagents — отдельный специализированный агент на проверку, single — все проверки одним агентом.
1506
+ # subagents — отдельный специализированный агент на проверку, main — все проверки основным агентом без субагентов.
1486
1507
  execution: ${settings.review.execution ?? 'subagents'}
1487
1508
  # Каждая проверка имеет собственный режим запуска; модели применяются только в subagents.
1488
1509
  agents:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "3.6.0",
3
+ "version": "3.7.0",
4
4
  "description": "Пакет скилов и специализированных агентов eda-* для Claude Code и Codex CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -49,7 +49,7 @@ orhestra:
49
49
  Правила схемы:
50
50
 
51
51
  - `mode`: только `automatic` или `manual`; дефолт `automatic`.
52
- - `execution`: `subagents`, `single` или `single_propagated`; дефолт `subagents`.
52
+ - `execution`: `subagents`, `main` или `main_propagated`; дефолт `subagents`.
53
53
  - `steps`: упорядоченный непустой список. Выполняй сверху вниз только элементы с `enabled: true`; отсутствующий `enabled` считай `true`.
54
54
  - `id`: уникальное непустое имя шага для ссылок из `on_failure.then`.
55
55
  - `skill`: имя установленного `eda-*`-скила. Не разрешай `eda-orhestra`, `eda-aim`, `eda-commit`, `eda-send-review`, `eda-worktree` и `eda-merge-worktree`.
@@ -67,7 +67,7 @@ orhestra:
67
67
 
68
68
  Сохрани весь текст рядом с вызовом в `$USER_REQUEST`. Извлеки задачу, пути к готовым артефактам, режим вопросов, режим исполнения и разовые изменения цепочки.
69
69
 
70
- Явные `subagents`, `single` или `single_propagated` рядом с вызовом `eda-orhestra` задают `$EXECUTION` только для текущего запуска и важнее настроек. Поддерживай также формулировки «одним агентом» для `single` и «одним агентом с передачей» для `single_propagated`. Не принимай режим, явно адресованный отдельному шагу, за режим самого оркестратора.
70
+ Явные `subagents`, `main` или `main_propagated` рядом с вызовом `eda-orhestra` задают `$EXECUTION` только для текущего запуска и важнее настроек. Поддерживай также формулировки «основным агентом» для `main` и «основным агентом с передачей» для `main_propagated`. Не принимай режим, явно адресованный отдельному шагу, за режим самого оркестратора.
71
71
 
72
72
  Поддерживай естественные overrides: `без полировки плана`, `без полировки кода`, `полировка кода 2 итерации`, `без ручных тестов`, `только plan и execute`, `plan-polish threshold 95 limit 3`, `для manual-test <args>`. Явное перечисление порядка заменяет порядок из настроек; локальное включение, отключение или параметры меняют только названный шаг. Фразу `полировка кода N итераций` нормализуй в `limit N` внутри `args` шага `eda-polish`; аналогичную фразу о плане — в `args` шага `eda-plan-polish`. Не принимай слово из описания самой задачи за override без явной связи с цепочкой.
73
73
 
@@ -108,10 +108,10 @@ orhestra:
108
108
  ## Вызов вложенных скилов
109
109
 
110
110
  1. Загружай установленный `SKILL.md` каждого шага как источник правды. Не копируй его процедуру в этот скилл.
111
- 2. В `single_propagated` добавь `single` к итоговому вводу только совместимых шагов `eda-plan-execute`, `eda-polish` и `eda-review`, если пользователь не задал этому шагу собственный режим. Не передавай его другим скилам: `eda-polish` уже передаст режим своему `eda-review`, а остальные продолжат по собственному контракту.
111
+ 2. В `main_propagated` добавь `main` к итоговому вводу только совместимых шагов `eda-plan-execute`, `eda-polish` и `eda-review`, если пользователь не задал этому шагу собственный режим. Не передавай его другим скилам: `eda-polish` уже передаст режим своему `eda-review`, а остальные продолжат по собственному контракту.
112
112
  3. В `subagents` каждый активный шаг, повтор и `on_failure.skill` запускай в отдельном изолированном субагенте. Передавай только рабочую директорию, имя скилла, итоговый ввод и пути к нужным артефактам. В Codex используй `spawn_agent` с `fork_turns: "none"` или точный аналог; в Claude Code — новый `Agent` с самодостаточным task-сообщением.
113
- 4. В `single` и `single_propagated` выполняй контракт каждого активного шага, повтора и `on_failure.skill` сам в текущем контексте, строго последовательно. Не создавай для них верхнеуровневых субагентов; собственные правила вложенной делегации вызываемого скилла сохраняются.
114
- 5. Не переключай `$EXECUTION` автоматически. В `subagents` при недоступной изоляции остановись с `blocked: недоступна изоляция этапа`; в single-режимах блокируйся только тогда, когда обязательная вложенная делегация недоступна по контракту самого шага.
113
+ 4. В `main` и `main_propagated` выполняй контракт каждого активного шага, повтора и `on_failure.skill` сам в текущем контексте, строго последовательно. Не создавай для них верхнеуровневых субагентов; собственные правила вложенной делегации вызываемого скилла сохраняются.
114
+ 5. Не переключай `$EXECUTION` автоматически. В `subagents` при недоступной изоляции остановись с `blocked: недоступна изоляция этапа`; в main-режимах блокируйся только тогда, когда обязательная вложенная делегация недоступна по контракту самого шага.
115
115
 
116
116
  ## Технические остановки субагентов
117
117
 
@@ -158,7 +158,7 @@ orhestra:
158
158
  ## Чего НЕ делать
159
159
 
160
160
  - Обходить или сокращать контракт настроенного скилла из-за выбранного режима исполнения.
161
- - Передавать `single` скилам вне allowlist `eda-plan-execute`, `eda-polish`, `eda-review`.
161
+ - Передавать `main` скилам вне allowlist `eda-plan-execute`, `eda-polish`, `eda-review`.
162
162
  - Запускать отключённый или отсутствующий в цепочке шаг, кроме явно настроенного `on_failure.skill`.
163
163
  - Терять `args`, порядок или пути к артефактам при передаче.
164
164
  - Считать автоматические тесты заменой включённого `eda-manual-test`.
@@ -16,14 +16,14 @@ plan-execute:
16
16
  mode: auto
17
17
  ```
18
18
 
19
- `plan-execute.mode` принимает `subagents`, `single` или `auto`; при отсутствующем или невалидном значении используй `auto`. Файл настроек не изменяй.
19
+ `plan-execute.mode` принимает `subagents`, `main` или `auto`; при отсутствующем или невалидном значении используй `auto`. Файл настроек не изменяй.
20
20
 
21
21
  ## Вход из сообщения пользователя
22
22
 
23
23
  Текст рядом с вызовом — главный вход. Разбери тему, путь к файлу, ограничения, прямые указания и режим:
24
24
 
25
25
  - `subagents`, `субагенты`, `по фазам`, `изолированно` → `$MODE=subagents`;
26
- - `single`, `один`, `одним контекстом`, `без субагентов`, `сам` → `$MODE=single`;
26
+ - `main`, `один`, `одним контекстом`, `без субагентов`, `сам` → `$MODE=main`;
27
27
  - `auto`, `авто`, `автоматически` → `$MODE=auto`;
28
28
  - без явного режима → `$MODE=plan-execute.mode` из валидных настроек, иначе `$MODE=auto`.
29
29
 
@@ -36,22 +36,22 @@ plan-execute:
36
36
  | Режим | Кто выполняет фазу | Кто проверяет фазу и финал |
37
37
  |---|---|---|
38
38
  | `subagents` | отдельный изолированный субагент на каждую фазу | отдельные субагенты-проверяющие |
39
- | `single` | основной агент подряд в одном контексте | сам основной агент |
40
- | `auto` | решает по плану до старта: `single` или `subagents` | по выбранному режиму |
39
+ | `main` | основной агент подряд в одном контексте | сам основной агент |
40
+ | `auto` | решает по плану до старта: `main` или `subagents` | по выбранному режиму |
41
41
 
42
- `auto` выбирай `single`, только когда весь план реально помещается в один контекст: немного фаз, небольшой объём задач и файлов, одна область кода, нет тяжёлых по контексту фаз вроде крупного рефакторинга, миграции данных или множества карточек. Иначе — `subagents`; при сомнении тоже `subagents`. Решение и его причину запиши в журнал.
42
+ `auto` выбирай `main`, только когда весь план реально помещается в один контекст: немного фаз, небольшой объём задач и файлов, одна область кода, нет тяжёлых по контексту фаз вроде крупного рефакторинга, миграции данных или множества карточек. Иначе — `subagents`; при сомнении тоже `subagents`. Решение и его причину запиши в журнал.
43
43
 
44
- В `single` следи за собственным контекстом. Если план оказался тяжелее оценки или контекст заканчивается, переключи оставшиеся фазы на `subagents`, запиши переключение в журнал и продолжи с текущей фазы.
44
+ В `main` следи за собственным контекстом. Если план оказался тяжелее оценки или контекст заканчивается, переключи оставшиеся фазы на `subagents`, запиши переключение в журнал и продолжи с текущей фазы.
45
45
 
46
46
  ## Главные правила
47
47
 
48
- 1. **В `subagents` основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты. В `single` основной агент выполняет фазы и проверки сам и остаётся единственным исполнителем.
48
+ 1. **В `subagents` основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты. В `main` основной агент выполняет фазы и проверки сам и остаётся единственным исполнителем.
49
49
  2. **Фазы выполняй строго последовательно.** Не начинай следующую, пока текущая не выполнена и её проверка не прошла.
50
50
  3. **В `subagents` одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Идентификатор исполнителя сохраняй и продолжай его же для вопросов и исправлений этой фазы.
51
51
  4. **Рамку читает тот, кто выполняет фазу.** Он целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, он читает эту карточку целиком перед соответствующим изменением. Нерелевантные карточки не загружает.
52
- 5. **Исполнитель не додумывает план.** Если в фазе не хватает решения, это вопрос пользователю или возврат в `eda-plan`, но не импровизация в коде. В `subagents` исполнитель возвращает `needs_input`, в `single` основной агент останавливается и спрашивает.
52
+ 5. **Исполнитель не додумывает план.** Если в фазе не хватает решения, это вопрос пользователю или возврат в `eda-plan`, но не импровизация в коде. В `subagents` исполнитель возвращает `needs_input`, в `main` основной агент останавливается и спрашивает.
53
53
  6. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, `rules.md`, `arch.md` или reference-карточке, останови фазу и через `AskUserQuestion` спроси: изменить план через `eda-plan` или сначала пересогласовать правило через `eda-business`.
54
- 7. **Отмечай только подтверждённое.** Фазу закрывай только после выполнения и прошедшей проверки: в `subagents` это `completed` от исполнителя и отдельный `passed` от проверяющего, в `single` — пройденные критерии и команды проверки фазы с сохранённым выводом. При последующем опровержении верни отметку в незавершённое состояние.
54
+ 7. **Отмечай только подтверждённое.** Фазу закрывай только после выполнения и прошедшей проверки: в `subagents` это `completed` от исполнителя и отдельный `passed` от проверяющего, в `main` — пройденные критерии и команды проверки фазы с сохранённым выводом. При последующем опровержении верни отметку в незавершённое состояние.
55
55
  8. **Проверки нельзя подавлять.** Не отключай и не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, не добавляй игноры и не ослабляй команды и правила. Сначала исправляется причина падения, затем проверка повторяется.
56
56
  9. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
57
57
 
@@ -73,7 +73,7 @@ plan-execute:
73
73
 
74
74
  Через `AskUserQuestion` предложи текущую ветку, новую ветку от `main`, новую ветку от текущей или worktree от `main`. Если вызывающий оркестратор уже передал подтверждённый выбор, не спрашивай повторно.
75
75
 
76
- В `subagents` git-команды сам не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения; в `single` подготовь окружение сам. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. После успешного создания worktree остановись и дай команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`.
76
+ В `subagents` git-команды сам не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения; в `main` подготовь окружение сам. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. После успешного создания worktree остановись и дай команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`.
77
77
 
78
78
  ### 3. Прочитать план и проверить фазы
79
79
 
@@ -83,7 +83,7 @@ plan-execute:
83
83
 
84
84
  ### 4. Определить режим и инициализировать прогресс
85
85
 
86
- Если `$MODE=auto`, сравни разобранные фазы с критериями из «Режимы выполнения» и зафиксируй итоговый режим `single` или `subagents` до первой фазы. Дальше действуй по зафиксированному режиму.
86
+ Если `$MODE=auto`, сравни разобранные фазы с критериями из «Режимы выполнения» и зафиксируй итоговый режим `main` или `subagents` до первой фазы. Дальше действуй по зафиксированному режиму.
87
87
 
88
88
  Создай `$EXECUTION_FILE` по пути `docs/artifacts/executions/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. В `$PLAN_FILE` добавь или актуализируй один раздел `## Прогресс выполнения` со ссылкой на журнал и списком фаз.
89
89
 
@@ -92,7 +92,7 @@ plan-execute:
92
92
  plan: <путь>
93
93
  started: <YYYY-MM-DD HH:MM>
94
94
  status: in_progress
95
- mode: subagents | single
95
+ mode: subagents | main
96
96
  current_phase: <номер>
97
97
  ---
98
98
 
@@ -111,11 +111,11 @@ current_phase: <номер>
111
111
  ## Финальная проверка
112
112
  ```
113
113
 
114
- Журнал и отметки прогресса в плане ведёт только основной агент. В `single` записывай выбор режима с причиной, а в колонке «Исполнитель» — `основной агент`; в `subagents` явно запрети субагентам менять `$PLAN_FILE` и `$EXECUTION_FILE`.
114
+ Журнал и отметки прогресса в плане ведёт только основной агент. В `main` записывай выбор режима с причиной, а в колонке «Исполнитель» — `основной агент`; в `subagents` явно запрети субагентам менять `$PLAN_FILE` и `$EXECUTION_FILE`.
115
115
 
116
116
  ### 5. Запускать изолированных субагентов
117
117
 
118
- Весь этап — только для `subagents`. В `single` пропусти его и выполняй фазы сам; переключился на `subagents` — вернись к нему.
118
+ Весь этап — только для `subagents`. В `main` пропусти его и выполняй фазы сам; переключился на `subagents` — вернись к нему.
119
119
 
120
120
  В Codex используй `spawn_agent` с `fork_turns: "none"`, в Claude Code — новый `Agent` с самодостаточным сообщением. Если изоляция или субагенты недоступны, остановись: `blocked: недоступно изолированное выполнение`. Работу основным агентом не делай и CLI-fallback не добавляй.
121
121
 
@@ -165,7 +165,7 @@ questions: [<вопросы или пусто>]
165
165
  5. `blocked` — останови выполнение. Внешний блокер или изменение scope выноси вопросом; сам его не устраняй.
166
166
  6. После `completed` запусти независимую проверку фазы.
167
167
 
168
- В `single` перед первой фазой один раз прочитай план целиком, `docs/rules.md` и `docs/arch.md`, а карточки выбирай по правилу 4 под каждую фазу. Затем для каждой фазы по порядку выполни работу фазы, запиши в журнал сделанное, изменённые файлы и результаты проверок и переходи к проверке фазы. Не хватает решения — спроси пользователя; конфликт с правилами или карточками — останови фазу как `blocked`; та же причина падения дважды подряд без содержательного изменения — остановись: `blocked: выполнение не сходится`.
168
+ В `main` перед первой фазой один раз прочитай план целиком, `docs/rules.md` и `docs/arch.md`, а карточки выбирай по правилу 4 под каждую фазу. Затем для каждой фазы по порядку выполни работу фазы, запиши в журнал сделанное, изменённые файлы и результаты проверок и переходи к проверке фазы. Не хватает решения — спроси пользователя; конфликт с правилами или карточками — останови фазу как `blocked`; та же причина падения дважды подряд без содержательного изменения — остановись: `blocked: выполнение не сходится`.
169
169
 
170
170
  ### 7. Проверять каждую фазу
171
171
 
@@ -185,13 +185,13 @@ references_read: [<пути или пусто>]
185
185
 
186
186
  При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует.
187
187
 
188
- В `single` сам выполни все проверки фазы и сверь результат с критериями плана, а не с собственным впечатлением. Падение исправляй и повторяй проверку заново целиком.
188
+ В `main` сам выполни все проверки фазы и сверь результат с критериями плана, а не с собственным впечатлением. Падение исправляй и повторяй проверку заново целиком.
189
189
 
190
190
  При `passed` отметь фазу завершённой и только тогда переходи к следующей.
191
191
 
192
192
  ### 8. Финальная проверка
193
193
 
194
- После всех фаз прогони полный набор тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. В `subagents` это делает отдельный новый субагент: он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения. В `single` тот же полный набор запускает основной агент.
194
+ После всех фаз прогони полный набор тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. В `subagents` это делает отдельный новый субагент: он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения. В `main` тот же полный набор запускает основной агент.
195
195
 
196
196
  Падение из-за сделанных изменений сопоставь с фазами и исправь по порядку плана: в `subagents` передай каждую группу исполнителю соответствующей фазы. Затем повтори всю финальную проверку целиком. Чужую или несвязанную поломку зафиксируй и вынеси вопросом, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
197
197
 
@@ -205,7 +205,7 @@ references_read: [<пути или пусто>]
205
205
 
206
206
  - В `subagents` самому менять код, тесты, миграции, конфиги и зависимости или самому запускать проверки проекта.
207
207
  - В `subagents` дробить фазу между исполнителями, давать одному исполнителю несколько фаз, давать субагентам историю диалога или разрешать менять план и журнал.
208
- - Выполнять большой или тяжёлый по контексту план в `single`, если режим не задан явно.
208
+ - Выполнять большой или тяжёлый по контексту план в `main`, если режим не задан явно.
209
209
  - Запускать следующую фазу до успешной проверки текущей.
210
210
  - Додумывать недостающее решение вместо вопроса.
211
211
  - Подавлять ошибки проверок, ослаблять правила или менять команды ради зелёного результата.
@@ -5,20 +5,18 @@ description: 'Итеративно ревьюит и исправляет изм
5
5
 
6
6
  # Скил: Полировка изменений (eda-polish)
7
7
 
8
- Оркестрируй цикл `eda-review` → `eda-fix-by-review` → повторное `eda-review`. Основной агент только управляет итерациями, читает сохранённые артефакты и сообщает результат. В начале каждой итерации запускай полное `eda-review` целевого изменения.
8
+ Оркестрируй цикл `eda-review` → `eda-fix-by-review` → повторное `eda-review`. В `subagents` основной агент только управляет итерациями; в `main` он сам последовательно выполняет контракты review и fix в текущем контексте. В начале каждой итерации выполняй полное `eda-review` целевого изменения.
9
9
 
10
10
  ## Вход из сообщения пользователя
11
11
 
12
- Текст рядом с вызовом скилла в текущем сообщении — главный вход. Разбери target, путь к плану, PR/ветку/diff/файл, лимит итераций и ограничения. Передавай в каждый `eda-review` разовый режим `subagents` или `single`, overrides проверок и моделей из запроса пользователя.
12
+ Текст рядом с вызовом скилла в текущем сообщении — главный вход. Разбери target, путь к плану, PR/ветку/diff/файл, лимит итераций, ограничения и режим `subagents` или `main`. Явный режим важнее `review.execution` из полного `docs/settings.yaml` версии 3; при отсутствии валидного значения используй `subagents`. Передавай выбранный режим и overrides проверок и моделей в каждый `eda-review`.
13
13
 
14
14
  Лимит по умолчанию — `5` итераций; пользователь может задать `limit N` положительным целым числом. Порога у цикла нет: устаревшие `threshold N`, `до 90` и `цель 90` не применяй и скажи об этом в финале.
15
15
 
16
16
  ## Правила
17
17
 
18
- 1. Каждый вызов `eda-review` и `eda-fix-by-review` запускай отдельным изолированным субагентом. Основной агент не делает их работу.
19
- - В Claude Code вызывай установленный `eda-review` именно через `Skill`: его отрендеренная копия содержит `context: fork` и сама создаёт изолированный review-runner. Не читай инструкцию `eda-review` в текущий контекст, не воспроизводи её процедуру самостоятельно и не запускай `eda-review-*` агентов напрямую из полировщика.
20
- - В Codex каждый вызов `eda-review` и `eda-fix-by-review` запускай через `spawn_agent` с `fork_turns: "none"`. Не оставляй `fork_turns` по умолчанию и не используй `"all"`: субагент получает только самодостаточное task-сообщение и явно указанные пути к артефактам.
21
- 2. Если нативные субагенты недоступны, остановись; не заменяй шаги CLI-процессами.
18
+ 1. В `main` основной агент сам выполняет установленные контракты `eda-review` и `eda-fix-by-review` в текущем контексте. Не запускай для них верхнеуровневых или leaf-субагентов и не заменяй их отдельным CLI.
19
+ 2. В `subagents` каждый вызов `eda-review` и `eda-fix-by-review` запускай отдельным изолированным субагентом. В Claude Code используй `Agent`, в Codex — `spawn_agent` с `fork_turns: "none"`; не оставляй `fork_turns` по умолчанию и не используй `"all"`. Если нативные субагенты недоступны, остановись без CLI-fallback.
22
20
  3. Успех требует одновременно: полный review со статусом `reviewed` или `reviewed-with-warnings`, `result: clean` и ноль находок. Score — только справочное число, условием завершения он не является.
23
21
  4. Любая находка обязательно исправляется. Отклонить находку может только `eda-fix-by-review` и только при её фактической неверности.
24
22
  5. Не коммить и не отправляй ревью.
@@ -26,7 +24,7 @@ description: 'Итеративно ревьюит и исправляет изм
26
24
 
27
25
  ## Технические остановки субагентов
28
26
 
29
- Техническую ошибку инструмента субагентов не смешивай со статусами `failed` и `blocked` содержательного контракта. Сохрани полный исходный текст ошибки и обработай её по причине:
27
+ В `subagents` техническую ошибку инструмента субагентов не смешивай со статусами `failed` и `blocked` содержательного контракта. Сохрани полный исходный текст ошибки и обработай её по причине:
30
28
 
31
29
  - лимит параллельности или отсутствие свободного слота — дождись уже запущенного этим workflow агента, при необходимости закрой завершённые потоки и повтори тот же запуск; если управляемых активных агентов нет, заверши `blocked: заняты слоты субагентов`;
32
30
  - лимит глубины вложения — не повторяй запуск и не выполняй этап сам; заверши `blocked: достигнут лимит глубины субагентов`, указав наблюдаемую и требуемую глубину;
@@ -39,20 +37,20 @@ description: 'Итеративно ревьюит и исправляет изм
39
37
 
40
38
  ## Вопросы
41
39
 
42
- Если target неоднозначен, передай управление первому `eda-review`: он задаст один конкретный вопрос по правилам своей среды. Если шаг вернул `blocked`, основной агент повторяет только этот вопрос и после ответа продолжает тот же шаг.
40
+ Если target неоднозначен, первый `eda-review` задаёт один конкретный вопрос по правилам своей среды. Если шаг вернул `blocked`, основной агент повторяет только этот вопрос и после ответа продолжает тот же шаг.
43
41
 
44
42
  ## Цикл
45
43
 
46
- Сформируй `$TARGET_CONTEXT`, `$LIMIT` и журнал: номер итерации, review file, result, число открытых находок, список находок, fix report и причина продолжения.
44
+ Сформируй `$TARGET_CONTEXT`, `$EXECUTION`, `$LIMIT` и журнал: номер итерации, review file, result, число открытых находок, список находок, fix report и причина продолжения.
47
45
 
48
46
  Для каждой итерации:
49
47
 
50
- 1. Запусти отдельного субагента:
48
+ 1. В `main` выполни `eda-review` сам; в `subagents` запусти отдельного субагента:
51
49
 
52
50
  ```text
53
51
  Используй eda-review для <TARGET_CONTEXT>.
54
52
  План: <PLAN_FILE | none>.
55
- Режим исполнения review: <single | subagents | из настроек>.
53
+ Режим исполнения review: <main | subagents | из настроек>.
56
54
  Overrides проверок и моделей: <из запроса | none>.
57
55
  Ранее отклонённые находки: <предыдущий review file и fix report | none>.
58
56
  Верни путь к файлу, status, result, score, находки и coverage.
@@ -60,7 +58,7 @@ description: 'Итеративно ревьюит и исправляет изм
60
58
 
61
59
  2. Если review остановился из-за обязательного агента, останови цикл. `reviewed-with-warnings` из-за недоступных previous reviews разрешён.
62
60
  3. Если `result: clean` и находок нет, заверши успешно. Если `result` противоречит числу находок, считай файл невалидным и остановись.
63
- 4. Если находки есть, запусти отдельного субагента:
61
+ 4. Если находки есть, в `main` выполни `eda-fix-by-review` сам; в `subagents` запусти отдельного субагента:
64
62
 
65
63
  ```text
66
64
  Используй eda-fix-by-review для <REVIEW_FILE>.
@@ -75,11 +73,11 @@ description: 'Итеративно ревьюит и исправляет изм
75
73
 
76
74
  ## Финал
77
75
 
78
- Сообщи результат, итоговый result и score, число итераций, счётчик находок по кругам («было 12, осталось 3»), последний review file и fix report, оставшиеся находки и coverage warnings. Укажи, что изменения не закоммичены. При успехе предложи `eda-commit`; при неуспехе назови конкретный блокер.
76
+ Сообщи `$EXECUTION`, результат, итоговый result и score, число итераций, счётчик находок по кругам («было 12, осталось 3»), последний review file и fix report, оставшиеся находки и coverage warnings. Укажи, что изменения не закоммичены. При успехе предложи `eda-commit`; при неуспехе назови конкретный блокер.
79
77
 
80
78
  ## Чего НЕ делать
81
79
 
82
- - Делать ревью или исправления основным агентом.
80
+ - В `subagents` делать ревью или исправления основным агентом.
83
81
  - Запускать отдельный этап проверки готового ревью.
84
82
  - Считать цикл успешным при наличии находок или завершать его по score.
85
83
  - Выбирать или отклонять находки основным агентом: отклонение — работа `eda-fix-by-review`.
@@ -5,15 +5,15 @@ description: 'Проводит полное read-only ревью diff, ветк
5
5
 
6
6
  # Скил: Ревьюер (eda-review)
7
7
 
8
- Проводи одно полное read-only ревью в выбранном режиме исполнения. В `subagents` оркестрируй установленных `eda-review-*` агентов и сам не выполняй их специализированные роли. В `single` выполни те же выбранные проверки самостоятельно по общей матрице, не запуская leaf-субагентов. В обоих режимах сохрани один итоговый отчёт с одинаковыми требованиями к доказательствам и результату.
8
+ Проводи одно полное read-only ревью в выбранном режиме исполнения. В `subagents` оркестрируй установленных `eda-review-*` агентов и сам не выполняй их специализированные роли. В `main` выполни те же выбранные проверки самостоятельно по общей матрице, не запуская leaf-субагентов. В обоих режимах сохрани один итоговый отчёт с одинаковыми требованиями к доказательствам и результату.
9
9
 
10
10
  ## Вход из сообщения пользователя
11
11
 
12
- Текст рядом с вызовом скилла в текущем сообщении — главный вход. Сначала разбери target, план, ссылку, ограничения, режим `subagents` или `single`, отключённые или принудительно включённые проверки и разовые модели.
12
+ Текст рядом с вызовом скилла в текущем сообщении — главный вход. Сначала разбери target, план, ссылку, ограничения, режим `subagents` или `main`, отключённые или принудительно включённые проверки и разовые модели.
13
13
 
14
14
  Если входа достаточно, продолжай без вопроса. Без аргументов ревьюй незакоммиченный `git diff HEAD`. Ссылка на PR/MR задаёт target однозначно. Если пользователь дал только корень удалённого репозитория, обязательно попроси указать PR/MR, ветку, коммит или файлы; весь репозиторий и последний PR автоматически не выбирай.
15
15
 
16
- Явное слово `subagents` или `single` задаёт режим только для текущего запуска и важнее `docs/settings.yaml`. Разовые указания вида «без performance», «без business», «включи database», «включи business», «architecture на opus» или «tests на gpt-5.6-sol» также важнее настроек.
16
+ Явное слово `subagents` или `main` задаёт режим только для текущего запуска и важнее `docs/settings.yaml`. Разовые указания вида «без performance», «без business», «включи database», «включи business», «architecture на opus» или «tests на gpt-5.6-sol» также важнее настроек.
17
17
 
18
18
  Если во входе даны ранее отклонённые находки или путь к предыдущему ревью, прочитай их раздел «Отклонено» и не принимай эти находки повторно без нового доказательства.
19
19
 
@@ -24,7 +24,7 @@ description: 'Проводит полное read-only ревью diff, ветк
24
24
  `review.execution` принимает:
25
25
 
26
26
  - `subagents` — каждая выбранная проверка выполняется отдельным установленным агентом;
27
- - `single` — все выбранные проверки выполняет текущий агент в одном контексте.
27
+ - `main` — все выбранные проверки выполняет текущий агент в одном контексте.
28
28
 
29
29
  Default — `subagents`. При неизвестном или отсутствующем значении используй default и добавь предупреждение. Сначала выбери `$EXECUTION` по явному режиму из текущего сообщения, затем по настройке, иначе по default.
30
30
 
@@ -36,7 +36,7 @@ Default — `subagents`. При неизвестном или отсутству
36
36
 
37
37
  Допустимые модели по умолчанию для `subagents`: Claude Code — `haiku`, `sonnet`, `opus`; Codex — `gpt-5.6-luna`, `gpt-5.6-terra`, `gpt-5.6-sol`. Неизвестное или отсутствующее значение замени default-значением конкретного агента и добавь предупреждение в покрытие.
38
38
 
39
- В `single` все проверки выполняются текущей моделью агента. Настройки и разовые overrides моделей отдельных проверок не применяются; добавь об этом один warning в покрытие, только если пользователь явно передал такой override. Для completed-проверок укажи фактическую текущую модель, если хост её сообщает, иначе `current`.
39
+ В `main` все проверки выполняются текущей моделью агента. Настройки и разовые overrides моделей отдельных проверок не применяются; добавь об этом один warning в покрытие, только если пользователь явно передал такой override. Для completed-проверок укажи фактическую текущую модель, если хост её сообщает, иначе `current`.
40
40
 
41
41
  Если `version: 3` существует, но раздела `review.agents` нет, используй defaults ниже и добавь предупреждение. Устаревшие поля `review.strict`, `review.include_code_quality` и раздел `review-check` не применяй. Существующий файл настроек не переписывай.
42
42
 
@@ -69,7 +69,7 @@ Default — `subagents`. При неизвестном или отсутству
69
69
  ## Подготовить контекст
70
70
 
71
71
  1. Определи `$TARGET`: явный файл, папка, URL PR/MR, ветка, коммит, указанный diff или `git diff HEAD` без аргументов. Для GitHub/GitLab URL получи metadata и diff read-only командами `gh`/`glab`; для другого сервиса используй доступное read-only средство. Если основной diff недоступен, остановись: warning разрешён только для недоступных прошлых обсуждений, а не для самого target.
72
- 2. Прочитай `AGENTS.md`, `CLAUDE.md`, `docs/rules.md`, `docs/arch.md` и сам target настолько, чтобы выбрать проверки и сформировать точный контекст. В `subagents` на этом шаге не делай собственное code review; в `single` эти документы и target станут общей основой всех проходов и не должны загружаться заново для каждой проверки.
72
+ 2. Прочитай `AGENTS.md`, `CLAUDE.md`, `docs/rules.md`, `docs/arch.md` и сам target настолько, чтобы выбрать проверки и сформировать точный контекст. В `subagents` на этом шаге не делай собственное code review; в `main` эти документы и target станут общей основой всех проходов и не должны загружаться заново для каждой проверки.
73
73
  3. Определи `$PLAN_FILE`. Если его нет, используй `none` и не пытайся восстановить последний план наугад.
74
74
  4. Определи `$REFERENCE_FILES`: если план содержит `sources.references`, используй их; иначе через `docs/references.md` выбери только применимые карточки для компонентов target. Если карточек нет, используй `none`.
75
75
  5. Определи `$BUSINESS_FILES`: сначала установи исходную задачу и фактически затронутое пользовательское или доменное поведение по текущему сообщению, плану и target. Если план содержит `sources.business`, используй только относящиеся к этому поведению пути; иначе прочитай `docs/business.md` и по описаниям выбери только применимые карточки. Если индекс отсутствует, подходящих карточек нет или изменения не затрагивают бизнес-поведение, используй `none`. Не загружай все карточки только потому, что индекс существует.
@@ -98,11 +98,11 @@ Default — `subagents`. При неизвестном или отсутству
98
98
 
99
99
  ## Выполнить проверки
100
100
 
101
- ### Режим single
101
+ ### Режим main
102
102
 
103
- Всю работу выполни сам в текущем контексте. Не запускай `eda-review-*` агентов, другие субагенты или отдельный CLI. Если `eda-review` вызван из `eda-polish`, `eda-orhestra` или другого внешнего workflow в одном изолированном субагенте, это не нарушает `single`: запрет относится к leaf-субагентам отдельных проверок внутри текущего review-runner.
103
+ Всю работу выполни сам как основной агент текущего workflow. Не запускай `eda-review-*` агентов, другие субагенты или отдельный CLI. Вызывающий workflow не должен оборачивать `eda-review` в отдельного субагента, если передал режим `main`.
104
104
 
105
- Прочитай [references/review-matrix.md](references/review-matrix.md) целиком. Это обязательный контракт всех специализированных проходов в `single`; не читай packaged prompts из `agents/eda-review-*` и не пытайся вызвать их как скилы.
105
+ Прочитай [references/review-matrix.md](references/review-matrix.md) целиком. Это обязательный контракт всех специализированных проходов в `main`; не читай packaged prompts из `agents/eda-review-*` и не пытайся вызвать их как скилы.
106
106
 
107
107
  1. Прочитай target и общий код вокруг изменений один раз. Применимые инструкции, `$PLAN_FILE`, `$REFERENCE_FILES` и `$BUSINESS_FILES` также загрузи один раз и только когда соответствующая проверка выбрана.
108
108
  2. Последовательно выполни отдельный проход по каждой выбранной проверке из матрицы. Не смешивай области и не пропускай проход из-за того, что соседняя проверка уже изучала тот же код.
@@ -119,7 +119,7 @@ Default — `subagents`. При неизвестном или отсутству
119
119
  - `previous_reviews` → `eda-review-previous-reviews`;
120
120
  - остальные → `eda-review-<check>`.
121
121
 
122
- В Claude Code запускай установленный custom agent через `Agent` tool. Установленная Claude-копия самого `eda-review` выполняется с `context: fork`, поэтому review-оркестрация не должна оставаться в контексте вызвавшего `eda-polish` или другого скила. В Codex каждого установленного custom agent запускай через `spawn_agent` с `fork_turns: "none"`; не оставляй `fork_turns` по умолчанию и не передавай историю review-runner. Передай выбранную модель как runtime override. Если хост не умеет применить выбранную модель или нативные субагенты недоступны, остановись: не выполняй роли главным агентом и не создавай отдельные CLI-процессы.
122
+ В Claude Code запускай установленный custom agent через `Agent` tool. В Codex каждого установленного custom agent запускай через `spawn_agent` с `fork_turns: "none"`; не оставляй `fork_turns` по умолчанию и не передавай историю основного агента. Передай выбранную модель как runtime override. Если хост не умеет применить выбранную модель или нативные субагенты недоступны, остановись: не выполняй роли главным агентом и не создавай отдельные CLI-процессы.
123
123
 
124
124
  ### Технические остановки субагентов
125
125
 
@@ -166,7 +166,7 @@ REVIEW_CONTEXT: <краткий общий контекст>
166
166
 
167
167
  ## Собрать итог
168
168
 
169
- В `subagents` главный агент выполняет только редакторскую работу над результатами. В `single` эти же правила применяются к кандидатам, собранным в специализированных проходах:
169
+ В `subagents` главный агент выполняет только редакторскую работу над результатами. В `main` эти же правила применяются к кандидатам, собранным в специализированных проходах:
170
170
 
171
171
  1. Проверь находки по указанным evidence и отклони неподтверждённые.
172
172
  2. Объедини дубли разных агентов в один пункт, сохранив все полезные доказательства.
@@ -188,7 +188,7 @@ REVIEW_CONTEXT: <краткий общий контекст>
188
188
  ---
189
189
  target: <что проверено>
190
190
  plan: <docs/artifacts/plans/... | none>
191
- execution: <subagents | single>
191
+ execution: <subagents | main>
192
192
  score: <0..100>
193
193
  status: <reviewed | reviewed-with-warnings>
194
194
  result: <clean | changes-required>
@@ -208,7 +208,7 @@ checks:
208
208
 
209
209
  ## Покрытие
210
210
 
211
- - **Execution:** <subagents | single>
211
+ - **Execution:** <subagents | main>
212
212
  - **Completed:** <проверки и модели>
213
213
  - **Skipped:** <проверки и причины>
214
214
  - **Warnings:** <предупреждения или «нет»>
@@ -255,8 +255,8 @@ checks:
255
255
 
256
256
  - Править код, настройки проекта или удалённые обсуждения.
257
257
  - В `subagents` выполнять специализированную роль главным агентом или подменять отсутствующих субагентов одним общим ревью.
258
- - В `single` запускать leaf-субагентов, другой CLI или читать packaged prompts вместо `references/review-matrix.md`.
259
- - Записывать итоговый файл после повторного сбоя обязательного агента в `subagents` или незавершённой обязательной проверки в `single`.
258
+ - В `main` запускать leaf-субагентов, другой CLI или читать packaged prompts вместо `references/review-matrix.md`.
259
+ - Записывать итоговый файл после повторного сбоя обязательного агента в `subagents` или незавершённой обязательной проверки в `main`.
260
260
  - Выбирать последний PR или весь репозиторий по ссылке на корень.
261
261
  - Загружать все карточки references без отбора.
262
262
  - Усреднять оценки агентов или считать score по фиксированной формуле.
@@ -1,6 +1,6 @@
1
- # Матрица проверок single-режима
1
+ # Матрица проверок main-режима
2
2
 
3
- Этот файл используется только при `review.execution: single`. Выполни отдельный проход по каждой выбранной проверке, но читай общий target и проектные инструкции один раз. Не смешивай области: одна проблема должна остаться в наиболее точной проверке.
3
+ Этот файл используется только при `review.execution: main`. Выполни отдельный проход по каждой выбранной проверке, но читай общий target и проектные инструкции один раз. Не смешивай области: одна проблема должна остаться в наиболее точной проверке.
4
4
 
5
5
  Для любой находки обязательны точное место, достижимый на текущем коде сценарий, практический ущерб, доказательство, `repro`, способ исправления и нужный тест. Не принимай вкусовой рефакторинг, косметику, спекулятивное усиление, необязательный тест или проблему, которая появится только после гипотетического будущего изменения. Не перечисляй удачные решения и выполненные пункты.
6
6
 
@@ -1,7 +0,0 @@
1
- {
2
- "schemaVersion": 1,
3
- "claude": {
4
- "context": "fork",
5
- "agent": "general-purpose"
6
- }
7
- }