wisp-diagnoselisted
Install: claude install-skill Samuel0101010/wisp-orchestrator
# WISP — Diagnose Run
Inspect a run's event timeline to figure out what failed and why.
> **Platform note**: snippets below show both bash and PowerShell forms. Pick the one matching the user's shell. The bash form also runs from Git Bash / WSL on Windows.
## Inputs
- **runId**: the run UUID. Ask the user if not provided.
## Steps
1. **Fetch the events**:
```bash
# bash
curl -s "http://127.0.0.1:${WISP_PORT:-4400}/api/runs/<runId>/events?limit=500"
```
```powershell
# PowerShell
$port = if ($env:WISP_PORT) { $env:WISP_PORT } else { 4400 }
Invoke-RestMethod -Uri "http://127.0.0.1:$port/api/runs/<runId>/events?limit=500"
```
Response: `{"events": [{"type":"...", "payload":..., ...}, ...]}` ordered oldest-first.
2. **Show the timeline**, condensed: print one line per event of interest. Skip noisy types (`task.text-delta`, `task.usage` — print usage totals at the end instead). Format:
```
<timestamp> <event type> <task id> <one-line summary>
```
3. **Highlight failures**: for each `task.failed`, `harness.verify-failed`, `qa.replan-triggered`, `qa.replan-exhausted`, `rate-limit.hit`, `run.paused` event, print the FULL payload (not a one-liner). Especially:
- `harness.verify-failed.payload.failures[*]` — kind, cmd, exitCode, tail
- `harness.verify-failed.payload.output` — full output (truncate to last 100 lines if huge)
- `qa.replan-triggered.payload.reason` — what QA reported
4. **Token & duration totals**: query `/api/ru