@gian-tiaga/eda 3.5.0 → 3.7.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 +3 -0
- package/README.md +27 -19
- package/agents/eda-commit-executor/agent.json +4 -4
- package/agents/eda-commit-executor/prompt.md +12 -3
- package/lib/install.js +87 -17
- package/package.json +1 -1
- package/skills/eda-commit/SKILL.md +2 -2
- package/skills/eda-commit/skill.json +2 -1
- package/skills/eda-orhestra/SKILL.md +16 -12
- package/skills/eda-plan-execute/SKILL.md +18 -18
- package/skills/eda-polish/SKILL.md +12 -13
- package/skills/eda-prepare-ai/SKILL.md +20 -7
- package/skills/eda-review/SKILL.md +42 -17
- package/skills/eda-review/references/review-matrix.md +70 -0
- package/skills/eda-review/skill.json +0 -7
|
@@ -5,21 +5,28 @@ description: 'Проводит полное read-only ревью diff, ветк
|
|
|
5
5
|
|
|
6
6
|
# Скил: Ревьюер (eda-review)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Проводи одно полное read-only ревью в выбранном режиме исполнения. В `subagents` оркестрируй установленных `eda-review-*` агентов и сам не выполняй их специализированные роли. В `main` выполни те же выбранные проверки самостоятельно по общей матрице, не запуская leaf-субагентов. В обоих режимах сохрани один итоговый отчёт с одинаковыми требованиями к доказательствам и результату.
|
|
9
9
|
|
|
10
10
|
## Вход из сообщения пользователя
|
|
11
11
|
|
|
12
|
-
Текст рядом с вызовом скилла в текущем сообщении — главный вход. Сначала разбери target, план, ссылку, ограничения, отключённые или принудительно включённые проверки и разовые модели.
|
|
12
|
+
Текст рядом с вызовом скилла в текущем сообщении — главный вход. Сначала разбери target, план, ссылку, ограничения, режим `subagents` или `main`, отключённые или принудительно включённые проверки и разовые модели.
|
|
13
13
|
|
|
14
14
|
Если входа достаточно, продолжай без вопроса. Без аргументов ревьюй незакоммиченный `git diff HEAD`. Ссылка на PR/MR задаёт target однозначно. Если пользователь дал только корень удалённого репозитория, обязательно попроси указать PR/MR, ветку, коммит или файлы; весь репозиторий и последний PR автоматически не выбирай.
|
|
15
15
|
|
|
16
|
-
Разовые указания вида «без performance», «без business», «включи database», «включи business», «architecture на opus» или «tests на gpt-5.6-sol» важнее
|
|
16
|
+
Явное слово `subagents` или `main` задаёт режим только для текущего запуска и важнее `docs/settings.yaml`. Разовые указания вида «без performance», «без business», «включи database», «включи business», «architecture на opus» или «tests на gpt-5.6-sol» также важнее настроек.
|
|
17
17
|
|
|
18
18
|
Если во входе даны ранее отклонённые находки или путь к предыдущему ревью, прочитай их раздел «Отклонено» и не принимай эти находки повторно без нового доказательства.
|
|
19
19
|
|
|
20
20
|
## Настройки
|
|
21
21
|
|
|
22
|
-
Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 3`. Используй `review.agents.<check>.mode` и `review.agents.<check>.model.<platform>`. Если файла нет или версия отличается, используй defaults и добавь предупреждение; старые настройки не применяй.
|
|
22
|
+
Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 3`. Используй `review.execution`, `review.agents.<check>.mode` и `review.agents.<check>.model.<platform>`. Если файла нет или версия отличается, используй defaults и добавь предупреждение; старые настройки не применяй.
|
|
23
|
+
|
|
24
|
+
`review.execution` принимает:
|
|
25
|
+
|
|
26
|
+
- `subagents` — каждая выбранная проверка выполняется отдельным установленным агентом;
|
|
27
|
+
- `main` — все выбранные проверки выполняет текущий агент в одном контексте.
|
|
28
|
+
|
|
29
|
+
Default — `subagents`. При неизвестном или отсутствующем значении используй default и добавь предупреждение. Сначала выбери `$EXECUTION` по явному режиму из текущего сообщения, затем по настройке, иначе по default.
|
|
23
30
|
|
|
24
31
|
Допустимые режимы:
|
|
25
32
|
|
|
@@ -27,7 +34,9 @@ description: 'Проводит полное read-only ревью diff, ветк
|
|
|
27
34
|
- `auto` — запускать только когда проверка применима;
|
|
28
35
|
- `off` — не запускать.
|
|
29
36
|
|
|
30
|
-
Допустимые модели по
|
|
37
|
+
Допустимые модели по умолчанию для `subagents`: Claude Code — `haiku`, `sonnet`, `opus`; Codex — `gpt-5.6-luna`, `gpt-5.6-terra`, `gpt-5.6-sol`. Неизвестное или отсутствующее значение замени default-значением конкретного агента и добавь предупреждение в покрытие.
|
|
38
|
+
|
|
39
|
+
В `main` все проверки выполняются текущей моделью агента. Настройки и разовые overrides моделей отдельных проверок не применяются; добавь об этом один warning в покрытие, только если пользователь явно передал такой override. Для completed-проверок укажи фактическую текущую модель, если хост её сообщает, иначе `current`.
|
|
31
40
|
|
|
32
41
|
Если `version: 3` существует, но раздела `review.agents` нет, используй defaults ниже и добавь предупреждение. Устаревшие поля `review.strict`, `review.include_code_quality` и раздел `review-check` не применяй. Существующий файл настроек не переписывай.
|
|
33
42
|
|
|
@@ -60,7 +69,7 @@ description: 'Проводит полное read-only ревью diff, ветк
|
|
|
60
69
|
## Подготовить контекст
|
|
61
70
|
|
|
62
71
|
1. Определи `$TARGET`: явный файл, папка, URL PR/MR, ветка, коммит, указанный diff или `git diff HEAD` без аргументов. Для GitHub/GitLab URL получи metadata и diff read-only командами `gh`/`glab`; для другого сервиса используй доступное read-only средство. Если основной diff недоступен, остановись: warning разрешён только для недоступных прошлых обсуждений, а не для самого target.
|
|
63
|
-
2. Прочитай `AGENTS.md`, `CLAUDE.md`, `docs/rules.md`, `docs/arch.md` и сам target настолько, чтобы выбрать проверки и
|
|
72
|
+
2. Прочитай `AGENTS.md`, `CLAUDE.md`, `docs/rules.md`, `docs/arch.md` и сам target настолько, чтобы выбрать проверки и сформировать точный контекст. В `subagents` на этом шаге не делай собственное code review; в `main` эти документы и target станут общей основой всех проходов и не должны загружаться заново для каждой проверки.
|
|
64
73
|
3. Определи `$PLAN_FILE`. Если его нет, используй `none` и не пытайся восстановить последний план наугад.
|
|
65
74
|
4. Определи `$REFERENCE_FILES`: если план содержит `sources.references`, используй их; иначе через `docs/references.md` выбери только применимые карточки для компонентов target. Если карточек нет, используй `none`.
|
|
66
75
|
5. Определи `$BUSINESS_FILES`: сначала установи исходную задачу и фактически затронутое пользовательское или доменное поведение по текущему сообщению, плану и target. Если план содержит `sources.business`, используй только относящиеся к этому поведению пути; иначе прочитай `docs/business.md` и по описаниям выбери только применимые карточки. Если индекс отсутствует, подходящих карточек нет или изменения не затрагивают бизнес-поведение, используй `none`. Не загружай все карточки только потому, что индекс существует.
|
|
@@ -87,7 +96,21 @@ description: 'Проводит полное read-only ревью diff, ветк
|
|
|
87
96
|
|
|
88
97
|
Для каждой проверки сохрани причину `selected` или `skipped`; она попадёт в покрытие.
|
|
89
98
|
|
|
90
|
-
##
|
|
99
|
+
## Выполнить проверки
|
|
100
|
+
|
|
101
|
+
### Режим main
|
|
102
|
+
|
|
103
|
+
Всю работу выполни сам как основной агент текущего workflow. Не запускай `eda-review-*` агентов, другие субагенты или отдельный CLI. Вызывающий workflow не должен оборачивать `eda-review` в отдельного субагента, если передал режим `main`.
|
|
104
|
+
|
|
105
|
+
Прочитай [references/review-matrix.md](references/review-matrix.md) целиком. Это обязательный контракт всех специализированных проходов в `main`; не читай packaged prompts из `agents/eda-review-*` и не пытайся вызвать их как скилы.
|
|
106
|
+
|
|
107
|
+
1. Прочитай target и общий код вокруг изменений один раз. Применимые инструкции, `$PLAN_FILE`, `$REFERENCE_FILES` и `$BUSINESS_FILES` также загрузи один раз и только когда соответствующая проверка выбрана.
|
|
108
|
+
2. Последовательно выполни отдельный проход по каждой выбранной проверке из матрицы. Не смешивай области и не пропускай проход из-за того, что соседняя проверка уже изучала тот же код.
|
|
109
|
+
3. Для каждого прохода сохрани внутренний результат: `check`, `status`, `summary` и кандидаты в находки с `severity`, `explanation`, `evidence`, `repro`, `fix` и `tests`. YAML между проходами не нужен.
|
|
110
|
+
4. Если проверка оказалась неприменима, перенеси её в skipped с конкретной причиной. Если обязательную проверку невозможно выполнить из-за недоступного target или контекста, остановись без итогового файла. Недоступные предыдущие удалённые обсуждения преврати в warning и продолжай.
|
|
111
|
+
5. После всех проходов проверь доказательства, дедуплицируй кандидатов, выставь score и сохрани итог по общим правилам ниже. Не запускай отдельный редакторский или подтверждающий проход.
|
|
112
|
+
|
|
113
|
+
### Режим subagents
|
|
91
114
|
|
|
92
115
|
Имя агента получается из имени проверки:
|
|
93
116
|
|
|
@@ -96,7 +119,7 @@ description: 'Проводит полное read-only ревью diff, ветк
|
|
|
96
119
|
- `previous_reviews` → `eda-review-previous-reviews`;
|
|
97
120
|
- остальные → `eda-review-<check>`.
|
|
98
121
|
|
|
99
|
-
В Claude Code запускай установленный custom agent через `Agent` tool.
|
|
122
|
+
В Claude Code запускай установленный custom agent через `Agent` tool. В Codex каждого установленного custom agent запускай через `spawn_agent` с `fork_turns: "none"`; не оставляй `fork_turns` по умолчанию и не передавай историю основного агента. Передай выбранную модель как runtime override. Если хост не умеет применить выбранную модель или нативные субагенты недоступны, остановись: не выполняй роли главным агентом и не создавай отдельные CLI-процессы.
|
|
100
123
|
|
|
101
124
|
### Технические остановки субагентов
|
|
102
125
|
|
|
@@ -131,7 +154,7 @@ REVIEW_CONTEXT: <краткий общий контекст>
|
|
|
131
154
|
|
|
132
155
|
Не вставляй системный prompt агента в task-сообщение.
|
|
133
156
|
|
|
134
|
-
|
|
157
|
+
### Проверить ответы и обработать сбои subagents
|
|
135
158
|
|
|
136
159
|
Проверь для каждого ответа `status`, `check`, фактически запрошенный `model` и структуру `находки`. Несовпадение модели считай ошибкой контракта. Каждая находка означает дефект, который обязательно исправить. Находка без точного места, конкретного достижимого риска, доказательства, способа воспроизведения (`repro`) и проверяемого способа исправления не подтверждена.
|
|
137
160
|
|
|
@@ -143,7 +166,7 @@ REVIEW_CONTEXT: <краткий общий контекст>
|
|
|
143
166
|
|
|
144
167
|
## Собрать итог
|
|
145
168
|
|
|
146
|
-
|
|
169
|
+
В `subagents` главный агент выполняет только редакторскую работу над результатами. В `main` эти же правила применяются к кандидатам, собранным в специализированных проходах:
|
|
147
170
|
|
|
148
171
|
1. Проверь находки по указанным evidence и отклони неподтверждённые.
|
|
149
172
|
2. Объедини дубли разных агентов в один пункт, сохранив все полезные доказательства.
|
|
@@ -153,18 +176,19 @@ REVIEW_CONTEXT: <краткий общий контекст>
|
|
|
153
176
|
6. Каждую отклонённую находку запиши в раздел «Отклонено» с проверкой-источником и причиной. В число находок и в score отклонённые не входят.
|
|
154
177
|
7. Сам выставь итоговый `score` от 0 до 100 по серьёзности, влиянию и общему качеству реализации. Не используй фиксированные вычеты, среднее или минимум оценок агентов. Ориентир: `100` — находок нет; `95–99` — только low; `80–94` — medium или несколько low; `60–79` — high; ниже `60` — critical или нужна существенная переработка. Любое снижение score связывай с принятыми находками; если находок нет, score равен `100`. Добавь короткое обоснование числа.
|
|
155
178
|
8. Установи `result: clean`, только если находок нет; при любой находке используй `result: changes-required` независимо от score.
|
|
156
|
-
9. Не выполняй дополнительное
|
|
179
|
+
9. Не выполняй дополнительное ревью после специализированных проходов и не добавляй находки вне выбранных проверок.
|
|
157
180
|
|
|
158
181
|
Ревью содержит только проблемы. Не перечисляй выполненную работу, похвалу и успешные проверки. Исключение — короткие технические разделы покрытия и «Отклонено».
|
|
159
182
|
|
|
160
183
|
## Сохранить ревью
|
|
161
184
|
|
|
162
|
-
Создай файл `docs/artifacts/reviews/{YYYY-MM-DD}_{HH-MM}_{slug}.md` только после успешной обработки всех обязательных
|
|
185
|
+
Создай файл `docs/artifacts/reviews/{YYYY-MM-DD}_{HH-MM}_{slug}.md` только после успешной обработки всех обязательных проверок. Для недоступного `previous_reviews` или другого разрешённого warning используй `status: reviewed-with-warnings`, иначе `status: reviewed`.
|
|
163
186
|
|
|
164
187
|
```markdown
|
|
165
188
|
---
|
|
166
189
|
target: <что проверено>
|
|
167
190
|
plan: <docs/artifacts/plans/... | none>
|
|
191
|
+
execution: <subagents | main>
|
|
168
192
|
score: <0..100>
|
|
169
193
|
status: <reviewed | reviewed-with-warnings>
|
|
170
194
|
result: <clean | changes-required>
|
|
@@ -184,6 +208,7 @@ checks:
|
|
|
184
208
|
|
|
185
209
|
## Покрытие
|
|
186
210
|
|
|
211
|
+
- **Execution:** <subagents | main>
|
|
187
212
|
- **Completed:** <проверки и модели>
|
|
188
213
|
- **Skipped:** <проверки и причины>
|
|
189
214
|
- **Warnings:** <предупреждения или «нет»>
|
|
@@ -216,7 +241,7 @@ checks:
|
|
|
216
241
|
|
|
217
242
|
## Отклонено
|
|
218
243
|
|
|
219
|
-
|
|
244
|
+
<Кандидаты, отклонённые при сверке: короткая формулировка, проверка-источник и причина. Если отклонённых нет — «нет».>
|
|
220
245
|
|
|
221
246
|
```
|
|
222
247
|
|
|
@@ -224,14 +249,14 @@ checks:
|
|
|
224
249
|
|
|
225
250
|
## Финал
|
|
226
251
|
|
|
227
|
-
Коротко сообщи путь к ревью, status, result, score, количество принятых и отклонённых находок, completed/skipped/warnings. При `changes-required` предложи `eda-fix-by-review`; при `clean` — `eda-commit`.
|
|
252
|
+
Коротко сообщи путь к ревью, execution, status, result, score, количество принятых и отклонённых находок, completed/skipped/warnings. При `changes-required` предложи `eda-fix-by-review`; при `clean` — `eda-commit`.
|
|
228
253
|
|
|
229
254
|
## Чего НЕ делать
|
|
230
255
|
|
|
231
256
|
- Править код, настройки проекта или удалённые обсуждения.
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
- Записывать итоговый файл после повторного сбоя обязательного
|
|
257
|
+
- В `subagents` выполнять специализированную роль главным агентом или подменять отсутствующих субагентов одним общим ревью.
|
|
258
|
+
- В `main` запускать leaf-субагентов, другой CLI или читать packaged prompts вместо `references/review-matrix.md`.
|
|
259
|
+
- Записывать итоговый файл после повторного сбоя обязательного агента в `subagents` или незавершённой обязательной проверки в `main`.
|
|
235
260
|
- Выбирать последний PR или весь репозиторий по ссылке на корень.
|
|
236
261
|
- Загружать все карточки references без отбора.
|
|
237
262
|
- Усреднять оценки агентов или считать score по фиксированной формуле.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Матрица проверок main-режима
|
|
2
|
+
|
|
3
|
+
Этот файл используется только при `review.execution: main`. Выполни отдельный проход по каждой выбранной проверке, но читай общий target и проектные инструкции один раз. Не смешивай области: одна проблема должна остаться в наиболее точной проверке.
|
|
4
|
+
|
|
5
|
+
Для любой находки обязательны точное место, достижимый на текущем коде сценарий, практический ущерб, доказательство, `repro`, способ исправления и нужный тест. Не принимай вкусовой рефакторинг, косметику, спекулятивное усиление, необязательный тест или проблему, которая появится только после гипотетического будущего изменения. Не перечисляй удачные решения и выполненные пункты.
|
|
6
|
+
|
|
7
|
+
## correctness
|
|
8
|
+
|
|
9
|
+
Ищи реальные ошибки поведения: неверную логику, потерю данных, неправильные состояния, пропущенные крайние случаи и некорректную обработку ошибок. Архитектуру, стиль, документацию, безопасность и план упоминай только когда они прямо доказывают функциональную ошибку.
|
|
10
|
+
|
|
11
|
+
## architecture
|
|
12
|
+
|
|
13
|
+
Проверяй границы модулей и слоёв, направление зависимостей, ответственность компонентов, публичные контракты и соответствие `docs/arch.md`. Находка допустима только когда решение уже создаёт неправильную связанность, нарушение границы или несовместимый контракт с конкретным практическим риском.
|
|
14
|
+
|
|
15
|
+
## rules
|
|
16
|
+
|
|
17
|
+
Проверяй только применимые инструкции из `AGENTS.md`, `CLAUDE.md` и `docs/rules.md` с учётом области действия и приоритета. Не выдумывай правила и не превращай предпочтение в нарушение. В evidence укажи правило и код, который ему противоречит.
|
|
18
|
+
|
|
19
|
+
## references
|
|
20
|
+
|
|
21
|
+
Проверяй только карточки из `$REFERENCE_FILES`; не загружай остальные `docs/references/` и внешние источники. Подтверждённое решение пользователя, правила и архитектура имеют приоритет. Отличие от примера без практического риска не является проблемой.
|
|
22
|
+
|
|
23
|
+
## business
|
|
24
|
+
|
|
25
|
+
Проверяй изменённое пользовательское и доменное поведение только по `$BUSINESS_FILES`. Не расширяй target требованиями соседних карточек. Различай:
|
|
26
|
+
|
|
27
|
+
- реализация нарушает действующее правило, которое задача или план не меняют — дефект бизнес-логики;
|
|
28
|
+
- задача или план явно меняют правило, но карточка не обновлена — рассинхронизация business-документации, которую нужно пересогласовать через `eda-business`.
|
|
29
|
+
|
|
30
|
+
Если задача неизвестна, не объявляй правило намеренно изменённым, но продолжай сверку с действующей карточкой.
|
|
31
|
+
|
|
32
|
+
## plan_alignment
|
|
33
|
+
|
|
34
|
+
Проверяй только конкретный `$PLAN_FILE`: невыполненные или частично выполненные пункты, рискованные отклонения, забытые тесты, миграции и документацию, изменённые вопреки плану контракты. Не требуй буквального совпадения, если цель плана сохранена без дополнительного риска.
|
|
35
|
+
|
|
36
|
+
## code_quality
|
|
37
|
+
|
|
38
|
+
Проверяй читаемость, сложность, дублирование, имена, размер и ответственность функций или классов и сцепление модулей. Находка допустима только когда структура уже создаёт конкретный риск ошибок или тестовых пробелов и код обязательно нужно исправить; мелкие стилистические предпочтения не принимай.
|
|
39
|
+
|
|
40
|
+
## tests
|
|
41
|
+
|
|
42
|
+
Ищи пропущенные регрессии, неверные ожидания, неподходящий уровень теста, хрупкие проверки и изменённое поведение без защиты. Не требуй тест на каждую строку. Находка должна назвать конкретную регрессию, которую текущие тесты не поймают, либо ошибку в самих тестах. Для подтверждения разрешены только безопасные проверки, не меняющие tracked-файлы.
|
|
43
|
+
|
|
44
|
+
## security
|
|
45
|
+
|
|
46
|
+
Проверяй аутентификацию, авторизацию, границы доверия, валидацию внешнего ввода, инъекции, секреты, файлы, сеть, криптографию и утечки чувствительных данных. Учитывай реальную модель угроз и достижимость. Не проводи активные атаки и не принимай общий hardening без конкретного пути эксплуатации или нарушенного защитного инварианта.
|
|
47
|
+
|
|
48
|
+
## performance
|
|
49
|
+
|
|
50
|
+
Ищи N+1, лишние запросы и проходы, неограниченную обработку, чрезмерные аллокации, блокировки, ошибки кеширования и конкурентности. Свяжи риск с фактическим размером данных или частотой вызова. Не принимай микроптимизацию без измеримого или очевидного эффекта; безопасные измерения разрешены, если они не меняют tracked-файлы.
|
|
51
|
+
|
|
52
|
+
## frontend
|
|
53
|
+
|
|
54
|
+
Проверяй по исходникам компоненты, состояние, формы, действия, клиентские данные, loading/error/empty/success, адаптивность, стили и очевидные проблемы доступности. Рассмотри основные и ошибочные пользовательские сценарии. Не утверждай, что интерфейс проверен визуально: браузерная проверка относится к `eda-manual-test`.
|
|
55
|
+
|
|
56
|
+
## api
|
|
57
|
+
|
|
58
|
+
Проверяй обе стороны публичных и внутренних API-контрактов: методы и пути, request/query/body, response, коды ошибок, валидацию, auth, совместимость, идемпотентность и версионирование. Находка должна назвать нарушенный контракт и достижимо затронутого потребителя.
|
|
59
|
+
|
|
60
|
+
## database
|
|
61
|
+
|
|
62
|
+
Проверяй схемы, миграции, nullable/default, обратимость и совместимость выкладки, запросы, индексы, транзакции, блокировки и целостность данных. Учитывай существующие данные, конкурентные операции и порядок деплоя. Не выполняй миграции, не изменяй базу и не требуй индекс без обоснованного запроса и нагрузки.
|
|
63
|
+
|
|
64
|
+
## documentation
|
|
65
|
+
|
|
66
|
+
Ищи только обязательные обновления документации из-за изменившегося публичного API, CLI, конфигурации, установки, пользовательского сценария или проектного контракта. Сравни фактическое поведение с документами, которые его описывают. Не требуй комментарии для очевидных внутренних изменений и не проводи редакторское ревью текста.
|
|
67
|
+
|
|
68
|
+
## previous_reviews
|
|
69
|
+
|
|
70
|
+
Для удалённого PR/MR read-only средствами найди незакрытые комментарии и треды и сверь их с текущим кодом. Классифицируй их как актуальные, исправленные, но открытые, или недоступные для проверки. В находки включай только всё ещё существующие проблемы; исправленные открытые треды перенеси в покрытие. Не отправляй комментарии, не скрывай сводки, не resolve/close треды. Если сервис, авторизация или формат обсуждений недоступны, верни warning и не утверждай, что история проверена.
|