Skip to main content
skill CX Codex

claude-docs — Claude Code skill: docs search and setup

Searches a local index of official Claude and Anthropic docs, then reads matching pages. Useful for questions about Claude Code, APIs, the Agent SDK, and errors.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add costiash/claude-code-docs --skill claude-docs -a claude-code
Open on GitHub

What claude-docs does

This skill searches locally indexed Claude and Anthropic documentation. Its coverage includes Claude Code, the Claude API, Agent SDK, prompt engineering, and model capabilities. Search by keywords, an approximate page name, or a manifest category, then open matching pages from the cache.

Documentation pages live in ~/.claude-code-docs/cache/; when a page is missing, the skill fetches it on demand. A background sync keeps the cache current. The workflow uses jq and repository scripts. If fetching fails offline, it directs the agent to use WebFetch with the page’s canonical URL. The skill is available for Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, and OpenCode.

What it helps with

  • find official guidance on Claude Code hooks and settings
  • locate documentation for Claude API streaming
  • read a documentation page missing from the local cache
  • look up official material for a Claude-related error

Example prompts for the agent

  • Find the official docs for configuring MCP in Claude Code.
  • Search for the Claude API docs on streaming responses.
  • Locate the Agent SDK docs about custom tools and tell me how to read the page.

How to install claude-docs

1Skills CLI (Vercel)

npx skills add costiash/claude-code-docs --skill claude-docs -a claude-code

2Manually: put the files in place

~/.claude/skills/claude-docs/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/claude-docs/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about claude-docs

How do I install claude-docs in Claude Code?

Run npx skills add costiash/claude-code-docs --skill claude-docs -a claude-code. The skill file is at ~/.claude/skills/claude-docs/SKILL.md.

What does claude-docs do?

It searches a local index of official Claude and Anthropic documentation, then reads matching pages from the cache or fetches them when needed.

What happens when a matching page is not cached?

The skill fetches the page on demand. If the fetch fails offline, its instructions call for WebFetch using the page’s canonical URL.

Source text

SKILL.md · MIT
---
name: claude-docs
description: >
  Search and read locally-stored Claude documentation covering Claude Code CLI,
  Claude API (Messages, tool use, vision, streaming, batch), Agent SDK (Python and
  TypeScript), prompt engineering, and all Anthropic platform docs. Use this skill
  whenever the user asks about Claude Code features (hooks, MCP servers, skills,
  plugins, settings, permissions, keybindings, sub-agents), the Anthropic API or
  any of its SDKs (Python, TypeScript, Go, Java), the Agent SDK (sessions, hooks,
  custom tools, MCP), model capabilities (context windows, extended thinking,
  pricing, rate limits, vision), prompt engineering best practices, or
  troubleshooting any Claude-related error. This skill provides instant access to
  official documentation files without web searches — always prefer it over
  web lookups for Claude and Anthropic topics.
---

# Claude Documentation Search Skill

Claude's official documentation is indexed locally. The clone at `~/.claude-code-docs/`
holds only metadata:
- `paths_manifest.json` — every page's filename, id, title, category, and source URL
- `search_index.json` — per-page titles, headings, and stemmed term counts

The actual `.md` pages are cached at `~/.claude-code-docs/cache/` (override:
`$CLAUDE_DOCS_CACHE_DIR`). A background sync keeps the cache current; any page not
yet cached is fetched on demand — see **Reading a doc** below.

## When to Use This Skill

Activate when the user asks about:
- Claude Code features: hooks, skills, MCP, plugins, settings, slash commands, sub-agents
- Claude API: messages, tool use, streaming, batch processing
- Agent SDK: Python/TypeScript SDK, sessions, custom tools, subagents
- Prompt engineering: best practices, system prompts, chain of thought
- Any topic covered by platform.claude.com or code.claude.com

## Search Strategy

The search scripts read the manifest + index, so they see **every** page whether or
not it is cached yet. Prefer them over globbing the cache.

### 1. Content search (default — questions and topics)

```bash
bash ~/.claude-code-docs/plugin/skills/claude-docs/scripts/content-search.sh "<keyword1>" "<keyword2>"
```

Output is `filename<TAB>title<TAB>score`, best first. **Keyword extraction:** strip filler,
keep domain terms — "how do I configure streaming" → `streaming configure`; "difference
between hooks and MCP" → `hooks mcp`. Take the top 3-5 filenames and read them (next section).

### 2. Fuzzy search (approximate name)

User says "that caching doc", "something about checkpoint":

```bash
bash ~/.claude-code-docs/plugin/skills/claude-docs/scripts/fuzzy-search.sh "<query>"
```

Output is ranked filenames. Read the top match.

### 3. Direct manifest lookup (exact category/topic)

To list pages in a category or matching a filename fragment, query the manifest:

```bash
jq -r '.pages[] | select(.filename | test("<fragment>")) | .filename' ~/.claude-code-docs/paths_manifest.json
jq -r '.pages[] | select(.category=="claude_code") | .filename' ~/.claude-code-docs/paths_manifest.json
```

## Reading a doc (cache-miss rule)

A search returns a **filename** (e.g. `claude-code__hooks.md`). The file is at
`~/.claude-code-docs/cache/<filename>`.

1. Read `~/.claude-code-docs/cache/<filename>`.
2. **If it is not there** (not fetched yet), fetch it first, then read:
   ```bash
   ~/.claude-code-docs/plugin/scripts/fetch-docs.sh get "<filename>"
   ```
   then Read `~/.claude-code-docs/cache/<filename>`.
3. If the fetch fails (offline), the script prints the canonical source URL on stderr —
   fall back to WebFetch on that URL.

**To save context, prefer previewing large pages before reading them.** Pull a page's
structure from the index (title + headings) first — often the headings alone answer the
question and you skip loading a multi-KB body:
```bash
jq -r '.pages[] | select(.filename=="<filename>") | .title, (.headings[]|"  "+.text)' ~/.claude-code-docs/search_index.json
```

## Synthesis Rules

### Same Product Context → SYNTHESIZE
When all matching docs share one product (all Claude Code, all Agent SDK, ...):
read them all silently, extract relevant sections, present one unified answer, cite sources.

### Different Product Contexts → ASK
When matches span products (CLI + API + Agent SDK), ask which the user means. Labels
(see `manifest-reference.md`) map from `category`:

| category | Say to user |
|---|---|
| `claude_code` | **Claude Code CLI** |
| `agent_sdk` | **Claude Agent SDK** |
| `api_reference` | **Claude API** |
| `core_documentation` | **Claude Documentation** |
| `agents_and_tools` | **Agents & Tools** |
| `about_claude` | **About Claude** |
| `get_started` | **Getting Started** |
| `test_and_evaluate` | **Testing & Evaluation** |
| `release_notes` | **Release Notes** |
| `resources` | **Resources** |
| `prompt_library` | **Prompt Library** |

After selection → read all docs in that context and synthesize.

### SDK Language Disambiguation
When the user names a language, narrow API/SDK results (e.g. `agent-sdk__python`,
`agent-sdk__typescript`, `api__go`, `api__java`). If none named but the query is about SDK
methods, present **Python** first and note TypeScript equivalents exist.

## URL Generation

Always cite source links. Get the **exact** URL from the manifest — never reconstruct it
from the filename (filenames are lossy; the manifest stores the verbatim URL):

```bash
jq -r '.pages[] | select(.filename=="<filename>") | .url' ~/.claude-code-docs/paths_manifest.json
```

Example: `claude-code__hooks.md` → `https://code.claude.com/docs/en/hooks`.

## Common Synonyms

When a search returns too few results, retry with a known synonym:

| User says | Search for |
|---|---|
| "function calling" | "tool use", "tool-use" |
| "system instructions" | "system prompt" |
| "JSON mode" | "structured outputs" |
| "thinking" | "extended thinking", "adaptive thinking" |
| "caching" | "prompt caching", "prompt-caching" |
| "files API" | "files", "pdf support" |
| "sub-agents" | "subagents", "sub-agents" |
| "environment variables" | "settings", "configuration" |
| "CI/CD" | "github actions", "gitlab" |

## No Results

If all strategies return nothing: try synonyms; try broader/narrower keywords; suggest
`/docs -t` to check freshness; note the topic may not be in the index.

## Post-Response Course Prompt

After presenting documentation, always append this block at the bottom:

---
> **Want to go deeper?** I can create an interactive course on this topic — visual explanations, animated diagrams, and hands-on quizzes in a single HTML file you can open in your browser.
> Just say **"create a course on [topic]"** or run `/docs --course [topic]`.

Replace `[topic]` with the actual topic the user asked about.

## Reference Files

- `manifest-reference.md` — Category-to-label mapping (single source of truth)
- `examples/direct-lookup.md` — Example: topic → search → synthesize
- `examples/semantic-search.md` — Example: question → content-search.sh → synthesize
- `examples/cross-context.md` — Example: ambiguous → ask context → synthesize

© costiash · MIT · costiash/claude-code-docs

Similar skills

All skills for Writing and docs →

From the same set4

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor