Installing and configuring plugins
Complete guide to installing, configuring, and managing Claude Code plugins. Hooks, event system, and best practices.
Extension folder structure
Claude Code reads extensions from two locations: a global folder (~/.claude/) for all your projects, and a local folder (.claude/) specific to each project.
No marketplace, no /plugin install
Claude Code has no /plugin install, /plugin marketplace, or /plugin list command. Community extensions are files (Markdown, JSON) that you copy into specific folders. This guide shows you how to do it correctly.
# Global extensions (all your projects)~/.claude/├── commands/ # Global skills (slash commands)├── agents/ # Global agents└── rules/ # Global rules# Per-project extensions.claude/├── commands/ # Project skills├── agents/ # Project agents├── rules/ # Project rules└── settings.json # MCP configuration and permissions
Files in .claude/ (project root) take priority over global files in ~/.claude/.
Installation methods
Method 1: via /install-github (recommended)
Claude Code offers a native command to install resources from GitHub:
# Install from a GitHub repo (relative to root)/install-github punkpeye/everything-claude-code
What /install-github does
This command clones the specified GitHub repo, detects .md/.mdc files that correspond to agents or skills, and copies them into the right folders in your project. It doesn't download a binary, it copies text files.
Method 2: manual installation (full control)
The most transparent method. You see exactly what gets installed.
Find an extension
Search GitHub for community repos. Good starting points:
- punkpeye/everything-claude-code: complete collection of agents and rules
- The official Anthropic documentation: https://docs.anthropic.com/en/docs/claude-code
Clone or download
# Clone the community repogit clone https://github.com/punkpeye/everything-claude-code /tmp/ecc# Or download a specific filecurl -o .claude/commands/tdd-guide.md \https://raw.githubusercontent.com/punkpeye/everything-claude-code/main/commands/tdd-guide.md
Copy to the right folders
# Create folders if they don't existmkdir -p .claude/commands .claude/agents .claude/rules# Copy agentscp /tmp/ecc/agents/*.md .claude/agents/# Copy rulescp /tmp/ecc/rules/**/*.md .claude/rules/# Copy commands (skills)cp /tmp/ecc/commands/*.md .claude/commands/
Verify in Claude Code
In a Claude Code session, check that your skills are available:
# Skills appear as slash commands# Type "/" to see the list of available commands/tdd-guide create an email validation function
Method 3: CLI tools via npm
Some community tools are npm packages that assist Claude Code:
# repomix - analyzes and condenses a codebase for contextnpx repomix# Generate a compressed context filenpx repomix --output repomix-output.txt --ignore "node_modules/**"# You then pass this file to Claude Code:# "Analyze this codebase: [paste content of repomix-output.txt]"
repomix on npm
repomix is a real npm package, published on npmjs.com/package/repomix. Its source repo is on GitHub/yamadashy/repomix.
Configuration in settings.json
Claude Code's settings.json file configures MCP servers and permissions, not plugins. Here's the actual structure:
Actual settings.json structure
{"mcpServers": {"context7": {"command": "npx","args": ["-y", "@upstash/context7-mcp"]},"github": {"command": "npx","args": ["-y", "@modelcontextprotocol/server-github"],"env": {"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your-token"}}},"permissions": {"allow": ["Bash(git:*)", "Read(**)", "Edit(**)"],"deny": []}}
There is no "plugins" section in settings.json. Community extensions (agents, rules, commands) are files, not JSON configuration entries.
Configuration priority
The project configuration (.claude/settings.json) always takes precedence over the global configuration (~/.claude/settings.json) for MCPs and permissions. For extension files (agents, commands, rules), the two levels are additive: global and project extensions are all available simultaneously.
Creating your own extensions
You can create your own skills, agents, and rules to share workflows with your team.
Create a skill (slash command)
A skill is simply a Markdown file:
# Create a custom skill in .claude/commands/cat > .claude/commands/deploy-staging.md << 'EOF'# Deploy StagingDeploy the application to the staging environment following these steps:1. Verify tests pass (`npm run test`)2. Build the application (`npm run build`)3. Verify the Docker build works4. Create a git tag with the version5. Push to the `staging` branch6. Confirm deployment in the Slack #releases channelIf any step fails, stop immediately and report the error.EOF
Usage in Claude Code:
/deploy-staging
Create a specialized agent
# Create an agent in .claude/agents/cat > .claude/agents/security-reviewer.md << 'EOF'---name: security-reviewerdescription: Security expert who analyzes code to detect OWASP vulnerabilities---You are a cybersecurity expert specializing in web application security.You analyze code looking for:- SQL and NoSQL injections- XSS and CSRF vulnerabilities- Hardcoded secrets (tokens, passwords, API keys)- Authentication and authorization issues- Security misconfigurations (CORS, headers, CSP)For each issue found, you provide:1. Severity (CRITICAL / HIGH / MEDIUM / LOW)2. Precise location in the code3. Explanation of the risk4. A secure fix exampleEOF
Structure of an extension collection
If you want to share a collection with your team:
my-team-extension/├── README.md # Documentation and installation instructions├── commands/ # Skills (slash commands)│ ├── deploy-staging.md│ └── hotfix.md├── agents/ # Specialized agents│ ├── security-reviewer.md│ └── architect.md└── rules/ # Rules and conventions└── coding-conventions.md
Share it on GitHub. Your colleagues install it with:
/install-github your-org/my-team-extension# or manually:git clone https://github.com/your-org/my-team-extensioncp -r my-team-extension/commands/ .claude/commands/cp -r my-team-extension/agents/ .claude/agents/
Managing your extensions
Since there's no central plugin manager, management is manual:
# List available skillsls .claude/commands/ls ~/.claude/commands/# List available agentsls .claude/agents/ls ~/.claude/agents/# Disable a skill (rename with a different extension)mv .claude/commands/unused-skill.md .claude/commands/unused-skill.md.disabled# Delete a skillrm .claude/commands/skill-to-remove.md# Update (re-download from the source repo)curl -o .claude/commands/tdd-guide.md \https://raw.githubusercontent.com/punkpeye/everything-claude-code/main/commands/tdd-guide.md
Best practices
- Read the content before installing: extension files are readable text, check what they do before adding them
- Only install the essentials: every agent and rule consumes context. Keep only what you actually use
- Version your extensions: commit your
.claude/files (exceptsettings.jsonif it contains tokens) to Git so the whole team shares the same environment - Test in a test project: before activating a new extension on a critical project, test it on a sample project first
Sharing team configuration
The best practice for sharing team configuration is to commit the .claude/ folder (agents, commands, rules) to your Git repo. That way, every developer who clones the project automatically gets the same setup.
Next steps
- Top essential extensions 2026: The must-have community resources
- Design & frontend extensions: The best resources for design and UI
- Security & quality extensions: Secure and improve your code