@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,188 +1,142 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: eda-plan-review
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Проверяет готовый план по фиксированному чек-листу и сохраняет отчёт с оценкой готовности.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Скил: Ревью плана (eda-plan-review)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Read-only проверка одного плана по списку ниже. Список конечный и один и тот же для всех планов: поэтому проверка заканчивается, а оценка растёт по мере закрытия пунктов.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Текст рядом с вызовом — главный вход. Разбери путь или название плана, «последний план», threshold, предыдущие review/fix, отключённые или принудительно включённые проверки и разовые модели.
|
|
13
|
-
|
|
14
|
-
Если входа достаточно, продолжай без вопроса. `AskUserQuestion` используй только если план нельзя выбрать однозначно или переданная цепочка review/fix противоречива. Старую историю диалога не считай входом без явной связи с текущим вызовом.
|
|
15
|
-
|
|
16
|
-
## Настройки
|
|
17
|
-
|
|
18
|
-
Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 3`; при другой версии или невалидном поле используй defaults и добавь warning. Прямое указание пользователя важнее файла.
|
|
10
|
+
Ты проверяешь **исполнимость плана**, а не правильность решений. Вопрос: «можно это исполнить, не переспрашивая?» Правильность решений закрыта на этапе Plan Mode через `decision_mode`, а ошибки в чужих API дешевле ловит статический анализ на коде.
|
|
19
11
|
|
|
20
|
-
|
|
12
|
+
Всю работу делай сам, одним проходом. Не запускай субагентов и не дроби проверку по ролям.
|
|
21
13
|
|
|
22
|
-
|
|
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: нужен план или решение пользователя`.
|
|
14
|
+
## Вход из сообщения пользователя
|
|
46
15
|
|
|
47
|
-
|
|
16
|
+
Текст рядом с вызовом — главный вход. Разбери путь или название плана, «последний план», threshold и предыдущий review.
|
|
48
17
|
|
|
49
|
-
|
|
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. Несвязанную историю не подмешивай.
|
|
18
|
+
`$PLAN_FILE` ищи только в `docs/artifacts/plans/`: явный путь, однозначное совпадение или самый новый файл при словах «последний план». Без плана остановись. Если вариантов несколько и выбрать нельзя — `AskUserQuestion`.
|
|
57
19
|
|
|
58
|
-
##
|
|
20
|
+
## Настройки
|
|
59
21
|
|
|
60
|
-
|
|
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.
|
|
22
|
+
Прочитай `docs/settings.yaml`, если есть. Поддерживается только `version: 3`; иначе defaults и warning.
|
|
68
23
|
|
|
69
|
-
|
|
24
|
+
`plan-review.threshold` — доля закрытых обязательных пунктов для `ready`, в процентах. Default `100`. Прямое указание в сообщении важнее файла.
|
|
70
25
|
|
|
71
|
-
##
|
|
26
|
+
## Подготовка
|
|
72
27
|
|
|
73
|
-
|
|
28
|
+
1. Прочитай план целиком и вычисли SHA-256 его байтов как `$PLAN_SHA256`.
|
|
29
|
+
2. Прочитай `docs/rules.md`, `docs/arch.md` и только применимые карточки из `sources.business` и `sources.references` плана. Для старого плана выбери только применимые карточки через `docs/business.md`, а для старого плана выбери только карточки затронутых компонентов через `docs/references.md`; нерелевантные не загружай.
|
|
30
|
+
3. Определи `$PREVIOUS_REVIEW`: явный путь либо последний review того же плана, у которого `plan_sha256` совпадает с текущим SHA-256 или с `after_sha256` связанного fix. Несвязанную историю не подмешивай.
|
|
74
31
|
|
|
75
|
-
|
|
76
|
-
- Codex: custom agent `eda-plan-review-<check>` через `spawn_agent` или точный аналог с настроенной моделью.
|
|
32
|
+
## Чек-лист
|
|
77
33
|
|
|
78
|
-
|
|
34
|
+
Для каждого пункта верни `pass`, `fail` или `n/a`. Любой ответ подкрепи доказательством: цитатой из плана, путём к файлу или ссылкой на раздел. `n/a` ставь только когда пункт неприменим к этому плану, и пиши причину.
|
|
79
35
|
|
|
80
|
-
|
|
36
|
+
| № | Пункт |
|
|
37
|
+
|---|---|
|
|
38
|
+
| 1 | Каждая часть запроса покрыта планом |
|
|
39
|
+
| 2 | В плане нет работы вне запроса |
|
|
40
|
+
| 3 | Применимые business-карточки записаны в `sources.business` и отражены в результатах фаз |
|
|
41
|
+
| 4 | План не отклоняется от `docs/rules.md`, `docs/arch.md` и карточек. Где нужно другое поведение, есть отдельный пункт на изменение самого документа до зависимой реализации |
|
|
42
|
+
| 5 | Все существенные решения имеют источник подтверждения: ответ пользователя, research или `autonomous` с причиной |
|
|
43
|
+
| 6 | В плане не осталось решений, которые придётся принимать исполнителю |
|
|
44
|
+
| 7 | Пакеты, библиотеки и сервисы имеют конкретные версии или ссылку на существующий lock |
|
|
45
|
+
| 8 | Есть `Целевой алгоритм` и `Контракты реализации` с подразделами `Данные и БД` и `API и внешние контракты` |
|
|
46
|
+
| 9 | Ни один факт не описан в двух разделах |
|
|
47
|
+
| 10 | В плане нет сигнатур чужих методов, формул, приведений типов и пересказа кодовых примеров карточек |
|
|
48
|
+
| 11 | У каждой фазы есть цель, что сделать, результат и проверка |
|
|
49
|
+
| 12 | Каждая фаза выполнима одним агентом за один проход вместе с её проверками |
|
|
50
|
+
| 13 | Команды в `Проверке` фазы существуют к моменту её выполнения или создаются в этой же фазе |
|
|
51
|
+
| 14 | План доведён до точки, где результат можно запустить и проверить целиком |
|
|
52
|
+
| 15 | Объём в пределах потолка: `normal` — 40 КБ, `short` — 12 КБ и 2 фазы |
|
|
53
|
+
| 16 | В плане нет раздела `Открытые вопросы` и незакрытых развилок |
|
|
81
54
|
|
|
82
|
-
|
|
55
|
+
### Как проверять пункт 6
|
|
83
56
|
|
|
84
|
-
Для
|
|
57
|
+
Ищи шесть форм. Для каждой находки приведи цитату.
|
|
85
58
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
59
|
+
| Форма | Пример | Как должно быть |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| Прямая альтернатива | «Redis или Memcached», «можно так или так» | «Кэш — Redis 7.4» |
|
|
62
|
+
| Делегирование решения | «выбрать подходящий драйвер», «на усмотрение исполнителя», «определить в процессе» | назван конкретный драйвер |
|
|
63
|
+
| Мягкая модальность | «предпочтительно», «желательно», «по возможности» | либо требование, либо пункта нет |
|
|
64
|
+
| Число без числа | «разумный таймаут», «оптимальный размер батча», «достаточное количество попыток» | «таймаут 30 с», «батч 100» |
|
|
65
|
+
| Отложенное решение | «уточнить позже», «решить при реализации», «TBD» | решено до сохранения плана |
|
|
66
|
+
| Обобщение вместо требования | «обработать ошибки корректно», «добавить нужные индексы», «настроить логирование» | что происходит при ошибке; какие индексы; какие поля в логах |
|
|
91
67
|
|
|
92
|
-
|
|
68
|
+
Критерий: если по формулировке два исполнителя сделают существенно разные вещи — `fail`.
|
|
93
69
|
|
|
94
|
-
|
|
70
|
+
Пункт не касается: условных веток («при ошибке — повтор» это описание ветки, а не модальность) и умолчаний, заданных `rules.md` или карточкой — их повторять в плане не нужно.
|
|
95
71
|
|
|
96
|
-
|
|
97
|
-
2. Отклони недоказанное, вкусовое, уже закрытое, выходящее за scope или противоречащее подтверждённому решению. Существенные отклонения сохрани с fingerprint и причиной.
|
|
98
|
-
3. Объедини findings с одной первопричиной и одной правкой, сохранив все checks и evidence.
|
|
99
|
-
4. Для совпадающего fingerprint сохрани прежний ID. Новому finding дай следующий свободный `PR-NNN`; номер не переиспользуй.
|
|
100
|
-
5. Статусы `waived` сохраняй без повторного открытия, пока нет нового evidence. Required нельзя сделать waived без явного решения пользователя, меняющего исходное требование.
|
|
101
|
-
6. В итог включай только открытые required/optional findings и состояния прошлых ID.
|
|
72
|
+
## Правила проверки
|
|
102
73
|
|
|
103
|
-
|
|
74
|
+
1. Не правь план, код и документацию. Не запускай тесты, линтеры, сборку, миграции и внешние запросы.
|
|
75
|
+
2. Проверяй только пункты списка. Замечание, которое не ложится ни в один пункт, в отчёт не идёт: список — это и есть определение готовности.
|
|
76
|
+
3. Не оценивай качество решений: выбор библиотеки, схему таблиц, архитектурный подход. Их подтверждает пользователь, а не ревью.
|
|
77
|
+
4. Каждый `fail` называет конкретное место в плане и минимальную правку. Правка не должна требовать нового текста больше абзаца; если требует — пункт всё равно `fail`, но в исправлении напиши, что его нужно решить сокращением, а не дописыванием.
|
|
78
|
+
5. Не предлагай расширять текст «для полноты», добавлять пояснения, обоснования и примеры.
|
|
79
|
+
6. Для пункта, закрытого в предыдущем review, ставь `fail` снова только с новым доказательством регресса.
|
|
104
80
|
|
|
105
|
-
|
|
81
|
+
## Оценка
|
|
106
82
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
- каждое изменение score объясни закрытыми, новыми или регрессировавшими ID.
|
|
83
|
+
```
|
|
84
|
+
всего = число пунктов со статусом pass или fail
|
|
85
|
+
закрыто = число пунктов со статусом pass
|
|
86
|
+
score = round(100 * закрыто / всего)
|
|
87
|
+
status = ready, если score >= threshold, иначе changes-required
|
|
88
|
+
```
|
|
114
89
|
|
|
115
|
-
|
|
90
|
+
Пункты `n/a` в знаменатель не входят. Score не выставляй экспертно и не корректируй вручную.
|
|
116
91
|
|
|
117
|
-
## Сохранить
|
|
92
|
+
## Сохранить отчёт
|
|
118
93
|
|
|
119
|
-
|
|
94
|
+
Создай `docs/artifacts/plan-reviews/{YYYY-MM-DD}_{HH-MM}_{slug}.md`:
|
|
120
95
|
|
|
121
96
|
```markdown
|
|
122
97
|
---
|
|
123
|
-
plan: <docs/plans/...>
|
|
98
|
+
plan: <docs/artifacts/plans/...>
|
|
124
99
|
plan_sha256: <sha256>
|
|
125
100
|
previous_review: <path | none>
|
|
126
|
-
previous_fix: <path | none>
|
|
127
101
|
score: <0..100>
|
|
128
102
|
threshold: <1..100>
|
|
129
103
|
status: <ready | changes-required>
|
|
130
104
|
date: <YYYY-MM-DD HH:MM>
|
|
131
|
-
checks:
|
|
132
|
-
- name: <check>
|
|
133
|
-
model: <model>
|
|
134
|
-
status: <completed | skipped>
|
|
135
|
-
reason: <применимость или причина пропуска>
|
|
136
105
|
---
|
|
137
106
|
|
|
138
107
|
# Ревью плана: <название>
|
|
139
108
|
|
|
140
|
-
##
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
## Покрытие
|
|
144
|
-
- **Completed:** <checks и модели>
|
|
145
|
-
- **Skipped:** <checks и причины>
|
|
146
|
-
- **Warnings:** <warnings или «нет»>
|
|
147
|
-
|
|
148
|
-
## Состояние предыдущих findings
|
|
149
|
-
| ID | Статус | Доказательство |
|
|
109
|
+
## Чек-лист
|
|
110
|
+
| № | Статус | Доказательство |
|
|
150
111
|
|---|---|---|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
- `<fingerprint>` — <причина или «нет»>
|
|
168
|
-
|
|
169
|
-
## Gate
|
|
170
|
-
- **Required open:** <ID или «нет»>
|
|
171
|
-
- **Optional open:** <ID или «нет»>
|
|
172
|
-
- **Результат:** <ready | changes-required>
|
|
112
|
+
| 1 | pass | «Готово, когда приложение поднимается…» — покрывает обе части запроса |
|
|
113
|
+
| 6 | fail | [Фаза 3] «настроить разумный таймаут» — число не задано |
|
|
114
|
+
| 3 | n/a | `docs/business.md` в проекте нет |
|
|
115
|
+
|
|
116
|
+
## Что исправить
|
|
117
|
+
|
|
118
|
+
### Пункт 6
|
|
119
|
+
- **Место:** Фаза 3, «Что сделать».
|
|
120
|
+
- **Проблема:** «разумный таймаут» — исполнитель выберет любое значение.
|
|
121
|
+
- **Исправление:** назвать число или сослаться на настройку, где оно задано.
|
|
122
|
+
|
|
123
|
+
## Итог
|
|
124
|
+
- **Закрыто:** 14 из 16 → score 88
|
|
125
|
+
- **Порог:** 100
|
|
126
|
+
- **Результат:** changes-required
|
|
127
|
+
- **Открытые пункты:** 6, 9
|
|
173
128
|
```
|
|
174
129
|
|
|
175
|
-
Review содержит только проблемы и техническое покрытие, без похвалы и длинного пересказа плана.
|
|
176
|
-
|
|
177
130
|
## Финал
|
|
178
131
|
|
|
179
|
-
Сообщи
|
|
132
|
+
Сообщи путь к отчёту, score, порог, статус, номера открытых пунктов и что менялось относительно предыдущего review. При `changes-required` предложи `eda-plan-review-fix`; при `ready` — `eda-plan-execute` или возврат вызывающему `eda-plan-polish`.
|
|
180
133
|
|
|
181
134
|
## Чего НЕ делать
|
|
182
135
|
|
|
136
|
+
- Запускать субагентов, другой CLI или делить проверку по ролям.
|
|
183
137
|
- Править план, код, настройки или документацию проекта.
|
|
184
|
-
- Запускать тесты,
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
138
|
+
- Запускать тесты, линтеры, сборку, миграции, серверы и внешние запросы.
|
|
139
|
+
- Добавлять находки вне списка пунктов.
|
|
140
|
+
- Оценивать правильность решений вместо исполнимости плана.
|
|
141
|
+
- Выставлять или корректировать score вручную.
|
|
142
|
+
- Принимать за дефект отсутствие пояснений, обоснований и примеров.
|
|
@@ -1,105 +1,80 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: eda-plan-review-fix
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Закрывает проваленные пункты чек-листа в плане по сохранённому ревью.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Скил: Исправитель плана по ревью (eda-plan-review-fix)
|
|
7
7
|
|
|
8
|
-
Применяй
|
|
8
|
+
Применяй проваленные пункты из отчёта `docs/artifacts/plan-reviews/` только к связанному плану. Новое ревью не делай: твой контракт — закрыть перечисленные пункты и сохранить проверяемую цепочку SHA-256.
|
|
9
9
|
|
|
10
10
|
## Вход из сообщения пользователя
|
|
11
11
|
|
|
12
|
-
Разбери путь или название review, «последнее
|
|
12
|
+
Текст рядом с вызовом — главный вход. Разбери путь или название review, «последнее ревью» и прямые указания пользователя. Если вход однозначен, продолжай без вопроса; при нескольких равных review или противоречивом target — `AskUserQuestion`.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Обычный режим:
|
|
17
|
-
|
|
18
|
-
- все required применяй без дополнительного подтверждения;
|
|
19
|
-
- optional собери в один-два раунда `AskUserQuestion`;
|
|
20
|
-
- waived и отклонённые findings не применяй.
|
|
21
|
-
|
|
22
|
-
`apply-optional`:
|
|
23
|
-
|
|
24
|
-
- все required применяй;
|
|
25
|
-
- optional применяй, если правка конкретна, обратима, остаётся в scope и улучшает исполнимость;
|
|
26
|
-
- иначе пометь optional как `waived` с конкретной причиной;
|
|
27
|
-
- продуктовое решение, конфликт с business/rules/architecture или расширение scope всё равно требует пользователя.
|
|
28
|
-
|
|
29
|
-
## Вопросы
|
|
30
|
-
|
|
31
|
-
- Claude Code: используй `AskUserQuestion`.
|
|
32
|
-
- Codex interactive: используй `request_user_input`, если доступен; иначе задай один короткий вопрос с вариантами и остановись.
|
|
33
|
-
- Codex exec/non-interactive: не читай stdin; верни `blocked: нужен ответ пользователя` до любых рискованных правок.
|
|
14
|
+
В Codex exec не читай stdin: верни `blocked: нужен ответ пользователя` до любых правок.
|
|
34
15
|
|
|
35
16
|
## Правила
|
|
36
17
|
|
|
37
|
-
1. Работай только с review из `docs/plan-reviews/` и его `plan` из `docs/plans/`.
|
|
38
|
-
2. Вычисли SHA-256
|
|
39
|
-
3. Перед правкой прочитай план, `docs/rules.md`, `docs/arch.md
|
|
40
|
-
4.
|
|
41
|
-
5.
|
|
42
|
-
6.
|
|
43
|
-
7.
|
|
44
|
-
8.
|
|
45
|
-
|
|
46
|
-
## Применить findings
|
|
18
|
+
1. Работай только с review из `docs/artifacts/plan-reviews/` и его `plan` из `docs/artifacts/plans/`.
|
|
19
|
+
2. Вычисли SHA-256 плана до правок. Он обязан совпасть с `plan_sha256` review. Не совпал — остановись: review устарел, нужен новый `eda-plan-review`.
|
|
20
|
+
3. Перед правкой прочитай план, `docs/rules.md`, `docs/arch.md` и только применимые карточки из `sources.business` и `sources.references`; для старого плана выбери только применимые карточки через `docs/business.md` и `docs/references.md`.
|
|
21
|
+
4. Закрой каждый пункт со статусом `fail`. Пункты `pass` и `n/a` не трогай. Своих замечаний не добавляй: чего нет в отчёте, того нет в работе.
|
|
22
|
+
5. **План не растёт.** Сначала ищи, что удалить или заменить, и только потом — что дописать. Прирост объёма за один fix не больше 3%; если пункт иначе не закрывается, остановись и верни `blocked: пункт требует роста плана` с объяснением.
|
|
23
|
+
6. Не повторяй один факт в двух разделах: поведение живёт в `Целевом алгоритме`, контракты — в `Контрактах реализации`, фаза на них ссылается.
|
|
24
|
+
7. Не добавляй в план сигнатуры чужих методов, формулы, приведения типов, форму классов и пересказ карточек — это те же пункты 9 и 10 чек-листа, только с другой стороны.
|
|
25
|
+
8. Продуктовый выбор, конфликт с business, rules или architecture и расширение scope не решай сам: собери все такие случаи и задай один блокирующий вопрос до любых правок.
|
|
26
|
+
9. Не правь код, конфиги, зависимости, миграции и другие документы. Не запускай проверки проекта.
|
|
47
27
|
|
|
48
|
-
|
|
49
|
-
2. До редактирования собери все вопросы и optional-решения. Не делай частичную правку до ответа на блокирующий вопрос.
|
|
50
|
-
3. Примени required и выбранные optional одним связным изменением плана.
|
|
51
|
-
4. Для каждого ID зафиксируй `applied` или `waived`; не меняй fingerprint.
|
|
52
|
-
5. Заранее определи `$FIX_FILE`, обнови front matter плана полями `status`, `plan_review` и `plan_review_fix`, затем вычисли окончательный SHA-256 как `$AFTER_SHA256`.
|
|
53
|
-
6. Если обязательные правки были, но итоговый SHA-256 не изменился, остановись `blocked: fix не изменил план` и не выдавай успех.
|
|
28
|
+
## Работа
|
|
54
29
|
|
|
55
|
-
|
|
30
|
+
1. Прочитай `## Чек-лист` и `## Что исправить` в review. Собери список пунктов `fail` с местами.
|
|
31
|
+
2. Собери реальные блокирующие вопросы. Частичную правку до ответа не делай.
|
|
32
|
+
3. Закрой все пункты одним связным минимальным изменением плана.
|
|
33
|
+
4. Обнови front matter плана: `status: meta-reviewed`, `plan_review`, `plan_review_fix`. `status: reviewed` не ставь — это может сделать только подтверждающий review.
|
|
34
|
+
5. Вычисли SHA-256 после правок как `$AFTER_SHA256`. Если пункты были, а хеш не изменился, остановись: `blocked: fix не изменил план`.
|
|
56
35
|
|
|
57
|
-
|
|
58
|
-
- установи `plan_review: <REVIEW_FILE>` и `plan_review_fix: <FIX_FILE>` до вычисления after SHA-256 и записи отчёта;
|
|
59
|
-
- не ставь `status: reviewed`: это может сделать только подтверждающий review с gate `ready`.
|
|
36
|
+
## Отчёт
|
|
60
37
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
Создай `docs/plan-review-fixes/{YYYY-MM-DD}_{HH-MM}_{slug}.md`:
|
|
38
|
+
Создай `docs/artifacts/plan-review-fixes/{YYYY-MM-DD}_{HH-MM}_{slug}.md`:
|
|
64
39
|
|
|
65
40
|
```markdown
|
|
66
41
|
---
|
|
67
|
-
review: <docs/plan-reviews/...>
|
|
68
|
-
plan: <docs/plans/...>
|
|
42
|
+
review: <docs/artifacts/plan-reviews/...>
|
|
43
|
+
plan: <docs/artifacts/plans/...>
|
|
69
44
|
before_sha256: <sha256 из review>
|
|
70
45
|
after_sha256: <sha256 после изменения>
|
|
46
|
+
before_bytes: <размер до>
|
|
47
|
+
after_bytes: <размер после>
|
|
71
48
|
status: done
|
|
72
49
|
date: <YYYY-MM-DD HH:MM>
|
|
73
50
|
---
|
|
74
51
|
|
|
75
52
|
# Исправления плана по ревью: <название>
|
|
76
53
|
|
|
77
|
-
##
|
|
78
|
-
|
|
|
79
|
-
|---|---|---|---|
|
|
80
|
-
| PR-001 | <конкретная правка> | <раздел> | applied |
|
|
81
|
-
|
|
82
|
-
## Waived optional
|
|
83
|
-
| ID | Причина | Новые доказательства для пересмотра |
|
|
54
|
+
## Закрытые пункты
|
|
55
|
+
| № | Что изменено | Раздел плана |
|
|
84
56
|
|---|---|---|
|
|
57
|
+
| 6 | «разумный таймаут» заменён на «30 с» | Фаза 3 |
|
|
85
58
|
|
|
86
59
|
## Цепочка
|
|
87
60
|
- **Before SHA-256:** `<hash>`
|
|
88
61
|
- **After SHA-256:** `<hash>`
|
|
62
|
+
- **Объём:** `<до>` → `<после>` (`<+N%>`)
|
|
89
63
|
- **Нужен подтверждающий review:** да
|
|
90
64
|
```
|
|
91
65
|
|
|
92
|
-
После записи отчёта допиши в review один раздел `## Применённые исправления` со ссылкой на fix, after SHA-256 и списком
|
|
66
|
+
После записи отчёта допиши в review один раздел `## Применённые исправления` со ссылкой на fix, after SHA-256 и списком закрытых пунктов.
|
|
93
67
|
|
|
94
68
|
## Финал
|
|
95
69
|
|
|
96
|
-
Сообщи пути к
|
|
70
|
+
Сообщи пути к плану, review и fix, before/after SHA-256, изменение объёма, закрытые пункты, оставшиеся блокеры и что изменения не закоммичены. Дальше — подтверждающий `eda-plan-review` или возврат вызывающему `eda-plan-polish`.
|
|
97
71
|
|
|
98
72
|
## Чего НЕ делать
|
|
99
73
|
|
|
100
|
-
- Делать новое
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
74
|
+
- Делать новое ревью, выставлять score или добавлять свои замечания.
|
|
75
|
+
- Трогать пункты `pass` и `n/a`.
|
|
76
|
+
- Раздувать план пояснениями вместо удаления и замены.
|
|
77
|
+
- Добавлять код, сигнатуры и пересказ карточек.
|
|
78
|
+
- Применять устаревший review к другому SHA-256.
|
|
79
|
+
- Молча разрешать продуктовый конфликт или расширять scope.
|
|
80
|
+
- Править код, файлы вне плана и отчёта, коммитить или запускать проверки проекта.
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: eda-polish
|
|
3
|
-
description: 'Итеративно ревьюит и исправляет изменения до
|
|
3
|
+
description: 'Итеративно ревьюит и исправляет изменения до чистого результата.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Скил: Полировка изменений (eda-polish)
|
|
7
7
|
|
|
8
|
-
Оркестрируй цикл `eda-review` → `eda-fix-by-review
|
|
9
|
-
В начале каждой итерации запускай полное `eda-review` целевого изменения.
|
|
8
|
+
Оркестрируй цикл `eda-review` → `eda-fix-by-review` → повторное `eda-review`. Основной агент только управляет итерациями, читает сохранённые артефакты и сообщает результат. В начале каждой итерации запускай полное `eda-review` целевого изменения.
|
|
10
9
|
|
|
11
10
|
## Вход из сообщения пользователя
|
|
12
11
|
|
|
13
|
-
Текст рядом с вызовом скилла в текущем сообщении — главный вход. Разбери target, путь к плану, PR/ветку/diff/файл,
|
|
12
|
+
Текст рядом с вызовом скилла в текущем сообщении — главный вход. Разбери target, путь к плану, PR/ветку/diff/файл, лимит итераций и ограничения. Передавай в каждый `eda-review` разовые overrides проверок и моделей из запроса пользователя.
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
Лимит по умолчанию — `5` итераций; пользователь может задать `limit N` положительным целым числом. Порога у цикла нет: устаревшие `threshold N`, `до 90` и `цель 90` не применяй и скажи об этом в финале.
|
|
16
15
|
|
|
17
16
|
## Правила
|
|
18
17
|
|
|
19
|
-
1. Каждый вызов `eda-review` и `eda-fix-by-review
|
|
18
|
+
1. Каждый вызов `eda-review` и `eda-fix-by-review` запускай отдельным изолированным субагентом. Основной агент не делает их работу.
|
|
20
19
|
2. Если нативные субагенты недоступны, остановись; не заменяй шаги CLI-процессами.
|
|
21
|
-
3.
|
|
22
|
-
4.
|
|
20
|
+
3. Успех требует одновременно: полный review со статусом `reviewed` или `reviewed-with-warnings`, `result: clean` и ноль находок. Score — только справочное число, условием завершения он не является.
|
|
21
|
+
4. Любая находка обязательно исправляется. Отклонить находку может только `eda-fix-by-review` и только при её фактической неверности.
|
|
23
22
|
5. Не коммить и не отправляй ревью.
|
|
24
|
-
6. Останавливайся при повторном сбое обязательной проверки review, блокере fix-агента,
|
|
23
|
+
6. Останавливайся при повторном сбое обязательной проверки review, блокере fix-агента, несокращении числа открытых находок за полный круг или достижении лимита.
|
|
25
24
|
|
|
26
25
|
## Вопросы
|
|
27
26
|
|
|
@@ -29,53 +28,44 @@ description: 'Итеративно ревьюит и исправляет изм
|
|
|
29
28
|
|
|
30
29
|
## Цикл
|
|
31
30
|
|
|
32
|
-
Сформируй `$TARGET_CONTEXT`, `$
|
|
31
|
+
Сформируй `$TARGET_CONTEXT`, `$LIMIT` и журнал: номер итерации, review file, result, число открытых находок, список находок, fix report и причина продолжения.
|
|
33
32
|
|
|
34
33
|
Для каждой итерации:
|
|
35
34
|
|
|
36
|
-
1. Запусти отдельного
|
|
35
|
+
1. Запусти отдельного субагента:
|
|
37
36
|
|
|
38
37
|
```text
|
|
39
38
|
Используй eda-review для <TARGET_CONTEXT>.
|
|
40
39
|
План: <PLAN_FILE | none>.
|
|
41
40
|
Overrides проверок и моделей: <из запроса | none>.
|
|
42
|
-
|
|
41
|
+
Ранее отклонённые находки: <предыдущий review file и fix report | none>.
|
|
42
|
+
Верни путь к файлу, status, result, score, находки и coverage.
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
2. Если review остановился из-за обязательного агента, останови
|
|
46
|
-
3. Если `
|
|
47
|
-
4. Если
|
|
48
|
-
5. Запусти отдельного субагента:
|
|
45
|
+
2. Если review остановился из-за обязательного агента, останови цикл. `reviewed-with-warnings` из-за недоступных previous reviews разрешён.
|
|
46
|
+
3. Если `result: clean` и находок нет, заверши успешно. Если `result` противоречит числу находок, считай файл невалидным и остановись.
|
|
47
|
+
4. Если находки есть, запусти отдельного субагента:
|
|
49
48
|
|
|
50
49
|
```text
|
|
51
|
-
Используй eda-fix-by-review
|
|
52
|
-
Примени
|
|
53
|
-
|
|
50
|
+
Используй eda-fix-by-review для <REVIEW_FILE>.
|
|
51
|
+
Примени находки минимальными достаточными правками и выполни проверки.
|
|
52
|
+
Фактически неверную находку отклони с доказательством в отчёте.
|
|
53
|
+
Верни путь к fix-отчёту, число применённых и отклонённых находок и результат проверок.
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
5. После успешных исправлений начни новую итерацию с полным `eda-review`.
|
|
57
57
|
|
|
58
|
-
Если
|
|
58
|
+
Если после полного круга число открытых находок не уменьшилось, остановись раньше лимита с конкретными оставшимися проблемами. При достижении лимита не скрывай незавершённую сходимость.
|
|
59
59
|
|
|
60
60
|
## Финал
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
- результат: достигнут порог, достигнут лимит, blocked, нет применимых замечаний или score не растёт;
|
|
65
|
-
- итоговую оценку и порог;
|
|
66
|
-
- количество итераций;
|
|
67
|
-
- последний review file и fix report;
|
|
68
|
-
- предупреждения coverage, если они были;
|
|
69
|
-
- что изменения не закоммичены.
|
|
70
|
-
|
|
71
|
-
При успехе предложи `eda-commit`. При неуспехе назови конкретный блокер или оставшиеся замечания.
|
|
62
|
+
Сообщи результат, итоговый result и score, число итераций, счётчик находок по кругам («было 12, осталось 3»), последний review file и fix report, оставшиеся находки и coverage warnings. Укажи, что изменения не закоммичены. При успехе предложи `eda-commit`; при неуспехе назови конкретный блокер.
|
|
72
63
|
|
|
73
64
|
## Чего НЕ делать
|
|
74
65
|
|
|
75
66
|
- Делать ревью или исправления основным агентом.
|
|
76
67
|
- Запускать отдельный этап проверки готового ревью.
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
- Переписывать `docs/settings.yaml`, правила или архитектуру ради score.
|
|
68
|
+
- Считать цикл успешным при наличии находок или завершать его по score.
|
|
69
|
+
- Выбирать или отклонять находки основным агентом: отклонение — работа `eda-fix-by-review`.
|
|
70
|
+
- Переписывать `docs/settings.yaml`, правила или архитектуру ради чистого результата.
|
|
81
71
|
- Коммитить, пушить или отправлять ревью.
|
|
@@ -38,7 +38,7 @@ description: 'Готовит проект к работе с AI: проекти
|
|
|
38
38
|
|
|
39
39
|
Определи языки, фреймворки, точки входа, зависимости, тесты, хранилища данных, внешние интеграции, инфраструктуру, CI, инструменты качества, структуру директорий и сложившиеся соглашения. Для команд и соглашений используй конфиги и git-историю, а не догадки.
|
|
40
40
|
|
|
41
|
-
Если вызов пришёл из `eda-new-project`, прочитай переданный `docs/project-starts/*.md`. Подтверждённые требования, основной стек и архитектурные драйверы считай источником целевого состояния; открытые вопросы и отклонённые варианты фактами не считай. Не требуй от стартового документа готовой архитектуры, правил, матрицы проверок или AI/MCP-рекомендаций — их обязан спроектировать этот скил.
|
|
41
|
+
Если вызов пришёл из `eda-new-project`, прочитай переданный `docs/artifacts/project-starts/*.md`. Подтверждённые требования, основной стек и архитектурные драйверы считай источником целевого состояния; открытые вопросы и отклонённые варианты фактами не считай. Не требуй от стартового документа готовой архитектуры, правил, матрицы проверок или AI/MCP-рекомендаций — их обязан спроектировать этот скил.
|
|
42
42
|
|
|
43
43
|
### 2. Прочитать существующую документацию
|
|
44
44
|
|