@gian-tiaga/eda 2.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/MIGRATION.md +68 -67
  2. package/README.md +44 -86
  3. package/agents/eda-aim-planner/prompt.md +1 -1
  4. package/agents/eda-review-api/prompt.md +5 -3
  5. package/agents/eda-review-architecture/prompt.md +6 -4
  6. package/agents/eda-review-business/prompt.md +5 -3
  7. package/agents/eda-review-code-quality/prompt.md +7 -5
  8. package/agents/eda-review-correctness/prompt.md +5 -3
  9. package/agents/eda-review-database/prompt.md +5 -3
  10. package/agents/eda-review-documentation/prompt.md +5 -3
  11. package/agents/eda-review-frontend/prompt.md +5 -3
  12. package/agents/eda-review-performance/prompt.md +7 -5
  13. package/agents/eda-review-plan-alignment/prompt.md +5 -3
  14. package/agents/eda-review-previous-reviews/prompt.md +6 -4
  15. package/agents/eda-review-references/prompt.md +5 -3
  16. package/agents/eda-review-rules/prompt.md +5 -3
  17. package/agents/eda-review-security/prompt.md +5 -3
  18. package/agents/eda-review-tests/prompt.md +5 -3
  19. package/bin/cli.js +2 -2
  20. package/lib/install.js +124 -160
  21. package/package.json +1 -1
  22. package/skills/eda-aim/SKILL.md +2 -2
  23. package/skills/eda-business/SKILL.md +47 -32
  24. package/skills/eda-discover-automations/SKILL.md +9 -9
  25. package/skills/eda-explore/SKILL.md +3 -3
  26. package/skills/eda-fix/SKILL.md +6 -6
  27. package/skills/eda-fix-by-review/SKILL.md +47 -58
  28. package/skills/eda-manual-test/SKILL.md +5 -5
  29. package/skills/eda-new-project/SKILL.md +3 -3
  30. package/skills/eda-orhestra/SKILL.md +2 -2
  31. package/skills/eda-plan/SKILL.md +92 -111
  32. package/skills/eda-plan-execute/SKILL.md +43 -68
  33. package/skills/eda-plan-polish/SKILL.md +51 -42
  34. package/skills/eda-plan-review/SKILL.md +89 -135
  35. package/skills/eda-plan-review-fix/SKILL.md +38 -63
  36. package/skills/eda-polish/SKILL.md +25 -35
  37. package/skills/eda-prepare-ai/SKILL.md +1 -1
  38. package/skills/eda-review/SKILL.md +18 -17
  39. package/skills/eda-roadmap/SKILL.md +5 -5
  40. package/skills/eda-send-review/SKILL.md +11 -11
  41. package/agents/eda-plan-review-api/agent.json +0 -9
  42. package/agents/eda-plan-review-api/prompt.md +0 -34
  43. package/agents/eda-plan-review-architecture/agent.json +0 -9
  44. package/agents/eda-plan-review-architecture/prompt.md +0 -34
  45. package/agents/eda-plan-review-database/agent.json +0 -9
  46. package/agents/eda-plan-review-database/prompt.md +0 -34
  47. package/agents/eda-plan-review-execution/agent.json +0 -9
  48. package/agents/eda-plan-review-execution/prompt.md +0 -34
  49. package/agents/eda-plan-review-feasibility/agent.json +0 -9
  50. package/agents/eda-plan-review-feasibility/prompt.md +0 -34
  51. package/agents/eda-plan-review-frontend/agent.json +0 -9
  52. package/agents/eda-plan-review-frontend/prompt.md +0 -34
  53. package/agents/eda-plan-review-performance/agent.json +0 -9
  54. package/agents/eda-plan-review-performance/prompt.md +0 -34
  55. package/agents/eda-plan-review-previous/agent.json +0 -9
  56. package/agents/eda-plan-review-previous/prompt.md +0 -28
  57. package/agents/eda-plan-review-requirements/agent.json +0 -9
  58. package/agents/eda-plan-review-requirements/prompt.md +0 -34
  59. package/agents/eda-plan-review-rules/agent.json +0 -9
  60. package/agents/eda-plan-review-rules/prompt.md +0 -34
  61. package/agents/eda-plan-review-security/agent.json +0 -9
  62. package/agents/eda-plan-review-security/prompt.md +0 -34
  63. package/agents/eda-plan-review-verification/agent.json +0 -9
  64. package/agents/eda-plan-review-verification/prompt.md +0 -34
@@ -1,74 +1,59 @@
1
1
  ---
2
2
  name: eda-plan-execute
3
- description: 'Выполняет готовый план из `docs/plans/` последовательно по фазам с независимой проверкой результата.'
3
+ description: 'Выполняет готовый план последовательно по фазам с независимой проверкой каждой фазы.'
4
4
  ---
5
5
 
6
6
  # Скил: Управляющий выполнением плана (eda-plan-execute)
7
7
 
8
- Оркестрируй выполнение готового плана. Сам не реализуй задачи и не запускай проверки проекта: передавай каждую фазу целиком отдельному изолированному субагенту, а её приёмку — отдельному проверяющему. Связывай результаты фаз, обновляй прогресс плана и журнал выполнения.
8
+ Оркестрируй выполнение плана. Сам не пиши код и не запускай проверки проекта: передавай каждую фазу целиком отдельному изолированному субагенту, а её приёмку — отдельному проверяющему. Связывай результаты фаз, обновляй прогресс и журнал.
9
9
 
10
10
  ## Вход из сообщения пользователя
11
11
 
12
- Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
12
+ Текст рядом с вызовом — главный вход. Разбери тему, путь к файлу, ограничения и прямые указания.
13
13
 
14
- Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не тот план. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
14
+ Если входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных планов или есть риск выполнить не тот план.
15
15
 
16
16
  ## Главные правила
17
17
 
18
- 1. **Основной агент только управляет.** Разрешены чтение контекста, построение очереди, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию проекта и git-состояние меняют только назначенные субагенты.
19
- 2. **Фазы выполняй строго последовательно.** Не запускай следующую фазу, пока исполнитель текущей не завершил все её задачи и отдельная проверка фазы не прошла.
20
- 3. **Одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Сохраняй идентификатор исполнителя и продолжай его же для вопросов и исправлений этой фазы, пока среда позволяет.
21
- 4. **Рамку читает исполнитель фазы.** Каждый исполнитель целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы он читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Нерелевантные карточки не загружает.
22
- 5. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, исполнитель возвращает `blocked`, а основной агент показывает конфликт и через `AskUserQuestion` спрашивает: изменить план через `eda-plan` или сначала пересогласовать правило через `eda-business`. Конфликты с rules, architecture или references также не разрешай молча.
23
- 6. **Отмечай только подтверждённое.** Ставь задаче `[x]` только после `completed` от исполнителя и успешной точечной проверки. Фазу закрывай только после отдельного `passed` от проверяющего фазы. При последующем опровержении верни отметку в незавершённое состояние.
24
- 7. **Проверки нельзя подавлять.** Не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, добавлять игноры или ослаблять команды и правила. Причину падения исправляет исполнитель соответствующей фазы, затем отдельный субагент повторяет проверку.
25
- 8. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
18
+ 1. **Основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты.
19
+ 2. **Фазы выполняй строго последовательно.** Не запускай следующую, пока текущая не выполнена и её отдельная проверка не прошла.
20
+ 3. **Одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Идентификатор исполнителя сохраняй и продолжай его же для вопросов и исправлений этой фазы.
21
+ 4. **Рамку читает исполнитель фазы.** Каждый исполнитель целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы он читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, исполнитель читает эту карточку целиком перед соответствующим изменением. Нерелевантные карточки не загружает.
22
+ 5. **Исполнитель не додумывает план.** Если в фазе не хватает решения, он возвращает `needs_input`, а не выбирает сам. Недостающее решение — это вопрос пользователю или возврат в `eda-plan`, но не импровизация в коде.
23
+ 6. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, `rules.md`, `arch.md` или reference-карточке, исполнитель возвращает `blocked`. Основной агент показывает конфликт и через `AskUserQuestion` спрашивает: изменить план через `eda-plan` или сначала пересогласовать правило через `eda-business`.
24
+ 7. **Отмечай только подтверждённое.** Фазу закрывай только после `completed` от исполнителя и отдельного `passed` от проверяющего. При последующем опровержении верни отметку в незавершённое состояние.
25
+ 8. **Проверки нельзя подавлять.** Не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, добавлять игноры или ослаблять команды и правила. Причину падения исправляет исполнитель фазы, затем отдельный субагент повторяет проверку.
26
+ 9. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
26
27
 
27
- ## Интерактивные вопросы
28
+ ## Вопросы
28
29
 
29
- Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
30
-
31
- - Claude Code: используй `AskUserQuestion`.
32
- - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
33
- - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
34
- - Не запускай команды, которые ждут интерактивного ввода в терминале.
30
+ Блокирующий вопрос: Claude Code — `AskUserQuestion`; Codex interactive — `request_user_input` или короткий вопрос с вариантами 1–3; Codex exec — не читай stdin, заверши со статусом `blocked: нужен ответ пользователя`. Не запускай команды, ждущие интерактивного ввода.
35
31
 
36
32
  ## Этапы
37
33
 
38
34
  ### 1. Выбрать план
39
35
 
40
- - Если указан путь к плану — используй его как `$PLAN_FILE`.
41
- - Если указано название или часть названия — найди совпадение в `docs/plans/`.
42
- - Если написано «последний план» — возьми самый новый файл из `docs/plans/`.
43
- - Если вставлен текст плана — сохрани или однозначно привяжи его к файлу в `docs/plans/` до инициализации прогресса.
36
+ Путь — используй как есть. Название или его часть — ищи совпадение в `docs/artifacts/plans/`. «Последний план» — бери самый новый файл. Вставленный текст плана сначала сохрани или однозначно привяжи к файлу.
44
37
 
45
- Если найден ровно один план, продолжай без вопроса. При нескольких равных вариантах используй `AskUserQuestion`. Если плана нет, остановись со статусом `blocked: нужен план`.
38
+ Один план — продолжай без вопроса. Несколько равных — `AskUserQuestion`. Плана нет — `blocked: нужен план`.
46
39
 
47
- Не исполняй план со статусом `draft`, открытыми вопросами, отсутствующими ID задач или неразрешёнными зависимостями. Попроси сначала завершить `eda-plan` или `eda-plan-polish`.
40
+ Не исполняй план с открытыми вопросами или неразрешёнными развилками: сначала заверши `eda-plan` или `eda-plan-polish`.
48
41
 
49
42
  ### 2. Выбрать место выполнения
50
43
 
51
44
  Через `AskUserQuestion` предложи текущую ветку, новую ветку от `main`, новую ветку от текущей или worktree от `main`. Если вызывающий оркестратор уже передал подтверждённый выбор, не спрашивай повторно.
52
45
 
53
- Сам git-команды не выполняй. Для выбранной новой ветки или worktree запусти отдельного изолированного субагента подготовки окружения. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. Если выбран worktree, после успешного создания остановись и дай готовую команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`: текущая сессия не переезжает в другую директорию.
46
+ Сам git-команды не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. После успешного создания worktree остановись и дай команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`.
54
47
 
55
48
  ### 3. Прочитать план и проверить фазы
56
49
 
57
- Прочитай `$PLAN_FILE`. Для каждой фазы извлеки задачи, ID, прямые зависимости, ожидаемый результат, сценарии тестирования и проверки. До запуска проверь:
58
-
59
- - все ID уникальны, а ссылки ведут на существующие задачи;
60
- - зависимости не образуют цикл и не ведут в будущую фазу;
61
- - у каждой фазы есть проверяемый результат и команда либо критерий проверки.
62
-
63
- Поля `Параллельно` в старых планах не влияют на исполнение: все задачи фазы выполняет один субагент по зависимостям.
50
+ Прочитай `$PLAN_FILE`. Для каждой фазы извлеки цель, что сделать, результат и проверку. До запуска убедись, что у каждой фазы есть проверяемый результат и команда или критерий проверки.
64
51
 
65
- Если граф неоднозначен или небезопасен, не исправляй смысл плана молча. Используй `AskUserQuestion` с предложением вернуть план в `eda-plan` или `eda-plan-polish`.
52
+ Если фаза не описывает проверяемый результат или её проверку нечем выполнить, не достраивай смысл молча: через `AskUserQuestion` предложи вернуть план в `eda-plan` или `eda-plan-polish`.
66
53
 
67
54
  ### 4. Инициализировать прогресс
68
55
 
69
- Создай `$EXECUTION_FILE` по пути `docs/executions/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. В `$PLAN_FILE` добавь или актуализируй один раздел `## Прогресс выполнения` со ссылкой на журнал, фазами и задачами по исходным ID.
70
-
71
- Используй в журнале структуру:
56
+ Создай `$EXECUTION_FILE` по пути `docs/artifacts/executions/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. В `$PLAN_FILE` добавь или актуализируй один раздел `## Прогресс выполнения` со ссылкой на журнал и списком фаз.
72
57
 
73
58
  ```markdown
74
59
  ---
@@ -81,7 +66,7 @@ current_phase: <номер>
81
66
  # Журнал выполнения: <заголовок>
82
67
 
83
68
  ## Фазы
84
- | Фаза | Задачи | Проверка | Статус |
69
+ | Фаза | Результат | Проверка | Статус |
85
70
  |---|---|---|---|
86
71
 
87
72
  ## Запуски субагентов
@@ -97,26 +82,16 @@ current_phase: <номер>
97
82
 
98
83
  ### 5. Запускать изолированных субагентов
99
84
 
100
- В Codex используй `spawn_agent` с `fork_turns: "none"` или точный аналог. В Claude Code используй новый `Agent` с самодостаточным task-сообщением. Если чистая изоляция или субагенты недоступны, остановись с `blocked: недоступно изолированное выполнение`; не выполняй работу основным агентом и не добавляй CLI-fallback.
101
-
102
- Каждому исполнителю фазы передай:
85
+ В Codex используй `spawn_agent` с `fork_turns: "none"`, в Claude Code — новый `Agent` с самодостаточным сообщением. Если изоляция или субагенты недоступны, остановись: `blocked: недоступно изолированное выполнение`. Работу основным агентом не делай и CLI-fallback не добавляй.
103
86
 
104
- - рабочую директорию, `$PLAN_FILE`, номер и полный текст текущей фазы;
105
- - краткие результаты уже завершённых фаз;
106
- - пути к `docs/rules.md`, `docs/arch.md`, `docs/business.md` и `docs/references.md`;
107
- - ограничения пользователя, команды и критерии проверки фазы, запрет коммитить и запрет менять план и журнал.
87
+ Каждому исполнителю фазы передай: рабочую директорию, `$PLAN_FILE`, номер и полный текст фазы, краткие результаты завершённых фаз, пути к `docs/rules.md`, `docs/arch.md`, `docs/business.md` и `docs/references.md`, ограничения пользователя, критерии проверки фазы и запрет коммитить и менять план и журнал.
108
88
 
109
- Исполнитель целиком читает `$PLAN_FILE`, `docs/rules.md` и `docs/arch.md`, затем выполняет все задачи назначенной фазы по прямым зависимостям. Перед изменением поведения он читает применимые карточки из `sources.business`; если поле отсутствует, выбирает их по описаниям из `docs/business.md`. Если подходящих карточек нет, продолжает без business-контекста. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, исполнитель читает эту карточку целиком перед соответствующим изменением. После каждой задачи он выполняет её точечные проверки, а в конце — все проверки фазы. Требуй YAML-результат:
89
+ Требуй YAML-результат:
110
90
 
111
91
  ```yaml
112
92
  status: completed | needs_input | failed | blocked
113
93
  phase: <номер>
114
94
  summary: <что сделано>
115
- tasks:
116
- - id: <ID>
117
- status: completed | failed | blocked
118
- summary: <кратко>
119
- checks: [<результаты точечных проверок>]
120
95
  files_changed: [<пути>]
121
96
  business_read: [<пути или пусто>]
122
97
  references_read: [<пути или пусто>]
@@ -129,22 +104,22 @@ risks: [<остаточные риски или пусто>]
129
104
  questions: [<вопросы или пусто>]
130
105
  ```
131
106
 
132
- Не принимай `completed`, если хотя бы одна задача или обязательная проверка фазы не прошла, исполнитель вышел за назначенный scope, молча отклонился от рамки или изменил план/журнал.
107
+ Не принимай `completed`, если обязательная проверка фазы не прошла, исполнитель вышел за назначенный scope, молча отклонился от рамки или изменил план либо журнал.
133
108
 
134
109
  ### 6. Выполнять фазы
135
110
 
136
111
  Для каждой фазы по порядку:
137
112
 
138
113
  1. Запусти одного нового изолированного исполнителя и сохрани его идентификатор как исполнителя этой фазы.
139
- 2. После ответа проверь YAML-контракт, фактический scope файлов и результаты точечных и фазовых проверок. Запиши запуск в журнал и поставь `[x]` только задачам со статусом `completed` и успешными точечными проверками.
140
- 3. `needs_input` передай пользователю одним блокирующим вопросом. После ответа продолжи того же исполнителя фазы с ответом и его предыдущим результатом. Если среда не умеет продолжать завершённого субагента, запусти нового изолированного исполнителя этой же фазы и передай ему полный предыдущий результат.
141
- 4. Для `failed` продолжи того же исполнителя фазы с полным неуспешным результатом и поручением исправить причину и повторить проверки. Если две попытки подряд возвращают ту же причину без содержательного изменения результата, остановись с `blocked: выполнение не сходится` и зафиксируй доказательства вместо бесконечного цикла.
142
- 5. Для `blocked` останови выполнение. Если блокер внешний или требует изменения scope, задай вопрос; основной агент не устраняет его содержательно.
143
- 6. После `completed` запусти независимую проверку фазы. Не переходи к следующей фазе, пока текущая не закрыта.
114
+ 2. Проверь YAML-контракт, фактический scope файлов и результаты проверок. Запиши запуск в журнал.
115
+ 3. `needs_input` передай пользователю одним блокирующим вопросом, затем продолжи того же исполнителя фазы с ответом и его предыдущим результатом. Если среда не умеет продолжать завершённого субагента, запусти нового с полным предыдущим результатом.
116
+ 4. `failed` — продолжи того же исполнителя фазы с полным неуспешным результатом и поручением исправить причину и повторить проверки. Если две попытки подряд дают ту же причину без содержательного изменения, остановись: `blocked: выполнение не сходится`.
117
+ 5. `blocked` — останови выполнение. Внешний блокер или изменение scope выноси вопросом; сам его не устраняй.
118
+ 6. После `completed` запусти независимую проверку фазы.
144
119
 
145
120
  ### 7. Проверять каждую фазу
146
121
 
147
- После `completed` от исполнителя запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`. Он читает только business-карточки, применимые к поведению этой фазы, и только reference-карточки затронутых компонентов; для старого плана использует соответствующие индексы как fallback. Отсутствие применимой business-карточки не блокирует проверку. Затем он выполняет все проверки из раздела фазы и подтверждает критерии результата. Требуй YAML:
122
+ После `completed` запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`, читает только применимые карточки, выполняет все проверки фазы и подтверждает критерии результата.
148
123
 
149
124
  ```yaml
150
125
  status: passed | failed | blocked
@@ -158,27 +133,27 @@ business_read: [<пути или пусто>]
158
133
  references_read: [<пути или пусто>]
159
134
  ```
160
135
 
161
- При `failed` передай полный результат проверки исполнителю этой фазы и поручи исправить все подтверждённые проблемы, затем запусти нового проверяющего всей фазы. Если продолжить прежнего исполнителя невозможно, запусти одного нового изолированного исполнителя для исправления всей фазы с её полным контекстом. Основной агент не чинит код и не переиспользует контекст прежнего проверяющего. При `passed` отметь фазу завершённой и только тогда переходи к следующей.
136
+ При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует. При `passed` отметь фазу завершённой и только тогда переходи к следующей.
162
137
 
163
- ### 8. Выполнить финальную проверку
138
+ ### 8. Финальная проверка
164
139
 
165
- После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только проверяет и не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`, затем выбирает только business-карточки итогового изменённого поведения и reference-карточки затронутых компонентов. Отсутствие подходящей business-карточки не требует предупреждения и не блокирует проверку.
140
+ После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения.
166
141
 
167
- Если финальная проверка упала из-за сделанных изменений, сопоставь ошибки с фазами и передай каждую группу исполнителю соответствующей фазы; несколько затронутых фаз исправляй по порядку плана. Если продолжить прежнего исполнителя невозможно, запусти одного нового изолированного исполнителя для каждой затронутой фазы. Затем повтори всю финальную проверку новым субагентом. Чужую или несвязанную поломку зафиксируй и используй `AskUserQuestion`, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
142
+ Падение из-за сделанных изменений сопоставь с фазами и передай каждую группу исполнителю соответствующей фазы по порядку плана, затем повтори всю финальную проверку новым субагентом. Чужую или несвязанную поломку зафиксируй и вынеси вопросом, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
168
143
 
169
- Запиши команды и результаты в `## Финальная проверка`. Только после `passed` поставь в журнале `status: done` и время завершения. Если обязательная проверка объективно недоступна, сохрани `status: blocked`, причину и непройденные критерии; не выдавай план за выполненный.
144
+ Запиши команды и результаты в `## Финальная проверка`. Только после `passed` поставь `status: done` и время завершения. Если обязательная проверка объективно недоступна, сохрани `status: blocked`, причину и непройденные критерии; выполненным план не объявляй.
170
145
 
171
146
  ### 9. Финал
172
147
 
173
- Коротко сообщи пути к плану и журналу, завершённые фазы и задачи, результат фазовых и финальной проверок, оставшиеся блокеры, состояние git «не закоммичено» и следующий шаг: `eda-review` или `eda-commit`.
148
+ Коротко сообщи пути к плану и журналу, завершённые фазы, результат фазовых и финальной проверок, оставшиеся блокеры, состояние git «не закоммичено» и следующий шаг: `eda-review` или `eda-commit`.
174
149
 
175
150
  ## Чего НЕ делать
176
151
 
177
152
  - Самому менять код, тесты, миграции, конфиги, зависимости или проектную документацию.
178
- - Самому запускать тесты, линтеры, typecheck, сборку, миграции, серверы или другие команды разработки и проверки.
179
- - Дробить одну фазу между несколькими исполнителями или поручать одному исполнителю несколько фаз.
153
+ - Самому запускать тесты, линтеры, typecheck, сборку, миграции, серверы и другие команды разработки и проверки.
154
+ - Дробить фазу между исполнителями или давать одному исполнителю несколько фаз.
180
155
  - Запускать следующую фазу до успешной отдельной проверки текущей.
181
- - Давать субагентам историю диалога или разрешать им менять план и журнал.
182
- - Исправлять падение основным агентом либо продолжать после него без повторной проверки новым субагентом.
156
+ - Позволять исполнителю додумывать недостающее решение вместо вопроса.
157
+ - Давать субагентам историю диалога или разрешать менять план и журнал.
183
158
  - Подавлять ошибки проверок, ослаблять правила или менять команды ради зелёного результата.
184
159
  - Коммитить, пушить, создавать PR или делать ревью.
@@ -1,48 +1,49 @@
1
1
  ---
2
2
  name: eda-plan-polish
3
- description: 'Оркестрирует review и исправления готового плана до подтверждённой оценки готовности.'
3
+ description: 'Доводит план циклом ревью и исправлений, останавливается при отсутствии роста и оставляет лучшую версию.'
4
4
  ---
5
5
 
6
6
  # Скил: Полировка плана (eda-plan-polish)
7
7
 
8
- Оркестрируй цикл `eda-plan-review` → `eda-plan-review-fix apply-optional` → повторный `eda-plan-review`. Основной агент только выбирает план, запускает каждый скил в отдельном изолированном субагенте, проверяет артефакты и управляет остановкой.
8
+ Оркестрируй цикл `eda-plan-review` → `eda-plan-review-fix` → подтверждающий `eda-plan-review`. Сам план не правь и score не выставляй: ты выбираешь план, запускаешь каждый скил в отдельном изолированном субагенте, следишь за ростом оценки и решаешь, когда остановиться.
9
+
10
+ Главное отличие от простого повторения итераций: **цикл останавливается, как только оценка перестаёт расти, и оставляет лучшую версию плана, а не последнюю.**
9
11
 
10
12
  ## Вход из сообщения пользователя
11
13
 
12
- Текст рядом с вызовом — главный вход. Разбери путь или название плана, «последний план», threshold, limit, отключённые/принудительные проверки, разовые модели и ограничения. Передавай overrides в каждый review.
14
+ Текст рядом с вызовом — главный вход. Разбери путь или название плана, «последний план», threshold и limit.
13
15
 
14
- Если план выбирается однозначно, продолжай без вопроса. При нескольких равных вариантах передай выбор первому `eda-plan-review` или используй `AskUserQuestion` по правилам среды.
16
+ Если план выбирается однозначно, продолжай без вопроса. При нескольких равных вариантах — `AskUserQuestion`.
15
17
 
16
18
  ## Настройки
17
19
 
18
- Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 3`; иначе используй defaults и предупреди.
20
+ Прочитай `docs/settings.yaml`, если есть. Поддерживается только `version: 3`; иначе defaults и предупреждение.
19
21
 
20
- - threshold берётся из `plan-review.threshold`, default `95`, допустим `1–100`;
21
- - limit берётся из `plan-polish.limit`, default `3`, это положительное целое число;
22
- - прямые `threshold N` и `limit N` важнее settings.
22
+ - `plan-review.threshold` — доля закрытых пунктов для `ready`, default `100`;
23
+ - `plan-polish.limit` — максимум подтверждающих review-итераций, default `2`;
24
+ - прямые `threshold N` и `limit N` в сообщении важнее файла.
23
25
 
24
- `strict` и кросс-CLI не поддерживаются. Не читай устаревшие поля настроек и не запускай соседний CLI: используй только специализированный workflow этого скилла.
26
+ `strict` и кросс-CLI здесь не поддерживаются.
25
27
 
26
28
  ## Правила
27
29
 
28
- 1. Каждый вызов `eda-plan-review` и `eda-plan-review-fix apply-optional` запускай отдельным изолированным субагентом с чистым контекстом.
29
- 2. Если нативные субагенты или вложенная делегация недоступны, остановись; не выполняй review/fix основным агентом и не используй CLI-fallback.
30
- 3. Успех определяется только review со статусом `ready`, без required findings и `score >= threshold`.
31
- 4. Limit считает подтверждающие review-итерации. После review на последней итерации не запускай fix, который нельзя перепроверить.
32
- 5. Основной агент не делает содержательных правок плана. После ready он может обновить только front matter: `status`, `plan_review`, `plan_review_fix`.
33
- 6. Не запускай проверки проекта и не коммить.
30
+ 1. Каждый вызов `eda-plan-review` и `eda-plan-review-fix` запускай отдельным изолированным субагентом с чистым контекстом.
31
+ 2. Если нативные субагенты недоступны, остановись. Не делай review или fix сам и не используй CLI-fallback.
32
+ 3. Успех — только review со статусом `ready`.
33
+ 4. Основной агент не меняет содержание плана. После `ready` он может обновить только front matter: `status`, `plan_review`, `plan_review_fix`.
34
+ 5. Не запускай проверки проекта и не коммить.
35
+
36
+ ## Снапшот лучшей версии
34
37
 
35
- ## Вопросы
38
+ Перед первым fix скопируй план в `docs/artifacts/plan-snapshots/{slug}.md` и запомни его score как лучший.
36
39
 
37
- Если вложенный скил вернул `blocked` с вопросом, передай пользователю только этот вопрос и после ответа продолжи тот же шаг с полным предыдущим контекстом.
40
+ Дальше на каждой итерации: если новый score выше лучшего — перезапиши снапшот и обнови лучший score. Если ниже или равен — снапшот не трогай.
38
41
 
39
- - Claude Code: `AskUserQuestion`.
40
- - Codex interactive: `request_user_input`, если доступен, иначе короткий вопрос с вариантами.
41
- - Codex exec/non-interactive: остановись `blocked: нужен ответ пользователя`.
42
+ При остановке без `ready`: если последний score ниже лучшего, восстанови план из снапшота и скажи об этом прямо. После успешного `ready` удали снапшот.
42
43
 
43
44
  ## Цикл
44
45
 
45
- Сформируй `$PLAN_FILE`, `$THRESHOLD`, `$LIMIT` и внутренний журнал: iteration, review path, plan SHA-256, score, состояния findings, fix path и причина продолжения.
46
+ Сформируй `$PLAN_FILE`, `$THRESHOLD`, `$LIMIT` и журнал: итерация, путь review, SHA-256 плана, score, открытые пункты, путь fix.
46
47
 
47
48
  Для `$ITERATION` от `1` до `$LIMIT`:
48
49
 
@@ -51,38 +52,46 @@ description: 'Оркестрирует review и исправления гото
51
52
  ```text
52
53
  Используй eda-plan-review для <PLAN_FILE> с threshold <THRESHOLD>.
53
54
  Previous review: <PREVIOUS_REVIEW | none>.
54
- Previous fix: <PREVIOUS_FIX | none>.
55
- Overrides проверок и моделей: <из текущего вызова | none>.
56
- Верни путь, status, plan_sha256, score, required/optional ID и coverage.
55
+ Верни путь, status, plan_sha256, score и номера открытых пунктов.
57
56
  ```
58
57
 
59
- 2. Прочитай review-артефакт и проверь, что status/score/threshold/findings согласованы.
60
- 3. Если status `ready`, обнови front matter плана: `status: reviewed`, `plan_review: <REVIEW_FILE>`, `plan_review_fix: <последний FIX_FILE | none>`. Заверши успешно.
61
- 4. Если это последняя разрешённая review-итерация, остановись `достигнут limit`; fix не запускай.
62
- 5. Если относительно предыдущего review не изменились open/resolved/regressed/waived ID и score, остановись `blocked: review не показывает прогресса`.
63
- 6. Если ниже gate нет применимых findings, остановись `blocked: нет применимых правок для повышения оценки`.
64
- 7. Запусти новый изолированный субагент:
58
+ 2. Прочитай отчёт и проверь, что score, порог и статус согласованы со списком пунктов.
59
+ 3. Обнови лучшую версию по правилу снапшота.
60
+ 4. Если статус `ready` — обнови front matter плана (`status: reviewed`, последние `plan_review` и `plan_review_fix`), удали снапшот, заверши успешно.
61
+ 5. **Стоп по отсутствию роста.** Если это не первая итерация и score не вырос относительно предыдущей — останови цикл, восстанови лучшую версию и сообщи, какая итерация была лучшей. Дальнейшие круги только ухудшают план.
62
+ 6. Если статус `changes-required`, но проваленных пунктов нет — остановись: `blocked: ревью нарушает контракт gate`.
63
+ 7. Если это последняя разрешённая итерация — остановись с причиной `достигнут limit`; fix не запускай, перепроверить его будет нечем.
64
+ 8. Запусти новый изолированный субагент:
65
65
 
66
66
  ```text
67
- Используй eda-plan-review-fix apply-optional для <REVIEW_FILE>.
68
- Примени все required, самостоятельно разбери optional и сохрани waived с причинами.
69
- Верни путь к fix, before_sha256, after_sha256, applied и waived ID.
67
+ Используй eda-plan-review-fix для <REVIEW_FILE>.
68
+ Закрой все пункты со статусом fail минимальным изменением плана, без роста объёма.
69
+ Верни путь к fix, before_sha256, after_sha256, before_bytes, after_bytes и закрытые пункты.
70
70
  ```
71
71
 
72
- 8. Проверь, что `before_sha256` равен `plan_sha256` review. Если `after_sha256` равен `before_sha256`, остановись `blocked: fix не изменил план`.
73
- 9. Сохрани review/fix как previous chain и начни следующую review-итерацию.
72
+ 9. Проверь, что `before_sha256` равен `plan_sha256` из review. Если `after_sha256` равен `before_sha256` — остановись: `blocked: fix не изменил план`.
73
+ 10. Если план вырос больше чем на 3%, зафиксируй это в журнале как предупреждение: рост объёма — причина следующих находок.
74
+ 11. Сохрани review и fix как предыдущую цепочку и переходи к следующей итерации.
74
75
 
75
- Score не повышай и не пересчитывай сам: используй только полный `eda-plan-review`.
76
+ Score сам не считай и не корректируй: он приходит только из `eda-plan-review`.
76
77
 
77
78
  ## Финал
78
79
 
79
- Сообщи результат (`ready`, limit, no progress, no applicable fixes или blocked), план, последний review/fix, score/threshold, число review-итераций, open ID и coverage warnings. При ready предложи `eda-plan-execute`; при неуспехе перечисли конкретные оставшиеся findings.
80
+ Сообщи:
81
+
82
+ - результат: `ready`, `limit`, `нет роста` или `blocked`;
83
+ - путь к плану и какая версия в нём осталась — последняя или восстановленная лучшая;
84
+ - траекторию score по итерациям и номер лучшей;
85
+ - последние review и fix, порог, открытые пункты;
86
+ - изменение объёма плана за весь цикл.
87
+
88
+ При `ready` предложи `eda-plan-execute`. При неуспехе перечисли конкретные открытые пункты — без них следующий круг бессмысленен.
80
89
 
81
90
  ## Чего НЕ делать
82
91
 
83
- - Делать review, выставлять score или исправлять содержание плана основным агентом.
84
- - Запускать старые три общих ревью одним промптом.
92
+ - Делать review, выставлять score или править содержание плана самому.
93
+ - Продолжать цикл, когда score не растёт.
94
+ - Оставлять последнюю версию, если лучшая была раньше.
95
+ - Запускать fix после последней разрешённой итерации.
85
96
  - Запускать кросс-CLI, `strict`, `codex exec` или `claude -p`.
86
- - Запускать fix после последней review-итерации.
87
- - Ждать два одинаковых круга: один подтверждённый круг без прогресса уже останавливает цикл.
88
- - Писать длинный журнал полировки в план, менять код или запускать проверки проекта.
97
+ - Писать журнал полировки в тело плана, менять код или запускать проверки проекта.