From retro
Retrieves and summarizes a sprint agent's JSONL session transcript, showing tool calls, errors, messages, and retry patterns. Invoke when asked to "read the transcript for implementer-1", "what did agent X do", "show me the agent log", "analyze what happened during task 25", or "retrieve agent session". Also invoke when a process-observer or team-lead needs to review agent behavior after task completion. Accepts --teammate, --task, --focus, and --session arguments. Do not use for reading kanban cards, analysis reports, or non-JSONL files — use Read tool directly for those.
How this skill is triggered — by the user, by Claude, or both
Slash command
/retro:transcriptThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Retrieve and summarize a sprint agent's JSONL session transcript to support process observation and retrospective analysis.
Retrieve and summarize a sprint agent's JSONL session transcript to support process observation and retrospective analysis.
Each agent spawned by team-lead gets its own JSONL file:
~/.claude/projects/<project-slug>/
<session-id>.jsonl ← team-lead's session
<session-id>/
subagents/
agent-<agentId>.jsonl ← one file per spawned agent
Agent JSONL files do NOT store the agent's name directly. Identity is inferred from:
SendMessage tool calls (recipient and summary reveal role)| Argument | Required | Description |
|---|---|---|
--teammate | yes | Agent name to find (e.g. implementer-1, reviewer) |
--task | no | Task ID to scope the time window (e.g. 25) |
--focus | no | errors, tools, messages, all (default: all) |
--session | no | Session ID prefix if known; otherwise auto-discover |
Find the correct project directory under ~/.claude/projects/:
ls ~/.claude/projects/ | grep -i "SAME-PAGE-PREVIEW"
The slug is the directory name with path separators replaced by hyphens. For this project it is -Users-Chris-Weber-OpenSource-SAME-PAGE-PREVIEW.
List JSONL files in the project directory, sorted by modification time to find the most recent sprint session:
ls -lt ~/.claude/projects/<project-slug>/*.jsonl | head -5
If --session was provided, match on the session ID prefix. Otherwise use the most recently modified file that has a corresponding subagents directory:
ls ~/.claude/projects/<project-slug>/
# Look for entries that are BOTH a .jsonl file AND a directory (directory = has subagents)
Each agent's transcript is in <session-id>/subagents/agent-<agentId>.jsonl. Use the bundled script to identify which file belongs to --teammate:
python3 scripts/find_agent_file.py \
--teammate implementer-1 \
--session-dir ~/.claude/projects/<project-slug>/<session-id>/subagents/
The script scans SendMessage call summaries across all subagent files and prints the best-matching file path to stdout. Exit code 1 means no match was found.
If --teammate is team-lead, read the top-level session JSONL directly instead of the subagents directory.
Read the bead notes to get the task timeframe:
bd show <bead_id> --json | jq '.notes'
Narrow the JSONL scan to entries whose timestamp falls within the task window. If timestamps are ambiguous (same-day, no time in narrative), use the full file.
Run the bundled summarize script against the identified agent file:
python3 scripts/summarize_transcript.py \
--file <path-to-agent-file> \
--focus all
Optional time-window scoping (ISO8601 timestamps from Step 4):
python3 scripts/summarize_transcript.py \
--file <path-to-agent-file> \
--focus errors \
--after 2026-02-20T14:00:00Z \
--before 2026-02-20T15:30:00Z
Present the output as a structured markdown summary:
## Transcript Summary — <teammate> / Task #<task>
Session file: agent-<agentId>.jsonl
Time window: <start> → <end> (<duration>)
### Tool Calls (<total> total)
- <Tool>: <count> (<errors> errors)
...
### Errors (<count>)
- <description>
...
### Messages Sent
- → <recipient>: <summary>
...
### Retry Patterns
- <count>x: <command> (possible friction point)
### Process Notes
<Any observations worth flagging — stale flags, scope drift, missing handoff>
If --focus errors is specified, omit tool counts and messages. If --focus messages, show only the messages section. If --focus tools, show tool counts and retries only.
Example 1: Team-lead pings after task completion
{task_id: 25, owner: "implementer-1", bead_id: "sprint-a1b2"}/retro:transcript --teammate implementer-1 --task 25 --focus errorsExample 2: Full review after reviewer completes
/retro:transcript --teammate reviewer --focus allExample 3: Targeted message review after communication confusion
/retro:transcript --teammate issue-analyzer-2 --focus messagesNo subagents directory found
ls ~/.claude/projects/<slug>/Cannot identify which file belongs to --teammate
JSONL parse errors
json.loads() in try/except — skip malformed lines silentlyTimestamps don't narrow the window
npx claudepluginhub cosmicdreams/claude-plugins --plugin retroCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.