Files
gh-seangsisg-crispy-claude-cc/skills/using-context7-for-docs/SKILL.md
2025-11-30 08:54:38 +08:00

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