mirror of
https://github.com/upstash/context7.git
synced 2026-09-14 19:09:34 +08:00
4f13168535
* refactor(setup): update rule template to be selective with examples Based on eval benchmarks showing that selective rules with explicit should/should-not examples achieve 98% recall with 0 false positives, vs the previous broad rule. Split RULE_CONTENT into MCP_RULE_CONTENT and CLI_RULE_CONTENT to support both MCP and CLI setup modes with appropriate tool references. * feat(setup): install CLI rule alongside skill in ctx7 setup --cli Previously, CLI setup mode only installed the find-docs skill (66% trigger rate). Now it also installs a rule file with ctx7 CLI instructions for each selected agent, matching the MCP setup behavior. Benchmarks show skill + rule achieves 96-98% trigger rate vs 66% skill-only. * feat(find-docs): update skill description to improve trigger rate Replace passive description with pushy version that explicitly names common libraries and counters Claude's undertriggering tendency. Eval results: 66% -> 98% clean recall, 72% -> 92% with-context recall. * chore(setup): remove deprecated RULE_CONTENT export and alwaysApply frontmatter alwaysApply is not a Claude Code feature (it's Cursor-specific). Claude Code rules without paths frontmatter load unconditionally by default. Remove the deprecated alias now that all callers use MCP_RULE_CONTENT or CLI_RULE_CONTENT. * refactor(setup): fetch rules from GitHub, add alwaysApply for Cursor - Rule source of truth in rules/context7-mcp.md and rules/context7-cli.md - templates.ts fetches from GitHub raw (master then main) - getRuleContent(mode, agent) adds alwaysApply frontmatter for Cursor - CLI setup now logs rule install failures instead of silently swallowing * refactor(setup): add Codex agent, remove needsAlwaysApply field, use shared installRule - Add Codex agent config with AGENTS.md append support - Remove needsAlwaysApply field (hardcoded cursor check in templates.ts) - CLI setup uses shared installRule instead of inline CLI_RULE_PATHS - installRule handles both file-based (Claude/Cursor/OpenCode) and append-based (Codex/AGENTS.md) rule installation * refactor(setup): unify CLI setup with MCP agent picker, group output by agent - CLI setup now uses the same agent picker as MCP setup (no auto-detection) - Output grouped by agent instead of repeating find-docs for each path - Removed unused promptForInstallTargets/getTargetDirs imports * fix(setup): add branch fallback URL for rule fetch, show error on rule failure * fix(setup): OpenCode uses AGENTS.md, fix append logic for existing files - OpenCode rule changed from .opencode/rules/ to AGENTS.md (append type) since OpenCode reads AGENTS.md natively, not a rules directory - Fixed append logic: proper spacing for empty/non-empty files, clean idempotent replacement on re-run, preserves existing content * test(setup): add tests for rule install, MCP config, and AGENTS.md append * chore(setup): remove unused mergeInstructions and instructionsGlob * fix: lint formatting, add changeset * fix(setup): Codex global rule goes to ~/.codex/AGENTS.md * fix(setup): align CLI output format with MCP output * feat(setup): add --codex flag for MCP and CLI setup * docs(rules): align trigger language with skill, use npx ctx7@latest in CLI rule * docs(rules): prefer ctx7 over web search for library docs * docs(find-docs): prefer skill over web search in description * docs(rules): consolidate trigger language, add selection criteria * docs(rules): add query quality guidance and auth env var to CLI rule * cleanup * fix: remove branch URL, add offline fallback matching rule files exactly * fix(setup): support opencode.jsonc, strip JSON comments, fix detect path - readJsonConfig now strips // and /* */ comments before parsing (JSONC support) - resolveMcpPath checks for .jsonc variant when .json is specified - OpenCode detect paths include both opencode.json and opencode.jsonc - Fixed OpenCode project path from .opencode.json to opencode.json * fix(setup): fix JSONC comment stripping to preserve URLs in strings The regex-based comment stripper was matching // inside string values (e.g., https:// URLs), corrupting the JSON. Replaced with a character- level parser that skips string literals before stripping comments. * fix(setup): Codex uses TOML config.toml, detect .opencode.json variant - Codex MCP writes to ~/.codex/config.toml using [mcp_servers.context7] TOML sections instead of JSON (matches Codex docs and add-mcp tool) - OpenCode detection checks opencode.json, opencode.jsonc, and .opencode.json - Added TOML server block writer with idempotent append - stripJsonComments now handles URLs in strings correctly * test(setup): add JSONC, TOML, and resolveMcpPath tests 12 new tests covering: - JSONC: comment stripping preserves URLs, block comments, plain JSON - resolveMcpPath: .jsonc resolution, .json fallback, non-json passthrough - TOML: buildTomlServerBlock output, http_headers, readTomlServerExists, appendTomlServer (empty file, preserve existing, idempotent) * fix(setup): Codex MCP needs type=http, fix checkbox disabled item selection - Codex TOML entry now includes type = "http" (required by Codex) - Checkbox cursor starts on first non-disabled item - Checkbox navigation skips disabled items * fix: address PR review feedback on rules and skill description - Surface libraryId format (/org/project) in step 2 where selection happens - Suggest retrying with alternate names/queries instead of just punctuation - MCP rule: explicitly require resolve-library-id unless /org/repo provided - Skill description: explicitly warn against relying on training data for APIs * fix: consistent /org/project format in MCP rule * fix: revert opencode detection paths to original
1.3 KiB
1.3 KiB
Use Context7 MCP to fetch current documentation whenever the user asks about a library, framework, SDK, API, CLI tool, or cloud service -- even well-known ones like React, Next.js, Prisma, Express, Tailwind, Django, or Spring Boot. This includes API syntax, configuration, version migration, library-specific debugging, setup instructions, and CLI tool usage. Use even when you think you know the answer -- your training data may not reflect recent changes. Prefer this over web search for library docs.
Do not use for: refactoring, writing scripts from scratch, debugging business logic, code review, or general programming concepts.
Steps
- Always start with
resolve-library-idusing the library name and the user's question, unless the user provides an exact library ID in/org/projectformat - Pick the best match (ID format:
/org/project) by: exact name match, description relevance, code snippet count, source reputation (High/Medium preferred), and benchmark score (higher is better). If results don't look right, try alternate names or queries (e.g., "next.js" not "nextjs", or rephrase the question). Use version-specific IDs when the user mentions a version query-docswith the selected library ID and the user's full question (not single words)- Answer using the fetched docs