-
Notifications
You must be signed in to change notification settings - Fork 22
Description
Summary
The Cursor marketplace "Scan repo" feature only checks hardcoded root-level paths for plugin components. It does not read .plugin/plugin.json (or .cursor-plugin/plugin.json) to discover components at custom paths declared via manifest fields like "skills" or inline "mcpServers". This breaks monorepo plugins that follow the Open Plugins specification.
Environment
- Cursor marketplace: Submit a Plugin → Auto (GitHub) → Scan repo
- Repo: https://github.com/patchorbit/domscribe
Steps to reproduce
- Create a valid plugin with
.plugin/plugin.jsonthat declares custom component paths:{ "name": "domscribe", "version": "0.4.0", "skills": "./packages/domscribe-relay/src/skills", "mcpServers": { "domscribe": { "type": "stdio", "command": "npx", "args": ["-y", "@domscribe/mcp"] } } } - Place the skill at the declared path:
packages/domscribe-relay/src/skills/domscribe/SKILL.md - Go to Cursor marketplace → Submit a Plugin → Auto (GitHub)
- Enter the repo URL and click "Scan repo"
Result:
No plugin components found in: repo root. We looked for: rules/.mdc, .mcp.json or mcp.json, skills//SKILL.md, agents/.md, commands/.md, hooks/hooks.json, .lsp.json. Make sure your repo follows the Open Plugins standard (https://open-plugins.com).
Expected behavior
The scanner should:
- Check for
.plugin/plugin.json(or.cursor-plugin/plugin.json) at the repo root - Read the manifest's component fields (
skills,mcpServers,agents,commands,rules,hooks) - Resolve custom paths declared in those fields (e.g.,
"skills": "./packages/domscribe-relay/src/skills") - Discover components at the resolved paths
Then fall back to the default root-level paths only for components not declared in the manifest.
Actual behavior
The scanner skips manifest discovery entirely and only checks hardcoded default paths at the repo root.
Impact
- Monorepo plugins that declare custom component paths via
plugin.jsoncannot be submitted via the auto-detect flow - Inline
mcpServersinplugin.jsonare not detected (the scanner only checks.mcp.json/mcp.jsonfiles) - This contradicts the Open Plugins spec, which explicitly supports custom paths in the manifest
References
- Open Plugins specification — defines
.plugin/plugin.jsonas a valid manifest location and supports custom component paths via manifest fields - The spec states component fields accept string paths (
"./custom/skills/"), arrays, or objects with"exclusive": true