Marketplace Update Skill
This skill provides functionality to update the .claude-plugin/marketplace.json file when plugins are added, modified, or removed from the marketplace.
Purpose
Maintain the marketplace catalog by:
-
Adding new plugin entries
-
Updating existing plugin metadata
-
Removing obsolete plugins
-
Validating marketplace structure
-
Ensuring consistency across the catalog
When to Use
Use this skill when:
-
A new plugin is created and needs to be registered
-
An existing plugin's components change (agents, commands, skills added/removed)
-
Plugin metadata needs updating (version, description, keywords, etc.)
-
A plugin is being removed from the marketplace
-
Validating marketplace.json structure
Marketplace Structure
The marketplace.json file follows this schema:
{ "name": "marketplace-name", "owner": { "name": "Owner Name", "email": "email@example.com", "url": "https://github.com/username" }, "metadata": { "description": "Marketplace description", "version": "1.0.0" }, "plugins": [ { "name": "plugin-name", "source": "./plugins/plugin-name", "description": "Plugin description", "version": "1.0.0", "author": { "name": "Author Name", "url": "https://github.com/username" }, "homepage": "https://github.com/username/repo", "repository": "https://github.com/username/repo", "license": "MIT", "keywords": ["keyword1", "keyword2"], "category": "category-name", "strict": false, "commands": ["./commands/command-name.md"], "agents": ["./agents/agent-name.md"], "skills": ["./skills/skill-name"] } ] }
Operations
Add Plugin
Add a new plugin entry to the marketplace:
Use the provided Python script
python marketplace_update.py add
--name "plugin-name"
--description "Plugin description"
--version "1.0.0"
--category "category-name"
--agents "agent1.md,agent2.md"
--commands "command1.md,command2.md"
--skills "skill1,skill2"
Required Fields:
-
name
-
Plugin name (hyphen-case)
-
description
-
Brief plugin description
-
version
-
Semantic version (e.g., "1.0.0")
Optional Fields:
-
category
-
Plugin category (default: "general")
-
agents
-
Comma-separated list of agent files
-
commands
-
Comma-separated list of command files
-
skills
-
Comma-separated list of skill directories
-
keywords
-
Comma-separated list of keywords
-
license
-
License type (default: "MIT")
-
strict
-
Strict mode flag (default: false)
Update Plugin
Update an existing plugin entry:
python marketplace_update.py update
--name "plugin-name"
--description "Updated description"
--version "1.1.0"
--add-agent "new-agent.md"
--remove-command "old-command.md"
Update Operations:
-
--description
-
Update description
-
--version
-
Update version
-
--category
-
Update category
-
--keywords
-
Update keywords (replaces all)
-
--add-agent
-
Add agent file
-
--remove-agent
-
Remove agent file
-
--add-command
-
Add command file
-
--remove-command
-
Remove command file
-
--add-skill
-
Add skill directory
-
--remove-skill
-
Remove skill directory
Remove Plugin
Remove a plugin from the marketplace:
python marketplace_update.py remove --name "plugin-name"
Validate Marketplace
Validate the marketplace.json structure:
python marketplace_update.py validate
This checks:
-
JSON syntax validity
-
Required fields presence
-
File path existence
-
Component reference validity
-
Duplicate plugin names
Python Script
The skill includes a Python script at marketplace_update.py that provides command-line interface for all operations.
Usage from Claude Code
When invoked as a skill:
Read Plugin Structure
-
Scan plugin directory for components
-
Extract metadata from frontmatter
-
Build component lists
Execute Python Script
-
Call marketplace_update.py with appropriate arguments
-
Pass plugin details
-
Handle success/error responses
Validate Result
-
Verify marketplace.json is valid
-
Confirm plugin entry is correct
-
Report success or errors
Examples
Example 1: Add New Plugin
Plugin: golang-development
Components: 3 agents, 1 command, 4 skills
python marketplace_update.py add
--name "golang-development"
--description "Go language development tools"
--version "1.0.0"
--category "languages"
--keywords "golang,go,development"
--agents "golang-pro.md,gin-pro.md,charm-pro.md"
--commands "golang-scaffold.md"
--skills "async-golang-patterns,golang-testing-patterns,golang-packaging,golang-performance-optimization"
Example 2: Update Plugin Version
Update version and add new agent
python marketplace_update.py update
--name "golang-development"
--version "1.1.0"
--add-agent "gorm-pro.md"
Example 3: Remove Plugin
python marketplace_update.py remove --name "obsolete-plugin"
Integration with Commands
The /claude-plugin:create and /claude-plugin:update commands should invoke this skill automatically:
From /claude-plugin:create Command
After creating a new plugin:
- Scan plugin directory for components
- Extract metadata from agent/command frontmatter
- Invoke marketplace-update skill:
- Operation: add
- Plugin name: [from user input]
- Components: [scanned from directory]
- Metadata: [extracted from frontmatter]
From /claude-plugin:update Command
After updating a plugin:
- Determine what changed (added/removed/modified)
- Invoke marketplace-update skill:
- Operation: update
- Plugin name: [from user input]
- Changes: [specific updates]
Error Handling
Plugin Already Exists (Add)
Error: Plugin 'plugin-name' already exists in marketplace. Suggestion: Use 'update' operation instead.
Plugin Not Found (Update/Remove)
Error: Plugin 'plugin-name' not found in marketplace. Suggestion: Use 'add' operation to create it.
Invalid JSON
Error: marketplace.json contains invalid JSON. Suggestion: Fix JSON syntax before proceeding.
Component File Missing
Warning: Component file './agents/agent-name.md' not found. Suggestion: Create the file or remove from plugin entry.
Validation Failure
Error: Marketplace validation failed:
- Plugin 'plugin-a' missing required field 'description'
- Plugin 'plugin-b' references non-existent agent 'missing.md' Suggestion: Fix errors and validate again.
Best Practices
Always Validate After Changes
-
Run validate after add/update/remove
-
Fix any warnings or errors
-
Ensure all referenced files exist
Scan Plugin Directory
-
Don't manually list components
-
Scan directory to detect agents/commands/skills
-
Extract metadata from frontmatter
Semantic Versioning
-
Patch: Bug fixes, documentation updates (1.0.0 → 1.0.1)
-
Minor: New components, enhancements (1.0.0 → 1.1.0)
-
Major: Breaking changes, removals (1.0.0 → 2.0.0)
Consistent Metadata
-
Keep descriptions concise (< 100 chars)
-
Use relevant keywords
-
Maintain consistent author information
-
Use appropriate categories
Backup Before Changes
-
Create backup of marketplace.json
-
Test changes in development first
-
Validate before committing
Categories
Common plugin categories:
-
languages
-
Language-specific tools (Python, Go, Rust, etc.)
-
development
-
General development tools
-
security
-
Security scanning and analysis
-
testing
-
Test generation and automation
-
operations
-
DevOps and operations tools
-
infrastructure
-
Cloud and infrastructure tools
-
documentation
-
Documentation generation
-
architecture
-
Architecture and design tools
-
workflow
-
Workflow orchestration
-
general
-
General purpose tools
File Structure
plugins/claude-plugin/skills/marketplace-update/ ├── SKILL.md # This file ├── marketplace_update.py # Python implementation └── references/ # Optional examples └── examples.md
Requirements
-
Python 3.8+
-
No external dependencies (uses standard library only)
-
Access to .claude-plugin/marketplace.json
-
Read/write permissions on marketplace file
Success Criteria
After running this skill:
-
✓ marketplace.json is valid JSON
-
✓ Plugin entry is correct and complete
-
✓ All referenced files exist
-
✓ No duplicate plugin names
-
✓ Required fields are present
-
✓ Validation passes without errors