Presentation
Skills, MCP Servers, Hooks, Plugins & more
Use → to begin
Persistent project context
Custom slash commands
External integrations
Event-based automation
Shareable extension packs
Permissions & config
Claude Code has 5 extension layers that build on each other:
| Layer | Purpose | Analogy |
|---|---|---|
| CLAUDE.md | Tell Claude about your project | Onboarding doc for a new dev |
| Skills | Reusable prompt templates | Macros / keyboard shortcuts |
| MCP Servers | Connect to external services | VS Code extensions |
| Hooks | Auto-run scripts on events | Git hooks / CI triggers |
| Plugins | Package everything together | npm packages |
Overview
Each layer builds on the ones below. Start from the foundation and work your way up.
1 of 5
Markdown files that give Claude persistent context about your project.
Loaded automatically at the start of every session. No need to re-explain anything.
./CLAUDE.md: project (shared)./CLAUDE.local.md: personal~/.claude/CLAUDE.md: global.claude/rules/*.md: modularCLAUDE.md
# My App ## Tech Stack TypeScript, React 18, PostgreSQL ## Commands - `npm test`: Run tests - `npm run dev`: Dev server ## Rules - 2-space indentation - Prefer const over let - Always write tests
File: .claude/rules/api.md
--- paths: - "src/api/**/*.ts" --- All API endpoints must: - Include input validation - Return standard error format
Rules only apply when Claude works on matching files.
Quick start: type /init in Claude Code to auto-generate one.
2 of 5
Markdown files that become reusable /commands.
You type /name and Claude follows the instructions in the file.
Personal (all projects): ~/.claude/skills/name/SKILL.md Project (shared via git): .claude/skills/name/SKILL.md
user-invocable: you can call itdisable-model-invocation: only manualargument-hint: autocomplete hintallowed-tools: skip permissionscontext: fork: isolated sub-agentSkills
--- name: review description: Review code for bugs user-invocable: true argument-hint: "[file]" allowed-tools: Read, Grep, Glob --- Review the code for: 1. Bugs and logic errors 2. Security vulnerabilities 3. Performance issues Suggest fixes for each issue.
--- name: pr-review context: fork --- Review this PR: # Shell output injected at runtime! Diff: !`gh pr diff` Files: !`gh pr diff --name-only` Summarize and flag concerns.
!`command` runs the command and injects the output before Claude sees the skill.
Skills
--- name: fix-issue argument-hint: "[issue-number]" --- Fix GitHub issue #$ARGUMENTS. Read the issue, understand the problem, implement a fix. # Usage: /fix-issue 123 # Claude sees: Fix GitHub issue #123.
| Variable | Value |
|---|---|
$ARGUMENTS | All arguments as a string |
$0, $1, $2 | Individual arguments by position |
${CLAUDE_SESSION_ID} | Current session ID |
!`command` | Output of a shell command |
Skills
Skills are an open standard. Same format works across Claude Code, Gemini CLI, Cursor, Windsurf, and more.
DOCX, PDF, PPTX, XLSX, Web Artifacts, Skill Creator, TDD, Playwright
Algorithmic Art, Canvas Design, Image Generation, Presentations, GIF Creator
Superpowers (20+ skills), 65 Full-Stack Skills, Git Worktrees, MCP Builder
125+ Scientific Skills, 77 AI Research Skills, Materials Simulation, Health
Cloudflare, Google Labs, Hugging Face, Supabase, Notion, HashiCorp
Brand Guidelines, Internal Comms, Twitter Optimizer, Reddit Research
Quick start: git clone https://github.com/obra/superpowers ~/.claude/skills/superpowers
Skills
20+ battle-tested skills: TDD workflows, /brainstorm, /write-plan, /execute-plan, debugging, and collaboration patterns.
Create and edit Word, Excel, PowerPoint, and PDF files. Fill forms, add charts, generate slides from prompts.
Build AI agents, manage Workers/KV/R2, audit Web Vitals, and deploy with Wrangler from conversation.
OWASP Top 10 scanning, security checklists for 20+ languages. "If you build web apps, do yourself a favor."
Send emails, create GitHub issues, post to Slack, manage Notion. Real actions across 1000+ services.
Point it at any documentation website and it automatically converts it into a Claude skill. The skill that creates skills.
3 of 5
Connect Claude to external tools, including databases, APIs, and SaaS platforms.
MCP = Model Context Protocol. A standard way for AI tools to talk to services.
# GitHub claude mcp add \ --transport http github \ https://api.githubcopilot.com/mcp/ # Then authenticate: /mcp
# PostgreSQL claude mcp add \ --transport stdio mydb \ -- npx -y @bytebase/dbhub \ --dsn "postgresql://..."
MCP Servers
🐙
PRs, issues, reviews, code search
🚨
Error monitoring, stack traces
🗃
Query databases naturally
📝
Knowledge base access
💬
Messaging & notifications
💳
Payment data & management
{ "mcpServers": { "github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/" } } }
Commit .mcp.json to git → everyone on the team gets the same servers.
MCP Servers
MCP servers exist for almost everything. 40+ categories and growing daily.
Blender, Figma, Maya, Unity, Excalidraw. Describe a scene and watch it build in real time.
Spotify, YouTube, text-to-speech. Control your soundtrack and content from conversation.
3D printers, NVIDIA robotics, AutoCAD. AI that reaches beyond the screen into atoms.
Obsidian, Knowledge Graphs, Notion. Your AI remembers context across sessions.
Met Museum (470K+ artworks), Smithsonian, Open Library. Explore humanity's collections.
Orbital mechanics, healthcare FHIR, Kaggle datasets, handwriting-to-LaTeX, Anki flashcards.
MCP Servers
Describe a 3D scene in plain English and watch Blender build it in real time. Create rooms, characters, animations.
Full browser automation: navigate websites, fill forms, take screenshots, generate PDFs. A robot intern that browses for you.
Ask "how's my print?" and get live status, webcam snapshots, and remote control of your 3D printer.
Link your AI to your notes. Query your second brain, search by tag, update notes, and build knowledge conversationally.
Connect to thousands of APIs with 8,000+ prebuilt tools through a single MCP. The swiss army knife of integrations.
A meta-MCP that lets AI autonomously discover and install other MCP servers. Your AI extends its own capabilities on demand.
4 of 5
Shell commands that run automatically when events happen.
Enforce rules, auto-format code, and send notifications, all without thinking about it.
| Event | When It Fires | Can Block? |
|---|---|---|
PreToolUse | Before Claude uses a tool | Yes |
PostToolUse | After a tool succeeds | No |
UserPromptSubmit | You submit a prompt | Yes |
Stop | Claude finishes responding | Yes |
SessionStart | Session begins | No |
Notification | Permission prompt appears | No |
Blocking: exit code 0 = allow, exit code 2 = block the action.
Hooks
"PostToolUse": [{ "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs prettier --write" }] }]
"PreToolUse": [{ "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | grep -q '.env' && exit 2 || exit 0" }] }]
"Notification": [{ "matcher": "permission_prompt", "hooks": [{ "type": "command", "command": "osascript -e 'display notification \"Claude needs attention\"'" }] }]
"PostToolUse": [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "jq -r '.tool_input.command' >> ~/.claude/cmds.log" }] }]
5 of 5
Bundle skills + hooks + MCP servers + agents into one distributable package.
my-plugin/ ├── .claude-plugin/ │ └── plugin.json ← manifest ├── skills/ │ └── review/SKILL.md ├── agents/ │ └── analyzer.md ├── hooks/ │ └── hooks.json └── .mcp.json ← integrations
{
"name": "my-plugin",
"description": "What it does",
"version": "1.0.0"
}
Test locally:
claude --plugin-dir ./my-plugin
# Skills are namespaced:
/my-plugin:review
Plugins
| Situation | Solution |
|---|---|
| Customizing one project | Standalone: .claude/skills/, .claude/settings.json |
| Your personal workflows | Personal: ~/.claude/skills/ |
| Share with your team | Plugin |
| Publish to the community | Plugin + marketplace repo |
| Versioned releases | Plugin |
/plugin # Browse marketplace /plugin install # Install /plugin enable name # Enable / disable /plugin uninstall name # Remove
Bonus
Control what Claude can and can't do in .claude/settings.json:
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git *)",
"Read(./src/**)"
],
"deny": [
"Bash(rm *)",
"Read(.env*)"
]
}
}
| 1. | .claude/settings.local.json | personal |
| 2. | .claude/settings.json | team |
| 3. | ~/.claude/settings.json | global |
Interactive setup: type /config
| I want to... | Use | How |
|---|---|---|
| Tell Claude about my project | CLAUDE.md | /init |
| Create a reusable command | Skill | .claude/skills/name/SKILL.md |
| Connect to GitHub / DB / API | MCP | claude mcp add ... |
| Auto-format after edits | Hook | PostToolUse in settings.json |
| Block dangerous commands | Hook | PreToolUse with exit 2 |
| Allow npm test always | Settings | "allow": ["Bash(npm test *)"] |
| Share config with team | Plugin | .claude-plugin/plugin.json |
| See what's loaded | Commands | /memory /mcp /config |
/init to create a CLAUDE.md.claude/rules/ for organized guidelinesStart with what solves a real problem today.
You don't need all 5 layers. Most teams start with CLAUDE.md + one or two skills.
Thank you
Customizing Claude Code