Skip to content
Back to skills

Prompt Caching Advisor

ASecurity

Analyzes a prompt or conversation structure and identifies the highest-value cache breakpoints — where to insert cache_control checkpoints to minimize repeated token processing. Use when designing or optimizing a Claude API integration that uses prompt caching, when input costs are dominated by a static system prompt or few-shot block, or when a multi-turn conversation reprocesses the same context on every turn.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 1, 2026
ai-agentspythongoapidatabase

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 1, 2026

npx -y skills add sananthanarayan/skilldrop --skill prompt-caching-advisor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Prompt Caching Advisor?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Prompt Caching Advisor
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sananthanarayan-prompt-caching-advisor/badge)](https://www.skillsdirectory.com/skills/sananthanarayan-prompt-caching-advisor)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: prompt-caching-advisor
description: Analyzes a prompt or conversation structure and identifies the highest-value cache breakpoints — where to insert cache_control checkpoints to minimize repeated token processing. Use when designing or optimizing a Claude API integration that uses prompt caching, when input costs are dominated by a static system prompt or few-shot block, or when a multi-turn conversation reprocesses the same context on every turn.
---

# prompt-caching-advisor

Identifies where to place `cache_control` checkpoints in a Claude API prompt or conversation structure to minimize repeated token processing. The savings are real — a cache hit on a 10,000-token system prompt costs ~90% less than re-processing it — but the placement matters. Wrong breakpoints waste the minimum cacheable block size or cache dynamic content that never hits.

## How to respond

### Step 1 — Understand the structure

Ask the user to share (or describe) their prompt structure. You need:
- The system prompt (or a description of what's in it and roughly how long)
- Any few-shot examples passed in messages
- The shape of the variable user turn (what changes per request)
- Whether this is single-turn or multi-turn

If they share code, read the messages array. The cache breakpoint goes at the end of the block you want cached — a `cache_control: {"type": "ephemeral"}` on the **last content block** of a message causes everything up to and including that block to be cached.

### Step 2 — Classify each block

For each distinct block, classify it:

| Class | Characteristics | Cache? |
|---|---|---|
| **Static** | Same on every request (system instructions, reference docs, few-shot examples) | Yes — put breakpoint at the end |
| **Quasi-static** | Same for a session or user, different across users (user profile, project context) | Yes, with session-scope awareness |
| **Dynamic** | Changes every request (current user message, real-time data, timestamps) | No — never cache |

### Step 3 — Recommend breakpoints

State exactly where to place each `cache_control` checkpoint. Show the code:

```python
messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "<static few-shot examples here>",
                "cache_control": {"type": "ephemeral"}  # breakpoint 1 — caches system + examples
            },
            {
                "type": "text",
                "text": user_query  # dynamic — no cache_control
            }
        ]
    }
]
```

For system prompts, the cache breakpoint goes on the last block of the system array.

### Step 4 — Estimate cache hit rate

Give a rough hit rate estimate:
- **Near 100%**: static system prompt, fixed few-shot examples, no dynamic injection into the cached block
- **~session %**: user-context cached per-session; hits on turn 2+, misses on first turn per user
- **Low**: anything that embeds timestamps, UUIDs, or per-request data in the cached block

### Step 5 — Warn on sub-threshold blocks

Warn if a block the user wants to cache is likely under the minimum cacheable size:
- **Haiku**: ~1,024 tokens minimum
- **Sonnet / Opus**: ~2,048 tokens minimum

A block under the minimum is processed as normal — no error, just no cache savings. Calculate roughly: 1 token ≈ 4 characters of English prose. A 2,000-character system prompt (~500 tokens) won't benefit on Sonnet/Opus.

### Step 6 — Output format

Produce:
1. **Annotated structure** — show the messages array with `cache_control` placements marked and commented
2. **Cache strategy summary** — one paragraph: what is cached, why, expected hit rate, and the dominant cost driver before and after

## Anti-patterns

- **Caching dynamic content.** If a user query, timestamp, or per-request database result is inside a cached block, every request is a cache miss — the structure defeats itself. Identify and flag before recommending.
- **Recommending a cache on a block under the minimum size.** A 300-token block doesn't cache on Sonnet/Opus. The API doesn't error — it just processes normally. Always check size before recommending.
- **Recommending four or more breakpoints.** More than three breakpoints on a single request is almost always a sign the prompt structure should be simplified, not patched with caches.

Use `token-budget-estimator` after this skill if the user also wants to size the token budget across components.

## Quality bar

- **Never cache dynamic content.** A user query, a timestamp, a database result retrieved per-request — these must not appear in a cached block. If the user's structure embeds dynamic content in an otherwise static block, flag it before recommending the cache.
- **One breakpoint per logical boundary.** A system prompt with three sections (instructions, reference docs, examples) can have up to three breakpoints. More than four breakpoints on a single request is a signal the structure needs rethinking.
- **The last block caches everything before it.** This is the most common misunderstanding — the cache breakpoint is not a marker for just that block, it's a marker for the entire prefix up to that point.

Files in this skill

  • SKILL.md5.1 KB
  • manifest.json928 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.