home / skills / softaworks / agent-toolkit / plugin-forge

plugin-forge skill

/skills/plugin-forge

This skill helps you create and manage Claude Code plugins with correct structure, manifests, and marketplace integration.

npx playbooks add skill softaworks/agent-toolkit --skill plugin-forge

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

Files (7)
SKILL.md
5.1 KB
---
name: plugin-forge
description: Create and manage Claude Code plugins with proper structure, manifests, and marketplace integration. Use when creating plugins for a marketplace, adding plugin components (commands, agents, hooks), bumping plugin versions, or working with plugin.json/marketplace.json manifests.
---

# CC Plugin Forge

## Purpose

Build and manage Claude Code plugins with correct structure, manifests, and marketplace integration. Includes workflows, automation scripts, and reference docs.

## When to Use

- Creating new plugins for a marketplace
- Adding/modifying plugin components (commands, skills, agents, hooks)
- Updating plugin versions
- Working with plugin or marketplace manifests
- Setting up local plugin testing
- Publishing plugins

## Getting Started

### Create New Plugin

Use `create_plugin.py` to generate plugin structure:

```bash
python scripts/create_plugin.py plugin-name \
  --marketplace-root /path/to/marketplace \
  --author-name "Your Name" \
  --author-email "[email protected]" \
  --description "Plugin description" \
  --keywords "keyword1,keyword2" \
  --category "productivity"
```

This automatically:

- Creates plugin directory structure
- Generates `plugin.json` manifest
- Creates README template
- Updates `marketplace.json`

### Bump Version

Use `bump_version.py` to update versions in both manifests:

```bash
python scripts/bump_version.py plugin-name major|minor|patch \
  --marketplace-root /path/to/marketplace
```

Semantic versioning:

- **major**: Breaking changes (1.0.0 → 2.0.0)
- **minor**: New features, refactoring (1.0.0 → 1.1.0)
- **patch**: Bug fixes, docs (1.0.0 → 1.0.1)

## Development Workflow

### 1. Create Structure

Manual approach (if not using script):

```bash
mkdir -p plugins/plugin-name/.claude-plugin
mkdir -p plugins/plugin-name/commands
mkdir -p plugins/plugin-name/skills
```

### 2. Plugin Manifest

File: `plugins/plugin-name/.claude-plugin/plugin.json`

```json
{
  "name": "plugin-name",
  "version": "0.1.0",
  "description": "Plugin description",
  "author": {
    "name": "Your Name",
    "email": "[email protected]"
  },
  "keywords": ["keyword1", "keyword2"]
}
```

### 3. Register in Marketplace

Update `.claude-plugin/marketplace.json`:

```json
{
  "name": "plugin-name",
  "source": "./plugins/plugin-name",
  "description": "Plugin description",
  "version": "0.1.0",
  "keywords": ["keyword1", "keyword2"],
  "category": "productivity"
}
```

### 4. Add Components

Create in respective directories:

| Component | Location | Format |
|-----------|----------|--------|
| Commands | `commands/` | Markdown with frontmatter |
| Skills | `skills/<name>/` | Directory with `SKILL.md` |
| Agents | `agents/` | Markdown definitions |
| Hooks | `hooks/hooks.json` | Event handlers |
| MCP Servers | `.mcp.json` | External integrations |

### 5. Local Testing

```bash
# Add marketplace
/plugin marketplace add /path/to/marketplace-root

# Install plugin
/plugin install plugin-name@marketplace-name

# After changes: reinstall
/plugin uninstall plugin-name@marketplace-name
/plugin install plugin-name@marketplace-name
```

## Plugin Patterns

### Framework Plugin

For framework-specific guidance (React, Vue, etc.):

```
plugins/framework-name/
├── .claude-plugin/plugin.json
├── skills/
│   └── framework-name/
│       ├── SKILL.md
│       └── references/
├── commands/
│   └── prime/
│       ├── components.md
│       └── framework.md
└── README.md
```

### Utility Plugin

For tools and commands:

```
plugins/utility-name/
├── .claude-plugin/plugin.json
├── commands/
│   ├── action1.md
│   └── action2.md
└── README.md
```

### Domain Plugin

For domain-specific knowledge:

```
plugins/domain-name/
├── .claude-plugin/plugin.json
├── skills/
│   └── domain-name/
│       ├── SKILL.md
│       ├── references/
│       └── scripts/
└── README.md
```

## Command Naming

Subdirectory-based namespacing with `:` separator:

- `commands/namespace/command.md` → `/namespace:command`
- `commands/simple.md` → `/simple`

Examples:

- `commands/prime/vue.md` → `/prime:vue`
- `commands/docs/generate.md` → `/docs:generate`

## Version Management

**Important:** Update version in BOTH locations:

1. `plugins/<name>/.claude-plugin/plugin.json`
2. `.claude-plugin/marketplace.json`

Use `bump_version.py` to automate.

## Git Commits

Use conventional commits:

```bash
git commit -m "feat: add new plugin"
git commit -m "fix: correct plugin manifest"
git commit -m "docs: update plugin README"
git commit -m "feat!: breaking change"
```

## Reference Docs

Detailed documentation included:

| Reference | Content |
|-----------|---------|
| `references/plugin-structure.md` | Directory structure, manifest schema, components |
| `references/marketplace-schema.md` | Marketplace format, plugin entries, distribution |
| `references/workflows.md` | Step-by-step workflows, patterns, publishing |

### Scripts

| Script | Purpose |
|--------|---------|
| `scripts/create_plugin.py` | Scaffold new plugin |
| `scripts/bump_version.py` | Update versions |

Overview

This skill creates and manages Claude Code plugins with the correct directory layout, manifests, and marketplace integration. It automates scaffolding, version bumps, manifest updates, and local install/test workflows to streamline plugin development and publishing. Use it to ensure plugins follow marketplace conventions and semantic versioning.

How this skill works

The tool provides scripts and conventions to scaffold plugin directories, generate plugin and marketplace manifests, and update both when versions change. It inspects plugin folders for commands, skills, agents, hooks, and external integration metadata, then updates marketplace.json entries and supports local install/uninstall test flows. Automation scripts (create_plugin.py, bump_version.py) perform routine tasks to avoid manual mistakes.

When to use it

  • Creating a new plugin for a Claude Code marketplace
  • Adding or modifying plugin components (commands, skills, agents, hooks)
  • Bumping plugin versions and keeping manifests in sync
  • Setting up or testing a plugin locally before publish
  • Preparing plugin entries for marketplace distribution

Best practices

  • Follow the prescribed directory layout for plugins and component subfolders to ensure correct namespacing
  • Keep plugin.json and marketplace.json versions in sync; use the bump script to automate semantic versioning
  • Name commands using subdirectory names to derive /namespace:command paths consistently
  • Include clear author, description, keywords, and category metadata in manifests for discoverability
  • Use conventional commit messages to make changelogs and releases predictable

Example use cases

  • Scaffold a new productivity plugin with metadata and initial command files using the create script
  • Add a new command or agent, then bump the plugin minor version and update marketplace entry automatically
  • Run local install/uninstall workflow to validate plugin behavior in a development Claude Code marketplace
  • Convert a utility tool into a marketplace-ready plugin with proper manifests and keywords for search

FAQ

How do I bump versions without editing files manually?

Use the provided bump_version.py script with major|minor|patch and the marketplace root; it updates both plugin and marketplace manifests automatically.

Where should I place commands and how are names derived?

Put command markdown files under commands/<namespace>/ or commands/; command paths map to /namespace:command or /command based on the directory structure.