- C-1: транскрипты сабагентов (<сессия>/subagents/*.jsonl) вливаются в сессию-родителя — ходы, токены, инструменты, codegraph, блокировки, отказы; промпты, роль, стартовый контекст — только из основного. hook_blocks_export.py выгружает их блокировки с сессией-родителем. - I-7: период режется по меткам времени записей; сессия на стыке делится между ретро, стартовый контекст — если первый ход в периоде. - I-1: простые команды Bash — shlex с punctuation_chars, «|» в кавычках команду не делит. I-2: правило src/ ловит и сам каталог src. - I-3: clip() — redact до обрезки (кандидаты, выгрузка), роль — redact. - I-4: без --since период берётся из существующего --out; --from рисует «Цифры» из сохранённого среза. SKILL.md передаёт период явно. - I-5: выгрузка ретро без разметки — сборка корпуса падает. - I-6: сводка компакции — не промпт; «перечитай» — побуждение перечитать. - 2026-10-11.metrics.json: несравнимое помечено (без сабагентов, широкий «перечитай»). Спека и design.md (Decisions) обновлены. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5.9 KiB
5.9 KiB
name, description
| name | description |
|---|---|
| harness-retro | Ретро обвязки claude-harness по транскриптам, памяти и репозиториям одного проекта или workspace — срез метрик, разметка блокировок хуков в корпус, хвосты закрытия, поправки владельца, черновик docs/retro/<дата>.md и PR. Запускать в сессии в репозитории обвязки по команде «/harness-retro <папка> [--since ГГГГ-ММ-ДД]» после среза. |
/harness-retro
Аргумент — папка проекта или workspace, который изучаем. Сессия — в репозитории обвязки, роль dev. Дата ретро <D> — сегодня, ГГГГ-ММ-ДД. Скрипты — docs/retro/scripts/, все команды — из корня worktree ретро. Спека — openspec/specs/harness-retro/spec.md.
Шаги
- Задача и worktree. Issue «Ретро : <проект>» (
tea issues create). ЗатемEnterWorktreeс именемretro-<D>, веткаgit branch -m retro/<D>,codegraph initв worktree. - Срез. Выполнить
python3 docs/retro/scripts/retro_metrics.py <папка> [--since …] --out docs/retro/<D>.metrics.json.- Период
<since>—period.sinceизdocs/retro/<D>.metrics.json. На шагах 3 и 5 передавать его явно (--since <since>). Повторный запуск с тем же--outберёт период из него, поэтому черновик<D>.mdпериод не сдвигает. - В срез входят записи периода, в том числе из длинных сессий, начатых раньше. Транскрипты сабагентов (
<сессия>/subagents/) входят в сессию-родителя. - Exit 1 — сессий нет. Сообщить владельцу slug и период и остановиться.
- Битых строк больше 1 % — отметить в «Что не измерялось».
- Период
- Блокировки. Сначала выгрузить:
python3 docs/retro/scripts/hook_blocks_export.py --since <since> --id-prefix <D> <каталоги из sources.dirs> > docs/retro/fixtures/hook-blocks-<D>.jsonl. Каталоги —~/.claude/projects/<имя>.- Разметить каждую запись в
docs/retro/fixtures/hook-labels-<D>.json:expected(allow|block) иwhyпо спекеhook-guards;- раскладку песочницы — по
gitBranchсессий и выводуgit worktree listиgit branchв транскриптах; - если не восстановить —
skipс причиной.
- Собрать корпус:
python3 docs/retro/scripts/hook_cases_build.py > skills/harness-doctor/fixtures/hook-cases.jsonlи прогнатьbash tests/run.sh hook-corpus. Если текущий хук даёт не тот вердикт — проставить записи"known": "RT-n"и завести находку. - Пересчитать срез с
--labels docs/retro/fixtures/hook-labels-<D>.json --out docs/retro/<D>.metrics.json.
- Разметить каждую запись в
- Хвосты закрытия.
python3 docs/retro/scripts/retro_leftovers.py <папка> --fetch --markdown. Ничего не удалять: таблица идёт в черновик, уборка — по решению владельца. - Поправки владельца.
python3 docs/retro/scripts/retro_metrics.py <папка> --since <since> --corrections.- Отобрать только поправки по процессу: пропущенный шаг, лишний вопрос, неверный совет, обход правила, расширение задачи. Вопросы и просьбы по содержанию выбросить.
- Сгруппировать по видам.
- Вид, который повторяется (2 раза и больше) или стоил владельцу заметного времени, — находка
RT-nи пункт бэклога.
- Качественная часть. Прочитать память проекта целиком (
~/.claude/projects/<slug>/memory/) и примеры из выгрузок. НаходкиRT-n— сквозная нумерация: максимум в прошлыхdocs/retro/*.mdплюс 1. Приоритет: P1 — теряет время каждую неделю или ломает процесс; P2 — трение; P3 — наблюдение. - Черновик. Скопировать
.claude/skills/harness-retro/template.mdвdocs/retro/<D>.mdи заполнить.- «Цифры»:
python3 docs/retro/scripts/retro_metrics.py <папка> --from docs/retro/<D>.metrics.json --markdown --prev docs/retro/<прошлое>.metrics.json— таблица из сохранённого среза, без пересчёта. - Секретов в черновике быть не должно. Цитаты брать только из вывода скриптов: он уже прошёл
redact.
- «Цифры»:
- PR.
bash tests/run.shдолжен быть зелёным. Коммит: черновик,metrics.json, выгрузка, разметка, корпус. Затемgit push -u origin retro/<D>иtea pulls createсо ссылкой на issue. Merge — только владелец.
Не делать
- Не удалять хвосты и не чинить хуки в PR ретро — это находки и бэклог.
- Не заполнять раздел «Решения владельца»: он пишется на ревью PR.
- Не вставлять в черновик сырые куски транскриптов мимо скриптов.