- Зачем: два плейбука оркестрации разошлись, а из них на практике нужно только независимое ревью моделью другого семейства. - Что: линзы для ревьюера (по задаче, по коду, форма и вкус, вычитание, план), общий мандат и перепроверка; разбор находок остаётся у автора. Механика запуска вынесена в адаптеры: T3 Code, codex exec, claude -p. Следующие круги ревью идут продолжением сессии того же ревьюера. Старые плейбуки пока не удалены. - Проверка: запуск, запись отчёта и продолжение сессии прогнаны на codex-cli 0.163.0, Claude Code 2.1.302 и в T3 Code; два круга ревью скилла (gpt-6.1-sol, gpt-6-astra), находки исправлены; ссылки и YAML проверены скриптом. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
13 KiB
name, description
| name | description |
|---|---|
| cross-review | Перекрёстное ревью своей работы моделью другого семейства (Claude ↔ Codex): линзы для ревьюера, способы запуска и разбор находок самим автором. Применяй, когда пользователь просит независимое или перекрёстное ревью, ревью другой моделью, или когда готовое изменение либо план стоит показать чужим глазам до сдачи. |
Перекрёстное ревью
Ты автор изменения и остаёшься его владельцем. Ревьюер из другого семейства моделей добавляет то, чего у тебя нет: свежая сессия не знает твоих рассуждений, а другое семейство замечает иные классы ошибок. Его отчёт — набор утверждений для проверки. Решения по ним принимаешь ты.
Скилл даёт линзы, способы запуска и опыт разбора находок. Сколько линий запускать, какие линзы брать и нужна ли перепроверка, решай по задаче и цене ошибки.
Что передать ревьюеру
Создай обменный каталог вне репозитория (mktemp -d) и напиши в нём
короткое поручение brief.md. Если переменные shell не сохраняются между
вызовами, дальше подставляй путь каталога целиком. В поручении:
- что проверять: точная версия и способ её получить — diff-команда от точки отсчёта, коммиты или пути. Ревьюер должен отличить проверяемое от посторонних правок в дереве;
- постановка: путь к задаче, спеке или критериям приёмки. Без неё линза «по задаче» работает вслепую — так и напиши;
- команды проверки и ожидаемый результат (например, число тестов);
- места, где ты сам не уверен — вопросами, без своих обоснований: пересказ твоей логики лишает ревьюера независимости;
- префикс находок и путь отчёта (
REPORT) — свои у каждого ревьюера.
Поручение собирается конкатенацией: cat brief.md prompts/mandate.md prompts/lens-….md > prompt.md. Файлы prompts/ лежат в каталоге этого
скилла — там, откуда прочитан этот файл. Подставляй их как есть.
Линзы
Линза — фокус ревьюера. Выбирай те, где в этом изменении правда может прятаться ошибка. Два ревьюера параллельно, с разными линзами, видят больше: у каждого свой контекст, и фокус не размывается. Один ревьюер с несколькими линзами дешевле.
lens-spec.md— по задаче: сделано ли то, что просили, что упущено, что добавлено сверх, можно ли пройти критерии, не решив задачу.lens-code.md— по коду: корректность, инварианты, регрессии, безопасность, честность тестов.lens-shape.md— форма и вкус: эскиз решения до чтения diff, глубина модулей, запахи кода по Фаулеру.lens-subtract.md— вычитание: что можно удалить без потери нужного поведения. Особенно полезна после нескольких кругов исправлений и для моделей, склонных раздувать код.lens-plan.md— план или спека до реализации: документ судится на своём уровне.
Ревьюеру нужна сильная модель с высокой глубиной рассуждения. У слабой модели больше ложных находок, и их разбор съедает экономию. Конкретные модели указаны в адаптерах запуска.
Как запустить
Способ запуска зависит от среды. Механика каждого — в отдельном файле:
- T3 Code — если доступны инструменты
orchestrator_capabilitiesиdelegate_task. Удобнее всего: приложение само следит за задачей и будит тебя по завершении. - Codex из командной строки — когда автор Claude или другая модель.
- Claude из командной строки — когда автор Codex или другая модель.
Общее для всех способов:
- ревьюер получает свежую сессию, а не копию твоей истории;
- ревьюер может то же, что ты: запускать тесты, ходить в сеть, создавать временные файлы. Исходники и состояние защищает мандат в поручении. Песочница только для чтения оставила бы ревьюеру одно чтение кода;
- перед запуском сними
git status --porcelain, после — сверь: дерево должно остаться прежним; - пока ревьюер работает, проверяемые файлы не меняй, иначе он проверит смесь двух версий. Правки, которые уже ясны, готовь рядом, во временном каталоге;
- если ревьюеров или кругов несколько, веди в обменном каталоге короткий реестр: кто проверял, какую версию, id сессии или задачи, пути отчётов, открытые ID. Он переживёт сжатие контекста и пригодится для отчёта;
- код уходит к другому поставщику моделей. Просьба пользователя о перекрёстном ревью покрывает проверяемое изменение и нужный ему контекст; секреты и посторонние материалы в поручение не клади.
Разбор находок
Разбирает находки автор: у тебя контекст кода и задачи. Пользователю нужен итог в отчёте, а не участие в каждом споре.
По каждой находке проверь три вещи:
- Верна ли она фактически. Воспроизведи сценарий, прочти код, запусти тест. Ревьюеры ошибаются уверенно: выдумывают API, путают версии, приписывают коду то, чего в нём нет, требуют защиты от невозможных состояний. Уверенный тон — не доказательство.
- Применима ли к этому проекту — его контрактам, масштабу, угрозам.
- Соразмерна ли починка риску. Предложенный способ — один из вариантов. Подтверждённый дефект закрывай лучшим путём, какой видишь; отказ от предложенной починки сам дефект не закрывает.
Бывает и обратная ошибка: отмахнуться от неудобной находки. Отклонение с доводом от контракта или теста весит столько же, сколько исправление. Отклонение без довода ничем не лучше пропущенной находки.
Следи за сложностью. Исправление, которое добавляет больше, чем убирает риска, — повод остановиться и поискать путь проще. Замечание о стиле без показанного вреда — не дефект.
Исход каждой находки — один из четырёх:
FIXED— подтверждена и исправлена; названа проверка, которая это показывает (по возможности — тест, воспроизводящий дефект);REJECTED— не подтвердилась или неприменима; приведён довод;OUT_OF_SCOPE— верна, но починка выходит за границы задачи;NEEDS_DECISION— нужен выбор цели, устройства или допустимого риска.
Последние два не решай молча правкой кода: вынеси пользователю с вариантами, их ценой и своей рекомендацией. Если без ответа дальше идти нельзя — спроси сразу, иначе — в итоговом отчёте.
Следующие круги
Дороже всего в ревью — независимый контекст, который ревьюер набирает в первом заходе: устройство кода, постановка, свои опыты. Набирается он один раз. Все следующие круги отправляй в ту же сессию ревьюера:
- узкая перепроверка — когда исправления нетривиальны или отклонение
могут оспорить. Отдай
prompts/recheck.md, путь к своим резолюциям и что изменилось после ревью (diff-команду или список файлов). Ревьюер проверяет только свои находки и оценивает, не вышла ли починка шире нужного; - полный проход по новой версии — когда изменения вышли за пределы починок. Опиши, что изменилось, и попроси пройти новую версию теми же линзами; ID прежних находок сохраняются.
Свежий ревьюер нужен, когда прежний контекст мешает: ревьюер держится за свои прошлые выводы, его сессия переполнена, его отчёт оказался слабым или нужен взгляд другой модели. Если способ запуска не умеет продолжать сессию, свежему ревьюеру дай пути к исходному поручению, отчёту и резолюциям, а сохранённые прежним ревьюером скрипты и фикстуры он возьмёт по путям из отчёта.
Если спор повторяется без новых фактов, ещё один круг ничего не даст: реши сам с доводом или вынеси пользователю.
Отчёт пользователю
Коротко и обычными словами:
- кто смотрел (модель, глубина, способ запуска), какую версию и какими линзами;
- находки — по строке: ID, суть, исход; счётчики;
- что исправлено и чем это проверено, что отклонено и почему;
- что вынесено на решение пользователя;
- пути к полным отчётам; затраты времени и денег, если они известны.