agentsclimarketplace

Claude cache guard

Skill 0x0funky/claude-cache-guard

Prevents prompt-cache thrash and runaway token burn in long or image-heavy agent sessions. Load BEFORE reading images/screenshots (visual QA, render checks, UI verification, diagram review) in a conversation that already has substantial history, when running long agentic loops with periodic wake-ups, or when the user asks why token usage / rate limits burn unusually fast. Teaches batched image reads, delegating vision work to isolated-context subagents, write-once notes instead of re-reading, and keeping large tool outputs out of context. Includes an audit script to measure a session's cache write/read ratio.From its SKILL.md

Install
npx -y skills add 0x0funky/claude-cache-guard

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.4 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Cache Guard — stop paying 700× overhead on context rewrites

The one mechanism to understand

Prompt cache is a prefix match with three tiers: tools → system → messages. Reads from cache cost 0.1× the base input price; writes cost 1.25× — a 12.5× spread. A long conversation is cheap as long as every call re-reads the cached prefix.

Any image anywhere in the request invalidates the entire messages tier. The next call rewrites the whole conversation history at the 1.25× write price. The rewrite cost equals the current context size — in an 800k-token session, one glance at a screenshot costs ~800k cache-write tokens, even though the image itself is ~1–2k tokens. Measured in production: 91% of a session's cost was image-triggered rewrites; the images themselves were 0.13% of the tokens.

Other full-rewrite triggers: cache TTL expiry (>5 min idle, next wake rewrites everything), model switch, tool-set / MCP change mid-session, editing earlier history. Details and pricing math: references/mechanism.md.

Rules

R1 — Batch image reads into one message

Reading 1 image and reading 10 images cost the SAME rewrite. Never look at screenshots one-by-one across turns. Accumulate paths, then read them all with parallel Read calls in a single message, and draw every conclusion in that turn.

R2 — Look once, write it down, never re-read

Immediately after viewing images, append findings to a notes file (e.g. qa-notes.md): filename → verdict → required fix. From then on cite the notes. Re-reading an image "to double-check" repeats the full-context rewrite.

R3 — Delegate vision to a subagent (best option when context is large)

A subagent has its own small, isolated context. Images it reads rewrite ITS few-k tokens, not your few-hundred-k, and its intermediate noise never enters your history. Use the Task/Agent tool (general-purpose works) with:

View these images and reply in TEXT ONLY — never return image data:
- <path1> — check: <what "correct" means for this image, stated concretely —
  e.g. no clipped or overlapping elements, expected text/labels present,
  values match the data given below>
- <path2> — check: <criteria>
Reference material (text only, if the check needs it): <paste the relevant
requirements, expected values, or style rules here>
For each image: PASS/FAIL, one-line reason, exact fix needed if FAIL.

The subagent's eyes are the same model — verdict quality depends on how concretely you state the criteria, so pass the "what does correct look like" context as text. Main session receives a short text verdict; its cached prefix stays intact. (Subagent calls may themselves skip caching — irrelevant: their context is tiny.)

R4 — If you must read inline, read early

Rewrite cost = context size at that moment. Front-load visual checks; don't defer them to the end of a long session. If the session is already huge, prefer R3 or a fresh session over inline reads.

R5 — Keep bulk data out of context

  • Verify renders/builds by exit code, file size, or a grep'd summary — not by dumping output into the conversation.
  • Read only the lines you need (offset/limit); never cat a large file or paste base64.
  • Write large intermediate results to files; pass paths, not contents.

R6 — Session hygiene for long-running agents

  • Work in continuous bursts. A giant session that idles >5 min pays a full rewrite on every wake — for periodic monitors, run each round as a fresh one-shot session (state on disk) instead of waking a huge conversation.
  • Clear/restart at work-unit boundaries in image-heavy workflows; persistent state belongs in files, not in the transcript.
  • Never switch model or add/remove tools (incl. MCP) mid-session — either one invalidates the whole cache.

Decision table

SituationDo
Context small (<~50k), a few images, one-time checkRead inline, all in ONE message (R1), note results (R2)
Context large (>~150k) OR repeated visual checksDelegate to subagent (R3)
Periodic loop with screenshots (monitor, render-watch)Fresh one-shot session per round (R6)
Image already viewed earlierUse notes; do NOT re-read (R2)
Need render/build verificationExit code / file size / grep, no dumps (R5)

Verify it's working

usage on each API response tells the truth: healthy sessions show cache_read_input_tokenscache_creation_input_tokens (aim ≥10:1; a write:read ratio near 1:3 or worse means thrash). To audit past sessions from transcripts:

node scripts/audit-session.mjs --hours 5          # rank recent sessions by burn
node scripts/audit-session.mjs --detail <sid8>    # per-call forensics for one session

Flags to look for in the output: IMG-REWRITE (image nuked the messages tier) and TTL-WAKE (idle >5 min, whole context rewritten on wake).

What ships with it: 5 files

19.2 KB alongside SKILL.md, 1 of them executable

references/

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.