Create Marketplace
Scaffold a new plugin marketplace with a valid manifest, then guide the user through local testing and (optionally) private-repo + auto-update setup before publishing.
User's intention
$ARGUMENTS
References
Consult the relevant doc(s) before making structural decisions:
docs/marketplace.md — marketplace structure, registration, publishing, versioning, auto-updates
docs/plugins.md — plugin structure, manifest, hooks and relative paths
docs/skills.md — skill format, popular repositories, skills CLI
docs/subagents.md — subagent usage, AGENTS.md format, coordination tips
docs/hooks.md — hook lifecycle, PreToolUse / PostToolUse, hook scripts
docs/rules.md — rules format and scope
docs/mcp.md — MCP server configuration
docs/memory.md — memory system, persistent memory for subagents
docs/skills-cli.md — skills CLI commands
docs/claude-code.md — Claude Code settings, commands, IDE integrations
Workflow
The form data submitted by the user was injected into your context as additionalContext by the UserPromptExpansion hook. Parse the JSON object { name, description, ownerName, ownerEmail, homepage?, targetDir, privateRepo } and proceed:
Create marketplace directory structure
<targetDir>/
├── .claude-plugin/
│ └── marketplace.json
├── plugins/
├── CLAUDE.md
└── README.md
Write .claude-plugin/marketplace.json
{
"name": "<name>",
"owner": {
"name": "<ownerName>",
"email": "<ownerEmail>"
},
"metadata": {
"description": "<description>",
"version": "0.1.0",
"homepage": "<homepage>"
},
"plugins": []
}
Omit homepage if the user left it blank.
Write README.md
Minimal: title, one-line description, install instructions:
# <name>
<description>
## Install
\`\`\`bash
claude plugin marketplace add <repo-or-path>
claude plugin install <plugin-name>@<name>
\`\`\`
Write CLAUDE.md
Short context file for Claude Code sessions opened inside this marketplace repo. Explain that this is a marketplace catalog, point at .claude-plugin/marketplace.json, and describe the plugin source layout convention.
Configure auto-updates
Third-party and local marketplaces have auto-update disabled by default. To enable once the marketplace is registered:
- Run
/plugin → Marketplaces tab → select marketplace → Enable auto-update.
Global env-var overrides:
export DISABLE_AUTOUPDATER=1 # disable everything
export FORCE_AUTOUPDATE_PLUGINS=1 # keep plugin auto-update, disable Claude Code updates
Configure private repository access (only if privateRepo is true)
For background auto-update at startup, credential helpers are skipped — set the matching env var:
| Provider |
Env vars |
| GitHub |
GITHUB_TOKEN or GH_TOKEN |
| GitLab |
GITLAB_TOKEN or GL_TOKEN |
| Bitbucket |
BITBUCKET_TOKEN |
Add to .bashrc / .zshrc so it persists. For CI, set as a secret. See ${CLAUDE_SKILL_DIR}/../../../../docs/marketplace.md#private-repositories.
Report to user
<targetDir>/.claude-plugin/marketplace.json created
<targetDir>/plugins/, README.md, and CLAUDE.md created
- Next steps:
- Use
/create-plugin to add plugins to the marketplace
- Then use
/create-skill or /create-subagent to populate each plugin with tools
- Test locally:
claude plugin marketplace add <targetDir>
- When ready to publish: push to a Git host, then share with
claude plugin marketplace add owner/repo
1---2name: create-marketplace3description: Scaffolds a new Claude Code plugin marketplace: creates the directory structure, marketplace.json manifest, README, and CLAUDE.md context file. Guides the user through local testing, private repository setup, and auto-update configuration. Use when the user asks to create a marketplace, scaffold a marketplace, or set up a plugin marketplace.4---56# Create Marketplace78Scaffold a new plugin marketplace with a valid manifest, then guide the user through local testing and (optionally) private-repo + auto-update setup before publishing.910## User's intention1112$ARGUMENTS1314## References1516Consult the relevant doc(s) before making structural decisions:1718- [`docs/marketplace.md`](${CLAUDE_SKILL_DIR}/../../../../docs/marketplace.md) — marketplace structure, registration, publishing, versioning, auto-updates19- [`docs/plugins.md`](${CLAUDE_SKILL_DIR}/../../../../docs/plugins.md) — plugin structure, manifest, hooks and relative paths20- [`docs/skills.md`](${CLAUDE_SKILL_DIR}/../../../../docs/skills.md) — skill format, popular repositories, skills CLI21- [`docs/subagents.md`](${CLAUDE_SKILL_DIR}/../../../../docs/subagents.md) — subagent usage, AGENTS.md format, coordination tips22- [`docs/hooks.md`](${CLAUDE_SKILL_DIR}/../../../../docs/hooks.md) — hook lifecycle, PreToolUse / PostToolUse, hook scripts23- [`docs/rules.md`](${CLAUDE_SKILL_DIR}/../../../../docs/rules.md) — rules format and scope24- [`docs/mcp.md`](${CLAUDE_SKILL_DIR}/../../../../docs/mcp.md) — MCP server configuration25- [`docs/memory.md`](${CLAUDE_SKILL_DIR}/../../../../docs/memory.md) — memory system, persistent memory for subagents26- [`docs/skills-cli.md`](${CLAUDE_SKILL_DIR}/../../../../docs/skills-cli.md) — skills CLI commands27- [`docs/claude-code.md`](${CLAUDE_SKILL_DIR}/../../../../docs/claude-code.md) — Claude Code settings, commands, IDE integrations2829## Workflow3031The form data submitted by the user was injected into your context as `additionalContext` by the `UserPromptExpansion` hook. Parse the JSON object `{ name, description, ownerName, ownerEmail, homepage?, targetDir, privateRepo }` and proceed:32331. **Create marketplace directory structure**34 ```35 <targetDir>/36 ├── .claude-plugin/37 │ └── marketplace.json38 ├── plugins/39 ├── CLAUDE.md40 └── README.md41 ```42432. **Write `.claude-plugin/marketplace.json`**44 ```json45 {46 "name": "<name>",47 "owner": {48 "name": "<ownerName>",49 "email": "<ownerEmail>"50 },51 "metadata": {52 "description": "<description>",53 "version": "0.1.0",54 "homepage": "<homepage>"55 },56 "plugins": []57 }58 ```59 Omit `homepage` if the user left it blank.60613. **Write `README.md`**62 Minimal: title, one-line description, install instructions:63 ```markdown64 # <name>6566 <description>6768 ## Install6970 \`\`\`bash71 claude plugin marketplace add <repo-or-path>72 claude plugin install <plugin-name>@<name>73 \`\`\`74 ```75764. **Write `CLAUDE.md`**77 Short context file for Claude Code sessions opened inside this marketplace repo. Explain that this is a marketplace catalog, point at `.claude-plugin/marketplace.json`, and describe the plugin source layout convention.78795. **Configure auto-updates**80 Third-party and local marketplaces have auto-update **disabled** by default. To enable once the marketplace is registered:81 - Run `/plugin` → **Marketplaces** tab → select marketplace → **Enable auto-update**.8283 Global env-var overrides:84 ```bash85 export DISABLE_AUTOUPDATER=1 # disable everything86 export FORCE_AUTOUPDATE_PLUGINS=1 # keep plugin auto-update, disable Claude Code updates87 ```88896. **Configure private repository access** _(only if `privateRepo` is true)_90 For background auto-update at startup, credential helpers are skipped — set the matching env var:9192 | Provider | Env vars |93 | --------- | ---------------------------- |94 | GitHub | `GITHUB_TOKEN` or `GH_TOKEN` |95 | GitLab | `GITLAB_TOKEN` or `GL_TOKEN` |96 | Bitbucket | `BITBUCKET_TOKEN` |9798 Add to `.bashrc` / `.zshrc` so it persists. For CI, set as a secret. See `${CLAUDE_SKILL_DIR}/../../../../docs/marketplace.md#private-repositories`.991007. **Report to user**101 - `<targetDir>/.claude-plugin/marketplace.json` created102 - `<targetDir>/plugins/`, `README.md`, and `CLAUDE.md` created103 - Next steps:104 - Use `/create-plugin` to add plugins to the marketplace105 - Then use `/create-skill` or `/create-subagent` to populate each plugin with tools106 - Test locally: `claude plugin marketplace add <targetDir>`107 - When ready to publish: push to a Git host, then share with `claude plugin marketplace add owner/repo`