Claude Code CLI 是一个强大的 AI 编程助手,但它的真正威力在于可扩展性。通过 Skills、Hooks 和 MCP 三大机制,你可以定制 Claude Code 的行为,接入外部工具,甚至构建完整的自动化工作流。
本系列将带你从零开始掌握 Claude Code 的扩展开发。
为什么需要扩展?
Claude Code 默认已经很好用了,但企业场景往往需要定制:
- 团队规范:自动检查代码是否符合团队标准
- 工具集成:接入公司内部的 API、知识库、CI/CD
- 流程自动化:PR 审批通知、任务自动创建、部署触发
- 安全控制:阻止危险命令、记录操作日志
这些需求无法通过 Claude Code 默认功能满足,但可以通过扩展实现。
三大扩展机制概览
Claude Code 提供三种扩展方式,各有侧重:
Skills:预定义的"技能包"
Skills 是可复用的提示模板,把常见操作封装成"技能"。
markdown
---
name: commit
description: Create a git commit with a well-formed message
allowedTools: [Bash, Read]
---
Create a git commit following these steps:
1. Run git status and git diff to understand changes
2. Draft a commit message following conventional commits
3. Run git commit with the message
当你输入 /commit 时,Claude Code 会加载这个技能,按预设流程执行。
特点:
- 用户可调用(
/skill-name) - 可限制工具列表(
allowedTools) - 可选择模型(
model: opus/sonnet/haiku)
适合场景:重复性任务、标准化流程、团队共享操作
Hooks:生命周期"注入点"
Hooks 在特定事件发生时执行自定义逻辑。
json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "notify-send 'Claude Code' 'Bash command completed'" }]
}
]
}
}
每当 Bash 工具执行完毕,就会触发这个 Hook,发送桌面通知。
特点:
- 24 种事件类型(PreToolUse、PostToolUse、SessionStart、PreCompact...)
- 可阻止操作(PreToolUse 返回
block) - 可修改输入/输出
适合场景:验证、审计、通知、自动记录
MCP:外部工具"接入协议"
MCP (Model Context Protocol) 让 Claude Code 连接外部工具服务器。
json
{
"mcpServers": {
"slack": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-slack"]
}
}
}
连接后,Claude Code 可以调用 Slack 的工具(发消息、读取频道),就像调用内置工具一样。
特点:
- 标准协议(Anthropic 推出)
- 支持多种传输(stdio、HTTP SSE、WebSocket)
- 工具、资源、提示三合一
适合场景:接入第三方服务、企业内部系统、复杂工具链
三机制对比
| 特性 | Skills | Hooks | MCP |
|---|---|---|---|
| 核心概念 | 提示模板 | 事件监听 | 外部工具 |
| 触发方式 | 用户调用 /skill |
自动触发 | AI 决定调用 |
| 主要用途 | 封装操作流程 | 验证、通知、记录 | 接入外部系统 |
| 复杂度 | 低 | 中 | 高 |
| 用户交互 | 主动 | 被动 | 混合 |
| 可阻止操作 | 否 | 是(PreToolUse) | 否 |
选择指南
什么时候用 Skills?
- 团队有固定的操作流程(如 commit 格式)
- 想把复杂操作简化成一个命令
- 需要限制 AI 可用的工具
什么时候用 Hooks?
- 需要验证 AI 的操作(阻止危险命令)
- 需要记录日志或发送通知
- 需要在特定事件发生时自动执行操作
什么时候用 MCP?
- 需要接入外部服务(Slack、GitHub、Jira)
- 企业有内部 API 需要调用
- 需要提供动态资源(如知识库搜索)
组合使用
三大机制可以组合:
- Skill + Hook:Skill 定义操作,Hook 验证操作
- MCP + Skill:Skill 封装 MCP 工具调用流程
- Hook + MCP:Hook 在 MCP 工具执行后通知
一个企业级示例:
ruby
用户调用 /deploy-pr
│
▼
Skill 加载(限制工具:Bash、MCP:gitlab)
│
▼
PreToolUse Hook 验证:是否在 production 分支?
│
├─ 是 → 允许执行
│ │
│ ▼
│ Claude 调用 MCP:gitlab 创建 PR
│ │
│ ▼
│ PostToolUse Hook:发送 Slack 通知
│
└─ 否 → 阻止执行,提示错误
本系列学习路径
| 篇数 | 主题 | 你将学到 |
|---|---|---|
| 02 | Skills 基础 | 编写第一个 Skill,了解所有属性 |
| 03 | Skills 进阶 | Fork 模式、contextModifier、模型选择 |
| 04 | Hooks 入门 | 24 种事件,6 种来源,配置格式 |
| 05 | Hooks 实战 | 验证 Hook、通知 Hook、stdin/stdout |
| 06 | MCP 基础 | 7 种传输类型,配置格式,企业策略 |
| 07 | MCP 开发 | 从零开发 MCP Server |
| 08 | MCP 资源与提示 | Resources、Prompts,完整能力 |
| 09 | 组合扩展 | Skills + Hooks + MCP 协同 |
| 10 | 企业案例 | 实际场景的完整实现 |
| 11 | 最佳实践 | 调试、性能、安全、踩坑 |
| 12 | 总结 | 对比表、学习路径、资源汇总 |
准备开始
确保你已经:
- 安装 Claude Code CLI (
npm install -g @anthropic-ai/claude-code) - 了解基本使用(发送消息、工具调用)
- 有一个测试项目目录
下一篇,我们将深入 Skills,编写第一个自定义技能。