点击上方卡片关注我

设置星标 学习更多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 testmake 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万美元

出海建站必备:一小时搞定自建邮件,免费!

OpenClaw 真香!我让它每天帮我干这些活

出海赚钱案例:一个人用 PHP 做到月入 17 万美金,利润率 99%!

(2026年最新)Codex CLI 国内使用全攻略:终端 + VSCode + Cursor + Opencode 四种姿势全搞定

从海外公司注册到 Stripe 收款,跑通了出海收付款全流程(实操分享)

玩转 Claude Code Hooks:让自动化渗透到每个环节

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐