Lab Review
Reviews a Claude Code session and produces coaching-style feedback.
Language
Default: English. Switch to Russian if the user wrote to you in Russian. Keep the written review in one language — whichever matches the current conversation.
Где лежат сессии
Транскрипты Claude Code: ~/.claude/projects/<cwd-slug>/<session-id>.jsonl. Каждая строка — событие (type: user | assistant | tool_use | tool_result). cwd-slug — это рабочая директория с / заменёнными на -.
Режимы запуска
1. Текущая сессия (in-session)
Пользователь говорит: «разбери эту сессию», находясь внутри активной сессии.
Найди её так:
# slug текущей директории
slug=$(pwd | sed 's|/|-|g')
# самый свежий JSONL в папке проекта
ls -t ~/.claude/projects/${slug}/*.jsonl 2>/dev/null | head -1
Последний изменённый файл — текущая сессия. Читай его частично (последние 200-500 строк достаточно для обзора).
Важно: при анализе активной сессии отфильтруй собственное сообщение-вызов skill — оно не часть того, что нужно разбирать.
2. Последняя завершённая сессия
«Разбери мою последнюю сессию» без уточнения — бери второй по свежести JSONL в той же директории (первый это текущая).
3. По ID
«Разбери сессию abc123...» — ищи через find ~/.claude/projects -name "abc123*.jsonl".
Что читать
JSONL большой. Эффективная стратегия:
- Прочитай первые 50 строк — контекст начала.
- Прочитай последние 200 строк — финал и итоги.
- Если сессия длинная (>1000 строк), выбери 2-3 случайных фрагмента по 50 строк в середине.
Извлекай только type: user и type: assistant с полем message.content. Tool calls интересны только если агент буксовал (много повторных вызовов).
Рубрика разбора
Оценивай сессию по четырём осям. Для каждой — 1-3 конкретных наблюдения со ссылкой на фрагмент, не общие советы.
1. Качество промптов пользователя
- Есть ли контекст (что уже пробовали, что нужно)?
- Цель ясна или размыта?
- Просит решение или просит исследовать?
- Где пользователь задал вопрос, хотя мог сразу дать инструкцию (или наоборот)?
2. Взаимодействие с агентом
- Где агент ушёл не туда — и пользователь это заметил / не заметил?
- Были ли моменты, когда стоило остановить агента и перепланировать?
- Использованы ли подходящие инструменты (skills, subagents, plan mode)?
3. Упущенные возможности
- Какие skills/tools подошли бы, но не были вызваны?
- Где можно было запараллелить независимые задачи?
- Что стоило сохранить в memory/профиль?
4. Что получилось хорошо
Обязательно. Минимум 1 пункт. Без этого разбор превращается в придирки.
Формат выхода
Сохраняй в <vault>/reviews/YYYY-MM-DD-<session-short-id>.md:
---
session_id: <полный id>
date: <YYYY-MM-DD>
duration_turns: <число обменов>
topic: <одно предложение о чём была сессия>
---
# Разбор сессии <короткий id>
## О чём была сессия
<2-3 предложения>
## Что получилось хорошо
- <наблюдение + цитата/номер turn>
## Качество промптов
- <наблюдение>
## Взаимодействие с агентом
- <наблюдение>
## Упущенные возможности
- <наблюдение>
## Одна вещь на следующий раз
<самая важная рекомендация, одно действие>
Правила
- Никогда не выдумывай цитаты. Если цитируешь — это должна быть реальная строка из JSONL.
- Не морализируй. Тон — коллега, а не ментор-всезнайка.
- Связывай с профилем: если в
<vault>/goals.mdесть цель, к которой сессия относится — упомяни. Если вtools-learned.mdбыл инструмент, который подошёл бы — сошлись через[[tools-learned#...]]. - Если vault не настроен — предложи сначала запустить
lab-context, но разбор всё равно выдай (просто без ссылок на профиль, и сохрани во временный файл в подпапке проекта, а не в$HOME). - Никогда не пиши в
$HOMEнапрямую — только в подпапки~/claude-lab-vault/или аналог.