文章建议在仓库根目录维护CLAUDE.md,统一Claude Code遵循的编码规范、禁改目录、人工审批命令和测试门槛。项目级共享配置能减少成员间提示词差异造成的代码风格漂移和重复审查。
配置漂移的代价:当 15 名工程师在没有共享配置的情况下使用 Claude Code 时,每个会话都会产出不同的代码风格、命名约定和架构模式。其实际后果是规模化的输出差异——同一个重构任务会得到不一致的结果,导致代码审查轮次增加,交付速度放缓。
CLAUDE.md 是一个放置在仓库根目录的配置文档,用于指示 Claude Code 在该项目中应如何工作。它定义了需要遵循的约定、应避免操作的目录、哪些命令需要人工审查,以及在任何改动被视为完成之前必须满足哪些测试要求。没有这个文件,Claude Code 就会按照默认设置运行,而这些默认设置对你的技术栈、团队规范和客户承诺一无所知。
缺少 CLAUDE.md 的实际后果,是规模化的输出差异。在一个 15 人团队中,如果每位工程师都在没有共享配置的情况下使用 Claude Code,实际上就相当于通过临时 prompt 和个人习惯各自制定规则。同一个重构任务会以不同风格产生不同结果。项目级 CLAUDE.md 通过建立一致的行为基线,消除每个会话、每台机器以及项目中每位工程师之间的这种差异。
Claude Code 会从三个位置读取指令文件,每个位置对应不同的作用范围。
仓库根目录是主要 CLAUDE.md 文件应该放置的位置。这是项目级文件,团队中的每位成员只要在该仓库内运行 Claude Code,就会自动使用它。它和其他配置文件一样提交到版本控制中,这意味着对它的修改可以接受审查、进行版本管理,并且对所有人可见。
子目录中的 CLAUDE.md 文件可以针对代码库的特定部分覆盖或扩展根目录文件。如果你的 monorepo 中有一个后端服务,其约定与前端不同,那么每个子目录都可以包含自己的指令。Claude Code 会根据当前正在处理的文件,结合上下文合并这些指令。
用户主目录中的文件(~/.claude/CLAUDE.md)用于保存开发者个人偏好,并应用于该开发者机器上的所有仓库。个人风格偏好、工具配置或个人约定都适合放在这里。这个文件不应纳入版本控制,也不应该覆盖项目级规则。
对于一个 10 到 20 人的工程团队,最重要的是仓库根目录下的项目级文件。先从这里开始。
目标是为 Claude Code 提供足够的上下文,使其能够做出正确的局部决策,而不必每次都通过 prompt 补充说明。核心内容分为四类。
项目上下文用于说明代码库是什么、它解决什么问题,以及它的结构如何。Claude Code 应该知道自己处理的是 Django 单体应用、带有独立 API 层的 Next.js 前端,还是微服务架构。需要写明主要目录、核心语言与框架版本,以及所有会影响代码编写方式的架构决策。
编码约定是团队已经通过代码审查落实的规则。命名约定、文件结构要求、异步处理的首选模式、注释规则以及格式规范都应该写在这里。如果你使用带有特定配置的 ESLint,请明确说明。如果你采用某种特定的依赖注入方式,也应记录下来。相比从周围代码中自行推断,Claude Code 能更可靠地遵循明确写出的约定。
测试方式用于告诉 Claude 团队如何编写和运行测试。你们使用哪个测试框架?测试是与实现同步编写,还是在实现完成后补充?是否有应该复用的测试工具或 factory?测试文件是否遵循特定的命名约定?如果没有这些信息,Claude 会按照模型认为自然的风格生成测试,而这种风格可能不符合 CI pipeline 的预期。
禁止操作是明确的约束。例如:不要直接修改数据库 migration 文件;不要在未特别说明的情况下添加新的第三方依赖;不要删除错误日志;不要重构当前任务范围之外的代码。通过禁止操作,可以避免 Claude 出于好意犯下那些最难在代码审查中发现的错误。
文件长度很重要。如果 CLAUDE.md 长达 500 行,当上下文压力增加时,模型可能会忽略它、只读取其中一部分,或悄悄降低它的优先级。应该优先追求清晰,而不是面面俱到。
适合中型工程团队的实用结构如下:首先用两到三句话介绍项目及其技术栈;然后用项目符号列出编码约定,并按照领域分组,例如命名、结构、异步处理和错误处理;接着添加一个简短的测试章节;最后在“禁止操作”或“硬性规则”标题下列出不可违反的约束。
凡是作为规则使用的内容,都应该采用项目符号,而不是大段文字。在将指令应用于具体代码改动时,Claude Code 解析结构化列表的可靠性高于段落形式的指令。
将文件控制在 300 行以内。如果内容超过这个规模,需要考虑其中一部分是否应该移到特定模块的子目录文件中,或者你是否正在尝试通过 AI 配置解决一个本质上的文档问题。
过于模糊:写下“遵循最佳实践”或“编写整洁代码”,并没有为 Claude 提供任何可以执行的指令。应该明确说明在你的项目上下文中,“最佳实践”具体意味着什么。“使用具名导出,不要使用默认导出”是一条 Claude 可以执行的规则,而“编写整洁代码”不是。
架构变更后没有更新:如果 CLAUDE.md 描述的是团队六个月前就已经弃用的技术栈,它反而会成为负担。应明确指定负责人。当团队负责人合并一项架构变更时,更新 CLAUDE.md 应该包含在同一个 pull request 中,而不是留作后续任务。
混淆全局配置和项目配置:个人偏好,例如常用的终端工具和个人风格选择,应该放在主目录文件中,而不是项目级文件中。将两者混在一起,会给模型增加噪声,也会给不认同这些个人偏好的团队成员带来摩擦。
没有明确自主操作的边界:如果团队使用 Claude Code 的 agentic mode 执行耗时较长的任务,CLAUDE.md 应该明确说明,哪些操作可以由 Claude 自主执行,哪些操作必须先获得人工确认。无需询问即可运行测试没有问题,但删除文件不行。应该明确写出这些规则。
对于大多数工程团队,最清晰的理解方式是:位于 ~/.claude/CLAUDE.md 的全局文件,是你向 Claude 介绍自己作为开发者的偏好;位于仓库根目录的项目文件,则是你向 Claude 介绍它当前处理的代码库。
Claude 会读取并合并这两个文件。当规则发生冲突时,项目级规则优先。这意味着,你可以在全局范围内配置个人工作流偏好,而不会污染团队共享的项目配置;在最关键的情况下,项目规则始终拥有最终优先权。
一个 15 人的工程团队只要投入两个小时,编写一份结构良好的 CLAUDE.md,通常就能在一周内通过减少代码审查中的修正和降低 Claude 偏离团队约定的会话次数,收回这笔时间投入。它是运行配置,不是普通文档。
不需要。只要该文件已提交到仓库根目录,Claude Code 就会在仓库内运行的任何会话中自动读取它。开发者不需要分别进行配置。这个文件会应用于每台机器上的每个会话。
可以,因为 CLAUDE.md 和其他文件一样,也是一个提交到版本控制中的文件。如果你 checkout 到一个修改过 CLAUDE.md 的功能分支,Claude Code 就会使用该版本。这意味着,你可以先在分支中尝试新的约定,然后再将其合并到主配置中。
不要将密钥放入 CLAUDE.md。这个文件会提交到版本控制中,也会出现在日志里。如果 Claude Code 需要了解外部服务,应通过名称和模式引用它们,而不是写入凭据。密钥管理仍应使用现有的密钥基础设施。
作者:Dr Hernani Costa|由 Core Ventures 提供支持
最初发表于 First AI Movers。
技术很容易,难的是将它映射到损益表(P&L)。在 First AI Movers,我们不只是配置 AI 工具;我们还为正在应对 AI 治理、工作流自动化设计和 AI 运营实施的欧盟中小企业构建“高管神经系统”。
你的 AI 工具正在制造技术债务,还是积累商业资产?
👉 获取你的 AI 就绪度评分(免费企业评估)
从治理、自动化和执行三个维度评估团队的 AI 就绪度——没有销售话术,只有清晰的诊断结果。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。