
Context7
- 928 installs
- 47 repo stars
- Updated August 2, 2026
- netresearch/context7-skill
context7 is a Claude and Cursor skill that wraps the Context7 REST API to search library IDs and fetch up-to-date framework documentation into the IDE without manual doc hunting.
About
context7 is a netresearch/context7-skill bash wrapper around the Context7 REST API (based on @upstash/context7-mcp) exposing search and docs commands against https://context7.com/api/v2. The search command resolves a library ID from a query; docs fetches documentation for a library-id with optional topic and mode parameters. An optional CONTEXT7_API_KEY enables authenticated requests with an X-Context7-Source: claude-skill header. Developers reach for context7 when Claude or Cursor needs current framework docs—React, Next.js, or any indexed library—without leaving the editor or relying on outdated training data.
- Search for libraries by natural language query
- Fetch targeted documentation by library ID and topic
- REST API wrapper for Context7 v2 endpoint
- Optional authenticated requests with bearer token
- Returns structured results including benchmark scores and snippet counts
Context7 by the numbers
- 928 all-time installs (skills.sh)
- +46 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #1,186 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/netresearch/context7-skill --skill context7Add your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 928 |
|---|---|
| repo stars | ★ 47 |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 2, 2026 |
| Repository | netresearch/context7-skill ↗ |
How do you fetch up-to-date library docs in IDE?
Instantly pull accurate, up-to-date library and framework documentation directly into Claude or Cursor without leaving the IDE.
Who is it for?
Developers using Claude or Cursor who need current third-party library documentation injected during coding sessions.
Skip if: Offline-only environments without network access or projects where all APIs are fully defined in local source with no external doc dependency.
When should I use this skill?
The user asks for current framework docs, library API references, or needs to resolve a Context7 library ID before coding against an external package.
What you get
Resolved library ID and fetched Context7 documentation payload for the requested framework topic and mode.
- Library ID search results
- Fetched framework documentation
By the numbers
- Exposes 2 CLI commands: search and docs
- Targets Context7 REST API v2 at context7.com/api/v2
Files
Context7 Documentation Lookup Skill
Fetch current library documentation, API references, and code examples via the Context7 REST API.
When to Use
Use this skill when the user asks about library APIs, framework patterns, or version-specific behavior. Trigger on:
- Library questions: "How do I use [library]?", "[library] API docs", "[library] patterns"
- Import statements:
import,require,fromfollowed by a library name - Framework-specific topics: hooks, routing, middleware, ORM queries, schema definitions
When NOT to Use
Do NOT use this skill for:
- General programming concepts (closures, recursion, design patterns)
- Code review or refactoring tasks
- Debugging business logic
- Writing scripts from scratch without library-specific questions
Core Workflow
1. Search for the library ID:
scripts/context7.sh search "library-name"2. Pick the best result: Choose the ID with the highest score and most relevant description. Prefer official sources (e.g., /vercel/next.js over community forks).
3. Fetch documentation with a focused topic:
scripts/context7.sh docs "<library-id>" "<topic>" "<mode>"Always extract a specific topic from the user's question. For "How does React Suspense work with server components?", use topic suspense server components.
Parameters
| Parameter | Required | Description |
|---|---|---|
library-id | Yes | From search results, format /vendor/library |
topic | No | Focus area extracted from user query (e.g., hooks, routing, validation) |
mode | No | code (default) for API references; info for conceptual guides |
Mode Selection
Use code mode (default) when the user asks for API references, code examples, or implementation patterns.
Use info mode when the user asks for conceptual explanations, architecture guides, or migration tutorials.
Examples
# React hooks API
scripts/context7.sh search "react"
scripts/context7.sh docs "/facebook/react" "hooks" "code"
# Next.js App Router conceptual guide
scripts/context7.sh search "nextjs"
scripts/context7.sh docs "/vercel/next.js" "app router" "info"
# Django ORM queries
scripts/context7.sh search "django"
scripts/context7.sh docs "/django/django" "queryset filter" "code"
# Laravel Eloquent relationships
scripts/context7.sh search "laravel"
scripts/context7.sh docs "/laravel/framework" "eloquent relationships" "code"Environment Configuration
Set CONTEXT7_API_KEY for higher rate limits (optional):
export CONTEXT7_API_KEY="your-api-key"---
Contributing: https://github.com/netresearch/context7-skill
#!/bin/bash
# Context7 REST API wrapper
# Based on @upstash/context7-mcp source
# Usage: context7.sh <command> [args...]
# Commands:
# search <query> - Search for library ID
# docs <library-id> [topic] [mode] - Fetch documentation
set -e
CONTEXT7_API_KEY="${CONTEXT7_API_KEY:-}"
BASE_URL="https://context7.com/api/v2"
# Build auth header if API key is set
build_headers() {
local headers=()
if [ -n "$CONTEXT7_API_KEY" ]; then
headers+=(-H "Authorization: Bearer $CONTEXT7_API_KEY")
fi
headers+=(-H "X-Context7-Source: claude-skill")
echo "${headers[@]}"
}
# Search for library ID
# API: GET /v2/search?query=<query>
search_library() {
local query="$1"
if [ -z "$query" ]; then
echo "Usage: context7.sh search <query>"
echo "Example: context7.sh search react"
exit 1
fi
local encoded_query
encoded_query=$(printf '%s' "$query" | jq -sRr @uri)
local url="${BASE_URL}/search?query=${encoded_query}"
echo "Searching for: $query"
echo "---"
local response
if [ -n "$CONTEXT7_API_KEY" ]; then
response=$(curl -s "$url" -H "Authorization: Bearer $CONTEXT7_API_KEY")
else
response=$(curl -s "$url")
fi
# Format results
echo "$response" | jq -r '
if .results then
.results[] | "ID: \(.id)\nName: \(.title // "Unknown")\nSnippets: \(.totalSnippets // "N/A") | Score: \(.benchmarkScore // "N/A")\nDescription: \(.description // "No description")[0:100]\n---"
elif .error then
"Error: \(.error)"
else
.
end
' 2>/dev/null || echo "$response"
}
# Fetch documentation
# API: GET /v2/docs/<mode>/<username>/<library>[/<tag>]?type=txt&topic=<topic>
fetch_docs() {
local library_id="$1"
local topic="$2"
local mode="${3:-code}" # Default to 'code' mode
if [ -z "$library_id" ]; then
echo "Usage: context7.sh docs <library-id> [topic] [mode]"
echo ""
echo "Arguments:"
echo " library-id Format: /org/project or /org/project/version"
echo " topic Optional: Focus area (e.g., 'hooks', 'routing')"
echo " mode Optional: 'code' (default) or 'info'"
echo ""
echo "Examples:"
echo " context7.sh docs /facebook/react hooks"
echo " context7.sh docs /vercel/next.js routing code"
echo " context7.sh docs /vercel/next.js \"app router\" info"
exit 1
fi
# Validate mode
if [ "$mode" != "code" ] && [ "$mode" != "info" ]; then
echo "Error: mode must be 'code' or 'info'"
exit 1
fi
# Remove leading slash and build URL path
local cleaned_id="${library_id#/}"
local url="${BASE_URL}/docs/${mode}/${cleaned_id}?type=txt"
if [ -n "$topic" ]; then
local encoded_topic
encoded_topic=$(printf '%s' "$topic" | jq -sRr @uri)
url="${url}&topic=${encoded_topic}"
fi
echo "Fetching docs: /$cleaned_id"
echo "Mode: $mode${topic:+ | Topic: $topic}"
echo "---"
if [ -n "$CONTEXT7_API_KEY" ]; then
curl -s "$url" \
-H "Authorization: Bearer $CONTEXT7_API_KEY" \
-H "X-Context7-Source: claude-skill"
else
curl -s "$url" \
-H "X-Context7-Source: claude-skill"
fi
}
# Main command dispatch
case "${1:-}" in
search)
shift
search_library "$@"
;;
docs)
shift
fetch_docs "$@"
;;
-h|--help|help)
echo "Context7 Documentation Lookup"
echo ""
echo "Usage: context7.sh <command> [args...]"
echo ""
echo "Commands:"
echo " search <query> Search for library ID"
echo " docs <library-id> [topic] [mode] Fetch documentation"
echo ""
echo "Modes:"
echo " code API references and code examples (default)"
echo " info Conceptual guides and tutorials"
echo ""
echo "Examples:"
echo " context7.sh search react"
echo " context7.sh search \"next.js app router\""
echo " context7.sh docs /facebook/react hooks"
echo " context7.sh docs /vercel/next.js routing"
echo " context7.sh docs /prisma/prisma queries info"
echo ""
echo "Environment:"
echo " CONTEXT7_API_KEY Optional API key for higher rate limits"
echo " Get one at: https://context7.com/dashboard"
exit 0
;;
*)
echo "Context7 Documentation Lookup"
echo "Usage: context7.sh <command> [args...]"
echo "Run 'context7.sh --help' for usage information"
exit 1
;;
esac
Related skills
How it compares
Use context7 when agents need indexed third-party library docs on demand; use local codebase search when documentation is entirely in-repository.
FAQ
What commands does the context7 skill expose?
The context7 skill exposes search to find a library ID from a query and docs to fetch documentation for a library-id with optional topic and mode. Both call the Context7 REST API at context7.com/api/v2.
Does context7 require an API key?
context7 works without an API key but accepts an optional CONTEXT7_API_KEY environment variable for authenticated requests. The wrapper sends X-Context7-Source: claude-skill on each API call.
Is Context7 safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.