All skills
softaworks avatar

/plugin-forge

@1c0662a
by softaworkssoftaworks/agent-toolkit2.5k stars
230

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.

Use this Skill: https://skilld.dev/gh/softaworks/agent-toolkit/plugin-forge

This session only. Nothing lands on disk.

referencesworkflows.md

≈984 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Plugin Development Workflows

Creating a New Plugin

1. Create Plugin Directory Structure

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

2. Create Plugin Manifest

Create plugins/plugin-name/.claude-plugin/plugin.json:

{
  "name": "plugin-name",
  "version": "0.1.0",
  "description": "Plugin description",
  "author": {
    "name": "Your Name",
    "email": "your.email@example.com"
  },
  "keywords": ["keyword1", "keyword2"]
}

3. Add Plugin to Marketplace

Update .claude-plugin/marketplace.json by adding entry to plugins array:

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

4. Add Plugin Components

Create commands, skills, agents, or hooks as needed in their respective directories.

Version Bumping

When making changes to a plugin, update version in both locations:

  1. plugins/<plugin-name>/.claude-plugin/plugin.json
  2. .claude-plugin/marketplace.json (matching plugin entry)

Semantic versioning:

  • Major (x.0.0): Breaking changes
  • Minor (0.x.0): New features, refactoring
  • Patch (0.0.x): Bug fixes, documentation only

Local Testing Workflow

Initial Setup

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

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

Iterative Testing

After making changes to a plugin:

# Uninstall
/plugin uninstall plugin-name@marketplace-name

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

# Restart Claude Code to load changes

Note: Claude Code caches plugin files, so restart may be required for changes to take effect.

Publishing Workflow

1. Commit Changes

Use conventional commits:

git add .
git commit -m "feat: add new plugin"
git commit -m "fix: correct plugin manifest"
git commit -m "docs: update plugin README"

2. Push to Repository

git push origin main

3. Distribution

GitHub-hosted marketplace:

Users add via:

/plugin marketplace add owner/repo
/plugin install plugin-name@marketplace-name

Local marketplace:

Users add via absolute path:

/plugin marketplace add /path/to/marketplace

Command Naming Convention

Commands use subdirectory-based namespacing:

  • File: commands/namespace/command.md
  • Invoked as: /namespace:command
  • The : represents directory separator /

Examples:

  • commands/prime/vue.md → /prime:vue
  • commands/docs/generate.md → /docs:generate
  • commands/simple.md → /simple

Common Plugin Patterns

Framework Plugin

Structure for framework-specific guidance (React, Vue, Nuxt, etc.):

plugins/framework-name/
├── .claude-plugin/plugin.json
├── skills/
│   └── framework-name/
│       ├── SKILL.md              # Quick reference
│       └── references/           # Library-specific patterns
├── commands/
│   └── prime/                    # Namespace for loading patterns
│       ├── components.md
│       └── framework.md
└── README.md

Utility Plugin

Structure for tools and utilities:

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

Domain Plugin

Structure for domain-specific knowledge:

plugins/domain-name/
├── .claude-plugin/plugin.json
├── skills/
│   └── domain-name/
│       ├── SKILL.md
│       ├── references/
│       │   ├── schema.md
│       │   └── policies.md
│       └── scripts/
│           └── automation.py
└── README.md

Source: SKILL.md on GitHub

No alerts17d5 checks · Risk SAFE
  • Gen Agent Trust Hub17d

    This skill provides automation scripts and documentation for managing Claude Code plugins. The analysis found no malicious behavior, data exfiltration, or dangerous command execution patterns. The scripts follow standard development practices for directory scaffolding and manifest management.

  • Socket17d

    No alerts

  • Snyk17d

    Risk: LOW · No issues

  • Runlayer7mo

    7 files scanned · No issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 1c0662a. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Dormantupdated 9 months ago
  • Python
  • plugin
  • claude-code
  • marketplace
  • manifest
  • versioning
  • scaffolding
  • json

README badge

README badge for softaworks/agent-toolkit/plugin-forge

Scaffolds and manages Claude Code plugin directory structure, manifests, and marketplace registration. Includes Python automation for creating plugins and bumping semantic versions, plus templates for commands, skills, agents, and hooks.

Generated from the current SKILL.md.

What types of components can I add to a plugin?
Commands (Markdown with frontmatter), skills (SKILL.md directories), agents (Markdown definitions), hooks (hooks.json event handlers), and MCP servers (.mcp.json external integrations).
Does this skill handle version bumping across multiple manifest files?
Yes. The bump_version.py script updates versions in both plugin.json and marketplace.json simultaneously, and supports semantic versioning (major, minor, patch).
Can I test plugins locally before publishing?
Yes. Add the marketplace locally with /plugin marketplace add, then install and reinstall the plugin to test changes.
What naming convention should I use for commands?
Use subdirectory-based namespacing with a colon separator: commands/namespace/command.md becomes /namespace:command, or commands/simple.md becomes /simple.

Generated from the current SKILL.md. These answers refresh after source changes.