
docs.anthropic.com
Best practices for Claude Code
Tips and patterns for getting the most out of Claude Code, from configuring your environment to scaling across parallel sessions.

CLAUDE.md 不只是一个配置文件——它有四个加载层级(企业/项目/用户/本地)、支持递归 @ 导入把规则模块化、提供 # 快速写入和 /memory 编辑两种维护方式。本文完整拆解这些机制,以及哪些内容该写进去、哪些会拖慢 Claude 的表现。
| 层级 | 文件位置 | 用途 | 共享范围 |
|---|---|---|---|
| 企业策略 | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md | 公司级统一规范 | 组织内所有用户 |
| 项目记忆 | ./CLAUDE.md(项目根目录) | 团队共享的项目规范 | 通过 git 共享给团队 |
| 用户记忆 | ~/.claude/CLAUDE.md | 个人跨项目偏好 | 仅自己,所有项目生效 |
| 本地项目记忆 | ./CLAUDE.local.md(已废弃) | 个人项目专属偏好 | 仅自己,当前项目 |
./CLAUDE.md)和用户层(~/.claude/CLAUDE.md),前者提交进 git 供团队共享,后者配置个人编码习惯。CLAUDE.md,还会向上递归到根目录查找每一级父目录的 CLAUDE.md。这意味着,若你在 foo/bar/ 下运行 Claude Code,foo/CLAUDE.md 和 foo/bar/CLAUDE.md 会同时生效。对 monorepo 来说,在仓库根目录放全局规范、各子包目录放专属规范,是最自然的组织方式。CLAUDE.md 还有延迟加载特性:不在启动时全部载入,而是当 Claude 读取该子目录下的文件时才被加入上下文,避免一次性消耗过多 token。1@ 导入:把记忆拆成可组合的模块@path/to/file 语法引入外部文件,这是应对规则增长的核心机制。# Project Setup
See @README.md for project overview and @package.json for available commands.
## Additional Rules {#additional-rules}
- Git workflow: @docs/git-workflow.md
- Testing conventions: @docs/testing.md
- Personal overrides: @~/.claude/my-project-overrides.md~/ 家目录路径@ 不会被解析,即 `@anthropic-ai/claude-code` 这类包名不会触发导入/memory 命令可查看当前会话实际加载了哪些记忆文件~/.claude/ 路径在团队协作中的实际用法:把个人配置(sandbox URL、本地数据库连接、个人偏好)放在 ~/.claude/my-project.md,然后在项目的 CLAUDE.md 里加一行:# Individual Preferences
- @~/.claude/my-project.mdCLAUDE.local.md 的正确方式。2# CLAUDE.md
## Core Rules {#core-rules}
@docs/rules/core.md
## Security Rules {#security-rules}
@docs/rules/security.md
## Testing Rules {#testing-rules}
@docs/rules/testing.md# CLAUDE.md
@docs/agent_rules/index.md# 快速写入和 /memory 编辑# 快速写入:在对话输入框里,以 # 开头发送一条消息,Claude 会提示你选择写入哪个层级的记忆文件,然后把内容追加进去。# Always use pnpm, not npm or yarn/memory 命令:在会话中输入 /memory,会在系统默认编辑器里打开记忆文件,适合做批量整理和大段修改。# 是边干活边记录,/memory 是专门整理时用。| 建议写入 | 建议删除 |
|---|---|
| Claude 无法从代码推断的 Bash 命令 | Claude 读代码就能推断的内容 |
| 和默认规范不同的代码风格规则 | 已经是行业共识的标准约定 |
| 测试运行器选择和测试命令 | 详细 API 文档(改用链接) |
| 分支命名、PR 约定等仓库规范 | 频繁变动的信息 |
| 项目特有的架构决策 | 逐文件的代码库说明 |
| 必须设置的环境变量 | 不言自明的内容(如「写干净的代码」) |
| 常见的非 obvious 错误和坑 | 冗长解释和教程 |
CLAUDE.md 不到 60 行,社区中有人的文件到了 20KB。业界没有强制标准,但多数实践者给出的建议是不超过 300 行,越短越好。一个检验方法:你能在 30 秒内扫读完主文件的所有规则吗?如果不能,它已经太长了。6Stop hook 里触发自动格式化,或用 / 命令做风格检查,和开发流程分离。/init 直接生成然后不管。/init 能基于当前项目结构生成初始文件,适合作为起点,但生成结果需要人工审核删减。自动生成的 CLAUDE.md 往往包含大量 Claude 可以自己推断的冗余内容。/compact 保留什么/compact 时,默认会压缩上下文以节省 token,但压缩过程可能丢失重要状态。在 CLAUDE.md 里加一条规则,可以明确要求保留特定信息:## Compaction Rules {#compaction-rules}
When compacting, always preserve:
- The full list of modified files
- Any pending test commands
- Current migration state if a database migration is in progress/compact focus on [topic] 手动触发,比依赖自动压缩更可控。Boris Cherny 在多个场合建议在 KV 上下文用量达到 40-50% 之前主动压缩,避免进入「dumb zone」。7# [项目名]
## Project Overview {#project-overview}
[一句话说明项目是什么、用什么技术栈]
## Repository Structure {#repository-structure}
- `src/` — 主应用代码
- `packages/` — 共享库
- `docs/` — 详细文档(见下方导入)
## Common Commands {#common-commands}
- Install: `pnpm install`
- Dev: `pnpm dev`
- Test: `pnpm test`
- Build: `pnpm build`
- Lint: `pnpm lint` (auto-runs on Stop hook)
## Code Conventions {#code-conventions}
- 使用 TypeScript strict mode,禁止 `any`
- [与行业默认不同的约定才需要写]
## Architecture Decisions {#architecture-decisions}
@docs/architecture.md
## Git Workflow {#git-workflow}
@docs/git-workflow.md
## Individual Preferences {#individual-preferences}
@~/.claude/[project-name]-local.md
## Compaction Rules {#compaction-rules-2}
When compacting, preserve: modified file list, pending test commands.~/.claude/CLAUDE.md 单独维护个人偏好,两个文件共同作用,不要把个人配置混进项目文件。# 记录下来,把调试中发现的坑整理进文件,它会随着项目积累越来越有用——这是 CLAUDE.md 和单次 prompt 的根本区别。
Tips and patterns for getting the most out of Claude Code, from configuring your environment to scaling across parallel sessions.
CLAUDE.md is a high-leverage configuration point for Claude Code. Learning how to write a good CLAUDE.md is a key skill for agent-enabled software engineering.
围绕这条内容继续补充观点或上下文。