@gian-tiaga/eda 1.0.1 → 1.0.3

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
@@ -1,6 +1,6 @@
1
1
  # Миграция на eda 1.0
2
2
 
3
- Версия 1.0 переводит `eda` с набора файлов-скилов на пакет с каноническими скилами и специализированными агентами для Claude Code и Codex CLI. Начиная с `1.0.1`, установщик обновляет управляемые компоненты и автоматически переводит существующий `docs/settings.yaml` версии 1 в актуальный формат версии 2.
3
+ Версия 1.0 переводит `eda` с набора файлов-скилов на пакет с каноническими скилами и специализированными агентами для Claude Code и Codex CLI. Начиная с `1.0.2`, `eda update` заново спрашивает полный профиль настроек и записывает актуальный `docs/settings.yaml` версии 2 перед обновлением компонентов.
4
4
 
5
5
  ## Короткий путь
6
6
 
@@ -26,7 +26,7 @@ eda update
26
26
  eda update-all /path/to/projects
27
27
  ```
28
28
 
29
- `update-all` ищет проекты на глубине до двух уровней, обновляет только уже найденные среды Claude/Codex и не создаёт отсутствующий `docs/settings.yaml`. Если конфиг существует с `version: 1`, команда автоматически мигрирует его на v2.
29
+ `update-all` ищет проекты на глубине до двух уровней, один раз спрашивает полный профиль настроек и записывает одинаковый `docs/settings.yaml` версии 2 во все найденные проекты. В non-TTY запуске вопросы не задаются: во все проекты записывается один профиль defaults.
30
30
 
31
31
  После обновления перезапусти Claude Code или Codex CLI, чтобы среда перечитала установленные скилы и агентов.
32
32
 
@@ -57,9 +57,9 @@ eda update-all /path/to/projects
57
57
 
58
58
  ## Миграция `docs/settings.yaml`
59
59
 
60
- Версия 1.0 поддерживает только формат настроек `version: 2`. Команды `eda init`, `eda update` и `eda update-all` распознают `version: 1`, переносят поддерживаемые значения, добавляют новые настройки с defaults и атомарно заменяют файл. Повторных интерактивных вопросов при миграции нет.
60
+ Версия 1.0 поддерживает только формат настроек `version: 2`. При `eda update` ответь на полный набор вопросов: команда соберёт новый профиль и атомарно заменит прежний файл независимо от его версии. `eda update-all` задаст эти вопросы только один раз и применит ответы ко всем проектам.
61
61
 
62
- Существующий v2 сохраняется без изменений. Файл без версии или с неизвестной версией установщик не переписывает, чтобы не повредить неподдерживаемый формат. Поля вне документированной схемы v1 в новый файл не переносятся.
62
+ `eda init` ведёт себя осторожнее: если конфиг уже существует, v2 и неизвестные версии сохраняются, а v1 автоматически мигрируется с переносом поддерживаемых значений. При update-командах прежний файл заменяется выбранным полным профилем, поэтому перед запуском сохрани нестандартные поля отдельно.
63
63
 
64
64
  Основное соответствие полей:
65
65
 
@@ -99,7 +99,7 @@ discover-automations:
99
99
  include_plans: false
100
100
  ```
101
101
 
102
- Новые разделы `orhestra`, `aim`, `review.agents` и `send-review` установщик добавляет автоматически из сбалансированных defaults. Полный актуальный пример приведён в [README](README.md).
102
+ Новые разделы `orhestra`, `aim`, `review.agents` и `send-review` заполняются ответами на вопросы; в non-TTY запуске используются сбалансированные defaults. Полный актуальный пример приведён в [README](README.md).
103
103
 
104
104
  ## Проверка после миграции
105
105
 
package/README.md CHANGED
@@ -29,7 +29,7 @@ eda init
29
29
  eda update-all ~/Code
30
30
  ```
31
31
 
32
- `eda update-all` ищет проекты в указанной директории, её прямых подпапках и подпапках второго уровня. Проект считается найденным, если в нём уже есть установленный скил, агент или manifest `eda` для Claude/Codex. Команда обновляет только найденные среды, не создаёт отсутствующий `docs/settings.yaml`, но автоматически переводит найденный конфиг с `version: 1` на `version: 2`.
32
+ `eda update-all` ищет проекты в указанной директории, её прямых подпапках и подпапках второго уровня. Проект считается найденным, если в нём уже есть установленный скил, агент или manifest `eda` для Claude/Codex. Перед обновлением команда один раз спрашивает полный профиль настроек и записывает одинаковый `docs/settings.yaml` во все найденные проекты. В неинтерактивном запуске во все проекты записывается один профиль по умолчанию.
33
33
 
34
34
  ---
35
35
 
@@ -42,9 +42,9 @@ eda update-all ~/Code
42
42
  | `eda-new-project` | Помогает стартовать новый проект: собирает и согласует требования, функциональность и границы, ограничения и архитектурные драйверы, сравнивает варианты основного стека и фиксирует выбранные компоненты с актуальными стабильными версиями. Не проектирует архитектуру, правила, проверки, AI-скилы или MCP; сохраняет подтверждённый стартовый бриф и всегда без дополнительного вопроса запускает полный технический bootstrap через `eda-prepare-ai` | `docs/project-starts/`, затем артефакты `eda-prepare-ai` |
43
43
  | `eda-roadmap` | Создаёт roadmap-файл: список будущих задач с короткими, понятными и недвусмысленными описаниями без деталей реализации, файлов, библиотек, API и пошагового плана | `docs/roadmaps/` |
44
44
  | `eda-explore` | Исследует тему до конкретного результата: описание проблемы, релевантная архитектура, закрытые развилки, риски внутри решений и короткий выбранный вариант решения без плана. Читает только применимые карточки из `docs/references/`, если они есть. В дефолтном режиме ведёт исследование как диалог; для пакетов и ПО проверяет актуальные стабильные версии | `docs/researches/` |
45
- | `eda-plan` | Пишет план реализации через стандартный Plan Mode хост-агента. `docs/rules.md`, `docs/arch.md` и применимые кодовые эталоны использует как обязательную рамку. В плане явно фиксирует контракты БД/API, прямые зависимости задач и какие задачи безопасно выполнять параллельно. Затем три параллельных субагента/модели проверяют реалистичность, полноту и соблюдение рамки | `docs/plans/` |
45
+ | `eda-plan` | Пишет план реализации через стандартный Plan Mode хост-агента. `docs/rules.md`, `docs/arch.md` и применимые кодовые эталоны использует как обязательную рамку. В плане явно фиксирует контракты БД/API, прямые зависимости задач и связные фазы, рассчитанные на одного исполнителя. Затем три параллельных субагента/модели проверяют реалистичность, полноту и соблюдение рамки | `docs/plans/` |
46
46
  | `eda-plan-polish` | Полирует готовый план до оценки 95/100 или заданного порога. Каждая итерация запускает три изолированных агента, которые проверяют план по правилам, архитектуре, `sources.references`, research и коду. В strict дополнительно запускается кросс-ревью Claude ↔ Codex. Основной агент правит только файл плана и не запускает проверки проекта | `docs/plans/` |
47
- | `eda-plan-execute` | Управляет выполнением плана по фазам. Фазы проходят строго последовательно, а безопасно совместимые задачи внутри фазы запускаются параллельно отдельными изолированными субагентами. Код, исправления, фазовые и финальные проверки основной агент не выполняет: он управляет зависимостями, отмечает подтверждённые задачи и ведёт журнал | `docs/executions/` |
47
+ | `eda-plan-execute` | Управляет выполнением плана по фазам. Каждую фазу целиком выполняет отдельный изолированный субагент: он читает план, правила и архитектуру, а применимые карточки — по ходу работы через индекс `docs/references.md`. Фазы проходят строго последовательно и принимаются независимыми проверяющими. Основной агент отмечает подтверждённые задачи и ведёт журнал | `docs/executions/` |
48
48
  | `eda-fix` | Делает обычные фиксы по короткому контексту, баг-репорту или плану. Перед правками читает правила, архитектуру и только применимые карточки, добавляет нужные тесты, прогоняет проверки и сохраняет историю правок | `docs/fixes/` |
49
49
  | `eda-review` | Оркестрирует отдельные read-only проверки корректности, архитектуры, правил, references, плана, качества, тестов, безопасности, производительности, frontend/UI/UX, API, БД, документации и предыдущих ревью. По конфигу запускает только применимые packaged-агенты, объединяет подтверждённые проблемы, ставит экспертную оценку 0–100 и сохраняет покрытие. Без аргументов ревьюит `git diff HEAD`. Код и удалённые обсуждения не меняет | `docs/reviews/` |
50
50
  | `eda-fix-by-review` | Применяет замечания из ревью с учётом правил, архитектуры и применимых карточек. Обязательные пункты исправляет сразу; optional-пункты спрашивает или решает сам в `apply-optional`. В конце ссылается на отчёт прямо в файле ревью | `docs/review-fixes/` |
@@ -347,7 +347,7 @@ discover-automations:
347
347
 
348
348
  Поддерживается только `version: 2`. Для старого v2 без `review.agents` новый review использует сбалансированные defaults и предупреждает, что устаревшие `review.strict`, `review.include_code_quality` и `review-check` игнорируются. Установщик существующий файл не переписывает.
349
349
 
350
- `eda init` и `eda update` создают `docs/settings.yaml`, только если файла ещё нет. Существующий v2 сохраняется без изменений, а v1 автоматически и атомарно переписывается в v2 с переносом поддерживаемых значений. Файл неизвестной версии установщик не меняет. `eda update-all` не создаёт отсутствующие настройки, но также мигрирует найденный v1.
350
+ `eda init` создаёт `docs/settings.yaml`, только если файла ещё нет; существующий v1 автоматически мигрируется в v2, а v2 и неизвестные версии сохраняются. `eda update` всегда заново задаёт все вопросы конфигурации и атомарно перезаписывает файл полным v2-профилем. `eda update-all` задаёт тот же набор вопросов один раз и записывает получившийся общий конфиг во все найденные проекты. Без TTY обе update-команды используют defaults.
351
351
 
352
352
  ---
353
353
 
@@ -422,8 +422,8 @@ discover-automations может запускаться от review, fix-by-revie
422
422
 
423
423
  ```bash
424
424
  eda init # выбрать Claude Code / Codex / обе среды и установить пакет
425
- eda update # обновить скилы и агенты, создать docs/settings.yaml, если его ещё нет
426
- eda update-all [dir] # обновить пакет во всех найденных проектах внутри dir на глубине 2
425
+ eda update # заново настроить конфиг и обновить скилы и агенты
426
+ eda update-all [dir] # один раз настроить конфиг и обновить все найденные проекты на глубине 2
427
427
  eda --version # показать версию установленного пакета
428
428
  eda --help # справка
429
429
  ```
@@ -456,7 +456,7 @@ eda update-all ~/Code
456
456
  | Агент | `.claude/agents/<agent>.md` | `.codex/agents/<agent>.toml` |
457
457
  | Manifest владения | `.claude/eda-manifest.json` | `.codex/eda-manifest.json` |
458
458
 
459
- `eda update` идемпотентно синхронизирует обе группы компонентов и отдельно показывает реально изменившиеся скилы и агенты. Manifest хранит только идентификаторы компонентов, которыми владеет `eda`: благодаря этому retired-компоненты удаляются, а чужие скилы и агенты остаются нетронутыми. `eda update-all [dir]` делает то же самое для каждого найденного проекта, не создаёт отсутствующий `docs/settings.yaml`, но переводит найденный v1 в v2. Старые Codex-файлы `.codex/skills/<skill>.md` также удаляются при миграции.
459
+ `eda update` заново собирает полный v2-конфиг, затем идемпотентно синхронизирует обе группы компонентов и отдельно показывает реально изменившиеся скилы и агенты. Manifest хранит только идентификаторы компонентов, которыми владеет `eda`: благодаря этому retired-компоненты удаляются, а чужие скилы и агенты остаются нетронутыми. `eda update-all [dir]` один раз собирает общий конфиг, записывает его во все найденные проекты и синхронизирует компоненты каждого проекта. Старые Codex-файлы `.codex/skills/<skill>.md` также удаляются при миграции.
460
460
 
461
461
  Установленные копии не являются источником правды. Локальные изменения внутри `.claude/skills/eda-*`, `.codex/skills/eda-*`, `.claude/agents/eda-*` или `.codex/agents/eda-*` будут заменены следующим обновлением.
462
462
 
package/bin/cli.js CHANGED
@@ -10,8 +10,8 @@ const HELP = `eda — установка и обновление скилов и
10
10
 
11
11
  Использование:
12
12
  eda init — выбрать целевые среды (Claude / Codex / обе) и установить пакет
13
- eda update — обновить уже установленные скилы и агенты в текущем проекте
14
- eda update-all [dir] — обновить пакет во всех найденных проектах внутри dir
13
+ eda update — заново настроить конфиг и обновить текущий проект
14
+ eda update-all [dir] — один раз настроить конфиг и обновить все проекты внутри dir
15
15
  eda --version — показать версию
16
16
  eda --help — показать эту справку
17
17
  `;
package/lib/install.js CHANGED
@@ -371,12 +371,13 @@ export async function update({ cwd, input = process.stdin, output = process.stdo
371
371
  return;
372
372
  }
373
373
  output.write(`Найдены установленные среды: ${targets.join(', ')}\n`);
374
- await ensureSettings(cwd, { input, output });
374
+ await configureSettings(cwd, { input, output });
375
375
  await syncPackage(cwd, targets, output, { action: 'update' });
376
376
  }
377
377
 
378
378
  export async function updateAll({
379
379
  root = process.cwd(),
380
+ input = process.stdin,
380
381
  output = process.stdout,
381
382
  maxDepth = UPDATE_ALL_MAX_DEPTH
382
383
  } = {}) {
@@ -406,6 +407,9 @@ export async function updateAll({
406
407
  }
407
408
 
408
409
  output.write(`Найдено ${formatProjectCount(projects.length)}: ${projects.map(project => formatProjectPath(rootDir, project)).join(', ')}\n`);
410
+ output.write('Настройки будут запрошены один раз и записаны одинаково во все найденные проекты.\n');
411
+ const sharedSettings = await askSettings({ input, output });
412
+ const sharedSettingsContent = formatSettings(sharedSettings);
409
413
 
410
414
  const updatedProjects = [];
411
415
  const skippedProjects = [];
@@ -424,7 +428,8 @@ export async function updateAll({
424
428
  }
425
429
 
426
430
  output.write(`Найдены установленные среды: ${targets.join(', ')}\n`);
427
- await migrateSettingsIfNeeded(projectDir, { output, reportExisting: false });
431
+ await writeSettingsContent(projectDir, sharedSettingsContent);
432
+ output.write(`Записан общий файл настроек: ${SETTINGS_RELATIVE_PATH}\n`);
428
433
  const result = await syncPackage(projectDir, targets, output, {
429
434
  action: 'update',
430
435
  writeDone: false
@@ -481,7 +486,7 @@ export async function askTargets({ input = process.stdin, output = process.stdou
481
486
 
482
487
  export async function askSettings({ input = process.stdin, output = process.stdout } = {}) {
483
488
  if (!input.isTTY || !output.isTTY) {
484
- output.write(`Нет интерактивного терминала — создаю ${SETTINGS_RELATIVE_PATH} с настройками по умолчанию.\n`);
489
+ output.write(`Нет интерактивного терминала — использую настройки ${SETTINGS_RELATIVE_PATH} по умолчанию.\n`);
485
490
  return structuredClone(DEFAULT_SETTINGS);
486
491
  }
487
492
 
@@ -786,16 +791,31 @@ async function findInstalledProjects(rootDir, maxDepth) {
786
791
  }
787
792
 
788
793
  async function ensureSettings(cwd, { input = process.stdin, output = process.stdout } = {}) {
789
- const settingsPath = path.join(cwd, SETTINGS_RELATIVE_PATH);
790
794
  const existing = await migrateSettingsIfNeeded(cwd, { output });
791
795
  if (existing.exists) return;
792
796
 
793
797
  const settings = await askSettings({ input, output });
794
- await fs.mkdir(path.dirname(settingsPath), { recursive: true });
795
- await fs.writeFile(settingsPath, formatSettings(settings));
798
+ await writeSettingsContent(cwd, formatSettings(settings));
796
799
  output.write(`Создан файл настроек: ${SETTINGS_RELATIVE_PATH}\n`);
797
800
  }
798
801
 
802
+ async function configureSettings(cwd, { input = process.stdin, output = process.stdout } = {}) {
803
+ output.write(`Настраиваю ${SETTINGS_RELATIVE_PATH} заново.\n`);
804
+ const settings = await askSettings({ input, output });
805
+ await writeSettingsContent(cwd, formatSettings(settings));
806
+ output.write(`Записан файл настроек: ${SETTINGS_RELATIVE_PATH}\n`);
807
+ }
808
+
809
+ async function writeSettingsContent(cwd, content) {
810
+ const settingsPath = path.join(cwd, SETTINGS_RELATIVE_PATH);
811
+ await fs.mkdir(path.dirname(settingsPath), { recursive: true });
812
+ if (await fileExists(settingsPath)) {
813
+ await writeFileAtomically(settingsPath, content);
814
+ return;
815
+ }
816
+ await fs.writeFile(settingsPath, content);
817
+ }
818
+
799
819
  async function migrateSettingsIfNeeded(cwd, {
800
820
  output = process.stdout,
801
821
  reportExisting = true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Пакет скилов и специализированных агентов eda-* для Claude Code и Codex CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-aim
3
- description: 'Согласует с пользователем одну или несколько простых проверяемых целей, сохраняет их в компактном файле `docs/aims/` и ведёт работу до достижения. Планирование, выполнение и итоговая проверка идут через отдельных пакетных субагентов; основной агент только оркестрирует вопросы и передачи. Поддерживает automatic/manual из `aim.mode` или текущего вызова; при необходимости использует установленные скилы в изолированных субагентах.'
3
+ description: 'Согласует одну или несколько проверяемых целей и ведёт их выполнение до независимо подтверждённого результата.'
4
4
  ---
5
5
 
6
6
  # Скил: Достижение цели (eda-aim)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-commit
3
- description: 'Оркестрирует один логический коммит через двух последовательных пакетных агентов. `eda-commit-context` на `haiku` / `gpt-5.6-luna` собирает read-only контекст; `eda-commit-executor` на `sonnet` / `gpt-5.6-terra` формирует сообщение, коммитит и выполняет явно указанные push, PR или merge-действия. Учитывает весь текст текущего сообщения: если пользователь уже попросил отправить ветку, создать PR и дать ссылку, не задаёт общий вопрос после коммита. Не правит код и не отключает hooks.'
3
+ description: 'Создаёт один логический git-коммит и по явному запросу выполняет push, создание PR или merge.'
4
4
  ---
5
5
 
6
6
  # Скил: Коммитер (eda-commit)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-discover-automations
3
- description: 'Проводит экстремально широкий аудит автоматических проверок проекта и анализирует историю `docs/reviews/`, `docs/review-fixes/`, `docs/fixes/`, опционально `docs/plans/`. Перечисляет пробелы в тестах, e2e, стиле, статанализе, архитектурных границах, конфигах, безопасности, данных, производительности, релизах, browser MCP и MCP выбранного стека. Сначала предлагает детерминированные CLI/CI-проверки, затем MCP или агентные усиления. Не внедряет изменения — сохраняет приоритетный отчёт с командами и контурами запуска в `docs/automations/`.'
3
+ description: 'Аудирует автоматические проверки проекта и предлагает недостающие тесты, статический анализ, CI, MCP и другие автоматизации.'
4
4
  ---
5
5
 
6
6
  # Скил: Поиск автоматизаций (eda-discover-automations)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-explore
3
- description: 'Исследует тему или задачу до конкретного результата: проясняет проблему, архитектуру, развилки, риски и короткий выбранный вариант решения без плана реализации. Работает read-only, читает `docs/rules.md`, `docs/arch.md` и релевантные карточки из `docs/references/`, а значимые развилки выносит пользователю по `explore.decision_mode` из `docs/settings.yaml`. Для пакетов и другого ПО проверяет актуальные стабильные версии по официальным источникам. Итог сохраняет в docs/researches/. Кросс-ревью соседним агентом включается флагом `strict` или настройкой `explore.strict: true`.'
3
+ description: 'Исследует техническую тему или задачу, сравнивает варианты и фиксирует выбранное решение без плана реализации.'
4
4
  ---
5
5
 
6
6
  # Скил: Исследователь решений (eda-explore)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-fix
3
- description: 'Делает обычные фиксы по плану, файлу плана или короткому текстовому контексту. Перед правками читает `docs/rules.md`, `docs/arch.md` и только релевантные карточки из `docs/references/`, если они есть, и следует им с установленным приоритетом. Правит код, добавляет нужные тесты, прогоняет проверки и сохраняет историю в `docs/fixes/`. Не делает ревью и не коммитит.'
3
+ description: 'Вносит изменения в код по плану или текстовому описанию задачи и проверяет результат.'
4
4
  ---
5
5
 
6
6
  # Скил: Фиксер (eda-fix)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-fix-by-review
3
- description: 'Применяет замечания из ревью (`docs/reviews/...`) или текста к коду. Перед правками читает `docs/rules.md`, `docs/arch.md` и релевантные карточки из `docs/references/`. Все обязательные пункты правит сразу; optional-пункты выносит пользователю или решает сам в `apply-optional`. После правок прогоняет тесты и линтеры, сохраняет отчёт в `docs/review-fixes/`. Не делает само ревью и не коммитит.'
3
+ description: 'Исправляет код по готовому ревью из файла или сообщения и проверяет результат.'
4
4
  ---
5
5
 
6
6
  # Скил: Исправитель по ревью (eda-fix-by-review)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-manual-test
3
- description: 'Делает ручную smoke/acceptance-проверку после изменений: сам строит чеклист из входа пользователя, плана или незакоммиченного diff; для API выполняет curl/HTTP-запросы, для фронта использует Playwright или доступную browser automation. Сам запускает очевидные dev/API-серверы, фиксирует фактическое поведение и сохраняет QA-отчёт в docs/manual-tests/. Не правит код, не пишет автотесты, не ставит зависимости, не коммитит.'
3
+ description: 'Проводит ручную smoke/acceptance-проверку изменённого API или интерфейса и сохраняет отчёт.'
4
4
  ---
5
5
 
6
6
  # Скил: Ручное тестирование (eda-manual-test)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-merge-worktree
3
- description: 'Оркестрирует merge ветки из соседнего git worktree через пакетного агента на `haiku` / `gpt-5.6-luna`. Аргумент принимает как номер `1`, короткое имя `work-1` или полное имя `{name}-work-1`. Перед merge проверяет оба worktree на незакоммиченные изменения. После успешного merge не удаляет worktree и ветку.'
3
+ description: 'Мержит ветку из соседнего git worktree в текущую рабочую ветку.'
4
4
  ---
5
5
 
6
6
  # Скил: Merge из worktree (eda-merge-worktree)
@@ -9,7 +9,7 @@ description: 'Оркестрирует merge ветки из соседнего
9
9
 
10
10
  ## Вход из сообщения пользователя
11
11
 
12
- Сохрани весь текст текущего сообщения дословно в `$USER_REQUEST`. Это главный вход: номер worktree, короткое имя `work-<n>`, полное имя `{name}-work-<n>`, ограничения и прямые указания.
12
+ Сохрани весь текст текущего сообщения дословно в `$USER_REQUEST`. Это главный вход: номер worktree, короткое имя или полное имя, ограничения и прямые указания. Аргумент принимает как `1`, `work-1` или `{name}-work-1`.
13
13
 
14
14
  Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно. При последующем ответе на вопрос сохрани исходный `$USER_REQUEST` и передай ответ отдельно.
15
15
 
@@ -64,6 +64,8 @@ USER_REQUEST:
64
64
  - статус: `merged`, `already up to date` или `conflict`;
65
65
  - что worktree и исходная ветка не удалялись.
66
66
 
67
+ После успешного merge скил не удаляет worktree и ветку.
68
+
67
69
  ## Чего НЕ делать
68
70
 
69
71
  - Выполнять работу `eda-merge-worktree-executor` основным агентом.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-new-project
3
- description: 'Помогает начать новый проект: вместе с пользователем собирает требования, функциональность, границы, сценарии, ограничения и архитектурные драйверы, сравнивает варианты основного стека и фиксирует выбранные компоненты с актуальными стабильными версиями. Не проектирует архитектуру, правила, проверки, AI-скилы или MCP, не пишет код и не ставит зависимости: сохраняет подтверждённый стартовый документ в docs/project-starts/ и всегда передаёт его eda-prepare-ai для полного технического bootstrap.'
3
+ description: 'Собирает и согласует требования, границы, архитектурные драйверы и основной стек нового проекта, затем запускает его техническую подготовку.'
4
4
  ---
5
5
 
6
6
  # Скил: Новый проект (eda-new-project)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-orhestra
3
- description: 'Оркестрирует настраиваемую цепочку установленных `eda-*`-скилов по описанию задачи или готовому артефакту. Каждый этап, включая составные скилы, запускает в отдельном изолированном субагенте. Порядок, включение шагов и аргументы берёт из `orhestra.steps` в `docs/settings.yaml` или текущего вызова. В `automatic` безопасно закрывает рабочие вопросы сам, в `manual` ведёт планирование вместе с человеком. Умеет после failed manual-test запустить настроенный fix и повторные шаги. Не выполняет git/publish-действия.'
3
+ description: 'Выполняет настраиваемую цепочку `eda-*`-скилов для задачи или готового артефакта.'
4
4
  ---
5
5
 
6
6
  # Скил: Оркестра полного цикла (eda-orhestra)
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: eda-plan
3
- description: 'Пишет исполнимый план реализации через стандартный Plan Mode Claude Code / Codex и сохраняет его в docs/plans/. Перед планированием читает docs/rules.md, docs/arch.md и только релевантные карточки из docs/references/ как обязательную рамку, подтягивает research и настройки. Не оставляет неподтверждённых решений, явно описывает БД/API-контракты и помечает задачи, которые безопасно выполнять параллельно. После сохранения всегда запускает три параллельных мета-ревьюера; strict добавляет кросс-CLI.'
3
+ description: 'Создаёт подробный исполнимый план реализации задачи и сохраняет его в `docs/plans/`.'
4
4
  ---
5
5
 
6
6
  # Скил: Планировщик (eda-plan)
7
7
 
8
- Собираешь контекст, запускаешь стандартный Plan Mode хост-агента, нормализуешь результат в файл `docs/plans/`, явно помечаешь зависимости и безопасную параллельность задач, затем проверяешь план тремя параллельными субагентами/моделями. В `strict` добавляешь кросс-CLI проверку.
8
+ Собираешь контекст, запускаешь стандартный Plan Mode хост-агента, нормализуешь результат в файл `docs/plans/`, явно помечаешь зависимости задач и формируешь связные фазы для выполнения одним агентом, затем проверяешь план тремя параллельными субагентами/моделями. В `strict` добавляешь кросс-CLI проверку.
9
9
 
10
10
  ## Режим запуска
11
11
 
@@ -61,7 +61,7 @@ description: 'Пишет исполнимый план реализации че
61
61
  7. Финальный план должен быть простым, исполнимым и без альтернатив вида «выбрать», «решить», «можно так или так», «предпочтительно».
62
62
  8. Если нужны пакеты, библиотеки, CLI, сервисы или другое ПО, а версия не указана в контексте или lock/config-файлах, найди последнюю стабильную версию через context7 или web search по официальным источникам. Не пиши `latest` без конкретной версии и источника.
63
63
  9. Если выбран `plan.size: short`, но задача не укладывается в ограничения, не сохраняй short-план: объясни причину, оцени нужный объём и спроси, продолжать в `normal` или сузить задачу.
64
- 10. Каждой задаче в фазах присвой уникальный ID, укажи её прямые зависимости и явно пометь, с какими задачами её безопасно выполнять параллельно. Не считай задачи параллельными, если они меняют один файл или участок кода, общий изменяемый контракт, одну миграционную цепочку либо используют результат друг друга.
64
+ 10. Каждой задаче в фазах присвой уникальный ID и укажи её прямые зависимости. Собери каждую фазу вокруг одной связной цели и объёма, который один исполнитель может реализовать и проверить за один проход; слишком крупную или несвязную фазу раздели.
65
65
 
66
66
  ## Этапы
67
67
 
@@ -86,7 +86,7 @@ description: 'Пишет исполнимый план реализации че
86
86
  5. Пути к `docs/rules.md`, `docs/arch.md`, применимым карточкам, research и выписку обязательных элементов рамки.
87
87
  6. Требование: план следует правилам, архитектуре и применимым эталонам с указанным приоритетом; при конфликте или необоснованном отклонении остановиться и спросить пользователя.
88
88
  7. Требование: финальный план нормализуется в структуру ниже, не смешивает исследование с исполнением и не добавляет неподтверждённые существенные решения.
89
- 8. Требование: каждая задача получает уникальный ID, прямые зависимости и явную маркировку безопасной параллельности с другими задачами.
89
+ 8. Требование: каждая задача получает уникальный ID и прямые зависимости, а каждая фаза образует связный объём работы для одного исполнителя.
90
90
 
91
91
  Не выходи из Plan Mode, пока пользователь не подтвердил план.
92
92
 
@@ -135,9 +135,9 @@ sources:
135
135
  Цель: <зачем нужна фаза>.
136
136
 
137
137
  Что сделать:
138
- - `[1.1]` <конкретная задача>. Зависит от: `—`. Параллельно: `[1.2]`.
139
- - `[1.2]` <конкретная задача>. Зависит от: `—`. Параллельно: `[1.1]`.
140
- - `[1.3]` <конкретная задача>. Зависит от: `[1.1, 1.2]`. Параллельно: `нет`.
138
+ - `[1.1]` <конкретная задача>. Зависит от: `—`.
139
+ - `[1.2]` <конкретная задача>. Зависит от: `[1.1]`.
140
+ - `[1.3]` <конкретная задача>. Зависит от: `[1.2]`.
141
141
 
142
142
  Результат: <готовое состояние>.
143
143
 
@@ -163,10 +163,9 @@ sources:
163
163
  Правила структуры:
164
164
 
165
165
  - Риски не выносятся в отдельный обязательный раздел; закрытые риски встраиваются в решения, фазы, сценарии тестирования, проверки, логирование или эксплуатацию.
166
- - Отдельный раздел порядка выполнения не нужен: основной поток задаётся номерами фаз, ID задач и их зависимостями, а допустимые пересечения — полем `Параллельно` внутри каждой задачи.
166
+ - Отдельный раздел порядка выполнения не нужен: основной поток задаётся номерами фаз, ID задач и их зависимостями.
167
167
  - ID задачи имеет формат `[<номер фазы>.<номер задачи>]` и уникален во всём плане. В `Зависит от` перечисляй только прямые зависимости; `—` означает, что задачу можно начинать независимо от других задач плана.
168
- - В `Параллельно` перечисляй ID всех задач, которые можно безопасно выполнять одновременно с этой задачей, либо пиши `нет`. Маркировка должна быть симметричной: если `[1.1]` параллельна `[2.1]`, это указывается у обеих задач.
169
- - Перед маркировкой проверь пересечения по файлам и участкам кода, данным, БД-миграциям, API/событийным схемам, сгенерированным артефактам и общему изменяемому состоянию. При конфликте или зависимости параллельность запрещена.
168
+ - Одну фазу целиком выполняет один изолированный субагент `eda-plan-execute`. Задачи фазы должны относиться к общей цели, иметь согласованный scope и помещаться в один исполнительский проход вместе с точечными и фазовыми проверками.
170
169
  - В `Контракты реализации` попадают схемы данных, БД, API и внешние контракты; если область не затрагивается, напиши `Не затрагивается`.
171
170
  - В фазах нельзя ограничиваться общими формулировками вроде «обновить UI», «добавить сервис», «реализовать логику». Для UI опиши пользовательский сценарий, состояния успеха/ошибки и видимый результат; для внутренней логики — ответственность частей, поток данных, состояния и ошибки.
172
171
  - Если нужен раздел `Открытые вопросы`, оставь `status: draft`, сохрани файл и не запускай мета-ревью до ответа пользователя.
@@ -179,7 +178,7 @@ Quality gate перед сохранением и после мета-ревью
179
178
  - нет конфликтов с правилами, архитектурой, границами модулей, API, миграциями, зависимостями и командами проверки;
180
179
  - БД/API изменения описаны конкретно, а не общими словами;
181
180
  - каждая фаза имеет цель, шаги, результат, сценарии тестирования и проверку;
182
- - каждая задача имеет уникальный ID, прямые зависимости и поле `Параллельно`; ссылки на ID существуют, параллельность симметрична и не конфликтует с зависимостями или общими изменяемыми ресурсами;
181
+ - каждая задача имеет уникальный ID и прямые зависимости, ссылки на ID существуют, а каждая фаза связна и выполнима одним агентом за один проход;
183
182
  - `test_strategy` и `logging_strategy` применены в фазах и отдельных разделах;
184
183
  - для `short` не больше 2 фаз и явно указан ожидаемый объём;
185
184
  - пакеты/ПО имеют конкретные версии или ссылку на существующий lock/config;
@@ -198,7 +197,7 @@ Quality gate перед сохранением и после мета-ревью
198
197
 
199
198
  В интерактивном Codex, если доступен инструмент субагентов (`spawn_agent` или аналог), используй его. Не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны. В неинтерактивном fallback запускай три `codex exec --model <id>` параллельно одной Bash-командой с `&` и общим `wait`.
200
199
 
201
- Промпт всем: прочитать план, `docs/rules.md`, `docs/arch.md`, карточки из `sources.references`, research из `sources.research` при наличии и релевантный код по глубине модели. Найти пропущенные шаги, нарушения правил/архитектуры/эталонов, необоснованные отклонения, скрытые риски, риски для смежного кода, недостающие тесты, шаги без критериев готовности, неверные зависимости и небезопасную или упущенную параллельность. Формат ответа: `+ N | − N | ~ N: причина`; флагману явно скажи открывать файлы модулей, API, тестов и сценариев, на которые ссылается план.
200
+ Промпт всем: прочитать план, `docs/rules.md`, `docs/arch.md`, карточки из `sources.references`, research из `sources.research` при наличии и релевантный код по глубине модели. Найти пропущенные шаги, нарушения правил/архитектуры/эталонов, необоснованные отклонения, скрытые риски, риски для смежного кода, недостающие тесты, шаги без критериев готовности, неверные зависимости и слишком крупные или несвязные фазы для одного исполнителя. Формат ответа: `+ N | − N | ~ N: причина`; флагману явно скажи открывать файлы модулей, API, тестов и сценариев, на которые ссылается план.
202
201
 
203
202
  После ответов интегрируй принятые замечания в основные разделы плана, снова прогони quality gate и добавь:
204
203
 
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: eda-plan-execute
3
- description: 'Управляет выполнением готового плана из docs/plans/: проходит фазы строго последовательно, строит волны задач по зависимостям и запускает безопасно совместимые задачи параллельно в отдельных изолированных субагентах. Разработку, исправления и все проверки выполняют только субагенты; основной агент координирует их, ведёт чекбоксы плана и журнал в docs/executions/. Не коммитит и не делает ревью.'
3
+ description: 'Выполняет готовый план из `docs/plans/` последовательно по фазам с независимой проверкой результата.'
4
4
  ---
5
5
 
6
6
  # Скил: Управляющий выполнением плана (eda-plan-execute)
7
7
 
8
- Оркестрируй выполнение готового плана. Сам не реализуй задачи и не запускай проверки проекта: передавай каждую задачу, исправление и проверку новому изолированному субагенту. Сам выбирай готовые к запуску задачи, связывай результаты, обновляй прогресс плана и журнал выполнения.
8
+ Оркестрируй выполнение готового плана. Сам не реализуй задачи и не запускай проверки проекта: передавай каждую фазу целиком отдельному изолированному субагенту, а её приёмку — отдельному проверяющему. Связывай результаты фаз, обновляй прогресс плана и журнал выполнения.
9
9
 
10
10
  ## Вход из сообщения пользователя
11
11
 
@@ -16,14 +16,13 @@ description: 'Управляет выполнением готового пла
16
16
  ## Главные правила
17
17
 
18
18
  1. **Основной агент только управляет.** Разрешены чтение контекста, построение очереди, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию проекта и git-состояние меняют только назначенные субагенты.
19
- 2. **Фазы выполняй строго последовательно.** Не запускай задачу следующей фазы, пока все задачи текущей фазы не завершены и отдельная проверка фазы не прошла.
20
- 3. **Каждая работа изолирована.** Каждую задачу плана, подготовку ветки/worktree, исправление после падения, проверку фазы и финальную проверку запускай новым субагентом со свежим контекстом без истории диалога.
21
- 4. **Безопасную параллельность используй обязательно.** Внутри текущей фазы одновременно запускай все готовые задачи, которые план взаимно пометил как параллельные и которые не пересекаются по изменяемым файлам, контрактам, данным или общему состоянию. Остальные запускай последовательными волнами по зависимостям.
22
- 5. **План и проектная документация — обязательная рамка исполнения.** Перед запуском прочитай план, `docs/rules.md`, `docs/arch.md` и карточки из `sources.references`; для старого плана выбери через `docs/references.md` только применимые карточки.
23
- 6. **Соблюдай приоритет и блокируй конфликт.** Приоритет: подтверждённое решение пользователя → `docs/rules.md` → `docs/arch.md` → релевантные карточки. При конфликте или необоснованном отклонении от примера применимой карточки не поручай реализацию: спроси, адаптировать план, вернуться к `eda-plan` или отдельно изменить документацию.
24
- 7. **Отмечай только подтверждённое.** Ставь задаче `[x]` только после `completed` от исполнителя и успешных обязательных проверок задачи. Фазу закрывай только после отдельного `passed` от проверяющего фазы. При последующем опровержении верни отметку в незавершённое состояние.
25
- 8. **Проверки нельзя подавлять.** Не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, добавлять игноры или ослаблять команды и правила. Причину падения исправляет отдельный субагент, затем новый субагент повторяет проверку.
26
- 9. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
19
+ 2. **Фазы выполняй строго последовательно.** Не запускай следующую фазу, пока исполнитель текущей не завершил все её задачи и отдельная проверка фазы не прошла.
20
+ 3. **Одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Сохраняй идентификатор исполнителя и продолжай его же для вопросов и исправлений этой фазы, пока среда позволяет.
21
+ 4. **Рамку читает исполнитель фазы.** Каждый исполнитель целиком читает план, `docs/rules.md`, `docs/arch.md` и индекс `docs/references.md`, если файлы существуют. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, исполнитель читает эту карточку целиком перед соответствующим изменением.
22
+ 5. **Соблюдай приоритет и блокируй конфликт.** Приоритет: подтверждённое решение пользователя → `docs/rules.md` → `docs/arch.md` → релевантные карточки. При конфликте или необоснованном отклонении от примера применимой карточки исполнитель возвращает `blocked`, а основной агент спрашивает, адаптировать план, вернуться к `eda-plan` или отдельно изменить документацию.
23
+ 6. **Отмечай только подтверждённое.** Ставь задаче `[x]` только после `completed` от исполнителя и успешной точечной проверки. Фазу закрывай только после отдельного `passed` от проверяющего фазы. При последующем опровержении верни отметку в незавершённое состояние.
24
+ 7. **Проверки нельзя подавлять.** Не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, добавлять игноры или ослаблять команды и правила. Причину падения исправляет исполнитель соответствующей фазы, затем отдельный субагент повторяет проверку.
25
+ 8. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
27
26
 
28
27
  ## Интерактивные вопросы
29
28
 
@@ -53,19 +52,16 @@ description: 'Управляет выполнением готового пла
53
52
 
54
53
  Сам git-команды не выполняй. Для выбранной новой ветки или worktree запусти отдельного изолированного субагента подготовки окружения. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. Если выбран worktree, после успешного создания остановись и дай готовую команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`: текущая сессия не переезжает в другую директорию.
55
54
 
56
- ### 3. Прочитать рамку и построить граф
55
+ ### 3. Прочитать план и проверить фазы
57
56
 
58
- Прочитай `$PLAN_FILE`, `docs/rules.md` и `docs/arch.md`, если они есть. Прочитай перечисленные в `sources.references` карточки. Для старого плана без поля прочитай индекс `docs/references.md` и выбери только карточки для затронутых компонентов.
59
-
60
- Для каждой фазы извлеки задачи, ID, прямые зависимости, поле `Параллельно`, ожидаемый результат, сценарии тестирования и проверки. До запуска проверь:
57
+ Прочитай `$PLAN_FILE`. Для каждой фазы извлеки задачи, ID, прямые зависимости, ожидаемый результат, сценарии тестирования и проверки. До запуска проверь:
61
58
 
62
59
  - все ID уникальны, а ссылки ведут на существующие задачи;
63
60
  - зависимости не образуют цикл и не ведут в будущую фазу;
64
- - параллельность симметрична и не противоречит зависимостям;
65
- - параллельные задачи не меняют одни файлы или участки, общий контракт, одну миграционную цепочку, общие генерируемые артефакты или иное изменяемое состояние;
66
- - шаги не конфликтуют с правилами, архитектурой и применимыми карточками;
67
61
  - у каждой фазы есть проверяемый результат и команда либо критерий проверки.
68
62
 
63
+ Поля `Параллельно` в старых планах не влияют на исполнение: все задачи фазы выполняет один субагент по зависимостям.
64
+
69
65
  Если граф неоднозначен или небезопасен, не исправляй смысл плана молча. Используй `AskUserQuestion` с предложением вернуть план в `eda-plan` или `eda-plan-polish`.
70
66
 
71
67
  ### 4. Инициализировать прогресс
@@ -89,7 +85,7 @@ current_phase: <номер>
89
85
  |---|---|---|---|
90
86
 
91
87
  ## Запуски субагентов
92
- | Время | Роль | Задача | Результат | Файлы | Проверки |
88
+ | Время | Роль | Фаза | Результат | Файлы | Проверки |
93
89
  |---|---|---|---|---|---|
94
90
 
95
91
  ## Решения и блокеры
@@ -103,22 +99,26 @@ current_phase: <номер>
103
99
 
104
100
  В Codex используй `spawn_agent` с `fork_turns: "none"` или точный аналог. В Claude Code используй новый `Agent` с самодостаточным task-сообщением. Если чистая изоляция или субагенты недоступны, остановись с `blocked: недоступно изолированное выполнение`; не выполняй работу основным агентом и не добавляй CLI-fallback.
105
101
 
106
- Каждому исполнителю задачи передай только:
102
+ Каждому исполнителю фазы передай:
107
103
 
108
- - рабочую директорию, `$PLAN_FILE`, ID и полный текст одной задачи;
109
- - цель и критерии готовности текущей фазы;
110
- - прямые зависимости и краткие результаты уже завершённых зависимостей;
111
- - пути к `docs/rules.md`, `docs/arch.md`, применимым карточкам и другим явно нужным источникам;
112
- - команды или критерии проверки этой задачи;
113
- - ограничения пользователя, запрет коммитить и запрет менять план и журнал.
104
+ - рабочую директорию, `$PLAN_FILE`, номер и полный текст текущей фазы;
105
+ - краткие результаты уже завершённых фаз;
106
+ - пути к `docs/rules.md`, `docs/arch.md` и `docs/references.md`;
107
+ - ограничения пользователя, команды и критерии проверки фазы, запрет коммитить и запрет менять план и журнал.
114
108
 
115
- Исполнитель сам читает переданные файлы, исследует нужный код, реализует только назначенную задачу и выполняет её точечные проверки. Требуй YAML-результат:
109
+ Исполнитель целиком читает `$PLAN_FILE`, `docs/rules.md` и `docs/arch.md`, затем выполняет все задачи назначенной фазы по прямым зависимостям. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, исполнитель читает эту карточку целиком перед соответствующим изменением. После каждой задачи он выполняет её точечные проверки, а в конце — все проверки фазы. Требуй YAML-результат:
116
110
 
117
111
  ```yaml
118
112
  status: completed | needs_input | failed | blocked
119
- task: <ID>
113
+ phase: <номер>
120
114
  summary: <что сделано>
115
+ tasks:
116
+ - id: <ID>
117
+ status: completed | failed | blocked
118
+ summary: <кратко>
119
+ checks: [<результаты точечных проверок>]
121
120
  files_changed: [<пути>]
121
+ references_read: [<пути или пусто>]
122
122
  checks:
123
123
  - command: <команда или критерий>
124
124
  status: passed | failed | not_run
@@ -128,26 +128,22 @@ risks: [<остаточные риски или пусто>]
128
128
  questions: [<вопросы или пусто>]
129
129
  ```
130
130
 
131
- Не принимай `completed`, если обязательная проверка задачи не прошла, исполнитель вышел за назначенный scope, молча отклонился от рамки или изменил план/журнал.
131
+ Не принимай `completed`, если хотя бы одна задача или обязательная проверка фазы не прошла, исполнитель вышел за назначенный scope, молча отклонился от рамки или изменил план/журнал.
132
132
 
133
- ### 6. Выполнять фазы волнами
133
+ ### 6. Выполнять фазы
134
134
 
135
135
  Для каждой фазы по порядку:
136
136
 
137
- 1. Вычисли готовые задачи: все их прямые зависимости уже отмечены выполненными.
138
- 2. Из готовых задач собери максимальную безопасную волну по взаимным полям `Параллельно` и отсутствию пересечений. Не включай задачу в параллельную волну только по догадке, если план не разрешает параллельность явно.
139
- 3. Запусти всех исполнителей волны одновременно одним batch до чтения отдельных результатов. Если лимит среды меньше размера волны, используй максимально доступное число слотов и запускай остаток сразу после освобождения слотов.
140
- 4. После завершения каждого исполнителя проверь контракт, фактический scope файлов и результат точечных проверок. Запиши запуск в журнал и поставь `[x]` только успешной задаче.
141
- 5. `needs_input` передай пользователю одним блокирующим вопросом и после ответа продолжи ту же задачу новым изолированным субагентом с ответом и предыдущим результатом.
142
- 6. Для `failed` запусти нового изолированного субагента исправления этой же задачи. Передай исходную задачу, полный неуспешный результат и актуальное состояние файлов. После исправления новый субагент должен повторить точечную проверку. Если две попытки подряд возвращают ту же причину без содержательного изменения результата, остановись с `blocked: выполнение не сходится` и зафиксируй доказательства вместо бесконечного цикла.
143
- 7. Для `blocked` останови зависимые задачи. Если блокер внешний или требует изменения scope, задай вопрос; основной агент не устраняет его содержательно.
144
- 8. Когда волна завершена, пересчитай готовые задачи. Не переходи к следующей фазе, пока текущая не закрыта.
145
-
146
- Если параллельные исполнители неожиданно пересеклись по файлам или контракту, не объединяй результаты вслепую. Останови затронутые задачи, запиши конфликт и запусти отдельного субагента для диагностики и безопасного согласования изменений.
137
+ 1. Запусти одного нового изолированного исполнителя и сохрани его идентификатор как исполнителя этой фазы.
138
+ 2. После ответа проверь YAML-контракт, фактический scope файлов и результаты точечных и фазовых проверок. Запиши запуск в журнал и поставь `[x]` только задачам со статусом `completed` и успешными точечными проверками.
139
+ 3. `needs_input` передай пользователю одним блокирующим вопросом. После ответа продолжи того же исполнителя фазы с ответом и его предыдущим результатом. Если среда не умеет продолжать завершённого субагента, запусти нового изолированного исполнителя этой же фазы и передай ему полный предыдущий результат.
140
+ 4. Для `failed` продолжи того же исполнителя фазы с полным неуспешным результатом и поручением исправить причину и повторить проверки. Если две попытки подряд возвращают ту же причину без содержательного изменения результата, остановись с `blocked: выполнение не сходится` и зафиксируй доказательства вместо бесконечного цикла.
141
+ 5. Для `blocked` останови выполнение. Если блокер внешний или требует изменения scope, задай вопрос; основной агент не устраняет его содержательно.
142
+ 6. После `completed` запусти независимую проверку фазы. Не переходи к следующей фазе, пока текущая не закрыта.
147
143
 
148
144
  ### 7. Проверять каждую фазу
149
145
 
150
- После выполнения всех задач фазы запусти нового изолированного субагента-проверяющего. Он не меняет файлы, читает итог фазы, выполняет все проверки из раздела фазы и подтверждает критерии результата. Требуй YAML:
146
+ После `completed` от исполнителя запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md`, `docs/arch.md` и индекс `docs/references.md`, если они существуют. Если итог фазы затрагивает компонент, для которого в индексе указана карточка, проверяющий читает её целиком. Затем он выполняет все проверки из раздела фазы и подтверждает критерии результата. Требуй YAML:
151
147
 
152
148
  ```yaml
153
149
  status: passed | failed | blocked
@@ -157,29 +153,29 @@ checks:
157
153
  status: passed | failed
158
154
  result: <кратко>
159
155
  failures: [<проблемы с доказательствами или пусто>]
156
+ references_read: [<пути или пусто>]
160
157
  ```
161
158
 
162
- При `failed` сопоставь проблемы с задачами и запусти по каждой отдельного изолированного субагента исправления. Затем запусти нового проверяющего всей фазы. Основной агент не чинит код и не переиспользует контекст прежнего проверяющего. При `passed` отметь фазу завершённой и только тогда переходи к следующей.
159
+ При `failed` передай полный результат проверки исполнителю этой фазы и поручи исправить все подтверждённые проблемы, затем запусти нового проверяющего всей фазы. Если продолжить прежнего исполнителя невозможно, запусти одного нового изолированного исполнителя для исправления всей фазы с её полным контекстом. Основной агент не чинит код и не переиспользует контекст прежнего проверяющего. При `passed` отметь фазу завершённой и только тогда переходи к следующей.
163
160
 
164
161
  ### 8. Выполнить финальную проверку
165
162
 
166
- После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только проверяет и не меняет файлы.
163
+ После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только проверяет и не меняет файлы, целиком читает план, `docs/rules.md`, `docs/arch.md` и индекс `docs/references.md`, если они существуют. Если итоговые изменения затрагивают компонент, для которого в индексе указана карточка, проверяющий читает её целиком перед оценкой соответствующего результата.
167
164
 
168
- Если финальная проверка упала из-за сделанных изменений, запусти изолированных субагентов исправления по независимым группам ошибок, затем повтори всю финальную проверку новым субагентом. Чужую или несвязанную поломку зафиксируй и используй `AskUserQuestion`, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
165
+ Если финальная проверка упала из-за сделанных изменений, сопоставь ошибки с фазами и передай каждую группу исполнителю соответствующей фазы; несколько затронутых фаз исправляй по порядку плана. Если продолжить прежнего исполнителя невозможно, запусти одного нового изолированного исполнителя для каждой затронутой фазы. Затем повтори всю финальную проверку новым субагентом. Чужую или несвязанную поломку зафиксируй и используй `AskUserQuestion`, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
169
166
 
170
167
  Запиши команды и результаты в `## Финальная проверка`. Только после `passed` поставь в журнале `status: done` и время завершения. Если обязательная проверка объективно недоступна, сохрани `status: blocked`, причину и непройденные критерии; не выдавай план за выполненный.
171
168
 
172
169
  ### 9. Финал
173
170
 
174
- Коротко сообщи пути к плану и журналу, завершённые фазы и задачи, какие волны выполнялись параллельно, результат фазовых и финальной проверок, оставшиеся блокеры, состояние git «не закоммичено» и следующий шаг: `eda-review` или `eda-commit`.
171
+ Коротко сообщи пути к плану и журналу, завершённые фазы и задачи, результат фазовых и финальной проверок, оставшиеся блокеры, состояние git «не закоммичено» и следующий шаг: `eda-review` или `eda-commit`.
175
172
 
176
173
  ## Чего НЕ делать
177
174
 
178
175
  - Самому менять код, тесты, миграции, конфиги, зависимости или проектную документацию.
179
176
  - Самому запускать тесты, линтеры, typecheck, сборку, миграции, серверы или другие команды разработки и проверки.
180
- - Передавать одному субагенту несколько независимых задач только ради экономии запусков.
177
+ - Дробить одну фазу между несколькими исполнителями или поручать одному исполнителю несколько фаз.
181
178
  - Запускать следующую фазу до успешной отдельной проверки текущей.
182
- - Запускать параллельно задачи без явной безопасной маркировки плана или с пересечением изменяемых ресурсов.
183
179
  - Давать субагентам историю диалога или разрешать им менять план и журнал.
184
180
  - Исправлять падение основным агентом либо продолжать после него без повторной проверки новым субагентом.
185
181
  - Подавлять ошибки проверок, ослаблять правила или менять команды ради зелёного результата.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-plan-polish
3
- description: 'Полирует готовый план из `docs/plans/...` до оценки 95/100 или заданного порога. Каждая итерация запускает три изолированных параллельных агента, которые читают правила, архитектуру, `sources.references`, research и релевантный код. В strict дополнительно запускает кросс-CLI ревью. Основной агент оценивает ответы, принимает или отклоняет предложения, содержательно правит только файл плана, не меняет код и не запускает проверки.'
3
+ description: 'Проверяет и улучшает готовый план реализации итерациями до заданной оценки.'
4
4
  ---
5
5
 
6
6
  # Скил: Полировка плана (eda-plan-polish)
@@ -81,7 +81,7 @@ description: 'Полирует готовый план из `docs/plans/...` д
81
81
  ```text
82
82
  Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карточки из sources.references, sources.research при наличии и релевантные файлы, на которые ссылается план. Если sources.references отсутствует, прочитай docs/references.md и выбери только применимые карточки.
83
83
 
84
- Проверь весь план целиком: исполнимость, соответствие правилам, архитектуре и применимым эталонам, обоснованность отклонений от примеров, полноту целевого алгоритма, БД/API/внешние контракты, фазы, тестовые сценарии, логирование, неподтверждённые решения, скрытые риски и места, где eda-plan-execute не сможет продолжить без нового исследования.
84
+ Проверь весь план целиком: исполнимость, соответствие правилам, архитектуре и применимым эталонам, обоснованность отклонений от примеров, полноту целевого алгоритма, БД/API/внешние контракты, связность и размер фаз для одного исполнителя на фазу, тестовые сценарии, логирование, неподтверждённые решения, скрытые риски и места, где eda-plan-execute не сможет продолжить без нового исследования.
85
85
 
86
86
  Не правь файлы и не запускай проверки, тесты, линтеры, билды, typecheck, dev-серверы, миграции, браузерные проверки или API-запросы. Можно только читать файлы.
87
87
 
@@ -100,13 +100,13 @@ score: <0–100>
100
100
  Если ты в Claude Code — запускай Codex CLI:
101
101
 
102
102
  ```bash
103
- codex exec "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карточки из sources.references, sources.research при наличии и релевантные файлы, на которые ссылается план. Если sources.references отсутствует, выбери применимые карточки через docs/references.md. Глубоко проверь весь план целиком: исполнимость, соответствие правилам, архитектуре и эталонам, обоснованность отклонений, полноту целевого алгоритма, БД/API/внешние контракты, фазы, тесты, логирование, неподтверждённые решения и скрытые риски. Не правь файлы и не запускай проверки, тесты, линтеры, билды, typecheck, dev-серверы, миграции, браузерные проверки или API-запросы. Можно только читать файлы. Ответь кратко: score: <0–100>; + Принять; ~ Уточнить; -- Убрать; ? Вопрос." > "${PLAN_FILE%.md}_strict_cli_review.md"
103
+ codex exec "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карточки из sources.references, sources.research при наличии и релевантные файлы, на которые ссылается план. Если sources.references отсутствует, выбери применимые карточки через docs/references.md. Глубоко проверь весь план целиком: исполнимость, соответствие правилам, архитектуре и эталонам, обоснованность отклонений, полноту целевого алгоритма, БД/API/внешние контракты, связность и размер фаз для одного исполнителя на фазу, тесты, логирование, неподтверждённые решения и скрытые риски. Не правь файлы и не запускай проверки, тесты, линтеры, билды, typecheck, dev-серверы, миграции, браузерные проверки или API-запросы. Можно только читать файлы. Ответь кратко: score: <0–100>; + Принять; ~ Уточнить; -- Убрать; ? Вопрос." > "${PLAN_FILE%.md}_strict_cli_review.md"
104
104
  ```
105
105
 
106
106
  Если ты в Codex — запускай Claude CLI:
107
107
 
108
108
  ```bash
109
- claude -p "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карточки из sources.references, sources.research при наличии и релевантные файлы, на которые ссылается план. Если sources.references отсутствует, выбери применимые карточки через docs/references.md. Глубоко проверь весь план целиком: исполнимость, соответствие правилам, архитектуре и эталонам, обоснованность отклонений, полноту целевого алгоритма, БД/API/внешние контракты, фазы, тесты, логирование, неподтверждённые решения и скрытые риски. Не правь файлы и не запускай проверки, тесты, линтеры, билды, typecheck, dev-серверы, миграции, браузерные проверки или API-запросы. Можно только читать файлы. Ответь кратко: score: <0–100>; + Принять; ~ Уточнить; -- Убрать; ? Вопрос." > "${PLAN_FILE%.md}_strict_cli_review.md"
109
+ claude -p "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карточки из sources.references, sources.research при наличии и релевантные файлы, на которые ссылается план. Если sources.references отсутствует, выбери применимые карточки через docs/references.md. Глубоко проверь весь план целиком: исполнимость, соответствие правилам, архитектуре и эталонам, обоснованность отклонений, полноту целевого алгоритма, БД/API/внешние контракты, связность и размер фаз для одного исполнителя на фазу, тесты, логирование, неподтверждённые решения и скрытые риски. Не правь файлы и не запускай проверки, тесты, линтеры, билды, typecheck, dev-серверы, миграции, браузерные проверки или API-запросы. Можно только читать файлы. Ответь кратко: score: <0–100>; + Принять; ~ Уточнить; -- Убрать; ? Вопрос." > "${PLAN_FILE%.md}_strict_cli_review.md"
110
110
  ```
111
111
 
112
112
  Если соседней CLI нет — `AskUserQuestion`: продолжить как `normal` без кросс-CLI или прервать полировку. Не заменяй кросс-CLI четвёртым локальным субагентом.
@@ -124,6 +124,7 @@ claude -p "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карто
124
124
  - `Целевой алгоритм` описывает сквозное поведение;
125
125
  - `Контракты реализации` конкретны, особенно БД/API/внешние контракты;
126
126
  - фазы имеют цель, шаги, результат, сценарии тестирования и проверку;
127
+ - каждая фаза связна и выполнима одним агентом за один проход;
127
128
  - `test_strategy` и `logging_strategy` отражены в фазах и разделах;
128
129
  - нет альтернатив вида «выбрать», «решить», «уточнить позже»;
129
130
  - план можно передать в `eda-plan-execute` без нового исследования.
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: eda-polish
3
- description: 'Автономно доводит изменения до заданной оценки: в каждой итерации запускает полное `eda-review`, затем `eda-fix-by-review apply-optional` и повторяет цикл до порога или лимита. Все обязательные замечания исправляются, optional-пункты fix-агент применяет или отклоняет с причиной. По умолчанию цель — 95/100, лимит — 5 итераций. Каждый шаг идёт в изолированном субагенте. Не делает ревью или правки основным агентом и не коммитит.'
3
+ description: 'Итеративно ревьюит и исправляет изменения до заданной оценки качества.'
4
4
  ---
5
5
 
6
6
  # Скил: Полировка изменений (eda-polish)
7
7
 
8
8
  Оркестрируй цикл `eda-review` → `eda-fix-by-review apply-optional` → повторное `eda-review`. Основной агент только управляет итерациями, читает сохранённые артефакты и сообщает результат.
9
+ В начале каждой итерации запускай полное `eda-review` целевого изменения.
9
10
 
10
11
  ## Вход из сообщения пользователя
11
12
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-prepare-ai
3
- description: 'Проектирует или актуализирует архитектуру, строгие правила, профиль инструментов, автоматические проверки и AI-процесс проекта, затем создаёт `docs/rules.md`, `docs/arch.md`, индекс и карточки `docs/references/`, компактный `AGENTS.md` и минимальный `CLAUDE.md`. Для нового проекта принимает подтверждённый бриф eda-new-project как источник требований, стека и архитектурных драйверов. Подбирает применимые AI-скилы, агентные роли и MCP, но не пишет код, не меняет конфиги и не ставит зависимости.'
3
+ description: 'Готовит проект к работе с AI: проектирует архитектуру, правила, проверки, references и агентный процесс.'
4
4
  ---
5
5
 
6
6
  # Скил: Подготовка проекта для AI (eda-prepare-ai)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-review
3
- description: 'Оркестрирует полное read-only ревью diff, ветки, PR/MR, коммита, папки или файла через отдельные packaged-агенты correctness, architecture, rules, references, plan alignment, code quality, tests, security, performance, frontend, API, database, documentation и previous reviews. Выбирает применимые проверки по конфигу, объединяет только подтверждённые проблемы, ставит оценку 0–100 и сохраняет итог в docs/reviews/. Не правит код и не запускает другой CLI.'
3
+ description: 'Проводит полное read-only ревью diff, ветки, PR/MR, коммита, папки или файла и сохраняет итоговый отчёт.'
4
4
  ---
5
5
 
6
6
  # Скил: Ревьюер (eda-review)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-roadmap
3
- description: 'Создаёт roadmap-файл по продуктовой или технической теме: собирает из сообщения пользователя цель, ограничения и список задач, формулирует задачи коротко, понятно и недвусмысленно, без деталей реализации, файлов, библиотек, API и пошагового плана. При необходимости читает docs/rules.md, docs/arch.md и существующие docs/roadmaps/. Задаёт вопросы только если без ответа нельзя составить корректный список задач. Итог сохраняет в docs/roadmaps/. Не исследует глубоко, не планирует реализацию и не меняет код.'
3
+ description: 'Создаёт продуктовый или технический roadmap как список будущих задач без деталей реализации.'
4
4
  ---
5
5
 
6
6
  # Скил: Roadmap (eda-roadmap)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-send-review
3
- description: 'Отправляет готовое ревью из `docs/reviews/...` на GitHub PR через `gh`: сводку в теле review и замечания комментариями к строкам. Явный `comment`/`approve`/`request-changes` берёт из контекста текущего вызова, без него сразу использует `comment` независимо от score. По умолчанию отправляет все пункты, а по контексту — указанное подмножество. Настройка `send-review.close_previous_reviews` позволяет после успешной отправки скрыть предыдущие сводки eda-send-review и зарезолвить связанные inline-треды; текущий запрос может её переопределить. PR определяет из текста или текущей ветки, после отправки дописывает ссылку в файл. Не правит код и не делает новое ревью.'
3
+ description: 'Публикует готовое ревью из `docs/reviews/` в GitHub PR как сводку и inline-комментарии.'
4
4
  ---
5
5
 
6
6
  # Скил: Отправитель ревью (eda-send-review)
@@ -1,15 +1,17 @@
1
1
  ---
2
2
  name: eda-worktree
3
- description: 'Оркестрирует создание нового git worktree через пакетного агента на `haiku` / `gpt-5.6-luna`. Worktree создаётся рядом с основным проектом в папке `{name}-work-{n}` с одноимённой веткой. Базовую ветку берёт из текста рядом с вызовом, если она указана, иначе спрашивает интерактивно. Не правит код, не коммитит и не мержит обратно.'
3
+ description: 'Создаёт новый соседний git worktree и одноимённую ветку для изолированной работы.'
4
4
  ---
5
5
 
6
6
  # Скил: Создатель worktree (eda-worktree)
7
7
 
8
8
  Работай как лёгкий оркестратор установленного агента `eda-worktree-executor`. Сам не исследуй git-состояние, не выбирай имя или базу и не выполняй команды.
9
+ Создаваемые директория и ветка используют шаблон `{name}-work-{n}`.
9
10
 
10
11
  ## Вход из сообщения пользователя
11
12
 
12
13
  Сохрани весь текст текущего сообщения дословно в `$USER_REQUEST`. Это главный вход: базовая ветка или ref, ограничения и прямые указания.
14
+ Базовую ветку берёт из текста рядом с вызовом исполнитель; если она не указана, он возвращает вопрос.
13
15
 
14
16
  Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно. При последующем ответе на вопрос сохрани исходный `$USER_REQUEST` и передай ответ отдельно.
15
17