Files
dotfiles/agents/.agents/skills/claude-subagent-playbook/references/prompt-templates.md
T
Dmitry DementievandClaude Fable 5 15d5515925 docs(skill): экономия контекста оркестратора по ретро прогона 2026-07-10
- Зачем:
  - ретро трёх циклов конвейера показало: находки ревью проходили через
    контекст оркестратора до шести раз, review-промпт дублировался, ~7
    пустых ходов на idle-пингах teammate-ревьюера.
- Что:
  - SKILL.md: механика «индекс у оркестратора, нагрузка файлами» — вердикты
    в файлы обменного temp-каталога, fix-промпт конкатенацией, один
    канонический review-промпт на обоих ревьюеров, idle-пинги как шум;
  - новый references/prompt-templates.md — скелеты четырёх промптов;
  - codex-exec.md: сборка промптов cat'ом, боевая модель gpt-5.5 явно
    (фронтир из конфига не наследовать);
  - codex-sandbox-fix-handover: рабочий AppArmor-фикс (ловушка memfd,
    профиль на бинарь codex), проверен на обоих режимах;
  - lessons.md: датированные записи ретро, казуса Sol и memfd.
- Проверка:
  - чтение SKILL.md и references/, следующий прогон конвейера.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 16:55:16 +03:00

9.0 KiB

Скелеты промптов конвейера

Отработали боевой прогон 2026-07-10 (3 цикла, тикеты FTP/CSV DQ). Правило использования: заполни скелет в $SCRATCH один раз за прогон и дальше не переписывай — на каждую следующую задачу пиши только параметрический блок и собирай финальный промпт конкатенацией. Плейсхолдеры {{...}} заполняются значениями задачи; секции, помеченные «адаптируй», меняются по смыслу задачи, остальное — стабильный boilerplate.

$SCRATCH здесь — общий обменный каталог прогона во временном каталоге ОС с полуслучайным префиксом: скретчпад сессии из системного промпта (он уже такой) или mktemp -d на прогон. Это безопасный вариант (решение пользователя 2026-07-10): не мусорит в репо, не сталкивается с параллельными прогонами и не переживает ребут машины — устаревшие обменные файлы не накапливаются. Windows-кавеат из codex-exec.md в силе: путь — forward-slash, не голый /tmp Git Bash.

1. Задача исполнителю (codex exec, workspace-write)

# Задача: {{тикет/цель одной строкой}}

Рабочий каталог — корень репозитория {{repo}}. Ветка {{branch}} — работай
в ней, ветку не менять.

## Что делать
Реализуй {{тикет NN}} из {{путь к задаче-файлу}}. Задача самодостаточна:
постановка — в тикете, следуй ей буквально; чекбоксы — критерии приёмки.
Кажется неправильным — реализуй как написано и отметь сомнение в отчёте.

## Сначала прочитать (обязательно, до кода)
{{нумерованный список: задача-файл, спека, образцы кода, конвенции}}

## Порядок и дисциплина
{{адаптируй: TDD, порядок слоёв, команда тестов}}

## Границы (что трогать нельзя)
- **Коммитов не делать.** Никаких `git commit`/`git add`.
{{адаптируй: стабы, чужой код, существующие тесты, файлы вне репо}}

## Финальный отчёт (что вернуть)
1. Файлы с одной строкой «зачем» на каждый.
2. Команда тестов и итог прогона (счётчик, все зелёные).
3. Чекбоксы: какие закрыты, какие нет и почему.
4. Сомнения, если были.

2. Слепое ревью (один файл на ОБОИХ ревьюеров)

Канонический файл не знает, кто его читает — куда класть вердикт, задаёт обёртка вызова, и пути у ревьюеров разные (иначе коллизия):

  • Codex: файл через stdin; отдельный файл вердикта не нужен — вердикт и есть его -o-отчёт ($SCRATCH/NN-review-codex.md).
  • Клод-субагент: в prompt — только обёртка: «прочитай {{путь к каноническому файлу}} и выполни, рабочий каталог {{корень репо}}; полный индекс запиши в {{$SCRATCH/NN-review-claude.md}} — это вне репо, мандату не противоречит (Write у тебя нет — Bash heredoc'ом); финальным сообщением пришли только строку VERDICT, счётчики по severity и путь к файлу».
# Ревью кода: {{тикет NN — суть}}

Ты — независимый адверсарный ревьюер. Рабочий каталог — корень
репозитория {{repo}}, ветка {{branch}}.

## Мандат (жёсткий)
- Исходники и окружение НЕ менять. Правок не вносить — только находки.
- Запускать тесты, проверять гипотезы, читать документацию — можно и
  нужно; безопасные эмпирические проверки во временных каталогах вне
  репо поощряются: вердикт с проверкой твёрже вердикта по прочтению.
- Никаких `git add`/`git commit`/`git checkout`.
- Итог — только индекс находок и строка VERDICT, без пересказа кода и
  нарратива; куда его положить — сказано в вызове.

## Что ревьюишь
{{задача-файл + спека; что уже закоммичено и не ревьюится}}
Изменения (незакоммичены, смотри рабочее дерево): {{список файлов}}
Команда тестов (ожидается {{N}} passed): {{команда}}

## Фокус
{{адаптируй: 3–4 пункта под задачу — математика/краевые, соответствие
критериям, честность тестов, общий код/регрессии}}

## Формат файла находок — только индекс
SEVERITY(BLOCKER|MAJOR|MINOR|NIT) | файл:строка | суть одной фразой | как проверить/воспроизвести
В конце — отдельная строка: VERDICT: APPROVED | APPROVED_WITH_MINORS | CHANGES_REQUIRED

3. Триаж исполнителю (codex exec resume <thread-id>)

Собирается конкатенацией — находки НЕ переписывать: cat шапка.md review-A.md review-B.md замечания.md > fix-prompt.md

Шапка (стабильная):

# Триаж находок двух независимых ревью твоей реализации

Ниже — находки двух слепых ревью **дословно**. Закрой перечисленное,
больше ничего не меняй. По каждой — починка по TDD (сначала тест,
воспроизводящий находку) или аргументированное отклонение через
контракт/спеку и тест — голословное «не важно» не принимается.
Коммитов не делать.

Финальный отчёт: по каждой находке одной строкой — починено (чем) /
отклонено (довод + где зафиксировано); команда тестов, счётчик прогона,
список изменённых файлов.

Замечания оркестратора (опционально, коротко): фактура, которой нет у исполнителя (проверенные тобой данные), решения уровня задачи (вне скоупа / принять риск), приоритеты.

4. Узкая перепроверка (тем же ревьюером)

# Узкая повторная проверка: закрывают ли правки твои находки

Исполнитель обработал находки. Проверь ТОЛЬКО свои — полный повторный
обход не нужен. Мандат прежний: ничего не менять, только чтение и прогон
тестов.

Отчёт исполнителя с резолюциями: прочитай {{$SCRATCH/NN-fix-result.md}}.
Команда тестов (ожидается {{N}} passed): {{команда}}

Ответ — по каждой твоей находке одной строкой: CLOSED / NOT_CLOSED
(почему) / REJECTION_VALID / REJECTION_INVALID (почему). Финальная
строка: RECHECK: ALL_CLOSED | ISSUES_REMAIN

Кавеат: проверь, что Codex-ревьюер может читать $SCRATCH из своей песочницы (temp-каталоги обычно читаемы в workspace-write; в этом прогоне -o-файлы под /tmp работали). Если нет — резолюции по его находкам передай текстом (только его находки, не весь отчёт).