Now it's time to move beyond Claude Code as a simple coding helper and explore advanced features that turn it into a powerful AI agent team that executes your commands.
MCP (Model Context Protocol) is a protocol that lets Claude communicate directly with external services and APIs.
Install MCP servers:
# Playwright MCP (browser automation)
claude mcp add -s user playwright npx @playwright/mcp@latest
# Supabase MCP (direct database queries)
claude mcp add -s user supabase npx @supabase/mcp@latest
# Firecrawl MCP (web crawling)
claude mcp add -s user firecrawl npx @firecrawl/mcp@latest
"Query the users table in Supabase and count signups in the last 7 days"
"Crawl all product pages on https://example.com and save product names and prices to a CSV"
"Use Playwright to test the login form. Verify an error message appears for an invalid password"
With requarks-wiki-mcp, an AI agent can search, create, and edit a Wiki.js knowledge base directly. It provides 29 tools and a 4-step write safety mechanism.
"Find documentation about Docker networking in the wiki"
"Add a note about withContext pitfalls to the wiki"
MCP is powerful, but the more MCPs you keep active, the more context they consume. ykdojo recommends:
/mcpHooks run shell commands automatically at specific events. They add deterministic control to an AI system that is otherwise probabilistic.
Hook types:
| Hook | When it runs | Example use |
|---|---|---|
| PreToolUse | before tool execution | block dangerous commands |
| PostToolUse | after tool execution | log events, send notifications |
| PermissionRequest | on permission prompts | auto-approve/deny |
| Notification | on Claude notifications | integrate with external systems |
| SubagentStart | when a subagent starts | monitoring |
| SubagentStop | when a subagent stops | collect results |
Example: blocking a dangerous command
{
"hooks": {
"PreToolUse": {
"command": "bash",
"args": [
"-c",
"if echo $TOOL_INPUT | grep -q 'rm -rf /'; then echo 'BLOCKED: Dangerous command'; exit 1; fi"
]
}
}
}
Ado's advice:
"Hooks provide guardrails for AI. You can enforce absolute rules for an AI that can make probabilistic mistakes."
Skills are reusable chunks of knowledge and procedure. Claude can invoke them automatically when needed, or you can call them manually.
Example: a Google Translate link skill
~/.claude/skills/google-translate/skill.md:
# Google Translate Skill
When the user asks how to pronounce a word in a specific language, generate a Google Translate link.
## Format
https://translate.google.com/?sl=auto&tl={target_language}&text={word}
## Example
User: "How do you pronounce 'hello' in Korean?"
Response: "Here's the pronunciation: https://translate.google.com/?sl=auto&tl=ko&text=hello"
Agents (subagents) are independent AI processes specialized for specific tasks.
Subagent characteristics:
Ado's analogy:
"Santa doesn't wrap all gifts himself. He has elves. Subagents are Claude's elves."
Plugins package Hooks, Skills, Agents, and MCP servers into an installable unit.
ykdojo's dx plugin:
claude plugin marketplace add ykdojo/claude-code-tips
claude plugin install dx@ykdojo
What dx includes:
/dx:gha: analyze GitHub Actions failures/dx:handoff: generate HANDOFF.md/dx:clone: clone a conversation/dx:half-clone: half-clone a conversationreddit-fetch skill: auto-fetch Reddit content| Feature | Load timing | Primary user | Token efficiency | Use case |
|---|---|---|---|---|
| CLAUDE.md | at session start | developer | low (always loaded) | project context, style rules, prohibitions |
| Skills | as needed | Claude | high (load only when needed) | automate specific tasks (translate, crawl, etc.) |
| Slash Commands | manual invocation | developer | high (only when invoked) | repeated workflows (commit, PR creation, etc.) |
| Plugins | on install | developer | - | bundle multiple features for distribution |
ykdojo's advice:
"Skills and slash commands were designed with different intents, but eventually converged. Skills are for Claude to use; slash commands are for developers to use."