Plugins are shareable packages that bundle slash commands, subagents, skills, hooks, MCP servers, and LSP servers into single installable units.
Before plugins, setting up Claude Code with custom commands, agents, and integrations meant scattered configuration files across different projects. When teammates asked "How do I set up the same thing?", reproducing your setup was tedious and error-prone.
Plugins solve this
Bundle all your customizations into shareable packages that install with a single command. Share with your team or use across your own projects. Learn more in the official plugin guide.
Plugins can include any combination of these six component types. Each type has different invocation semantics.
Slash commands are Markdown files in commands/ that you invoke with /name. By default Claude can also auto-invoke them when relevant; set disable-model-invocation: true in frontmatter to restrict to user-only. Under the hood commands and skills use the same mechanism — commands/ is a flat-file shorthand, while skills/<name>/SKILL.md supports additional files and scripts.
Example: /deploy - Deploy your application to production
Subagents are specialized assistants with isolated context windows that Claude can delegate to — the subagent does its work and returns only a summary, keeping your main conversation clean. Invoke them by natural language delegation, by calling @agent-name directly, or by starting a session with claude --agent.
Example: security-reviewer - Specialized agent for security audits
Skills are directories (skills/<name>/SKILL.md) that support supporting files and scripts. Claude reads only the name and description until the skill is invoked — the full content loads lazily on demand. By default, users can also invoke a skill via /name; set user-invocable: false in frontmatter to restrict to Claude-only.
Example: api-integration - Claude automatically uses it when you need to interact with REST APIs
Hooks let plugins run custom scripts automatically at specific points in your workflow—before tool execution, after prompts, when sessions start or end, and more. They execute without prompting.
Example: pre-commit hook - Run tests before every commit
MCP servers provide standardized connections to external services like databases, APIs, cloud providers, and development tools. They start automatically when the plugin is enabled. Remote MCP servers should use the HTTP transport (recommended) — the SSE transport is deprecated in current Claude Code.
Example: GitHub MCP - Access repositories and pull requests
LSP servers connect Claude Code to language servers that provide IDE-like features: go-to-definition, find references, hover documentation, and code diagnostics. They require you to have the language server binary installed on your system.
Example: TypeScript LSP - Get type information and navigate to definitions
Learn more in the official Claude Code plugin reference.
Not sure which component type fits your use case? Use this guide:
| When You Need... | Best Choice |
|---|---|
| Project-specific instructions | CLAUDE.md |
| Reusable workflow across projects | Skill |
| User-triggered automation | Command |
| External API/service access | MCP Server |
| Deterministic enforcement | Hook |
| Code intelligence features | LSP Server |
Pro tip: Start with CLAUDE.md
Begin with CLAUDE.md for project rules -- it requires no plugin setup. Only create a plugin when you need to share functionality across projects or with teammates.
Single commands, agents, or MCP servers configured manually
Bundled packages that work together seamlessly
Imagine you're working on a web application that needs deployment automation. A DevOps plugin might include:
/deploy command
User-invoked: One-command secure deployments
Infrastructure subagent
Specialized knowledge of your cloud setup
Deployment skill
Invoked by Claude when deployment context is detected, or by you via /deployment-skill
Cloud provider MCP
Direct connections to AWS/Vercel/etc.
Pre-deployment hook
Event-driven: Run security scans before every deployment
Result: Install once with /plugin install devops-suite and get the complete automation stack.
Skills use lazy loading-- Claude only sees the skill name and description until it's actually needed. A detailed skill with hundreds of lines costs nothing until activated.
Rule of Thumb
If you find yourself adding instructions to CLAUDE.md that only matter for specific tasks, extract them into a skill instead. Your context window stays clean for the work that matters.
Example: API Documentation Skill
---
name: api-docs-helper
description: Generate OpenAPI documentation from code comments
---
# API Documentation Generator
When asked to document an API endpoint:
1. Extract JSDoc/docstring comments from the handler
2. Identify request/response types from TypeScript interfaces
3. Generate OpenAPI 3.0 YAML snippet
4. Include example request/response payloadsThis entire skill loads only when Claude detects you're working on API documentation -- not during unrelated tasks.
Commands support parameters via $ARGUMENTS and can spawn subagents for complex workflows.
Parameterized Command
---
name: deploy
description: Deploy to specified environment
arguments:
- name: environment
description: Target environment (staging/production)
required: true
---
Deploy the current branch to $ARGUMENTS environment.
Before deploying:
1. Run the test suite
2. Check for uncommitted changes
3. Verify the target environment is valid
After deployment, report the deployed commit SHA and URL.Usage: /deploy staging or /deploy production
Command with Subagent
---
name: research
description: Spawn a research agent to investigate a topic
---
Use the Task tool to spawn a research subagent with these instructions:
"Research the following topic thoroughly: $ARGUMENTS
Focus on:
- Official documentation
- Recent changes or updates
- Common pitfalls and gotchas
Return a concise summary with source links."
This keeps research isolated from your main conversation context.Subagents run in isolated context, preventing research from cluttering your main conversation.
Now that you understand what plugins are, learn how to install and use them.