@gian-tiaga/eda 1.0.5 → 2.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 +60 -80
- package/README.md +116 -36
- package/agents/eda-plan-review-api/agent.json +9 -0
- package/agents/eda-plan-review-api/prompt.md +35 -0
- package/agents/eda-plan-review-architecture/agent.json +9 -0
- package/agents/eda-plan-review-architecture/prompt.md +35 -0
- package/agents/eda-plan-review-database/agent.json +9 -0
- package/agents/eda-plan-review-database/prompt.md +35 -0
- package/agents/eda-plan-review-execution/agent.json +9 -0
- package/agents/eda-plan-review-execution/prompt.md +35 -0
- package/agents/eda-plan-review-feasibility/agent.json +9 -0
- package/agents/eda-plan-review-feasibility/prompt.md +35 -0
- package/agents/eda-plan-review-frontend/agent.json +9 -0
- package/agents/eda-plan-review-frontend/prompt.md +35 -0
- package/agents/eda-plan-review-performance/agent.json +9 -0
- package/agents/eda-plan-review-performance/prompt.md +35 -0
- package/agents/eda-plan-review-previous/agent.json +9 -0
- package/agents/eda-plan-review-previous/prompt.md +28 -0
- package/agents/eda-plan-review-requirements/agent.json +9 -0
- package/agents/eda-plan-review-requirements/prompt.md +35 -0
- package/agents/eda-plan-review-rules/agent.json +9 -0
- package/agents/eda-plan-review-rules/prompt.md +35 -0
- package/agents/eda-plan-review-security/agent.json +9 -0
- package/agents/eda-plan-review-security/prompt.md +35 -0
- package/agents/eda-plan-review-verification/agent.json +9 -0
- package/agents/eda-plan-review-verification/prompt.md +35 -0
- package/agents/eda-review-api/prompt.md +4 -3
- package/agents/eda-review-architecture/prompt.md +4 -3
- package/agents/eda-review-business/agent.json +15 -0
- package/agents/eda-review-business/prompt.md +47 -0
- package/agents/eda-review-code-quality/prompt.md +5 -4
- package/agents/eda-review-correctness/prompt.md +4 -3
- package/agents/eda-review-database/prompt.md +4 -3
- package/agents/eda-review-documentation/prompt.md +4 -3
- package/agents/eda-review-frontend/prompt.md +4 -3
- package/agents/eda-review-performance/prompt.md +4 -3
- package/agents/eda-review-plan-alignment/prompt.md +4 -3
- package/agents/eda-review-previous-reviews/prompt.md +5 -4
- package/agents/eda-review-references/prompt.md +4 -3
- package/agents/eda-review-rules/prompt.md +4 -3
- package/agents/eda-review-security/prompt.md +4 -3
- package/agents/eda-review-tests/prompt.md +4 -3
- package/bin/cli.js +2 -2
- package/lib/install.js +524 -368
- package/package.json +3 -2
- package/skills/eda-aim/SKILL.md +1 -1
- package/skills/eda-business/SKILL.md +162 -0
- package/skills/eda-discover-automations/SKILL.md +4 -2
- package/skills/eda-explore/SKILL.md +7 -6
- package/skills/eda-fix/SKILL.md +5 -4
- package/skills/eda-fix-by-review/SKILL.md +41 -57
- package/skills/eda-manual-test/SKILL.md +13 -5
- package/skills/eda-orhestra/SKILL.md +14 -11
- package/skills/eda-plan/SKILL.md +45 -42
- package/skills/eda-plan-execute/SKILL.md +8 -6
- package/skills/eda-plan-polish/SKILL.md +53 -169
- package/skills/eda-plan-review/SKILL.md +189 -0
- package/skills/eda-plan-review-fix/SKILL.md +88 -0
- package/skills/eda-polish/SKILL.md +19 -31
- package/skills/eda-prepare-ai/SKILL.md +7 -2
- package/skills/eda-review/SKILL.md +21 -21
- package/skills/eda-roadmap/SKILL.md +6 -3
- package/skills/eda-send-review/SKILL.md +8 -8
|
@@ -1,204 +1,88 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: eda-plan-polish
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Оркестрирует review и исправления готового плана до подтверждённой оценки готовности.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Скил: Полировка плана (eda-plan-polish)
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Каждая итерация начинается с трёх независимых моделей с одним и тем же промптом. Основной агент не ставит предварительную оценку сам: он оценивает план только после ответов агентов, принимает или отклоняет предложения, правит план при оценке ниже порога и запускает новую итерацию.
|
|
8
|
+
Оркестрируй цикл `eda-plan-review` → `eda-plan-review-fix` → повторный `eda-plan-review`. Основной агент только выбирает план, запускает каждый скил в отдельном изолированном субагенте, проверяет артефакты и управляет остановкой.
|
|
11
9
|
|
|
12
10
|
## Вход из сообщения пользователя
|
|
13
11
|
|
|
14
|
-
Текст рядом с вызовом
|
|
12
|
+
Текст рядом с вызовом — главный вход. Разбери путь или название плана, «последний план», threshold, limit, отключённые/принудительные проверки, разовые модели и ограничения. Передавай overrides в каждый review.
|
|
15
13
|
|
|
16
|
-
Если
|
|
14
|
+
Если план выбирается однозначно, продолжай без вопроса. При нескольких равных вариантах передай выбор первому `eda-plan-review` или используй `AskUserQuestion` по правилам среды.
|
|
17
15
|
|
|
18
16
|
## Настройки
|
|
19
17
|
|
|
20
|
-
Прочитай `docs/settings.yaml`, если файл есть.
|
|
21
|
-
|
|
22
|
-
Поддерживается только `version: 2`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолт: `plan-polish.strict: false`.
|
|
23
|
-
|
|
24
|
-
- `plan-polish.strict` включает кросс-CLI ревью плана после трёх агентов в каждой итерации; выключение: `normal`, `без strict`, `без строгого режима`.
|
|
25
|
-
- Порог качества по умолчанию — `95`, можно переопределить словами `до 90`, `threshold 90`, `цель 90`.
|
|
26
|
-
- Лимит по умолчанию — `5` итераций, можно переопределить словами `лимит 3`, `max iterations 3`, `не больше 3 кругов`.
|
|
27
|
-
- Оценка `95–100` означает готовность к исполнению; `80–94` — нужно уточнить; `60–79` — рискованный план; ниже `60` — нужен серьёзный переплан или вопросы пользователю.
|
|
28
|
-
|
|
29
|
-
## Жёсткие правила
|
|
30
|
-
|
|
31
|
-
1. Работай только с готовым файлом плана в `docs/plans/`.
|
|
32
|
-
2. Не правишь код. Содержательно менять можно только выбранный файл плана; в `strict` можно создать или обновить только вспомогательный файл `${PLAN_FILE%.md}_strict_cli_review.md`. Миграции, конфиги, зависимости и lock-файлы не трогай.
|
|
33
|
-
3. Не запускай проверки и исполняющие команды: `test`, `lint`, `build`, `typecheck`, `check`, `dev`, `start`, миграции, seed, smoke-тесты, браузерные проверки и API-запросы. При полировке плана можно читать файлы и искать по коду, но нельзя проверять проект выполнением команд.
|
|
34
|
-
4. Не ставь предварительную оценку без агентов. Сразу запускай три изолированных агента параллельно, одним batch, до чтения любого результата.
|
|
35
|
-
5. Итоговую оценку 0–100 выставляй только после чтения результатов всех трёх агентов, а в `strict` — ещё и результата соседнего CLI.
|
|
36
|
-
6. У всех трёх агентов один общий промпт: каждый проверяет весь план целиком, а не отдельную роль.
|
|
37
|
-
7. Не добавляй неподтверждённые существенные решения: БД/API-контракты, зависимости, архитектурные развилки, auth/permissions/payments/secrets/персональные данные и миграции.
|
|
38
|
-
8. Сохраняй структуру `eda-plan`: `Целевой алгоритм`, `Контракты реализации`, `Фазы выполнения`, `Тесты`, `Логирование`, если эти разделы есть или должны быть по формату.
|
|
39
|
-
9. Не пропускай кросс-CLI молча в `strict`: если соседней CLI нет, спроси через `AskUserQuestion`, завершить как normal или прервать.
|
|
40
|
-
10. Если качество не растёт два круга подряд, достигнут лимит или нужен ответ пользователя, остановись и честно назови причину.
|
|
41
|
-
|
|
42
|
-
## Интерактивные вопросы
|
|
43
|
-
|
|
44
|
-
Когда инструкция говорит `AskUserQuestion`, это блокирующий вопрос:
|
|
45
|
-
- Claude Code: используй `AskUserQuestion`.
|
|
46
|
-
- Codex interactive: если доступен `request_user_input`, используй его; иначе задай один короткий вопрос в чат с вариантами 1–3 и остановись до ответа.
|
|
47
|
-
- Codex exec / non-interactive: не читай stdin; если без ответа нельзя безопасно продолжать, заверши со статусом `blocked: нужен ответ пользователя`.
|
|
48
|
-
|
|
49
|
-
## Процесс
|
|
50
|
-
|
|
51
|
-
### 1. Выбрать план
|
|
52
|
-
|
|
53
|
-
Определи `$PLAN_FILE`:
|
|
54
|
-
- указан путь — используй его;
|
|
55
|
-
- указано название или часть названия — найди совпадение в `docs/plans/`;
|
|
56
|
-
- сказано «последний план» — возьми самый новый файл из `docs/plans/`;
|
|
57
|
-
- входа нет — спроси, показав несколько последних планов;
|
|
58
|
-
- `docs/plans/` нет или она пуста — остановись: `blocked: нужен готовый план`.
|
|
59
|
-
|
|
60
|
-
Прочитай только выбранный план целиком. По front matter извлеки `status`, `mode`, `plan_size`, `test_strategy`, `logging_strategy`, `sources.rules`, `sources.arch`, `sources.references`, `sources.research`, `meta_reviewers`.
|
|
61
|
-
|
|
62
|
-
Сам не читай `docs/rules.md`, `docs/arch.md`, `sources.references`, `sources.research` и релевантный код на этом шаге. Передай эти пути агентам в общем промпте: проверка правил, архитектуры, эталонов, research и кода — их работа. Если старый план не содержит `sources.references`, но существует `docs/references.md`, передай агентам индекс: они должны выбрать только применимые карточки. Если индекса нет, продолжай без references. Основной агент может открыть внешний файл только позже и точечно, если нужно проверить конкретное предложение агента перед правкой плана. Не запускай проверки.
|
|
63
|
-
|
|
64
|
-
### 2. Запустить три модели
|
|
65
|
-
|
|
66
|
-
В каждой итерации, включая первую, запускай в одном batch три изолированных агента:
|
|
67
|
-
|
|
68
|
-
| Уровень | Claude Code (`Agent` tool) | Codex interactive (`spawn_agent`) | Codex exec / non-interactive fallback |
|
|
69
|
-
|---|---|---|---|
|
|
70
|
-
| Быстрая модель | `haiku` | `gpt-5.4-mini` | `gpt-5.4-mini` |
|
|
71
|
-
| Кодовая модель | `sonnet` | `gpt-5.3-codex` | `gpt-5.3-codex` |
|
|
72
|
-
| Флагманская модель | `opus` | `gpt-5.5` | `gpt-5.5` |
|
|
73
|
-
|
|
74
|
-
- Claude Code: используй `Agent` tool с моделями из таблицы.
|
|
75
|
-
- Codex interactive: если доступен `spawn_agent` или аналог, используй субагентов с моделями из таблицы. Не используй отдельные `codex exec`, когда субагенты доступны.
|
|
76
|
-
- Codex exec / non-interactive fallback: если субагентов нет, запусти три `codex exec --model <id>` параллельно одной Bash-командой с `&` и общим `wait`.
|
|
77
|
-
- Если модель недоступна, возьми ближайшую code-capable модель того же уровня. Не заменяй три уровня одной моделью.
|
|
78
|
-
|
|
79
|
-
Общий промпт каждому агенту:
|
|
80
|
-
|
|
81
|
-
```text
|
|
82
|
-
Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, карточки из sources.references, sources.research при наличии и релевантные файлы, на которые ссылается план. Если sources.references отсутствует, прочитай docs/references.md и выбери только применимые карточки.
|
|
83
|
-
|
|
84
|
-
Проверь весь план целиком: исполнимость, соответствие правилам, архитектуре и применимым эталонам, обоснованность отклонений от примеров, полноту целевого алгоритма, БД/API/внешние контракты, связность и размер фаз для одного исполнителя на фазу, тестовые сценарии, логирование, неподтверждённые решения, скрытые риски и места, где eda-plan-execute не сможет продолжить без нового исследования.
|
|
85
|
-
|
|
86
|
-
Не правь файлы и не запускай проверки, тесты, линтеры, билды, typecheck, dev-серверы, миграции, браузерные проверки или API-запросы. Можно только читать файлы.
|
|
87
|
-
|
|
88
|
-
Ответь кратко:
|
|
89
|
-
score: <0–100>
|
|
90
|
-
+ Принять: <конкретная правка и куда встроить>
|
|
91
|
-
~ Уточнить: <что переформулировать>
|
|
92
|
-
-- Убрать: <что неверно, лишнее или противоречит контексту>
|
|
93
|
-
? Вопрос: <что нельзя безопасно решить без пользователя>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### 3. Strict: кросс-CLI ревью плана
|
|
97
|
-
|
|
98
|
-
Обычный режим пропускает этот этап. В `strict` после ответов трёх агентов, но до итоговой оценки, отдай план соседнему CLI через `Bash`.
|
|
99
|
-
|
|
100
|
-
Если ты в Claude Code — запускай Codex CLI:
|
|
101
|
-
|
|
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"
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Если ты в Codex — запускай Claude CLI:
|
|
107
|
-
|
|
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"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Если соседней CLI нет — `AskUserQuestion`: продолжить как `normal` без кросс-CLI или прервать полировку. Не заменяй кросс-CLI четвёртым локальным субагентом.
|
|
113
|
-
|
|
114
|
-
Прочитай ответ соседнего CLI и дальше оцени его вместе с тремя агентами. Файл `${PLAN_FILE%.md}_strict_cli_review.md` можно создать и обновлять в `strict`; это единственный вспомогательный файл, кроме самого плана, который разрешён в strict-режиме.
|
|
115
|
-
|
|
116
|
-
### 4. Оценить результаты
|
|
18
|
+
Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 3`; иначе используй defaults и предупреди.
|
|
117
19
|
|
|
118
|
-
|
|
20
|
+
- threshold берётся из `plan-review.threshold`, default `95`, допустим `1–100`;
|
|
21
|
+
- limit берётся из `plan-polish.limit`, default `3`, это положительное целое число;
|
|
22
|
+
- прямые `threshold N` и `limit N` важнее settings.
|
|
119
23
|
|
|
120
|
-
|
|
121
|
-
- план следует `docs/rules.md` и `docs/arch.md`;
|
|
122
|
-
- план следует применимым карточкам или содержит подтверждённую причину отклонения;
|
|
123
|
-
- нет неподтверждённых существенных решений;
|
|
124
|
-
- `Целевой алгоритм` описывает сквозное поведение;
|
|
125
|
-
- `Контракты реализации` конкретны, особенно БД/API/внешние контракты;
|
|
126
|
-
- фазы имеют цель, шаги, результат, сценарии тестирования и проверку;
|
|
127
|
-
- каждая фаза связна и выполнима одним агентом за один проход;
|
|
128
|
-
- `test_strategy` и `logging_strategy` отражены в фазах и разделах;
|
|
129
|
-
- нет альтернатив вида «выбрать», «решить», «уточнить позже»;
|
|
130
|
-
- план можно передать в `eda-plan-execute` без нового исследования.
|
|
24
|
+
`strict` и кросс-CLI не поддерживаются. Не читай устаревшие поля настроек и не запускай соседний CLI: используй только специализированный workflow этого скилла.
|
|
131
25
|
|
|
132
|
-
|
|
26
|
+
## Правила
|
|
133
27
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
- **Режим:** <normal | strict>
|
|
141
|
-
- **Решение:** план готов к исполнению.
|
|
142
|
-
```
|
|
28
|
+
1. Каждый вызов `eda-plan-review` и `eda-plan-review-fix` запускай отдельным изолированным субагентом с чистым контекстом.
|
|
29
|
+
2. Если нативные субагенты или вложенная делегация недоступны, остановись; не выполняй review/fix основным агентом и не используй CLI-fallback.
|
|
30
|
+
3. Успех определяется только review со статусом `ready`, без открытых находок и `score >= threshold`.
|
|
31
|
+
4. Limit считает подтверждающие review-итерации. После review на последней итерации не запускай fix, который нельзя перепроверить.
|
|
32
|
+
5. Основной агент не делает содержательных правок плана. После ready он может обновить только front matter: `status`, `plan_review`, `plan_review_fix`.
|
|
33
|
+
6. Не запускай проверки проекта и не коммить.
|
|
143
34
|
|
|
144
|
-
|
|
35
|
+
## Вопросы
|
|
145
36
|
|
|
146
|
-
|
|
37
|
+
Если вложенный скил вернул `blocked` с вопросом, передай пользователю только этот вопрос и после ответа продолжи тот же шаг с полным предыдущим контекстом.
|
|
147
38
|
|
|
148
|
-
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
- **Спросить** — полезно, но требует выбора пользователя или меняет подтверждённое решение.
|
|
39
|
+
- Claude Code: `AskUserQuestion`.
|
|
40
|
+
- Codex interactive: `request_user_input`, если доступен, иначе короткий вопрос с вариантами.
|
|
41
|
+
- Codex exec/non-interactive: остановись `blocked: нужен ответ пользователя`.
|
|
152
42
|
|
|
153
|
-
|
|
43
|
+
## Цикл
|
|
154
44
|
|
|
155
|
-
|
|
45
|
+
Сформируй `$PLAN_FILE`, `$THRESHOLD`, `$LIMIT` и внутренний журнал: iteration, review path, plan SHA-256, score, состояния находок, fix path и причина продолжения.
|
|
156
46
|
|
|
157
|
-
|
|
158
|
-
## Изменения после plan-polish
|
|
47
|
+
Для `$ITERATION` от `1` до `$LIMIT`:
|
|
159
48
|
|
|
160
|
-
|
|
161
|
-
- **Оценка после проверки:** <score>/100
|
|
162
|
-
- **Модели:** <фактически запущенные модели и соседний CLI в strict>
|
|
163
|
-
- **+ Добавлено:** <3–7 главных изменений>
|
|
164
|
-
- **~ Уточнено:** <1–5 важных уточнений>
|
|
165
|
-
- **− Убрано:** <если удалено>
|
|
166
|
-
- **Отклонено:** <существенные отклонённые предложения и причина>
|
|
167
|
-
- **Вопросы пользователя:** <если были, кратко решение>
|
|
168
|
-
```
|
|
49
|
+
1. Запусти новый изолированный субагент:
|
|
169
50
|
|
|
170
|
-
|
|
51
|
+
```text
|
|
52
|
+
Используй eda-plan-review для <PLAN_FILE> с threshold <THRESHOLD>.
|
|
53
|
+
Previous review: <PREVIOUS_REVIEW | none>.
|
|
54
|
+
Previous fix: <PREVIOUS_FIX | none>.
|
|
55
|
+
Overrides проверок и моделей: <из текущего вызова | none>.
|
|
56
|
+
Верни путь, status, plan_sha256, score, открытые ID и coverage.
|
|
57
|
+
```
|
|
171
58
|
|
|
172
|
-
|
|
59
|
+
2. Прочитай review-артефакт и проверь, что status/score/threshold/находки согласованы.
|
|
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 ID и score, остановись `blocked: review не показывает прогресса`.
|
|
63
|
+
6. Если status `changes-required`, но открытых находок нет, остановись `blocked: review нарушает контракт gate`; score ниже threshold нельзя исправлять без конкретных находок.
|
|
64
|
+
7. Запусти новый изолированный субагент:
|
|
173
65
|
|
|
174
|
-
|
|
66
|
+
```text
|
|
67
|
+
Используй eda-plan-review-fix для <REVIEW_FILE>.
|
|
68
|
+
Примени все открытые находки минимальным изменением плана.
|
|
69
|
+
Верни путь к fix, before_sha256, after_sha256 и applied ID.
|
|
70
|
+
```
|
|
175
71
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
- **Итоговая оценка:** <score>/100
|
|
179
|
-
- **Порог:** <threshold>/100
|
|
180
|
-
- **Итерации:** <N>
|
|
181
|
-
- **Модели:** <фактически запущенные модели и соседний CLI в strict>
|
|
182
|
-
- **Режим:** <normal | strict>
|
|
183
|
-
- **Решение:** <готов к исполнению | нужен следующий круг | blocked | достигнут лимит>
|
|
184
|
-
```
|
|
72
|
+
8. Проверь, что `before_sha256` равен `plan_sha256` review. Если `after_sha256` равен `before_sha256`, остановись `blocked: fix не изменил план`.
|
|
73
|
+
9. Сохрани review/fix как previous chain и начни следующую review-итерацию.
|
|
185
74
|
|
|
186
|
-
|
|
75
|
+
Score не повышай и не пересчитывай сам: используй только полный `eda-plan-review`.
|
|
187
76
|
|
|
188
77
|
## Финал
|
|
189
78
|
|
|
190
|
-
Сообщи
|
|
79
|
+
Сообщи результат (`ready`, limit, no progress, invalid gate или blocked), план, последний review/fix, score/threshold, число review-итераций, open ID и coverage warnings. При ready предложи `eda-plan-execute`; при неуспехе перечисли конкретные оставшиеся находки.
|
|
191
80
|
|
|
192
81
|
## Чего НЕ делать
|
|
193
82
|
|
|
194
|
-
-
|
|
195
|
-
-
|
|
196
|
-
- Запускать
|
|
197
|
-
-
|
|
198
|
-
-
|
|
199
|
-
-
|
|
200
|
-
- Пропускать кросс-CLI молча в `strict`.
|
|
201
|
-
- Вставлять предложения агентов без анализа.
|
|
202
|
-
- Добавлять существенные решения без подтверждения пользователя.
|
|
203
|
-
- Превращать план в длинный отчёт о ревью.
|
|
204
|
-
- Коммитить, пушить или запускать `eda-plan-execute`.
|
|
83
|
+
- Делать review, выставлять score или исправлять содержание плана основным агентом.
|
|
84
|
+
- Запускать старые три общих ревью одним промптом.
|
|
85
|
+
- Запускать кросс-CLI, `strict`, `codex exec` или `claude -p`.
|
|
86
|
+
- Запускать fix после последней review-итерации.
|
|
87
|
+
- Ждать два одинаковых круга: один подтверждённый круг без прогресса уже останавливает цикл.
|
|
88
|
+
- Писать длинный журнал полировки в план, менять код или запускать проверки проекта.
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-plan-review
|
|
3
|
+
description: 'Проводит специализированное read-only ревью готового плана и сохраняет находки с оценкой готовности.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Скил: Ревью плана (eda-plan-review)
|
|
7
|
+
|
|
8
|
+
Работай как оркестратор установленных `eda-plan-review-*` агентов. Сам не выполняй их специализированные роли и не копируй их prompts в task-сообщения. Выбери план и проверки, запусти агентов, проверь структурированные ответы, дедуплицируй подтверждённые находки, выставь экспертный score и сохрани один review-артефакт.
|
|
9
|
+
|
|
10
|
+
## Вход из сообщения пользователя
|
|
11
|
+
|
|
12
|
+
Текст рядом с вызовом — главный вход. Разбери путь или название плана, «последний план», threshold, предыдущие review/fix, отключённые или принудительно включённые проверки и разовые модели.
|
|
13
|
+
|
|
14
|
+
Если входа достаточно, продолжай без вопроса. `AskUserQuestion` используй только если план нельзя выбрать однозначно или переданная цепочка review/fix противоречива. Старую историю диалога не считай входом без явной связи с текущим вызовом.
|
|
15
|
+
|
|
16
|
+
## Настройки
|
|
17
|
+
|
|
18
|
+
Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 3`; при другой версии или невалидном поле используй defaults и добавь warning. Прямое указание пользователя важнее файла.
|
|
19
|
+
|
|
20
|
+
Используй `plan-review.threshold` и `plan-review.agents.<check>.mode/model`. Threshold по умолчанию `95`, допустимы целые значения `1–100`.
|
|
21
|
+
|
|
22
|
+
| Проверка | Default mode | Claude | Codex |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| `requirements` | `always` | `sonnet` | `gpt-5.6-terra` |
|
|
25
|
+
| `rules` | `always` | `haiku` | `gpt-5.6-luna` |
|
|
26
|
+
| `architecture` | `always` | `opus` | `gpt-5.6-sol` |
|
|
27
|
+
| `feasibility` | `always` | `opus` | `gpt-5.6-sol` |
|
|
28
|
+
| `execution` | `always` | `sonnet` | `gpt-5.6-terra` |
|
|
29
|
+
| `verification` | `always` | `sonnet` | `gpt-5.6-terra` |
|
|
30
|
+
| `api` | `auto` | `sonnet` | `gpt-5.6-terra` |
|
|
31
|
+
| `database` | `auto` | `opus` | `gpt-5.6-sol` |
|
|
32
|
+
| `security` | `auto` | `opus` | `gpt-5.6-sol` |
|
|
33
|
+
| `frontend` | `auto` | `sonnet` | `gpt-5.6-terra` |
|
|
34
|
+
| `performance` | `auto` | `opus` | `gpt-5.6-sol` |
|
|
35
|
+
| `previous` | `auto` | `haiku` | `gpt-5.6-luna` |
|
|
36
|
+
|
|
37
|
+
Режимы: `always` — каждый раз, `auto` — только по применимости, `off` — не запускать. Неизвестную модель замени default конкретного агента и добавь warning.
|
|
38
|
+
|
|
39
|
+
## Вопросы
|
|
40
|
+
|
|
41
|
+
Когда нужен блокирующий вопрос:
|
|
42
|
+
|
|
43
|
+
- Claude Code: используй `AskUserQuestion`.
|
|
44
|
+
- Codex interactive: используй `request_user_input`, если доступен; иначе задай один короткий вопрос с 2–3 вариантами и остановись.
|
|
45
|
+
- Codex exec/non-interactive: не читай stdin; верни `blocked: нужен план или решение пользователя`.
|
|
46
|
+
|
|
47
|
+
## Подготовить контекст
|
|
48
|
+
|
|
49
|
+
1. Выбери `$PLAN_FILE` только в `docs/plans/`: явный путь, однозначное совпадение или самый новый файл при словах «последний план». Без готового плана остановись.
|
|
50
|
+
2. Прочитай план целиком и вычисли SHA-256 его байтов как `$PLAN_SHA256` доступной read-only командой.
|
|
51
|
+
3. Прочитай `AGENTS.md`, `CLAUDE.md`, `docs/rules.md`, `docs/arch.md` и front matter плана настолько, чтобы выбрать проверки, но не делай собственное ревью.
|
|
52
|
+
4. Определи `$BUSINESS_FILES`: используй относящиеся к задаче пути из `sources.business`; для старого плана выбери только применимые карточки через `docs/business.md`. Если подходящих нет — `none`.
|
|
53
|
+
5. Определи `$REFERENCE_FILES`: используй применимые пути из `sources.references`; для старого плана выбери только карточки затронутых компонентов через `docs/references.md`. Не загружай весь каталог.
|
|
54
|
+
6. Определи `$RESEARCH_FILE` из `sources.research` или `none`.
|
|
55
|
+
7. Сформируй краткий `$PLAN_CONTEXT`: исходная задача, scope, критерии готовности, затронутые компоненты, подтверждённые решения и пути к документам. Если задача неизвестна, напиши `task: unknown`.
|
|
56
|
+
8. Определи `$PREVIOUS_REVIEW` и `$PREVIOUS_FIX`. Явные пути имеют приоритет. Иначе используй последний review для того же канонического пути только когда его `plan_sha256` равен текущему SHA-256 или `after_sha256` связанного fix равен текущему SHA-256. Несвязанную историю не подмешивай.
|
|
57
|
+
|
|
58
|
+
## Выбрать проверки
|
|
59
|
+
|
|
60
|
+
- `requirements`, `rules`, `architecture`, `feasibility`, `execution`, `verification` запускай по `always/auto/off`; их default `always`.
|
|
61
|
+
- `api` в auto включай для endpoint, handler, DTO, GraphQL/RPC, events, queues, webhooks и внешних интеграций.
|
|
62
|
+
- `database` в auto включай для схем, моделей хранения, SQL, миграций, индексов и транзакций.
|
|
63
|
+
- `security` в auto включай для auth, permissions, внешнего ввода, файлов, сети, секретов, криптографии и чувствительных данных.
|
|
64
|
+
- `frontend` в auto включай для UI-компонентов, стилей, клиентских маршрутов и пользовательского состояния.
|
|
65
|
+
- `performance` в auto включай для запросов, пакетной обработки, кешей, конкурентности, памяти и горячих путей.
|
|
66
|
+
- `previous` в auto включай только при непустой связанной цепочке.
|
|
67
|
+
- Прямые «без X», «включи X» и разовая модель важнее settings.
|
|
68
|
+
|
|
69
|
+
Запиши skipped-проверки и причины. Forced-проверка запускается даже если auto-критерий не найден; агент может вернуть `not_applicable`.
|
|
70
|
+
|
|
71
|
+
## Запустить агентов
|
|
72
|
+
|
|
73
|
+
Запусти все выбранные проверки одним параллельным пакетом через установленных нативных агентов:
|
|
74
|
+
|
|
75
|
+
- Claude Code: custom agent `eda-plan-review-<check>` через `Agent` tool с настроенной моделью.
|
|
76
|
+
- Codex: custom agent `eda-plan-review-<check>` через `spawn_agent` или точный аналог с настроенной моделью.
|
|
77
|
+
|
|
78
|
+
Если нативные packaged-агенты недоступны, остановись. Не используй generic-субагентов, `codex exec`, `claude -p` или основной агент как fallback.
|
|
79
|
+
|
|
80
|
+
В task-сообщение передавай только рабочую директорию, `PLAN_FILE`, `PLAN_SHA256`, `BUSINESS_FILES`, `REFERENCE_FILES`, `RESEARCH_FILE`, `PREVIOUS_REVIEW`, `PREVIOUS_FIX`, `MODEL` и `$PLAN_CONTEXT`. Полная семантика проверки хранится в prompt агента.
|
|
81
|
+
|
|
82
|
+
## Проверить ответы
|
|
83
|
+
|
|
84
|
+
Для каждого ответа проверь:
|
|
85
|
+
|
|
86
|
+
- один YAML-блок и допустимый `status`;
|
|
87
|
+
- `check` совпадает с ролью, `model` — с фактической моделью;
|
|
88
|
+
- `находки` и `предыдущие_находки` — массивы;
|
|
89
|
+
- у каждой находки есть fingerprint, severity, plan_location, problem, evidence, impact, fix, acceptance;
|
|
90
|
+
- `blocked` содержит question; `not_applicable` не содержит находок.
|
|
91
|
+
|
|
92
|
+
Невалидного или упавшего агента один раз повтори на той же модели с указанием только нарушения контракта. Повторный сбой любой выбранной проверки блокирует всё ревью; итоговый файл не сохраняй.
|
|
93
|
+
|
|
94
|
+
## Агрегировать находки
|
|
95
|
+
|
|
96
|
+
1. Подтверди evidence точечным чтением указанных файлов. Не добавляй самостоятельные domain-находки.
|
|
97
|
+
2. Прими находку только когда план обязательно нужно изменить: есть точное место, доказательство, практическая ошибка или существенная неоднозначность, минимальная правка и проверяемая приёмка. Если замечание можно без последствий не применять, это не находка.
|
|
98
|
+
3. Отклони недоказанное, вкусовое, уже закрытое, выходящее за scope или противоречащее подтверждённому решению. Также отклоняй «лучше подробнее», дополнительные пояснения, обоснования и стилистические улучшения, если без них план уже однозначно исполним.
|
|
99
|
+
4. Недостаток конкретики подтверждён только когда исполнителю придётся заново исследовать область, принять незафиксированное существенное решение или можно получить две существенно разные реализации. Вода или повтор подтверждены, когда точный фрагмент не меняет действие, контракт, зависимость, проверку или решение; исправление для них должно быть удалением либо короткой заменой.
|
|
100
|
+
5. Объедини находки с одной первопричиной и одной правкой, сохранив все checks и evidence.
|
|
101
|
+
6. Для совпадающего fingerprint сохрани прежний ID. Новой находке дай следующий свободный `PR-NNN`; номер не переиспользуй.
|
|
102
|
+
7. В итог включай только открытые находки и состояния прошлых ID. Предложения, которые не требуют обязательной правки плана, сохраняй только в `Отклонённые предложения` и не учитывай в score.
|
|
103
|
+
|
|
104
|
+
## Выставить score и gate
|
|
105
|
+
|
|
106
|
+
Score выставляет главный агент экспертно после обработки всех агентов. Не усредняй оценки, не используй формулу вычетов и не проси агентов ставить score.
|
|
107
|
+
|
|
108
|
+
- `100`: открытых находок нет, план конкретен и исполним.
|
|
109
|
+
- `95–99`: остаются только локальные, но обязательные находки low.
|
|
110
|
+
- `80–94`: есть находка medium или несколько находок low.
|
|
111
|
+
- `60–79`: есть находка high.
|
|
112
|
+
- ниже `60`: есть critical или требуется серьёзное перепланирование.
|
|
113
|
+
- при отсутствии открытых находок score равен `100`.
|
|
114
|
+
- если состояния open/resolved/regressed не изменились относительно предыдущего review, score не меняй.
|
|
115
|
+
- каждое изменение score объясни закрытыми, новыми или регрессировавшими ID.
|
|
116
|
+
|
|
117
|
+
Статус `ready` ставь только когда нет открытых находок и `$SCORE >= $THRESHOLD`. Любая открытая находка даёт `changes-required`, независимо от score. Score ниже threshold без открытых находок недопустим: не снижай оценку за необязательные пожелания и не выдумывай находку только ради числа.
|
|
118
|
+
|
|
119
|
+
## Сохранить review
|
|
120
|
+
|
|
121
|
+
После успешной обработки всех выбранных агентов создай `docs/plan-reviews/{YYYY-MM-DD}_{HH-MM}_{slug}.md`:
|
|
122
|
+
|
|
123
|
+
```markdown
|
|
124
|
+
---
|
|
125
|
+
plan: <docs/plans/...>
|
|
126
|
+
plan_sha256: <sha256>
|
|
127
|
+
previous_review: <path | none>
|
|
128
|
+
previous_fix: <path | none>
|
|
129
|
+
score: <0..100>
|
|
130
|
+
threshold: <1..100>
|
|
131
|
+
status: <ready | changes-required>
|
|
132
|
+
date: <YYYY-MM-DD HH:MM>
|
|
133
|
+
checks:
|
|
134
|
+
- name: <check>
|
|
135
|
+
model: <model>
|
|
136
|
+
status: <completed | skipped>
|
|
137
|
+
reason: <применимость или причина пропуска>
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
# Ревью плана: <название>
|
|
141
|
+
|
|
142
|
+
## Оценка
|
|
143
|
+
**<score>/100.** <экспертное объяснение и изменение относительно предыдущего score>
|
|
144
|
+
|
|
145
|
+
## Покрытие
|
|
146
|
+
- **Completed:** <checks и модели>
|
|
147
|
+
- **Skipped:** <checks и причины>
|
|
148
|
+
- **Warnings:** <warnings или «нет»>
|
|
149
|
+
|
|
150
|
+
## Состояние предыдущих находок
|
|
151
|
+
| ID | Статус | Доказательство |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
|
|
154
|
+
## Находки
|
|
155
|
+
|
|
156
|
+
### PR-001. <заголовок>
|
|
157
|
+
- **Checks:** <роли>
|
|
158
|
+
- **Severity:** <critical | high | medium | low>
|
|
159
|
+
- **Fingerprint:** `<fingerprint>`
|
|
160
|
+
- **Место в плане:** <раздел или задача>
|
|
161
|
+
- **Проблема:** <что не так>
|
|
162
|
+
- **Доказательства:** <evidence>
|
|
163
|
+
- **Риск:** <impact>
|
|
164
|
+
- **Исправление:** <fix>
|
|
165
|
+
- **Приёмка:** <acceptance>
|
|
166
|
+
|
|
167
|
+
## Отклонённые предложения
|
|
168
|
+
- `<fingerprint>` — <причина или «нет»>
|
|
169
|
+
|
|
170
|
+
## Gate
|
|
171
|
+
- **Открытые находки:** <ID или «нет»>
|
|
172
|
+
- **Результат:** <ready | changes-required>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Review содержит только проблемы и техническое покрытие, без похвалы и длинного пересказа плана.
|
|
176
|
+
|
|
177
|
+
## Финал
|
|
178
|
+
|
|
179
|
+
Сообщи путь, status, score/threshold, открытые ID, completed/skipped и previous chain. При `changes-required` предложи `eda-plan-review-fix`; при `ready` — `eda-plan-execute` или возврат вызывающему `eda-plan-polish`.
|
|
180
|
+
|
|
181
|
+
## Чего НЕ делать
|
|
182
|
+
|
|
183
|
+
- Править план, код, настройки или документацию проекта.
|
|
184
|
+
- Запускать тесты, lint, build, typecheck, серверы, миграции, браузерные проверки или API-запросы.
|
|
185
|
+
- Выполнять специализированную роль главным агентом.
|
|
186
|
+
- Запускать другой CLI или generic-fallback.
|
|
187
|
+
- Усреднять score агентов, менять score без изменения находок или снижать его за необязательные пожелания.
|
|
188
|
+
- Принимать косметическое расширение текста, дополнительное объяснение или вкусовую формулировку как находку.
|
|
189
|
+
- Сохранять итог после повторного сбоя выбранного агента.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-plan-review-fix
|
|
3
|
+
description: 'Исправляет готовый план по всем находкам сохранённого plan-review.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Скил: Исправитель плана по ревью (eda-plan-review-fix)
|
|
7
|
+
|
|
8
|
+
Применяй подтверждённые находки из `docs/plan-reviews/` только к связанному плану. Не делай новое ревью: твой контракт — точечно изменить основные разделы плана и сохранить проверяемую цепочку SHA-256.
|
|
9
|
+
|
|
10
|
+
## Вход из сообщения пользователя
|
|
11
|
+
|
|
12
|
+
Разбери путь или название review, «последнее ревью», ограничения и явные решения пользователя. Если вход однозначен, продолжай без вопроса. При нескольких равных review или противоречивом target используй `AskUserQuestion`.
|
|
13
|
+
|
|
14
|
+
## Вопросы
|
|
15
|
+
|
|
16
|
+
- Claude Code: используй `AskUserQuestion`.
|
|
17
|
+
- Codex interactive: используй `request_user_input`, если доступен; иначе задай один короткий вопрос с вариантами и остановись.
|
|
18
|
+
- Codex exec/non-interactive: не читай stdin; верни `blocked: нужен ответ пользователя` до любых рискованных правок.
|
|
19
|
+
|
|
20
|
+
## Правила
|
|
21
|
+
|
|
22
|
+
1. Работай только с review из `docs/plan-reviews/` и его `plan` из `docs/plans/`.
|
|
23
|
+
2. Вычисли SHA-256 текущего плана до правок. Он обязан совпадать с `plan_sha256` review. При несовпадении остановись: review устарел, нужен новый `eda-plan-review`.
|
|
24
|
+
3. Перед правкой прочитай план, `docs/rules.md`, `docs/arch.md`, только применимые `sources.business`, `sources.references` и `sources.research`.
|
|
25
|
+
4. Не переоценивай находки и не создавай новые. Каждая находка в итоговом review требует исправления. Если находка недоказана, противоречит контексту или непонятна, остановись и попроси повторное review либо решение пользователя.
|
|
26
|
+
5. Не пропускай находку и не заменяй её пожеланием на будущее. Продуктовый выбор, конфликт с business/rules/architecture или расширение scope передай пользователю одним блокирующим вопросом до любых правок.
|
|
27
|
+
6. Делай минимально достаточный diff. Сначала удаляй лишнее или заменяй существующую формулировку; не добавляй новый абзац, если достаточно одной строки, не повторяй сведения между разделами и не добавляй rationale, примеры или фон, которых не требует находка.
|
|
28
|
+
7. Встраивай правки в `Целевой алгоритм`, `Контракты реализации`, фазы, тесты, логирование и эксплуатацию. Не создавай длинный журнал ревью в теле плана.
|
|
29
|
+
8. Сохраняй ID задач и прямые зависимости; при структурной правке актуализируй все ссылки.
|
|
30
|
+
9. Не правь код, конфиги, зависимости, миграции или другие документы. Не запускай проверки проекта.
|
|
31
|
+
|
|
32
|
+
## Применить находки
|
|
33
|
+
|
|
34
|
+
1. Прочитай раздел `Gate`, все открытые находки и `Отклонённые предложения`.
|
|
35
|
+
2. До редактирования собери все реальные блокирующие вопросы. Не делай частичную правку до ответа.
|
|
36
|
+
3. Примени все открытые находки одним связным минимальным изменением плана. Отклонённые предложения не применяй.
|
|
37
|
+
4. Для каждого ID зафиксируй `applied`; не меняй fingerprint.
|
|
38
|
+
5. Заранее определи `$FIX_FILE`, обнови front matter плана полями `status`, `plan_review` и `plan_review_fix`, затем вычисли окончательный SHA-256 как `$AFTER_SHA256`.
|
|
39
|
+
6. Если находки были, но итоговый SHA-256 не изменился, остановись `blocked: fix не изменил план` и не выдавай успех.
|
|
40
|
+
|
|
41
|
+
После успешного изменения:
|
|
42
|
+
|
|
43
|
+
- если review был `changes-required`, установи в front matter плана `status: meta-reviewed`;
|
|
44
|
+
- установи `plan_review: <REVIEW_FILE>` и `plan_review_fix: <FIX_FILE>` до вычисления after SHA-256 и записи отчёта;
|
|
45
|
+
- не ставь `status: reviewed`: это может сделать только подтверждающий review с gate `ready`.
|
|
46
|
+
|
|
47
|
+
## Сохранить fix-отчёт
|
|
48
|
+
|
|
49
|
+
Создай `docs/plan-review-fixes/{YYYY-MM-DD}_{HH-MM}_{slug}.md`:
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
---
|
|
53
|
+
review: <docs/plan-reviews/...>
|
|
54
|
+
plan: <docs/plans/...>
|
|
55
|
+
before_sha256: <sha256 из review>
|
|
56
|
+
after_sha256: <sha256 после изменения>
|
|
57
|
+
status: done
|
|
58
|
+
date: <YYYY-MM-DD HH:MM>
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
# Исправления плана по ревью: <название>
|
|
62
|
+
|
|
63
|
+
## Применённые находки
|
|
64
|
+
| ID | Что изменено | Раздел плана | Статус |
|
|
65
|
+
|---|---|---|---|
|
|
66
|
+
| PR-001 | <конкретная правка> | <раздел> | applied |
|
|
67
|
+
|
|
68
|
+
## Цепочка
|
|
69
|
+
- **Before SHA-256:** `<hash>`
|
|
70
|
+
- **After SHA-256:** `<hash>`
|
|
71
|
+
- **Нужен подтверждающий review:** да
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
После записи отчёта допиши в review один раздел `## Применённые исправления` со ссылкой на fix, after SHA-256 и списком applied ID. Не дублируй раздел при повторном продолжении того же запуска.
|
|
75
|
+
|
|
76
|
+
## Финал
|
|
77
|
+
|
|
78
|
+
Сообщи пути к plan/review/fix, before/after SHA-256, applied ID, оставшиеся блокеры и что изменения не закоммичены. Следующий шаг — `eda-plan-review` для подтверждения или возврат вызывающему `eda-plan-polish`.
|
|
79
|
+
|
|
80
|
+
## Чего НЕ делать
|
|
81
|
+
|
|
82
|
+
- Делать новое ревью или выставлять score.
|
|
83
|
+
- Исправлять код или файлы вне выбранного плана, review и fix-отчёта.
|
|
84
|
+
- Применять stale review к другому SHA-256.
|
|
85
|
+
- Молча пропускать находку или самостоятельно разрешать продуктовый конфликт.
|
|
86
|
+
- Раздувать план пояснениями и повторами вместо минимального удаления или замены.
|
|
87
|
+
- Добавлять журнал итераций в тело плана.
|
|
88
|
+
- Коммитить, запускать тесты, lint, build, typecheck, миграции или другой CLI.
|