skills/tools/plugin-creator/SKILL.md
Interactive tool to scaffold a complete Claude Code plugin -- plugin.json manifest, skills, agents, hooks, MCP servers, LSP servers, and an optional marketplace.json catalog entry. Use when the user asks to create a plugin, build a Claude Code plugin, scaffold a plugin marketplace, convert an existing .claude/ configuration into a plugin, or package skills and agents for distribution. Runs a guided questionnaire, writes all required files to disk, and prints test instructions.
npx skillsauth add krzysztofsurdy/code-virtuoso plugin-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Scaffold a well-formed Claude Code plugin with exactly the components the user wants -- no more, no less. A plugin is a self-contained directory with a manifest (.claude-plugin/plugin.json) plus any of: skills, agents, hooks, MCP servers, LSP servers, bin executables, output styles, default settings. This tool generates the correct structure, writes a valid manifest, adds a marketplace entry when requested, and explains how to test locally with --plugin-dir.
| Principle | Meaning |
|---|---|
| Manifest is optional, but recommended | If omitted, the directory name becomes the plugin name and components auto-discover at default locations. Provide one whenever metadata, versioning, or custom paths matter. |
| Default locations first | Prefer skills/, agents/, hooks/hooks.json, .mcp.json, .lsp.json at plugin root. Only override paths in plugin.json when there is a real reason. |
| Components live at the root, not in .claude-plugin/ | Only plugin.json belongs inside .claude-plugin/. Everything else (skills/, agents/, etc.) is at the plugin root. This is the single most common mistake. |
| Use ${CLAUDE_PLUGIN_ROOT} for every plugin-internal path | Absolute paths break when the plugin is cached. ${CLAUDE_PLUGIN_ROOT} resolves to the installed plugin directory at runtime. Use ${CLAUDE_PLUGIN_DATA} for state that must survive updates. |
| Namespacing is automatic | Plugin skills are always invoked as /plugin-name:skill-name. Names are derived from the name field in plugin.json (or directory name if no manifest). |
| Semantic versioning in one place | Set version in plugin.json OR in the marketplace entry -- not both. When present in both, plugin.json wins. |
This skill uses guided phases -- each phase is a separate file loaded one at a time. Every phase ends with a gate where you must wait for user confirmation before proceeding. Do not skip phases or merge them.
If the user aborts at any phase, discard progress and exit without writing a partial plugin.
| Phase | File | What it covers | |---|---|---| | 1 | Plugin Identity | Name, description, version, author, optional metadata | | 2 | Component Selection | Which component types to include (skills, agents, hooks, etc.) | | 3 | Component Details | Per-component sub-questionnaires (skills, agents, hooks, MCP, LSP, bin, styles, settings) | | 4 | Distribution | Standalone, new marketplace, or add to existing marketplace | | 5 | Write Files | Validate, confirm, write all files to disk | | 6 | Test Instructions | Test commands, reload, validation, next steps |
Start by loading Phase 1. After the user confirms each phase, load the next. Never load multiple phases at once. Never skip a phase.
.claude-plugin/. Only plugin.json lives there.plugin.json, hooks, or MCP configs. All plugin-internal paths must start with ./ or use ${CLAUDE_PLUGIN_ROOT}.../ -- the plugin cache will not copy them. Symlinks are preserved, so use those if cross-plugin sharing is truly needed.hooks, mcpServers, or permissionMode on a plugin-shipped agent -- these are blocked for security.version in plugin.json and in the marketplace entry. Pick one authoritative location.claude-code-marketplace, anthropic-marketplace, etc. -- full list in references/marketplace-manifest.md).plugin.json breaks the plugin silently in some cases and loudly in others -- both waste the user's time.The smallest valid plugin is a directory with one SKILL.md:
my-plugin/
└── skills/
└── hello/
└── SKILL.md
No plugin.json is required -- the directory name becomes the plugin name. Add a manifest only when you need metadata, versioning, or custom paths.
| Reference | Contents |
|---|---|
| plugin-manifest.md | Complete plugin.json schema: required + metadata + component path fields, userConfig, channels, path behavior rules, ${CLAUDE_PLUGIN_ROOT} and ${CLAUDE_PLUGIN_DATA} usage. |
| marketplace-manifest.md | Complete marketplace.json schema: owner, plugins array, all source types (relative, github, url, git-subdir, npm), strict mode, reserved names. |
| component-templates.md | Ready-to-use templates for plugin.json, SKILL.md, agent files, hooks/hooks.json, .mcp.json, .lsp.json, settings.json, bin/ scripts, and output styles. |
| distribution.md | Hosting options (git hosts, local, URL, npm), semantic versioning, release workflow, auto-update behavior, team marketplace configuration via extraKnownMarketplaces. |
| Situation | Recommended Skill |
|---|---|
| Creating the actual skill content inside a plugin | skill-creator |
| Writing the agent body for a plugin-shipped agent | Check existing agent definitions in agents/ for patterns |
| Generating rules files to pair with a plugin | agentic-rules-writer |
| Writing tickets for plugin-related backlog items | ticket-writer |
development
Spawn and coordinate a pre-composed agent team from a team definition file. Reads team files from teams/, resolves agents and skills, picks the best spawning mode (peer or sequential), and runs the workflow. Use when the user asks to run a team, dispatch a development team, start a feature delivery, or coordinate multiple agents for a multi-phase task.
development
Pre-composed agent team library. Use when the user asks which teams are available, what a team does, when to pick one team over another, or to browse multi-agent compositions. Catalogs ready-to-run teams (development team, review squad, war room) with their purpose, agent roster, workflow type, and when to use each. The actual dispatching is handled by the dispatching-agent-teams skill.
tools
Ecosystem discovery advisor. Use when the user asks 'what skill should I use', 'what agent should I delegate to', 'which team fits this task', or when onboarding to available skills, agents, and teams. Scans ALL installed skills at runtime -- not limited to any single plugin or vendor. Triggers: 'which skill', 'which agent', 'what do I use for', 'orient me', 'what tools do I have'.
development
Interactive pre-implementation design exploration. Use when the user has a vague idea, feature request, or problem statement but no written spec. Asks focused questions one at a time to surface goals, non-goals, constraints, success criteria, and risks, then produces a written spec and hard-gates implementation until approved. Use before writing any code, before planning, and before answering 'how should I build X'. Triggers: 'I want to build', 'I'm thinking about', 'help me figure out', 'let's brainstorm', 'help me spec out'.