A comprehensive example plugin demonstrating Claude Code extension options.
example-plugin/
├── .claude-plugin/
│ └── plugin.json # Plugin metadata
├── .mcp.json # MCP server configuration
├── skills/
│ ├── example-skill/
│ │ └── SKILL.md # Model-invoked skill (contextual guidance)
│ └── example-command/
│ └── SKILL.md # User-invoked skill (slash command)
└── commands/
└── example-command.md # Legacy slash command format (see note below)
skills/)Skills are the preferred format for both model-invoked capabilities and user-invoked slash commands. Create a SKILL.md in a subdirectory:
Model-invoked skill (activated by task context):
---
name: skill-name
description: Trigger conditions for this skill
version: 1.0.0
---
User-invoked skill (slash command — /skill-name):
---
name: skill-name
description: Short description for /help
argument-hint: <arg1> [optional-arg]
allowed-tools: [Read, Glob, Grep]
---
commands/) — legacyNote: The
commands/*.mdlayout is a legacy format. It is loaded identically toskills/<name>/SKILL.md— the only difference is file layout. For new plugins, prefer theskills/directory format. This plugin keepscommands/example-command.mdas a reference for the legacy layout.
.mcp.json)Configure external tool integration via Model Context Protocol:
{
"server-name": {
"type": "http",
"url": "https://mcp.example.com/api"
}
}
/example-command [args] - Run the example slash command