用了这么久 Claude Code,你可能从来没打开过它最重要的文件夹!
不是缓存目录,不是日志文件夹,它是 Claude Code 的控制中心:你的指令、你的自定义命令、权限规则、跨会话记忆、甚至可以自动触发的工作流,全在这里面。你没告诉它用哪个测试框架,它就猜一个,你没说命名用 camelCase,它可能给你写 snake_case,你没定义错误处理模式,每次写出来的都不一样。很多人用 Claude Code 的感觉是"有时候很聪明,有时候又犯傻",其实大部分"犯傻
点击上方卡片关注我
设置星标 学习更多AI出海知识
装完 Claude Code 跑第一个项目的时候,根目录会多出一个 .claude/ 文件夹。大部分人看到了,没点开过,也没想过里面有什么。
这就错过了 Claude Code 最值得折腾的部分。
.claude/ 不是缓存目录,不是日志文件夹,它是 Claude Code 的控制中心:你的指令、你的自定义命令、权限规则、跨会话记忆、甚至可以自动触发的工作流,全在这里面。
这篇文章把它拆开,一个文件一个文件讲清楚。
先搞清楚:其实有两个 .claude/
一个在项目根目录,一个在你的 Home 目录(~/.claude/)。
项目级(./.claude/): 团队配置,提交到 git,所有人共享。规则、命令、权限策略都放这里。
全局级(~/.claude/): 个人偏好,只对你生效。会话记录、自动记忆、个人命令都在这里。
两个目录结构类似,但职责不同。
CLAUDE.md:最重要的一个文件
Claude Code 启动时第一件事就是读 CLAUDE.md,把内容加到系统提示里,整个会话都保持在上下文中。
简单说:你写什么,Claude 就照做什么。
你说"所有函数都要写单元测试再实现",它就会这么做。你说"错误处理只用自定义 Logger,不准用 console.log",它每次都会遵守。
三个位置可以放 CLAUDE.md:
-
项目根目录
./CLAUDE.md,最常用 -
全局目录
~/.claude/CLAUDE.md,跨所有项目生效 -
子目录里,只在 Claude 操作该目录的文件时加载
Claude 会读取所有层级的 CLAUDE.md 并合并。
写多少合适?
控制在 200 行以内。超过 200 行,上下文占用过多,Claude 对指令的遵守度反而会下降。
该写的:
-
构建、测试、lint 命令(
npm run test、make build) -
关键架构决策("我们用 Turborepo 管理 monorepo")
-
不明显的坑("TypeScript strict mode 开着,未使用变量会报错")
-
导入规范、命名风格、错误处理模式
不该写的:
-
linter 或 formatter 已经定义了的规则
-
可以链接到的完整文档
-
长篇理论解释
20 行就够覆盖一个中型项目的核心规范了。
CLAUDE.local.md:个人偏好
如果你有些习惯是你自己的,不想影响团队。比如你习惯用另一个测试框架,或者希望 Claude 总是用某种方式打开文件。
在项目根目录创建 CLAUDE.local.md。Claude 会和主 CLAUDE.md 一起读取,但这个文件自动 gitignore,不会提交到仓库。
.claude/rules/:当 CLAUDE.md 塞不下了
项目大了之后,CLAUDE.md 很容易膨胀到 300 行。没人愿意维护一个巨型文件。
.claude/rules/ 文件夹解决这个问题。里面每个 markdown 文件都会被自动加载,跟 CLAUDE.md 一起生效。
按关注点拆分:
.claude/rules/
├── api-conventions.md # API 相关的规范
├── testing.md # 测试标准
├── security.md # 安全要求
└── frontend.md # 前端组件规范
负责 API 的人改 api-conventions.md,负责测试的人改 testing.md,互不干扰。
更强大的是路径作用域。在规则文件顶部加 YAML frontmatter,就可以让它只在操作特定路径时生效:
---
paths:
- src/api/**
- src/handlers/**
---
Claude 编辑 React 组件时不会加载这个文件,只有操作 src/api/ 下的代码时才会加载。没有 paths 字段的规则文件每次都会加载。
.claude/commands/:自定义斜杠命令
Claude Code 自带 /help、/compact 这些命令。你可以在 .claude/commands/ 里加自己的。
文件名就是命令名。创建一个 review.md,就多了一个 /project:review 命令:
Review the current git diff for bugs, performance issues, and style problems.
Focus on:
1. Logic errors
2. Missing error handling
3. Performance bottlenecks
Here's the current diff:
`! git diff --staged`
反引号里的 ! 前缀会执行 shell 命令并把输出嵌入 prompt。这让自定义命令不只是存一段文本,而是能动态注入上下文。
用 $ARGUMENTS 接收参数:
Fix the GitHub issue described below:
`! gh issue view $ARGUMENTS`
跑 /project:fix-issue 234 就会把第 234 号 issue 的内容喂给 Claude。
项目级命令提交到 git 跟团队共享。个人命令放 ~/.claude/commands/,显示为 /user:command-name。
.claude/skills/:Claude 自己判断什么时候用
Commands 需要你手动输入斜杠命令触发。Skills 不一样,Claude 会根据对话内容自动判断是否需要调用。
每个 Skill 是一个子目录,里面放一个 SKILL.md:
.claude/skills/
└── security-review/
├── SKILL.md
└── DETAILED_GUIDE.md
SKILL.md 用 YAML frontmatter 描述什么情况下使用:
---
description: "Review code for security vulnerabilities"
---
当你说"帮我看看这个 PR 有没有安全问题",Claude 读到 description 匹配,就会自动调用这个 Skill。
跟 Commands 的关键区别:Skill 可以打包多个文件。上面的 DETAILED_GUIDE.md 会被一起引用。Commands 是单个文件,Skills 是一个包。
.claude/agents/:定义专职子代理
复杂任务可以拆给专门的子代理。在 .claude/agents/ 里定义:
---
name: Code Reviewer
model: haiku
tools:
- Read
- Grep
- Glob
---
You are a code reviewer. Focus on:
- Logic errors and edge cases
- Missing test coverage
- Performance implications
Claude 需要做代码审查时,会启动这个子代理。子代理有独立的上下文窗口,做完工作后把结论压缩返回主会话,不会把主会话撑满。
tools 字段限制子代理能做什么。一个只读的安全审计代理没必要有写文件的权限。
model 字段让你用便宜的模型跑简单任务。只读的代码浏览用 Haiku 就够了,把 Sonnet 和 Opus 留给真正需要推理的工作。
.claude/settings.json:权限控制
控制 Claude 能做什么、不能做什么:
{
"$schema": "https://code.claude.com/schema/settings.json",
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git *)",
"Read", "Write", "Edit", "Glob", "Grep"
],
"deny": [
"Bash(rm -rf *)",
"Bash(curl *)",
"Read(.env)",
"Read(secrets/*)"
]
}
}
allow 列表里的操作不需要确认直接执行。deny 列表里的操作完全禁止。两个列表都不在的,Claude 会先问你。
同样有一个 settings.local.json 用于个人覆盖,自动 gitignore。
~/.claude/projects/:自动记忆
Claude Code 在工作过程中会自动记录笔记:它发现的命令、观察到的模式、架构细节。这些存在 ~/.claude/projects/ 里,下次打开同一个项目时自动加载。
你可以用 /memory 命令查看和编辑这些笔记。
如果 Claude 突然"记住"了你没告诉过它的东西,大概率是自动记忆在起作用。想重来可以清空对应项目的记忆文件。
从零开始的推荐顺序
第一步: 在 Claude Code 里跑 /init。它会自动分析项目生成一份 CLAUDE.md,你在上面删改就行。
第二步: 创建 .claude/settings.json,至少把常用的 run 命令加到 allow,把 .env 加到 deny。
第三步: 为最常做的工作创建一两个自定义命令。代码审查和修 issue 是最好的起点。
第四步: CLAUDE.md 超过 200 行了,开始拆到 .claude/rules/ 里,按路径设作用域。
第五步: 在 ~/.claude/CLAUDE.md 写上你的个人偏好,比如"总是先写类型定义再写实现"。
95% 的项目做到这五步就够了。Skills 和 Agents 等你有了固定的复杂工作流再加。
写在最后
很多人用 Claude Code 的感觉是"有时候很聪明,有时候又犯傻",其实大部分"犯傻"不是模型的问题,是它不知道你的项目规矩。
你没告诉它用哪个测试框架,它就猜一个,你没说命名用 camelCase,它可能给你写 snake_case,你没定义错误处理模式,每次写出来的都不一样。
.claude/ 就是解决这个问题的。花半小时把 CLAUDE.md 写好,后面每次对话都省几分钟纠正时间,一个项目用下来,省的时间远超投入。
欢迎关注,这个账号还会持续分享更多AI编程、出海工具、实战经验、踩坑记录。
想了解更多可以加我 vx: 257735 聊。

出海赚钱案例:一个人做了个开源UI库,不融资不投广告,45天30万美元
出海赚钱案例:一个人用 PHP 做到月入 17 万美金,利润率 99%!
(2026年最新)Codex CLI 国内使用全攻略:终端 + VSCode + Cursor + Opencode 四种姿势全搞定
更多推荐



所有评论(0)