docs(claude-playbook): перенесены находки зеркального codex-плейбука
- Зачем:
- зеркальный codex-subagent-playbook ушёл вперёд по договорам ревью и
экономии контекста координатора; согласованный с пользователем список
находок перенесён в этот скилл.
- Что:
- SKILL.md: установка «оптика, не конвейер», гейт и ручки эскалации для
субагентов, саморевью исполнителя, шкала риска ревью с линзами
TASK/CODE, статусы триажа с предохранителем кругов, постепенная
приёмка с саморефлексией, раздел «Сбои координации».
- prompts/: устойчивые ID находок, четыре статуса триажа, резолюции — в
файл отчёта вместо тикета (лечит эхо файла задачи); новые
result-contract.md и runtime-language.md.
- prompt-templates.md: файлы линий ревью, сборка промптов с хвостом
языка, вердикт перепроверки из task-notification; lessons.md — гейт
на дистилляцию и датированная отмена урока про доводы в файле задачи.
- Проверка:
- проверка относительных ссылок и git diff --check — чисто.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5b2db5bd7f
commit
fdf744e578
8 files changed
+235
-62
No files matched your search
@@ -3,14 +3,17 @@ name: claude-subagent-playbook
|
|||||||
disable-model-invocation: true
|
disable-model-invocation: true
|
||||||
description: >-
|
description: >-
|
||||||
Конвейер одной задачи со стороны Claude Code: постановка → свежий взгляд →
|
Конвейер одной задачи со стороны Claude Code: постановка → свежий взгляд →
|
||||||
реализация Кодексом → слепое двойное ревью → синтез. Знания, не каркас.
|
реализация Кодексом → ревью по шкале риска (до слепого двойного) →
|
||||||
|
синтез. Знания, не каркас.
|
||||||
---
|
---
|
||||||
|
|
||||||
# Плейбук: одна задача через Кодекса и слепое двойное ревью
|
# Плейбук: одна задача через Кодекса и слепое ревью
|
||||||
|
|
||||||
Ты — **оркестратор** в сессии Claude Code: планируешь, ставишь задачу,
|
Ты — **оркестратор** в сессии Claude Code: планируешь, ставишь задачу,
|
||||||
раздаёшь работу, синтезируешь. Реализацию не пишешь. Это плейбук — знания и
|
раздаёшь работу, синтезируешь. Реализацию не пишешь. Это оптика, а не
|
||||||
приёмы; порядок этапов разумен, но подстраивай под задачу, а не наоборот.
|
обязательный конвейер: своё внимание держи для цели, ограничений, решений,
|
||||||
|
рисков и приёмки — субагенты выясняют и выполняют, решаешь ты. Порядок
|
||||||
|
этапов разумен, но подстраивай его под задачу, а не наоборот.
|
||||||
|
|
||||||
## Когда применять — и когда нет
|
## Когда применять — и когда нет
|
||||||
|
|
||||||
@@ -33,7 +36,10 @@ description: >-
|
|||||||
чтение логов) отдавай субагенту **до её начала**: изнутри она всегда
|
чтение логов) отдавай субагенту **до её начала**: изнутри она всегда
|
||||||
выглядит «ещё на один шаг». Стоп-кран: **сам — максимум один заход**
|
выглядит «ещё на один шаг». Стоп-кран: **сам — максимум один заход**
|
||||||
(одна команда с коротким выводом по единственной гипотезе); не
|
(одна команда с коротким выводом по единственной гипотезе); не
|
||||||
подтвердилось — делегируй. Механику (правки файлов по готовым решениям,
|
подтвердилось — делегируй. Перед запуском любого субагента назови его
|
||||||
|
вклад: защита контекста, свежий взгляд, специализация, параллельность
|
||||||
|
или отдельная среда; не можешь назвать — делай сам или продолжай
|
||||||
|
существующий тред. Механику (правки файлов по готовым решениям,
|
||||||
скрипты, вёрстку) — `fast-worker`'у: твоё в них только короткий список
|
скрипты, вёрстку) — `fast-worker`'у: твоё в них только короткий список
|
||||||
решений. **Индекс — у тебя, полезная нагрузка — файлами между
|
решений. **Индекс — у тебя, полезная нагрузка — файлами между
|
||||||
агентами**: вердикты, отчёты и промпты живут в `$SCRATCH` (обменный
|
агентами**: вердикты, отчёты и промпты живут в `$SCRATCH` (обменный
|
||||||
@@ -50,7 +56,8 @@ description: >-
|
|||||||
пишет в целом лучше, но верхнеуровнево планирует хуже — поэтому
|
пишет в целом лучше, но верхнеуровнево планирует хуже — поэтому
|
||||||
декомпозиция и постановка остаются у тебя. Механика вызова —
|
декомпозиция и постановка остаются у тебя. Механика вызова —
|
||||||
[references/codex-exec.md](references/codex-exec.md).
|
[references/codex-exec.md](references/codex-exec.md).
|
||||||
- **Ревьюеры** — два, **разных родословных**, слепые друг к другу:
|
- **Ревьюеры** — до двух (шкала — этап 4), **разных родословных**, слепые
|
||||||
|
друг к другу:
|
||||||
Claude-субагент (`adversarial-reviewer`; нет в среде — `deep-reasoner`
|
Claude-субагент (`adversarial-reviewer`; нет в среде — `deep-reasoner`
|
||||||
или скептический `general-purpose`) и Codex **свежим тредом**, не тем,
|
или скептический `general-purpose`) и Codex **свежим тредом**, не тем,
|
||||||
что писал код.
|
что писал код.
|
||||||
@@ -70,7 +77,10 @@ description: >-
|
|||||||
- **Модель Claude-субагентов задавай явно**: Опус — рассуждения и ревью,
|
- **Модель Claude-субагентов задавай явно**: Опус — рассуждения и ревью,
|
||||||
Sonnet — механика. Без явной модели субагент наследует Fable, чьи лимиты
|
Sonnet — механика. Без явной модели субагент наследует Fable, чьи лимиты
|
||||||
самые дорогие — держи их для оркестрации (у `deep-reasoner`/`fast-worker`
|
самые дорогие — держи их для оркестрации (у `deep-reasoner`/`fast-worker`
|
||||||
модели пришиты в определениях).
|
модели пришиты в определениях). Две ручки эскалации: не хватило
|
||||||
|
глубины — повышай effort; не хватает качества суждения — повышай модель;
|
||||||
|
после двух слабых результатов подряд — свежий более сильный агент вместо
|
||||||
|
переноса неудачного контекста.
|
||||||
|
|
||||||
## Конвейер
|
## Конвейер
|
||||||
|
|
||||||
@@ -108,29 +118,46 @@ description: >-
|
|||||||
файл отчёта, харнесс будит по завершении; рецепты, ветки и ловушки —
|
файл отчёта, харнесс будит по завершении; рецепты, ветки и ловушки —
|
||||||
[references/codex-exec.md](references/codex-exec.md).
|
[references/codex-exec.md](references/codex-exec.md).
|
||||||
Один писатель в дереве: пока Codex пишет — никто больше (казус с
|
Один писатель в дереве: пока Codex пишет — никто больше (казус с
|
||||||
форвардером — в [references/lessons.md](references/lessons.md)). Готово,
|
форвардером — в [references/lessons.md](references/lessons.md)).
|
||||||
когда Codex вернул отчёт, в дереве нет правок, которых он не называл,
|
После отчёта — **саморевью тем же тредом** (resume, effort medium;
|
||||||
|
заготовка — [references/prompt-templates.md](references/prompt-templates.md)):
|
||||||
|
исполнитель проходит свой diff против критериев как ревьюер и сам чинит
|
||||||
|
найденное, тебе — одна строка «found N, fixed N». Дёшево и снимает часть
|
||||||
|
находок до внешних глаз. Готово, когда Codex вернул отчёт, саморевью
|
||||||
|
пройдено, в дереве нет правок, которых он не называл,
|
||||||
и дешёвая сквозная проверка (если она есть в репо) зелёная: гонял её
|
и дешёвая сквозная проверка (если она есть в репо) зелёная: гонял её
|
||||||
исполнитель по промпту, а если ему она недоступна (docker, стенд) — ты,
|
исполнитель по промпту, а если ему она недоступна (docker, стенд) — ты,
|
||||||
**до запуска ревьюеров**: иначе ревью уйдёт на код, который сквозной
|
**до запуска ревьюеров**: иначе ревью уйдёт на код, который сквозной
|
||||||
прогон ещё поменяет.
|
прогон ещё поменяет.
|
||||||
4. **Два слепых ревью параллельно.** Промпт — **один канонический файл в
|
4. **Ревью реализации — по шкале риска.** Саморевью уже пройдено (этап 3);
|
||||||
`$SCRATCH` на оба ревью** (скелет и обёртки вызова —
|
дальше по цене ошибки: **тривиальное** изменение (до-правка по готовому
|
||||||
|
диагнозу, механика, целиком накрытое детерминированной проверкой) —
|
||||||
|
внешних линий не гоняй, причину пропуска назови одной фразой;
|
||||||
|
**простое, но с заметной ценой ошибки** — один ревьюер другой
|
||||||
|
родословной, чем исполнитель (у нас — Клод при Codex-исполнителе;
|
||||||
|
одиночную линию выбирай по родословной, не по цене); **обычное и
|
||||||
|
сложнее** — два слепых ревью параллельно с разведёнными фокусами: одна
|
||||||
|
линия «по задаче» (соответствие постановке, критериям, границам), другая
|
||||||
|
«по коду» (корректность, инварианты, регрессии, честность тестов) —
|
||||||
|
разность семейств даёт разные находки, разность фокусов страхует от
|
||||||
|
дублирования, когда семейства сходятся. Промпт — **общий блок один на
|
||||||
|
обе линии** плюс крошечный файл линии (линза и префикс ID); собираются
|
||||||
|
два файла с разными путями (скелет и обёртки вызова —
|
||||||
[references/prompt-templates.md](references/prompt-templates.md)): Codex
|
[references/prompt-templates.md](references/prompt-templates.md)): Codex
|
||||||
получает его через stdin, Клод-субагенту в prompt — короткая обёртка
|
получает свой через stdin, Клод-субагенту в prompt — короткая обёртка
|
||||||
«прочитай файл X и выполни; индекс — в файл Y» (не дублируй текст
|
«прочитай файл X и выполни; индекс — в файл Y» (не дублируй текст
|
||||||
промпта в параметре — это второй полный экземпляр в твоём контексте).
|
промпта в параметре — это второй полный экземпляр в твоём контексте).
|
||||||
Содержание: путь к задаче-файлу + фокус (математика/краевые случаи,
|
Содержание: путь к задаче-файлу + фокус и префикс ID линии; мандат,
|
||||||
соответствие критериям, честность тестов, артефакты); мандат и
|
формат индекса с устойчивыми ID и поощрение эмпирических проверок уже
|
||||||
поощрение эмпирических проверок уже в готовом boilerplate. Друг про
|
в готовом boilerplate. Друг про
|
||||||
друга не знают, твои выводы им не пересказывай. Вердикты — файлами с
|
друга не знают, твои выводы им не пересказывай. Вердикты — файлами с
|
||||||
**разными путями**: у Codex это его `-o`-отчёт, Клод-ревьюеру путь и
|
**разными путями**: у Codex это его `-o`-отчёт, Клод-ревьюеру путь и
|
||||||
финальный акт (SendMessage только со строкой VERDICT, счётчиками и
|
финальный акт (SendMessage только со строкой VERDICT, счётчиками и
|
||||||
путём) задаёт готовая обёртка из шаблонов; его idle-уведомления
|
путём) задаёт готовая обёртка из шаблонов; его idle-уведомления
|
||||||
результата не содержат, не жди из них ничего. После
|
результата не содержат, не жди из них ничего. После
|
||||||
ревью сверь дерево (`git status`). Клод-ревьюеру можно поручить смотреть
|
ревью сверь дерево (`git status`). Клод-ревьюеру можно поручить смотреть
|
||||||
артефакты (картинки из ноутбука). Этап закрыт, когда оба вердикта у тебя
|
артефакты (картинки из ноутбука). Этап закрыт, когда вердикты всех
|
||||||
индексами и дерево нетронуто; вердикт без единой находки засчитывай
|
выбранных линий у тебя индексами и дерево нетронуто; вердикт без единой находки засчитывай
|
||||||
только после проверки его лога — работа, не отписка
|
только после проверки его лога — работа, не отписка
|
||||||
(приём — в [references/codex-exec.md](references/codex-exec.md)).
|
(приём — в [references/codex-exec.md](references/codex-exec.md)).
|
||||||
5. **Синтез и триаж.** Сведи вердикты по индексам: пересечения, противоречия.
|
5. **Синтез и триаж.** Сведи вердикты по индексам: пересечения, противоречия.
|
||||||
@@ -142,16 +169,36 @@ description: >-
|
|||||||
«Дословно» — это конкатенация: `cat triage-header.md вердикт-A.md
|
«Дословно» — это конкатенация: `cat triage-header.md вердикт-A.md
|
||||||
вердикт-B.md > fix-prompt.md` Bash'ем (шапка готова в
|
вердикт-B.md > fix-prompt.md` Bash'ем (шапка готова в
|
||||||
`references/prompts/`); Write'ом ты бы переписал те же находки в
|
`references/prompts/`); Write'ом ты бы переписал те же находки в
|
||||||
контекст ещё раз. Свои замечания к триажу — только шапкой. Ты судишь уровнем
|
контекст ещё раз. Статус каждого ID — `FIXED / REJECTED / OUT_OF_SCOPE /
|
||||||
задачи: принять риск / вне скоупа. Повторная проверка — узкая (см.
|
NEEDS_DECISION`; два последних — решения твоего уровня, исполнитель
|
||||||
«Свежесть»); её промпт не пересказывает резолюции — ссылается на файл
|
возвращает их тебе, а не решает молча. Резолюции и доводы он пишет в
|
||||||
отчёта исполнителя. Этап закрыт, когда по каждой находке обоих ревью есть
|
свой файл отчёта, **тикет в триаже не правится**: правка тикета эхом
|
||||||
решение: починено и перепроверено — или отклонено с доводом.
|
вкатывает весь его текст в твой контекст (пожиратель №1 прогона задачи
|
||||||
6. **Финал.** Артефакты проверь **своими глазами** (счётчик тестов, картинки,
|
13), выжимку в тикет перенесёт fast-worker на финале. Свои замечания к
|
||||||
прогон CLI) — ревью не заменяет твою приёмку. Обнови чекбоксы и статус
|
триажу — только шапкой. Ты судишь уровнем задачи: принять риск / вне
|
||||||
задачи-файла, коммит — по `/conventional-commits`, пользователю — выжимку:
|
скоупа. Повторная проверка — узкая (см. «Свежесть»); её промпт не
|
||||||
вердикты, что принято/отклонено, что осталось. Готово, когда чекбоксы
|
пересказывает резолюции — ссылается на файл отчёта исполнителя.
|
||||||
проставлены, дерево чистое после коммита и пользователь получил отчёт.
|
Третий круг триажа — точка вмешательства: доложи пользователю, почему
|
||||||
|
процесс не сходится и что меняешь (постановку, модель/effort,
|
||||||
|
исполнителя, границы); пятый не начинай без явного решения. Повторно
|
||||||
|
поднятая уже отклонённая находка — спор: отдельная узкая проверка
|
||||||
|
усиленным уровнем, не новый общий круг. Этап закрыт, когда у каждого ID
|
||||||
|
обоих ревью есть статус: FIXED и перепроверен, REJECTED с доводом, либо
|
||||||
|
OUT_OF_SCOPE / NEEDS_DECISION закрыт твоим решением.
|
||||||
|
6. **Финал.** В доказательства углубляйся постепенно: состав изменений и
|
||||||
|
сводки ревью → отдельные спорные фрагменты → полный diff, только когда
|
||||||
|
он ограничен и нужен для решения; зелёный журнал не читай, красный
|
||||||
|
отдай исполнителю или разборщику; проверку, доступную только агенту в
|
||||||
|
спецсреде, называй косвенным свидетельством. Ключевые артефакты проверь
|
||||||
|
**своими глазами** (счётчик тестов, картинки, прогон CLI) — ревью не
|
||||||
|
заменяет твою приёмку. Чекбоксы, статус и выжимку резолюций в тикет
|
||||||
|
переносит fast-worker из файла отчёта исполнителя (не твой Write).
|
||||||
|
Коммит — по `/conventional-commits`, пользователю — выжимка: вердикты,
|
||||||
|
что принято/отклонено, что осталось — плюс короткая саморефлексия: что
|
||||||
|
больше всего потратило контекст и что в следующий раз направить файлом
|
||||||
|
или субагентом (метрика: каждый полный артефакт проходит через твой
|
||||||
|
контекст не более одного раза). Готово, когда чекбоксы проставлены,
|
||||||
|
дерево чистое после коммита и пользователь получил отчёт.
|
||||||
|
|
||||||
## Пользователь в петле
|
## Пользователь в петле
|
||||||
|
|
||||||
@@ -167,6 +214,18 @@ description: >-
|
|||||||
teammate-субагентов — шум, а не событие: не докладывай о них пользователю
|
teammate-субагентов — шум, а не событие: не докладывай о них пользователю
|
||||||
и не действуй по ним, если результат уже получен.
|
и не действуй по ним, если результат уже получен.
|
||||||
|
|
||||||
|
## Сбои координации
|
||||||
|
|
||||||
|
- Нет ожидаемого файла или отчёта: один запрос короткого итога в тот же
|
||||||
|
тред; повторная тишина — свежий агент от сохранённых артефактов.
|
||||||
|
- Длинный рассказ пришёл сообщением: попроси сводку с путём к файлу,
|
||||||
|
рассказ дальше не переноси.
|
||||||
|
- Два писателя пересеклись в дереве: стоп обоим, назначь одного владельца,
|
||||||
|
продолжай от проверенного состояния; чужие правки не откатывай не
|
||||||
|
разобравшись.
|
||||||
|
- После финала удали обменный каталог прогона: долговечно только то, что
|
||||||
|
предусмотрено проектом (тикет, коммит, lessons).
|
||||||
|
|
||||||
## Соседние скиллы
|
## Соседние скиллы
|
||||||
|
|
||||||
- `/coordinator-loop` — автономный цикл очереди issue на стороне Codex
|
- `/coordinator-loop` — автономный цикл очереди issue на стороне Codex
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
скилл существует. Журнал накопительный, поэтому дистиллируй: когда урок
|
скилл существует. Журнал накопительный, поэтому дистиллируй: когда урок
|
||||||
поглощён SKILL.md или references, сжимай его запись здесь до строки-факта
|
поглощён SKILL.md или references, сжимай его запись здесь до строки-факта
|
||||||
(дата, что случилось, куда поглощено) — иначе файл растёт бесконечно.
|
(дата, что случилось, куда поглощено) — иначе файл растёт бесконечно.
|
||||||
|
Новые факты прогона дописывай свободно; дистилляцию и правку старых
|
||||||
|
записей согласуй с пользователем — это долговечная эмпирика.
|
||||||
|
|
||||||
## 2026-07-06 — t2-ml-forecast, задача 05 (первый прогон; дистиллировано 2026-07-12)
|
## 2026-07-06 — t2-ml-forecast, задача 05 (первый прогон; дистиллировано 2026-07-12)
|
||||||
|
|
||||||
@@ -27,7 +29,9 @@
|
|||||||
(«Пользователь в петле»), codex-exec (фоновый запуск, раннер).
|
(«Пользователь в петле»), codex-exec (фоновый запуск, раннер).
|
||||||
- Безадресный resume подхватывает чужой тред. Поглощено: codex-exec.
|
- Безадресный resume подхватывает чужой тред. Поглощено: codex-exec.
|
||||||
- Доводы отклонений — в файл задачи (свежий тред продолжает без контекста
|
- Доводы отклонений — в файл задачи (свежий тред продолжает без контекста
|
||||||
предшественника). Поглощено: prompts/triage-header.md.
|
предшественника). Отменено 2026-07-19: доводы — в файл отчёта триажа,
|
||||||
|
свежий тред получает его путём; тикет в триаже не правится (эхо файла
|
||||||
|
задачи, прогон 13). Поглощено: prompts/triage-header.md, SKILL.md 5–6.
|
||||||
- Не поглощено (держать в уме при постановке): правила задачи ранжировать
|
- Не поглощено (держать в уме при постановке): правила задачи ранжировать
|
||||||
явно («правило A главнее буквы E») — внутренние противоречия всплывают
|
явно («правило A главнее буквы E») — внутренние противоречия всплывают
|
||||||
после починки.
|
после починки.
|
||||||
|
|||||||
@@ -11,6 +11,12 @@
|
|||||||
- [prompts/recheck-header.md](prompts/recheck-header.md) — узкая
|
- [prompts/recheck-header.md](prompts/recheck-header.md) — узкая
|
||||||
перепроверка (этап 5); может принести новую находку — это не нарушение
|
перепроверка (этап 5); может принести новую находку — это не нарушение
|
||||||
узости, отправь её исполнителю тем же порядком.
|
узости, отправь её исполнителю тем же порядком.
|
||||||
|
- [prompts/result-contract.md](prompts/result-contract.md) — формат
|
||||||
|
результата вспомогательных агентов (исследователь, fast-worker, раннер);
|
||||||
|
исполнителю формат задаёт сам шаблон задачи.
|
||||||
|
- [prompts/runtime-language.md](prompts/runtime-language.md) — язык
|
||||||
|
обмена (английский); подшивается в конец каждого собранного промпта,
|
||||||
|
чтобы правило доехало до самих агентов.
|
||||||
|
|
||||||
Правила:
|
Правила:
|
||||||
|
|
||||||
@@ -30,16 +36,23 @@
|
|||||||
вызова скилла):
|
вызова скилла):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat "$D/review-params.md" "$P/review-boilerplate.md" > "$D/review-prompt.md"
|
cat "$D/task-body.md" "$P/runtime-language.md" > "$D/task-prompt.md"
|
||||||
|
cat "$D/review-params.md" "$D/line-task.md" "$P/review-boilerplate.md" \
|
||||||
|
"$P/runtime-language.md" > "$D/review-prompt-task.md"
|
||||||
|
# вторая линия: line-code.md -> review-prompt-code.md;
|
||||||
|
# одиночный ревьюер: line-rev.md -> review-prompt.md
|
||||||
cat "$P/triage-header.md" "$D/review-codex.md" "$D/review-claude.md" \
|
cat "$P/triage-header.md" "$D/review-codex.md" "$D/review-claude.md" \
|
||||||
"$D/notes.md" > "$D/fix-prompt.md" # notes.md опционален — нет, так не включай
|
"$D/notes.md" "$P/runtime-language.md" > "$D/fix-prompt.md"
|
||||||
cat "$P/recheck-header.md" "$D/recheck-params.md" > "$D/recheck-prompt.md"
|
# notes.md опционален — нет, так не включай
|
||||||
|
cat "$P/recheck-header.md" "$D/recheck-params.md" \
|
||||||
|
"$P/runtime-language.md" > "$D/recheck-prompt.md"
|
||||||
```
|
```
|
||||||
|
|
||||||
## 1. Задача исполнителю (`codex exec`, workspace-write)
|
## 1. Задача исполнителю (`codex exec`, workspace-write)
|
||||||
|
|
||||||
Сохрани как `$D/task-prompt.md` — под этим именем его ждут примеры
|
Напиши параметрический текст в `$D/task-body.md`; финальный
|
||||||
codex-exec.md.
|
`$D/task-prompt.md` собирается `cat`'ом с хвостом языка (сборка выше) —
|
||||||
|
под этим именем его ждут примеры codex-exec.md.
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
# Task: {{ticket/goal in one line}}
|
# Task: {{ticket/goal in one line}}
|
||||||
@@ -74,15 +87,30 @@ will run it before the reviews start.
|
|||||||
4. Doubts, if any.
|
4. Doubts, if any.
|
||||||
```
|
```
|
||||||
|
|
||||||
## 2. Ревью: параметрический блок (один на ОБОИХ ревьюеров)
|
## 1а. Саморевью исполнителя (resume тем же тредом, effort medium)
|
||||||
|
|
||||||
Блок не знает, кто его читает; куда класть вердикт, задаёт обёртка вызова,
|
Отдельным ходом после отчёта о реализации, до внешних ревью — смена рамки
|
||||||
и пути у ревьюеров разные (иначе коллизия). Codex получает собранный файл
|
«автор → критик» отдельным ходом ловит больше, чем финальный пункт
|
||||||
через stdin (вердикт = его `-o`-отчёт); Клод-субагенту в prompt — короткая
|
чек-листа в промпте задачи:
|
||||||
английская обёртка:
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Read {{path to review-prompt.md}} and execute it. Working directory:
|
Now switch roles: you are a reviewer of your own diff. Walk it against the
|
||||||
|
task's acceptance criteria and boundaries. Fix what you find, stay inside
|
||||||
|
the task scope. Return one line: SELF-REVIEW: found N, fixed N — plus one
|
||||||
|
phrase per unfixed item, if any.
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Ревью: общий блок + файл линии
|
||||||
|
|
||||||
|
Общий параметрический блок (`review-params.md`) один на обе линии и не
|
||||||
|
знает, кто его читает; линзу и префикс ID задаёт файл линии, поэтому
|
||||||
|
собранных промптов — по одному на линию, с разными путями. Куда класть
|
||||||
|
вердикт, задаёт обёртка вызова, и пути вердиктов у ревьюеров тоже разные
|
||||||
|
(иначе коллизия). Codex получает свой собранный файл через stdin (вердикт
|
||||||
|
= его `-o`-отчёт); Клод-субагенту в prompt — короткая английская обёртка:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Read {{path to this line's review prompt}} and execute it. Working directory:
|
||||||
{{repo root}}. Write the full findings index to
|
{{repo root}}. Write the full findings index to
|
||||||
{{$D/review-claude.md}} — it is outside the repo, so the mandate allows
|
{{$D/review-claude.md}} — it is outside the repo, so the mandate allows
|
||||||
it (via Write or a Bash heredoc, whichever you have). Keep the index
|
it (via Write or a Bash heredoc, whichever you have). Keep the index
|
||||||
@@ -103,14 +131,35 @@ You are an independent adversarial reviewer. Working directory: repo root
|
|||||||
|
|
||||||
## What you review
|
## What you review
|
||||||
{{task file + spec; what is already committed and NOT under review}}
|
{{task file + spec; what is already committed and NOT under review}}
|
||||||
Changes (uncommitted, see the working tree): {{file list}}
|
Changes under review: {{exact paths, prepared diff path, or diff command —
|
||||||
|
must let the reviewer tell reviewed work from unrelated tree noise}}
|
||||||
Test command (expect {{N}} passed): {{command}}
|
Test command (expect {{N}} passed): {{command}}
|
||||||
|
|
||||||
## Focus
|
## Focus
|
||||||
{{adapt: 3–4 points — math/edge cases, criteria compliance, test honesty,
|
{{adapt: 2–3 extra points for this task — math/edge cases, artifacts,
|
||||||
shared code/regressions, artifacts}}
|
shared code}}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Файлы линий (`line-task.md` / `line-code.md`), по одному на слепую линию:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Your line
|
||||||
|
FINDING PREFIX: TASK
|
||||||
|
Lens: compliance with the statement, acceptance criteria, boundaries,
|
||||||
|
intended observable result.
|
||||||
|
```
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Your line
|
||||||
|
FINDING PREFIX: CODE
|
||||||
|
Lens: correctness, invariants, regressions, security, test honesty.
|
||||||
|
```
|
||||||
|
|
||||||
|
Одиночному ревьюеру (простая ступень шкалы этапа 4) — один `line-rev.md`
|
||||||
|
с обеими линзами и префиксом `REV`. По эмпирике прогонов естественное
|
||||||
|
распределение: Codex — CODE (дефекты нового кода), Клод — TASK (уровень
|
||||||
|
задачи и архитектуры).
|
||||||
|
|
||||||
Вариант для **этапа 2** (ревью постановки, кода изменений ещё нет) — тот же
|
Вариант для **этапа 2** (ревью постановки, кода изменений ещё нет) — тот же
|
||||||
boilerplate, другой параметрический блок:
|
boilerplate, другой параметрический блок:
|
||||||
|
|
||||||
@@ -132,6 +181,9 @@ Code to check the statement's facts against: {{file list with why}}
|
|||||||
criteria checkable and gameable?, observability}}
|
criteria checkable and gameable?, observability}}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Файл линии — тем же механизмом: только префикс (`SPEC-A` / `SPEC-B`,
|
||||||
|
одиночному обзору — `SPEC`); линза уже задана рамкой блока.
|
||||||
|
|
||||||
## 3. Параметрические хвосты триажа и перепроверки
|
## 3. Параметрические хвосты триажа и перепроверки
|
||||||
|
|
||||||
`notes.md` (опционально, коротко, по-английски): фактура, которой нет у
|
`notes.md` (опционально, коротко, по-английски): фактура, которой нет у
|
||||||
@@ -144,6 +196,11 @@ Implementer's report with resolutions: read {{$D/fix-result.md}}.
|
|||||||
Test command (expect {{N}} passed): {{command}}
|
Test command (expect {{N}} passed): {{command}}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Вердикт узкой перепроверки Клода бери прямо из строки task-notification —
|
||||||
|
обёртка требует финальным актом только VERDICT-строку; файл перепроверки
|
||||||
|
читай лишь при `ISSUES_REMAIN` или споре (эмпирика 2026-07-13: экономит
|
||||||
|
чтение без потерь).
|
||||||
|
|
||||||
Кавеат: проверь, что Codex-ревьюер может читать `$SCRATCH` из песочницы
|
Кавеат: проверь, что Codex-ревьюер может читать `$SCRATCH` из песочницы
|
||||||
(temp-каталоги обычно читаемы в workspace-write). Если нет — резолюции по
|
(temp-каталоги обычно читаемы в workspace-write). Если нет — резолюции по
|
||||||
его находкам передай текстом (только его находки, не весь отчёт).
|
его находкам передай текстом (только его находки, не весь отчёт).
|
||||||
+13
-9
@@ -1,13 +1,17 @@
|
|||||||
# Narrow re-check: do the fixes close your findings?
|
# Narrow re-check: do the fixes close your findings?
|
||||||
|
|
||||||
The implementer has processed the findings of your review. Check ONLY your
|
The implementer has processed the findings of your review; the path to
|
||||||
own findings — no full second pass. Mandate unchanged: modify nothing;
|
their resolutions report is appended below. Check ONLY your own findings —
|
||||||
reading and running tests are allowed.
|
no full second pass. Mandate unchanged: modify nothing; reading and
|
||||||
|
running tests are allowed.
|
||||||
|
|
||||||
Answer one line per your finding: CLOSED / NOT_CLOSED (why) /
|
One line per your original ID: `ID | CLOSED | NOT_CLOSED (why) |
|
||||||
REJECTION_VALID / REJECTION_INVALID (why). If you spot a NEW defect while
|
REJECTION_VALID | REJECTION_INVALID (why)`. Judge a rejection by its
|
||||||
re-checking, report it in the same index format — narrowness limits scope,
|
argument in the resolutions report — contract and test, not taste. If you
|
||||||
not honesty. Final line: RECHECK: ALL_CLOSED | ISSUES_REMAIN
|
spot a NEW defect while re-checking, report it with a new ID in the same
|
||||||
|
index format — narrowness limits scope, not honesty.
|
||||||
|
|
||||||
The implementer's report path, test command and expected counters are
|
Final line: RECHECK: ALL_CLOSED | ISSUES_REMAIN
|
||||||
appended below.
|
|
||||||
|
The implementer's resolutions report path, test command and expected
|
||||||
|
counters are appended below.
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
## Result contract
|
||||||
|
|
||||||
|
Report through the channel your call wrapper assigns:
|
||||||
|
|
||||||
|
- STATUS: complete | questions | blocked
|
||||||
|
- EVIDENCE: changed files, executed commands, final counters
|
||||||
|
- DECISIONS: only questions the coordinator must answer
|
||||||
|
- FINDINGS: severity, location, essence, how to verify
|
||||||
|
- NEXT: one concrete action or "none"
|
||||||
|
|
||||||
|
Omit empty sections. No raw output, no reasoning narrative. If a report
|
||||||
|
file is assigned, put the full result there and return only STATUS,
|
||||||
|
counters and `REPORT: <absolute path>`; otherwise return one concise
|
||||||
|
message.
|
||||||
+19
-2
@@ -11,7 +11,24 @@
|
|||||||
|
|
||||||
## Findings file format — index only
|
## Findings file format — index only
|
||||||
|
|
||||||
SEVERITY(BLOCKER|MAJOR|MINOR|NIT) | file:line (or spec/task-file section) | one-phrase essence | how to verify/reproduce
|
One line per finding, with a stable ID (FINDING PREFIX comes from your
|
||||||
|
parameter block):
|
||||||
|
|
||||||
|
PREFIX-N | BLOCKER|MAJOR|MINOR|NIT | file:line (or spec/task-file section) | one-phrase essence | how to verify/reproduce
|
||||||
|
|
||||||
|
- IDs are permanent: triage and re-checks refer to findings by ID only.
|
||||||
|
- Confirmations of correctness — one line per item, no elaboration.
|
||||||
|
- A NON-GATING CONSIDERATION is a material risk of a decision safely
|
||||||
|
deferred to a later owner: one line, no ID, no severity, not counted,
|
||||||
|
does not change the verdict. Do not prescribe the downstream
|
||||||
|
implementation.
|
||||||
|
- ZERO findings: the report must list the reviewed scope and every check
|
||||||
|
or hypothesis you actually ran, with outcomes. A bare approval line is
|
||||||
|
invalid and will be discarded.
|
||||||
|
|
||||||
Confirmations of correctness — one line per item, no elaboration.
|
|
||||||
Final line: VERDICT: APPROVED | APPROVED_WITH_MINORS | CHANGES_REQUIRED
|
Final line: VERDICT: APPROVED | APPROVED_WITH_MINORS | CHANGES_REQUIRED
|
||||||
|
|
||||||
|
For a statement/plan review: judge the document at its own level.
|
||||||
|
Open implementation details do not make it incomplete — APPROVED means no
|
||||||
|
defect the document itself must fix; record deferred-decision risks as
|
||||||
|
non-gating considerations.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
## Runtime language
|
||||||
|
|
||||||
|
Write every exchange file — reports, findings indexes, resolutions,
|
||||||
|
prompts — in English. Do not infer the output language from the repository
|
||||||
|
or the conversation. Content that ships into the repository (code
|
||||||
|
comments, docs, commits, task files) follows the repository's own
|
||||||
|
conventions instead.
|
||||||
@@ -1,17 +1,28 @@
|
|||||||
# Triage of findings from independent blind reviews of your implementation
|
# Triage of findings from independent blind reviews of your implementation
|
||||||
|
|
||||||
Below are the findings of the blind reviews, **verbatim**. Close what is
|
Below are the findings of the blind reviews, **verbatim**. Process every
|
||||||
listed, change nothing else. For each finding, either:
|
finding ID; change nothing outside their scope. Assign each ID exactly one
|
||||||
|
disposition:
|
||||||
|
|
||||||
- a TDD fix — first a test reproducing the finding, then the fix; or
|
- FIXED — a TDD fix: first a test reproducing the finding, then the fix;
|
||||||
- a reasoned rejection via contract/spec and test — a bare "not important"
|
name the check that proves closure;
|
||||||
is not accepted.
|
- REJECTED — a reasoned rejection via contract/spec and test; a bare
|
||||||
|
"not important" is not accepted;
|
||||||
|
- OUT_OF_SCOPE — needs a boundary decision; state which one;
|
||||||
|
- NEEDS_DECISION — a product, architecture, or risk choice a technical
|
||||||
|
argument cannot settle; state the open question.
|
||||||
|
|
||||||
No commits. Record rejection arguments in the task file so a fresh thread
|
OUT_OF_SCOPE and NEEDS_DECISION belong to the coordinator — do not
|
||||||
can continue without this thread's context.
|
silently decide them yourself.
|
||||||
|
|
||||||
Final report: one line per finding — fixed (how) / rejected (argument +
|
No commits. Do NOT edit the task file: write detailed resolutions and
|
||||||
where recorded); test command, run counters, list of changed files.
|
rejection arguments to your assigned report file — re-checks and fresh
|
||||||
|
threads will read that file by path; the task file is updated separately
|
||||||
|
at the end of the run.
|
||||||
|
|
||||||
|
Final report: one line per ID — `ID | disposition | one-phrase essence`;
|
||||||
|
then disposition counters, test command with counters, list of changed
|
||||||
|
files, and open questions for the coordinator, if any.
|
||||||
|
|
||||||
Orchestrator notes, if present below, carry task-level decisions (out of
|
Orchestrator notes, if present below, carry task-level decisions (out of
|
||||||
scope / risk accepted) and verified facts you don't have — they are not
|
scope / risk accepted) and verified facts you don't have — they are not
|
||||||
|
|||||||
Reference in new issue
Block a user