Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Ai"
"category": "AI"
},
{
"name": "flutter",
Expand Down Expand Up @@ -146,7 +146,7 @@
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Ui"
"category": "UI"
},
{
"name": "plugin-dev",
Expand Down Expand Up @@ -326,7 +326,7 @@
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Ui"
"category": "UI"
},
{
"name": "gatekeeper",
Expand Down Expand Up @@ -386,7 +386,7 @@
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Ai"
"category": "AI"
},
{
"name": "supabase",
Expand Down Expand Up @@ -446,7 +446,7 @@
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Ai"
"category": "AI"
},
{
"name": "slack-agent",
Expand Down Expand Up @@ -858,7 +858,7 @@
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Ai"
"category": "AI"
},
{
"name": "edgeparse",
Expand Down
70 changes: 70 additions & 0 deletions .agents/skills/create-plugin-scaffold/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
name: create-plugin-scaffold
description: Create a new Cursor plugin scaffold with a valid manifest, component directories, and marketplace wiring. Use when starting a new plugin or adding a plugin to a multi-plugin repository.
---

# Create plugin scaffold

## Trigger

You need to create a new Cursor plugin from scratch and make it ready for local use or marketplace submission.

## Required Inputs

- Plugin name (lowercase kebab-case)
- Plugin purpose and target users
- Component set to include (`rules`, `skills`, `agents`, `commands`, `hooks`, `mcpServers`)
- Repository style (`single-plugin` or `multi-plugin marketplace`)

## Output Location

By default, create the plugin inside the user's local plugin directory:

```
~/.cursor/plugins/local/<plugin-name>/
```

This path makes the plugin immediately available to Cursor without any install step. If the user explicitly asks to create the plugin elsewhere (e.g. inside an existing repo or a specific directory), respect that choice instead.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

## Workflow

1. Validate plugin name format: lowercase kebab-case, starts and ends with an alphanumeric character.
2. Determine the target directory:
- Default: `~/.cursor/plugins/local/<plugin-name>/`
- Override: use the path the user specifies, if any.
- Create the directory (and parents) if it does not exist.
3. Create base files inside the target directory:
- `.cursor-plugin/plugin.json`
- `README.md`
- `LICENSE`
- optional `CHANGELOG.md`
4. Populate `plugin.json`:
- Required: `name`
- Recommended: `version`, `description`, `author`, `license`, `keywords`
- Add explicit component paths only when non-default discovery is needed.
Comment thread
coderabbitai[bot] marked this conversation as resolved.
5. Create component files with valid frontmatter:
Comment thread
amondnet marked this conversation as resolved.
- Rules: `.mdc` with `description`, `alwaysApply`, optional `globs`
- Skills: `skills/<skill-name>/SKILL.md` with `name`, `description`
- Agents: `agents/*.md` with `name`, `description`
- Commands: `commands/*.(md|txt)` with `name`, `description`
6. If repository uses `.cursor-plugin/marketplace.json`, add plugin entry:
- `name`
- `source`
- optional metadata (`description`, `keywords`, `category`, `tags`)
7. Ensure all manifest paths are relative, valid, and do not use absolute paths or parent traversal.

## Guardrails

- Keep the plugin focused on one use case.
- Prefer concise, actionable skill and rule text over long prose.
- Do not reference files that do not exist.
- Use folder discovery defaults unless custom paths are required.
- Always save to `~/.cursor/plugins/local/<plugin-name>/` unless the user provides a different path.

## Output

- Created file tree for the plugin (with full path to the output directory)
- Final `plugin.json`
- Marketplace entry (if applicable)
- Short validation report of required fields and component metadata
- Confirmation that the plugin is saved under `~/.cursor/plugins/local/` and ready for use
Comment thread
coderabbitai[bot] marked this conversation as resolved.
4 changes: 4 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
},
{
"name": "mcp-neo4j",
"displayName": "MCP Neo4j",
"description": "Neo4j MCP servers for graph database operations, memory management, Aura cloud management, and data modeling",
"category": "database",
"keywords": ["neo4j", "graph-database", "cypher"],
Expand Down Expand Up @@ -242,6 +243,7 @@
},
{
"name": "vueuse",
"displayName": "VueUse",
"description": "VueUse composables for building concise, maintainable Vue.js / Nuxt features",
"category": "framework",
"keywords": ["vueuse", "vue", "composables", "utilities"],
Expand All @@ -266,6 +268,7 @@
},
{
"name": "mcp-dev",
"displayName": "MCP Dev",
"description": "Guide for creating high-quality MCP servers with best practices, TypeScript/Python patterns, and evaluation tools",
"category": "tooling",
"keywords": ["mcp", "server", "development", "best-practices"],
Expand Down Expand Up @@ -391,6 +394,7 @@
},
{
"name": "markitdown",
"displayName": "MarkItDown",
"description": "Convert documents (PDF, DOCX, PPTX, images, etc.) to Markdown using MarkItDown MCP server",
"category": "tooling",
"keywords": ["markitdown", "pdf", "docx", "pptx", "markdown", "conversion", "images"],
Expand Down
6 changes: 5 additions & 1 deletion .claude/rules/marketplace-sync.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: Keep all marketplace manifests in sync — editing one requires upd
globs:
- ".claude-plugin/marketplace.json"
- ".agents/plugins/marketplace.json"
- ".cursor-plugin/marketplace.json"
- "plugins/*/.claude-plugin/plugin.json"
alwaysApply: false
---
Expand All @@ -17,6 +18,7 @@ others are **generated** and must never be hand-edited in isolation.
|-------------|---------------------------------------|-------------------------|
| Claude Code | `.claude-plugin/marketplace.json` | **source of truth** (edit here) |
| Codex | `.agents/plugins/marketplace.json` | generated — do not hand-edit |
| Cursor | `.cursor-plugin/marketplace.json` | generated — do not hand-edit |

## Principle: edit one → sync all

Expand All @@ -31,16 +33,18 @@ bun scripts/cli.ts multi-format
This regenerates, for every local plugin (`source: "./plugins/..."`):

- `.agents/plugins/marketplace.json` (Codex marketplace, filtered to local plugins)
- `.cursor-plugin/marketplace.json` (Cursor marketplace, filtered to local plugins)
- `plugins/<name>/.codex-plugin/plugin.json` (Codex manifest)
- `plugins/<name>/plugin.json` (Antigravity manifest)
- `plugins/<name>/mcp_config.json` (Antigravity, when MCP present)
- `plugins/<name>/.cursor-plugin/plugin.json` (Cursor manifest)

## Companion files that must move together

- **`release-please-config.json`** — add a `plugins/<name>` package entry whose
`extra-files` cover **every** version-bearing manifest the plugin ships
(`.claude-plugin/plugin.json`, and `.codex-plugin/plugin.json` + root `plugin.json`
when multi-format generates them).
+ `.cursor-plugin/plugin.json` when multi-format generates them).
- **`.release-please-manifest.json`** — add the matching `plugins/<name>` version.
- **`README.md`** — add/remove the plugin entry under **Built-in Plugins**.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: Claude Code Plugin Builder
description: Creates Claude Code plugins with proper manifest structure, directory layout, and components (commands, agents, skills, hooks, MCP servers). Use when user requests creating plugins, adding slash commands, integrating MCP servers, setting up hooks, migrating Gemini extensions, or mentions "plugin.json", ".claude-plugin", or "marketplace.json". Handles plugin testing, debugging, and marketplace distribution.
description: Creates Claude Code plugins with proper manifest structure, directory layout, and components (commands, agents, skills, hooks, MCP servers). This is for Claude Code plugins (`.claude-plugin/plugin.json`) — for Codex plugins (`.codex-plugin/plugin.json`) use the `plugin-creator` skill, and for Cursor plugins (`.cursor-plugin/plugin.json`) use the `create-plugin-scaffold` skill instead. Use when user requests creating plugins, adding slash commands, integrating MCP servers, setting up hooks, migrating Gemini extensions, or mentions "plugin.json", ".claude-plugin", or "marketplace.json". Handles plugin testing, debugging, and marketplace distribution.
---

# Claude Code Plugin Builder
Expand Down
1 change: 1 addition & 0 deletions .claude/skills/create-plugin-scaffold
Loading
Loading