Claude-skill-registry-data marketplace-structure
This skill should be used when the user asks to "create a marketplace", "set up marketplace.json", "organize multiple plugins", "distribute plugins", "host plugins", "marketplace schema", "plugin marketplace structure", "multi-plugin organization", or needs guidance on plugin marketplace creation, marketplace manifest configuration, or plugin distribution strategies.
git clone https://github.com/majiayu000/claude-skill-registry-data
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/marketplace-structure" ~/.claude/skills/majiayu000-claude-skill-registry-data-marketplace-structure && rm -rf "$T"
data/marketplace-structure/SKILL.mdMarketplace Structure
A plugin marketplace is a catalog of available plugins that enables centralized discovery, version management, and distribution. This skill covers creating and maintaining marketplaces for team or community plugin distribution.
Overview
Marketplaces provide:
- Centralized discovery - Browse plugins from multiple sources in one place
- Version management - Track and update plugin versions automatically
- Team distribution - Share required plugins across an organization
- Flexible sources - Support for relative paths, GitHub repos, and git URLs
When to Create a Marketplace vs. a Plugin
| Create a Plugin | Create a Marketplace |
|---|---|
| Single-purpose extension | Collection of related plugins |
| Used directly by end users | Distributes multiple plugins |
| One team or individual maintains it | Curates plugins from various sources |
Installed via | Added via |
Directory Structure
Place
marketplace.json in the .claude-plugin/ directory at the repository root:
marketplace-repo/ ├── .claude-plugin/ │ └── marketplace.json # Required: Marketplace manifest ├── plugins/ # Optional: Local plugin directories │ ├── plugin-one/ │ │ └── .claude-plugin/ │ │ └── plugin.json │ └── plugin-two/ │ └── .claude-plugin/ │ └── plugin.json └── README.md # Recommended: Marketplace documentation
Marketplace Schema
The
marketplace.json manifest defines the marketplace and its available plugins.
Required Fields
| Field | Type | Description |
|---|---|---|
| string | Marketplace identifier (kebab-case, no spaces) |
| object | Marketplace maintainer information |
| array | List of available plugin entries |
Owner Object
{ "owner": { "name": "Team Name", "email": "team@example.com", "url": "https://github.com/team" } }
Optional Metadata
{ "metadata": { "description": "Brief marketplace description", "version": "1.0.0", "pluginRoot": "./plugins" } }
The
pluginRoot field sets the base path for relative plugin sources.
Plugin Entry Format
Each plugin in the
plugins array requires:
| Field | Type | Description |
|---|---|---|
| string | Plugin identifier (kebab-case, unique within marketplace) |
| string or object | Where to fetch the plugin |
Optional Plugin Fields
Standard metadata fields:
- Brief plugin descriptiondescription
- Plugin version (semver)version
- Author information objectauthor
- Documentation URLhomepage
- Source code URLrepository
- SPDX license identifierlicense
- Tags for discoverykeywords
- Plugin categorycategory
- Additional searchability tagstags
Component configuration fields:
- Custom paths to command files or directoriescommands
- Custom paths to agent filesagents
- Hooks configuration or path to hooks filehooks
- MCP server configurationsmcpServers
For complete field reference, see
references/schema-reference.md.
Plugin Sources
Relative Paths
For plugins within the same repository:
{ "name": "my-plugin", "source": "./plugins/my-plugin" }
GitHub Repositories
{ "name": "github-plugin", "source": { "source": "github", "repo": "owner/plugin-repo" } }
Git URLs
For GitLab, Bitbucket, or self-hosted git:
{ "name": "git-plugin", "source": { "source": "url", "url": "https://gitlab.com/team/plugin.git" } }
Strict vs. Non-Strict Mode
The
strict field controls whether plugins must have their own plugin.json:
| Mode | Behavior |
|---|---|
(default) | Plugin must include ; marketplace entry supplements it |
| optional; marketplace entry serves as complete manifest |
Use
strict: false when:
- Curating external plugins without modifying their source
- Providing all metadata in the marketplace entry
- Plugin directories contain only commands/agents/skills without manifest
{ "name": "external-plugin", "source": { "source": "github", "repo": "external/plugin" }, "description": "Complete metadata here", "version": "2.0.0", "strict": false }
Best Practices
Organization
- One theme per marketplace - Group related plugins (e.g., "frontend-tools", "security-plugins")
- Clear naming - Use descriptive kebab-case names for both marketplace and plugins
- Version all entries - Include
for every plugin entryversion - Document each plugin - Provide
for discoverabilitydescription
Versioning
- Use semantic versioning (X.Y.Z) for marketplace
metadata.version - Update marketplace version when adding, removing, or updating plugins
- Consider a CHANGELOG.md for tracking changes
Distribution
- GitHub hosting - Simplest distribution via
/plugin marketplace add owner/repo - Team settings - Configure
inextraKnownMarketplaces.claude/settings.json - Local testing - Add with
during development/plugin marketplace add ./path
For detailed distribution patterns, see
references/distribution-patterns.md.
Validation
Validate marketplace structure before publishing:
# Check JSON syntax jq . .claude-plugin/marketplace.json # Verify required fields jq 'has("name") and has("owner") and has("plugins")' .claude-plugin/marketplace.json
Use the
plugin-validator agent with marketplace support for comprehensive validation.
Complete Example
{ "name": "team-tools", "owner": { "name": "DevTools Team", "email": "devtools@company.com", "url": "https://github.com/company" }, "metadata": { "description": "Internal development tools for the engineering team", "version": "1.0.0" }, "plugins": [ { "name": "code-formatter", "source": "./plugins/formatter", "description": "Automatic code formatting on save", "version": "2.1.0" }, { "name": "security-scanner", "source": { "source": "github", "repo": "company/security-plugin" }, "description": "Security vulnerability detection", "version": "1.5.0", "category": "security" } ] }
Additional Resources
- Complete field reference for marketplace.jsonreferences/schema-reference.md
- Hosting and team distribution strategiesreferences/distribution-patterns.md
- Single plugin marketplace templateexamples/minimal-marketplace.md
- Internal company marketplace templateexamples/team-marketplace.md
- Public multi-plugin marketplace templateexamples/community-marketplace.md
Related Skills
- plugin-structure - For individual plugin
detailsplugin.json - plugin-validator agent - For validating marketplace structure
- Guided marketplace creation workflow/plugin-dev:create-marketplace
Working Example
This repository (
plugin-dev) is itself a marketplace. Examine .claude-plugin/marketplace.json at the repository root for a real-world example of marketplace structure and plugin organization.