| name | doc-cache |
| description | Transparent read-through cache for documentation lookups. Checks cache before WebFetch, caches results with expiration, garbage collects stale entries. TRIGGER when: fetching docs, API references, technical documentation, or user asks to look up library/framework usage. DO NOT TRIGGER when: user provides inline code or docs directly, or the information is already in context. |
| argument-hint | [topic | clean | list | stats] |
| allowed-tools | ["Bash","Read","Write","WebFetch","WebSearch"] |
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
-
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
-
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