@gian-tiaga/eda 0.6.1 → 0.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.
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: eda-polish
3
+ description: 'Автономно доводит изменения до заданной оценки ревью: запускает `eda-review draft`, затем `eda-review-check`, затем `eda-fix-by-review apply-optional`, и повторяет цикл до порога качества или лимита итераций. По умолчанию цель — 95/100, лимит — 5 итераций; порог можно переопределить в сообщении (`до 90`, `threshold 90`). Каждый шаг запускается в изолированном субагенте или отдельном CLI-процессе. Не коммитит и не отправляет ревью.'
4
+ ---
5
+
6
+ # Скил: Доводка по ревью (eda-polish)
7
+
8
+ Оркестрируешь цикл проверки и исправления: черновое ревью, проверка ревью, применение замечаний, новое ревью. Сам не пишешь ревью и не правишь код в основном агенте — каждый шаг запускаешь в изолированном субагенте или отдельном CLI-процессе.
9
+
10
+ ## Вход из сообщения пользователя
11
+
12
+ Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: target для ревью, путь к плану, PR/ветку/diff/файл, желаемый порог, лимит итераций, ограничения и прямые указания.
13
+
14
+ Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск полировать не те изменения. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
15
+
16
+ ## Режим запуска
17
+
18
+ Порог качества по умолчанию — `95`. Пользователь может переопределить его в текущем сообщении: `до 90`, `threshold 90`, `цель 90`. Допустимые значения — от `1` до `100`.
19
+
20
+ Лимит по умолчанию — `5` итераций. Пользователь может явно задать меньший или больший лимит словами `лимит 3`, `max iterations 3`, `не больше 3 кругов`.
21
+
22
+ `strict` или `normal` передавай в `eda-review-check` только если пользователь явно указал режим. Если режима нет, запускай `eda-review-check` без режима: он сам прочитает `docs/settings.yaml`. `eda-review draft` всегда остаётся draft без субагентов.
23
+
24
+ ## Главные правила
25
+
26
+ 1. **Изоляция шагов обязательна.** `eda-review draft`, `eda-review-check` и `eda-fix-by-review apply-optional` запускаются отдельными субагентами или отдельными CLI-процессами. Главный агент только управляет циклом и читает артефакты.
27
+ 2. **Не коммитишь и не отправляешь ревью.** Это работа `eda-commit` и `eda-send-review`.
28
+ 3. **Не обходишь границы скилов.** Ревью делает `eda-review draft`, проверку ревью делает `eda-review-check`, правки делает `eda-fix-by-review apply-optional`.
29
+ 4. **Цель цикла — score из проверенного ревью.** Сравнивай порог только с ревью после `eda-review-check`, не с draft.
30
+ 5. **Optional-замечания применяются автоматически.** Для шага фиксов всегда передавай `apply-optional`, чтобы `eda-fix-by-review` применил пункты «на усмотрение автора» без вопроса.
31
+ 6. **Останавливайся на блокерах.** Если любой субагент завершился `blocked`, проверки не проходят из-за нерешённой причины, нет применимых замечаний или score не растёт два круга подряд — останови цикл и объясни причину.
32
+ 7. **Не скрывай неудачную сходимость.** Если лимит достигнут, финал должен прямо сказать, какая оценка получилась и какие ревью/фиксы были последними.
33
+
34
+ ## Интерактивные вопросы
35
+
36
+ Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
37
+ - Claude Code: используй `AskUserQuestion`.
38
+ - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
39
+ - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
40
+ - Не запускай команды, которые ждут интерактивного ввода в терминале; перед такими командами спроси в хост-интерфейсе или остановись с `blocked`.
41
+
42
+ ## Запуск субагентов
43
+
44
+ Каждый запуск должен получать полный, самодостаточный prompt: какой скилл выполнить, какой target или файл использовать, что считать успехом, где искать артефакт результата. Передавай только текущий вход и пути к созданным файлам, а не длинную историю чата.
45
+
46
+ - Claude Code: запускай шаги через `Agent` tool, по одному шагу за раз. Для каждого шага проси агента использовать нужный скилл и вернуть путь к созданному или обновлённому файлу.
47
+ - Codex interactive: если доступен инструмент субагентов (`spawn_agent` или аналог), запускай шаги через него. Не делай ревью или фиксы основным агентом, когда субагенты доступны.
48
+ - Codex exec / неинтерактивный fallback: запускай каждый шаг отдельным `codex exec` с явной инструкцией использовать нужный скилл. Следующий шаг стартует только после чтения артефакта предыдущего.
49
+ - Если нет ни субагентов, ни CLI-fallback, остановись со статусом `blocked: нужен инструмент изолированного запуска`.
50
+
51
+ ## Этапы
52
+
53
+ ### 1. Подготовить цель и параметры
54
+
55
+ Определи `$TARGET_CONTEXT` так же, как это делает `eda-review`: указанный файл/папка/PR/ветка, незакоммиченный diff или diff текущей ветки от base. Если план указан — сохрани путь и передавай его в каждый `eda-review draft`. Если план нужен, но не указан и не определяется однозначно, вопрос задаст субагент `eda-review draft`; при его `blocked` останови весь цикл.
56
+
57
+ Создай внутренний журнал итераций в сообщении агента: номер, review file, checked score, fix report, причина перехода к следующему кругу. Отдельный файл журнала не нужен.
58
+
59
+ ### 2. Итерационный цикл
60
+
61
+ Повторяй до достижения порога или лимита:
62
+
63
+ 1. Запусти изолированный шаг:
64
+
65
+ ```text
66
+ Используй скилл eda-review draft. Сделай черновое ревью для: <TARGET_CONTEXT>. Если есть план: <PLAN_FILE>. Сохрани ревью в docs/reviews/ и верни только путь к файлу и score.
67
+ ```
68
+
69
+ 2. Получи `$REVIEW_FILE` из ответа или найди самый новый файл, созданный после старта шага. Если файл не найден — остановись `blocked: review file не создан`.
70
+
71
+ 3. Запусти изолированный шаг:
72
+
73
+ ```text
74
+ Используй скилл eda-review-check <режим, только если пользователь указал strict или normal>. Проверь ревью: <REVIEW_FILE>. Верни путь к ревью, итоговый score, статус и список meta_reviewers.
75
+ ```
76
+
77
+ 4. Прочитай `$REVIEW_FILE` после проверки и извлеки `score`. Если `score >= threshold`, останови цикл как успешный.
78
+
79
+ 5. Если score ниже порога, проверь, есть ли в ревью пункты «править обязательно» или «на усмотрение автора». Если применимых пунктов нет — остановись `blocked: нет применимых замечаний для повышения оценки`.
80
+
81
+ 6. Запусти изолированный шаг:
82
+
83
+ ```text
84
+ Используй скилл eda-fix-by-review apply-optional. Примени замечания из ревью: <REVIEW_FILE>. Применяй пункты «править обязательно» и «на усмотрение автора». Сохрани отчёт в docs/review-fixes/ и верни путь к отчёту, результат финальных проверок и состояние git.
85
+ ```
86
+
87
+ 7. Если фикс завершился `blocked`, с ошибкой проверок или без применённых правок — останови цикл и покажи причину.
88
+
89
+ 8. Перейди к следующей итерации на обновлённом рабочем дереве.
90
+
91
+ Если score не растёт два проверенных круга подряд, остановись раньше лимита: дальнейший цикл, скорее всего, повторит те же замечания.
92
+
93
+ ### 3. Финал
94
+
95
+ Короткое сообщение:
96
+ - результат: `достигнут порог`, `достигнут лимит`, `blocked`, `нет применимых замечаний`, `score не растёт`;
97
+ - итоговая оценка и порог;
98
+ - сколько итераций выполнено;
99
+ - путь к последнему ревью;
100
+ - путь к последнему отчёту фиксов, если он был;
101
+ - результат финальной проверки из последнего `eda-fix-by-review`;
102
+ - состояние git («не закоммичено»).
103
+
104
+ Если порог достигнут — предложи дальше `eda-commit`. Если остановка неуспешная — назови следующий конкретный шаг: ручное решение блокера, изменение порога или отдельный `eda-review strict`.
105
+
106
+ ## Чего НЕ делать
107
+
108
+ - Делать ревью, проверку ревью или фиксы основным агентом вместо запуска скилов.
109
+ - Запускать следующий шаг, не прочитав артефакт предыдущего.
110
+ - Сравнивать порог с draft-оценкой до `eda-review-check`.
111
+ - Продолжать после `blocked` или красных финальных проверок.
112
+ - Коммитить, пушить или отправлять ревью.
113
+ - Переписывать `docs/settings.yaml` или менять правила проекта ради достижения оценки.
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: eda-review-check
3
+ description: 'Проверяет готовое ревью из `docs/reviews/...` специализированными субагентами и, в strict-режиме, соседним CLI. Не делает первичное ревью и не правит код. Читает ревью, target/plan из front matter, `docs/rules.md`, `docs/arch.md`, `docs/settings.yaml` и связанный research при наличии. Запускает plan-check, architecture-check, rules-check и опциональный quality-check, затем сам применяет подтверждённые замечания к файлу ревью: добавляет, убирает или переформулирует пункты, обновляет score/status/meta_reviewers и раздел изменений после мета-ревью.'
4
+ ---
5
+
6
+ # Скил: Проверка ревью (eda-review-check)
7
+
8
+ Берёшь уже сохранённое ревью из `docs/reviews/`, проверяешь его специализированными субагентами, затем сам правишь файл ревью по подтверждённым замечаниям. Этот скил переиспользуется обычным `eda-review` после draft-этапа и может запускаться отдельно.
9
+
10
+ ## Режим запуска
11
+
12
+ Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
13
+
14
+ Дефолты: `defaults.strict: false`, `review.include_code_quality: true`.
15
+
16
+ | Настройка | Значения | Аргументы в сообщении |
17
+ |---|---|---|
18
+ | `defaults.strict` | `true`, `false` | `strict`; выключение: `normal`, `без strict`, `без строгого режима` |
19
+ | `review.include_code_quality` | `true`, `false` | «проверь качество кода»; выключение: «без quality», «без проверки качества» |
20
+
21
+ `strict` добавляет кросс-CLI соседним агентом. `review.include_code_quality: true` добавляет `quality-check` в обычное мета-ревью.
22
+
23
+ ## Вход из сообщения пользователя
24
+
25
+ Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: путь к ревью, название или часть названия, «последнее ревью», режим, ограничения и прямые указания.
26
+
27
+ Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск проверить не то ревью. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
28
+
29
+ ## Главные правила
30
+
31
+ 1. **Не делаешь первичное ревью.** Входом всегда является готовый файл `docs/reviews/...`.
32
+ 2. **Не правишь код.** Можно менять только выбранный файл ревью и вспомогательный файл `${REVIEW_FILE%.md}_cli_meta.md` в strict-режиме.
33
+ 3. **Мета-ревью специализированными агентами обязательно.** Базовые роли: `plan-check`, `architecture-check`, `rules-check`. Если включена проверка качества кода — добавь `quality-check` в тот же batch.
34
+ 4. **Главный редактор ревью — ты.** Субагенты дают предложения; решение добавить, убрать или переформулировать пункт принимаешь сам.
35
+ 5. **Ревью остаётся ревью только по проблемам.** Не добавляй выполненные пункты, похвалу, нейтральный отчёт о diff или общие рассуждения.
36
+ 6. **Каждое принятое изменение фиксируй в `## Изменения после мета-ревью`.** Отклонённые предложения тоже запиши коротко с причиной.
37
+ 7. **Оценку пересчитывай после правок.** Если изменился набор или тяжесть замечаний, обнови `score` в front matter и текст в разделе `## Оценка`.
38
+
39
+ ## Интерактивные вопросы
40
+
41
+ Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
42
+ - Claude Code: используй `AskUserQuestion`.
43
+ - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
44
+ - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
45
+ - Не запускай команды, которые ждут интерактивного ввода в терминале; перед такими командами спроси в хост-интерфейсе или остановись с `blocked`.
46
+
47
+ ## Этапы
48
+
49
+ ### 1. Выбрать ревью и прочитать контекст
50
+
51
+ Определи `$REVIEW_FILE`:
52
+ - если пользователь указал путь к ревью — используй его;
53
+ - если указал название или часть названия — найди совпадение в `docs/reviews/`;
54
+ - если написал «последнее ревью» — возьми самый новый файл из `docs/reviews/`;
55
+ - если входа нет — `AskUserQuestion` со списком последних файлов из `docs/reviews/`;
56
+ - если `docs/reviews/` отсутствует или пуста — остановись со статусом `blocked: нужно ревью`.
57
+
58
+ Прочитай `$REVIEW_FILE` целиком. Из front matter и текста извлеки `$TARGET`, `$PLAN_FILE`, текущие `mode`, `score`, `status`, `meta_reviewers`. Если target указывает на diff-команду, получи актуальный diff. Если target указывает на файл, папку или PR — прочитай достаточно кода, чтобы проверить замечания. Прочитай `docs/rules.md`, `docs/arch.md`, `docs/settings.yaml`, если они есть. Если ревью ссылается на `docs/researches/...`, прочитай связанный research.
59
+
60
+ Если `$PLAN_FILE` отсутствует, не угадывай план. `plan-check` всё равно запускается, но получает явную инструкцию вернуть только `? план не проверен: нужен путь к файлу`.
61
+
62
+ ### 2. Запустить специализированных субагентов
63
+
64
+ Запусти **в одном сообщении и одним batch** агентов с разными ролями. В интерактивном Codex это означает субагентов, а не отдельные процессы `codex exec`. Не запускай сначала часть агентов, не жди их ответы и не запускай остальных позже: все проверки должны стартовать до чтения любого результата.
65
+
66
+ Роли агентов:
67
+ - `plan-check`: проверяет, что реализация действительно выполнила `$PLAN_FILE`, включая частичные пункты, пропущенные требования, лишние отклонения и недостающие проверки.
68
+ - `architecture-check`: проверяет следование `docs/arch.md`, границы модулей, контракты, зависимости и соответствие существующим архитектурным решениям.
69
+ - `rules-check`: проверяет следование `docs/rules.md`, локальным запретам, обязательным командам, требованиям к тестам, миграциям, документации и процессу.
70
+ - `quality-check`: запускай только если `review.include_code_quality: true` или пользователь явно попросил качество кода. Проверяет качество реализации: читаемость, сложность, дублирование, имена, размер и ответственность функций/классов, сцепление модулей, поддерживаемость и соответствие локальному стилю. Quality-замечания помечай типом `quality`; по умолчанию рекомендация `на усмотрение автора`, кроме случаев, где сложность, дублирование или неясная структура реально создают риск багов, тестовых пробелов или дорогого сопровождения.
71
+
72
+ Модели:
73
+ - Claude Code: запускай все роли через `Agent` tool на `model: "sonnet"`.
74
+ - Codex interactive: если доступен инструмент субагентов (`spawn_agent` или аналог), запускай все роли через него на `gpt-5.3-codex`; не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны.
75
+ - Codex exec / неинтерактивный fallback: если инструмента субагентов нет, запускай роли через параллельные `codex exec --model gpt-5.3-codex` одной Bash-командой с `&` и общим `wait`.
76
+ - Если нужный идентификатор недоступен, возьми ближайшую code-capable модель того же уровня. Не используй быструю слабую модель для этих проверок: они должны читать diff, план, правила, архитектуру и релевантный код.
77
+
78
+ Каждому агенту дай путь к `$REVIEW_FILE`, `$TARGET`, `$PLAN_FILE`, `docs/rules.md`, `docs/arch.md`, `docs/settings.yaml`, связанный research при наличии. Каждый агент должен читать не только ревью, но и фактический diff/код, достаточный для проверки своей роли.
79
+
80
+ Формат ответа агентов:
81
+ - `+` какую проблему добавить в ревью;
82
+ - `−` что убрать как неверное или недоказанное;
83
+ - `~` что переформулировать;
84
+ - `?` что невозможно проверить и почему.
85
+
86
+ Для `plan-check` добавь явную инструкцию: «Если `$PLAN_FILE` не передан или файл не найден, верни только `? план не проверен: нужен путь к файлу`; не пытайся угадывать план.»
87
+
88
+ ### 3. Применить результаты обычного мета-ревью
89
+
90
+ Когда все агенты ответили: прочитай ответы, **сам реши**, что применять. Добавляй только подтверждённые проблемы; предложения вида «добавить, что пункт выполнен» отклоняй как неформат ревью. Внеси правки в файл ревью.
91
+
92
+ В разделе `## Изменения после мета-ревью` запиши:
93
+
94
+ ```markdown
95
+ ### После plan-check / architecture-check / rules-check / quality-check
96
+ - **+ Добавлено:** <короткий список>
97
+ - **~ Изменено:** <короткий список>
98
+ - **− Убрано:** <короткий список>
99
+ - **Отклонено:** <короткий список с причиной>
100
+ ```
101
+
102
+ Поменяй `status: draft` → `meta-reviewed`, если статус был draft. В `meta_reviewers` добавь `plan-check`, `architecture-check`, `rules-check`, а если запускался — `quality-check`, и фактические модели, например `gpt-5.3-codex` или `sonnet`. Если оценка после корректировок изменилась — обнови `score`.
103
+
104
+ ### 4. Кросс-CLI: отдать соседнему агенту — только в `strict`
105
+
106
+ Обычный режим — пропусти этап 4, иди на финал. `status: meta-reviewed` оставь как есть.
107
+
108
+ В `strict`: отдай файл соседнему агенту через `Bash`. Если ты в Claude Code — запускай Codex CLI:
109
+
110
+ ```bash
111
+ codex exec "Прочитай $REVIEW_FILE, $TARGET, $PLAN_FILE, docs/rules.md, docs/arch.md, связанный research при наличии. Затем глубоко проверь ревью по плану, правилам, архитектуре и релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: какие проблемы добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Не предлагай перечислять выполненную работу. Формат: '+', '−', '~', '?'." > "${REVIEW_FILE%.md}_cli_meta.md"
112
+ ```
113
+
114
+ Если ты в Codex — запускай Claude CLI с теми же требованиями глубины:
115
+
116
+ ```bash
117
+ claude -p "Прочитай $REVIEW_FILE, $TARGET, $PLAN_FILE, docs/rules.md, docs/arch.md, связанный research при наличии. Затем глубоко проверь ревью по плану, правилам, архитектуре и релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: какие проблемы добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Не предлагай перечислять выполненную работу. Формат: '+', '−', '~', '?'." > "${REVIEW_FILE%.md}_cli_meta.md"
118
+ ```
119
+
120
+ Соседней CLI нет — `AskUserQuestion`: завершить как есть или прервать.
121
+
122
+ Прочитай ответ, **сам реши**, что применять. Допиши в `## Изменения после мета-ревью`:
123
+
124
+ ```markdown
125
+ ### После соседнего CLI (codex|claude)
126
+ - **+ Добавлено:** ...
127
+ - **− Убрано:** ...
128
+ - **Отклонено:** ...
129
+ ```
130
+
131
+ Добавь в `meta_reviewers` имя CLI. `status: meta-reviewed` → `final`.
132
+
133
+ ### 5. Финал
134
+
135
+ Короткое сообщение: режим (`normal` или `strict`), путь к файлу ревью, итоговая оценка, сколько пунктов «править обязательно» / «на усмотрение», какие meta-reviewers запускались. Не пересказывай выполненную работу. Если режим был обычный — добавь строку «кросс-CLI не запускался; для проверки соседним агентом — `eda-review-check strict <review>`».
136
+
137
+ ## Чего НЕ делать
138
+
139
+ - Делать первичное ревью. Это `eda-review`.
140
+ - Править код. Это `eda-fix-by-review`.
141
+ - Пропускать мета-ревью специализированными агентами.
142
+ - Запускать мета-ревьюеров частями: сначала 1–2 агента, потом остальных. Все обязательные проверки стартуют сразу.
143
+ - Пропускать кросс-CLI молча в `strict` (если соседней CLI нет — спроси через `AskUserQuestion`).
144
+ - Вставлять чужие предложения механически — каждое решение принимай ты.
145
+ - Задавать вопросы без блокировки и продолжать работу до ответа.
146
+ - Сохранять или редактировать ревью вне `docs/reviews/`.
147
+ - Перечислять выполненные пункты плана или давать общий отчёт о проделанной работе.
@@ -1,34 +1,32 @@
1
1
  ---
2
2
  name: eda-review
3
- description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл) с обязательной сверкой с планом работ из `docs/plans/`. Если план не указан и его нельзя однозначно определить, спрашивает путь к плану до ревью. Перед ревью читает `docs/rules.md` и `docs/arch.md`. Формирует ревью только по проблемам: ошибки, недоделки, неточности, нарушения правил/архитектуры, риски и недостающие тесты. Не перечисляет выполненную работу. Сохраняет в docs/reviews/. Всегда запускает параллельные специализированные субагентные проверки: выполнение плана, следование архитектуре, следование правилам; проверка качества кода включается настройкой `review.include_code_quality: true` в `docs/settings.yaml`. Кросс-CLI (Claude ↔ Codex) включается флагом `strict` или настройкой `defaults.strict: true`. Не правит код — это `eda-fix-by-review`.'
3
+ description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл) с обязательной сверкой с планом работ из `docs/plans/`. Если план не указан и его нельзя однозначно определить, спрашивает путь к плану до ревью. Перед ревью читает `docs/rules.md` и `docs/arch.md`. Формирует ревью только по проблемам, сохраняет в `docs/reviews/` и в обычном режиме передаёт файл в `eda-review-check` для мета-проверки субагентами. Флаг `draft` сохраняет только черновое ревью без субагентов. Кросс-CLI включается флагом `strict` или настройкой `defaults.strict: true`. Не правит код — это `eda-fix-by-review`.'
4
4
  ---
5
5
 
6
6
  # Скил: Ревьюер (eda-review)
7
7
 
8
- Делаешь ревью изменений: сверяешь diff с планом работ, правилами и архитектурой, пишешь только найденные проблемы, ставишь оценку, сохраняешь файл. Каждый пункт начинаешь с короткого человеческого объяснения риска, без технической перегрузки; файлы, строки, детали кода и способ исправления даёшь ниже в блоке «Технические детали». Не перечисляешь, что выполнено хорошо или без замечаний. Затем проверяешь ревью параллельными специализированными агентами; в `strict` ещё и через соседний CLI. После каждой проверки **сам корректируешь** своё ревью: что-то добавляешь, что-то убираешь, что-то переформулируешь.
8
+ Делаешь ревью изменений: сверяешь diff с планом работ, правилами и архитектурой, пишешь только найденные проблемы, ставишь оценку, сохраняешь файл. Каждый пункт начинаешь с короткого человеческого объяснения риска, без технической перегрузки; файлы, строки, детали кода и способ исправления даёшь ниже в блоке «Технические детали». Не перечисляешь, что выполнено хорошо или без замечаний. Затем в обычном режиме запускаешь `eda-review-check`, который проверяет ревью параллельными специализированными агентами; в `strict` он добавляет соседний CLI. В `draft` останавливаешься сразу после сохранения черновика.
9
9
 
10
- ## Режимы вызова
10
+ ## Режим запуска
11
11
 
12
- - Обычный: `eda-review` этапы 1–3 + финал. Кросс-CLI не запускается.
13
- - Строгий: `eda-review strict` — обычный режим + кросс-CLI соседним агентом + допил.
12
+ Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
14
13
 
15
- Если в `docs/settings.yaml` указано `defaults.strict: true`, строгий режим включён по умолчанию. Явное указание пользователя в текущем сообщении важнее настройки: `strict` включает строгий режим, `normal` / `без strict` / `без строгого режима` выключает его для текущего запуска.
14
+ Дефолты: `defaults.strict: false`, `review.include_code_quality: true`.
16
15
 
17
- ## Вход из сообщения пользователя
16
+ | Настройка | Значения | Аргументы в сообщении |
17
+ |---|---|---|
18
+ | `defaults.strict` | `true`, `false` | `strict`; выключение: `normal`, `без strict`, `без строгого режима` |
19
+ | `review.include_code_quality` | `true`, `false` | «проверь качество кода»; выключение: «без quality», «без проверки качества» |
18
20
 
19
- Текст рядом с вызовом скилла в текущем сообщении пользователя главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
21
+ `strict` добавляет кросс-CLI соседним агентом. `review.include_code_quality: true` добавляет `quality-check` в обычное мета-ревью.
20
22
 
21
- Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
23
+ Флаг `draft` отключает весь этап `eda-review-check`: сохрани ревью со `status: draft`, `meta_reviewers: []`, покажи путь и оценку, затем остановись. `draft` важнее `strict`: если пользователь написал оба режима, задай `AskUserQuestion`, потому что требования противоречат друг другу.
22
24
 
23
- ## Настройки проекта
24
-
25
- Перед выбором режима и набора проверок прочитай `docs/settings.yaml`, если файл есть.
25
+ ## Вход из сообщения пользователя
26
26
 
27
- Если файла нетиспользуй значения по умолчанию:
28
- - `defaults.strict: false`
29
- - `review.include_code_quality: true`
27
+ Текст рядом с вызовом скилла в текущем сообщении пользователя главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
30
28
 
31
- Прямое указание пользователя в текущем сообщении важнее `docs/settings.yaml`: `strict` включает строгий режим, `normal` / `без strict` выключает его; «проверь качество кода» включает quality-проверку, «без quality» / «без проверки качества» выключает её для текущего запуска.
29
+ Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
32
30
 
33
31
  ## Главные правила
34
32
 
@@ -36,37 +34,17 @@ description: 'Ревью изменений (незакоммиченный diff
36
34
  2. **Интерактивные вопросы** — по разделу ниже. Если контекст понятен, не спрашивай.
37
35
  3. **Не правишь код.** Только ревью. Запись только в `docs/reviews/`.
38
36
  4. **План работ обязателен для ревью выполненных изменений.** Если путь к плану не указан в запросе и его нельзя однозначно определить из diff/ссылок, спроси путь к файлу плана и остановись до ответа. Не подставляй «последний план» наугад.
39
- 5. **Мета-ревью специализированными агентами — обязательно**, без флага: проверка выполнения плана, проверка архитектуры, проверка правил. Если включена проверка качества кода — добавь `quality-check` тем же batch. Кросс-CLI — только в `strict`.
37
+ 5. **Мета-ревью специализированными агентами — обязательно в normal/strict**, но выполняется отдельным скиллом `eda-review-check`. В `draft` мета-ревью не запускается.
40
38
  6. **Главный ревьюер — ты.** Мета-ревьюеры дают подсказки; решение — добавить, убрать или оставить пункт — за тобой. Не вставляй чужие пункты механически.
41
39
  7. **Простой язык** в формулировках замечаний и рекомендаций. Технические термины — только если без них нельзя, и сразу с пояснением.
42
40
  8. **Ревью содержит только проблемы.** Не пиши отчёт о выполненной работе, список успешно сделанных пунктов, похвалу или нейтральное перечисление изменений. В файл попадают только ошибки, недоделки, неточности, спорные решения, нарушения правил/архитектуры, риски и недостающие проверки. Если проблем нет, напиши коротко: «Явных проблем не найдено», без пересказа diff.
43
41
  9. **Формат файла ревью — Markdown-блоки по шаблону из этапа 2.** Проблемы сверки с планом, каждое замечание и рекомендации пиши отдельными блоками с подзаголовками. Внутри каждого пункта сначала идёт основная часть простым языком, затем блок `Технические детали`.
44
- 10. **Основная часть замечания — главный ответ.** Пиши 24 коротких абзаца: что происходит, почему это проблема, какой практический риск, когда риск проявится. Не начинай с имён классов, методов, строк, SQL, DTO, конфигов и внутренних деталей.
42
+ 10. **Основная часть замечания — главный ответ.** Пиши 13 коротких абзаца, и в эти же абзацы включай весь человеческий верх пункта: короткий контекст, понятный без чтения плана, diff и истории задачи; что происходит или что не подтверждено; почему это важно, какой практический риск и когда он проявится. Не начинай с имён классов, методов, строк, SQL, DTO, конфигов и внутренних деталей.
45
43
  11. **Технические детали — ниже основной части.** Там укажи тип, рекомендацию, файлы/строки, что в коде подтверждает проблему, общий подход к исправлению и конкретные шаги. Если деталь не помогает понять или исправить проблему — не пиши её.
46
44
 
47
45
  ## Стиль замечаний
48
46
 
49
- Пиши так, чтобы первый экран пункта можно было прочитать без глубокого знания кода. Хороший пункт похож на короткое объяснение ревьюера человеку:
50
-
51
- ```markdown
52
- ### 1. Может быть слишком много запросов во внешний сервис
53
-
54
- Сейчас проверка идёт по одному ответу за раз: один ответ в нашей системе — один запрос во внешний сервис.
55
-
56
- Если таких ответов 50, задача может сделать 50 запросов подряд. У внешнего сервиса на такие методы обычно есть ограничения по частоте. Если общая защита от лимитов реально разруливает это снаружи, пункт можно ослабить. Но по самому PR этого не видно.
57
-
58
- Риск такой: внешний сервис начнёт отвечать ошибками, а ответы в нашей системе продолжат висеть «на проверке».
59
-
60
- Технические детали:
61
-
62
- - **Тип:** `performance`
63
- - **Рекомендация:** `править обязательно`
64
- - **Где:** `path/to/file.ts:42` — цикл с запросом на каждый ответ.
65
- - **Как исправить:** добавить батчинг, ограничение параллелизма или явную обработку rate limit.
66
- - **Тесты:** проверить несколько ответов, ошибку внешнего сервиса и повторный запуск задачи.
67
- ```
68
-
69
- Это ориентир по стилю, а не текст для копирования. Не растягивай пункт: основная часть должна быть короче технических деталей или сопоставима с ними, без канцелярита и без пересказа всего diff.
47
+ Пиши так, чтобы первый экран пункта можно было прочитать без глубокого знания кода и без знания плана, diff или истории задачи: в 1–3 коротких абзацах объясни контекст, ситуацию, риск и когда он проявится; затем дай `Технические детали`. Не растягивай пункт, не пересказывай весь diff и не начинай с имён классов, методов, строк, SQL, DTO, конфигов.
70
48
 
71
49
  ## Интерактивные вопросы
72
50
 
@@ -105,7 +83,7 @@ description: 'Ревью изменений (незакоммиченный diff
105
83
 
106
84
  Каждое замечание должно быть самостоятельным блоком:
107
85
  - заголовок с номером и коротким смыслом;
108
- - основная часть простым языком: контекст, проблема и риск без привязки к конкретному коду;
86
+ - основная часть простым языком: 1–3 коротких абзаца, которые включают контекст, проблему и риск без привязки к конкретному коду;
109
87
  - `Технические детали`: тип, рекомендация, конкретные файлы/строки, что именно в коде подтверждает проблему, как исправить и какие тесты добавить или обновить.
110
88
 
111
89
  Поставь оценку 0–100 (100 — идеально, 0 — переделывать).
@@ -117,7 +95,7 @@ description: 'Ревью изменений (незакоммиченный diff
117
95
  title: <заголовок>
118
96
  date: <YYYY-MM-DD HH:MM>
119
97
  target: <git diff HEAD | main...HEAD | path | PR#>
120
- mode: <normal | strict>
98
+ mode: <draft | normal | strict>
121
99
  score: <0..100>
122
100
  status: draft
123
101
  meta_reviewers: []
@@ -135,7 +113,7 @@ meta_reviewers: []
135
113
 
136
114
  ### 1. <недоделка, отклонение или непроверенный пункт>
137
115
 
138
- <24 коротких абзаца: что требовал план, что не сделано или не подтверждено, почему это важно. Без имён файлов, строк и внутренних деталей в начале пункта.>
116
+ <13 коротких абзаца: короткий контекст, понятный без плана, diff и истории задачи; что требовал план; что не сделано или не подтверждено; почему это важно, какой риск и когда он проявится. Без имён файлов, строк и внутренних деталей в начале пункта.>
139
117
 
140
118
  Технические детали:
141
119
 
@@ -150,7 +128,7 @@ meta_reviewers: []
150
128
 
151
129
  ### 1. <короткий заголовок проблемы>
152
130
 
153
- <24 коротких абзаца: что происходит, почему это проблема, какой практический риск, когда он проявится. Без технической перегрузки и без пересказа diff.>
131
+ <13 коротких абзаца: короткий контекст, понятный без плана, diff и истории задачи; что происходит; почему это проблема; какой практический риск и когда он проявится. Без технической перегрузки и без пересказа diff.>
154
132
 
155
133
  Технические детали:
156
134
 
@@ -173,77 +151,19 @@ meta_reviewers: []
173
151
 
174
152
  Покажи путь.
175
153
 
176
- ### 3. Мета-ревью специализированными агентами (параллельно)
177
- Запусти **в одном сообщении и одним batch** агентов с разными ролями. В интерактивном Codex это означает субагентов, а не отдельные процессы `codex exec`. Базовые три роли обязательны всегда. Если включена проверка качества кода, в тот же batch добавь четвёртого агента `quality-check`. Не запускай сначала часть агентов, не жди их ответы и не запускай остальных позже: все проверки должны стартовать до чтения любого результата.
178
-
179
- Роли агентов:
180
- - `plan-check`: проверяет, что реализация действительно выполнила `$PLAN_FILE`, включая частичные пункты, пропущенные требования, лишние отклонения и недостающие проверки.
181
- - `architecture-check`: проверяет следование `docs/arch.md`, границы модулей, контракты, зависимости и соответствие существующим архитектурным решениям.
182
- - `rules-check`: проверяет следование `docs/rules.md`, локальным запретам, обязательным командам, требованиям к тестам, миграциям, документации и процессу.
183
- - `quality-check`: запускай только если `review.include_code_quality: true` или пользователь явно попросил качество кода. Проверяет качество реализации: читаемость, сложность, дублирование, имена, размер и ответственность функций/классов, сцепление модулей, поддерживаемость и соответствие локальному стилю. Quality-замечания помечай типом `quality`; по умолчанию рекомендация `на усмотрение автора`, кроме случаев, где сложность, дублирование или неясная структура реально создают риск багов, тестовых пробелов или дорогого сопровождения.
184
-
185
- Модели:
186
- - Claude Code: запускай все роли через `Agent` tool на `model: "sonnet"`.
187
- - Codex interactive: если доступен инструмент субагентов (`spawn_agent` или аналог), запускай все роли через него на `gpt-5.3-codex`; не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны.
188
- - Codex exec / неинтерактивный fallback: если инструмента субагентов нет, запускай роли через параллельные `codex exec --model gpt-5.3-codex` одной Bash-командой с `&` и общим `wait`.
189
- - Если нужный идентификатор недоступен, возьми ближайшую code-capable модель того же уровня. Не используй быструю слабую модель для этих проверок: они должны читать diff, план, правила, архитектуру и релевантный код.
154
+ Если режим `draft` не запускай субагентов и не вызывай `eda-review-check`; сразу переходи к финалу draft.
190
155
 
191
- Каждому дай путь к файлу ревью, `$TARGET`, `$PLAN_FILE`, `docs/rules.md`, `docs/arch.md`, `docs/settings.yaml`, связанный research при наличии. Каждый агент должен читать не только ревью, но и фактический diff/код, достаточный для проверки своей роли.
192
-
193
- Формат ответа агентов:
194
- - `+` какую проблему добавить в ревью;
195
- - `−` что убрать как неверное или недоказанное;
196
- - `~` что переформулировать;
197
- - `?` что невозможно проверить и почему.
198
-
199
- Для `plan-check` добавь явную инструкцию: «Если `$PLAN_FILE` не передан или файл не найден, верни только `? план не проверен: нужен путь к файлу`; не пытайся угадывать план.»
200
-
201
- Когда все агенты ответили: прочитай ответы, **сам реши**, что применять. Добавляй только подтверждённые проблемы; предложения вида «добавить, что пункт выполнен» отклоняй как неформат ревью. Внеси правки в файл ревью. В разделе `## Изменения после мета-ревью` запиши:
202
-
203
- ```markdown
204
- ### После plan-check / architecture-check / rules-check / quality-check
205
- - **+ Добавлено:** <короткий список>
206
- - **~ Изменено:** <короткий список>
207
- - **− Убрано:** <короткий список>
208
- - **Отклонено:** <короткий список с причиной>
209
- ```
210
-
211
- Поменяй `status: draft` → `meta-reviewed`, в `meta_reviewers` добавь `plan-check`, `architecture-check`, `rules-check`, а если запускался — `quality-check`, и фактические модели, например `gpt-5.3-codex` или `sonnet`. Если оценка после корректировок изменилась — обнови `score`.
212
-
213
- ### 4. Кросс-CLI: отдать соседнему агенту — только в `strict`
214
- Обычный режим — пропусти этап 4, иди на финал. `status: meta-reviewed` оставь как есть.
215
-
216
- В `strict`: отдай файл соседнему агенту через `Bash`. Если ты в Claude Code — запускай Codex CLI:
217
-
218
- ```bash
219
- codex exec "Прочитай $REVIEW_FILE, $TARGET, $PLAN_FILE, docs/rules.md, docs/arch.md, связанный research при наличии. Затем глубоко проверь ревью по плану, правилам, архитектуре и релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: какие проблемы добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Не предлагай перечислять выполненную работу. Формат: '+', '−', '~', '?'." > "${REVIEW_FILE%.md}_cli_meta.md"
220
- ```
221
-
222
- Если ты в Codex — запускай Claude CLI с теми же требованиями глубины:
223
-
224
- ```bash
225
- claude -p "Прочитай $REVIEW_FILE, $TARGET, $PLAN_FILE, docs/rules.md, docs/arch.md, связанный research при наличии. Затем глубоко проверь ревью по плану, правилам, архитектуре и релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: какие проблемы добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Не предлагай перечислять выполненную работу. Формат: '+', '−', '~', '?'." > "${REVIEW_FILE%.md}_cli_meta.md"
226
- ```
227
-
228
- Соседней CLI нет — `AskUserQuestion`: завершить как есть или прервать.
229
-
230
- Прочитай ответ, **сам реши**, что применять. Допиши в `## Изменения после мета-ревью`:
231
-
232
- ```markdown
233
- ### После соседнего CLI (codex|claude)
234
- - **+ Добавлено:** ...
235
- - **− Убрано:** ...
236
- - **Отклонено:** ...
237
- ```
156
+ ### 3. Проверить ревью через `eda-review-check`
157
+ В normal/strict запусти `eda-review-check` для `$REVIEW_FILE` и передай выбранный режим (`normal` или `strict`). Именно `eda-review-check` запускает `plan-check`, `architecture-check`, `rules-check` и при включённой настройке `quality-check`, обновляет `status`, `meta_reviewers`, `score` и раздел `## Изменения после мета-ревью`.
238
158
 
239
- Добавь в `meta_reviewers` имя CLI. `status: meta-reviewed` `final`.
159
+ Требования к средам остаются частью контракта ревью: Codex interactive: если доступен инструмент субагентов (`spawn_agent` или аналог), используй его; не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны. Codex exec / неинтерактивный fallback допустим только как fallback и описан в `eda-review-check`. Кросс-CLI выполняет только `eda-review-check strict`.
240
160
 
241
- ### 5. Финал
242
- Короткое сообщение: режим (`normal` или `strict`), путь к файлу ревью, итоговая оценка, сколько пунктов «править обязательно» / «на усмотрение». Не пересказывай выполненную работу. Если режим был обычный — добавь строку «кросс-CLI не запускался; для проверки соседним агентом — `eda-review strict`». Что предлагаешь дальше — `eda-fix-by-review` для применения или `eda-commit` если оценка приемлема.
161
+ ### 4. Финал
162
+ Короткое сообщение: режим (`draft`, `normal` или `strict`), путь к файлу ревью, итоговая оценка, сколько пунктов «править обязательно» / «на усмотрение». Не пересказывай выполненную работу. Если режим был `draft` — добавь строку «мета-ревью не запускалось; для проверки — `eda-review-check <review>`». Если режим был обычный — добавь строку «кросс-CLI не запускался; для проверки соседним агентом — `eda-review-check strict <review>`». Что предлагаешь дальше — `eda-fix-by-review` для применения или `eda-commit` если оценка приемлема.
243
163
 
244
164
  ## Чего НЕ делать
245
165
  - Править код. Это `eda-fix-by-review`.
246
- - Пропускать мета-ревью специализированными агентами (это часть обычного режима, не под флагом).
166
+ - Пропускать `eda-review-check` в normal/strict. Исключение явный режим `draft`.
247
167
  - Запускать мета-ревьюеров частями: сначала 1–2 агента, потом остальных. Все обязательные проверки стартуют сразу.
248
168
  - Пропускать кросс-CLI молча в `strict` (если соседней CLI нет — спроси через `AskUserQuestion`).
249
169
  - Вставлять чужие предложения механически — каждое решение принимай ты.
@@ -7,13 +7,6 @@ description: 'Создаёт roadmap-файл по продуктовой или
7
7
 
8
8
  Создаёшь roadmap: список будущих задач по продуктовой или технической теме. Roadmap отвечает на вопрос «что нужно сделать и зачем», но не отвечает «как именно реализовывать».
9
9
 
10
- ## Режимы вызова
11
-
12
- | Режим | Запуск | Что делает |
13
- |---|---|---|
14
- | Обычный | `eda-roadmap <тема>` | Создаёт roadmap-файл в `docs/roadmaps/`. |
15
- | Из текста | `eda-roadmap <список идей или требований>` | Нормализует вход в ясный список задач без деталей реализации. |
16
-
17
10
  ## Вход из сообщения пользователя
18
11
 
19
12
  Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, цель, аудиторию, ограничения, примерный горизонт roadmap, уже названные задачи и прямые указания.
@@ -62,22 +55,9 @@ description: 'Создаёт roadmap-файл по продуктовой или
62
55
 
63
56
  ### 3. Сформировать задачи
64
57
 
65
- Собери задачи в список. Для каждой задачи:
66
- - дай короткое название;
67
- - добавь 1–2 предложения описания, если без них задача может быть понята по-разному;
68
- - опиши результат на уровне поведения или возможности, а не реализации;
69
- - не добавляй подзадачи с техническими шагами;
70
- - не добавляй оценки сроков, если пользователь не просил.
71
-
72
- Хорошие формулировки:
73
- - «Аутентификация через email, ВК и Яндекс. Пользователь может войти удобным способом и восстановить доступ без обращения в поддержку.»
74
- - «Личный кабинет пользователя. Пользователь видит свои данные, статус подписки и основные действия по аккаунту в одном месте.»
75
- - «Базовая модерация контента. Команда может скрывать спорные материалы и видеть причину модерационного решения.»
76
-
77
- Плохие формулировки:
78
- - «Подключить `passport-yandex`, добавить callback route и таблицу OAuth-профилей.»
79
- - «Создать `auth.service.ts`, миграцию и e2e-тесты.»
80
- - «Реализовать через Redis и очередь фоновых задач.»
58
+ Собери список задач. Для каждой дай короткое название, 1–2 предложения описания при необходимости и результат на уровне поведения или возможности, а не реализации. Не добавляй технические подзадачи и оценки сроков, если пользователь не просил.
59
+
60
+ Хорошо: «Аутентификация через email, ВК и Яндекс. Пользователь может войти удобным способом и восстановить доступ без обращения в поддержку.» Плохо: «Подключить `passport-yandex`, добавить callback route и таблицу OAuth-профилей.»
81
61
 
82
62
  ### 4. Сохранить файл
83
63
 
@@ -36,12 +36,7 @@ description: 'Отправляет ревью из `docs/reviews/...`, выбр
36
36
  `gh --version` + `gh auth status`. Если `gh` отсутствует или не авторизован — остановись, сообщи и выйди (это пользователю нужно решить).
37
37
 
38
38
  ### 2. Выбрать ревью
39
- Сначала разбери текст рядом с вызовом:
40
- - если указан путь к ревью — используй его как `$REVIEW_FILE`;
41
- - если указано название ревью или часть названия — найди совпадение в `docs/reviews/`;
42
- - если написано «последнее ревью» — возьми самый новый файл из `docs/reviews/`;
43
- - если указан PR (`PR 12`, `#12`) — сохрани номер как целевой PR;
44
- - если указан тип отправки (`comment`, `review-comment`, `approve`, `request-changes`) — сохрани его как намерение.
39
+ Сначала разбери текст рядом с вызовом: путь к ревью, название или часть названия, «последнее ревью», PR (`PR 12`, `#12`) и тип отправки (`comment`, `review-comment`, `approve`, `request-changes`).
45
40
 
46
41
  Если найдено ровно одно ревью — продолжай без вопроса. Если найдено несколько одинаково подходящих ревью — `AskUserQuestion` со списком вариантов. Если входа нет — `AskUserQuestion` со списком последних файлов из `docs/reviews/`. Если `docs/reviews/` отсутствует или пуста — остановись с понятным вопросом или статусом `blocked: нужно ревью`. Прочитай файл целиком: оценку, замечания, рекомендации.
47
42
 
@@ -51,10 +46,7 @@ description: 'Отправляет ревью из `docs/reviews/...`, выбр
51
46
  Если PR нет — `AskUserQuestion`: «PR ещё нет: создать PR из текущей ветки / указать номер существующего PR / прервать». При создании используй `gh pr create` (заголовок и тело — по последним коммитам ветки).
52
47
 
53
48
  ### 4. Выбрать тип отправки
54
- Предложи вариант на основе оценки в ревью:
55
- - score ≥ 80 → предложить **approve** (с комментарием).
56
- - score < 50 → предложить **request-changes**.
57
- - иначе → **review-comment** (review без статуса).
49
+ Предложи вариант по оценке: score 80 → **approve** с комментарием; score < 50 → **request-changes**; иначе → **review-comment**.
58
50
 
59
51
  Если тип отправки указан в тексте и это `comment` или `review-comment`, используй его без дополнительного выбора, если нет противоречий с ревью. `approve` и `request-changes` всегда подтверждай через `AskUserQuestion`, даже если они указаны inline. Если тип не указан или противоречит ревью — `AskUserQuestion`: подтвердить предложенный тип / выбрать другой / отправить как обычный комментарий PR (вне review).
60
52