Advanced

CLAUDE.md 编写完全指南:项目配置最佳实践

深入讲解如何编写高效的 CLAUDE.md 文件。学会向 Claude Code 传达你的技术栈、规范和项目结构,最大化输出质量。

什么是 CLAUDE.md?

CLAUDE.md 是一个帮助 Claude Code 理解你项目的上下文文件。将它放在项目根目录,Claude Code 会在每次会话开始时自动读取。一份写得好的 CLAUDE.md 可以显著提升 Claude Code 的响应质量。

文件位置与优先级

你可以在多个位置放置 CLAUDE.md 文件,所有文件都会被加载:

~/.claude/CLAUDE.md          # 全局设置(所有项目共享)
./CLAUDE.md                   # 项目根目录(团队共享)
./CLAUDE.local.md             # 本地设置(添加到 .gitignore)
./src/CLAUDE.md               # 子目录级别设置
  • 全局:你的个人编码风格偏好
  • 项目根目录:团队共享的规则和技术栈
  • 本地:不提交到 Git 的个人设置
  • 子目录:特定模块的补充上下文

入门模板

以下是一个实用的 CLAUDE.md 模板:

# 项目概述

电商后端 API。负责订单管理、库存管理和用户认证。

## 技术栈

- 语言:TypeScript 5.x
- 运行时:Node.js 22
- 框架:Fastify
- 数据库:PostgreSQL 16 + Prisma ORM
- 测试:Vitest
- CI:GitHub Actions

## 目录结构

src/
  routes/       # API 路由定义
  services/     # 业务逻辑
  repositories/ # 数据访问层
  middleware/   # 认证、日志、错误处理
  utils/        # 工具函数
  types/        # 类型定义

## 编码规范

- 使用箭头函数
- 错误处理必须使用 try-catch + 自定义错误类
- 命名:camelCase(变量/函数),PascalCase(类型/类)
- 文件名:kebab-case
- 使用路径别名 `@/` 替代相对路径导入

## 常用命令

- 运行测试:`npm test`
- 类型检查:`npx tsc --noEmit`
- Lint 检查:`npm run lint`
- 数据库迁移:`npx prisma migrate dev`
- 启动开发服务器:`npm run dev`

## 重要规则

- 修改 prisma/schema.prisma 后必须创建迁移
- 每个 API 端点都必须有 Zod 验证 Schema
- 新路由必须在 routes/index.ts 中注册

编写高效 CLAUDE.md 的技巧

1. 保持简洁

CLAUDE.md 会消耗上下文窗口的 Token。避免冗长的解释,用条目列表表达。

# 反面示例
这个项目使用 TypeScript。TypeScript 是微软开发的
一种在 JavaScript 基础上添加类型系统的语言...

# 正面示例
- 语言:TypeScript 5.x(严格模式)

2. 记录你不想要的东西

明确列出反模式出奇地有效。

## 禁止事项

- 不允许使用 `any` 类型
- 不允许默认导出(仅使用命名导出)
- 不允许使用 console.log 调试(使用 logger)
- 不允许删除或跳过现有测试

3. 定义工作流

引导 Claude Code 以正确的方式处理任务。

## 添加新功能的流程

1.`src/types/` 中创建类型定义
2.`src/repositories/` 中实现数据访问层
3.`src/services/` 中实现业务逻辑
4.`src/routes/` 中定义路由端点
5. 为每一层编写单元测试
6. 使用 `npm test` 验证所有测试通过

4. 记录团队”潜规则”

记录那些没有写在其他地方的重要信息。

## 项目特有注意事项

- `user_id` 使用 UUID v7(便于按时间排序)
- 所有价格计算必须使用 `Decimal.js`(避免浮点数精度问题)
- 环境变量统一在 `src/config.ts` 中管理——禁止直接访问 process.env

团队使用

.gitignore 配置

将个人设置排除在版本控制之外:

# .gitignore
CLAUDE.local.md

纳入代码审查

将 CLAUDE.md 视为重要的项目文档。在 PR 审查中关注它的变更,作为团队共同维护。

何时更新 CLAUDE.md

  • 引入新的库时
  • 更改编码规范时
  • 调整目录结构时
  • 发现 Claude Code 反复犯同样的错误时

总结

CLAUDE.md 能让 Claude Code 成为你项目的专家。先用 /init 生成基础框架,然后在使用过程中不断完善。与团队共享,让每个人都能享受优化后的 Claude Code 交互体验。

#Claude Code #CLAUDE.md #configuration #best practices #project management