developing-claude-code-plugins

Developing Claude Code Plugins

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "developing-claude-code-plugins" with this command: npx skills add krosebrook/source-of-truth-monorepo/krosebrook-source-of-truth-monorepo-developing-claude-code-plugins

Developing Claude Code Plugins

Overview

This skill provides efficient workflows for creating Claude Code plugins. Use it to make plugin development fast and correct - it synthesizes official docs into actionable steps and provides working examples.

When to Use

Use this skill when:

  • Creating a new Claude Code plugin from scratch

  • Adding components to an existing plugin (skills, commands, hooks, MCP servers)

  • Setting up a development marketplace for testing

  • Troubleshooting plugin structure issues

  • Understanding plugin architecture and patterns

  • Releasing a plugin (versioning, tagging, marketplace distribution)

  • Publishing updates or maintaining existing plugins

For comprehensive official documentation, use the working-with-claude-code skill to access full docs.

Quick Reference

Need to... Read This Official Docs

Understand directory structure references/plugin-structure.md

plugins.md

Choose a plugin pattern references/common-patterns.md

plugins.md

Debug plugin issues references/troubleshooting.md

Various

See working examples examples/ directory N/A

Plugin Development Workflow

Phase 1: Plan

Before writing code:

Define your plugin's purpose

  • What problem does it solve?

  • Who will use it?

  • What components will it need?

Choose your pattern (read references/common-patterns.md )

  • Simple plugin with one skill?

  • MCP integration with guidance?

  • Command collection?

  • Full-featured platform?

Review examples

  • examples/simple-greeter-plugin/

  • Minimal plugin

  • examples/full-featured-plugin/

  • All components

  • Installed plugins in ~/.claude/plugins/

Phase 2: Create Structure

Create directories (see references/plugin-structure.md for details):

mkdir -p my-plugin/.claude-plugin mkdir -p my-plugin/skills

Add other component directories as needed

Write plugin.json (required):

{ "name": "my-plugin", "version": "1.0.0", "description": "What your plugin does", "author": {"name": "Your Name"} }

See references/plugin-structure.md for complete format.

Create development marketplace (for local testing):

Create .claude-plugin/marketplace.json :

{ "name": "my-dev", "plugins": [{ "name": "my-plugin", "source": "./" }] }

See references/plugin-structure.md for complete format.

Phase 3: Add Components

Use TodoWrite to track component creation:

Example:

  • Create skill: main-workflow
  • Add command: /hello
  • Configure hooks
  • Write README
  • Test installation

For each component type, see:

  • Format/syntax: references/plugin-structure.md

  • When to use: references/common-patterns.md

  • Working code: examples/ directory

Phase 4: Test Locally

Install for testing:

/plugin marketplace add /path/to/my-plugin /plugin install my-plugin@my-dev

Then restart Claude Code.

Test each component:

  • Skills: Ask for tasks matching skill descriptions

  • Commands: Run /your-command

  • MCP servers: Check tools are available

  • Hooks: Trigger relevant events

Iterate:

/plugin uninstall my-plugin@my-dev

Make changes

/plugin install my-plugin@my-dev

Restart Claude Code

Phase 5: Debug and Refine

If something doesn't work, read references/troubleshooting.md for:

  • Plugin not loading

  • Skill not triggering

  • Command not appearing

  • MCP server not starting

  • Hooks not firing

Common issues are usually:

  • Wrong directory structure

  • Hardcoded paths (use ${CLAUDE_PLUGIN_ROOT} )

  • Forgot to restart Claude Code

  • Missing executable permissions on scripts

Phase 6: Release and Distribute

Write README with:

  • What the plugin does

  • Installation instructions

  • Usage examples

  • Component descriptions

Version your release using semantic versioning:

  • Update version in .claude-plugin/plugin.json

  • Document changes in CHANGELOG.md or RELEASE-NOTES.md

  • Example: "version": "1.2.1" (major.minor.patch)

Commit and tag your release:

git add . git commit -m "Release v1.2.1: [brief description]" git tag v1.2.1 git push origin main git push origin v1.2.1

Choose distribution method:

Option A: Direct GitHub distribution

  • Users add: /plugin marketplace add your-org/your-plugin-repo

  • Your plugin.json serves as the manifest

Option B: Marketplace distribution (recommended for multi-plugin collections)

  • Create separate marketplace repository

  • Add .claude-plugin/marketplace.json with plugin references: { "name": "my-marketplace", "owner": {"name": "Your Name"}, "plugins": [{ "name": "your-plugin", "source": { "source": "url", "url": "https://github.com/your-org/your-plugin.git" }, "version": "1.2.1", "description": "Plugin description" }] }

  • Users add: /plugin marketplace add your-org/your-marketplace

  • Update marketplace manifest for each plugin release

Option C: Private/team distribution

  • Configure in team's .claude/settings.json : { "extraKnownMarketplaces": { "team-tools": { "source": {"source": "github", "repo": "your-org/plugins"} } } }

Test the release:

Test fresh installation

/plugin marketplace add your-marketplace-source /plugin install your-plugin@marketplace-name

Verify functionality, then clean up

/plugin uninstall your-plugin@marketplace-name

Announce and maintain:

  • GitHub releases (optional)

  • Team notifications

  • Monitor for issues and user feedback

  • Plan maintenance updates

Critical Rules

Always follow these (from references/plugin-structure.md ):

.claude-plugin/ contains ONLY manifests (plugin.json and optionally marketplace.json )

  • ❌ Don't put skills, commands, or other components inside

  • ✅ Put them at plugin root

Use ${CLAUDE_PLUGIN_ROOT} for all paths in config files

  • Makes plugin portable across systems

  • Required for hooks, MCP servers, scripts

Use relative paths in plugin.json

  • Start with ./

  • Relative to plugin root

Make scripts executable

  • chmod +x script.sh

  • Required for hooks and MCP servers

Resources in This Skill

  • references/plugin-structure.md

  • Directory layout, file formats, component syntax

  • references/common-patterns.md

  • When to use each plugin pattern, examples

  • references/troubleshooting.md

  • Debug guide for common issues

  • examples/simple-greeter-plugin/

  • Minimal working plugin (one skill)

  • examples/full-featured-plugin/

  • Complete plugin with all components

Cross-References

For deep dives into official documentation, use the working-with-claude-code skill to access:

  • plugins.md

  • Plugin development overview

  • plugins-reference.md

  • Complete API reference

  • skills.md

  • Skill authoring guide

  • slash-commands.md

  • Command format

  • hooks.md , hooks-guide.md

  • Hook system

  • mcp.md

  • MCP server integration

  • plugin-marketplaces.md

  • Distribution

Best Practices

  • Start simple - Begin with minimal structure, add complexity when needed

  • Test frequently - Install → test → uninstall → modify → repeat

  • Use examples - Copy patterns from working plugins

  • Follow conventions - Match style of existing plugins

  • Document everything - Clear README helps users and future you

  • Version properly - Use semantic versioning (major.minor.patch)

Workflow Summary

Plan → Choose pattern, review examples Create → Make structure, write manifests Add → Build components (skills, commands, etc.) Test → Install via dev marketplace Debug → Use troubleshooting guide Release → Version, tag, distribute via marketplace Maintain → Monitor, update, support users

The correct path is the fast path. Use references, follow patterns, test frequently.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

receiving-code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

working-with-claude-code

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

finishing-a-development-branch

No summary provided by upstream source.

Repository SourceNeeds Review