207 lines
4.8 KiB
Markdown
207 lines
4.8 KiB
Markdown
---
|
|
name: using-context7-for-docs
|
|
description: Use when researching library documentation with Context7 MCP tools for official patterns and best practices
|
|
---
|
|
|
|
# Using Context7 for Documentation
|
|
|
|
Use this skill when researching library documentation with Context7 MCP tools for official patterns and best practices.
|
|
|
|
## Core Principles
|
|
|
|
- Always resolve library ID first (unless user provides exact ID)
|
|
- Use topic parameter to focus documentation
|
|
- Paginate when initial results insufficient
|
|
- Prioritize high benchmark scores and reputation
|
|
|
|
## Workflow
|
|
|
|
### 1. Resolve Library ID
|
|
|
|
**Use `resolve-library-id`** before fetching docs:
|
|
|
|
```python
|
|
# Search for library
|
|
result = resolve_library_id(libraryName="react")
|
|
|
|
# Returns matches with:
|
|
# - Context7 ID (e.g., "/facebook/react")
|
|
# - Description
|
|
# - Code snippet count
|
|
# - Source reputation (High/Medium/Low)
|
|
# - Benchmark score (0-100, higher is better)
|
|
```
|
|
|
|
**Selection criteria:**
|
|
1. Exact name match preferred
|
|
2. Higher documentation coverage (more snippets)
|
|
3. High/Medium reputation sources
|
|
4. Higher benchmark scores (aim for 80+)
|
|
|
|
**Example output:**
|
|
|
|
```markdown
|
|
Selected: /facebook/react
|
|
Reason: Official React repository, High reputation, 850 snippets, Benchmark: 95
|
|
```
|
|
|
|
### 2. Fetch Documentation
|
|
|
|
**Use `get-library-docs`** with resolved ID:
|
|
|
|
```python
|
|
# Get focused documentation
|
|
docs = get_library_docs(
|
|
context7CompatibleLibraryID="/facebook/react",
|
|
topic="hooks",
|
|
page=1
|
|
)
|
|
```
|
|
|
|
**Topic parameter:**
|
|
- Focuses results on specific area
|
|
- Examples: "hooks", "routing", "authentication", "testing"
|
|
- More specific = better results
|
|
|
|
**Pagination:**
|
|
- Default `page=1` returns first batch
|
|
- If insufficient, try `page=2`, `page=3`, etc.
|
|
- Maximum `page=10`
|
|
|
|
### 3. Version-Specific Docs
|
|
|
|
**Include version in ID** when needed:
|
|
|
|
```python
|
|
# Specific version
|
|
docs = get_library_docs(
|
|
context7CompatibleLibraryID="/vercel/next.js/v14.3.0-canary.87",
|
|
topic="server components"
|
|
)
|
|
```
|
|
|
|
Use when:
|
|
- Project uses specific version
|
|
- Breaking changes between versions
|
|
- Need migration guidance
|
|
|
|
## Reporting Format
|
|
|
|
Structure findings as:
|
|
|
|
```markdown
|
|
## Library Documentation Findings
|
|
|
|
### Library: React 18
|
|
**Context7 ID:** /facebook/react
|
|
**Benchmark Score:** 95
|
|
|
|
### Relevant APIs
|
|
|
|
**useEffect Hook** (Official pattern)
|
|
```javascript
|
|
// Recommended: Cleanup pattern
|
|
useEffect(() => {
|
|
const subscription = api.subscribe()
|
|
return () => subscription.unsubscribe()
|
|
}, [dependencies])
|
|
```
|
|
Source: React docs, hooks section
|
|
|
|
### Best Practices
|
|
|
|
1. **Dependency Arrays**
|
|
- Always specify dependencies
|
|
- Use exhaustive-deps ESLint rule
|
|
- Avoid functions in dependencies
|
|
|
|
2. **Performance**
|
|
- Prefer useMemo for expensive calculations
|
|
- useCallback for function props
|
|
- React.memo for component memoization
|
|
|
|
### Migration Notes
|
|
- React 18 introduces concurrent features
|
|
- Automatic batching now default
|
|
- Upgrade guide: /facebook/react/v18/migration
|
|
```
|
|
|
|
## Common Libraries
|
|
|
|
**Frontend:**
|
|
- React: `/facebook/react`
|
|
- Next.js: `/vercel/next.js`
|
|
- Vue: `/vuejs/vue`
|
|
- Svelte: `/sveltejs/svelte`
|
|
|
|
**Backend:**
|
|
- Express: `/expressjs/express`
|
|
- FastAPI: `/tiangolo/fastapi`
|
|
- Django: `/django/django`
|
|
|
|
**Tools:**
|
|
- TypeScript: `/microsoft/typescript`
|
|
- Vite: `/vitejs/vite`
|
|
- Jest: `/jestjs/jest`
|
|
|
|
## Anti-Patterns
|
|
|
|
❌ **Don't:** Skip resolve-library-id step
|
|
✅ **Do:** Always resolve first (unless user provides exact ID)
|
|
|
|
❌ **Don't:** Use vague topics like "general"
|
|
✅ **Do:** Use specific topics: "authentication", "state management"
|
|
|
|
❌ **Don't:** Accept low benchmark scores (<50) without checking alternatives
|
|
✅ **Do:** Prefer high-quality sources (benchmark 80+)
|
|
|
|
❌ **Don't:** Cite docs without library version
|
|
✅ **Do:** Include version in findings
|
|
|
|
## Example Session
|
|
|
|
```python
|
|
# 1. Resolve library
|
|
result = resolve_library_id(libraryName="fastapi")
|
|
# → Selected: /tiangolo/fastapi (Benchmark: 92, High reputation)
|
|
|
|
# 2. Get auth documentation
|
|
docs = get_library_docs(
|
|
context7CompatibleLibraryID="/tiangolo/fastapi",
|
|
topic="authentication",
|
|
page=1
|
|
)
|
|
# → Got OAuth2, JWT patterns, security best practices
|
|
|
|
# 3. Need more detail on dependencies
|
|
docs2 = get_library_docs(
|
|
context7CompatibleLibraryID="/tiangolo/fastapi",
|
|
topic="dependency injection",
|
|
page=1
|
|
)
|
|
# → Got Depends() patterns, testing with overrides
|
|
|
|
# 4. Check pagination if needed
|
|
if insufficient:
|
|
docs3 = get_library_docs(
|
|
context7CompatibleLibraryID="/tiangolo/fastapi",
|
|
topic="authentication",
|
|
page=2 # Next page
|
|
)
|
|
```
|
|
|
|
## Quality Indicators
|
|
|
|
**High-quality results have:**
|
|
- ✅ Benchmark score 80+
|
|
- ✅ High/Medium source reputation
|
|
- ✅ Recent documentation (check dates)
|
|
- ✅ Official repositories
|
|
- ✅ Code examples with explanation
|
|
|
|
**Consider alternatives if:**
|
|
- ❌ Benchmark score <50
|
|
- ❌ Low reputation source
|
|
- ❌ Very few code snippets (<10)
|
|
- ❌ Unofficial/outdated sources
|