Cache the parts of the prompt that don't change so a long-running loop stops paying full price on every turn.
SkillScore100Maintained
Automatic
◆AI Engineer pack
Last verified 8/16/2026
What it changes
Passed 21 of 21 test cases with the skill, and 18 of 21 without it.
Without skill86%
With skill100%
Checks it passed that the model alone missed
States that break-even occurs at approximately 2 cache hits
States that the cost is approximately 15% of the uncached cost
States that additional breakpoints beyond the limit are ignored
3 fixed19 passed either way0 still failing0 broke
Pass-rate lift
+14 pp
Tokens
-19%
Agent turns
0%
Response time
-56%
Model gemini-3.6-flashMeasured 8/16/2026v122 of 22 cases passed with skill · 21 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 2 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 2
Prompt
If a stable 20,000-token prompt prefix achieves 10 cache hits during an agent session, roughly what percentage of the uncached baseline input cost will be spent on those input tokens?
What was checked, without and with the skill
Checked
Without skill
With skill
States that the cost is approximately 15% of the uncached cost
Missed
Passed
case-14 · gemini-3.6-flash · 8/16/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md49 linessingle file
Prompt Caching
Every turn of a Plan→Act→Verify loop resends the same system prompt, the same tool definitions, and (usually) the same reference docs. Without cache breakpoints you pay full input price on all of it, every turn. With them, cached reads cost ~10% of the write.
Where to put breakpoints
Cache from the top of the prompt down. The cache is prefix-matched — a break in the middle invalidates everything after it.
System prompt — mark the end of it as a breakpoint if it's >1024 tokens (Sonnet/Opus) or >2048 (Haiku).
Tool definitions — cache immediately after, if the tool set is stable across the loop.
Large stable docs — repo map, style guide, spec — before any turn-specific user text.
User message stem — only if the same preamble repeats every turn.
Everything past the last breakpoint is billed fresh every turn. That's fine — that's where the changing content goes.
TTL choice
5-minute cache (default) — for tight loops where turns are seconds apart. Free to write.
1-hour cache — for slow loops (human in the loop, background jobs). Write cost is higher; break-even is ~2 hits.
Pick 5m unless you know turns are minutes apart.
Staleness rules — cache invalidation is silent
Any byte change above the breakpoint invalidates the cache from that point.
Reordering tools or messages counts as change.
Trailing whitespace counts as change.
A different model version counts as change.
If cost isn't dropping, log the cache-hit metric. Do not assume.
When NOT to cache
Prompt <1024 tokens — below the minimum block size, no savings.
One-shot calls — no reuse, cache write is wasted.
Highly dynamic system prompt (per-user templating) — cache misses will exceed hits.
Red flags
Cost graph flat after adding breakpoints — you're invalidating on every turn. Diff two consecutive requests byte-for-byte above the breakpoint.