@gian-tiaga/eda 0.3.2 → 0.3.4
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/README.md +4 -2
- package/lib/install.js +1 -1
- package/package.json +2 -2
- package/{docs/skills → skills}/eda-execute.md +5 -3
- package/skills/eda-review.md +221 -0
- package/docs/skills/eda-review.md +0 -166
- /package/{docs/skills → skills}/eda-automate.md +0 -0
- /package/{docs/skills → skills}/eda-commit.md +0 -0
- /package/{docs/skills → skills}/eda-docs.md +0 -0
- /package/{docs/skills → skills}/eda-fix-by-review.md +0 -0
- /package/{docs/skills → skills}/eda-fix.md +0 -0
- /package/{docs/skills → skills}/eda-plan.md +0 -0
- /package/{docs/skills → skills}/eda-research.md +0 -0
- /package/{docs/skills → skills}/eda-send-review.md +0 -0
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ eda init
|
|
|
31
31
|
| `eda-plan` | Пишет план реализации через стандартный Plan Mode хост-агента. Подтягивает контекст из `docs/rules.md`, `docs/arch.md`, при желании — релевантное исследование. Затем три параллельных модели (слабая, средняя, мощная) проверяют план на реалистичность, пропущенные шаги и нарушения правил — главный планировщик сам решает, что применить | `docs/plans/` |
|
|
32
32
|
| `eda-execute` | Выполняет план. Спрашивает, где работать (текущая ветка, новая ветка, отдельный worktree). Тесты пишет внутри каждого шага. В конце — полный прогон тестов и линтеров | `docs/executions/` |
|
|
33
33
|
| `eda-fix` | Делает обычные фиксы по короткому контексту, баг-репорту или файлу плана. Перед правками читает правила и архитектуру, добавляет нужные тесты, прогоняет проверки и сохраняет историю правок | `docs/fixes/` |
|
|
34
|
-
| `eda-review` | Делает код-ревью с оценкой 0–100
|
|
34
|
+
| `eda-review` | Делает код-ревью с оценкой 0–100 и сверкой с планом работ. Замечания пишет блоками: сначала контекст и риск, потом конкретные файлы/строки и шаги исправления. Затем три параллельных специализированных агента проверяют выполнение плана, архитектуру и правила. В строгом режиме — ещё и кросс-ревью между Claude и Codex | `docs/reviews/` |
|
|
35
35
|
| `eda-fix-by-review` | Применяет замечания из ревью. Обязательные — сразу. Спорные — спрашивает. В конце ссылается на отчёт прямо в файле ревью | `docs/review-fixes/` |
|
|
36
36
|
| `eda-send-review` | Отправляет ревью на GitHub PR через `gh` — как комментарий, review, approve или request-changes. Сам определяет PR по текущей ветке | (комментарий в PR) |
|
|
37
37
|
| `eda-commit` | Делает один аккуратный коммит в стиле проекта. В конце спрашивает: push, merge в main + удалить ветку, или ничего | (git) |
|
|
@@ -50,7 +50,7 @@ eda init
|
|
|
50
50
|
|---|---|---|---|
|
|
51
51
|
| `eda-research` | `strict` | После сохранения отчёта отдаёт его соседнему CLI (Claude → Codex или наоборот) на критическое ревью; затем доправляет отчёт по их замечаниям | Серьёзные исследования, которые лягут в основу больших решений; когда хочется второго мнения от другой модели/среды |
|
|
52
52
|
| `eda-plan` | `strict` | После мета-ревью трёх моделей (это есть всегда) отдаёт план соседнему CLI на дополнительный круг проверки; доправляет план | Большие или ответственные планы, особенно затрагивающие смежные системы |
|
|
53
|
-
| `eda-review` | `strict` | После мета-ревью тремя
|
|
53
|
+
| `eda-review` | `strict` | После мета-ревью тремя специализированными агентами отдаёт ревью соседнему CLI на дополнительный круг проверки; доправляет ревью по его замечаниям | Ревью важных PR; когда нужен максимальный охват |
|
|
54
54
|
|
|
55
55
|
---
|
|
56
56
|
|
|
@@ -106,6 +106,8 @@ eda update # синхронизировать скилы в текущ
|
|
|
106
106
|
|
|
107
107
|
## 📁 Куда устанавливаются скилы
|
|
108
108
|
|
|
109
|
+
Исходники скилов в этом пакете лежат в `skills/`. Установщик читает именно эту папку и копирует каждый `<skill>.md` в формат `<skill>/SKILL.md` для выбранной среды.
|
|
110
|
+
|
|
109
111
|
| Среда | Куда |
|
|
110
112
|
|---|---|
|
|
111
113
|
| **Claude Code** | `<project>/.claude/skills/<skill>/SKILL.md` — отдельная папка на каждый скил |
|
package/lib/install.js
CHANGED
|
@@ -6,7 +6,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
6
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
7
|
const __dirname = path.dirname(__filename);
|
|
8
8
|
const PACKAGE_ROOT = path.resolve(__dirname, '..');
|
|
9
|
-
const SKILLS_SRC = path.join(PACKAGE_ROOT, '
|
|
9
|
+
const SKILLS_SRC = path.join(PACKAGE_ROOT, 'skills');
|
|
10
10
|
const TARGET_CHOICES = [
|
|
11
11
|
{ value: 'claude', label: 'Claude Code', dir: '.claude/skills/' },
|
|
12
12
|
{ value: 'codex', label: 'Codex CLI', dir: '.codex/skills/' }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gian-tiaga/eda",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"description": "Набор скилов eda-* для Claude Code и Codex CLI: research, plan, execute, fix, review, fix-by-review, send-review, commit, docs, automate",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"bin",
|
|
11
11
|
"lib",
|
|
12
|
-
"
|
|
12
|
+
"skills",
|
|
13
13
|
"README.md"
|
|
14
14
|
],
|
|
15
15
|
"engines": {
|
|
@@ -21,8 +21,9 @@ description: 'Исполняет план из docs/plans/ по пути или
|
|
|
21
21
|
4. **Не коммитить, не пушить, не делать ревью.** Это другие скилы.
|
|
22
22
|
5. **Идти целиком**, не делать паузы «для подтверждения». Останавливайся только если: тест упал, шаг противоречив, есть риск потерять данные, рискованная операция вне плана.
|
|
23
23
|
6. **Тесты — внутри шага.** Меняешь поведение → пишешь тесты к этому изменению в том же шаге, точечно прогоняешь только их. Полный сьют и линтеры — один раз в конце (этап 7), не на каждом шаге.
|
|
24
|
-
7.
|
|
25
|
-
8.
|
|
24
|
+
7. **Проверки нельзя подавлять.** Не отключай линтеры, тесты, typecheck, static analysis и другие проверки; не добавляй игноры, исключения из проверок, ослабление правил или изменение команд так, чтобы проверка перестала запускаться. Пиши и правь код так, чтобы проверки проходили по сути.
|
|
25
|
+
8. **Простой язык** в сообщениях пользователю и вопросах. Термины — только если без них нельзя, и сразу с пояснением.
|
|
26
|
+
9. **Таблицы для структурируемых данных** в журнале. Диаграммы — только если действительно есть что показать.
|
|
26
27
|
|
|
27
28
|
## Интерактивные вопросы
|
|
28
29
|
|
|
@@ -118,7 +119,7 @@ cd ../<repo-name>-<slug>
|
|
|
118
119
|
Если в «Изменениях в docs» что-то накопилось — допиши в `docs/rules.md` или `docs/arch.md` минимально достаточно. Файлов нет — пропусти (создаёт `eda-docs`).
|
|
119
120
|
|
|
120
121
|
### 7. Финальная проверка
|
|
121
|
-
Прогони полный сьют тестов и линтеры на проекте. Команды — стандартные для стека; если непонятно — `AskUserQuestion` один раз. Свои поломки — правишь и повторяешь. Чужие/несвязанные — `AskUserQuestion`. Результат фиксируй разделом `## Финальная проверка` в журнале.
|
|
122
|
+
Прогони полный сьют тестов и линтеры на проекте. Команды — стандартные для стека; если непонятно — `AskUserQuestion` один раз. Свои поломки — правишь причину и повторяешь. Запрещено делать проверки зелёными через подавление ошибок, отключение правил, исключение файлов, ослабление конфигов или изменение команд проверки. Чужие/несвязанные — `AskUserQuestion`. Результат фиксируй разделом `## Финальная проверка` в журнале.
|
|
122
123
|
|
|
123
124
|
### 8. Финал
|
|
124
125
|
Короткое сообщение: пути к плану и журналу, сводка шагов, результат финальной проверки, состояние git («не закоммичено»), 1–3 главных «что важно знать», подсказка «дальше — `eda-review` или `eda-commit`».
|
|
@@ -130,3 +131,4 @@ cd ../<repo-name>-<slug>
|
|
|
130
131
|
- Делать паузу после каждого шага «для подтверждения».
|
|
131
132
|
- Пропускать обновление чекбоксов и журнала — иначе теряется состояние.
|
|
132
133
|
- Делать рискованное (удаление файлов, миграции, секреты) без подтверждения, даже если упомянуто в плане.
|
|
134
|
+
- Подавлять ошибки линтеров, тестов, typecheck или других проверок вместо исправления кода.
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-review
|
|
3
|
+
description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл) с обязательной сверкой с планом работ из `docs/plans/`. Если план не указан и его нельзя однозначно определить, спрашивает путь к плану до ревью. Перед ревью читает `docs/rules.md` и `docs/arch.md`. Формирует блочные замечания без таблиц: сначала контекст и обоснование без привязки к коду, затем конкретные локации; исправление так же сначала концептуально, потом конкретными шагами. Сохраняет в docs/reviews/. Всегда запускает параллельные специализированные проверки: выполнение плана, следование архитектуре, следование правилам. Кросс-CLI (Claude ↔ Codex) включается только флагом `strict`. Не правит код — это `eda-fix-by-review`.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Скил: Ревьюер (eda-review)
|
|
7
|
+
|
|
8
|
+
Делаешь ревью изменений: сверяешь diff с планом работ, правилами и архитектурой, пишешь замечания, ставишь оценку, сохраняешь файл. Затем проверяешь ревью тремя параллельными специализированными агентами; в `strict` — ещё и через соседний CLI. После каждой проверки **сам корректируешь** своё ревью: что-то добавляешь, что-то убираешь, что-то переформулируешь.
|
|
9
|
+
|
|
10
|
+
## Режимы вызова
|
|
11
|
+
|
|
12
|
+
- Обычный: `eda-review` — этапы 1–3 + финал. Кросс-CLI не запускается.
|
|
13
|
+
- Строгий: `eda-review strict` — обычный режим + кросс-CLI соседним агентом + допил.
|
|
14
|
+
|
|
15
|
+
## Вход из сообщения пользователя
|
|
16
|
+
|
|
17
|
+
Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
|
|
18
|
+
|
|
19
|
+
Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
|
|
20
|
+
|
|
21
|
+
## Главные правила
|
|
22
|
+
|
|
23
|
+
1. **Перед ревью** прочитай `docs/rules.md` и `docs/arch.md`, если есть, и строго следуй им. Замечания должны опираться на правила и архитектуру проекта, а не на твои общие представления.
|
|
24
|
+
2. **Интерактивные вопросы** — по разделу ниже. Если контекст понятен, не спрашивай.
|
|
25
|
+
3. **Не правишь код.** Только ревью. Запись только в `docs/reviews/`.
|
|
26
|
+
4. **План работ обязателен для ревью выполненных изменений.** Если путь к плану не указан в запросе и его нельзя однозначно определить из diff/ссылок, спроси путь к файлу плана и остановись до ответа. Не подставляй «последний план» наугад.
|
|
27
|
+
5. **Мета-ревью тремя специализированными агентами — обязательно**, без флага: проверка выполнения плана, проверка архитектуры, проверка правил. Кросс-CLI — только в `strict`.
|
|
28
|
+
6. **Главный ревьюер — ты.** Мета-ревьюеры дают подсказки; решение — добавить, убрать или оставить пункт — за тобой. Не вставляй чужие пункты механически.
|
|
29
|
+
7. **Простой язык** в формулировках замечаний и рекомендаций. Технические термины — только если без них нельзя, и сразу с пояснением.
|
|
30
|
+
8. **Не используй таблицы в файле ревью**, если пользователь прямо не попросил таблицу. Замечания, сверку с планом и рекомендации оформляй блоками друг под другом.
|
|
31
|
+
9. **В каждом замечании сначала объясняй контекст без привязки к коду**, чтобы читатель понял проблему и риск. Только после этого давай конкретные файлы/строки. Исправление оформляй так же: сначала общий подход, затем конкретные шаги по коду.
|
|
32
|
+
|
|
33
|
+
## Интерактивные вопросы
|
|
34
|
+
|
|
35
|
+
Если цель ревью понятна из запроса или текущего состояния репозитория, **не задавай вопрос о цели ревью**. Это не отменяет обязательный вопрос о `$PLAN_FILE`, если план не указан и не найден однозначно. Примеры понятного контекста:
|
|
36
|
+
- пользователь указал файл, папку, PR, ветку или тип diff;
|
|
37
|
+
- в запросе есть «ревью незакоммиченных изменений», «ревью текущей ветки», «проверь PR #N»;
|
|
38
|
+
- в рабочем дереве есть незакоммиченные изменения и пользователь просит «сделай ревью» без других целей.
|
|
39
|
+
|
|
40
|
+
Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
|
|
41
|
+
- Claude Code: используй `AskUserQuestion`.
|
|
42
|
+
- Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
|
|
43
|
+
- Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
|
|
44
|
+
- Не запускай команды, которые ждут интерактивного ввода в терминале; перед такими командами спроси в хост-интерфейсе или остановись с `blocked`.
|
|
45
|
+
|
|
46
|
+
## Этапы
|
|
47
|
+
|
|
48
|
+
### 1. Выбрать вход и прочитать контекст
|
|
49
|
+
Сначала попробуй определить цель ревью без вопроса:
|
|
50
|
+
- если пользователь указал файл, папку, PR, ветку или тип diff — используй это;
|
|
51
|
+
- если пользователь просит ревью без уточнений и есть незакоммиченные изменения — используй `git diff HEAD`;
|
|
52
|
+
- если незакоммиченных изменений нет, но текущая ветка не `main`/`master` и отличается от базовой ветки — используй `git diff <base>...HEAD`, где `<base>` выбери из существующих `main`, `master`, `origin/main`, `origin/master`;
|
|
53
|
+
- если цель всё ещё неоднозначна или diff пустой — только тогда через `AskUserQuestion` спроси, что ревьюим: незакоммиченный diff (`git diff HEAD`) / diff ветки от main (`git diff main...HEAD`) / конкретный файл или папка / номер PR.
|
|
54
|
+
|
|
55
|
+
Получи diff/исходник в `$TARGET`. Прочитай `docs/rules.md`, `docs/arch.md` и строго следуй им.
|
|
56
|
+
|
|
57
|
+
Определи `$PLAN_FILE`:
|
|
58
|
+
- если пользователь указал путь к плану — используй его;
|
|
59
|
+
- если в diff, описании задачи или уже существующем review-файле есть однозначная ссылка на `docs/plans/...` — используй её;
|
|
60
|
+
- если есть несколько возможных планов или нет ни одного — спроси: «Какой файл плана использовать для проверки выполнения работ?» и остановись до ответа;
|
|
61
|
+
- если пользователь явно просит ревью без сверки с планом — продолжай, но в ревью укажи, что проверка выполнения плана пропущена по явному указанию пользователя.
|
|
62
|
+
|
|
63
|
+
Если в diff видно отсылки к исследованию из `docs/researches/` — прочитай его тоже.
|
|
64
|
+
|
|
65
|
+
### 2. Сделать первичное ревью и сохранить
|
|
66
|
+
Пройдись по изменениям. Сначала проверь, выполнен ли `$PLAN_FILE`: что сделано, что сделано частично, что не сделано, какие отклонения создают риск. Затем проверь нарушения правил, архитектуры, баги, тестовые пробелы, безопасность, производительность и документацию.
|
|
67
|
+
|
|
68
|
+
Каждое замечание должно быть самостоятельным блоком:
|
|
69
|
+
- заголовок с номером и коротким смыслом;
|
|
70
|
+
- тип и рекомендация: `править обязательно`, `на усмотрение автора` или `не править`;
|
|
71
|
+
- контекст: объяснение проблемы без привязки к конкретному коду;
|
|
72
|
+
- риск: почему это важно для поведения, сопровождения, денег, безопасности или эксплуатации;
|
|
73
|
+
- где: конкретные файлы/строки;
|
|
74
|
+
- детали: что именно в коде подтверждает проблему;
|
|
75
|
+
- как исправить: сначала общий подход без привязки к коду;
|
|
76
|
+
- конкретные шаги: что поменять в файлах/тестах.
|
|
77
|
+
|
|
78
|
+
Поставь оценку 0–100 (100 — идеально, 0 — переделывать).
|
|
79
|
+
|
|
80
|
+
Сохрани в `docs/reviews/{YYYY-MM-DD}_{HH-MM}_{slug}.md`:
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
---
|
|
84
|
+
title: <заголовок>
|
|
85
|
+
date: <YYYY-MM-DD HH:MM>
|
|
86
|
+
target: <git diff HEAD | main...HEAD | path | PR#>
|
|
87
|
+
mode: <normal | strict>
|
|
88
|
+
score: <0..100>
|
|
89
|
+
status: draft
|
|
90
|
+
meta_reviewers: []
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
# Ревью: <заголовок>
|
|
94
|
+
|
|
95
|
+
## Оценка
|
|
96
|
+
**<N>/100.** <одно-два предложения почему>
|
|
97
|
+
|
|
98
|
+
## Сверка с планом
|
|
99
|
+
### 1. <пункт или этап плана>
|
|
100
|
+
Статус: <выполнено | частично | не выполнено | не проверялось>
|
|
101
|
+
|
|
102
|
+
Контекст:
|
|
103
|
+
<что требовал план простыми словами, без привязки к коду>
|
|
104
|
+
|
|
105
|
+
Итог:
|
|
106
|
+
<что фактически сделано или не сделано>
|
|
107
|
+
|
|
108
|
+
Конкретика:
|
|
109
|
+
- `<path/file.ts:42>` — <короткое подтверждение>
|
|
110
|
+
|
|
111
|
+
## Замечания
|
|
112
|
+
### 1. <короткий заголовок проблемы>
|
|
113
|
+
Тип: `bug`
|
|
114
|
+
|
|
115
|
+
Рекомендация: `править обязательно`
|
|
116
|
+
|
|
117
|
+
Контекст:
|
|
118
|
+
<объясни проблему и предметную причину без привязки к конкретному коду>
|
|
119
|
+
|
|
120
|
+
Риск:
|
|
121
|
+
<что сломается или почему это важно>
|
|
122
|
+
|
|
123
|
+
Где:
|
|
124
|
+
- `<path/file.py:42>` — <что смотреть>
|
|
125
|
+
|
|
126
|
+
Детали:
|
|
127
|
+
<конкретное объяснение по коду>
|
|
128
|
+
|
|
129
|
+
Как исправить:
|
|
130
|
+
<общий подход без привязки к конкретному файлу>
|
|
131
|
+
|
|
132
|
+
Конкретные шаги:
|
|
133
|
+
- <что поменять в коде>
|
|
134
|
+
- <какой тест добавить или обновить>
|
|
135
|
+
|
|
136
|
+
## Рекомендации
|
|
137
|
+
- **Править обязательно:** <номера>
|
|
138
|
+
- **На усмотрение автора:** <номера>
|
|
139
|
+
- **Не править:** <номера или —>
|
|
140
|
+
|
|
141
|
+
## Изменения после мета-ревью
|
|
142
|
+
<заполняется на этапах 3 и 4>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Покажи путь.
|
|
146
|
+
|
|
147
|
+
### 3. Мета-ревью тремя специализированными агентами (параллельно)
|
|
148
|
+
Запусти **в одном сообщении и одним batch** трёх агентов с разными ролями. Не запускай сначала одного-двух, не жди их ответы и не запускай третьего позже: все три проверки должны стартовать до чтения любого результата.
|
|
149
|
+
|
|
150
|
+
Роли агентов:
|
|
151
|
+
- `plan-check`: проверяет, что реализация действительно выполнила `$PLAN_FILE`, включая частичные пункты, пропущенные требования, лишние отклонения и недостающие проверки.
|
|
152
|
+
- `architecture-check`: проверяет следование `docs/arch.md`, границы модулей, контракты, зависимости и соответствие существующим архитектурным решениям.
|
|
153
|
+
- `rules-check`: проверяет следование `docs/rules.md`, локальным запретам, обязательным командам, требованиям к тестам, миграциям, документации и процессу.
|
|
154
|
+
|
|
155
|
+
Модели:
|
|
156
|
+
- Claude Code: запускай все три роли на `model: "sonnet"`.
|
|
157
|
+
- Codex: запускай все три роли на `gpt-5.3-codex`.
|
|
158
|
+
- Если нужный идентификатор недоступен, возьми ближайшую code-capable модель того же уровня. Не используй быструю слабую модель для этих трёх проверок: они должны читать diff, план, правила, архитектуру и релевантный код.
|
|
159
|
+
|
|
160
|
+
Каждому дай путь к файлу ревью, `$TARGET`, `$PLAN_FILE`, `docs/rules.md`, `docs/arch.md`, связанный research при наличии. Каждый агент должен читать не только ревью, но и фактический diff/код, достаточный для проверки своей роли.
|
|
161
|
+
|
|
162
|
+
Формат ответа агентов:
|
|
163
|
+
- `+` что добавить в ревью;
|
|
164
|
+
- `−` что убрать как неверное или недоказанное;
|
|
165
|
+
- `~` что переформулировать;
|
|
166
|
+
- `?` что невозможно проверить и почему.
|
|
167
|
+
|
|
168
|
+
Для `plan-check` добавь явную инструкцию: «Если `$PLAN_FILE` не передан или файл не найден, верни только `? план не проверен: нужен путь к файлу`; не пытайся угадывать план.»
|
|
169
|
+
|
|
170
|
+
Когда все три ответили: прочитай ответы, **сам реши**, что применять. Внеси правки в файл ревью. В разделе `## Изменения после мета-ревью` запиши:
|
|
171
|
+
|
|
172
|
+
```markdown
|
|
173
|
+
### После plan-check / architecture-check / rules-check
|
|
174
|
+
- **+ Добавлено:** <короткий список>
|
|
175
|
+
- **~ Изменено:** <короткий список>
|
|
176
|
+
- **− Убрано:** <короткий список>
|
|
177
|
+
- **Отклонено:** <короткий список с причиной>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Поменяй `status: draft` → `meta-reviewed`, в `meta_reviewers` добавь `plan-check`, `architecture-check`, `rules-check` и фактические модели, например `gpt-5.3-codex` или `sonnet`. Если оценка после корректировок изменилась — обнови `score`.
|
|
181
|
+
|
|
182
|
+
### 4. Кросс-CLI: отдать соседнему агенту — только в `strict`
|
|
183
|
+
Обычный режим — пропусти этап 4, иди на финал. `status: meta-reviewed` оставь как есть.
|
|
184
|
+
|
|
185
|
+
В `strict`: отдай файл соседнему агенту через `Bash`. Если ты в Claude Code — запускай Codex CLI:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
codex exec "Прочитай $REVIEW_FILE, $TARGET, $PLAN_FILE, docs/rules.md, docs/arch.md, связанный research при наличии. Затем глубоко проверь ревью по плану, правилам, архитектуре и релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: что добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Формат: '+', '−', '~', '?' без таблиц." > "${REVIEW_FILE%.md}_cli_meta.md"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Если ты в Codex — запускай Claude CLI с теми же требованиями глубины:
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
claude -p "Прочитай $REVIEW_FILE, $TARGET, $PLAN_FILE, docs/rules.md, docs/arch.md, связанный research при наличии. Затем глубоко проверь ревью по плану, правилам, архитектуре и релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: что добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Формат: '+', '−', '~', '?' без таблиц." > "${REVIEW_FILE%.md}_cli_meta.md"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Соседней CLI нет — `AskUserQuestion`: завершить как есть или прервать.
|
|
198
|
+
|
|
199
|
+
Прочитай ответ, **сам реши**, что применять. Допиши в `## Изменения после мета-ревью`:
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
### После соседнего CLI (codex|claude)
|
|
203
|
+
- **+ Добавлено:** ...
|
|
204
|
+
- **− Убрано:** ...
|
|
205
|
+
- **Отклонено:** ...
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Добавь в `meta_reviewers` имя CLI. `status: meta-reviewed` → `final`.
|
|
209
|
+
|
|
210
|
+
### 5. Финал
|
|
211
|
+
Короткое сообщение: режим (`normal` или `strict`), путь к файлу ревью, итоговая оценка, сколько пунктов «править обязательно» / «на усмотрение» / «не править». Если режим был обычный — добавь строку «кросс-CLI не запускался; для проверки соседним агентом — `eda-review strict`». Что предлагаешь дальше — `eda-fix-by-review` для применения или `eda-commit` если оценка приемлема.
|
|
212
|
+
|
|
213
|
+
## Чего НЕ делать
|
|
214
|
+
- Править код. Это `eda-fix-by-review`.
|
|
215
|
+
- Пропускать мета-ревью тремя специализированными агентами (это часть обычного режима, не под флагом).
|
|
216
|
+
- Запускать мета-ревьюеров частями: сначала 1–2 агента, потом третьего. Все три стартуют сразу.
|
|
217
|
+
- Пропускать кросс-CLI молча в `strict` (если соседней CLI нет — спроси через `AskUserQuestion`).
|
|
218
|
+
- Вставлять чужие предложения механически — каждое решение принимай ты.
|
|
219
|
+
- Задавать вопросы без блокировки и продолжать работу до ответа.
|
|
220
|
+
- Сохранять ревью куда-либо кроме `docs/reviews/`.
|
|
221
|
+
- Оформлять замечания таблицей или без контекста перед конкретикой.
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: eda-review
|
|
3
|
-
description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл). Если контекст ревью понятен из запроса или репозитория, не задаёт уточняющий вопрос и сразу выбирает цель. Перед ревью читает `docs/rules.md` и `docs/arch.md` и строго следует им. Формирует пронумерованные замечания, оценку 0–100, рекомендации «править / на усмотрение / не править». Сохраняет в docs/reviews/. Всегда проверяет своё же ревью тремя параллельными моделями (Sonnet, Haiku, Opus); кросс-CLI (Claude ↔ Codex) включается только флагом `strict`. После каждой проверки сам корректирует ревью. Не правит код — это `eda-fix-by-review`. Вопросы — только когда без ответа нельзя безопасно продолжать.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Скил: Ревьюер (eda-review)
|
|
7
|
-
|
|
8
|
-
Делаешь ревью изменений: пишешь замечания, ставишь оценку, сохраняешь файл. Затем проверяешь сам себя через три параллельные модели; в `strict` — ещё и через соседний CLI. После каждой проверки **сам корректируешь** своё ревью: что-то добавляешь, что-то убираешь, что-то переформулируешь.
|
|
9
|
-
|
|
10
|
-
## Режимы вызова
|
|
11
|
-
|
|
12
|
-
| Режим | Запуск | Что делает |
|
|
13
|
-
|---|---|---|
|
|
14
|
-
| Обычный | `eda-review` | Этапы 1–3 + финал. Кросс-CLI не запускается. |
|
|
15
|
-
| Строгий | `eda-review strict` | + кросс-CLI соседним агентом + допил. |
|
|
16
|
-
|
|
17
|
-
## Вход из сообщения пользователя
|
|
18
|
-
|
|
19
|
-
Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
|
|
20
|
-
|
|
21
|
-
Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
|
|
22
|
-
|
|
23
|
-
## Главные правила
|
|
24
|
-
|
|
25
|
-
1. **Перед ревью** прочитай `docs/rules.md` и `docs/arch.md`, если есть, и строго следуй им. Замечания должны опираться на правила и архитектуру проекта, а не на твои общие представления.
|
|
26
|
-
2. **Интерактивные вопросы** — по разделу ниже. Если контекст понятен, не спрашивай.
|
|
27
|
-
3. **Не правишь код.** Только ревью. Запись только в `docs/reviews/`.
|
|
28
|
-
4. **Мета-ревью тремя моделями — обязательно**, без флага. Кросс-CLI — только в `strict`.
|
|
29
|
-
5. **Главный ревьюер — ты.** Мета-ревьюеры дают подсказки; решение — добавить, убрать или оставить пункт — за тобой. Не вставляй чужие пункты механически.
|
|
30
|
-
6. **Простой язык** в формулировках замечаний и рекомендаций. Технические термины — только если без них нельзя, и сразу с пояснением.
|
|
31
|
-
7. **Таблицы для замечаний.** Сплошной текст — только для оценки и общего вывода.
|
|
32
|
-
|
|
33
|
-
## Интерактивные вопросы
|
|
34
|
-
|
|
35
|
-
Если цель ревью понятна из запроса или текущего состояния репозитория, **не задавай вопрос**. Примеры понятного контекста:
|
|
36
|
-
- пользователь указал файл, папку, PR, ветку или тип diff;
|
|
37
|
-
- в запросе есть «ревью незакоммиченных изменений», «ревью текущей ветки», «проверь PR #N»;
|
|
38
|
-
- в рабочем дереве есть незакоммиченные изменения и пользователь просит «сделай ревью» без других целей.
|
|
39
|
-
|
|
40
|
-
Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
|
|
41
|
-
- Claude Code: используй `AskUserQuestion`.
|
|
42
|
-
- Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
|
|
43
|
-
- Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
|
|
44
|
-
- Не запускай команды, которые ждут интерактивного ввода в терминале; перед такими командами спроси в хост-интерфейсе или остановись с `blocked`.
|
|
45
|
-
|
|
46
|
-
## Этапы
|
|
47
|
-
|
|
48
|
-
### 1. Выбрать вход и прочитать контекст
|
|
49
|
-
Сначала попробуй определить цель ревью без вопроса:
|
|
50
|
-
- если пользователь указал файл, папку, PR, ветку или тип diff — используй это;
|
|
51
|
-
- если пользователь просит ревью без уточнений и есть незакоммиченные изменения — используй `git diff HEAD`;
|
|
52
|
-
- если незакоммиченных изменений нет, но текущая ветка не `main`/`master` и отличается от базовой ветки — используй `git diff <base>...HEAD`, где `<base>` выбери из существующих `main`, `master`, `origin/main`, `origin/master`;
|
|
53
|
-
- если цель всё ещё неоднозначна или diff пустой — только тогда через `AskUserQuestion` спроси, что ревьюим: незакоммиченный diff (`git diff HEAD`) / diff ветки от main (`git diff main...HEAD`) / конкретный файл или папка / номер PR.
|
|
54
|
-
|
|
55
|
-
Получи diff/исходник в `$TARGET`. Прочитай `docs/rules.md`, `docs/arch.md` и строго следуй им. Если в diff видно отсылки к плану из `docs/plans/` или исследованию из `docs/researches/` — прочитай их тоже.
|
|
56
|
-
|
|
57
|
-
### 2. Сделать первичное ревью и сохранить
|
|
58
|
-
Пройдись по изменениям. Замечания группируй по типу: bug / архитектура / стиль / тесты / безопасность / производительность / документация. Каждое — с локацией (`file:line`) и предложением «что сделать». Поставь оценку 0–100 (100 — идеально, 0 — переделывать).
|
|
59
|
-
|
|
60
|
-
Сохрани в `docs/reviews/{YYYY-MM-DD}_{HH-MM}_{slug}.md`:
|
|
61
|
-
|
|
62
|
-
```markdown
|
|
63
|
-
---
|
|
64
|
-
title: <заголовок>
|
|
65
|
-
date: <YYYY-MM-DD HH:MM>
|
|
66
|
-
target: <git diff HEAD | main...HEAD | path | PR#>
|
|
67
|
-
mode: <normal | strict>
|
|
68
|
-
score: <0..100>
|
|
69
|
-
status: draft
|
|
70
|
-
meta_reviewers: []
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
# Ревью: <заголовок>
|
|
74
|
-
|
|
75
|
-
## Оценка
|
|
76
|
-
**<N>/100.** <одно-два предложения почему>
|
|
77
|
-
|
|
78
|
-
## Замечания
|
|
79
|
-
| # | Тип | Где | Что не так | Что предлагаешь |
|
|
80
|
-
|---|-----|-----|------------|-----------------|
|
|
81
|
-
| 1 | bug | `path/file.py:42` | ... | ... |
|
|
82
|
-
|
|
83
|
-
## Рекомендации
|
|
84
|
-
- **Править обязательно:** <номера>
|
|
85
|
-
- **На усмотрение автора:** <номера>
|
|
86
|
-
- **Не править:** <номера или —>
|
|
87
|
-
|
|
88
|
-
## Изменения после мета-ревью
|
|
89
|
-
<заполняется на этапах 3 и 4>
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Покажи путь.
|
|
93
|
-
|
|
94
|
-
### 3. Мета-ревью тремя моделями (параллельно)
|
|
95
|
-
Запусти **в одном сообщении и одним batch** трёх агентов на трёх разных моделях — слабая, средняя, мощная. Не запускай сначала одного-двух, не жди их ответы и не запускай третьего позже: все три проверки должны стартовать до чтения любого результата.
|
|
96
|
-
|
|
97
|
-
| Среда | Слабая (быстрая) | Средняя (код) | Мощная (флагман) |
|
|
98
|
-
|---|---|---|---|
|
|
99
|
-
| Claude Code (`Agent` tool) | `model: "haiku"` | `model: "sonnet"` | `model: "opus"` |
|
|
100
|
-
| Codex CLI (`codex exec --model …`) | `gpt-5.4-mini` | `gpt-5.3-codex` | `gpt-5.5` |
|
|
101
|
-
|
|
102
|
-
В Claude Code запускай три параллельных `Agent` tool в одном ответе/tool-use batch с моделями из таблицы и передавай им промпты нужной глубины из таблицы ниже. В Codex запускай три параллельных `codex exec --model <id>` одной Bash-командой с `&` и общим `wait`. Если `gpt-5.5` недоступен (ограничение account/auth) — возьми `gpt-5.4` как мощную. Если какой-либо идентификатор отсутствует у тебя — возьми ближайший аналог того же тира из доступных в твоей версии Codex.
|
|
103
|
-
|
|
104
|
-
Каждому дай путь к файлу ревью, указание на `$TARGET`, `docs/rules.md`, `docs/arch.md` (если есть), связанный план/research (если ревью на них ссылается). Формулируй задание как содержательную проверку с глубиной чтения, указанной для тира модели ниже.
|
|
105
|
-
|
|
106
|
-
Глубина проверки зависит от модели:
|
|
107
|
-
|
|
108
|
-
| Модель | Что просить |
|
|
109
|
-
|---|---|
|
|
110
|
-
| Слабая | Быстро проверить ревью, diff и правила; код смотреть только точечно, если без этого нельзя оценить пункт. |
|
|
111
|
-
| Средняя | Проверить ревью по diff и прочитать релевантные файлы/контракты, которые прямо следуют из изменений; найти пропущенные или неверные замечания. |
|
|
112
|
-
| Мощная | Провести глубокую проверку: прочитать ревью, diff, правила, архитектуру, связанный план/research и релевантный код настолько глубоко, чтобы подтвердить корректность замечаний, найти пропущенные баги, риски для смежного кода и недостающие тесты. |
|
|
113
|
-
|
|
114
|
-
Базовый формат ответа для всех: `+ N | − N | ~ N: причина`, без воды. Для мощной модели добавь явную инструкцию: «Если ревью или diff ссылаются на модуль, API, тесты или сценарий, открой соответствующие файлы и проверь фактическое поведение проекта.»
|
|
115
|
-
|
|
116
|
-
Когда все три ответили: прочитай ответы, **сам реши**, что применять. Внеси правки в файл ревью. В разделе `## Изменения после мета-ревью` запиши:
|
|
117
|
-
|
|
118
|
-
```markdown
|
|
119
|
-
### После Sonnet/Haiku/Opus
|
|
120
|
-
- **+ Добавлено:** <короткий список>
|
|
121
|
-
- **− Убрано:** <короткий список>
|
|
122
|
-
- **Отклонено:** <короткий список с причиной>
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
Поменяй `status: draft` → `meta-reviewed`, в `meta_reviewers` добавь `sonnet, haiku, opus`. Если оценка после корректировок изменилась — обнови `score`.
|
|
126
|
-
|
|
127
|
-
### 4. Кросс-CLI: отдать соседнему агенту — только в `strict`
|
|
128
|
-
Обычный режим — пропусти этап 4, иди на финал. `status: meta-reviewed` оставь как есть.
|
|
129
|
-
|
|
130
|
-
В `strict`: отдай файл соседнему агенту через `Bash`. Если ты в Claude Code — запускай Codex CLI:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
codex exec "Прочитай $REVIEW_FILE, $TARGET, docs/rules.md, docs/arch.md, связанный план/research при наличии. Затем глубоко проверь ревью по релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: какие пункты добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Список '+ N | − N | ~ N: причина'." > "${REVIEW_FILE%.md}_cli_meta.md"
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
Если ты в Codex — запускай Claude CLI с теми же требованиями глубины:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
claude -p "Прочитай $REVIEW_FILE, $TARGET, docs/rules.md, docs/arch.md, связанный план/research при наличии. Затем глубоко проверь ревью по релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: какие пункты добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Список '+ N | − N | ~ N: причина'." > "${REVIEW_FILE%.md}_cli_meta.md"
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
Соседней CLI нет — `AskUserQuestion`: завершить как есть или прервать.
|
|
143
|
-
|
|
144
|
-
Прочитай ответ, **сам реши**, что применять. Допиши в `## Изменения после мета-ревью`:
|
|
145
|
-
|
|
146
|
-
```markdown
|
|
147
|
-
### После соседнего CLI (codex|claude)
|
|
148
|
-
- **+ Добавлено:** ...
|
|
149
|
-
- **− Убрано:** ...
|
|
150
|
-
- **Отклонено:** ...
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
Добавь в `meta_reviewers` имя CLI. `status: meta-reviewed` → `final`.
|
|
154
|
-
|
|
155
|
-
### 5. Финал
|
|
156
|
-
Короткое сообщение: режим (`normal` или `strict`), путь к файлу ревью, итоговая оценка, сколько пунктов «править обязательно» / «на усмотрение» / «не править». Если режим был обычный — добавь строку «кросс-CLI не запускался; для проверки соседним агентом — `eda-review strict`». Что предлагаешь дальше — `eda-fix-by-review` для применения или `eda-commit` если оценка приемлема.
|
|
157
|
-
|
|
158
|
-
## Чего НЕ делать
|
|
159
|
-
- Править код. Это `eda-fix-by-review`.
|
|
160
|
-
- Пропускать мета-ревью тремя моделями (это часть обычного режима, не под флагом).
|
|
161
|
-
- Запускать мета-ревьюеров частями: сначала 1–2 агента, потом третьего. Все три стартуют сразу.
|
|
162
|
-
- Пропускать кросс-CLI молча в `strict` (если соседней CLI нет — спроси через `AskUserQuestion`).
|
|
163
|
-
- Вставлять чужие предложения механически — каждое решение принимай ты.
|
|
164
|
-
- Задавать вопросы без блокировки и продолжать работу до ответа.
|
|
165
|
-
- Сохранять ревью куда-либо кроме `docs/reviews/`.
|
|
166
|
-
- Оформлять замечания сплошным текстом — только таблица.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|