* feat: enhance Context7 server configuration with website URL, description, and detailed usage instructions
* run format
* add changeset
* feat: align MCP server instructions with eval-proven trigger language
Based on invocation routing benchmarks (60 queries, clean + mid-session):
- Named specific libraries to counter confidence skip
- Added 'even when you think you know the answer' override
- Added 'prefer over web search' to catch WebSearch fallback
- Unified trigger paragraph to match client rule format
- Added explicit 'do not use for' negatives
---------
Co-authored-by: Fahreddin Özcan <ozcanfahrettinn@gmail.com>
* fix(cli): use ~/.agents/skills for global universal skill installs
The universal global path was ~/.config/agents/skills, but the
canonical standard (used by Vercel's skills CLI and OpenAI Codex)
is ~/.agents/skills. This aligns context7 with the broader ecosystem.
Fixes#2276
* chore: add changeset for global skills path fix
* fix(cli): remove shell:true from spawn in generate command
Removes shell:true from the child_process.spawn() call that opens
the user's editor. The editor path and preview file path are already
passed as separate arguments, so shell interpolation is unnecessary.
Using shell:true allows shell metacharacters in EDITOR or file paths
to be interpreted, which is a command injection vector.
Fixes#2240
This contribution was developed with AI assistance (Claude Code).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: add changeset for shell:true removal
---------
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Fahreddin Özcan <ozcanfahrettinn@gmail.com>
* fix(cli): prevent directory traversal in skill file installation
installSkillFiles() used path.join() with unsanitized file paths from
GitHub API responses. A malicious skill repository could include files
with "../" sequences in their paths, allowing writes outside the
intended skill directory.
Changes:
- installer.ts: use path.resolve() and verify the resolved path stays
within the skill directory boundary before writing
- github.ts: reject file paths containing ".." at download time as an
additional defense-in-depth check
* chore: add changeset for directory traversal fix
* fix: format installer.ts to pass prettier lint
---------
Co-authored-by: Fahreddin Özcan <ozcanfahrettinn@gmail.com>
* fix(mcp): support NODE_EXTRA_CA_CERTS for enterprise MITM proxies
When NODE_EXTRA_CA_CERTS is set, reads the CA certificate file and
injects it into undici's global dispatcher. This fixes fetch failures
behind enterprise transparent SSL intercept proxies (Zscaler, etc.)
where the default TLS context does not trust the corporate CA.
The CA certs are also passed through when an explicit HTTPS_PROXY is
configured, so both proxy modes work with custom certificates.
Fixes#2268
This contribution was developed with AI assistance (Claude Code).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: add changeset for NODE_EXTRA_CA_CERTS support
---------
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Fahreddin Özcan <ozcanfahrettinn@gmail.com>
The single deployment.mdx page implied Kubernetes-only deployment. Split it into
a deployment/ folder with separate Docker and Kubernetes guides, and simplify the
on-premise getting started page to link to them via Mintlify cards.
* fix(cli): add token refresh support and centralize auth constants
Expired OAuth tokens are now automatically refreshed via getValidAccessToken()
instead of silently failing. CLI_CLIENT_ID moved to constants.ts to avoid
duplication across auth.ts and setup.ts.
* refactor(cli): internalize baseUrl and clientId in refreshAccessToken
Make refreshAccessToken a private function that resolves getBaseUrl()
and CLI_CLIENT_ID internally instead of requiring them as parameters.
* test(cli): add unit tests for auth utilities and commands
Add comprehensive vitest test suite covering OAuth PKCE flow, token
persistence, token refresh, and CLI auth commands (login/logout/whoami).
* chore: add changeset for CLI auth improvements
* refactor: move CLI auth tests to src/__tests__/
Move auth test files from colocated __tests__ directories to a
centralized src/__tests__/ directory, adjusting mock import paths
accordingly.
The previous description was scoped to "programming library or framework",
causing the skill to be skipped for CLI tools, cloud services, APIs, platforms,
and general technical questions. The new description covers any developer
technology and includes common trigger scenarios to improve auto-invocation.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
New deployment.mdx page under the On-Premise section covering
StatefulSet, Service, Ingress manifests, registry auth, networking
requirements, operations, and troubleshooting for K8s deployments.
* feat(cli): add teamspace name to whoami command
Replace direct Clerk userinfo call with new /api/dashboard/whoami
endpoint that returns name, email, and active teamspace in one request.
* chore: add changeset for whoami teamspace feature
* feat(cli): enumerate popularity and trust in skill search results
Replace raw install counts with star-based popularity rating (★☆☆/★★☆/★★★)
and numeric trust scores with High/Medium/Low labels in skill search,
install, and suggest commands. Show install range and raw trust score
in the hover description. Also reorder setup command to show CLI before MCP.
* feat(cli): use 4-star popularity scale matching install count ranges
* fix(cli): replace hardcoded "docs" with "find-docs" in setup output
* chore: add changeset for skill search enumeration and find-docs rename
* refactor(skills): consolidate skills under /skills with canonical sources
- Rename skills/docs → skills/find-docs (name: find-docs)
- Rename skills/ctx7-cli → skills/context7-cli (name: context7-cli)
- Add skills/context7-mcp as canonical MCP skill source
- Rename plugin skill folders to context7-mcp and unify name to context7-mcp
- MCP setup now downloads context7-mcp skill from GitHub instead of using hardcoded SKILL_CONTENT
- Remove SKILL_CONTENT from templates.ts — skills/context7-mcp/SKILL.md is the single source of truth
- Add Error Handling section to find-docs skill for quota errors
- Update agents.ts skill name: documentation-lookup → context7-mcp
- Update docs/clients/cli.mdx and setup references accordingly
* chore: add changeset for skills consolidation
* fix(skills): update plugin skill frontmatter name and setup docs to context7-mcp
* feat(cli): add CLI mode to ctx7 setup with docs skill installation
- Add MCP vs CLI mode selection prompt at the start of setup
- CLI mode authenticates user and installs docs skill via promptForInstallTargets
- Add --cli, --universal, --antigravity flags to setup command
- --yes skips the detected-locations confirmation prompt
- Default CLI install scope to global (override with --project)
- Fix checkbox selected choices to render in green (consistent with select prompt)
- Move Claude Code above Universal in IDE selection order
- Add forceUniversal=false option to promptForInstallTargets for setup flow
- Add yes? to AddOptions to support auto-confirm in promptForInstallTargets
* chore: add changeset for ctx7 setup CLI mode
* feat(cli): rename CLI mode to CLI + Skills, add --mcp flag, remove recommended label
* feat(cli): add --api-key support to CLI mode and update docs
- Pass apiKey through to resolveCliAuth in CLI mode setup
- Store provided API key as bearer token for subsequent API calls
- Update cli.mdx and setup.md to reflect both MCP and CLI + Skills modes
* docs: update setup docs to reflect --api-key for both modes and --cursor for CLI
- --api-key works in both MCP and CLI + Skills mode (not MCP-only)
- --oauth clarified as MCP-only
- Added --cursor to CLI + Skills mode examples (Cursor has a skills directory)
- Updated auth table row for ctx7 setup
* fix(cli): improve library ID validation and add telemetry headers
- Validate /owner/repo format locally before spinner starts, showing
consistent error + hint for both "react" and "/react" inputs
- Send X-Context7-Source, X-Context7-Client-IDE, X-Context7-Client-Version,
and X-Context7-Transport headers on library/docs requests so CLI
appears in the admin telemetry dashboard
* feat(cli): show source repo next to skill name in search and suggest results
Adds the project repo in parentheses after each skill name to help
disambiguate skills with identical names from different repositories.
* chore: add changeset for repo display in skill search
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(docs): add dedicated docs skill and restructure CLI documentation
- Add new `docs` skill as a single-file skill for documentation retrieval
- Align skill prompts with MCP tool descriptions (selection process, query guidance, 3-call limit)
- Enrich CLI docs page with result fields, query tips, and version-specific IDs
- Move CLI page to Overview section in docs nav
- Make `query` required for `ctx7 library` across all skills and docs
- Update trust score display label in skills.mdx
* feat(cli): align library output format with MCP labels
Use labeled fields and categorical Source Reputation labels
(High/Medium/Low/Unknown) instead of numeric trust scores to match
the MCP transport format.
* refactor: move skills from .agents/skills to skills/ at repo root
Source-control location for skills — users install them into
.agents/, .claude/, etc. via the CLI. Also updates install
instructions to use `npm install -g ctx7@latest` or `npx ctx7@latest`.
* docs: use natural-language query examples across skills and CLI docs
Replace keyword-style queries ("useEffect cleanup") with full
question-style queries ("How to clean up useEffect with async
operations") to better demonstrate how the query parameter works.
* docs: fix trust score description to show numeric range
Replaces the cli.mdx redirect stub with a full CLI reference covering library
documentation, setup, authentication, and all skills commands. Trims skills.mdx
to conceptual content only with a reference back to the CLI page. Updates the
ctx7-cli skill's docs reference with selection algorithm and query quality
guidance from the MCP tool prompts.
Restructures the ctx7-cli skill from a single flat file into a folder with
reference files, and adds coverage for the skills management commands, setup,
and authentication that were previously undocumented.
* feat(cli): add resolve and query commands for library documentation
Expose Context7's resolve-library and query-docs API as CLI commands,
enabling agents and developers to fetch documentation directly from
the terminal without MCP setup.
- `ctx7 resolve <library> [query]` - resolve library name to Context7 ID
- `ctx7 query <libraryId> <query>` - fetch documentation for a library
- Both support --json for structured output
- TTY-aware: spinners and colors in terminal, clean output when piped
- Auth: CONTEXT7_API_KEY env var > OAuth token > unauthenticated
* refactor(cli): rename resolve/query to library/docs commands
Rename commands for a more natural CLI interface:
- `ctx7 library <name> [query]` instead of `ctx7 resolve`
- `ctx7 docs <libraryId> <query>` instead of `ctx7 query`
* fix(cli): show benchmark score and all versions in library results
* chore: add changeset for library and docs commands
* style(cli): fix lint formatting in api.ts
* refactor(cli): remove redundant spinner success messages
The output itself is self-evident, no need for "Found 5 libraries"
or "Documentation retrieved" messages.