mcpbeat

Session Timeline

hoangsonww/session-timeline

> 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.

656 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
867
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline

The instruction itself

10 sections, as written by the author

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.

How to use it

Copy the folder

Take hoangsonww/session-timeline from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.