Skip to main content
Plugins let you extend Claude Code with custom functionality that can be shared across projects and teams. This guide covers creating your own plugins with skills, agents, hooks, and MCP servers. Looking to install existing plugins? See Discover and install plugins. For complete technical specifications, see Plugins reference.

When to use plugins vs standalone configuration

Claude Code supports two ways to add custom skills, agents, and hooks:
Start with standalone configuration in .claude/ for quick iteration, then convert to a plugin when you’re ready to share.

Quickstart

This quickstart walks you through creating a plugin with a custom skill. You’ll create a manifest (the configuration file that defines your plugin), add a skill, and test it locally using the --plugin-dir flag.

Prerequisites

Create your first plugin

1

Create the plugin directory

Every plugin lives in its own directory containing your skills, agents, or hooks, optionally alongside a .claude-plugin/plugin.json manifest. The location doesn’t matter for this quickstart because you’ll point Claude Code at the directory with --plugin-dir in the test step. Create it anywhere convenient, such as a scratch folder or a projects directory:
The remaining steps run from the parent directory and reference paths like my-first-plugin/... relative to it.
2

Create the plugin manifest

The manifest file at .claude-plugin/plugin.json defines your plugin’s identity: its name, description, and version. Claude Code uses this metadata to display your plugin in the plugin manager.Create the .claude-plugin directory inside your plugin folder:
Then create my-first-plugin/.claude-plugin/plugin.json with this content:
my-first-plugin/.claude-plugin/plugin.json