Purpose
Transparent caching layer for documentation lookups. Before fetching docs from the web, check the cache. On miss or expiry, fetch live and cache the result. Saves tokens and time on repeated lookups. Requires python3 in PATH (stdlib only).
Variables
CACHE_DIR: ~/.claude/doc-cache/cache # Where cached docs live CACHE_TOOL: python3 ./scripts/cache.py # Cache management CLI (relative to skill dir) MAX_AGE_DAYS: 14 # Cache expiration in days
Workflow
Check Cache
- Search for a cached doc matching the topic:
<CACHE_TOOL> find "<topic>" - The tool searches filenames and frontmatter (url, title, description) for matches
- IF: hit and fresh (within MAX_AGE_DAYS) → go to step 4
- IF: hit but expired → go to step 2 (re-fetch)
- IF: miss → go to step 2
- Example:
<CACHE_TOOL> find "tanstack router"→HIT ~/.claude/doc-cache/cache/tanstack-router-api.md (3 days old) - Example:
<CACHE_TOOL> find "stripe webhooks"→MISS - Tool: Bash
- Search for a cached doc matching the topic:
Fetch Live
- Use WebFetch to grab the documentation from the web
- IF: URL known → fetch directly
- IF: only topic known → WebSearch first to find the right docs page, then WebFetch
- Example: WebFetch
https://tanstack.com/router/latest/docs/framework/react/api→ markdown content - Tool: WebFetch
Cache the Result
- Save to
<CACHE_DIR>/<slug>.mdwith frontmatter:--- url: <source URL> fetched: <YYYY-MM-DD> expires: <YYYY-MM-DD> title: <page title> description: <one-line summary> --- <content> - Slug derived from topic: lowercase, hyphens, no special chars (e.g. "TanStack Router API" →
tanstack-router-api) - IF: updating expired entry → overwrite the existing file
- Example: Save to
~/.claude/doc-cache/cache/tanstack-router-api.md - Tool: Write
- Save to
Read and Use
- Read the cached file and use it as authoritative reference
- Cite the source: "Per [title] docs (cached YYYY-MM-DD from URL)..."
- Example: Read
~/.claude/doc-cache/cache/tanstack-router-api.md→ answer user's question - Tool: Read
Garbage Collect (On Request)
- IF: user asks to clean up, or cache grows large
- Run:
<CACHE_TOOL> clean— removes all expired entries - Run:
<CACHE_TOOL> list— shows cached docs with age and status - Example:
<CACHE_TOOL> clean→Removed 3 expired entries. 8 docs remain. - Tool: Bash