Drive a reproducible HTTP replay load against a running clawback proxy. Replays one captured /v1/messages fixture at a load profile's inter-turn gap schedule, with built-in carry-over control (fresh path-mode session id + per-block cache nonce). Auth is an OAuth bearer (CLAWBACK_OAUTH_TOKEN), never an Anthropic API key; pre-flights the proxy and bearer before spending tokens. Use to generate clean, per-knob, deterministic-timing traffic for the analyzer; pair with .skills/drive (the faithful ...
Scanned 8/31/2026
Install to Claude Code
npx -y skills add zapgun-ai/clawback --skill replay --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Replay?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/zapgun-ai-replay)More formats (shields.io, HTML) on the badges page.
---
name: replay
description: Drive a reproducible HTTP replay load against a running clawback proxy. Replays one captured /v1/messages fixture at a load profile's inter-turn gap schedule, with built-in carry-over control (fresh path-mode session id + per-block cache nonce). Auth is an OAuth bearer (CLAWBACK_OAUTH_TOKEN), never an Anthropic API key; pre-flights the proxy and bearer before spending tokens. Use to generate clean, per-knob, deterministic-timing traffic for the analyzer; pair with .skills/drive (the faithful PTY arm) to cross-check.
---
# clawback HTTP replay load driver
Run `.skills/replay/scripts/replay_load.sh` from the project root. It pre-flights (proxy
reachable? `CLAWBACK_OAUTH_TOKEN` bearer set?) and then forwards every argument
to `benchmark/bin/replay.js`. Data is captured by the **proxy's** `--turn-log`,
not by this driver — start the proxy (with its own turn-log) via
`.skills/monitor` first.
## Auth: OAuth bearer, never an API key
There is **no Anthropic API key** here. A real run forwards
`Authorization: Bearer $CLAWBACK_OAUTH_TOKEN` — the same OAuth credential
`claude` sends (Claude Max) — which clawback then forwards upstream. If you'd
rather not handle the bearer directly, drive real traffic through the PTY arm
(`.skills/drive`), which uses your actual `claude` login.
## Spends real tokens
A non-`--dry-run` run sends real `/v1/messages` requests against your
Anthropic limits — the very thing clawback stretches. Budget it (cap
`--turns`, use the cheap Haiku fixture for plumbing). `--dry-run` needs no
bearer and no proxy.
## Usage
```bash
# inspect the fixture + planned gap schedule, no proxy/bearer, no spend:
.skills/replay/scripts/replay_load.sh --dry-run --profile L0 --turns 5
# real block (proxy must be up with a --turn-log; bearer forwarded as
# Authorization, never an API key):
CLAWBACK_OAUTH_TOKEN=… .skills/replay/scripts/replay_load.sh \
--profile L2 --turns 200 --fixture benchmark/fixtures/ccode.json \
--port 8787 --session-id A5-L2
```
## Key options (forwarded to replay.js; see its header for the full list)
- `--profile L0|L1|L2|L3|L4` — inter-turn gap range (mirrors `.skills/drive`).
- `--turns N`, `--gap-sec N` (fixed-gap override for fast mechanics tests).
- `--fixture PATH` — the `/v1/messages` body to replay.
- `--session-id ID` — path-mode SESSION KEY; **use a fresh one per block**.
Omitted → auto-minted per run.
- `--shared-cache` — skip the per-block cache nonce (measure a *warm* start
across runs). Default is FRESH: a unique nonce is prepended to `system` so
Anthropic's prefix cache starts cold for the block (carry-over control).
- `--anthropic-beta STR` — defaults to a realistic value including
`extended-cache-ttl-2025-04-11`; required for arm A2 (1h-TTL) to be
faithful, because clawback forwards but does not add this beta.
- `--stream`, `--model ID`, `--transcript PATH`.
## Fixture fidelity (read before quoting absolute numbers)
The shipped `benchmark/fixtures/ccode.json` is a **sanitized real capture**
(one Claude Code turn captured 2026-06-02 via `.skills/capture`; identifiers
and personal context scrubbed, `cache_control` breakpoints and `cch` structure
untouched). It is faithful in shape, but Claude Code's prompt evolves with
every release — for headline numbers on *today's* build, mint a fresh body
with `.skills/capture` (it drives one real claude turn through a
`--capture-body` proxy and promotes the pristine dump to a fixture), then pass
it here with `--fixture`. Or lean on `.skills/drive` (the faithful
real-`claude` arm).
## After a run
When both arms' turn-logs are collected, analyze with `.skills/bench`:
```bash
node benchmark/bin/analyze.js --out runs/report-$(date +%s) \
--label A0=runs/A0.ndjson --label A5=runs/A5.ndjson
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!