Overview
Plugin manifests allow you to:- Declare skills explicitly instead of relying on directory conventions
- Group multiple skills under a named plugin
- Define multi-plugin repositories (marketplace catalogs)
- Maintain compatibility with Claude Code’s plugin system
Plugin manifests are optional. The CLI will still discover skills in standard locations even without manifests.
Supported Manifest Files
The CLI looks for these files in a repository:marketplace.json
Multi-plugin catalog
Location:
Location:
.claude-plugin/marketplace.jsonplugin.json
Single plugin
Location:
Location:
.claude-plugin/plugin.jsonMarketplace Manifest
A marketplace manifest defines multiple plugins in a single repository.File Location
Schema
Fields
object
Global metadata for the marketplace
array
required
Array of plugin definitions
Path Resolution
Paths are resolved in this order:- Start with repository root
- Apply
metadata.pluginRootif present - Apply
plugin.sourceif present - Apply each skill path from
plugin.skills
Plugin Manifest
A plugin manifest defines a single plugin at the repository root.File Location
Schema
Fields
string
Plugin name for grouping skills
string[]
Array of skill paths relative to the repository root. Each path must start with
./Path Resolution
Paths are resolved relative to the repository root:Security: Path Validation
All paths in plugin manifests are validated to prevent path traversal attacks.Validation Rules
1
Relative path check
All paths must start with
./ per the Claude Code convention2
Containment check
Resolved paths must be contained within the repository root (no
.. segments allowed)3
Normalization
Paths are normalized before checking containment
Invalid Paths
How Discovery Works
When you runskills add <source>, the CLI searches for skills in this order:
1
Check for manifests
Look for
.claude-plugin/marketplace.json or .claude-plugin/plugin.json2
Extract declared skills
If manifests exist, add their skill paths to the search list
3
Add conventional directories
Always search standard locations like
skills/, .agents/skills/, etc.4
Discover SKILL.md files
Find all
SKILL.md files in the search directories5
Deduplicate
Remove duplicate skills based on normalized name
Discovery Flow
Plugin Grouping
Skills discovered from manifests can be grouped by plugin name.In Lock Files
When a skill is installed from a manifest with aname field, the plugin name is stored:
In Skill Lists
Theskills list command can group skills by plugin:
Implementation Details
Source Code
Plugin manifest support is implemented insrc/plugin-manifest.ts:
API
function
Extract skill search directories from plugin manifests
function
Get a map of skill paths to plugin names
Examples
Basic Marketplace
Marketplace with Plugin Root
Simple Plugin
Related Documentation
Lock Files
See how pluginName is stored in lock files
Claude Code Plugins
Learn about the Claude Code plugin marketplace