每次都要反复叮嘱?太累
你可能发现:每次让 Claude Code 干活,都要重新说一遍「用 Vue 不用 jQuery」「缩进用 4 空格」「提交信息要规范」。说多了烦,漏说了它就容易跑偏。
CLAUDE.md 就是来解决这个的:它是项目的「记忆文件」,Claude Code 每次进入项目都会自动读它,把里面的约定当成默认规则。
todo-app 写一份 CLAUDE.md,把「用 Node.js、先预览再改、代码要简洁」这些约定写进去。之后每次让 Claude 改 todo,它都会自动遵守。CLAUDE.md 是什么
CLAUDE.md 是放在项目根目录的一个 Markdown 文件。它的内容就是「你希望 Claude Code 一直遵守的约定」。
- 放项目根目录:这个项目通用
- 放
~/.claude/CLAUDE.md:对你所有项目通用
Claude Code 每次启动会话,都会把它加载进来,作为行为基准。
里面该写什么
写「项目的事实和约定」,别写废话。典型内容:
# 项目约定
## 技术栈
- 前端用 Vue 3,不用 jQuery
- 状态管理用 Pinia
## 代码风格
- 缩进 4 空格
- 组件命名用 PascalCase
## 规范
- 提交信息遵循 Conventional Commits
- 新增功能必须写对应测试
关键是把「你希望它默认怎么做」写清楚,它就不用每次问。
怎么用最有效
- 写事实:技术栈、目录结构、构建命令、环境变量
- 写偏好:命名风格、是否用某个库、错误处理规范
- 写流程:测试怎么跑、发布怎么走
对比:
❌ 「好好写代码」→ 太空泛,没用 ✅ 「提交信息格式:
type(scope): 描述,例如feat(auth): 增加登录接口」→ 具体可执行
一个完整示例
# 项目:后台管理系统
## 技术栈
Vue 3 + Vite + Pinia + TypeScript
## 常用命令
- 启动开发:npm run dev
- 跑测试:npm test
- 构建:npm run build
## 约定
- API 请求都封装在 src/api/ 下,禁止在组件里直接 fetch
- 所有数值金额用「分」存储,展示时再转「元」
- 提交信息:feat/fix/docs/refactor/test
有了这个文件,Claude Code 一进项目就「懂规矩」,你不用每次重复。
落地练习:给 todo-app 写 CLAUDE.md
在 todo-app 目录里新建 CLAUDE.md,把我们的约定写进去:
# todo-app 项目约定
## 技术栈
- Node.js,无外部框架
## 常用命令
- 运行工具:node index.js
## 约定
- 每个操作必须先在屏幕打印「将做什么」,确认后才真正执行
- 待办名称不能为空,为空要提示
- 代码尽量简短,单文件能实现就不拆多个
然后新开一个会话,对 Claude 说:
这个项目的 CLAUDE.md 里写了哪些约定?复述一遍。
如果它能准确复述出来,说明它真的读进去了。
怎么判断做对了?——Claude 能逐条复述出「打印确认后才执行」「名称不为空」「代码简短」这几条约定,而不是笼统说「我记得有约定」。
卡住了怎么办? 它说不记得?先确认 CLAUDE.md 在项目根目录(和 package.json 同级),再 ls 确认文件名拼写。它复述不全?那是文件内容写得不清晰,回头看看约定是否具体可执行。
常见坑:写一堆空话
最常见的坑是 CLAUDE.md 里写「请好好写代码」「代码要高质量」这种空泛口号。
AI 没法执行「好好写」这种模糊要求。要写成可判定的规则:「待办名称不能为空」「用 4 空格缩进」「运行前先预览」。判断标准很简单——如果这句话换个同事看不懂该怎么照做,就说明太模糊,需要写具体。
小结
CLAUDE.md= 项目的记忆文件,Claude Code 每次自动读- 放根目录管这个项目,放
~/.claude/管所有项目 - 写事实、偏好、流程,要具体可执行
- 别写空话,写成可判定的规则
- 我们给 todo-app 写好了 CLAUDE.md
下一模块,我们做个完整的实战项目,把前面学的串起来。