The idea
A plugin in Claude Code is a directory that bundles related extensions as one installable unit. That unit can contain skills, subagents, hooks, MCP servers, and other components. Claude Code can install or load plugins from a marketplace, a local directory, or your own development work. Source: Claude Code Plugins overview
This is a packaging idea, not a new kind of intelligence. A skill is a reusable instruction or workflow. A subagent is a specialized agent definition for a task. A hook runs at a documented point in the workflow. An MCP server connects Claude Code to external tools or services. Each can be useful on its own. A plugin becomes useful when the parts belong together and should be installed, shared, or versioned together. Source: Plugins overview Source: Extend Claude Code
Plain English: Use a plugin like a small repository for a related set of Claude Code extensions. Do not create one merely because you have one instruction to reuse.
A plugin also has a cost in context. Context is the information available to the model during a session. For active plugins, names and descriptions of certain components remain in context in every session. The full text of a skill or agent is loaded only when that component is used. This is a reason to activate extensions deliberately rather than treating every useful-looking package as free. Source: Plugins overview
A small example
Example: Your team repeats the same code-review workflow in three repositories. The workflow needs a review checklist, a specialized reviewer, and a hook that starts tests after changes.
You could copy the checklist, reviewer definition, and hook configuration into each repository. That works at first, but an update now needs three coordinated edits. Instead, the team could place those related parts in a review-toolkit plugin. Team members install one package, and the package supplies the same set of components everywhere it is intended to be used.
This does not mean that every review checklist needs a plugin. If the only reusable part is the checklist, start with one skill. Skills, subagents, hooks, and MCP servers also work without plugins. Move to a plugin when there is a stable group of parts that people need together. Source: Plugins overview
Try it
Take five minutes and choose one workflow you repeat: perhaps release-note drafting, dependency review, or pull-request review.
- Write down its reusable parts. Is it one instruction, or does it also need a subagent, hook, or external tool?
- Mark who needs it. Is it only you in one repository, or several people and repositories?
- Choose the smallest useful boundary. For one instruction, keep a skill. For a related set that must travel together, consider a plugin.
- Before installing any plugin, inspect what it contains and who provides it.
This exercise is a design decision, not a requirement to build a plugin today. The smallest setup is often easier to understand and maintain.
Watch out
A plugin is not automatically safe because it appears in a marketplace. Claude Code warns that an installed plugin can run arbitrary code with your user permissions. Review the source and included files before installation, especially hooks and other executable or tool-related configuration. Source: Plugin security and trust
Also keep the scope precise. This lesson describes Claude Code plugins, not extensions for VS Code or JetBrains IDEs. Those are separate plugin systems with their own packaging and security models.
Finally, avoid turning a plugin into a junk drawer. An unrelated collection of tools is harder to review, explain, and remove. Bundle components because they form one workflow or capability. Keep unrelated capabilities separate, and prefer a standalone skill or MCP server when that is all the job needs.