Skip to main content
skill CX Codex

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.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill session-timeline -a claude-code
Open on GitHub

What 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-code

2Manually: put the files in place

~/.claude/skills/session-timeline/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/session-timeline/

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

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set60

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor