feat(SCOPONE-0010): vendor agent assets and clean docs
This commit is contained in:
149
.github/skills/context7-lookup/SKILL.md
vendored
Normal file
149
.github/skills/context7-lookup/SKILL.md
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
---
|
||||
name: context7-lookup
|
||||
description: Retrieve up-to-date, version-specific documentation for libraries and frameworks using Context7 MCP server. Eliminates hallucinated APIs and outdated code examples.
|
||||
---
|
||||
|
||||
# Context7 Documentation Lookup
|
||||
|
||||
Fetches current documentation for 68,000+ libraries to prevent hallucinated APIs and outdated code examples.
|
||||
|
||||
## When to Use
|
||||
|
||||
Auto-invoke when encountering:
|
||||
- Import/require/use statements for external packages (any language)
|
||||
- Error messages mentioning library names
|
||||
- User specifies library: "use {library}", "implement with {framework}"
|
||||
- Planning with third-party dependencies
|
||||
- Dependency files present (package.json, requirements.txt, Cargo.toml, pom.xml, Gemfile, go.mod, composer.json, *.csproj, etc.)
|
||||
|
||||
## Protocol
|
||||
|
||||
**Step 1: Detect Version** (if library known)
|
||||
```bash
|
||||
grep_search(query="{library}", includePattern="**/package.json") # Node.js
|
||||
grep_search(query="{library}", includePattern="**/requirements.txt") # Python
|
||||
grep_search(query="{library}", includePattern="**/Cargo.toml") # Rust
|
||||
grep_search(query="{library}", includePattern="**/pom.xml") # Java
|
||||
grep_search(query="{library}", includePattern="**/Gemfile") # Ruby
|
||||
grep_search(query="{library}", includePattern="**/go.mod") # Go
|
||||
grep_search(query="{library}", includePattern="**/composer.json") # PHP
|
||||
```
|
||||
|
||||
**Step 2: Resolve Library ID**
|
||||
```
|
||||
mcp_context7_resolve-library-id(
|
||||
libraryName: "{library}",
|
||||
query: "{specific_use_case}"
|
||||
)
|
||||
→ Returns: /owner/repo or /domain
|
||||
```
|
||||
|
||||
**Step 3: Fetch Documentation**
|
||||
```
|
||||
mcp_context7_query-docs(
|
||||
libraryId: "{resolved_id}",
|
||||
query: "{library} {version} {specific_api_or_pattern}"
|
||||
)
|
||||
→ Returns: Documentation snippets with code examples
|
||||
```
|
||||
|
||||
**Step 4: Apply & Cache**
|
||||
- Use verified API signatures in implementation
|
||||
- Update FINDINGS.md with: library, version, Context7 ID, date, key patterns
|
||||
|
||||
## Version Detection
|
||||
|
||||
| Ecosystem | Files | Extract From |
|
||||
|-----------|-------|--------------|
|
||||
| Node.js | package.json, *lock.yaml | `dependencies` / `devDependencies` |
|
||||
| Python | requirements.txt, Pipfile, pyproject.toml | Version specifiers (==, >=, ~=) |
|
||||
| Java | pom.xml, build.gradle* | `<version>` / version strings |
|
||||
| Rust | Cargo.toml | `[dependencies]` |
|
||||
| Ruby | Gemfile* | Gem versions |
|
||||
| Go | go.mod | Module versions |
|
||||
| PHP | composer.json | `require` |
|
||||
| C#/.NET | *.csproj, packages.config | PackageReference |
|
||||
| Swift | Package.swift, Podfile | Dependencies |
|
||||
|
||||
## Library Extraction from Imports
|
||||
|
||||
| Language | Import | Extract |
|
||||
|----------|--------|---------|
|
||||
| JS/TS | `import X from 'lodash'` | `lodash` |
|
||||
| Python | `import django.core` | `django` |
|
||||
| Java | `import org.springframework.*` | `spring` or `spring-boot` |
|
||||
| Rust | `use tokio::runtime` | `tokio` |
|
||||
| Go | `import "github.com/gin-gonic/gin"` | `gin` |
|
||||
| Ruby | `require 'rails'` | `rails` |
|
||||
| PHP | `use Symfony\Component` | `symfony` |
|
||||
| C# | `using Microsoft.AspNetCore` | `AspNetCore` |
|
||||
|
||||
**Query Strategy:**
|
||||
1. User-specified version → use as-is
|
||||
2. Detected from files → include in query
|
||||
3. No version found → use latest
|
||||
4. Always format: "{library} {version} {specific_feature}"
|
||||
|
||||
## Best Practices
|
||||
|
||||
**✅ Specific queries:**
|
||||
- "Django 5.0 class-based views authentication"
|
||||
- "Tokio 1.35 async runtime spawning tasks"
|
||||
- "Spring Boot 3.2 @RestController validation"
|
||||
|
||||
**❌ Vague queries:**
|
||||
- "authentication"
|
||||
- "async programming"
|
||||
|
||||
**Skip resolve if ID known:**
|
||||
```
|
||||
query-docs("/django/django", "Django 5.0 ORM filtering") # Direct
|
||||
```
|
||||
|
||||
**Common ID patterns:**
|
||||
- GitHub: `/{owner}/{repo}` (e.g., `/vercel/next.js`)
|
||||
- Docs: `/{domain}` (e.g., `/tailwindcss.com/docs`)
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error | Action |
|
||||
|-------|--------|
|
||||
| 404 Not Found | Try alternative names, ask user |
|
||||
| 429 Rate Limited | Wait 60s, retry (set CONTEXT7_API_KEY for higher limits) |
|
||||
| Multiple matches | Present top 3, ask clarification |
|
||||
| Empty results | Broader query or fallback to web search |
|
||||
|
||||
## Example (Multi-Language)
|
||||
|
||||
```python
|
||||
# Python: Django REST API
|
||||
Task: "Add REST views with Django"
|
||||
1. grep_search("django", "requirements.txt") → "django==5.0.2"
|
||||
2. resolve-library-id("django", "REST API views") → /django/django
|
||||
3. query-docs("/django/django", "Django 5.0 class-based views REST") → docs
|
||||
4. Implement with verified APIs
|
||||
```
|
||||
|
||||
```rust
|
||||
// Rust: Tokio Async
|
||||
Task: "Async HTTP with Tokio"
|
||||
1. grep_search("tokio", "Cargo.toml") → 'tokio = "1.35"'
|
||||
2. query-docs("/tokio-rs/tokio", "tokio 1.35 async HTTP runtime") → docs
|
||||
3. Use: Runtime::new() ✅ NOT: Runtime::init() ❌
|
||||
```
|
||||
|
||||
```java
|
||||
// Java: Spring Boot
|
||||
Reviewer detecting Spring Boot 3.2 from pom.xml
|
||||
1. query-docs("/spring-projects/spring-boot", "Spring Boot 3.2 @RequestMapping")
|
||||
2. Flag: Use @GetMapping instead of @RequestMapping in v3.2
|
||||
```
|
||||
|
||||
## MCP Tools
|
||||
|
||||
**resolve-library-id** → Search library by name, returns ID
|
||||
**query-docs** → Fetch docs by ID, returns snippets
|
||||
|
||||
---
|
||||
|
||||
Use liberally to prevent hallucinated APIs. Cache results in FINDINGS.md.
|
||||
Reference in New Issue
Block a user