Skip to main content
Plugins

Install and configure Claude Code plugins: complete guide

Install, configure and manage Claude Code plugins: skills, agents, rules. Hooks, event system, best practices for community packs and custom setups.

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.

# 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 affaan-m/everything-claude-code

Method 2: manual installation (full control)

The most transparent method. You see exactly what gets installed.

1

Find an extension

Search GitHub for community repos. Good starting points:

2

Clone or download

# Clone the community repo
git clone https://github.com/affaan-m/everything-claude-code /tmp/ecc
# Or download a specific file
curl -o .claude/commands/tdd-guide.md \
https://raw.githubusercontent.com/affaan-m/everything-claude-code/main/commands/tdd-guide.md
3

Copy to the right folders

# Create folders if they don't exist
mkdir -p .claude/commands .claude/agents .claude/rules
# Copy agents
cp /tmp/ecc/agents/*.md .claude/agents/
# Copy rules
cp /tmp/ecc/rules/**/*.md .claude/rules/
# Copy commands (skills)
cp /tmp/ecc/commands/*.md .claude/commands/
4

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 context
npx repomix
# Generate a compressed context file
npx 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]"

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.

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 Staging
Deploy 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 works
4. Create a git tag with the version
5. Push to the `staging` branch
6. Confirm deployment in the Slack #releases channel
If 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-reviewer
description: 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 code
3. Explanation of the risk
4. A secure fix example
EOF

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-extension
cp -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 skills
ls .claude/commands/
ls ~/.claude/commands/
# List available agents
ls .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 skill
rm .claude/commands/skill-to-remove.md
# Update (re-download from the source repo)
curl -o .claude/commands/tdd-guide.md \
https://raw.githubusercontent.com/affaan-m/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 (except settings.json if 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

Next steps