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

4.8 KiB

name, description
name description
using-context7-for-docs 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:

# 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:

Selected: /facebook/react
Reason: Official React repository, High reputation, 850 snippets, Benchmark: 95

2. Fetch Documentation

Use get-library-docs with resolved ID:

# 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:

# 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:

## 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