Appearance
Claude Code配置指南:CLAUDE.md、Rules与Settings完整手册
配好.claude目录,Claude Code从「每天来个新实习生」变成「读过你所有项目文档的老同事」。
问题:每次新会话,Claude什么都不记得
你上次告诉它「这个项目用pnpm不用npm」「测试要先跑db:reset」「commit message用中文」,下次它又从头问你一遍。
更头疼的是版本差异:你的项目用MySQL 5.7,它给你写了个8.0才有的窗口函数;项目跑在JDK 8上,它随手就用var和Records。
问题本质:Claude不了解你的项目背景,每次都在用「通用最佳实践」猜。
.claude目录全景地图
your-project/ # 项目级(提交到Git,团队共享)
├── CLAUDE.md # 项目说明书
├── CLAUDE.local.md # 个人覆盖(自动gitignore)
└── .claude/
├── settings.json # 权限+行为配置
├── settings.local.json # 个人配置覆盖
├── rules/ # 模块化规则文件
│ ├── code-style.md
│ ├── testing.md
│ └── api-conventions.md
├── skills/ # 可复用技能包
└── agents/ # 自定义AI角色
~/.claude/ # 用户级(本地,跨项目生效)
├── CLAUDE.md # 全局个人偏好
├── settings.json # 全局配置
├── rules/ # 用户级规则
└── projects/<project>/memory/ # Auto Memory存储官方建议:大多数人只需要编辑CLAUDE.md和settings.json,其余可选。
三层架构
| 层级 | 文件 | 作用 |
|---|---|---|
| 知识层 | CLAUDE.md、rules/、Auto Memory | 告诉Claude「你的项目是什么」 |
| 行为层 | settings.json | 告诉Claude「你喜欢怎么工作」 |
| 能力层 | skills/、hooks、agents/ | 让Claude做更多事 |
CLAUDE.md:最重要的单一配置
放在哪里
| 层级 | 位置 | 用途 | 共享范围 |
|---|---|---|---|
| 项目说明 | ./CLAUDE.md | 团队共享的项目文档 | 通过Git共享 |
| 用户偏好 | ~/.claude/CLAUDE.md | 个人跨项目偏好 | 仅自己 |
| 本地覆盖 | ./CLAUDE.local.md | 个人项目定制 | 仅自己 |
关键细节:
- 子目录也可以放CLAUDE.md,按需加载
/compact后不会丢失,会重新从磁盘读取- HTML注释
<!-- -->会自动去除,不浪费token
导入语法
markdown
# 引用项目文档
参考项目文档 @README.md 和 @package.json
# 引用外部指令
- git工作流 @docs/git-instructions.md
- 个人偏好 @~/.claude/my-project-instructions.md最大5层递归深度。AGENTS.md不会自动读取,需用@AGENTS.md导入。
该写什么(六大板块)
| 板块 | 写什么 | 举例 |
|---|---|---|
| 项目概述 | 一句话说明 | "Express REST API, Node 20, PostgreSQL via Prisma" |
| 常用命令 | 构建、测试、部署 | pnpm dev / pnpm test / pnpm build |
| 架构边界 | 关键目录划分 | "handlers在src/handlers/,domain逻辑在src/domain/" |
| 编码规范 | 命名、风格、约定 | "用zod做请求校验,返回格式统一{data, error}" |
| 安全底线 | NEVER列表 | "不准改.env、lockfile、CI secrets" |
| 压缩指令 | Compact Instructions | "压缩时必须保留:架构决策、已改文件、验证状态" |
不该写什么
| ❌ 别写 | 原因 |
|---|---|
| 大段背景介绍 | Claude不需要公司历史 |
| 完整API文档 | 用@path导入链接 |
| 空泛原则 | "写高质量代码"无法执行 |
| Claude自己能推断的信息 | 它会自己ls和cat |
| 已经在linter配置里的东西 | 别重复 |
| 大量低频任务知识 | 放到Skills里按需加载 |
控制在200行以内。Anthropic官方CLAUDE.md约2.5K tokens。写太长反而挤占上下文。
实战模板
模板一:开发者项目
markdown
# Project: Acme API
## Commands
npm run dev # Start dev server
npm run test # Run tests (Jest)
npm run lint # ESLint + Prettier check
npm run build # Production build
## Architecture
- Express REST API, Node 20
- PostgreSQL via Prisma ORM
- All handlers live in src/handlers/
- Shared types in src/types/
## Conventions
- Use zod for request validation in every handler
- Return shape is always { data, error }
- Never expose stack traces to the client
- Use the logger module, not console.log
## Watch out for
- Tests use a real local DB, not mocks. Run `npm run db:test:reset` first
- Strict TypeScript: no unused imports, ever模板二:工程化完整版
markdown
# Project Contract
## Build And Test
- Install: `pnpm install`
- Dev: `pnpm dev`
- Test: `pnpm test`
- Typecheck: `pnpm typecheck`
- Lint: `pnpm lint`
## Architecture Boundaries
- HTTP handlers live in `src/http/handlers/`
- Domain logic lives in `src/domain/`
- Do not put persistence logic in handlers
- Shared types live in `src/contracts/`
## Coding Conventions
- Prefer pure functions in domain layer
- Do not introduce new global state without explicit justification
- Reuse existing error types from `src/errors/`
## NEVER
- Modify `.env`, lockfiles, or CI secrets without explicit approval
- Remove feature flags without searching all call sites
- Commit without running tests
## ALWAYS
- Show diff before committing
- Update CHANGELOG for user-facing changes
## Verification
- Backend changes: `make test` + `make lint`
- API changes: update contract tests under `tests/contracts/`
- UI changes: capture before/after screenshots
## Compact Instructions
Preserve:
1. Architecture decisions (NEVER summarize)
2. Modified files and key changes
3. Current verification status (pass/fail commands)
4. Open risks, TODOs, rollback notes如何写出自己的CLAUDE.md
方法一:让Claude帮你生成初版
输入/init,Claude会分析项目结构、package.json、代码风格,生成CLAUDE.md初稿。
方法二:从踩坑开始写
发现Claude犯错(用错版本、改错文件、格式不对),纠正后马上加一行到CLAUDE.md。
创始人Boris Cherny推荐:「Update your CLAUDE.md so you don't make that mistake again.」
方法三:问自己三个问题
- 新人入职第一天,你会告诉他什么?
- 你被Claude坑过什么?
- 你重复说过哪些话?
rules/:红线清单
当CLAUDE.md超过200行,或不同目录需要不同规则时,拆到rules/:
.claude/rules/
├── code-style.md # 代码风格约束
├── testing.md # 测试规范
└── api-conventions.md # API设计规则支持路径限定:
markdown
---
paths:
- "src/api/**/*.ts"
---
# API开发规则
- 所有API端点必须包含输入校验
- 使用标准错误响应格式
- 不要在handler里写持久化逻辑Auto Memory:Claude自己的笔记本
CLAUDE.md是你写给Claude的,Auto Memory是Claude写给自己的。
存在~/.claude/projects/<project>/memory/下,下次开会话时自动加载前200行。
关键点:
- 默认开启,可用
/memory关闭 - 本地存储,不通过Git共享
- 同一个Git仓库的所有worktree共享
三者分工
| 维度 | CLAUDE.md | rules/ | Auto Memory |
|---|---|---|---|
| 谁写的 | 你 | 你 | Claude |
| 是什么 | 入职手册 | 红线清单 | 工作笔记 |
| 何时加载 | 每次启动 | 启动/按路径触发 | 每次启动 |
| 提交Git | ✅ | ✅ | ❌ |
settings.json:行为层配置
文件位置和优先级
| 优先级 | 位置 | 用途 |
|---|---|---|
| 最高 | .claude/settings.local.json | 个人项目覆盖 |
| 中 | .claude/settings.json | 团队共享配置 |
| 最低 | ~/.claude/settings.json | 个人全局配置 |
常用配置项
json
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"allow": [
"Bash(npm run lint)",
"Bash(npm run test *)",
"Read(~/.zshrc)"
],
"deny": [
"Bash(curl *)",
"Read(./.env)",
"Read(./.env.*)"
]
},
"env": {
"CLAUDE_CODE_EFFORT_LEVEL": "max"
}
}要点:
$schema:加上后有自动补全和校验permissions:allow免确认、deny直接禁止env:注入环境变量
怎么分层
| 放全局 | 放项目级 |
|---|---|
| 默认模型和effort级别 | 权限配置 |
| API中转地址和密钥 | 项目特定环境变量 |
| 个人习惯的环境变量 | 提交到Git,团队统一 |
权限思路:高频操作免确认,危险操作拦住。
从零搭建五步法
Step 1:用/init生成初版CLAUDE.md
bash
/init自动分析项目结构,生成CLAUDE.md初稿。
Step 2:补rules/
bash
mkdir -p .claude/rulesCLAUDE.md超过200行时拆分强制约束。
Step 3:配settings.json
bash
cat > .claude/settings.json << 'EOF'
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff *)"
],
"deny": [
"Bash(rm -rf *)",
"Read(./.env)"
]
}
}
EOFStep 4:确认Git提交策略
| 提交到Git | 不提交 |
|---|---|
| CLAUDE.md | CLAUDE.local.md |
| .claude/settings.json | .claude/settings.local.json |
| .claude/rules/ | ~/.claude/下所有内容 |
Step 5:持续维护
- 每次Claude犯错 → 让它更新CLAUDE.md
- 用
/insight提炼经验 - 定期review,删掉过时条目
配好之后的效果
之前:每次新会话花5-10分钟对齐上下文,一天开四五个会话浪费半小时以上。
之后:新会话一启动就直接进入状态,说「帮我给用户模块加个导出功能」,它已经知道项目用的框架、代码放哪个目录、测试怎么跑、commit message用什么格式。
Auto Memory的复利效应:用两三周后,Claude对项目的熟悉程度明显提升,记住了上次踩的坑、你偏好的写法、项目里的特殊约定。
总结
| 文件 | 作用 | 控制范围 |
|---|---|---|
| CLAUDE.md | 入职手册 | 200行以内 |
| rules/ | 红线清单 | 按路径生效 |
| Auto Memory | 工作笔记 | 自动积累 |
| settings.json | 行为偏好 | allow高频、deny危险 |
配好这些,Claude Code每次启动就自动带着你的项目上下文,不用再重复解释。把精力聚焦在业务问题本身。
关键词:Claude Code配置, CLAUDE.md, rules规则, settings权限, Auto Memory, .claude目录
