大多数 Claude Code 用户知道
.claude/
文件夹的存在,但从未真正打开过它。AI 工程师 Akshay 近日整理了一份完整指南,解析这个文件夹的每个文件的功能,以及如何设置才能让 Claude 完全按照你的方式工作。
两个文件夹,不是一个
首先要澄清一个常见误解:
.claude/
文件夹有两个,不是一个。
项目层级(你的项目/.claude/):存放团队共享设置,提交到 Git,让所有人获得一致的规则与指令
全局层级(~/.claude/):个人偏好与跨项目设置,只影响自己的机器
CLAUDE.md:最重要的一个文件
每次启动 Claude Code 工作阶段,Claude 第一件事就是读取
CLAUDE.md
,并将其载入系统提示词(system prompt),在整个对话中持续遵守其中的指示。
应该写入的内容:
建置、测试、lint 指令(如 npm run test)
重要的架构决策
不明显的注意事项(例如“TypeScript strict mode 开启,未使用的变量会报错”)
命名规范、错误处理风格
不应该写入的内容:适合放在 linter 设置的规则、完整文件、冗长的理论说明。
Akshay 建议将 CLAUDE.md 控制在 200 行以内——超过这个长度,Claude 的指令遵守率实际上会下降,因为消耗太多 context。
rules/ 文件夹:模块化指令,适合团队扩展
当 CLAUDE.md 越来越臃肿,
.claude/rules/
是解决方案。每个 Markdown 文件代表一个关注点,例如 code-style.md、testing.md、api-conventions.md,Claude 会自动读取所有文件。
更强大的是“路径范围规则”:在规则文件加入 YAML 前置资料,就能让规则只在 Claude 处理特定路径的文件时才载入,避免不相关的规则占用 context。
commands/ 文件夹:自定义斜线指令
放在
.claude/commands/
的每个 Markdown 文件都会成为一个斜线指令。review.md 对应 /project:review,fix-issue.md 对应 /project:fix-issue。
最实用的功能是在指令文件中使用
!
语法执行 shell 指令并嵌入输出——例如自动抓取 git diff 注入提示词,让 Claude 真正“看到”你的代码变更。放在 ~/.claude/commands/ 的个人指令则跨所有项目都可使用。
skills/ 与 agents/:主动触发 vs. 指定子代理
Skills 和 agents 的核心差异在于触发方式:
Skills:Claude 根据对话内容自动判断是否调用,无需手动输入指令。每个 skill 有自己的目录与 SKILL.md,并可附带支持文件
Agents:定义专业子代理人格,拥有独立的系统提示词、工具权限与模型设置。复杂任务时 Claude 会 spawn 一个隔离的 context window 让代理执行,避免主工作阶段被大量 token 塞满
Agents 的
tools
栏位能限制子代理的行为范围——安全审计代理只需要读取权限,不应有写入能力。model 栏位则让你为聚焦型任务选用较轻量的模型,节省成本。
settings.json:权限白名单与黑名单
.claude/settings.json
控制 Claude 被允许或禁止执行的操作:
allow 清单:直接执行,不需确认(例如 npm run *、git *)
deny 清单:完全封锁(例如 rm -rf *、读取 .env)
不在清单内的操作:Claude 会询问是否继续
个人设置可放在
.claude/settings.local.json
,自动被 gitignore,不会提交到仓库。
从哪里开始?
Akshay 建议的实用起步顺序:先执行
/init
生成初始 CLAUDE.md,加入 settings.json 设置基本权限,再建立一两个最常用的自定义指令——其余的随着使用习惯逐步添加。
核心洞察是:
.claude/
文件夹是你告诉 Claude“你是谁、项目是什么、应该遵守什么规则”的协议。设置得越清楚,花在纠正 Claude 的时间就越少。
这篇文章 搞懂 .claude/ 文件夹:Claude Code 的控制中枢,CLAUDE.md、指令、技能与权限完整解析 最早出现在 链新闻 ABMedia。