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.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Marketplace 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 /plugin install |
Added via /plugin marketplace add |
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 |
|---|---|---|
name |
string | Marketplace identifier (kebab-case, no spaces) |
owner |
object | Marketplace maintainer information |
plugins |
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 |
|---|---|---|
name |
string | Plugin identifier (kebab-case, unique within marketplace) |
source |
string or object | Where to fetch the plugin |
Optional Plugin Fields
Standard metadata fields:
-
description- Brief plugin description -
version- Plugin version (semver) -
author- Author information object -
homepage- Documentation URL -
repository- Source code URL -
license- SPDX license identifier -
keywords- Tags for discovery -
category- Plugin category -
tags- Additional searchability tags
Component configuration fields:
-
commands- Custom paths to command files or directories -
agents- Custom paths to agent files -
hooks- Hooks configuration or path to hooks file -
mcpServers- MCP server configurations
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 |
|---|---|
strict: true (default) |
Plugin must include plugin.json; marketplace entry supplements it |
strict: false |
plugin.json 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
versionfor every plugin entry -
Document each plugin - Provide
descriptionfor discoverability
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
extraKnownMarketplacesin.claude/settings.json -
Local testing - Add with
/plugin marketplace add ./pathduring development
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
-
references/schema-reference.md- Complete field reference for marketplace.json -
references/distribution-patterns.md- Hosting and team distribution strategies -
examples/minimal-marketplace.md- Single plugin marketplace template -
examples/team-marketplace.md- Internal company marketplace template -
examples/community-marketplace.md- Public multi-plugin marketplace template
Related Skills
-
plugin-structure - For individual plugin
plugin.jsondetails - plugin-validator agent - For validating marketplace structure
-
/plugin-dev:create-marketplace- Guided marketplace creation workflow
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.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-02-05
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!