别再把 Claude Code 用乱了:CLAUDE.md、Rules、Skills、Hooks 到底怎么分工?

别再把 Claude Code 用乱了:CLAUDE.md、Rules、Skills、Hooks 到底怎么分工?

很多人想深入接触 Claude Code,都会有一种很真实的崩溃感:

  • 能约束
  • 也能约束
  • 也在影响行为
  • 看起来也像规则触发器

那到底什么时候该用哪个?


你可以直接这么记:

  • CLAUDE.md:公司总制度
  • rules:部门补充规定
  • skill:这类工作的 SOP 手册
  • hook:门禁 / 安检 / 自动检查脚本
  • compact:开会开久了,整理一下桌面和纪要

如果只记这一层意思,已经够用了。

再翻译成人话一点:

  • CLAUDE.md:全局长期生效的原则
  • rules:局部场景生效的规则
  • skill:告诉 AI“这类任务一般怎么做”
  • hook:别靠 AI 记,系统到点自动执行
  • compact:长对话太乱了,压缩一下上下文

很多人第一次上手就喜欢往 里塞一堆东西,最后写成项目百科全书。

其实它最适合放的是:

  • 这个项目默认用什么命令
  • 哪些目录不要碰
  • 完成任务前要做什么检查
  • 哪些原则每次都成立

比如:

  • 用 ,不用
  • 改完代码先跑 lint 和 test
  • 不要修改 generated files
  • 涉及支付逻辑先看接口约定

这些都很适合放 。

“我们合作时,有一些长期不变的底线和习惯。”

所以你可以把 理解成:

你和 Claude 之间的长期合作协议

不是团队 wiki,也不是项目知识库,更不是大杂烩。

最重要的原则就一句话:

写长期成立、全局适用、足够稳定的东西。

别写太细,别写得像百科全书,也别把某个目录的局部规则全塞进来。

一个比较顺手的写法


CLAUDE.md 适合写什么?

很适合写:

  • 默认命令
  • 全局完成标准
  • 高风险禁区
  • 默认工作方式
  • 整个仓库通用的 coding preference

不太适合写什么?

不太适合写:

  • 某个目录专属规则
  • 某种语言才生效的限制
  • 一整套复杂的排障流程
  • 很长的业务背景介绍

这些更适合给 、 或其他文档。

什么时候用 CLAUDE.md?

当你心里想的是:

  • “这个原则几乎每次都成立”
  • “每次开新会话都该知道”
  • “这是长期契约,不是局部技巧”

那就放 。


它适合处理这种情况:

  • 只有某个目录才有这条规则
  • 只有某种语言才有这套规范
  • 只有某类文件才需要特殊处理

举个例子。

你项目里可能有这些情况:

  • 下的组件必须用函数组件
  • 统一用 pytest
  • 文件里不允许
  • 某个安全目录不允许随便改

这时候 的价值就出来了:

只在相关场景加载,只约束相关范围。

所以它和 的关系不是谁替代谁,而是:

  • 管全局
  • 管局部

rules 最适合的写法就是:

一条规则只负责一个局部场景。

比如按目录拆,按语言拆,按文件类型拆,都可以。

例子 1:前端组件目录规则


例子 2:SQL 文件规则


例子 3:Python 目录规则


rules 写的时候一个很实用的原则

不要把 rules 写成“再来一份小号 CLAUDE.md”。

  • 到了这个目录
  • 碰到这类文件
  • 就按这里的规则来

一个特别实用的判断方法

如果你脑子里冒出来的是:

“这条规则不是每次都成立,但到了这个目录/文件类型就必须成立”

那它大概率该放 。


这是最容易被误解的地方。

更贴切一点,skill 是某类任务的操作手册

比如你让 Claude 去做“线上问题排查”,真正需要的往往不是一句 prompt,而是一套步骤:

  1. 先看日志
  2. 再看最近发布
  3. 再确认影响范围
  4. 再提出假设
  5. 再做验证
  6. 最后给 root cause 和修复建议

所以 skill 最适合装这种东西:

  • debug 流程
  • code review checklist
  • 发布 SOP
  • 迁移步骤
  • 某类业务改动的固定做法

我觉得最形象的比喻是:

字典目录 + 对应章节

  • 平时脑子里放一个“目录索引”
  • 真遇到这类题,再翻完整章节

这也是为什么 skill 常被说成是“按需加载的工作流”。

Skill 最重要的不是写得多像 prompt,而是把 3 件事写清楚:

  • 什么时候用
  • 按什么步骤做
  • 最后输出什么

一个顺手的 skill 写法


再来一个发版类的 skill


skill 写的时候有几个很实用的建议

什么时候用 skill?

当你想表达的是:

“这类任务有一套固定做法,不能只靠 AI 临场发挥”

那就该用 skill。


如果你觉得 hooks 抽象,那我建议你直接记一个类比:

hook 很像 husky / git hooks。

是不是一下就顺了?

Husky 干嘛的?

  • 你 commit 之前,自动跑 lint
  • 你 push 之前,自动跑 test
  • 不通过就拦住

重点是:

它不是提醒你记得做,而是系统自动帮你做。

比如:

  • Claude 一启动会话,自动注入一些上下文
  • Claude 改完文件后,自动跑检查
  • Claude 尝试改敏感目录时,直接拦住
  • Claude 任务结束后,自动发通知

某个时刻一到,系统自动执行一段逻辑

这就和 、、 完全不是一个层级了。

最简单的理解方式就是:

写触发时机 + 匹配条件 + 执行动作。

也就是:

  • 在什么事件点触发
  • 对什么动作 / 文件生效
  • 然后执行什么命令

例子 1:改完 Rust 文件自动检查


这段话翻译成人话就是:

  • Claude 刚用了 Edit
  • 改的是 文件
  • 那就自动跑一次

例子 2:改 ts/tsx 后自动 lint


例子 3:会话开始时注入上下文


这类写法很适合收集当前分支、运行环境、工具版本。

hook 非常适合这类事:

  • 改完代码自动 lint / test
  • 高风险目录禁止修改
  • 会话开始自动收集现场信息
  • 任务结束自动提醒

一句话:

凡是“不该靠 AI 自觉记住”的事,都很适合 hook。

hook 写的时候有个特别重要的原则

尽量让它:

  • 可预测
  • 结果清晰

也经常被误解。

它真正的价值是:

长对话里,帮你压缩上下文噪声。

这个问题在 Claude Code 里特别真实。

对话一长,里面会塞满很多东西:

  • 已经过时的尝试
  • 失败的中间方案
  • 很长的日志
  • 已经被推翻的结论
  • 重复的信息

做的事,就像:

  • 不是把整个房间搬空
  • 而是把桌上真正有用的东西收拾出来
  • 把没用的纸团、草稿、废弃结论扔掉

所以它适合:

  • 任务还在继续
  • 但上下文已经开始变脏
  • 想保留进度,又不想继续带着一堆噪声往前跑

你可以把它理解成:

  • 不换任务
  • 不完全清空上下文
  • 只是把当前会话压缩成“对后续还有价值的版本”

一个很实用的使用场景

  • 保留最终确认过的结论
  • 保留当前剩余问题
  • 保留下一步计划
  • 丢掉大部分已经没用的中间过程

一个很实用的区分

  • 任务换了:适合 clear
  • 任务没换,但对话太乱了:适合 compact

假设你让 Claude 帮你改一个支付页面。

你有下面这些要求:

  1. 不要改
  2. 前端统一用 hooks 写法
  3. 改支付逻辑前要先看接口约定
  4. 改完必须跑测试
  5. 发版前要检查埋点和截图

比如:

  • 默认用
  • 改完代码要跑测试
  • 涉及支付相关先看接口契约

这是长期都成立的项目合作习惯。

比如:

  • 下面统一函数组件
  • 禁止

这是局部场景约束。

比如:

  • 支付流程改动的一整套 SOP
  • 先看 API,再确认埋点,再改 UI,再补测试,再截图验证

这是“这类任务怎么做”。

一个支付改动 skill 的简化版写法


比如:

  • Claude 一旦想改 就直接拦住
  • 改完 自动跑 eslint

这是“别靠它记,系统自动检查”。


以后你只要问自己四句话:

这是不是全局长期成立的?

是 →

这是不是只有局部场景才成立?

是 →

这是不是某类任务的一套标准做法?

是 claude code 教程 →

这是不是必须自动执行 / 必须阻断,不能靠 AI 自觉?

是 →

如果任务还没变,但上下文已经乱成一锅粥了:


很多人还会好奇:

你可以粗暴但准确地理解成:

是,但不是一开始全塞进去。

skill 更像“先给目录,再按需翻正文”。

也就是说:

  1. 模型先知道有哪些 skill 可以用
  2. 当它判断当前任务像某个 skill 的适用场景
  3. 再把完整内容加载进来

所以 skill 的底层感觉,确实很像“查目录,再翻章节”。

而 hook 则完全不一样。

hook 更像程序世界里的事件监听:

  1. 某个时刻发生
  2. 系统检测到
  3. 自动执行脚本/命令
  4. 根据结果决定提示、校验还是阻断

如果你看到这里还是怕以后又混,我给你一个最省脑子的版本:

  • CLAUDE.md:长期合作协议
  • rules:局部补充规定
  • skill:任务操作手册
  • hook:Husky 一样的自动检查脚本
  • compact:对话太长时的上下文收纳整理

最后通常都会越来越乱。

真正好用的方式反而很朴素:

  • 全局原则放全局
  • 局部规则放局部
  • 方法论交给 skill
  • 硬约束交给 hook
  • 上下文乱了就 compact
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/276651.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月13日 下午7:41
下一篇 2026年3月13日 下午7:41


相关推荐

关注全栈程序员社区公众号