Skip to content

Bug Report: Marketplace scanner ignores .plugin/plugin.json manifest and custom component paths #43

@Narrator

Description

@Narrator

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

Steps to reproduce

  1. Create a valid plugin with .plugin/plugin.json that 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"]
        }
      }
    }
  2. Place the skill at the declared path: packages/domscribe-relay/src/skills/domscribe/SKILL.md
  3. Go to Cursor marketplace → Submit a Plugin → Auto (GitHub)
  4. 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:

  1. Check for .plugin/plugin.json (or .cursor-plugin/plugin.json) at the repo root
  2. Read the manifest's component fields (skills, mcpServers, agents, commands, rules, hooks)
  3. Resolve custom paths declared in those fields (e.g., "skills": "./packages/domscribe-relay/src/skills")
  4. 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.json cannot be submitted via the auto-detect flow
  • Inline mcpServers in plugin.json are not detected (the scanner only checks .mcp.json / mcp.json files)
  • This contradicts the Open Plugins spec, which explicitly supports custom paths in the manifest

References

  • Open Plugins specification — defines .plugin/plugin.json as 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions