团队落地:把 Claude Code 配置当代码管理
把 Claude Code 用到“稳定可复制”,关键不是记住更多技巧,而是把个人经验沉淀成一套可版本化、可评审、可迭代的配置体系。下文整理出一套适合团队落地的结构与实践要点。
原则:不是照搬任何现成配置,而是提炼出可迁移的方法;具体命令/字段以你本机版本与官方文档为准。
一张图看全:配置体系的 7 个构件
在 Claude Code 里,你可以把“怎么工作”拆成以下构件(从强约束到弱约束):
CLAUDE.md:项目级记忆与约定(构建/测试/目录结构/风格/禁区)。rules/:必须遵守的规则(安全、测试、代码风格、Git 工作流等)。agents/:专用子代理(规划、架构、代码审查、排障、E2E 等)。commands/:高频斜杠命令(把复杂流程“一键化”)。skills/:可复用的方法论与领域知识(TDD、后端/前端模式、代码规范等)。hooks/:在关键事件点自动化守卫(PreToolUse/PostToolUse/Stop…)。.mcp.json/ MCP 配置:把外部工具接入到 Claude Code 的工具链里。
这些内容既可以放在用户级 ~/.claude/(个人全局),也可以放在项目级 .claude/(团队共享,建议纳入版本控制)。
如果你想直接上手一套“最小可用模板”(目录结构 + 关键文件建议),先看:团队 Starter Kit(最小可用配置)。
如果你想把“工程经验”固化成可复用模块(而不是散落在聊天记录里),看:模式库:把工程经验沉淀为 Skills。
如果你想把安全/测试/代码风格/Git 流程等“底线”固化成项目级规则库,见:团队规则库:用 Rules 固化底线。
推荐目录结构(团队最小可用)
把团队共享部分放进仓库(示例):
your-repo/
├─ CLAUDE.md
└─ .claude/
├─ rules/
│ ├─ security.md
│ ├─ testing.md
│ └─ coding-style.md
├─ agents/
│ ├─ planner.md
│ ├─ code-reviewer.md
│ └─ build-error-resolver.md
├─ commands/
│ ├─ plan.md
│ ├─ code-review.md
│ └─ build-fix.md
├─ hooks/
│ └─ hooks.json
└─ settings.json落地顺序建议:CLAUDE.md → rules/ → commands/ → agents/ → hooks/ → MCP。
共享内容、本地内容、运行时内容要分层
很多团队的配置体系在 1 到 2 个月后开始失控,往往不是因为“功能不够”,而是因为三类内容没有分开:
| 层 | 典型内容 | 是否进仓库 | 目的 |
|---|---|---|---|
| 团队共享层 | CLAUDE.md、rules/、commands/、整理过的 agents/ 和 skills/ | 是 | 可评审、可复用、可版本化 |
| 个人本地层 | settings.local.json、个人 MCP 配置、个人偏好 | 否 | 适配个人机器和个人习惯 |
| 运行时生成层 | 学习型技能、导入型技能、会话日志、临时产物 | 否 | 保留实验与演化空间,不污染共享仓库 |
一个实用原则是:凡是团队需要共同承担后果的配置,才进入仓库;凡是个人实验、个人凭证、个人机器状态,都留在本地。
这也是为什么“项目级 curated 内容”和“本地 learned/imported 内容”要明确分开。否则你很容易把一次偶然有效的个人经验,错误地升级成团队默认行为。
把配置拆对:3 条判断规则
1) “所有项目都一样”放用户级,“项目独有”放项目级
例如:你个人偏好(不使用 emoji、偏好不可变数据、默认用某编辑器)适合放在 ~/.claude/CLAUDE.md;而“这个项目用 pnpm / 这个仓库的测试命令”适合放在仓库 CLAUDE.md。
2) 用 rules 固化底线,用 commands 固化流程
rules/ 解决“必须遵守什么”;commands/ 解决“高频怎么做”。把流程放到 command 里,能显著降低团队成员的学习成本。
3) 把“需要换脑子”的任务交给 agents
典型的“需要换脑子”的任务包括:方案规划、架构权衡、代码审查、安全审计、构建排障、E2E 测试设计。用专用 agent 能减少主对话上下文污染,也更容易标准化产出。
一个 agent 文件通常用 front matter 描述元信息(示例节选):
---
name: code-reviewer
description: Reviews code for quality, security, and maintainability
tools: Read, Grep, Glob, Bash
model: opus
---示例:一个 /plan 命令为什么能提高成功率
一个高质量 /plan 命令的要点是:先复述需求、评估风险、列步骤,并要求用户确认后再改代码。这本质上是在用“强约束”对抗“默认冲动修改”。
你可以把这个模式迁移到团队的高风险动作上,例如:
- 大规模重构
- 引入新依赖/新服务
- 权限与安全相关改动
选择性启用,比“全量安装”更适合团队长期使用
研究多个配置型仓库后,一个非常稳定的经验是:不要在第一天把所有 agents、commands、skills、hooks 一次性装进团队。
更合理的顺序通常是:
- 先固化共享事实:
CLAUDE.md - 再固化底线:
rules/ - 再固化流程:
/plan、/code-review、/build-fix - 然后才引入专用 agents 和更多 Skills
- 最后再把提醒型和阻断型 Hooks 接上去
这样做的好处是:
- 团队更容易知道“每个构件到底解决什么问题”
- 出问题时更容易定位是哪一层配置导致的
- 升级和回滚成本更低
如果你的团队还处在“先把 Claude Code 稳定用起来”的阶段,Starter Kit 只启用 20% 的能力,往往比一次上线 100% 的配置更有效。
Hooks 的价值:把“经验教训”变成自动化护栏
常见的 Hooks 思路包括:
- 提醒型:长耗时命令建议在 tmux 下跑,避免丢日志。
- 阻断型:某些高风险命令或不合规操作直接
exit 1拦截。 - 一致性型:编辑 JS/TS 后自动触发格式化、类型检查、console.log 扫描提醒。
- 会话连续性:在 SessionStart/Stop/PreCompact 读写会话文件,给“下次继续”留线索。
落地建议:从“提醒型/一致性型”开始,确认团队接受度后再逐步引入“阻断型”。
Hooks 通常是“事件 + matcher + hooks”的结构(示例节选):
{
"matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\\\.(ts|tsx|js|jsx)$\"",
"hooks": [
{
"type": "command",
"command": "#!/bin/bash\n# Warn about console.log in edited files\n..."
}
],
"description": "Warn about console.log statements after edits"
}性能与上下文:把精力花在“可复用的结构”上
性能问题通常可以归结为两点:模型选择与上下文窗口管理。对团队来说,更可操作的是后者:
- 把长期规则写进
CLAUDE.md/rules/,减少重复解释。 - 把复杂流程做成
/command,减少每次重新描述。 - 复杂任务优先用 Plan Mode,先把“范围与步骤”定住。
如果你希望进一步把“会话连续性/压缩策略”做成可执行的流程,可以看:会话连续性与战略压缩。
如果你想让文档与架构地图自动跟随代码演进,可以看:文档同步与 Codemaps:让文档跟着代码走。
给人看的索引,决定这套配置会不会真的被团队用起来
只把文件堆进 .claude/ 目录,往往还不够。很多团队真正缺的是“给人看的入口”:
- 哪些 Skills 已经整理好了
- 哪些命令是推荐默认路径
- 一个任务通常应该组合哪些能力
一个很小但很有效的做法是:
- 在
.claude/skills/README.md维护 Skills 索引 - 在
.claude/commands/README.md或CLAUDE.md里列出推荐命令 - 按“新功能开发 / 排障 / 安全审查 / 文档同步”整理组合入口
这类索引不会直接提高模型能力,但会明显提高团队 adoption、减少重复解释,也更利于新成员加入。
给配置体系一个维护节奏
配置当代码管理,意味着它也需要“维护节奏”,而不是写完就不管:
- 每周:抽查 1 个实际任务,确认命令和规则是否真的被执行
- 每月:更新
CLAUDE.md中的命令、目录、架构说明 - 每次版本或工作流变更后:复查 hooks、agents、commands 是否仍然适配当前行为
你可以把这个节奏看成“团队工作流的回归测试”。没有这一步,配置体系通常会慢慢变成过期文档。