home / skills / geoffjay / claude-plugins / marketplace-update

marketplace-update skill

/plugins/claude-plugin/skills/marketplace-update

npx playbooks add skill geoffjay/claude-plugins --skill marketplace-update

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
8.8 KB
---
name: marketplace-update
description: Updates the .claude-plugin/marketplace.json file when plugins are added, modified, or removed. Use when creating or updating plugin entries in the marketplace catalog.
---

# 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:

```json
{
  "name": "marketplace-name",
  "owner": {
    "name": "Owner Name",
    "email": "[email protected]",
    "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:

```python
# 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
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
python marketplace_update.py remove --name "plugin-name"
```

### Validate Marketplace

Validate the marketplace.json structure:

```python
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:

1. **Read Plugin Structure**

   - Scan plugin directory for components
   - Extract metadata from frontmatter
   - Build component lists

2. **Execute Python Script**

   - Call marketplace_update.py with appropriate arguments
   - Pass plugin details
   - Handle success/error responses

3. **Validate Result**
   - Verify marketplace.json is valid
   - Confirm plugin entry is correct
   - Report success or errors

## Examples

### Example 1: Add New Plugin

```python
# 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

```python
# 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
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:

```
1. Scan plugin directory for components
2. Extract metadata from agent/command frontmatter
3. 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:

```
1. Determine what changed (added/removed/modified)
2. 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

1. **Always Validate After Changes**

   - Run validate after add/update/remove
   - Fix any warnings or errors
   - Ensure all referenced files exist

2. **Scan Plugin Directory**

   - Don't manually list components
   - Scan directory to detect agents/commands/skills
   - Extract metadata from frontmatter

3. **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)

4. **Consistent Metadata**

   - Keep descriptions concise (< 100 chars)
   - Use relevant keywords
   - Maintain consistent author information
   - Use appropriate categories

5. **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