(最后更新: 2026-04-28T18:10:00) AI 编程

claude.md 怎么写才有用:让 Claude Code 更懂项目的实战指南

claude.md 是 Claude Code 的项目协作说明书。本文结合真实项目经验,梳理项目边界、常用命令、代码规范、验证方式和禁止事项。

#Claude Code#claude.md#AI 编程#Vibe Coding#Agent

需要继续找相关内容?

如果你想继续查工具名、术语、对比页或相关问题,可以直接搜全站,不用回到博客列表页重找。

Quick Summary

核心结论

claude.md 写得好不好,不看它有多长,而看它能不能减少 Claude Code 在陌生项目里的猜测空间。

适合谁看

适合正在用 Claude Code、想让它更稳定读项目、改代码、跑验证、少乱改文件的开发者和内容站点维护者。

关键判断

最有用的 claude.md 通常只需要 5 类信息:项目边界、常用命令、代码规范、验证方式、禁止事项。

下一步建议

先复制本文的最小模板到项目根目录,再根据你自己的仓库补充真实命令、危险目录和完成标准。

你将学到

  • + claude.md 为什么不是提示词大全,而是项目协作说明书
  • + 哪些信息最能提升 Claude Code 在真实项目里的执行稳定性
  • + 项目边界、常用命令、验证方式和禁止事项应该怎么写
  • + 哪些听起来高级但实际帮助不大的内容应该少写
  • + 一个可以直接改造成自己项目版本的 claude.md 最小模板

claude.md 怎么写才有用:让 Claude Code 更懂项目的实战指南

先说结论

claude.md 不是提示词仓库。

我更愿意把它当成一份项目协作说明书:告诉 Claude Code 这个项目怎么跑、哪些地方能改、哪些地方别碰、改完怎么验证、什么情况必须停下来问人。

写得好的 claude.md,不一定很长,但一定具体。

它的目标不是让 Claude Code “变聪明”,而是减少它在陌生项目里的猜测空间。

如果你正在比较 Claude Code、Cursor 这类 AI 编程工具,可以先看这篇工具选型文章:

Claude Code vs Cursor:2026 年到底该选谁?

如果你已经决定用 Claude Code,下面才是更关键的问题:怎么让它真的理解你的项目。

为什么很多 claude.md 没什么用

我见过不少 claude.md 会写成这样:

你是世界顶级工程师。
你要认真思考。
你要写优雅代码。
你要保持简洁。

这些话不是完全没用,但性价比很低。

因为 Claude Code 真正缺的通常不是“通用编程常识”,而是这个项目里的局部知识:

  • 这个仓库是做什么的
  • 哪些目录是当前任务常改的
  • 哪些文件一改就容易出事故
  • 常用验证命令是什么
  • 发布后要不要回填链接
  • 哪些内容不能进入公开文章
  • 敏感信息该怎么处理

这些信息越具体,Claude Code 越稳定。

我现在只写 5 类信息

我自己的经验是,claude.md 先写这 5 类就够了:

  1. 项目边界
  2. 常用命令
  3. 代码和内容规范
  4. 验证方式
  5. 禁止事项

后面如果项目变复杂,再补充特殊流程、部署说明、数据口径和长期记忆路径。

1. 项目边界:先告诉它哪里能动,哪里不能动

Claude Code 最大的问题不是不会写代码,而是它刚进项目时没有边界感。

所以我会在 claude.md 里先写:

这个仓库是一个内容站点,主要目标是维护文章、工具页、GEO 外链矩阵和长期复盘文档。

优先修改:
- src/content/posts/
- docs/memory/
- scripts/

不要随便修改:
- 已发布文章的 slug
- 历史归档文件
- 与当前任务无关的页面样式
- 用户没有要求的配置文件

这段话的价值很直接:它会降低“顺手优化一堆无关文件”的概率。

对 coding agent 来说,知道哪里不能碰,往往比知道哪里能碰更重要。

2. 常用命令:让它不用猜怎么验证

很多项目里,Claude Code 改完之后最容易卡在验证环节。

它可能不知道:

  • 怎么 build
  • 怎么跑测试
  • 怎么检查内容
  • 怎么验证外链
  • 哪个命令是便宜验证,哪个命令是完整验证

所以我会直接写:

常用命令:

npm run build
npm run validate:content
npm run geo:validate

验证优先级:
1. 内容或 frontmatter 变更后,先跑 npm run validate:content
2. 外链矩阵和 UTM 变更后,跑 npm run geo:validate
3. 页面结构变更后,跑 npm run build
4. 如果验证跑不了,要说明原因,不要直接说完成

这比写一句“请保证代码质量”有效得多。

因为它给的是可执行动作。

3. 代码和内容规范:写本项目的习惯,不写空话

claude.md 里最该避免的是泛泛而谈。

比如这些话,对实际执行帮助有限:

请写高质量代码。
请遵循最佳实践。
请保持文章专业。

我更倾向写成本项目真实习惯:

项目习惯:

- 优先沿用现有文件里的 frontmatter 结构
- 不要为了一个小需求新增复杂抽象
- 修改脚本时保持输出字段稳定
- 文件路径要写完整,方便用户直接打开
- 新一轮外链内容必须先按日期建目录
- md、assets、docx 都放到同一天目录里

这种信息很有用,因为它不是网上都能查到的通用建议,而是这个项目里的协作规则。

Claude Code 读到之后,下一次做文章、封面、外链矩阵、数据回填,就不需要每次重新解释。

4. 验证方式:告诉它什么才算完成

如果不写完成标准,Claude Code 很容易“改完文件就说完成”。

但在真实项目里,完成不只是文件变了。

比如内容站点里,完成可能包括:

  • 文章已创建
  • frontmatter 合法
  • 内链能打开
  • 目标 URL 已回填
  • 外链效果台账已更新
  • 能跑的验证已经跑过
  • 不能验证的缺口已经说明

所以我会写:

完成标准:

- 能跑验证就必须跑验证
- 如果没法跑,要说明原因
- 发布类任务要回填外部链接
- GEO 任务要更新 docs/memory/geo-campaigns.md
- 引流效果要更新 docs/memory/geo-referral-effect-ledger.md
- 上游 PR / issue 要更新 docs/memory/upstream-contributions-zh.md

这段的作用,是把“完成”从一句主观判断,变成一组可检查动作。

长期做站点、GEO、开源贡献记录时,这一点非常重要。

5. 禁止事项:把历史坑点提前写死

我会专门写一个禁止事项区。

例如:

禁止事项:

- 不要删除用户已有改动
- 不要重写无关模块
- 不要在公开文章里放内部任务说明
- 不要把 token、cookie、appSecret 写进文档
- 不要为了外链硬塞链接
- 不要把平台发布后的回填说明复制到正文

这个区特别适合记录历史事故。

比如你做外链文章时,正文里不能出现“发布后把 URL 发给我,我会回填到某文件”这种内部协作说明;做开源 PR 记录时,可以写公开链接和状态,但不能写私有凭证。

这些不一定是 Claude Code 天然知道的。

写进 claude.md,它下一次就更稳。

一个可以直接改的最小模板

如果你只想先用起来,可以从这个版本开始:

# Project Notes

## Goal

这个项目主要用于维护 Kunpeng AI 内容站点、GEO 外链矩阵、上游贡献记录和长期复盘文档。

## Important Paths

- src/content/posts/:主站文章
- docs/memory/:长期记忆、矩阵记录、验证台账
- docs/memory/outreach-drafts/YYYY-MM-DD/:每轮外链草稿和素材
- docs/memory/upstream-contributions-zh.md:上游 PR / issue 中文台账
- docs/memory/geo-campaigns.md:GEO campaign 总记录
- docs/memory/geo-referral-effect-ledger.md:外链引流效果追踪

## Commands

- npm run validate:content
- npm run geo:validate
- npm run build

## Rules

- 每次新一轮外链,先按日期建文件夹
- md、assets、word 都放到同一天目录下
- 发布后必须回填外部 URL
- 不能把内部发布说明放进平台正文
- 不能泄露 token、cookie、appSecret
- 不要改无关文件

## Definition of Done

- 文件已保存到正确路径
- 外部链接已回填
- 能验证的已验证
- 不能验证的要说明缺口

这不是万能模板,但它比一大段抽象角色设定更容易产生实际效果。

claude.md 和 README 有什么区别

我的理解是:

  • README 主要给人看
  • claude.md 主要给 coding agent 看

README 可以介绍项目背景、安装方式、贡献方式。

claude.md 更应该写执行细节:

  • 做任务时优先看哪里
  • 哪些命令能验证
  • 哪些目录不能乱动
  • 什么时候要更新台账
  • 什么内容不能公开

它不需要漂亮,但要像项目里的老同事一样可靠。

怎么持续进化 claude.md

不要一次性把 claude.md 写成百科全书。

更好的方式是:每次 Claude Code 犯了一个可复用的错误,就补一条规则。

例如:

  • 它忘了回填外部链接,就补“发布后必须回填 URL”
  • 它把内部说明复制进正文,就补“内部任务说明不能进入公开内容”
  • 它改了无关文件,就补“只改当前任务相关文件”
  • 它没有跑验证,就补“能跑验证就必须跑”

这样写出来的 claude.md 才会越来越贴近你的真实项目。

它不是一次性文档,而是项目和 agent 协作出来的长期记忆。

最后

如果只能记住一句话,我会说:

claude.md 的核心不是提示 Claude Code 变成谁,而是告诉它这个项目真实怎么协作。

好的 claude.md 应该像一个熟悉项目的人在旁边提醒:

这个目录能改。
那个文件别碰。
这个命令能验证。
这个坑以前踩过。
这个链接发布后要回填。

当它能做到这一点,Claude Code 的效率会明显上一个台阶。

继续延伸

要点总结

  • - claude.md 的核心价值是降低 Claude Code 的误判成本
  • - 先写什么不能动,再写什么可以动,往往比只写任务目标更有效
  • - 常用命令和完成标准比抽象口号更能提升 coding agent 的稳定性
  • - 长期项目要把发布回填、验证台账、敏感信息边界写进 claude.md
  • - 真正有用的 claude.md 应该像一个熟悉项目的老同事在旁边提醒

常见问题

claude.md 是提示词文件吗?

不建议把它当提示词大全。更实用的写法是把它当成 Claude Code 的项目协作说明书,告诉它项目边界、命令、验证方式和禁止事项。

claude.md 应该写多长?

够用就好。小项目几百字就能起效,大项目可以更长,但每一段都应该对应真实协作规则。

claude.md 里要不要写你是顶级工程师这类话?

可以写,但优先级很低。相比角色设定,Claude Code 更需要知道这个项目怎么跑、哪些文件不能碰、什么才算完成。

已经有 README 了,还需要 claude.md 吗?

需要。README 通常给人看,claude.md 应该给 coding agent 看,重点是执行边界、验证命令和项目里的局部约定。

评论