verifylisted
Install: claude install-skill ludengz/claude-usage-dashboard
# Verifying claude-usage-dashboard changes
## Launch an isolated server instance
The sandbox blocks in-process listeners — start the server detached via
`Start-Process`. Port 3000 is often inside a Windows excluded port range;
8080 is known-safe. An explicit `PORT` fails fast instead of falling back.
```powershell
$env:PORT = "8080"
$env:CLAUDE_DASH_SYNC_DIR = "<scratch>\sync-verify" # see fixture injection below
$env:CLAUDE_DASH_MACHINE_NAME = "verify-local"
Start-Process -FilePath node -ArgumentList "server/index.js" `
-WorkingDirectory <repo> -WindowStyle Hidden `
-RedirectStandardOutput "<scratch>\server-out.log" -RedirectStandardError "<scratch>\server-err.log" -PassThru
```
Poll `server-out.log` for `running at` (startup sync of real logs takes up to
~60s the first time). Kill by PID and delete the temp sync dir when done.
## Fixture injection without touching real logs
`LOG_DIR` is hardcoded to `~/.claude/projects`, but when `CLAUDE_DASH_SYNC_DIR`
is set the server *reads* from that dir instead (multi-machine layout:
`<syncDir>/<machine>/<project-dir>/<session>.jsonl`). So:
1. Point `CLAUDE_DASH_SYNC_DIR` at a temp dir — startup sync copies real logs
into `<temp>/verify-local/` (real data appears in the UI for free).
2. Drop synthetic records under a second "machine" dir, e.g.
`<temp>/synthetic-box/-Users-test-Workspace-myfixture/sess.jsonl`.
Minimal parseable record (one JSONL line):
```json
{"type":"assistant","sessionId":"s1","timestamp":"2026-0