From marketplace-creator
This skill should be used when the user asks about "marketplace", "scaffold plugin", "create plugin", "plugin registry", "marketplace.json", "publish skills", or "manage skills". Make sure to use this skill whenever the user wants to create a skill marketplace repository, scaffold new Claude Code plugins, register plugins in a marketplace, validate plugin structure, manage plugin versions, or organize a collection of Claude Code plugins and skills, even if they just mention creating or publishing a plugin without explicitly saying marketplace.
How this skill is triggered — by the user, by Claude, or both
Slash command
/marketplace-creator:marketplace-creatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create and manage Claude Code plugin marketplaces -- from initializing the repository to scaffolding plugins, registering them in the marketplace registry, and maintaining quality.
Create and manage Claude Code plugin marketplaces -- from initializing the repository to scaffolding plugins, registering them in the marketplace registry, and maintaining quality.
A marketplace is a GitHub repository containing:
marketplace.json registry listing all available pluginsplugins/This skill handles the full lifecycle: create the repo, scaffold plugins, register them, validate quality.
Create a new GitHub repo as a plugin marketplace:
# Use the init-marketplace-repo.sh script
bash ~/.claude/skills/marketplace-creator/scripts/init-marketplace-repo.sh <repo-name> <github-user>
The script creates:
.claude-plugin/marketplace.json -- the registry (see references/marketplace-schema.md)plugins/ -- directory for first-party pluginsexternal_plugins/ -- manifests for third-party pluginsREADME.md -- marketplace documentationghGenerate the full structure for a new Claude Code plugin:
# Use the scaffold-plugin.sh script
bash ~/.claude/skills/marketplace-creator/scripts/scaffold-plugin.sh <plugin-name> [--with-skills] [--with-commands] [--with-hooks] [--with-agents] [--with-mcp]
This generates a complete plugin directory. See references/plugin-anatomy.md for the full structural reference.
Minimum viable plugin:
plugin-name/
├── .claude-plugin/
│ └── plugin.json # name is the only required field
└── skills/
└── main-skill/
└── SKILL.md
Full plugin (all components):
plugin-name/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ └── skill-name/
│ ├── SKILL.md
│ ├── references/
│ ├── scripts/
│ └── assets/
├── commands/
│ └── command-name.md
├── agents/
│ └── agent-name.md
├── hooks/
│ └── hooks.json
├── .mcp.json # MCP server config (optional)
├── README.md
└── LICENSE
{
"name": "kebab-case-name",
"description": "50-200 chars for marketplace display",
"version": "0.1.0",
"author": { "name": "Author Name", "email": "[email protected]" },
"repository": "https://github.com/user/repo",
"license": "MIT",
"keywords": ["tag1", "tag2"]
}
Name must match: ^[a-z][a-z0-9]*(-[a-z0-9]+)*$
Only two fields: name and description (max 1024 chars total).
Description rules:
{
"hooks": {
"EventName": [
{
"matcher": "pattern",
"hooks": [
{
"type": "command",
"command": "'${CLAUDE_PLUGIN_ROOT}/hooks/script.sh'",
"async": false
}
]
}
]
}
}
Events: PreToolUse, PostToolUse, UserPromptSubmit, Stop, SubagentStop, SessionStart, SessionEnd, PreCompact, Notification.
Add a plugin to marketplace.json:
First-party (source in marketplace repo):
{
"name": "plugin-name",
"description": "What this plugin does",
"category": "development",
"source": "./plugins/plugin-name"
}
External (separate GitHub repo):
{
"name": "plugin-name",
"description": "What this plugin does",
"category": "development",
"source": {
"source": "url",
"url": "https://github.com/user/repo.git"
},
"homepage": "https://github.com/user/repo"
}
Pin to specific commit:
{
"source": {
"source": "url",
"url": "https://github.com/user/repo.git",
"sha": "abc123def456"
}
}
To register a third-party plugin hosted in a separate repository:
.claude-plugin/plugin.json with at least a name field, and at least one skill with a proper SKILL.mdexternal_plugins/<plugin-name>.json with the plugin metadata and source URLBefore pushing, validate every plugin against these criteria:
Registry-level checks:
marketplace.json has valid JSON with $schema, name, description, owner, plugins[]plugins[] has name, description, sourcePlugin-level checks:
plugin.json with at least name field^[a-z][a-z0-9]*(-[a-z0-9]+)*$Skill-level checks:
name and descriptionHook checks (if present):
hooks.json has the outer {"hooks": {...}} wrapper${CLAUDE_PLUGIN_ROOT} for portabilityFollow semantic versioning for all plugins:
Version bump workflow:
version in .claude-plugin/plugin.jsonsha in marketplace.json to pin the new versionplugin-name: v1.2.0 - added X skillTracking versions across the marketplace:
plugin.jsonsha field serves as the version anchorOpen the visual skill/plugin creator in a browser:
open assets/skill-creator-web.html
# Or: xdg-open, python3 -m http.server, etc.
The cyberpunk-themed web UI provides:
Single-domain marketplace: All plugins serve one technology stack (e.g., infrastructure tools). Keep categories broad (setup, monitoring, troubleshooting).
Multi-domain marketplace: Plugins span different domains (dev tools, infra, AI). Use clear categories and ensure skill descriptions include enough trigger phrases to avoid cross-domain misfires.
Monorepo marketplace: All plugins live in plugins/ within the marketplace repo. Simplifies versioning and CI but increases repo size.
Hybrid marketplace: First-party core plugins in plugins/, specialized or community plugins as external references. Balances control with extensibility.
| Mistake | Fix |
|---|---|
| Description summarizes workflow | Rewrite to describe ONLY triggering conditions |
plugin.json name has uppercase | Use kebab-case only |
| SKILL.md has extra frontmatter fields | Only name and description are parsed |
hooks.json missing wrapper {"hooks": {...}} | Plugin hooks need the outer hooks key |
| Marketplace source path wrong | Use ./plugins/name for local, URL object for external |
| Version not updated after changes | Always bump version in plugin.json on meaningful changes |
| External plugin SHA not pinned | Pin to a commit SHA for reproducible installations |
references/marketplace-schema.mdreferences/plugin-anatomy.mdassets/skill-creator-web.htmlnpx claudepluginhub biodoia/biodoia-skills-marketplace --plugin marketplace-creatorCreate and configure Claude Code marketplaces and plugins. Use when the user wants to create a marketplace, publish plugins, set up team plugin distribution, or configure marketplace.json or plugin.json files. Triggers: create marketplace, publish plugin, plugin distribution, marketplace.json, plugin.json, team plugins, share plugins
Guides creation of Claude Code plugin marketplaces with marketplace.json manifests, directory structures, schema, owner metadata, and distribution strategies for teams.
Guides creating, validating, and managing Claude Code plugin marketplaces including marketplace.json schema, plugin entries, and best practices for setup and distribution.