@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.
- package/MIGRATION.md +68 -67
- package/README.md +44 -86
- package/agents/eda-aim-planner/prompt.md +1 -1
- package/agents/eda-review-api/prompt.md +5 -3
- package/agents/eda-review-architecture/prompt.md +6 -4
- package/agents/eda-review-business/prompt.md +5 -3
- package/agents/eda-review-code-quality/prompt.md +7 -5
- package/agents/eda-review-correctness/prompt.md +5 -3
- package/agents/eda-review-database/prompt.md +5 -3
- package/agents/eda-review-documentation/prompt.md +5 -3
- package/agents/eda-review-frontend/prompt.md +5 -3
- package/agents/eda-review-performance/prompt.md +7 -5
- package/agents/eda-review-plan-alignment/prompt.md +5 -3
- package/agents/eda-review-previous-reviews/prompt.md +6 -4
- package/agents/eda-review-references/prompt.md +5 -3
- package/agents/eda-review-rules/prompt.md +5 -3
- package/agents/eda-review-security/prompt.md +5 -3
- package/agents/eda-review-tests/prompt.md +5 -3
- package/bin/cli.js +2 -2
- package/lib/install.js +124 -160
- package/package.json +1 -1
- package/skills/eda-aim/SKILL.md +2 -2
- package/skills/eda-business/SKILL.md +47 -32
- package/skills/eda-discover-automations/SKILL.md +9 -9
- package/skills/eda-explore/SKILL.md +3 -3
- package/skills/eda-fix/SKILL.md +6 -6
- package/skills/eda-fix-by-review/SKILL.md +47 -58
- package/skills/eda-manual-test/SKILL.md +5 -5
- package/skills/eda-new-project/SKILL.md +3 -3
- package/skills/eda-orhestra/SKILL.md +2 -2
- package/skills/eda-plan/SKILL.md +92 -111
- package/skills/eda-plan-execute/SKILL.md +43 -68
- package/skills/eda-plan-polish/SKILL.md +51 -42
- package/skills/eda-plan-review/SKILL.md +89 -135
- package/skills/eda-plan-review-fix/SKILL.md +38 -63
- package/skills/eda-polish/SKILL.md +25 -35
- package/skills/eda-prepare-ai/SKILL.md +1 -1
- package/skills/eda-review/SKILL.md +18 -17
- package/skills/eda-roadmap/SKILL.md +5 -5
- package/skills/eda-send-review/SKILL.md +11 -11
- package/agents/eda-plan-review-api/agent.json +0 -9
- package/agents/eda-plan-review-api/prompt.md +0 -34
- package/agents/eda-plan-review-architecture/agent.json +0 -9
- package/agents/eda-plan-review-architecture/prompt.md +0 -34
- package/agents/eda-plan-review-database/agent.json +0 -9
- package/agents/eda-plan-review-database/prompt.md +0 -34
- package/agents/eda-plan-review-execution/agent.json +0 -9
- package/agents/eda-plan-review-execution/prompt.md +0 -34
- package/agents/eda-plan-review-feasibility/agent.json +0 -9
- package/agents/eda-plan-review-feasibility/prompt.md +0 -34
- package/agents/eda-plan-review-frontend/agent.json +0 -9
- package/agents/eda-plan-review-frontend/prompt.md +0 -34
- package/agents/eda-plan-review-performance/agent.json +0 -9
- package/agents/eda-plan-review-performance/prompt.md +0 -34
- package/agents/eda-plan-review-previous/agent.json +0 -9
- package/agents/eda-plan-review-previous/prompt.md +0 -28
- package/agents/eda-plan-review-requirements/agent.json +0 -9
- package/agents/eda-plan-review-requirements/prompt.md +0 -34
- package/agents/eda-plan-review-rules/agent.json +0 -9
- package/agents/eda-plan-review-rules/prompt.md +0 -34
- package/agents/eda-plan-review-security/agent.json +0 -9
- package/agents/eda-plan-review-security/prompt.md +0 -34
- package/agents/eda-plan-review-verification/agent.json +0 -9
- package/agents/eda-plan-review-verification/prompt.md +0 -34
|
@@ -1,74 +1,59 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: eda-plan-execute
|
|
3
|
-
description: 'Выполняет готовый план
|
|
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
|
-
Если
|
|
14
|
+
Если входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных планов или есть риск выполнить не тот план.
|
|
15
15
|
|
|
16
16
|
## Главные правила
|
|
17
17
|
|
|
18
|
-
1. **Основной агент только управляет.**
|
|
19
|
-
2. **Фазы выполняй строго последовательно.** Не запускай
|
|
20
|
-
3. **Одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога.
|
|
21
|
-
4. **Рамку читает исполнитель фазы.** Каждый исполнитель целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы он читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Нерелевантные карточки не загружает.
|
|
22
|
-
5.
|
|
23
|
-
6.
|
|
24
|
-
7.
|
|
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
|
-
|
|
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
|
-
|
|
41
|
-
- Если указано название или часть названия — найди совпадение в `docs/plans/`.
|
|
42
|
-
- Если написано «последний план» — возьми самый новый файл из `docs/plans/`.
|
|
43
|
-
- Если вставлен текст плана — сохрани или однозначно привяжи его к файлу в `docs/plans/` до инициализации прогресса.
|
|
36
|
+
Путь — используй как есть. Название или его часть — ищи совпадение в `docs/artifacts/plans/`. «Последний план» — бери самый новый файл. Вставленный текст плана сначала сохрани или однозначно привяжи к файлу.
|
|
44
37
|
|
|
45
|
-
|
|
38
|
+
Один план — продолжай без вопроса. Несколько равных — `AskUserQuestion`. Плана нет — `blocked: нужен план`.
|
|
46
39
|
|
|
47
|
-
Не исполняй план
|
|
40
|
+
Не исполняй план с открытыми вопросами или неразрешёнными развилками: сначала заверши `eda-plan` или `eda-plan-polish`.
|
|
48
41
|
|
|
49
42
|
### 2. Выбрать место выполнения
|
|
50
43
|
|
|
51
44
|
Через `AskUserQuestion` предложи текущую ветку, новую ветку от `main`, новую ветку от текущей или worktree от `main`. Если вызывающий оркестратор уже передал подтверждённый выбор, не спрашивай повторно.
|
|
52
45
|
|
|
53
|
-
Сам git-команды не
|
|
46
|
+
Сам git-команды не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. После успешного создания worktree остановись и дай команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`.
|
|
54
47
|
|
|
55
48
|
### 3. Прочитать план и проверить фазы
|
|
56
49
|
|
|
57
|
-
Прочитай `$PLAN_FILE`. Для каждой фазы извлеки
|
|
58
|
-
|
|
59
|
-
- все ID уникальны, а ссылки ведут на существующие задачи;
|
|
60
|
-
- зависимости не образуют цикл и не ведут в будущую фазу;
|
|
61
|
-
- у каждой фазы есть проверяемый результат и команда либо критерий проверки.
|
|
62
|
-
|
|
63
|
-
Поля `Параллельно` в старых планах не влияют на исполнение: все задачи фазы выполняет один субагент по зависимостям.
|
|
50
|
+
Прочитай `$PLAN_FILE`. Для каждой фазы извлеки цель, что сделать, результат и проверку. До запуска убедись, что у каждой фазы есть проверяемый результат и команда или критерий проверки.
|
|
64
51
|
|
|
65
|
-
Если
|
|
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` добавь или актуализируй один раздел `## Прогресс выполнения` со ссылкой на
|
|
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"
|
|
101
|
-
|
|
102
|
-
Каждому исполнителю фазы передай:
|
|
85
|
+
В Codex используй `spawn_agent` с `fork_turns: "none"`, в Claude Code — новый `Agent` с самодостаточным сообщением. Если изоляция или субагенты недоступны, остановись: `blocked: недоступно изолированное выполнение`. Работу основным агентом не делай и CLI-fallback не добавляй.
|
|
103
86
|
|
|
104
|
-
|
|
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
|
-
|
|
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`, если
|
|
107
|
+
Не принимай `completed`, если обязательная проверка фазы не прошла, исполнитель вышел за назначенный scope, молча отклонился от рамки или изменил план либо журнал.
|
|
133
108
|
|
|
134
109
|
### 6. Выполнять фазы
|
|
135
110
|
|
|
136
111
|
Для каждой фазы по порядку:
|
|
137
112
|
|
|
138
113
|
1. Запусти одного нового изолированного исполнителя и сохрани его идентификатор как исполнителя этой фазы.
|
|
139
|
-
2.
|
|
140
|
-
3. `needs_input` передай пользователю одним блокирующим
|
|
141
|
-
4.
|
|
142
|
-
5.
|
|
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`
|
|
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` передай полный результат
|
|
136
|
+
При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует. При `passed` отметь фазу завершённой и только тогда переходи к следующей.
|
|
162
137
|
|
|
163
|
-
### 8.
|
|
138
|
+
### 8. Финальная проверка
|
|
164
139
|
|
|
165
|
-
После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только
|
|
140
|
+
После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения.
|
|
166
141
|
|
|
167
|
-
|
|
142
|
+
Падение из-за сделанных изменений сопоставь с фазами и передай каждую группу исполнителю соответствующей фазы по порядку плана, затем повтори всю финальную проверку новым субагентом. Чужую или несвязанную поломку зафиксируй и вынеси вопросом, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
|
|
168
143
|
|
|
169
|
-
Запиши команды и результаты в `## Финальная проверка`. Только после `passed` поставь
|
|
144
|
+
Запиши команды и результаты в `## Финальная проверка`. Только после `passed` поставь `status: done` и время завершения. Если обязательная проверка объективно недоступна, сохрани `status: blocked`, причину и непройденные критерии; выполненным план не объявляй.
|
|
170
145
|
|
|
171
146
|
### 9. Финал
|
|
172
147
|
|
|
173
|
-
Коротко сообщи пути к плану и журналу, завершённые
|
|
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: '
|
|
3
|
+
description: 'Доводит план циклом ревью и исправлений, останавливается при отсутствии роста и оставляет лучшую версию.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Скил: Полировка плана (eda-plan-polish)
|
|
7
7
|
|
|
8
|
-
Оркестрируй цикл `eda-plan-review` → `eda-plan-review-fix
|
|
8
|
+
Оркестрируй цикл `eda-plan-review` → `eda-plan-review-fix` → подтверждающий `eda-plan-review`. Сам план не правь и score не выставляй: ты выбираешь план, запускаешь каждый скил в отдельном изолированном субагенте, следишь за ростом оценки и решаешь, когда остановиться.
|
|
9
|
+
|
|
10
|
+
Главное отличие от простого повторения итераций: **цикл останавливается, как только оценка перестаёт расти, и оставляет лучшую версию плана, а не последнюю.**
|
|
9
11
|
|
|
10
12
|
## Вход из сообщения пользователя
|
|
11
13
|
|
|
12
|
-
Текст рядом с вызовом — главный вход. Разбери путь или название плана, «последний план», threshold
|
|
14
|
+
Текст рядом с вызовом — главный вход. Разбери путь или название плана, «последний план», threshold и limit.
|
|
13
15
|
|
|
14
|
-
Если план выбирается однозначно, продолжай без вопроса. При нескольких равных вариантах
|
|
16
|
+
Если план выбирается однозначно, продолжай без вопроса. При нескольких равных вариантах — `AskUserQuestion`.
|
|
15
17
|
|
|
16
18
|
## Настройки
|
|
17
19
|
|
|
18
|
-
Прочитай `docs/settings.yaml`, если
|
|
20
|
+
Прочитай `docs/settings.yaml`, если есть. Поддерживается только `version: 3`; иначе defaults и предупреждение.
|
|
19
21
|
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
- прямые `threshold N` и `limit N` важнее
|
|
22
|
+
- `plan-review.threshold` — доля закрытых пунктов для `ready`, default `100`;
|
|
23
|
+
- `plan-polish.limit` — максимум подтверждающих review-итераций, default `2`;
|
|
24
|
+
- прямые `threshold N` и `limit N` в сообщении важнее файла.
|
|
23
25
|
|
|
24
|
-
`strict` и кросс-CLI не поддерживаются.
|
|
26
|
+
`strict` и кросс-CLI здесь не поддерживаются.
|
|
25
27
|
|
|
26
28
|
## Правила
|
|
27
29
|
|
|
28
|
-
1. Каждый вызов `eda-plan-review` и `eda-plan-review-fix
|
|
29
|
-
2. Если нативные субагенты
|
|
30
|
-
3. Успех
|
|
31
|
-
4.
|
|
32
|
-
5.
|
|
33
|
-
|
|
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
|
-
|
|
40
|
+
Дальше на каждой итерации: если новый score выше лучшего — перезапиши снапшот и обнови лучший score. Если ниже или равен — снапшот не трогай.
|
|
38
41
|
|
|
39
|
-
|
|
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` и
|
|
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
|
-
|
|
55
|
-
Overrides проверок и моделей: <из текущего вызова | none>.
|
|
56
|
-
Верни путь, status, plan_sha256, score, required/optional ID и coverage.
|
|
55
|
+
Верни путь, status, plan_sha256, score и номера открытых пунктов.
|
|
57
56
|
```
|
|
58
57
|
|
|
59
|
-
2. Прочитай
|
|
60
|
-
3.
|
|
61
|
-
4. Если
|
|
62
|
-
5. Если
|
|
63
|
-
6. Если
|
|
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
|
|
68
|
-
|
|
69
|
-
Верни путь к fix, before_sha256, after_sha256,
|
|
67
|
+
Используй eda-plan-review-fix для <REVIEW_FILE>.
|
|
68
|
+
Закрой все пункты со статусом fail минимальным изменением плана, без роста объёма.
|
|
69
|
+
Верни путь к fix, before_sha256, after_sha256, before_bytes, after_bytes и закрытые пункты.
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
9. Проверь, что `before_sha256` равен `plan_sha256` из review. Если `after_sha256` равен `before_sha256` — остановись: `blocked: fix не изменил план`.
|
|
73
|
+
10. Если план вырос больше чем на 3%, зафиксируй это в журнале как предупреждение: рост объёма — причина следующих находок.
|
|
74
|
+
11. Сохрани review и fix как предыдущую цепочку и переходи к следующей итерации.
|
|
74
75
|
|
|
75
|
-
Score не
|
|
76
|
+
Score сам не считай и не корректируй: он приходит только из `eda-plan-review`.
|
|
76
77
|
|
|
77
78
|
## Финал
|
|
78
79
|
|
|
79
|
-
|
|
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
|
-
-
|
|
87
|
-
- Ждать два одинаковых круга: один подтверждённый круг без прогресса уже останавливает цикл.
|
|
88
|
-
- Писать длинный журнал полировки в план, менять код или запускать проверки проекта.
|
|
97
|
+
- Писать журнал полировки в тело плана, менять код или запускать проверки проекта.
|