skills/context7/SKILL.md
Up-to-date, version-specific library documentation and working code examples sourced from real project repos via the Context7 documentation aggregation API — covers 1000+ libraries (React, Next.js, Vue, Kubernetes, Go, Python, TypeScript, Prisma, Tailwind, and more). USE WHEN looking up API signatures, framework docs, version-specific behavior, code examples, library configuration, migration guides, OR before writing code against a library you might be guessing about. NOT FOR refactoring existing code, debugging business logic, general programming concepts, or libraries Context7 doesn't index (use web search instead). Grounds answers in real source documentation to prevent hallucinated APIs.
npx skillsauth add julianobarbosa/claude-code-skills context7Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Query up-to-date, version-specific documentation and code examples directly from source libraries via Context7's documentation aggregation platform.
| Benefit | Description | |---------|-------------| | Current APIs | No hallucinated or outdated patterns - documentation comes from actual sources | | Version-Specific | Gets docs for exact library versions you're using | | Code Examples | Real, working code extracted from actual documentation | | Broad Coverage | 1000+ libraries including React, Next.js, Vue, Go, Python, Kubernetes, etc. |
# Install dependencies
cd ~/.claude/skills/context7/Tools
bun install
# Optional: link binaries globally so c7-lookup / c7-resolve / c7-query are on PATH
bun link
# Optional: API key for higher rate limits
export CONTEXT7_API_KEY="ctx7sk_your_key_here" # context7.com/dashboard
| Tool | Purpose | Short form (after bun link) | Long form |
|------|---------|-------------------------------|-----------|
| lookup | Resolve + query in one shot | c7-lookup <library> <query> | bun src/cli/lookup.ts <library> <query> |
| resolve | Find Context7 library ID | c7-resolve <library> [query] | bun src/cli/resolve.ts <library> [query] |
| query | Query docs by known ID | c7-query <library_id> <query> | bun src/cli/query.ts <library_id> <query> |
All three CLIs accept the same flag set.
| Flag | Effect |
|------|--------|
| --json | Emit JSON on stdout; suppress decorative output. Pipe to jq. |
| --quiet, -q | Suppress info/success logs (warn/error still print to stderr). |
| --no-cache | Skip the 24h disk cache (~/.cache/context7/resolved.json) for this call. |
| --clear-cache | Wipe the disk cache and exit. |
| --timeout <ms> | HTTP timeout in milliseconds. Default 30000. |
| --max-retries <n> | Retry budget for 429 Rate Limit responses (with Retry-After). Default 1. |
| --api-key <key> | Override CONTEXT7_API_KEY env var. |
| --version, -V | Print version and exit. |
| --help, -h | Print usage and exit. |
One command to resolve library and query documentation:
# After `bun link`:
c7-lookup react "useEffect cleanup function"
c7-lookup next.js "app router middleware"
c7-lookup kubernetes "deployment rolling update"
# Or without linking:
cd ~/.claude/skills/context7/Tools && bun src/cli/lookup.ts react "useEffect cleanup function"
c7-lookup react "useState" --json | jq '.libraryId'
c7-resolve drizzle "many to many" --json | jq '.bestMatch'
c7-resolve react # → /facebook/react
c7-resolve next.js "authentication" # → ranked candidates
c7-query /facebook/react "useEffect cleanup" # → docs for known ID
| Library | Context7 ID | CLI Shortcut |
|---------|-------------|--------------|
| React | /facebook/react | react |
| Next.js | /vercel/next.js | next.js, nextjs |
| Vue | /vuejs/vue | vue |
| Kubernetes | /kubernetes/kubernetes | kubernetes, k8s |
| Go stdlib | /golang/go | go, golang |
| Python | /python/cpython | python |
| Node.js | /nodejs/node | node, nodejs |
| TypeScript | /microsoft/typescript | typescript, ts |
| Prisma | /prisma/prisma | prisma |
| Tailwind | /tailwindlabs/tailwindcss | tailwind, tailwindcss |
| Workflow | Trigger | File |
|----------|---------|------|
| ResolveLibrary | "find library ID", "resolve library" | Workflows/ResolveLibrary.md |
| QueryDocs | "lookup docs", "get documentation", "code examples" | Workflows/QueryDocs.md |
| FullLookup | "help me with [library]", "how do I use [feature]" | Workflows/FullLookup.md |
These are real Context7 API behaviors that bite if you don't know about them. Add to this list whenever a query goes wrong in a way that wasn't already documented.
/facebook/react works; facebook/react fails with a cryptic "library not found." The error doesn't tell you the slash is missing.resolve.ts <name> returns multiple candidates ordered by an LLM-powered ranker that takes your optional context query into account. A narrow context can promote a less-canonical fork above the official repo. Always inspect the top match before passing the ID to query.ts./vercel/next.js/14.2.0. The bare ID resolves to whatever Context7 currently treats as "latest stable," which can lag behind real releases — asking about Next.js "app router" without a pin can return Next 13 docs. Pin the version when the framework changed shape across majors.CONTEXT7_API_KEY, you'll hit limits in fewer queries than you expect. The "max 3 calls per question" tip in this skill is a defensive ceiling on Claude's behavior — it is not the real API budget. Set the API key from context7.com/dashboard for any sustained use.react, next.js, kubernetes, etc.) shortcut to hardcoded IDs in Tools/src/lib/context7.ts and skip the resolver entirely. If an upstream project renames its repo or moves orgs, the cached ID becomes wrong and queries silently miss. To force a fresh resolve, use an alias the cache doesn't know or pass --no-cache.The CLIs use typed exit codes so callers (Claude included) can distinguish failure categories without parsing strings.
| Exit | Kind | Cause | Recovery |
|------|------|-------|----------|
| 3 | auth | 401 — bad or missing CONTEXT7_API_KEY | Set the env var from context7.com/dashboard or pass --api-key <key>. |
| 4 | not_found | 404 — library or doc path missing; or malformed ID (missing leading /) | Run c7-resolve <name> to get a valid ID; check the /org/project shape. |
| 5 | rate_limit | 429 — public rate limit hit; auto-retries once if Retry-After is present | Set CONTEXT7_API_KEY for higher limits, or raise --max-retries. |
| 6 | server | 5xx — transient Context7 server error | Wait briefly and retry. |
| 7 | timeout | 408 — request aborted by client timeout | Raise --timeout (e.g. --timeout 60000) or check network. |
| 2 | (arg) | Unknown flag, bad value, missing required flag arg | Run --help. |
| 1 | (other) | Anything else, including 0-status network errors | Check stderr message; retry. |
Errors always print Error: <message> and a Hint: <remediation> line to stderr. With --json, stdout stays clean and parseable; stderr keeps the human-readable error.
cd ~/.claude/skills/context7/Tools
bun src/cli/lookup.ts react "useEffect cleanup function"
Output includes current React docs with cleanup pattern examples.
bun src/cli/lookup.ts kubernetes "deployment spec rolling update strategy"
Output includes current K8s API reference for Deployment.
bun src/cli/lookup.ts next.js "middleware authentication app router"
Output includes latest Next.js middleware documentation.
When you need documentation during a coding session:
User: "How do I implement server-side data fetching in Next.js 14?"
Claude runs:
cd ~/.claude/skills/context7/Tools && bun src/cli/lookup.ts next.js "server components data fetching"
Then synthesizes response with current patterns (Server Components, not old getServerSideProps)
| Variable | Description | Default |
|----------|-------------|---------|
| CONTEXT7_API_KEY | API key for higher rate limits | None (uses public rate limits) |
Get your API key at context7.com/dashboard
react, next.js use cached IDs to skip the resolve stepTools/
├── package.json # Bun + bin entries (c7-resolve, c7-query, c7-lookup)
├── tsconfig.json # TypeScript strict config
├── src/
│ ├── index.ts # Public exports (client, types, helpers)
│ ├── lib/
│ │ ├── context7.ts # Core API client + retry + typed errors
│ │ ├── cache.ts # Disk cache for resolved library IDs (24h TTL)
│ │ ├── flags.ts # Shared CLI argument parser
│ │ └── errors.ts # Error → exit-code + hint formatter
│ └── cli/
│ ├── lookup.ts # Full lookup command (c7-lookup)
│ ├── resolve.ts # Library ID resolver (c7-resolve)
│ └── query.ts # Documentation query (c7-query)
└── tests/
├── cache.test.ts # Cache I/O + TTL roundtrips
├── flags.test.ts # Argument parsing edge cases
└── errors.test.ts # Exit code + hint mapping
The TypeScript client can also be imported programmatically:
import {
Context7Client,
getKnownLibraryId,
setLogLevel,
formatError,
getCached,
setCached,
} from "./src/index.js";
setLogLevel("warn"); // silence info/success logs
const client = new Context7Client({
apiKey: process.env.CONTEXT7_API_KEY,
timeout: 30_000,
maxRetries: 2,
});
// Full lookup with disk cache
const cached = await getCached("react", 24 * 60 * 60 * 1000);
if (cached) {
const docs = await client.queryDocs(cached, "useEffect cleanup");
console.log(docs.rawContent);
} else {
const result = await client.lookup("react", "useEffect hooks");
if (result.library) await setCached("react", result.library.id);
console.log(result.rawContent);
}
development
End-to-end branch delivery: commit (no AI attribution) → push → open a pull request → ensure a Board work item exists (create one per task, assigned to the configured user, if none) and link it → after merge, clean up branch and worktree. Auto-detects the platform from the remote — Azure Repos + Boards (azure-devops-node-api SDK; OAuth Bearer push fallback via `az`) or GitHub (Octokit; `gh` for auth). Scripts are TypeScript, run via `bun`. Use whenever asked to "ship", "ship it", "ship this branch", "open a PR", "push and open a PR", "raise a PR", "deliver this", "send this for review", or "create a PR and link the work item" — and when a direct push to main is blocked and the change needs to go through a PR instead.
testing
Brief description of what this skill does. Include specific triggers - when should Claude use this skill? Example triggers, file types, or keywords that indicate this skill applies.
tools
Manage and troubleshoot PATH configuration in zsh. Use when adding tools to PATH (bun, nvm, Python venv, cargo, go), diagnosing "command not found" errors, validating PATH entries, or organizing shell configuration in .zshrc and .zshrc.local files.
tools
Zabbix monitoring system automation via API and Python. Use when: (1) Managing hosts, templates, items, triggers, or host groups, (2) Automating monitoring configuration, (3) Sending data via Zabbix trapper/sender, (4) Querying historical data or events, (5) Bulk operations on Zabbix objects, (6) Maintenance window management, (7) User/permission management