fetching-claude-docs
Use PROACTIVELY before writing or modifying any Claude Code component (subagent, skill, hook, rule, slash command, plugin manifest, settings.json, MCP config) to fetch the current official spec from code.claude.com and avoid drifting from up-to-date best practices. Use when user asks 'what is the official spec for X', 'is this the right way to do Y', 'check Anthropic docs for Z'. MUST BE USED at Task 0 of writing-subagents, writing-skills, writing-hooks, writing-rules, writing-claude-md before any design decision.
What this skill does
# Fetching Claude Docs
## Overview
**Fetching Claude docs IS pulling the latest official Anthropic specification before designing or reviewing any Claude Code component.**
This skill exists because the project has historically drifted from official docs (e.g. self-invented `<law>` block removed in v7.1, invalid `context: fork` on agents fixed in v9.3, `inherit` anti-pattern formalized only in v10.9.2). Always pull current spec rather than rely on cached memory.
**Core principle:** Return official source verbatim with URL. Do NOT paraphrase — paraphrasing reintroduces drift.
**Violating the letter of the rules is violating the spirit of the rules.**
## Routing
**Pattern:** Skill Steps
**Handoff:** none
**Next:** caller skill resumes its Task 1 with fetched spec as input
## Task Initialization (MANDATORY)
Before ANY action, create task list using TaskCreate:
```
TaskCreate for EACH task below:
- Subject: "[fetching-claude-docs] Task N: <action>"
- ActiveForm: "<doing action>"
```
**Tasks:**
1. Identify component type and question
2. Resolve URL from mapping table
3. Fetch official spec via WebFetch
4. Return verbatim excerpt + URL to caller
Announce: "Created 4 tasks. Starting execution..."
## Task 1: Identify Component Type and Question
**Goal:** Pin down what to fetch.
**Inputs expected from caller:**
- `component`: one of `subagent | skill | hook | rule | slash-command | plugin | plugin-marketplace | settings | mcp | output-style | statusline | memory | agent-team | best-practices`
- `question`: specific aspect (e.g. "frontmatter fields", "tool inheritance", "trigger description format")
**If caller did not provide:** ask user via AskUserQuestion before fetching.
**Verification:** `component` is a recognizable Claude Code concept (subagent, skill, hook, etc.) — no static list to match against; llms.txt is the authoritative source in Task 2.
## Task 2: Resolve URL from llms.txt
**Goal:** Pull the official URL index and locate the page for this component. **`llms.txt` is the only source of truth — no static URL table is kept in this skill.**
**Action:**
```
WebFetch
url: https://code.claude.com/docs/llms.txt
prompt: "Return all entries related to: <component>. Include both
reference and guide URLs if both exist. Quote the URLs verbatim."
```
Then pick the URL matching the question type:
- spec / fields / schema / frontmatter → reference page (e.g. `hooks.md`)
- workflow / usage / examples → guide page (e.g. `hooks-guide.md`)
- both relevant → fetch reference first, guide second in Task 3
**Cache:** WebFetch has built-in 15-minute cache. The same `llms.txt` request in the same session is free, so calling this skill multiple times per session has near-zero overhead. Cross-session cost is one ~5KB fetch — negligible.
**Why no static URL map:** Hard-coded URLs drift (Anthropic restructures docs). `llms.txt` is small enough that fetching it every time is cheaper than maintaining a stale map.
**Verification:** Resolved URL ends with `.md` and is on `code.claude.com`.
## Task 3: Fetch Official Spec
**Goal:** Pull live content from Anthropic.
**Action:**
```
WebFetch
url: <resolved URL>
prompt: "Extract the section addressing: <question>. Return verbatim
excerpts including all rules, frontmatter fields, examples, and
warnings. Do NOT paraphrase. Include section headers."
```
**Cache:** WebFetch has built-in 15-minute cache — repeated calls in the same session are cheap.
**On redirect:** Follow the redirect URL with a fresh WebFetch.
**On failure (non-2xx):** Re-fetch `https://code.claude.com/docs/llms.txt` (bypassing cache if possible) to confirm whether the URL has moved or been removed. Report the change to caller.
**Verification:** Response contains a section header matching the question topic.
## Task 4: Return to Caller
**Goal:** Hand back structured spec for the caller skill to consume.
**Output format (return to caller):**
```yaml
source: <full URL>
fetched_at: <ISO timestamp>
component: <component>
question: <original question>
spec_excerpt: |
<verbatim official text — preserve markdown formatting>
key_rules:
- <rule 1 quoted from official text>
- <rule 2 ...>
official_examples:
- <example block as written in docs>
warnings:
- <any "Important" / "Note" / "Warning" callouts from the docs>
```
**Verification:** YAML parses; `source` is a valid URL; `spec_excerpt` is non-empty.
## When to Trigger This Skill
| Trigger | Action |
|---|---|
| User says "create/write/modify a [component]" | Fetch component spec BEFORE design |
| User asks "what's the official way to..." | Fetch relevant docs |
| Reviewer flags a frontmatter field as suspicious | Fetch field spec to confirm |
| Plugin maturity migration | Fetch plugins-reference + plugin-marketplaces |
| Editing settings.json or hooks | Fetch settings + hooks reference |
| Designing model selection or tool restrictions | Fetch sub-agents.md |
## Red Flags - STOP
These thoughts mean you're rationalizing. STOP and reconsider:
- "I already know the spec from training data"
- "We just fetched this last week, it can't have changed"
- "The cached SKILL.md text is enough"
- "Paraphrasing the spec is fine, saves tokens"
- "Skip the fetch, the user is in a hurry"
**All of these mean: drift is about to happen. Fetch.**
## Common Rationalizations
| Excuse | Reality |
|--------|---------|
| "I know the official spec" | Anthropic ships docs updates weekly. Your knowledge is stale by definition. |
| "WebFetch is slow" | 15-min cache makes repeats free. First fetch < 3s. |
| "Just summarize from memory" | Summary = drift source. v7.1's `<law>` removal happened because nobody fetched. |
| "User won't notice" | Reviewer will. Or six months later when official spec changed. |
| "Token cost too high" | Drift cost is higher: rework, breaking changes, false confidence. |
## Flowchart: Doc Fetch Flow
```dot
digraph fetch_flow {
rankdir=TB;
start [label="Need official spec", shape=doublecircle];
identify [label="Task 1: Identify\ncomponent + question", shape=box];
has_input [label="Inputs\ncomplete?", shape=diamond];
ask [label="AskUserQuestion", shape=box];
resolve [label="Task 2: Resolve URL\nfrom mapping table", shape=box];
known [label="Component\nknown?", shape=diamond];
discover [label="Fetch llms.txt\nto discover", shape=box];
fetch [label="Task 3: WebFetch\nofficial spec", shape=box];
success [label="Fetch\nsuccess?", shape=diamond];
return [label="Task 4: Return\nstructured YAML", shape=box];
done [label="Caller resumes\nwith spec", shape=doublecircle];
start -> identify;
identify -> has_input;
has_input -> ask [label="no"];
ask -> resolve;
has_input -> resolve [label="yes"];
resolve -> known;
known -> discover [label="no"];
discover -> fetch;
known -> fetch [label="yes"];
fetch -> success;
success -> return [label="yes"];
success -> discover [label="no — URL stale"];
return -> done;
}
```
## References
- Master index: https://code.claude.com/docs/llms.txt — **the only source of truth**
This skill intentionally keeps no static URL table. `llms.txt` is small (~5KB) and Anthropic restructures docs occasionally; fetching the live index every time is cheaper and safer than maintaining a stale map.
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.