K3.1.1 Task 3.1

把团队标准放到团队能拿到的地方

Claude Code 从 CLAUDE.md 文件加载指令。放在哪里决定了谁能拿到、什么时候拿到。层级搞错了,要么行为不一致,要么每次编辑都淹没在无关规则里。

三个层级

用户级:~/.claude/CLAUDE.md 在某一个开发者的机器上。不版本控制。不共享。把它当个人偏好——缩进大小、输出详细度、快捷方式。别人看不到。

项目级:.claude/CLAUDE.md 在仓库根目录。版本控制。每个克隆仓库的开发者自动获得。团队编码标准该放这里——命名规范、测试要求、提交消息格式。一个文件,提交一次,下次 pull 全员生效。

目录级:子目录中的 CLAUDE.md 在特定目录内。只在 Claude Code 编辑该目录或其子目录中的文件时加载。database/CLAUDE.md 中的数据库迁移规则在你动迁移时加载,不在你编辑 React 组件时加载。

所有生效层级同时加载。编辑 src/api/handler.py 时,Claude Code 看到用户级 + 项目级 + src/api/CLAUDE.md(如果存在)。它们叠加——不是互相替换。

经典错误:团队标准放在用户级

这是最常见的反模式。一个高级开发者在 ~/.claude/CLAUDE.md 里设好编码标准。在他机器上一切正常。新人克隆仓库——没有标准。Claude Code 无视团队约定的每一条规范。

根因一旦看到就很明显:~/.claude/ 是 home 目录。克隆 git 仓库不会复制别人的 home 目录。如果 8 个开发者中只有 5 个手动配了用户级标准,40% 的 Claude Code 建议会违反团队规范。修复就是一行:移到项目根目录的 .claude/CLAUDE.md

用户级配置是给真正个人化的东西——你偏好的解释详细程度、编辑器习惯、语言偏好。团队必须遵循的东西不该放这里。

第二个错误:所有东西一个文件

同事说:“咱们简单点。一个根级 CLAUDE.md,所有规则放一处。”

问题是:单个根级文件在每次文件编辑时都加载。你的 React 组件规则在编辑 Python 后端代码时加载。你的数据库迁移规则在编辑前端测试时加载。这浪费上下文 token,还可能产出无关建议——25% 的建议可能引用了完全错误的框架。

团队规模不是决定因素。一个有 React、Python 和 SQL 的 5 人项目从范围划定中获益和 50 人项目一样多。标准是文件类型多样性,不是人数。

实践中的正确范围

标准项目: 三种配置 → 三个层级。

什么放哪里为什么
个人偏好(缩进、详细度)~/.claude/CLAUDE.md个人的,不共享
团队标准(命名、测试).claude/CLAUDE.md共享,版本控制
区域专属规则(DB 迁移)database/CLAUDE.md只在相关时加载

多服务 monorepo: 根级放通用标准(共享库规范)。服务级放服务专属规则。

monorepo/
├── .claude/CLAUDE.md          ← 通用共享库标准
├── api/CLAUDE.md              ← Python API 规则
├── web/CLAUDE.md              ← React 前端规则
└── mobile/CLAUDE.md           ← 移动应用规则

编辑共享库代码时,只加载通用规则。编辑 api/ 代码时,通用和 API 专属规则都加载。Claude Code 不会在一个文件内选择性应用”章节”——把文件放在合适的层级来实现范围划定。

.claude/rules/ — 模块化替代方案

不用一个巨大的 .claude/CLAUDE.md,你可以把项目级规则拆成 .claude/rules/ 下的主题文件。每个文件可以用 YAML frontmatter 的 paths glob 控制何时加载。

这解决了项目级的范围问题。一个 paths: ["tests/**"] 的规则文件只在编辑测试文件时加载。一个 paths: ["src/api/**"] 的规则文件只在编辑后端代码时加载。没有 paths 的规则文件对所有文件加载——和根 CLAUDE.md 一样。

没有 paths 配置的规则文件对所有东西加载。如果把 React、Python 和数据库规则都放在 .claude/rules/ 但不加 paths,你会得到和单个根 CLAUDE.md 一样的”所有东西到处加载”问题。

审计数据:范围不当的实际代价

一个团队审计发现三个不同问题,每个都由范围不匹配导致:

  • 40% 的建议违反标准 — 标准在用户级配置里。8 个开发者中只有 5 个有。修复:移到项目级。
  • 25% 的建议引用了错误框架 — React 规则在根级,编辑 Python 文件时也加载。修复:目录级或 paths 范围的规则。
  • 15% 的测试建议忽略约定 — 测试规则没有范围到测试文件。修复:.claude/rules/paths: ["tests/**"]

三个都通过把每条规则放到正确范围来修复。

另外,将 MCP 工具配置(.mcp.json)和 CLAUDE.md 使用指南结合,把工具选择准确率从 65%(只有工具)推到了 91%(工具 + 指南)。CLAUDE.md 不替代工具描述——它用描述本身无法提供的上下文指导来补充它们。

不存在的东西

  • CLAUDE.md 中的条件注释 — 你不能在一个文件里写”如果编辑 Python,应用这些规则”。范围来自文件放置和 paths glob,不是内联条件。
  • CLAUDE.md 中的 MCP server 配置.mcp.json 是 MCP server 的专用机制。CLAUDE.md 是给指令的。它们服务不同目的和不同格式。
  • 子目录 .mcp.json — MCP 配置在项目根目录。目录范围的 MCP server 不存在。

一句话总结: 用户级是个人的,项目级是团队的,目录级是上下文的——把每条规则放到它实际需要在的位置,别再让数据库规则在 React 编辑时加载了。