# Сборка промптов конвейера Постоянные блоки лежат готовыми файлами в [prompts/](prompts/) — их не переписывают, а подшивают `cat`'ом прямо из каталога скилла, через контекст оркестратора они не проходят вовсе: - [prompts/review-boilerplate.md](prompts/review-boilerplate.md) — мандат ревьюера + формат индекса находок (этапы 2 и 4). - [prompts/triage-header.md](prompts/triage-header.md) — правила триажа для исполнителя (этап 5). - [prompts/recheck-header.md](prompts/recheck-header.md) — узкая перепроверка (этап 5); может принести новую находку — это не нарушение узости, отправь её исполнителю тем же порядком. Правила: - **Обменные файлы — на английском** (правило SKILL.md): скелеты ниже уже английские. Русский — только формулировкам, попадающим в задачу-файл, коммиты и доклады пользователю. - **Каталог прогона** — `$SCRATCH//` на задачу: `$SCRATCH` — временный каталог ОС (скретчпад сессии или `mktemp -d`), подпапка — чтобы обмен нескольких задач не сваливался в кучу. В репо не мусорит, ребут не переживает. Windows-кавеат из codex-exec.md в силе: путь — forward-slash, не голый `/tmp` Git Bash. - Через Write оркестратор пишет **только параметрические блоки** ниже; плейсхолдеры `{{...}}` — значения задачи, секции «adapt» — по смыслу. Сборка на прогон: `D="$SCRATCH/"` — подпапка задачи; `P` — `references/prompts` в базовом каталоге скилла (путь даётся в шапке вызова скилла): ```bash 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. ```markdown # 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 — короткая английская обёртка: ```text 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). Final message: ONLY the VERDICT line, severity counters and the file path. ``` ```markdown # 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, другой параметрический блок: ```markdown # 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` — три строки: ```markdown Implementer's report with resolutions: read {{$D/fix-result.md}}. Test command (expect {{N}} passed): {{command}} ``` Кавеат: проверь, что Codex-ревьюер может читать `$SCRATCH` из песочницы (temp-каталоги обычно читаемы в workspace-write). Если нет — резолюции по его находкам передай текстом (только его находки, не весь отчёт).