Files
dotfiles/agents/.agents/skills/claude-subagent-playbook/references/prompt-templates.md
T
ddadmin 7110a075ea docs(skill): принцип «мастер решает», готовые boilerplate-промпты, ревизия
- Зачем:
  - ретро прогона 2026-07-12 (задача 20, clickstream-demo): контекст
    оркестратора съедали инлайн-диагнозы, переписывание boilerplate и
    кириллица в обменных файлах.
- Что:
  - SKILL.md: принцип «мастер решает — субагенты выясняют» со стоп-краном
    «сам — максимум один заход», обменные файлы на английском, сквозная
    проверка до ревьюеров, будильник одной строкой.
  - references/prompts/: готовые английские boilerplate-файлы (мандат
    ревью, триаж, перепроверка) — подшиваются cat'ом, контекст мастера
    не проходят; prompt-templates перестроен под сборку.
  - codex-exec: модель gpt-5.6-sol, лестница эффорта, ловушка «&»;
    sandbox-справочник переименован в codex-sandbox-apparmor.md;
    lessons дистиллирован, добавлена запись прогона 2026-07-12.
  - закрыты 14 находок слепого Fable-ревью скилла (согласованность,
    единый источник $SCRATCH, скелет ревью постановки).
- Проверка:
  - все внутренние ссылки резолвятся; слепое ревью: APPROVED_WITH_MINORS,
    восстановление структуры подтверждено без потерь.
2026-07-12 22:17:59 +03:00

144 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Сборка промптов конвейера
Постоянные блоки лежат готовыми файлами в
[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/<NN-slug>/` на задачу: `$SCRATCH` —
временный каталог ОС (скретчпад сессии или `mktemp -d`), подпапка — чтобы
обмен нескольких задач не сваливался в кучу. В репо не мусорит, ребут не
переживает. Windows-кавеат из codex-exec.md в силе: путь —
forward-slash, не голый `/tmp` Git Bash.
- Через Write оркестратор пишет **только параметрические блоки** ниже;
плейсхолдеры `{{...}}` — значения задачи, секции «adapt» — по смыслу.
Сборка на прогон: `D="$SCRATCH/<NN-slug>"` — подпапка задачи; `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). Если нет — резолюции по
его находкам передай текстом (только его находки, не весь отчёт).