report_smokelisted
Install: claude install-skill zapgun-ai/clawback
# clawback report viewer smoke test
Run `.skills/report_smoke/scripts/report_smoke.sh` from the project root:
```bash
.skills/report_smoke/scripts/report_smoke.sh
```
Environment variables (optional):
- `CLAWBACK_REPORT_DIR` — runs directory to serve (default `./runs`)
It needs at least one completed run on disk (a subdir with a parseable
`summary.json`). The repo ships `runs/smoke` and `runs/L0-tier1`; the L0-tier1
run also contains the sensitive `proxy.*.log` + `turns.*.ndjson` siblings, which
is exactly what the non-exposure assertions check against.
No upstream and no API key are required — report routes never proxy to
Anthropic. The proxy boots over plain HTTP on a free high port and is torn down
on exit. Exit code is the number of failed assertions (0 = all green).
What the script verifies:
1. **Static + base injection** — `/_proxy/report/` serves index.html with
`__BASE__` replaced by the real `/_proxy/report/` base href (no literal
`__BASE__` leaks); `report.js`/`report.css` serve with correct MIME types.
2. **Dynamic routes against real analyzer output** — `/runs` lists the on-disk
runs newest-first; `/data?run=L0-tier1` returns summary (carrying the
`tokens` reclaim block) + charts + csvBytes; `/chart/<id>/tokens_saved.svg`
serves that SVG by name (the same route also serves the bare
`tokens_saved.bg.svg` share-card background); `/csv/<id>` serves a CSV
download.
3. **Security (allowlist is the control; traversal guards are depth)** — th