skills/context7-mcp/SKILL.md
Use when answering questions about external libraries, frameworks, SDKs, or package APIs where training data may be outdated or insufficient. Use when a user asks "How do I...", "What's the API for...", "Show me an example of..." involving a specific package. Use when generating code that depends on library-specific syntax, configuration, or API signatures. Use when the user mentions a version number ("React 19", "Next.js 15", "Prisma 6"). Use when you are unsure if your training data reflects the current API surface. Do NOT use for: language builtins or standard library (Python stdlib, JS built-ins -- Claude knows these), conceptual questions not tied to a specific package API, internal or proprietary libraries not in public registries, debugging runtime errors (use systematic-debugging skill).
npx skillsauth add sharkitect-solutions/sharkitect-claude-toolkit context7-mcpInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Training data has a cutoff. Libraries ship breaking changes between minor versions. A single wrong parameter name, a renamed export, or a deprecated method turns "probably correct" code into a debugging session. Context7 bridges the gap by fetching current, version-specific documentation at query time — turning guesses into verified answers.
The cost of a Context7 lookup is ~2 seconds and ~500 tokens. The cost of generating code against a stale API is 10-30 minutes of user debugging. The math is clear.
| Request | This Skill | Use Instead | |---|---|---| | "How do I use [library] to..." | YES | — | | "What's the current API for..." | YES | — | | "Show me [framework] v15 example" | YES | — | | Code generation using external packages | YES | — | | Python builtins / JS standard library | NO | Answer directly — Claude knows these | | Conceptual "what is X" questions | NO | Answer directly | | Internal / proprietary library | NO | Ask user for documentation | | Debugging runtime errors | NO | systematic-debugging skill | | Comparing libraries for selection | NO | search-specialist agent + this skill for finalists | | MCP server configuration questions | NO | mcp-expert agent |
| File | Load When | Do NOT Load |
|---|---|---|
| references/query-mastery.md | Formulating queries for ambiguous libraries, multi-library questions, optimizing token usage, resolution returning unexpected results | Simple single-library lookup with obvious ID match |
| references/anti-patterns.md | First Context7 usage of session, seeing poor or irrelevant results, need failure pattern checklist | Already completed 3+ successful lookups this session (patterns memorized) |
| references/edge-cases.md | Library not found, empty docs returned, version conflicts, need fallback strategy, user asking about niche or very new library | Standard lookup returning good results |
Is the question about a specific external library, framework, or SDK?
|
+-- NO --> Answer from training data. STOP.
|
+-- YES --> Is it a stable, well-known API that hasn't changed in 2+ years?
|
+-- YES, and user didn't mention a version --> Answer from training data. STOP.
|
+-- NO, or user mentioned a specific version, or you're unsure --> PROCEED.
Always use Context7 for: React, Next.js, Vue, Svelte, Angular, Tailwind, Prisma, Drizzle, Supabase, tRPC, Astro, Remix, Nuxt, SvelteKit, Hono, Bun, Deno — these move fast.
Skip Context7 for: JSON.parse, os.path.join, Array.prototype.map, console.log —
Claude knows standard library methods perfectly.
Call resolve-library-id with:
libraryName: The canonical npm/PyPI package name, not the brand namequery: The user's full question (improves relevance ranking)Package name vs brand name — this matters:
| User Says | Resolve As | Why |
|---|---|---|
| "Next.js" or "Next" | nextjs | Brand ≠ package name |
| "Tailwind" | tailwindcss | Brand ≠ package name |
| "Express" | express | Direct match |
| "Prisma" | prisma | Direct match |
| "@tanstack/query" | @tanstack/query | Include scope |
| "React Router" | react-router | Two-word → hyphenated |
| "Vue" | vue | Direct match |
| "Supabase JS" | @supabase/supabase-js | Scoped package |
Got results?
|
+-- EMPTY --> Try alternate name (brand name if you used package name, or vice versa)
| +-- Still empty --> Fall back to training data. Add caveat: "based on training
| data as of [cutoff] — verify against current docs for production use."
|
+-- SINGLE CLEAR MATCH --> Use it. Go to Step 3.
|
+-- MULTIPLE MATCHES -->
|
+-- User mentioned a version? --> Pick version-specific ID if available
|
+-- Official vs community fork? --> Always pick official (higher trust)
|
+-- Same library, different entries? --> Pick highest benchmark score
| (higher score = more comprehensive documentation coverage)
|
+-- Genuinely different libraries? --> Pick the one matching user's ecosystem
Call query-docs with:
libraryId: The resolved ID from Step 2query: Make it specific. Targeted queries return better results.Query specificity hierarchy (most to least effective):
"useEffect cleanup function async" — specific method + behavior"useEffect hook" — specific method"React hooks" — category"React" — entire library (too broad, wastes tokens)Got useful documentation?
|
+-- YES --> Go to Step 4.
|
+-- SPARSE or IRRELEVANT --> Reformulate query with different terms.
| +-- Try: method name, class name, config key, error message text
| +-- Still poor? --> Fall back to training data with version caveat.
|
+-- EMPTY --> Library may not be indexed. Fall back to training data with caveat.
When a question spans multiple libraries (e.g., "How do I use Prisma with Next.js App Router?"):
Token budget: Two fetches ≈ 1000 tokens. Still cheaper than wrong code.
development
When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ad copy,' 'ad creative,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' or 'audience targeting.' This skill covers campaign strategy, ad creation, audience targeting, and optimization.
testing
--- name: using-sharkitect-methodology description: Use when starting any conversation in a Sharkitect workspace OR before any task involving NEW pricing, positioning, proposal, strategy, plan-execution, or schema-design work — mandates invocation of Sharkitect-specific methodology skills (pricing-strategy, marketing-strategy-pmm, smb-cfo, hq-revenue-ops, executing-plans, brainstorming) under the same anti-rationalization discipline as using-superpowers. Documentation has failed 4 times across H
testing
Use when user says 'end session', 'wrap up', 'stop for the day', 'done for today', 'close out', 'save session', 'wrapping up', or invokes /end-session. Runs the full 9-step end-of-session protocol: resource audit, MEMORY.md update, lessons capture, plan status, pending items, workspace checklist, .tmp/ audit, git commit+push, Supabase brain sync, session brief, summary. Final step schedules a detached self-kill of the current session ONLY (3s delay) so the window closes cleanly. Other claude.exe processes (active workspaces) are NOT touched -- orphan cleanup is handled separately by Claude-Orphan-Cleanup-Hourly with proper age safeguards. Do NOT use for: mid-session quick saves (use session-checkpoint), skill syncing (use sync-skills.py), brain memory queries (use supabase-sync.py pull), document freshness reviews (use document-lifecycle), resource gap detection (use resource-auditor).
testing
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, passive voice, negative parallelisms, and filler phrases.