@gian-tiaga/eda 3.6.0 → 3.8.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 +3 -2
- package/README.md +22 -21
- package/lib/install.js +44 -23
- package/package.json +1 -1
- package/skills/eda-just-do-it/SKILL.md +91 -0
- package/skills/eda-orhestra/SKILL.md +6 -6
- package/skills/eda-plan-execute/SKILL.md +18 -18
- package/skills/eda-polish/SKILL.md +12 -14
- package/skills/eda-review/SKILL.md +15 -15
- package/skills/eda-review/references/review-matrix.md +2 -2
- package/skills/eda-review/skill.json +0 -7
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
|
-
-
|
|
91
|
-
- **У `eda-
|
|
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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Поточная разработка с AI-агентами — на русском языке.
|
|
4
4
|
> Пакет готовых скилов и специализированных агентов для **Claude Code** и **Codex CLI**, которые ведут тебя через весь цикл: от исследования до коммита.
|
|
5
5
|
|
|
6
|
-
`eda` — это двадцать
|
|
6
|
+
`eda` — это двадцать три скила и пакетные агенты для повторяемых ролей. Скил отвечает за пользовательский workflow и оркестрацию, агент — за изолированную работу с закреплённой моделью и ограничениями. Вместо того чтобы каждый раз объяснять модели, как делать ревью или как исполнять план, ты говоришь одно слово — и она следует чёткой инструкции на русском, со всеми правилами, проверками и артефактами в нужных папках.
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -41,7 +41,7 @@ eda update-all ~/Code
|
|
|
41
41
|
|
|
42
42
|
| Скил | Что делает | Куда складывает |
|
|
43
43
|
|---|---|---|
|
|
44
|
-
| `eda-orhestra` | Выполняет настраиваемую цепочку `eda-*`-скилов. В `subagents` каждый этап получает чистый контекст, в `
|
|
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,13 @@ 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`, `
|
|
54
|
+
| `eda-plan-execute` | Управляет выполнением плана по фазам в режиме `subagents`, `main` или `auto`. В `subagents` каждую фазу целиком выполняет отдельный изолированный субагент: он читает план, правила, архитектуру и только business/reference-карточки затронутого поведения и компонентов. Фазы проходят строго последовательно и принимаются независимыми проверяющими. В `main` весь план по тем же правилам выполняет и проверяет основной агент в одном контексте, а `auto` выбирает режим по плану. Отметки подтверждённых задач и журнал ведёт основной агент | `docs/artifacts/executions/` |
|
|
55
|
+
| `eda-just-do-it` | Сразу выполняет задачу из текста рядом с вызовом: определяет scope, загружает только необходимые проектные инструкции, business/reference-карточки, код и тесты, вносит нужные изменения и проверяет результат. Не подменяет выполнение планом и не делает git- или внешние действия без прямого указания | `docs/artifacts/just-do-it/` |
|
|
55
56
|
| `eda-fix` | Делает обычные фиксы по короткому контексту, баг-репорту или плану. Перед правками читает правила, архитектуру и только применимые карточки, добавляет нужные тесты, прогоняет проверки и сохраняет историю правок | `docs/artifacts/fixes/` |
|
|
56
57
|
| `eda-review` | Оркестрирует отдельные read-only проверки корректности, архитектуры, правил, references, business-правил, плана, качества, тестов, безопасности, производительности, frontend/UI/UX, API, БД, документации и предыдущих ревью. Сохраняет только доказанные дефекты, которые обязательно исправить; косметические и спекулятивные предложения отбрасывает. Любая находка даёт `changes-required`, а чистое ревью — `clean` и 100/100. Без аргументов ревьюит `git diff HEAD` | `docs/artifacts/reviews/` |
|
|
57
58
|
| `eda-fix-by-review` | Применяет все находки из ревью с учётом правил, архитектуры и применимых карточек. Спрашивает только при неоднозначности, конфликте, расширении scope или рискованном действии. В конце ссылается на отчёт прямо в файле ревью | `docs/artifacts/review-fixes/` |
|
|
58
59
|
| `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 итераций.
|
|
60
|
+
| `eda-polish` | Оркестрирует доводку изменений: запускает полное `eda-review`, затем `eda-fix-by-review` и повторяет цикл до `clean` и отсутствия находок либо до лимита 5 итераций. В `main` оба контракта выполняет основной агент без субагентов, в `subagents` каждый шаг получает отдельный изолированный контекст. Все находки исправляются, score остаётся справочным. Не коммитит | `docs/artifacts/reviews/`, `docs/artifacts/review-fixes/` |
|
|
60
61
|
| `eda-send-review` | На `sonnet` / `gpt-5.6-terra` отправляет ревью на GitHub PR через `gh` всегда в едином формате: общий комментарий-сводка плюс комментарии к строкам кода. Без явно указанного типа использует `comment`; `approve` и `request-changes` берёт только из контекста текущего вызова. По настройке может скрыть предыдущие сводки eda-send-review и зарезолвить их inline-треды. По умолчанию шлёт все пункты. Claude-модель закрепляется при установке; Codex-модель хранится как рекомендуемый будущий override | (комментарий в PR) |
|
|
61
62
|
| `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
63
|
| `eda-worktree` | На `haiku` / `gpt-5.6-luna` создаёт через пакетного агента git worktree рядом с основным проектом в папке `{name}-work-{n}` и одноимённую ветку. Базу берёт из аргумента или спрашивает | соседняя папка `{name}-work-{n}` |
|
|
@@ -114,7 +115,7 @@ eda update-all ~/Code
|
|
|
114
115
|
| `eda-review-documentation` | `haiku`, read-only | `gpt-5.6-luna`, read-only | Проверяет обязательные обновления документации |
|
|
115
116
|
| `eda-review-previous-reviews` | `haiku`, read-only | `gpt-5.6-luna`, read-only | Перепроверяет незакрытые удалённые замечания |
|
|
116
117
|
|
|
117
|
-
Агенты устанавливаются отдельно от скилов. Модели review-агентов в таблице — сбалансированные defaults; `docs/settings.yaml` или прямое указание пользователя может заменить модель конкретной проверки на текущий запуск в режиме `subagents`. `eda-aim` последовательно разделяет согласование, выполнение и независимую проверку, а при необходимости использует установленные скилы только в отдельных изолированных субагентах; основной агент передаёт вопросы и структурированные результаты. `eda-commit` сохраняет исходный запрос и целиком передаёт сбор контекста, выбор файлов, коммит и разрешённое продолжение одному простому агенту. `eda-worktree` и `eda-merge-worktree` передают одному специализированному агенту git-операцию, обрабатывают его вопрос или результат и сами команды не выполняют. `eda-review` поддерживает два режима: `subagents` параллельно запускает применимых review-агентов, а `
|
|
118
|
+
Агенты устанавливаются отдельно от скилов. Модели 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
119
|
|
|
119
120
|
Для 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
121
|
|
|
@@ -122,9 +123,9 @@ eda update-all ~/Code
|
|
|
122
123
|
|
|
123
124
|
## 🚩 Флаги скилов
|
|
124
125
|
|
|
125
|
-
У некоторых скилов есть флаг `strict` — он включает дополнительные тяжёлые проверки. Передаётся как часть запроса агенту, например: `eda-explore strict <тема>`. Также strict можно включить отдельно в `docs/settings.yaml`, например через `explore.strict: true`. У `eda-review` режим исполнения задаётся через `subagents` / `
|
|
126
|
+
У некоторых скилов есть флаг `strict` — он включает дополнительные тяжёлые проверки. Передаётся как часть запроса агенту, например: `eda-explore strict <тема>`. Также strict можно включить отдельно в `docs/settings.yaml`, например через `explore.strict: true`. У `eda-review` режим исполнения задаётся через `subagents` / `main`, а состав проверок — через собственные `mode` и `model`.
|
|
126
127
|
|
|
127
|
-
У `eda-plan-execute` есть режимы `subagents` / `
|
|
128
|
+
У `eda-plan-execute` есть режимы `subagents` / `main` / `auto`. Режим можно разово указать в вызове, например `eda-plan-execute main docs/artifacts/plans/....md`; без него используется `plan-execute.mode` из настроек, а без настроек — `auto`.
|
|
128
129
|
|
|
129
130
|
У `eda-aim` есть режимы `automatic` / `manual`. В автоматическом основной агент сам отвечает на безопасные рабочие вопросы по рекомендации субагента и фактам проекта, в ручном передаёт их человеку. Режим можно разово указать в вызове; без него используется `aim.mode` из настроек. Точный список новых целей перед записью в `docs/artifacts/aims/` всё равно один раз подтверждает человек.
|
|
130
131
|
|
|
@@ -132,15 +133,15 @@ eda update-all ~/Code
|
|
|
132
133
|
|
|
133
134
|
| Скил | Флаг | Что включает | Когда стоит использовать |
|
|
134
135
|
|---|---|---|---|
|
|
135
|
-
| `eda-orhestra` | `automatic` / `manual`, `subagents` / `
|
|
136
|
+
| `eda-orhestra` | `automatic` / `manual`, `subagents` / `main` / `main_propagated`, `без полировки плана`, `без полировки кода`, `полировка кода N итераций`, `без ручных тестов` | Разово меняет вопросы, исполнение, состав цепочки и параметры шагов поверх `docs/settings.yaml` | `main` экономит верхний слой, `main_propagated` также включает main у совместимых execute/review-этапов |
|
|
136
137
|
| `eda-aim` | `automatic` / `manual` | Разово меняет способ ответа на рабочие вопросы поверх `aim.mode`; подтверждение точного списка новых целей остаётся обязательным | Автономная работа или совместное прохождение развилок с человеком |
|
|
137
138
|
| `eda-explore` | `strict` | После сохранения отчёта отдаёт его соседнему CLI (Claude → Codex или наоборот) на критическое ревью конкретности, фактов, развилок, рисков и версий; затем доправляет отчёт по замечаниям | Серьёзные исследования, которые лягут в основу больших решений; когда хочется второго мнения от другой модели/среды |
|
|
138
139
|
| `eda-plan` | `strict`, `без ревью плана`, `без проверок` | `strict` независимо включает кросс-CLI проверку; `без ревью плана` отключает встроенный review/fix; `без проверок` отключает оба вида ревью | Когда нужно разделить создание плана и его последующую полировку |
|
|
139
140
|
| `eda-plan-review` | `threshold N` | Разово меняет долю закрытых пунктов, при которой план считается готовым | Для самостоятельного аудита готового плана |
|
|
140
|
-
| `eda-plan-execute` | `subagents` / `
|
|
141
|
+
| `eda-plan-execute` | `subagents` / `main` / `auto` | Разово меняет, где выполняются фазы, поверх `plan-execute.mode` | `main` для небольшого плана в одном контексте, `subagents` для большого или тяжёлого |
|
|
141
142
|
| `eda-plan-polish` | `threshold N`, `limit N` | Меняет gate и максимальное число подтверждающих review-итераций | Для доводки ответственных планов перед `eda-plan-execute` |
|
|
142
143
|
| `eda-manual-test` | `full` / `полная проверка`, `smoke` / `быстро` | Разово меняет глубину ручной проверки поверх `manual-test.depth` | `smoke` для короткой правки, `full` — когда нужно закрыть все области после плана |
|
|
143
|
-
| `eda-review` | `subagents` / `
|
|
144
|
+
| `eda-review` | `subagents` / `main` | Разово меняет способ выполнения выбранных проверок поверх `review.execution` | `main` экономит контекст на частых локальных ревью; `subagents` сохраняет независимость ролей для ответственных изменений |
|
|
144
145
|
|
|
145
146
|
---
|
|
146
147
|
|
|
@@ -157,8 +158,8 @@ orhestra:
|
|
|
157
158
|
# Режим полного цикла eda-orhestra.
|
|
158
159
|
# automatic | manual
|
|
159
160
|
mode: automatic
|
|
160
|
-
# Где выполняются этапы и передаётся ли
|
|
161
|
-
# subagents |
|
|
161
|
+
# Где выполняются этапы и передаётся ли main совместимым вложенным скилам.
|
|
162
|
+
# subagents | main | main_propagated
|
|
162
163
|
execution: subagents
|
|
163
164
|
# Упорядоченная цепочка. Шаги можно отключать, удалять и переставлять.
|
|
164
165
|
steps:
|
|
@@ -239,7 +240,7 @@ plan-polish:
|
|
|
239
240
|
|
|
240
241
|
plan-execute:
|
|
241
242
|
# Где eda-plan-execute выполняет фазы плана.
|
|
242
|
-
# subagents — каждая фаза в отдельном субагенте,
|
|
243
|
+
# subagents — каждая фаза в отдельном субагенте, main — весь план одним контекстом, auto — решает по плану.
|
|
243
244
|
mode: auto
|
|
244
245
|
|
|
245
246
|
manual-test:
|
|
@@ -250,7 +251,7 @@ manual-test:
|
|
|
250
251
|
depth: full
|
|
251
252
|
|
|
252
253
|
review:
|
|
253
|
-
# subagents — отдельный специализированный агент на проверку,
|
|
254
|
+
# subagents — отдельный специализированный агент на проверку, main — все проверки основным агентом без субагентов.
|
|
254
255
|
execution: subagents
|
|
255
256
|
# Каждая проверка имеет собственный режим запуска; модели применяются только в subagents.
|
|
256
257
|
agents:
|
|
@@ -390,7 +391,7 @@ discover-automations:
|
|
|
390
391
|
|
|
391
392
|
Что означают настройки:
|
|
392
393
|
- `orhestra.mode` — `automatic` безопасно закрывает рабочие вопросы без промежуточных подтверждений; `manual` пишет план вместе с человеком и передаёт ему вопросы.
|
|
393
|
-
- `orhestra.execution` — `subagents` запускает каждый этап отдельно, `
|
|
394
|
+
- `orhestra.execution` — `subagents` запускает каждый этап отдельно, `main` выполняет верхнюю цепочку текущим агентом, `main_propagated` дополнительно передаёт `main` шагам `eda-plan-execute`, `eda-polish` и прямому `eda-review`; default `subagents`. Другие вложенные скилы сохраняют собственный контракт.
|
|
394
395
|
- `orhestra.steps` — выполняемый сверху вниз workflow. `enabled: false` отключает шаг, а `args` передаёт ему дополнительные параметры. Например, для `eda-polish`: `args: "limit 2"`. Шаги можно переставлять или добавлять, но git/publish-скиллы оркестратор не запускает.
|
|
395
396
|
- Старое значение `steps[].skill: eda-execute` во время запуска автоматически понимается как `eda-plan-execute`; существующий `docs/settings.yaml` установщик не переписывает.
|
|
396
397
|
- `steps[].on_failure` — настраивает исправление failed manual-test прямо рядом с этим шагом: `skill` и `args` задают фикс, `then` — повторяемые id шагов, `max_cycles` — лимит. Если обработчика нет, оркестратор сохраняет failed-отчёт и останавливается.
|
|
@@ -400,11 +401,11 @@ discover-automations:
|
|
|
400
401
|
- `plan.size`, `plan.decision_mode`, `plan.test_strategy`, `plan.logging_strategy` — режим и структура работы `eda-plan`.
|
|
401
402
|
- `plan-review.threshold` — доля закрытых пунктов чек-листа для статуса `ready`, default `100`. Отдельных агентов у `plan-review` больше нет: проверку целиком делает один субагент.
|
|
402
403
|
- `plan-polish.limit` — максимальное число подтверждающих review-итераций; default `2`. Цикл останавливается раньше, если score перестал расти.
|
|
403
|
-
- `plan-execute.mode` — где `eda-plan-execute` выполняет фазы: `subagents` — каждая фаза в отдельном изолированном субагенте с независимой проверкой, `
|
|
404
|
+
- `plan-execute.mode` — где `eda-plan-execute` выполняет фазы: `subagents` — каждая фаза в отдельном изолированном субагенте с независимой проверкой, `main` — весь план одним контекстом без субагентов, `auto` — выбор по плану; default `auto`. Явный режим в вызове имеет приоритет.
|
|
404
405
|
- `manual-test.depth` — глубина ручной проверки в `eda-manual-test`: `full` — закрыть все применимые области матрицы покрытия, `smoke` — только запуск и основной сценарий изменённой области, `ask_each_time` — спрашивать каждый раз; default `full`. Явная глубина в вызове имеет приоритет.
|
|
405
|
-
- `review.execution` — где выполняются проверки `eda-review`: `subagents` запускает отдельные специализированные роли, `
|
|
406
|
+
- `review.execution` — где выполняются проверки `eda-review`: `subagents` запускает отдельные специализированные роли, `main` выполняет те же выбранные проверки основным агентом без субагентов и с однократной загрузкой общего контекста; default `subagents`. Явный режим в вызове имеет приоритет.
|
|
406
407
|
- `review.agents.<check>.mode` — запускать проверку всегда, автоматически по контексту или отключить.
|
|
407
|
-
- `review.agents.<check>.model.claude` и `.codex` — модель конкретной проверки в соответствующей среде для `subagents`; в `
|
|
408
|
+
- `review.agents.<check>.model.claude` и `.codex` — модель конкретной проверки в соответствующей среде для `subagents`; в `main` используется текущая модель агента.
|
|
408
409
|
- `eda-review` не делит находки по обязательности: каждый принятый пункт требует исправления, а предложения без доказанного практического дефекта отбрасываются. Score остаётся экспертной оценкой серьёзности; любая находка блокирует `clean` независимо от score.
|
|
409
410
|
- `send-review.close_previous_reviews` — после успешной новой отправки скрывает предыдущие сводки, созданные `eda-send-review` текущим GitHub-пользователем, и резолвит связанные inline-треды; прямое указание в текущем запросе переопределяет настройку.
|
|
410
411
|
- `discover-automations.include_plans` — добавляет `docs/artifacts/plans/` в обычный запуск `eda-discover-automations`.
|
|
@@ -421,7 +422,7 @@ discover-automations:
|
|
|
421
422
|
|
|
422
423
|
`eda-orhestra` по умолчанию запускает основной цикл одной командой:
|
|
423
424
|
|
|
424
|
-
В default `subagents` каждая стрелка передаёт явный вход и пути к артефактам в новый изолированный субагент. В `
|
|
425
|
+
В default `subagents` каждая стрелка передаёт явный вход и пути к артефактам в новый изолированный субагент. В `main` и `main_propagated` верхние этапы идут последовательно в текущем контексте.
|
|
425
426
|
|
|
426
427
|
```text
|
|
427
428
|
plan без проверок → plan-polish → plan-execute → polish → manual-test ──passed──> готово
|
|
@@ -466,7 +467,7 @@ discover-automations может запускаться от review, fix-by-revie
|
|
|
466
467
|
|
|
467
468
|
`eda-manual-test` обычно ставится после `eda-plan-execute`, `eda-fix` или `eda-fix-by-review`, чтобы руками проверить API, базу, консольные команды, интерфейс и алгоритмы перед ревью или коммитом.
|
|
468
469
|
|
|
469
|
-
Использовать всю цепочку не обязательно — каждый скил самодостаточен. Для полного прохода одной задачи можно вызвать `eda-orhestra automatic <задача>` или `eda-orhestra manual <задача>`. Разовые варианты: `eda-orhestra
|
|
470
|
+
Использовать всю цепочку не обязательно — каждый скил самодостаточен. Для полного прохода одной задачи можно вызвать `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-just-do-it <задача>`: скил сам выберет необходимый контекст, выполнит работу и сохранит отчёт. Новый проект можно начать с `eda-new-project`; существующий — с `eda-prepare-ai`, `eda-roadmap`, `eda-explore`, или сразу с `eda-plan-execute` на готовом плане, или просто `eda-commit`, когда правки уже сделаны. Для параллельной работы есть `eda-worktree`, а для возврата ветки из worktree в текущую ветку — `eda-merge-worktree`.
|
|
470
471
|
|
|
471
472
|
Вызов `eda-commit` без контекста охватывает все незакоммиченные tracked-изменения и содержательные untracked-файлы; очевидные кэши, временные и локальные служебные артефакты остаются вне коммитов. Executor сам делит полный состав на необходимое число логически цельных коммитов — один, три или больше. Например, запрос `eda-commit сразу отправь ветку, создай PR и дай ссылку` использует тот же полный состав и выполняет всю указанную цепочку без отдельного вопроса после серии коммитов.
|
|
472
473
|
|
|
@@ -476,7 +477,7 @@ discover-automations может запускаться от review, fix-by-revie
|
|
|
476
477
|
|
|
477
478
|
- **Простой язык.** Скилы общаются с тобой так, чтобы понял человек без глубоких знаний предмета. Термины — только когда без них нельзя.
|
|
478
479
|
- **Все вопросы — интерактивно.** В Claude Code — через `AskUserQuestion`; в интерактивном Codex — через `request_user_input` или блокирующий вопрос в чат. В `codex exec` и других неинтерактивных запусках скил не имитирует диалог: если без ответа нельзя безопасно продолжать, он завершает работу со статусом `blocked: нужен ответ пользователя`.
|
|
479
|
-
- **Способ review настраивается.** В `subagents` `eda-review` запускает установленных read-only агентов нативным механизмом Claude/Codex и блокируется при их недоступности без CLI-fallback. В `
|
|
480
|
+
- **Способ review настраивается.** В `subagents` `eda-review` запускает установленных read-only агентов нативным механизмом Claude/Codex и блокируется при их недоступности без CLI-fallback. В `main` основной агент выполняет те же выбранные проверки по общей матрице без субагентов и повторной загрузки общего контекста.
|
|
480
481
|
- **Технические остановки обрабатываются по причине.** Оркестраторы ждут свободный слот при лимите параллельности, запрашивают недостающее разрешение, один раз продолжают агента после временной API-ошибки и без бессмысленных retry останавливаются при лимите глубины, исчерпанной квоте или неизвестном сбое.
|
|
481
482
|
- **Повторяемые роли — в пакетных агентах.** Скилы управляют процессом, а стабильные изолированные роли получают собственный prompt, модель и доступ. Полные review-prompts не дублируются в оркестраторе.
|
|
482
483
|
- **Артефакты по папкам.** Исследования отдельно, планы отдельно, ревью отдельно. Между файлами — ссылки. Через месяц легко найти, кто что когда решал.
|
package/lib/install.js
CHANGED
|
@@ -358,12 +358,12 @@ const ORHESTRA_EXECUTION_CHOICES = [
|
|
|
358
358
|
name: 'Каждый этап выполнять отдельным изолированным субагентом'
|
|
359
359
|
},
|
|
360
360
|
{
|
|
361
|
-
value: '
|
|
362
|
-
name: 'Все этапы выполнять
|
|
361
|
+
value: 'main',
|
|
362
|
+
name: 'Все этапы выполнять основным агентом без передачи режима внутрь'
|
|
363
363
|
},
|
|
364
364
|
{
|
|
365
|
-
value: '
|
|
366
|
-
name: 'Все этапы выполнять
|
|
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: '
|
|
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: '
|
|
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 (
|
|
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
|
-
:
|
|
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 === '
|
|
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
|
|
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
|
|
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
|
-
|
|
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', '
|
|
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', '
|
|
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
|
-
# Где выполняются этапы и передаётся ли
|
|
1422
|
-
# subagents |
|
|
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 — каждая фаза в отдельном субагенте,
|
|
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 — отдельный специализированный агент на проверку,
|
|
1506
|
+
# subagents — отдельный специализированный агент на проверку, main — все проверки основным агентом без субагентов.
|
|
1486
1507
|
execution: ${settings.review.execution ?? 'subagents'}
|
|
1487
1508
|
# Каждая проверка имеет собственный режим запуска; модели применяются только в subagents.
|
|
1488
1509
|
agents:
|
package/package.json
CHANGED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-just-do-it
|
|
3
|
+
description: 'Прямо выполняет задачу, указанную пользователем рядом с вызовом скилла.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Скил: Просто сделай (eda-just-do-it)
|
|
7
|
+
|
|
8
|
+
Сразу доведи задачу пользователя до проверяемого результата в текущем проекте. Не заменяй выполнение планом, исследованием или ревью, если пользователь не попросил именно такой результат.
|
|
9
|
+
|
|
10
|
+
## Вход из сообщения пользователя
|
|
11
|
+
|
|
12
|
+
Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: требуемый результат, scope, пути, ограничения и явно разрешённые внешние действия. Старое обсуждение используй только там, где пользователь прямо связал его с текущей задачей.
|
|
13
|
+
|
|
14
|
+
Если входа достаточно, продолжай без подтверждения и без пересказа плана действий. `AskUserQuestion` задавай только когда отсутствует обязательный выбор, требования противоречат друг другу, есть несколько равнозначных целей или без ответа возникает существенный риск сделать не то.
|
|
15
|
+
|
|
16
|
+
## Главные правила
|
|
17
|
+
|
|
18
|
+
1. **Делай то, что попросили.** Сам выполни задачу в текущем контексте. Не отправляй пользователя к другому `eda-*`-скилу только потому, что существует более специализированный процесс. Другой скил применяй, только если пользователь явно включил его в задачу.
|
|
19
|
+
2. **Не расширяй scope.** Выполняй необходимые сопутствующие изменения, но не добавляй улучшения, которые не нужны для заданного результата.
|
|
20
|
+
3. **Загружай только нужный контекст.** Сначала определи scope, затем читай относящиеся к нему инструкции, документы, код и тесты. Не загружай все business- и reference-карточки на всякий случай.
|
|
21
|
+
4. **Сохраняй пользовательскую работу.** Перед изменениями проверь текущее состояние рабочей директории и не перезаписывай несвязанные правки.
|
|
22
|
+
5. **Проверяй результат.** Для изменений поведения добавь или обнови точечные тесты. Выполни применимые тесты, линтеры, typecheck, сборку или предметную проверку; не заявляй о том, что не запускалось.
|
|
23
|
+
6. **Внешние и git-действия — только по запросу.** Не коммить, не пушь, не создавай PR, не публикуй и не деплой без прямого указания рядом с вызовом. Для необратимого или разрушительного действия нужен однозначный target; при неоднозначности спроси.
|
|
24
|
+
7. **Артефакт обязателен.** Создай отчёт до первого содержательного изменения и поддерживай его в актуальном состоянии. Заверши отчёт даже при частичном результате, блокере или ошибке.
|
|
25
|
+
|
|
26
|
+
## Как выбрать контекст
|
|
27
|
+
|
|
28
|
+
1. Прочитай применимые `AGENTS.md` и другие проектные инструкции для затронутых путей.
|
|
29
|
+
2. Прочитай файлы и артефакты, прямо названные пользователем.
|
|
30
|
+
3. Если меняется проект, прочитай `docs/rules.md` и `docs/arch.md`, когда они существуют.
|
|
31
|
+
4. Сначала определи затронутое поведение. Если есть `docs/business.md`, выбери по описаниям и прочитай только применимые business-карточки из `docs/business/`. Отсутствие подходящей карточки не блокирует работу.
|
|
32
|
+
5. Если есть `docs/references.md`, выбери по индексу и прочитай только карточки затронутых компонентов из `docs/references/`.
|
|
33
|
+
6. Найди минимальный набор исходников, тестов, конфигурации и документации, необходимый для выполнения и проверки задачи. Расширяй контекст только когда обнаруженная зависимость действительно влияет на результат.
|
|
34
|
+
|
|
35
|
+
Если запрос противоречит проектной инструкции, business-правилу или архитектурному ограничению, не обходи их молча: зафиксируй конфликт в отчёте и запроси недостающее решение через `AskUserQuestion`.
|
|
36
|
+
|
|
37
|
+
## Выполнение
|
|
38
|
+
|
|
39
|
+
1. Сформулируй для себя проверяемый результат и границы задачи.
|
|
40
|
+
2. Собери необходимый контекст по правилам выше и проверь текущее состояние проекта.
|
|
41
|
+
3. Создай файл отчёта со статусом `in-progress`.
|
|
42
|
+
4. Выполни задачу полностью. Исправляй ошибки, вызванные своими изменениями; несвязанные проблемы не маскируй и не чини без необходимости.
|
|
43
|
+
5. Проверь фактический результат подходящими командами или наблюдаемым сценарием.
|
|
44
|
+
6. Обнови отчёт только подтверждёнными действиями и результатами, поставь итоговый статус `done`, `partial`, `blocked` или `failed`.
|
|
45
|
+
|
|
46
|
+
## Интерактивные вопросы
|
|
47
|
+
|
|
48
|
+
Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
|
|
49
|
+
|
|
50
|
+
- Claude Code: используй `AskUserQuestion`.
|
|
51
|
+
- Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
|
|
52
|
+
- Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, запиши вопрос и варианты в отчёт.
|
|
53
|
+
- Не запускай команды, которые ждут интерактивного ввода в терминале.
|
|
54
|
+
|
|
55
|
+
## Артефакт
|
|
56
|
+
|
|
57
|
+
Сохрани отчёт в `docs/artifacts/just-do-it/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. Если имя занято, добавь числовой суффикс. Даже если задача завершилась до изменений, оказалась заблокирована или упала, отчёт должен существовать и честно описывать результат.
|
|
58
|
+
|
|
59
|
+
```markdown
|
|
60
|
+
---
|
|
61
|
+
date: <YYYY-MM-DD HH:MM>
|
|
62
|
+
status: in-progress
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
# Just do it: <краткий заголовок>
|
|
66
|
+
|
|
67
|
+
## Запрос
|
|
68
|
+
<что пользователь поручил сделать>
|
|
69
|
+
|
|
70
|
+
## Учтённый контекст
|
|
71
|
+
- `<путь>` — <зачем прочитан>
|
|
72
|
+
|
|
73
|
+
## Что сделано
|
|
74
|
+
| # | Действие или файл | Результат |
|
|
75
|
+
|---|-------------------|-----------|
|
|
76
|
+
| 1 | ... | ... |
|
|
77
|
+
|
|
78
|
+
## Проверки
|
|
79
|
+
| Команда или сценарий | Результат | Заметки |
|
|
80
|
+
|----------------------|-----------|---------|
|
|
81
|
+
| `<command>` | ✓ / ✗ / не запускалась | ... |
|
|
82
|
+
|
|
83
|
+
## Осталось
|
|
84
|
+
<«Ничего» либо конкретный остаток, блокер и требуемое решение>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Перед завершением замени `in-progress` на итоговый статус. Не включай в артефакт секреты, токены и лишний вывод команд.
|
|
88
|
+
|
|
89
|
+
## Финал
|
|
90
|
+
|
|
91
|
+
Коротко сообщи: что выполнено, чем проверено, что осталось и путь к обязательному отчёту. Если были git- или внешние действия, перечисли только фактически выполненные.
|
|
@@ -49,7 +49,7 @@ orhestra:
|
|
|
49
49
|
Правила схемы:
|
|
50
50
|
|
|
51
51
|
- `mode`: только `automatic` или `manual`; дефолт `automatic`.
|
|
52
|
-
- `execution`: `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`, `
|
|
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. В `
|
|
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. В `
|
|
114
|
-
5. Не переключай `$EXECUTION` автоматически. В `subagents` при недоступной изоляции остановись с `blocked: недоступна изоляция этапа`; в
|
|
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
|
-
- Передавать `
|
|
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`, `
|
|
19
|
+
`plan-execute.mode` принимает `subagents`, `main` или `auto`; при отсутствующем или невалидном значении используй `auto`. Файл настроек не изменяй.
|
|
20
20
|
|
|
21
21
|
## Вход из сообщения пользователя
|
|
22
22
|
|
|
23
23
|
Текст рядом с вызовом — главный вход. Разбери тему, путь к файлу, ограничения, прямые указания и режим:
|
|
24
24
|
|
|
25
25
|
- `subagents`, `субагенты`, `по фазам`, `изолированно` → `$MODE=subagents`;
|
|
26
|
-
- `
|
|
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
|
-
| `
|
|
40
|
-
| `auto` | решает по плану до старта: `
|
|
39
|
+
| `main` | основной агент подряд в одном контексте | сам основной агент |
|
|
40
|
+
| `auto` | решает по плану до старта: `main` или `subagents` | по выбранному режиму |
|
|
41
41
|
|
|
42
|
-
`auto` выбирай `
|
|
42
|
+
`auto` выбирай `main`, только когда весь план реально помещается в один контекст: немного фаз, небольшой объём задач и файлов, одна область кода, нет тяжёлых по контексту фаз вроде крупного рефакторинга, миграции данных или множества карточек. Иначе — `subagents`; при сомнении тоже `subagents`. Решение и его причину запиши в журнал.
|
|
43
43
|
|
|
44
|
-
В `
|
|
44
|
+
В `main` следи за собственным контекстом. Если план оказался тяжелее оценки или контекст заканчивается, переключи оставшиеся фазы на `subagents`, запиши переключение в журнал и продолжи с текущей фазы.
|
|
45
45
|
|
|
46
46
|
## Главные правила
|
|
47
47
|
|
|
48
|
-
1. **В `subagents` основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты. В `
|
|
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`, в `
|
|
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` от проверяющего, в `
|
|
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 запусти отдельного субагента подготовки окружения; в `
|
|
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`, сравни разобранные фазы с критериями из «Режимы выполнения» и зафиксируй итоговый режим `
|
|
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 |
|
|
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
|
-
Журнал и отметки прогресса в плане ведёт только основной агент. В `
|
|
114
|
+
Журнал и отметки прогресса в плане ведёт только основной агент. В `main` записывай выбор режима с причиной, а в колонке «Исполнитель» — `основной агент`; в `subagents` явно запрети субагентам менять `$PLAN_FILE` и `$EXECUTION_FILE`.
|
|
115
115
|
|
|
116
116
|
### 5. Запускать изолированных субагентов
|
|
117
117
|
|
|
118
|
-
Весь этап — только для `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
|
-
В `
|
|
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
|
-
В `
|
|
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` и выбирает карточки итогового изменённого поведения. В `
|
|
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
|
-
- Выполнять большой или тяжёлый по контексту план в `
|
|
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`.
|
|
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/файл, лимит
|
|
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.
|
|
19
|
-
|
|
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
|
-
|
|
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 неоднозначен,
|
|
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: <
|
|
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-*` агентов и сам не выполняй их специализированные роли. В `
|
|
8
|
+
Проводи одно полное read-only ревью в выбранном режиме исполнения. В `subagents` оркестрируй установленных `eda-review-*` агентов и сам не выполняй их специализированные роли. В `main` выполни те же выбранные проверки самостоятельно по общей матрице, не запуская leaf-субагентов. В обоих режимах сохрани один итоговый отчёт с одинаковыми требованиями к доказательствам и результату.
|
|
9
9
|
|
|
10
10
|
## Вход из сообщения пользователя
|
|
11
11
|
|
|
12
|
-
Текст рядом с вызовом скилла в текущем сообщении — главный вход. Сначала разбери target, план, ссылку, ограничения, режим `subagents` или `
|
|
12
|
+
Текст рядом с вызовом скилла в текущем сообщении — главный вход. Сначала разбери target, план, ссылку, ограничения, режим `subagents` или `main`, отключённые или принудительно включённые проверки и разовые модели.
|
|
13
13
|
|
|
14
14
|
Если входа достаточно, продолжай без вопроса. Без аргументов ревьюй незакоммиченный `git diff HEAD`. Ссылка на PR/MR задаёт target однозначно. Если пользователь дал только корень удалённого репозитория, обязательно попроси указать PR/MR, ветку, коммит или файлы; весь репозиторий и последний PR автоматически не выбирай.
|
|
15
15
|
|
|
16
|
-
Явное слово `subagents` или `
|
|
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
|
-
- `
|
|
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
|
-
В `
|
|
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; в `
|
|
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
|
-
### Режим
|
|
101
|
+
### Режим main
|
|
102
102
|
|
|
103
|
-
Всю работу выполни сам
|
|
103
|
+
Всю работу выполни сам как основной агент текущего workflow. Не запускай `eda-review-*` агентов, другие субагенты или отдельный CLI. Вызывающий workflow не должен оборачивать `eda-review` в отдельного субагента, если передал режим `main`.
|
|
104
104
|
|
|
105
|
-
Прочитай [references/review-matrix.md](references/review-matrix.md) целиком. Это обязательный контракт всех специализированных проходов в `
|
|
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.
|
|
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` главный агент выполняет только редакторскую работу над результатами. В `
|
|
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 |
|
|
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 |
|
|
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
|
-
- В `
|
|
259
|
-
- Записывать итоговый файл после повторного сбоя обязательного агента в `subagents` или незавершённой обязательной проверки в `
|
|
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
|
-
# Матрица проверок
|
|
1
|
+
# Матрица проверок main-режима
|
|
2
2
|
|
|
3
|
-
Этот файл используется только при `review.execution:
|
|
3
|
+
Этот файл используется только при `review.execution: main`. Выполни отдельный проход по каждой выбранной проверке, но читай общий target и проектные инструкции один раз. Не смешивай области: одна проблема должна остаться в наиболее точной проверке.
|
|
4
4
|
|
|
5
5
|
Для любой находки обязательны точное место, достижимый на текущем коде сценарий, практический ущерб, доказательство, `repro`, способ исправления и нужный тест. Не принимай вкусовой рефакторинг, косметику, спекулятивное усиление, необязательный тест или проблему, которая появится только после гипотетического будущего изменения. Не перечисляй удачные решения и выполненные пункты.
|
|
6
6
|
|