Files
wehub-resource-sync bb5c75ce05
Component Security Validation / Security Audit (push) Has been cancelled
Deploy to Cloudflare Pages / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:58 +08:00

3.8 KiB

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