Claude Code plugins explained: skills, commands, agents, hooks and MCP
Claude Code is Anthropic’s AI coding assistant. It runs in your terminal, in VS Code and JetBrains, and on the web. Out of the box it can read your code, run commands and make changes. Plugins let you extend it: teach it a workflow, give it new tools, or have it react automatically to events.
This post explains what a plugin actually is and how it works. The rest of the series covers installing plugins and seven that are worth knowing.
What is a plugin?
A plugin is a folder, usually published in a Git repo, that bundles any mix of five building blocks. Installing a plugin adds all of its parts to Claude Code at once, and disabling it removes them again.
The five building blocks
- Skills: Markdown instructions (
SKILL.md). Only each skill’s name and one-line description sit in Claude’s context; when a request matches, Claude loads the full instructions and follows them. - Slash commands: Prompts you trigger yourself by typing
/plugin-name:command, for workflows you want on demand. - Agents: Specialised subagents with their own instructions and a fresh context. Claude hands them a task and gets back only the result.
- Hooks: Shell commands Claude Code runs at events such as session start, before or after a tool call, or when Claude stops. They can add context or block an action.
- MCP servers: Model Context Protocol servers that give Claude new tools, such as searching documentation or a database. They run as separate processes.
Skills are the most common part. Because only their descriptions are loaded up front, you can install many skills without filling Claude’s context; the full text loads only when it is needed.
What a plugin looks like
my-plugin/
├── .claude-plugin/
│ └── plugin.json name, version, description
├── skills/
│ └── my-skill/
│ └── SKILL.md description + instructions
├── commands/ slash commands (Markdown)
├── agents/ subagents (Markdown)
├── hooks/
│ └── hooks.json event → shell command
└── .mcp.json MCP servers to startYou can scaffold your own with claude plugin init my-plugin and check it with claude plugin validate <path>.
From GitHub to your session
- Marketplace: A marketplace is a Git repo with a
.claude-plugin/marketplace.jsonlisting plugins. Adding one only registers the catalog. - Install: Installing copies the plugin into
~/.claude/pluginsand marks it enabled in your settings (enabledPlugins). - Load: At the next session start Claude Code reads each enabled plugin: it registers commands, agents and hooks, starts MCP servers and lists skills.
- Use: As you work, Claude picks the skills and tools that match your request, hooks fire on their events, and you can run commands yourself.
Anthropic runs the official marketplace, anthropics/claude-plugins-official. Anyone can publish their own marketplace from a GitHub repo, which is how third-party plugins are distributed.
Do you need to say anything special?
Mostly no. Skills load when a request matches their description, hooks run on their events, and MCP tools are used when they fit. You ask normally, for example "add a dark mode toggle", and the relevant plugin kicks in.
To be explicit, name the plugin or skill ("use context7", "brainstorm this first") or run its slash command. Type / in the chat to browse every command, grouped by plugin. claude plugin details <name> lists everything a plugin contains and roughly how much context it costs.
Can you trust a plugin?
Next in this series
- How to install, update and remove Claude Code plugins
- superpowers: a brainstorm, plan, test-first workflow for Claude
- frontend-design: distinctive UI instead of generic defaults
- context7: current library docs inside Claude
- code-review: automated pull request review
- code-simplifier: tidy code without changing behavior
- claude-mem: memory that carries across sessions
- context-mode: keep big outputs out of the context window