session-timeline — Claude Code skill: what it does, how to install
Reconstructs a chronological event timeline for a Claude Code session from Agent Monitor data with exact tool durations.
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline -a claude-codeWhat session-timeline does
The skill retrieves session logs from a local Agent Monitor instance via GET /api/sessions/:id and GET /api/events. It accepts either an explicit session ID or the terms latest and last. The output starts with a summary header covering session status, model, working directory, turn count, and dollar cost formatted to four decimal places.
It organizes events into a Markdown table with relative offsets, event types, tool names, durations, and summaries. Durations are calculated by matching each PreToolUse event with its corresponding PostToolUse. It flags context compactions, subagent terminations, API errors, and idle gaps exceeding 30 seconds. If a matching closing event is missing, the tool call is marked as unclosed.
The skill fails if the monitoring dashboard is down: you must start it with npm start from the Agent Monitor repository root. The final section tallies total tool execution time against wall-clock duration and highlights the single longest tool call.
What it helps with
- Trace Claude Code session events step by step in chronological order
- Measure exact tool execution durations by pairing pre- and post-use hooks
- Locate context compactions, subagent stops, and idle windows over 30 seconds
Example prompts for the agent
- Render the session-timeline for the latest session
- Reconstruct the event timeline for session 4a8b1c with tool durations
How to install session-timeline
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline -a claude-code2Manually: put the files in place
~/.claude/skills/session-timeline/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/session-timeline/
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline -a codex2Manually: put the files in place
.agents/skills/session-timeline/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline -a cursor2Manually: put the files in place
.cursor/skills/session-timeline/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install hoangsonww/Claude-Code-Agent-Monitor session-timeline2Manually: put the files in place
.github/skills/session-timeline/SKILL.md1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline -a gemini-cli2Platform CLI
gemini skills install https://github.com/hoangsonww/Claude-Code-Agent-Monitor --path plugins/ccam-sessions/skills/session-timelineManually: put the files in place
.devin/skills/session-timeline/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about session-timeline
How to install session-timeline in Claude Code?
Run npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline -a claude-code.
What does session-timeline do?
It pulls session logs from Agent Monitor, computes individual tool durations, and formats the entire run into an ordered Markdown table with error and compaction annotations.
What is required to run session-timeline?
The Agent Monitor dashboard must be running locally; if the API endpoints are unreachable, run npm start in the monitor repository root.
Source text
SKILL.md · MIT
--- name: session-timeline description: > Render an ordered timeline of one Claude Code session's events (every event type) with per-event durations and tool names, reconstructed from Agent Monitor data. Pairs PreToolUse with PostToolUse to compute tool durations and surfaces gaps, errors, and compaction points. Use when reconstructing what happened in a session step by step. --- # Session Timeline Reconstruct the chronological event timeline of a single Claude Code session. ## Input The user provides: **$ARGUMENTS** - A **session ID** to time-line, or - "latest" / "last" for the most recent session. ## Data Sources | Endpoint | Returns | |----------|---------| | `GET /api/sessions/:id` | session header: status, model, cwd, started_at, ended_at, cost, metadata (thinking_blocks, turn_count, total_turn_duration_ms) — and nested events | | `GET /api/events?session_id=X` | the full event stream: event_type (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, Notification, Compaction, APIError, TurnDuration), tool_name, summary, data, timestamp | ## Report Sections ### 1. Resolve & header If "latest", `GET /api/sessions?limit=1` to get the id, then `GET /api/sessions/:id`. Print a one-line header: id, status, model, cwd basename, started_at → ended_at, turn_count, total_turn_duration_ms, cost. ### 2. Build the ordered timeline `GET /api/events?session_id=X`. Sort strictly by `timestamp`. For each event emit a row with: relative offset from `started_at` (e.g. `+00:03.412`), event_type, tool_name (when present), and a one-line `summary`. ### 3. Compute durations Pair each `PreToolUse` with its matching `PostToolUse` (same tool_name, next occurrence) and show the tool's wall-clock duration. For `TurnDuration` events use the recorded duration directly. Flag any `PreToolUse` with no matching `PostToolUse` as **unclosed**. ### 4. Annotate notable points Mark `APIError` (❌), `Compaction` (⚠️ context compressed), `SubagentStop` (subagent finished), `Notification` (ℹ️), and any timeline gap > 30s between consecutive events as an idle window. ### 5. Tallies Event count by type, total tool time vs. session wall time, and the longest single tool call. ## Output A Markdown table — `offset | event_type | tool_name | duration | summary` — in strict timestamp order, preceded by the header line and followed by the tallies. Durations in ms or `mm:ss.mmm`; currency as USD to 4 decimal places. Never invent a duration when a PostToolUse is missing — label it `unclosed`. If the dashboard is unreachable, tell the user to start it with `npm start` from the repo root.
© hoangsonww · MIT · hoangsonww/Claude-Code-Agent-Monitor