--- name: plugin-manager description: Manage plugin structure and configuration for this repository across both Cursor and Claude Code. Use when creating, updating, or reviewing plugin folders under plugins/, wiring marketplace manifests, setting up skill symlinks, assigning per-plugin mcp.json files, or adding additional plugins while preserving repo conventions. --- # Plugin Manager Maintain plugin packaging for both ecosystems in a single repository, using a shared `plugins/` directory and a shared top-level `skills/` source of truth. ## Working Rules - Keep each plugin self-contained in `plugins//`. - Keep shared reusable skill content in top-level `skills/`. - Expose shared skills per plugin via symlinks in `plugins//skills/`. - Keep MCP config plugin-local at `plugins//mcp.json`. - Keep both marketplace manifests at repo root: - `.claude-plugin/marketplace.json` - `.cursor-plugin/marketplace.json` ## Required Plugin Layout For every plugin, ensure this layout exists: ```text plugins// .claude-plugin/plugin.json .cursor-plugin/plugin.json skills/ -> ../../../skills/ # symlink mcp.json assets/ ``` ## Create or Update a Plugin 1. Create `plugins//`. 2. Add both manifests: - `plugins//.claude-plugin/plugin.json` - `plugins//.cursor-plugin/plugin.json` 3. Add or update `plugins//mcp.json` for plugin-specific MCP servers. 4. Symlink required top-level skills into `plugins//skills/`. 5. Add `plugins//assets/logo.svg` for Cursor. 6. Register plugin in both marketplaces using `source: "./plugins/"`. 7. Validate JSON and path references before finishing. ## Manifest Guidelines - **Claude plugin manifest** - Path: `plugins//.claude-plugin/plugin.json` - Prefer plugin-local relative paths, for example: - `"skills": "./skills/"` - `"mcpServers": "./mcp.json"` - **Cursor plugin manifest** - Path: `plugins//.cursor-plugin/plugin.json` - Prefer plugin-local relative paths, for example: - `"skills": "./skills/"` - `"mcpServers": "./mcp.json"` - `"logo": "assets/logo.svg"` - **Marketplace manifests** - `.claude-plugin/marketplace.json` uses `source: "./plugins/"`. - `.cursor-plugin/marketplace.json` uses `metadata.pluginRoot: "plugins"` and plugin entries with `source: ""`. ## References - For detailed examples and checklists, read `references/plugin-guidelines.md`.