.claude/ 目录是 Claude Code 的配置中心,但大多数人只知道其中的一两个文件。本文是官方文档的完整整理:.claude/ 里每个文件和目录的作用、加载时机、优先级,以及适合放什么内容的实践建议。
.claude/ 目录的完整结构
your-project/
├── .claude/
│ ├── CLAUDE.md # 项目级指令(同 ./CLAUDE.md)
│ ├── CLAUDE.local.md # 个人本地配置(加入 .gitignore)
│ ├── settings.json # 项目权限配置(提交到 Git)
│ ├── settings.local.json # 个人权限配置(加入 .gitignore)
│ ├── rules/
│ │ ├── code-style.md # 全局代码规范
│ │ ├── testing.md # 测试规范
│ │ └── api/
│ │ └── security.md # API 安全规则(路径限定)
│ ├── skills/
│ │ ├── commit/
│ │ │ └── SKILL.md # 自定义 commit skill
│ │ └── deploy/
│ │ └── SKILL.md # 部署 skill
│ ├── agents/
│ │ ├── security-reviewer.md # 自定义 subagent
│ │ └── test-writer.md # 测试专家 subagent
│ ├── worktrees/ # Worktree 目录(加入 .gitignore)
│ │ ├── feature-auth/
│ │ └── bugfix-123/
│ └── docs/ # 可选:供 @import 引用的详细文档
│ ├── architecture.md
│ └── api-design.md
├── CLAUDE.md # 项目根 CLAUDE.md(与 .claude/CLAUDE.md 二选一)
├── CLAUDE.local.md # 根目录个人配置
└── .worktreeinclude # Worktree 文件复制配置
settings.json / settings.local.json
作用
控制 Claude Code 在这个项目里的行为和权限:允许/拒绝哪些操作,环境变量,Hooks 配置等。
两个文件的区别
.claude/settings.json | .claude/settings.local.json | |
|---|---|---|
| 提交到 Git | ✅ | ❌(加入 .gitignore) |
| 作用范围 | 整个团队 | 只有你 |
| 适合内容 | 团队共同的权限策略 | 个人环境的权限调整 |
常用配置
// .claude/settings.json(提交到 Git,团队共享)
{
"permissions": {
"allow": [
"Bash(npm test)",
"Bash(npm run lint)",
"Bash(npm run build)",
"Bash(git log *)",
"Bash(git diff *)",
"Bash(git status)",
"Bash(gh pr view *)",
"Bash(gh issue view *)"
],
"deny": [
"Bash(git push --force)",
"Bash(rm -rf *)",
"Bash(DROP TABLE *)"
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npm run lint --fix 2>/dev/null; echo 'lint done'"
}
]
}
]
}
}// .claude/settings.local.json(不提交,个人使用)
{
"permissions": {
"allow": [
"Bash(npm run dev)",
"Bash(ngrok *)"
]
},
"env": {
"DATABASE_URL": "postgresql://localhost:5432/myapp_dev"
}
}全局用户设置
除了项目级别,还有全局设置:
~/.claude/settings.json # 全局(所有项目)
~/.claude/settings.local.json # 全局个人(优先级高于全局)
优先级(从高到低):.claude/settings.local.json > .claude/settings.json > ~/.claude/settings.local.json > ~/.claude/settings.json
.claude/rules/
路径限定规则,详见 CLAUDE.md 指南。关键要点:
目录递归:.claude/rules/ 里所有 .md 文件都被发现,包括子目录。适合按功能分组:
.claude/rules/
├── global/
│ ├── code-style.md # 全局代码风格(无 paths,所有文件生效)
│ └── git-workflow.md # Git 工作流规范
├── frontend/
│ ├── react.md # paths: src/components/**/*.tsx
│ └── css.md # paths: **/*.css, **/*.scss
└── backend/
├── api.md # paths: src/api/**
└── database.md # paths: **/*repository*.ts, **/*model*.ts
rules/ vs 主 CLAUDE.md:
- 全局规则(每次都需要)→ 主 CLAUDE.md 或无 paths 的 rules/
- 特定场景规则(只在相关文件上)→ 有 paths 字段的 rules/
- 步骤化流程 → Skills
.claude/skills/
Skills 是可复用的工作流模板。.claude/skills/ 是项目级 Skills 目录(个人级是 ~/.claude/skills/)。
.claude/skills/
├── commit/
│ └── SKILL.md # /commit skill
├── deploy/
│ ├── SKILL.md # /deploy skill
│ └── scripts/
│ └── verify.sh # skill 可以调用的脚本
└── security-check/
├── SKILL.md
└── checklist.md # skill 引用的检查清单
每个 Skill 是一个目录,SKILL.md 是入口:
---
name: deploy-staging
description: 部署到 staging 环境
disable-model-invocation: true # 只允许用户手动触发
allowed-tools: Bash(npm *) Bash(git *) Bash(gh *)
---
## 部署步骤
1. 运行测试:`npm test`(失败则停止)
2. 构建:`npm run build`
3. 推送到 staging 分支:`git push origin HEAD:staging`
4. 等待 CI 完成(查看:`gh run watch`)
5. 验证健康检查:`curl https://staging.myapp.com/health`.claude/agents/
自定义 Subagent 定义文件。让你创建专门的 AI 助手:
---
# .claude/agents/security-reviewer.md
name: security-reviewer
description: 专注安全漏洞的代码审查专家。在处理 src/api/ 或涉及用户数据时自动委托
tools:
- Read
- Glob
- Grep
- Bash(git diff *)
model: claude-opus-4-5
effort: high
---
你是一个专注于安全漏洞检测的代码审查专家。
对于每段代码,你需要检查:
1. SQL 注入(特别是字符串拼接的查询)
2. XSS(用户输入输出到 HTML)
3. CSRF(缺失的 CSRF 保护)
4. 认证/授权问题(缺失检查、越权访问)
5. 敏感数据暴露(日志/响应里的密码、密钥)
输出格式:
- 🔴 Critical(必须修复)
- 🟡 Warning(建议修复)
- 🔵 Info(参考)
每个发现包含:位置(文件:行号)、问题描述、修复建议。---
# .claude/agents/test-writer.md
name: test-writer
description: 专门编写高质量测试代码的 Agent
tools:
- Read
- Write
- Edit
- Glob
- Grep
- Bash(npm test *)
---
你是一个专注于编写高覆盖率、高质量测试代码的专家。
测试原则:
- 每个测试只验证一个行为
- 测试名描述"应该…"(Given/When/Then)
- 优先集成测试,单元测试覆盖复杂逻辑
- Mock 只用于外部依赖(网络、数据库),不 mock 内部模块
- 边界情况比 Happy Path 更重要
为每个函数生成:
1. 正常路径测试(2-3 个)
2. 边界情况(empty/null/极值)
3. 错误路径(异常、无效输入).worktreeinclude
控制哪些被 .gitignore 忽略的文件在创建 Worktree 时自动复制:
# .worktreeinclude
# 语法同 .gitignore
# 只复制"被 gitignore 忽略"且"匹配这里的模式"的文件
.env # 基础环境变量
.env.local # 本地覆盖
.env.development # 开发环境
.env.test # 测试环境变量
config/local.json # 本地配置
.claude/settings.local.json # 个人权限配置(可选,如果你想在 Worktree 里也有)
.claude/ 目录的 .gitignore 配置
# .gitignore
# Worktrees 目录(自动生成,不提交)
.claude/worktrees/
# 个人配置(不提交)
CLAUDE.local.md
.claude/CLAUDE.local.md
.claude/settings.local.json
目录初始化命令
# 使用 /init 生成基础 CLAUDE.md(会分析代码库)
claude
> /init
# 创建目录结构
mkdir -p .claude/{rules,skills,agents}
# 查看 .claude 目录里有什么
ls -la .claude/提交到 Git 的文件清单
| 文件/目录 | 提交到 Git | 说明 |
|---|---|---|
.claude/CLAUDE.md | ✅ | 团队共享的项目指令 |
.claude/settings.json | ✅ | 团队共享的权限配置 |
.claude/rules/ | ✅ | 团队共享的规则 |
.claude/skills/ | ✅ | 团队共享的 Skills |
.claude/agents/ | ✅ | 团队共享的 Subagent 定义 |
.worktreeinclude | ✅ | Worktree 文件复制配置 |
CLAUDE.local.md | ❌ | 个人本地配置 |
.claude/CLAUDE.local.md | ❌ | 个人本地配置 |
.claude/settings.local.json | ❌ | 个人权限配置 |
.claude/worktrees/ | ❌ | 自动生成的 Worktree 目录 |
来源:Claude Code 官方文档 - The .claude directory | Memory | Skills | 整理:ClaudeEagle