57dc91585d
Internal SmartGift build of a Claude Code monitoring dashboard. Lanes: a durable unit of parallel agent work, one per working directory, tracked across session restarts. Managed lanes are git worktrees the dashboard provisions and can reset or remove behind a three-check destroy guard and a counted preflight; adopted lanes are directories you already own and are never destroyable. Pipelines: a lane moves through pipeline stages. A stage the agent declares with evidence renders green; a stage inferred from the tool-event stream renders dashed amber and never counts as done. Detection is forward-only within a 30-minute window, and never writes the declared stage. Workspace: one page at /run with a lane grid, the selected lane's pipeline, and a full Claude console behind a disclosure.
58 lines
3.0 KiB
Markdown
58 lines
3.0 KiB
Markdown
---
|
||
description: >
|
||
Scan recent Claude Code activity for errors and failure signals across all
|
||
sessions using Agent Monitor data — APIError events and PreToolUse→PostToolUse
|
||
gaps (tools that started but never completed) — then group failures by tool and
|
||
model and rank them by frequency. Use when checking for errors or asking
|
||
"what's failing right now".
|
||
---
|
||
|
||
# Error Scan
|
||
|
||
Sweep recent events across sessions for error and failure signals, then rank them
|
||
by how often they occur and which tool or model produced them.
|
||
|
||
## Input
|
||
|
||
The user provides: **$ARGUMENTS**
|
||
|
||
This may be:
|
||
- empty or "all" — scan every failure signal (default)
|
||
- "api" — APIError events only
|
||
- "tools" — tool-failure gaps only
|
||
- a number N — limit the scan to the most recent N sessions
|
||
- a session ID — scan a single session
|
||
|
||
## Data Sources
|
||
|
||
| Endpoint | Returns |
|
||
|----------|---------|
|
||
| `GET /api/analytics` | `event_types` (counts per type incl. PreToolUse, PostToolUse, APIError), `tool_usage` (top 20), `daily_events` (365d) — fleet-wide failure baseline |
|
||
| `GET /api/events?session_id=X` | Per-session event stream: `event_type`, `tool_name`, `summary`, `data`, `timestamp` — locate `APIError` and unmatched `PreToolUse` |
|
||
| `GET /api/sessions?limit=N` | Sessions with `id`, `status`, `model`, `started_at` — pick the recent window and attribute failures to a model |
|
||
|
||
## Report Sections
|
||
|
||
### 1. Scope
|
||
Resolve `$ARGUMENTS` to a session set: pull `GET /api/sessions?limit=N` (default 50, ordered by `started_at`). Report how many sessions and what time span are covered.
|
||
|
||
### 2. Fleet Failure Counts
|
||
From `GET /api/analytics` `event_types`, report total `APIError` count and the PreToolUse→PostToolUse gap: `gap = PreToolUse − PostToolUse` (unmatched tool starts = likely failures). State both as raw counts and as a share of `total_events`.
|
||
|
||
### 3. Group by Tool
|
||
For each session in scope, pull `GET /api/events?session_id=X`. Match each `PreToolUse` to its following `PostToolUse` by `tool_name`; unmatched starts are failures. Aggregate failures and `APIError` events per `tool_name`. Rank tools by failure frequency (descending).
|
||
|
||
### 4. Group by Model
|
||
Join failures to the owning session's `model` (from `GET /api/sessions`). Rank models by APIError count and tool-failure count.
|
||
|
||
### 5. Top Offenders
|
||
List the single most failure-prone tool, the most error-prone model, and the session with the most failures, each with its exact count and one-line `summary` excerpt from a representative event.
|
||
|
||
## Output
|
||
|
||
- A ranked Markdown table: tool/model | APIError count | tool-failure (gap) count | total failures | share of events.
|
||
- Rates as percentages to 2 decimals.
|
||
- Cite exact `event_type`, `tool_name`, and `session_id` values — never fabricate counts.
|
||
- End with the one failure pattern most worth investigating and a concrete next step.
|
||
- Read-only: only report what the API returns. If `curl` cannot reach `http://localhost:4820`, tell the user to start the dashboard with `npm start` from the repo root.
|