MCP、Skills、Hooks 怎么选
同一件「让 Claude 自动做点什么」,可以接 MCP、写 Skill,也可以挂 Hook。选错的表现很固定:该连的外部系统还在人肉复制,或者「提交前必须跑测试」被模型为了赶进度跳过去。
三者不在一层上。
- MCP 解决「够不着」。没有它,Claude 只能动本地文件和命令。接上之后,才能直接读 issue、查库、看监控。
- Skills 解决「怎么做才像样」。把你反复粘贴的流程和规范收成一个包,相关任务才加载。
- Hooks 解决「必须发生」。到了生命周期节点就跑脚本,不问模型这次想不想做,也不占上下文。
先问一句:这件事漏一次会不会出事。会,就用 Hooks。只是做了更专业、偶尔跳过也能补,用 Skill。需要到对话框外面的系统里取数据或动手,再接 MCP。
CLAUDE.md 仍管每次都要知道的短事实,不管流程,也不负责拦截。分界见 CLAUDE.md 管倾向,Hooks 才是铁律。
字段和包名会变。下面以当前公开的添加方式和配置结构为准。对不上就以 claude mcp --help 和官方文档为准,不要抄教程里的旧包名。
MCP:你还在来回贴,就该接
判断标准很土:你是不是经常从别处复制一段,再贴进对话。issue 描述、报错、查询结果、设计稿,都算。
添加用命令,不要写进 .claude/settings.json 的 mcpServers。那个文件管权限和钩子。本地和用户作用域落在 ~/.claude.json,项目作用域是仓库根的 .mcp.json,可以提交给团队。
claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
claude mcp list
claude mcp remove playwright浏览器自动化的包是微软维护的 @playwright/mcp。教程里的 @anthropic-ai/mcp-playwright 这类名字装不上,先核对再跑。
2026 年起会话默认有 Tool Search:启动时先看到服务器名和说明,工具定义用到才进上下文。所以多接几个不再像以前那样一上来就把窗口占满。服务器仍然不要堆。权限面、调试和提示注入都会跟着涨。先留 2 到 4 个真的每周都在用的,比见一个接一个稳。
Skills:同一段话贴了三次,就该沉下来
Skill 就是一个 SKILL.md,项目级放 .claude/skills/,个人跨项目则放用户目录。平时模型只看到名字和一句描述,判断对上了才加载正文。这和 CLAUDE.md、@ 引用不同,后者启动时就会进上下文。
description 决定会不会被叫起来。写「处理文案」会误触发,也容易该用时认不出。写成「需要按某品牌语气改产品描述时使用」更稳。正文用步骤、清单和反例,少写原则。
两种用法:
- 知识型:接口约定、品牌语气。碰到相关任务再取。
- 任务型:发布检查、迁移步骤。可以靠描述命中,也可以你点名用。
斜杠命令是更轻的入口。.claude/commands/ 里一份 Markdown,就是一条你手动敲的 /命令名。内容少、每次都由你触发,用命令就够。要附脚本、示例和按需加载的说明,再升级成 Skill。
子代理是另一件事。它隔离上下文、可以并行,内部照样能用 MCP、Skill 和 Hooks。已经写过的 子代理用法 不用在这里再展开。
Hooks:能不能被跳过,决定用不用它
「写完自动格式化」三种做法差很多。
- MCP:接一个格式化服务,指望写完文件后想起来去调。赶任务时经常直接跳过。
- Skill:在描述里写「写完要格式化」。仍取决于这次有没有加载、有没有照做。
- Hook:
PostToolUse匹配Edit|Write,每次落盘都跑。这才是格式化该待的地方。
配置仍是两层嵌套。扁平写法不生效。PreToolUse 的脚本读标准输入,用退出码拒绝这次调用。exit 2 会把 stderr 回给模型。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/block-dangerous.sh"
}
]
}
]
}
}事件不止早年常写的那几个。日常先用 PreToolUse 和 PostToolUse。更细的挂点以当前版本的事件表为准。
一条线上各管一段
不必三选一。部署可以拆成这样:
- Hook 在前面拦危险命令,也拦「没跑测试就继续」这类必须项。
- Skill 只排步骤:构建、灰度、回滚说明。不要把必须项写进 Skill 的描述里指望它自觉。
- MCP 做外部动作:建 Release、发通知、读监控。
- 需要留痕时,再在会话结束的事件上挂一个写日志的钩子。具体事件名以当前
/hooks为准。
新手不要三样一起上。先用一个零上下文的 Hook 把最烦的事钉死,再把贴了三次的说明做成 Skill,最后才为真实的复制粘贴去接 MCP。
最小配置够用就停:几个核心 MCP,几条常用 Skill,两三个关键 Hook。上下文和确定性不要同时透支。