- Зачем:
- третий боевой прогон подтвердил рефакторинг «тонкого мастера»;
новые пожиратели контекста и слабое место Клод-ревьюера должны
остаться в эмпирике скилла.
- Что:
- lessons.md: запись прогона 2026-07-12/13 (находки этапов, три новых
пожирателя, цифры конвейера).
- prompt-templates.md: обёртка Клод-ревьюера требует однострочность
индекса (Клод-родословная держит формат хуже Codex).
- handoffs/: handoff разработки с открытыми вопросами (эхо файла
задачи, приём вердикта из уведомления, эксперимент medium).
- Проверка:
- вычитка; факты сверены с транскриптом прогона задачи 13.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7.4 KiB
Сборка промптов конвейера
Постоянные блоки лежат готовыми файлами в
prompts/ — их не переписывают, а подшивают cat'ом прямо из
каталога скилла, через контекст оркестратора они не проходят вовсе:
- prompts/review-boilerplate.md — мандат ревьюера + формат индекса находок (этапы 2 и 4).
- prompts/triage-header.md — правила триажа для исполнителя (этап 5).
- prompts/recheck-header.md — узкая перепроверка (этап 5); может принести новую находку — это не нарушение узости, отправь её исполнителю тем же порядком.
Правила:
- Обменные файлы — на английском (правило SKILL.md): скелеты ниже уже английские. Русский — только формулировкам, попадающим в задачу-файл, коммиты и доклады пользователю.
- Каталог прогона —
$SCRATCH/<NN-slug>/на задачу:$SCRATCH— временный каталог ОС (скретчпад сессии илиmktemp -d), подпапка — чтобы обмен нескольких задач не сваливался в кучу. В репо не мусорит, ребут не переживает. Windows-кавеат из codex-exec.md в силе: путь — forward-slash, не голый/tmpGit Bash. - Через Write оркестратор пишет только параметрические блоки ниже;
плейсхолдеры
{{...}}— значения задачи, секции «adapt» — по смыслу.
Сборка на прогон: D="$SCRATCH/<NN-slug>" — подпапка задачи; P —
references/prompts в базовом каталоге скилла (путь даётся в шапке
вызова скилла):
cat "$D/review-params.md" "$P/review-boilerplate.md" > "$D/review-prompt.md"
cat "$P/triage-header.md" "$D/review-codex.md" "$D/review-claude.md" \
"$D/notes.md" > "$D/fix-prompt.md" # notes.md опционален — нет, так не включай
cat "$P/recheck-header.md" "$D/recheck-params.md" > "$D/recheck-prompt.md"
1. Задача исполнителю (codex exec, workspace-write)
Сохрани как $D/task-prompt.md — под этим именем его ждут примеры
codex-exec.md.
# Task: {{ticket/goal in one line}}
Working directory: repo root {{repo}}. Branch {{branch}} — stay on it.
## What to do
Implement {{ticket NN}} from {{path to task file}}. The task is
self-contained: follow it literally; checkboxes are the acceptance
criteria. If something seems wrong — implement as written and flag the
doubt in your report.
## Read first (mandatory, before any code)
{{numbered list: task file, spec, code samples, conventions}}
## Order and discipline
{{adapt: TDD, layer order, test command}}
## End-to-end check <-- опционально: только если в репо есть дешёвый сквозной прогон
Run {{command}} before finishing. If it is unavailable in your sandbox
(docker, live stand) — say so explicitly in the report: the orchestrator
will run it before the reviews start.
## Boundaries (do not touch)
- **No commits.** No `git commit` / `git add`.
{{adapt: stubs, foreign code, existing tests, files outside the repo}}
## Final report (return this)
1. Files changed, one-line "why" each.
2. Test command and result (counters, all green).
3. Checkboxes: which are closed, which are not and why.
4. Doubts, if any.
2. Ревью: параметрический блок (один на ОБОИХ ревьюеров)
Блок не знает, кто его читает; куда класть вердикт, задаёт обёртка вызова,
и пути у ревьюеров разные (иначе коллизия). Codex получает собранный файл
через stdin (вердикт = его -o-отчёт); Клод-субагенту в prompt — короткая
английская обёртка:
Read {{path to review-prompt.md}} and execute it. Working directory:
{{repo root}}. Write the full findings index to
{{$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
strict: ONE line per finding and per confirmation, as the boilerplate
demands — no multi-line entries. Final message: ONLY the VERDICT line,
severity counters and the file path.
(Однострочность продублирована в обёртке не случайно: boilerplate это уже требует, но Клод-родословная держит формат хуже Codex — эмпирика 2026-07-12/13, многострочные находки и развёрнутые confirmations.)
# Code review: {{ticket NN — essence}}
You are an independent adversarial reviewer. Working directory: repo root
{{repo}}, branch {{branch}}.
## What you review
{{task file + spec; what is already committed and NOT under review}}
Changes (uncommitted, see the working tree): {{file list}}
Test command (expect {{N}} passed): {{command}}
## Focus
{{adapt: 3–4 points — math/edge cases, criteria compliance, test honesty,
shared code/regressions, artifacts}}
Вариант для этапа 2 (ревью постановки, кода изменений ещё нет) — тот же boilerplate, другой параметрический блок:
# Spec review: {{ticket NN — essence}}
You review a TASK STATEMENT, not an implementation. Go into implementation
details only where the statement silently pre-decides a solution. The task
goes to an implementer with no session context — they will do literally
what is written. Working directory: repo root {{repo}}, branch {{branch}}.
## What you review
Statement: {{path to task file}}. Related context (not under review):
{{parent PRD, sibling tickets}}.
Code to check the statement's facts against: {{file list with why}}
## Focus
{{adapt: facts vs code, hidden one-liner decisions/forks, acceptance
criteria checkable and gameable?, observability}}
3. Параметрические хвосты триажа и перепроверки
notes.md (опционально, коротко, по-английски): фактура, которой нет у
исполнителя, решения уровня задачи (вне скоупа / принять риск), приоритеты.
recheck-params.md — три строки:
Implementer's report with resolutions: read {{$D/fix-result.md}}.
Test command (expect {{N}} passed): {{command}}
Кавеат: проверь, что Codex-ревьюер может читать $SCRATCH из песочницы
(temp-каталоги обычно читаемы в workspace-write). Если нет — резолюции по
его находкам передай текстом (только его находки, не весь отчёт).