Field Manual · 实战手册
别再堆「最佳实践清单」。团队真正缺的是一套可安装的控制系统:什么进每次会话、什么只在任务时加载、什么模型说了不算必须脚本拦住、项目目录怎么分区、规范怎么迭代还不污染 CLAUDE.md。建议是概率;墙是确定性;对照源用 skill+账本。
主轴:Anthropic Best Practices / Steering / Memory·Hooks·Skills。辅轴:AGENTS.md、Addy Osmani、superpowers、compound-engineering。目录与演进:AGE app-template 作只读参照 + 本机 /standards-age-review 与 Obsidian 账本。个人选型见 Agentic 作战手册。修订 2026-07-13。
Anthropic Steering 文讲的是「指令往哪放」;MCP 是工具连接层,不是同一种东西。团队规范的第一件事不是「写更长的 CLAUDE.md」,而是把每条指令放到正确的机制里——放错地方,轻则浪费 token,重则关键规则被淹没。
ANTHROPIC · STEERING CLAUDE CODE · 2026-06
「Every time X, always do Y」写在 CLAUDE.md 里是错的——该用 hook。「Never do this」若绝对不能发生,指令不够,要用 hook / permissions / managed settings。30 行流程写进 CLAUDE.md 是错的——该用 skill。
| 机制 | 何时进上下文 | 权威 | 团队用途 |
|---|---|---|---|
| CLAUDE.md | 会话全程(子目录按需) | 建议 | 命令、目录、团队规范、硬禁止的说明 |
| Rules | 始终或 path 命中 | 建议 | 横切约定(API 必 Zod、migration 只追加) |
| Skills | 描述常驻;全文调用时 | 建议 | 发版、评审、排障等流程 |
| Subagents | 独立窗口;只回摘要 | 建议 | 调研、安全审、对抗审查;定义在 .claude/agents/*.md |
| Hooks | 生命周期事件 | 强制 | format、拦危险命令、Stop 验证 |
| Permissions | 工具调用前 | 强制 | allowlist / deny / sandbox |
| AGENTS.md | 跨工具约定(建议 @ 导入) | 建议 | Codex/Cursor/Claude 共用的项目说明书 |
| MCP | 工具名常驻;schema 按需 | 工具能力 | GitHub/Slack/DB 等连接;.mcp.json 进 git;密钥走环境变量不进库 |
另有 output styles / --append-system-prompt(改角色或单次附加系统提示),小团队少用。别把 MCP 当成「第八条 CLAUDE.md」——它解决的是能调什么外部系统,不解决「项目规则写在哪」。
判据一句话:删掉这行,agent 会做错什么?答不上来就删。必须永远做对 → 别只写 markdown,写成 hook 或测试。
小团队最常见的失败是一上来装 100 个 skill、抄 500 行 CLAUDE.md。按 Anthropic 内部与一线仓库收敛出的顺序:先能验证 → 再共享宪法 → 再自动化 → 再谈高级流程。
/init,删到 <150–200 行。共享事实写 AGENTS.md,Claude 用薄 CLAUDE.md @AGENTS.md。每人 CLAUDE.local.md + gitignore。应用仓按 §8 项目目录 搭 Day-0 树并填 docs/context/project-context.md——没填就别让 agent 大写代码。
.env / secrets 与危险 rm;② PostToolUse 对改动文件 format/lint;③ git pre-commit 密钥扫描。慢检查(全量 Sonar/CodeQL)放 CI,不要塞进每次 Edit。
/clear 重开。大流程用 skill,不塞 CLAUDE.md。
disable-model-invocation: true。流程型 skill 同阶段只留一个主将(见 Agentic · skill 治理)。
AGENTS.md / hooks / 共享 skill 走 PR;agent 大 diff 不免除人类 review;禁止用 --no-verify 当日常文化。
Week-0 完成定义:任意成员在干净 clone 上能:用同一套命令绿测、agent 读到同一份宪法、危险写操作被 hook 拦住、PR 上 CI 与本地 check 一致。应用仓额外:project-context 里验证命令非占位符,且有一份带验收标准的 active requirement。
官方 best practices 开篇几乎不是 CLAUDE.md,而是验证。没有 pass/fail 信号,你就是验证环本身——每个错误都等你发现。团队 AI 规范的 ROI,首先体现在agent 能否自己跑到绿。
| 闸 | 实现 | 反馈速度 | 用途 |
|---|---|---|---|
| 提示内验证 | 同一条 prompt 要求跑测试/对比截图 | 最快 | 日常任务;零配置 |
| PostToolUse hook | Edit/Write 后 format + 定向 lint | 秒级 | 风格一致;当场修 |
| Stop hook /goal | 结束前跑 check;失败则阻止结束 | 十秒~分钟 | 无人值守循环的硬门 |
| git pre-commit | secret + staged lint | 秒~十秒 | 进库前底线(注意:AI 大 diff 可能拖垮慢 pre-commit) |
| CI | 全量 test + typecheck +(可选)Sonar/Semgrep | 分钟 | 合并真相;深度分析只放这里 |
| 对抗审查 | fresh subagent 审 diff(官方 /code-review 模式) | 分钟 | 实现者不当裁判;Addy 亦强调 fresh-context review |
实战坑:把 10 分钟分析塞进 agent hook → 全员关掉 hook → 底线归零。慢检查上 CI;快检查贴 agent 手边。
第一性原理:CLAUDE.md 不是「另一个 README」,而是每次会话自动注入的行为说明书。写错位置的成本是:同事被你的个人习惯绑架,或你的续跑断点被提交进库。Linux/WSL 文件名必须是 CLAUDE.md(大小写敏感)。官方建议单文件 <200 行;无主的 monorepo 宪法会只增不减——要有 owner,改动走 PR。
一句话分层
~/.claude/CLAUDE.md = 你的操作系统(方法论、表达、本机环境)·
<repo>/CLAUDE.md(+ AGENTS.md)= 团队增强版说明书(客观事实)·
CLAUDE.local.md = 私人笔记本(本仓库个人工作流,gitignore)·
三层各管各的,不冲突。
| 层 | 路径 | 影响谁 | Git | 该写什么 | 不该写 |
|---|---|---|---|---|---|
| 企业 | managed /etc/claude-code/… |
机上所有人 | IT 分发 | 合规、安全策略 | 业务细节 |
| 全局·个人 | ~/.claude/CLAUDE.md |
你的所有项目 | 否 | 思维方式、L0/L1/L2 路由、OpenSpec 总流程、验证纪律、Obsidian 总约定、本机环境(node 绝对路径、gh、uv…) | 具体仓库结构、某项目端口 |
| 项目·团队 | ./CLAUDE.md 或 ./.claude/CLAUDE.md + 建议 AGENTS.md |
本仓库所有人(含同事) | 是 · PR 管控 | 简介、结构、栈、构建/测试命令、代码规范、分支策略、架构红线、常见陷阱 | 个人偏好、进度、change id、个人续跑、Obsidian 路径 |
| 项目·本地 | ./CLAUDE.local.md |
只有你 · 本仓库 | 否 · gitignore | 续跑断点、当前 change、设计文档路径、本机 URL、个人临时偏好 | 团队必须知道的事实、密钥明文 |
| 子目录 | <repo>/<dir>/CLAUDE.md |
读该目录时(按需) | 是 | 子模块特有约束 | 项目级已写过的重复内容 |
| 内容 | 全局个人 | 项目团队 | CLAUDE.local | 子目录 |
|---|---|---|---|---|
| 思维方式 / 表达风格 | ✅ | ❌ | ❌ | ❌ |
| 工作流方法论(OpenSpec 总则等) | ✅ | ❌ | 仅本仓特例 | ❌ |
| 本机环境路径(nvm、uv、WSL) | ✅ | ❌ | 仅本仓差异 | ❌ |
| Obsidian / 个人档案约定 | ✅ | ❌ | 本仓 index 路径 | ❌ |
| 项目简介 / 仓库地图 | ❌ | ✅ | ❌ | 可选细化 |
| 构建·测试·部署命令 | ❌ | ✅ | ❌ | 可选 |
| 代码规范 / 框架坑 | ❌ | ✅ | ❌ | 可选 |
| 分支 / 提交 / PR 策略 | ❌ | ✅ | ❌ | ❌ |
| 架构红线 | ❌ | ✅ | ❌ | 可选 |
| 进度 / 状态 / change id | ❌ | ❌ 禁止 | ✅ | ❌ |
| 个人续跑命令 | 总则放全局 | ❌ | ✅ 当前断点 | ❌ |
关键区分:全局是你个人的,项目是团队共享的。项目级会被所有人的 Claude 读到——必须是客观事实,不能放个人习惯。进度与续跑写进项目 CLAUDE.md,是多人协作第一号脏数据来源。
| 板块 | 必须? | 说明 |
|---|---|---|
| 项目简介 | 必须 | 一段话,新人 10 秒看懂 |
| 仓库结构 | 必须 | 只列容易迷路的目录 |
| 技术栈与版本 | 推荐 | 关键依赖约束 |
| 构建 / 测试 / 部署命令 | 必须 | 可复制执行 |
| 代码规范(框架坑) | 必须 | 反直觉处;通用风格可引用 linter |
| 分支与提交 | 必须 | 避免「分支叫啥来着」 |
| 架构红线 | 必须 | 不可违反的设计决策 |
| 常见陷阱 | 推荐 | 踩过的坑,省别人时间 |
| 个人工作流 / 进度 | 禁止 | → 全局或 CLAUDE.local.md |
跨工具时:客观事实优先写 AGENTS.md,Claude 用薄 CLAUDE.md 做 @AGENTS.md + 少量 Claude 专用路由。改团队宪法 = 提 PR,至少一人 review,避免把个人习惯写进去。
官方支持 ./CLAUDE.local.md(或 ./.claude/CLAUDE.local.md):启动时加载,同层追加在 CLAUDE.md 之后。默认应 gitignore。相对 ~/.claude/projects/<encoded-path>/:local 文件就在仓库根,肉眼可见,更不容易忘——适合「快速进入状态 / 续跑 / 本仓事实源」。
@~/notes/<项目>.md 指到家目录一份个人文件。CLAUDE.local.md 一律打回;根 .gitignore 固定包含它。# CLAUDE.local.md — 本机私有,勿提交 # .gitignore 必须包含:CLAUDE.local.md ## 快速进入状态 - 当前工程:<名称>(openspec change `<id>`) - 续跑:/openspec-apply <id> - 断点:openspec/changes/<id>/tasks.md ## 事实源(个人档案) - 设计文档:<Obsidian 路径> - 项目大脑:Obsidian 40-Projects/<项目>/index.md ## 本机 - API:http://localhost:18080 - DB:docker compose --profile dev up -d ## 禁止 - 密码 / token / 客户数据 - 应写进团队 CLAUDE.md / AGENTS.md 的规则
模板全文见 §11。会话用 /memory 确认 local 已加载。
~/.claude/CLAUDE.md,不要复制进每个仓库的团队 CLAUDE.md。CLAUDE.local.md 追加在 CLAUDE.md 后。/memory 审计,删冲突。CLAUDE.md 是你写的指令;Auto Memory 是 Claude 自己学的。两套系统互补,但在团队场景下容易混淆——尤其不要把 auto memory 当团队共识。
| CLAUDE.md | Auto Memory | |
|---|---|---|
| 谁写 | 你 | Claude 自己 |
| 内容 | 指令、规则、命令 | 学到的模式、偏好 |
| 加载 | 每会话全量 | MEMORY.md 前 200 行/25KB;topic 文件按需 |
| 范围 | 项目/用户/企业 | 按仓库(机器本地) |
| 共享 | 进 git = 全员 | 不进 git、不跨机器 |
| 团队风险 | 低(有 PR 审查) | 高——一个人的记忆可能被另一个人的会话误读 |
AGENTS.md / CLAUDE.md(git 管控)。用 /memory 审计当前加载了什么;发现脏数据就清。维护节奏:agent 第二次犯同一错 → 改对应层(团队事实 / 个人 local / 或 hook)。每月修剪;砍不掉的长文挪 skill。留存测试:「去掉这行会不会做错?」
官方推荐默认四步:Explore → Plan → Implement → Commit。Superpowers 把「未批准设计不写码」做成硬门;Compound Engineering 要求每次交付让下次更容易。小团队不需要全套仪式,但需要同一条路由。
| 级别 | 例子 | 强制动作 | 禁止 |
|---|---|---|---|
| L0 琐碎 | 文案、单文件小修、配置笔误 | 直接改 + 相关 check | 跳过验证 |
| L1 行为变更 | 半日以内 feature/bugfix | 短 plan(可在会话内)→ 实现 → 测试绿 → PR | 无验收标准开写 |
| L2 结构性 | 跨服务、新子系统、数据迁移 | 书面 spec/设计批准 → 任务拆分 → 分会话执行 → archive | 厨房水槽会话从头干到尾 |
/clear——厨房水槽会话是第一大坑。ADDY OSMANI · AGENTIC CODING
难的部分从「打字」移到了「规格、审查、验证」。agent 写完后,用 fresh context 做 code review;团队应用 agent 做 PR 分诊,但人类仍对合并负责。
Hooks 是「模型说了不算」的层。配置进 .claude/settings.json(团队共享)或 managed policy(企业强制)。用 /hooks 核对来源。
| 类型 | 做什么 | 典型用途 |
|---|---|---|
| command | 跑 shell 命令;stdin 收 JSON,exit 码 + stdout 返回 | lint、format、拦危险操作(最常用) |
| http | POST JSON 到 URL | 通知 Slack、触发 webhook、记录审计 |
| mcp_tool | 调 MCP 服务器的工具 | 跨系统联动(如自动建 ticket) |
| prompt | 单轮 LLM 评估,返回 yes/no | 语义级判断(如「这个改动安全吗?」) |
| agent | 启动子代理(实验性) | 复杂审查、多步验证 |
常用生命周期事件:PreToolUse(工具调用前)、PostToolUse(工具调用后)、Stop(结束前)、SessionStart(会话开始)、PreCompact / PostCompact(上下文压缩前后)。完整列表见官方 hooks 文档。
.env / **/secrets/**;破坏性 rm -rf;未授权 force-push。exit 2 + 原因回灌模型。Tech lead 指南普遍把这一条列为「10 分钟最小安全」。
Edit|Write:只对变更路径跑 formatter / 快速 lint。官方示例就是 eslint-after-edit。保持独立、有 timeout。
npm test --related 或项目脚本;失败则阻止「我做完了」。注意连续 block 上限(官方约 8 次后可被覆盖)——门要准,别无脑全仓。
make check / pnpm verify)。Sonar/Semgrep 作 quality gate 或 security job,不绑定交互循环。
配置示例见 §11 模板。原则:hook 失败信息必须可读,否则模型会瞎重试。
Skill = 可复用程序。启动只加载 name/description;装太多时 description 本身就是上下文税。官方:流程放 skill;副作用流程 disable-model-invocation: true。
| 做法 | 原因 |
|---|---|
| 重复 ≥3 次再 skill 化 | 过早抽象制造互斥与维护成本 |
| description 写触发边界 | 决定会不会被误自动调用 |
| 正文含 DoD + 命令 | 弱模型可执行;强模型也少飘 |
| 流程互斥、工具可叠 | 两个 plan skill 同时指挥 = 混乱 |
| 进 git 的 skill 走 PR | 与代码同样的变更面 |
| 用 eval 改进,不靠 vibe | 3–5 条二元标准 × 多样输入 × 独立评分;改 prompt 直到分数平台期(社区自改进环,同源思路来自研究侧 auto-eval) |
Skill 是「可复用流程」;Agent(.claude/agents/*.md)是「可复用角色」。Skill 定义步骤;Agent 定义身份、工具权限、模型选择。两者可组合:Agent 预加载 Skill。
| Skill | Agent | |
|---|---|---|
| 定义文件 | .claude/skills/<name>/SKILL.md | .claude/agents/<name>.md |
| 核心用途 | 流程(发版、评审、排障) | 角色(reviewer、researcher、安全审计) |
| 工具权限 | allowed-tools / disallowed-tools | 同上 + permissionMode + isolation |
| 模型选择 | 可选 model(仅本次调用) | model + effort(整个代理生命周期) |
| 上下文 | 主会话内加载 | 独立窗口;只回摘要 |
| 可组合 | — | skills: [skill-a, skill-b] 预加载 |
| 典型 frontmatter | name description disable-model-invocation | name description tools model maxTurns isolation |
判据:需要独立上下文、不同工具权限、或对抗性角色 → Agent。需要步骤化流程、在主会话内执行 → Skill。两者可叠:Agent 定义角色,skills: 字段给它装流程。
AI coding 不是只配 CLAUDE.md。仓库目录本身就是控制系统:控制面(agent 怎么干活)、真相面(产品/技术必须成立什么)、代码面(可运行实现)。下面是一套中小应用仓默认规范——借鉴 AGE 等实践的吸引子思路,但用自己的分层命名,不要求照搬任何模板目录名。
方法论一句话
Repo 是事实源,chat 是草稿。稳定真相用固定文件名维护;过程记录可带日期、可归档。Agent 每次开工先读「当前指针」,再动代码。目录只在有职责时才开——空目录是税,不是规范。
| 面 | 放什么 | 典型路径 | 谁维护 |
|---|---|---|---|
| 控制面 | Agent 行为、门禁、可复用流程 | AGENTS.md、CLAUDE.md、CLAUDE.local.md、.claude/(hooks/skills/agents/settings) |
Constitution Owner;local 个人自管 |
| 真相面 | 要建什么、当前支持什么、技术边界、冲突时谁赢 | docs/(尤其 context / requirements / design / architecture) |
产品/域 Owner;改动走 PR |
| 代码面 | 可运行实现与可执行契约 | src/(或 apps/packages)、tests/、schema/API 定义、部署清单 |
开发;DB/API 以代码/schema 为最终真相 |
三面不能互相顶替:hooks 拦不住错误需求;docs 不能当测试;代码里的注释不能当团队 AGENTS.md。
repo/ ├── README.md # 给人:如何跑起来(可薄) ├── AGENTS.md # 给 agent:操作契约【必须·git】 ├── CLAUDE.md # 薄包装:@AGENTS.md + Claude 专用【必须·git】 ├── CLAUDE.local.md # 个人续跑/本机【必须 gitignore】 ├── .gitignore # 含 CLAUDE.local.md、.env、settings.local │ ├── .claude/ # 控制面【必须有框架】 │ ├── settings.json # 共享 hooks / 权限【git】 │ ├── settings.local.json # 本机微调【gitignore】 │ ├── skills/ # 可调用流程 skill │ ├── agents/ # 子代理角色定义 │ └── hooks/ # hook 脚本 │ ├── docs/ # 真相面 + 过程记忆 │ ├── index.md # 文档路由(人/agent 入口) │ ├── context/ # 【Day-0 必须】当前指针与规则 │ │ ├── project-context.md │ │ ├── source-of-truth.md │ │ ├── autonomy.md # AI 可自主到什么程度 │ │ └── codebase-map.md # 改哪里、脆点在哪 │ ├── requirements/ # 【必须有 active 一份】可实施需求 │ ├── design/ # 【推荐】稳定的产品/功能行为 │ ├── architecture/ # 【推荐】稳定的技术边界与基线 │ ├── plans/ # 【触发才建】切片执行与关闭条件 │ ├── backlog/ # 【推荐】下一步候选 │ ├── input/ # 【按需】原始 PRD/截图/纪要 │ ├── discussions/ # 【按需】需求澄清 │ ├── logs/ # 【按需】实施日记(常带日期) │ ├── bugs/ # 【按需】非显然回归与根因 │ ├── testing/ # 【按需】手工测记 + known-good │ ├── lessons/ # 【按需】可复用教训 │ └── archive/ # 【按需】人工批准后的冷文档 │ ├── openspec/ 或等价 change 目录 # 【可选】若团队用 OpenSpec:必须在 context 里声明 active ├── src/ 或 apps/ + packages/ # 代码面【必须】 ├── tests/ # 【强烈推荐】 └── .github/workflows/ # CI【推荐】
名字可本地化(例如 docs/context/project-context.md 叫 当前状态.md),但职责不能丢:指针文件、验收需求、稳定设计/架构、过程计划、代码与测试。
| 路径 | 回答的问题 | 写法要点 |
|---|---|---|
AGENTS.md | Agent 默认读什么、何时写 plan、完成标准? | 操作契约;可 @ 进 CLAUDE.md |
docs/context/project-context.md | 现在在做什么?验证命令是什么? | 短、常改;写 active 需求/计划路径;命令必须可复制执行 |
docs/context/source-of-truth.md | 冲突时谁说了算? | 按问题类型指主源(需求/设计/架构/schema/计划/日志) |
docs/context/autonomy.md | AI 能否直接改代码?保护区? | implement / plan-first / ask-first / research-only |
docs/context/codebase-map.md | 常见改动动哪些文件? | 入口、脆点、禁止乱改区 |
docs/requirements/* | 这一片要交付什么?验收是什么? | 可测行为;非目标;active 只有一份主需求 |
docs/design/* | 产品当前支持的行为? | 稳定文件名;收敛「已支持」而非史诗草稿 |
docs/architecture/* | 模块边界与技术基线? | 栈、边界、红线;DB/API 最终以代码/schema 为准 |
docs/plans/* 或 openspec change | 这一刀怎么切、何时算完? | 任务可勾选;验证门;关单前回写 owner doc |
docs/logs|bugs|lessons | 发生过什么?下次别再踩? | 过程记忆;可带日期;重要教训升格到 architecture/design |
src/ + tests/ | 现在真正跑的是什么? | 行为真相以测试与可执行契约为准 |
.claude/* | 如何强制与提效? | hooks 强制;skills 流程;agents 分工 |
| 问题 | 主源 | 备注 |
|---|---|---|
| 现在该建什么? | docs/requirements/(active) | input/ 只是原料,不能直接当验收 |
| 产品当前支持什么? | docs/design/ | 实现后要把变更回写 design |
| 技术边界/模块职责? | docs/architecture/ | 跨模块红线写这里 |
| DB / API 真实形状? | schema / OpenAPI / 代码 | 散文文档输给可执行定义 |
| 这一刀怎么关单? | docs/plans/ 或 openspec change | 关单 ≠ 聊天说「好了」 |
| 上周踩了什么坑? | docs/bugs/ · lessons/ | 反复出现则升格进 architecture |
冲突处理:需求 vs 设计不一致 → 先改文档再写码;代码 vs 文档不一致 → 标明是实现漂移还是文档过期,禁止静默二选一。文档 freshness 为 stale/unknown 时,默认只调研/对齐,不改产品行为(除非人明确批准)。
.claude/settings.json 空 hooks 也可先就位。真相面只建 docs/index.md + docs/context/* + 一份 active requirement。验证命令写真实命令;占位符则停止实现。
docs/plans 二选一为主,或在 project-context 写死映射路径——禁止双真相。
docs/plans/… 或 openspec/changes/<id>/。非目标写清;行为可测;任务可勾选;门是命令;关单后回写 design/architecture 或 archive。
repo/ ├── AGENTS.md ├── CLAUDE.md # @AGENTS.md ├── CLAUDE.local.md # gitignore ├── .gitignore ├── .claude/ │ ├── settings.json │ └── hooks/ ├── docs/ │ ├── index.md │ ├── context/ │ │ ├── project-context.md # active 指针 + 验证命令表 │ │ ├── source-of-truth.md │ │ ├── autonomy.md │ │ └── codebase-map.md │ ├── requirements/mvp-or-slice.md │ ├── design/app-overview.md │ └── architecture/system-baseline.md ├── src/ └── tests/
# docs/context/project-context.md(骨架) ## 身份 - 项目: - 当前里程碑: - 文档新鲜度:fresh | partially-stale | stale | unknown ## 当前指针(任意时刻只填真实路径) - Active requirement: docs/requirements/… - Active owner doc: docs/design/… 或 docs/architecture/… - Active plan: docs/plans/… 或 openspec/changes/… 或 none - AI autonomy: implement | plan-first | ask-first | research-only ## 验证命令(禁止占位符) | 用途 | 命令 | | 安装 | | | 开发 | | | 测试 | | | Lint | | | 构建 | |
项目与规范都会变。外部模板(如 AGE)适合当只读对照源,不适合拷进每个会话。推荐固定三件套:
| 层 | 放什么 | 不放什么 |
|---|---|---|
| Skill(流程) | 对照步骤、读哪些文件、三栏输出、完成定义;手动触发 | 业务仓路径细节、历史决策全文 |
| 账本(记忆) | 采纳 / 暂缓 / 拒绝 / 已有等价;日期与落点 | AGE 原文粘贴、每次会话必载规则 |
| 结果(生效) | 业务仓 AGENTS.md / docs/ / OpenSpec / hooks |
对照过程、个人续跑 |
| CLAUDE.md | 默认不写(避免上下文税与团队噪音) | 演进笔记、AGE 摘要、账本表格 |
~/.claude/skills/standards-age-review/:disable-model-invocation: true,入口 /standards-age-review。优化规范、目录、plan 关单、自主策略时再跑。
20-Tech/AI-HARNESS/notes/age-adoption-ledger.md。只追加行;先扫账本再对照,避免重复推销已拒绝项。
CLAUDE.md;不一次 cp -r 全套空目录。下一批高价值暂缓项(账本已记):自主等级+保护区、codebase-map、known-good baseline、Plan 决策表/Anti-Slacking——进真实业务仓时优先落地,而不是再抄 AGE 全文。
验收这套目录是否落地:新人(或新会话 agent)只读 project-context + active requirement 就能开工;验证命令可复制跑绿;任意冲突能在 source-of-truth 找到主源;关单后 design/architecture 与代码一致。规范演进可重复跑 skill+账本,且 CLAUDE.md 保持干净。参考实现可对照内部 age-app-template,以本节职责为准裁剪。
共识不是「全员同一模型」,而是全员撞同一堵墙、读同一份说明书、按同一路由升级仪式。Wix 工程侧也在强调:agent 能读 repo,仍缺 PM 意图与半年前决策——那要进 AGENTS.md / Skills / 结构化上下文,不是靠更大模型。
| 角色(可兼职) | 职责 |
|---|---|
| Constitution Owner | 根 AGENTS.md / CLAUDE.md / 共享 hooks;变更 PR 合并 |
| Domain Owner | 子系统 nested rules;跨域接口升级 L2 |
| Skill Steward | 互斥表、淘汰、golden 回归 |
| Quality Owner | CI 门禁;防止为 agent 方便降质量 |
.claude/rules、skills、.claude/agents、.mcp.json、项目 hooks、CI、已批准 spec/ADR。
没有度量就没有改进。但别一上来就搞仪表盘——先跑一个月,再用数据说话。
| 指标 | 怎么算 | 为什么重要 |
|---|---|---|
| Agent 自闭环率 | agent 完成且 CI 绿、无需人工补丁的比例 | 衡量验证墙是否够强 |
| Hook 绕过率 | --no-verify 使用次数 / 总 commit | 衡量 hook 是否太慢或太吵 |
| Skill 使用率 | 过去 90 天被调用 ≥1 次的 skill 占比 | 衡量 skill 目录卫生 |
| PR Review 发现率 | reviewer 在 agent 生成代码中发现的问题数 / PR 总数 | 衡量 agent 输出质量趋势 |
| 首绿时间 | 从「开始」到「CI 绿」的中位时间 | 衡量端到端效率 |
度量是改进输入,不是考核指标。发现 hook 绕过率高 → 查 hook 是否太慢;发现自闭环率低 → 查验证命令是否缺失。别把指标当 KPI 压人。
/clear 或分会话。自产中文,按需删改。保持薄。规范演进对照 skill 见本机 standards-age-review(不在此粘全文)。
# <项目名> @AGENTS.md ## Claude 专用(可选,仍须是团队共识) - 非琐碎改动先 plan;完成前贴验证证据 - 同问题纠正两次:/clear 后重来 ## 硬禁止(说明;强制靠 hooks/CI) - 密钥与生产凭据不进库 - 不 force-push 共享分支 # 禁止写入本文件:个人进度、change id、Obsidian 路径、本机端口 # → 放 CLAUDE.local.md(gitignore)
# AGENTS.md — 团队共享,改它 = 提 PR ## 这是什么 一段话:给谁用、解决什么、当前状态一句。 ## 仓库结构 - `src/` … - `tests/` … (只列容易迷路的) ## 技术栈与版本 - 语言/框架/关键依赖约束 ## 构建与测试 - 安装: - 开发: - 测试:(优先相关测) - Lint / typecheck: - 构建: - 部署:或见 ops/README.md ## 代码规范 - 框架特有坑(必写) - 通用风格:以 linter / editorconfig 为准 ## 分支与提交 - 分支策略、commit 格式、PR 要求 ## 架构红线 - 不可违反的设计决策 ## 常见陷阱 - known gotchas ## 验证 / 完成定义 相关测试与 lint 必须绿。CI:`.github/workflows/…` ## 安全 禁止提交:.env、密钥、客户导出。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-secrets-path.sh"
}]
},
{
"matcher": "Bash",
"hooks": [{
"type": "command",
"if": "Bash(rm *)",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
}]
}
],
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/format-changed.sh",
"timeout": 60
}]
}
]
}
}脚本需团队自备:路径黑名单、rm 策略、只格式化变更文件。失败时向 stdout/stderr 写清原因。
# CLAUDE.local.md — 个人工作流,勿提交 git ## 快速进入状态 - 当前工程:<名称>(openspec change `<id>`) - 续跑:/openspec-apply <id> - 断点:openspec/changes/<id>/tasks.md ## 事实源 - 设计文档:<Obsidian 路径> - 项目大脑:Obsidian 40-Projects/<项目>/index.md ## 本机 - API:http://localhost:18080 - DB:docker compose --profile dev up -d ## 禁止 - 密码 / token - 团队应共享的规则(写进 AGENTS.md / CLAUDE.md)
# .gitignore(片段) CLAUDE.local.md .claude/settings.local.json .env .env.*
同层:先团队 CLAUDE.md,后 local。比 ~/.claude/projects/… 更不容易忘。详见 §4。
--- name: ship-check description: 发版前检查。仅当用户明确要求发版或 ship 时使用。 disable-model-invocation: true --- # 发版检查 1. 跑项目 verify 命令,保存摘要 2. 核对 CHANGELOG 与用户可见变更 3. 列出风险与回滚 失败即停:不打 tag、不推送。
## PR checklist - [ ] 意图与非目标一句话 - [ ] 验证命令 + 结果(或 CI) - [ ] 无密钥 / 无本机绝对路径 - [ ] L1+ 已链 spec/change - [ ] 宪法/hooks 变更已拆 PR(如有) - [ ] 需要时已做 fresh-context review
| 日期 | AGE 来源 | 能力点 | 决策 | 落点 | 备注 | |------|----------|--------|------|------|------| | YYYY-MM-DD | 文件名 | 一句话能力 | 采纳/暂缓/拒绝/已有等价 | 路径或「—」 | 触发条件或原因 | # 决策后:改业务仓 AGENTS/docs/hooks,不要改 CLAUDE.md 记过程 # 手动对照:/standards-age-review
.claude/agents/reviewer.md)--- name: code-reviewer description: 审查代码变更的质量、安全与风格。仅在用户要求 review 时使用。 tools: Read, Glob, Grep model: sonnet maxTurns: 30 --- 你是代码审查员。审查标准: 1. 正确性:逻辑是否完备,边界是否处理 2. 安全:是否有密钥泄漏、注入风险、权限过大 3. 风格:是否符合项目约定(以 AGENTS.md 为准) 4. 测试:变更是否有对应测试覆盖 输出格式:按文件列出发现,每个发现含「问题 → 建议 → 严重度(P0/P1/P2)」。 无发现则输出「LGTM」。
.mcp.json){
"mcpServers": {
"github": {
"type": "http",
"url": "https://mcp.github.com/mcp",
"headers": {
"Authorization": "Bearer ${GITHUB_TOKEN}"
}
},
"local-db": {
"command": "npx",
"args": ["-y", "some-mcp-server"],
"env": {
"DB_URL": "${DATABASE_URL:-postgresql://localhost:5432/dev}"
}
}
}
}${VAR} 和 ${VAR:-default} 语法支持环境变量展开。.mcp.json 进 git;密钥通过环境变量注入,不写进文件。用 /mcp 查看连接状态。
.claude/rules/api-rules.md)---
paths:
- "src/api/**/*.ts"
- "src/routes/**/*.ts"
---
## API 层约定
- 所有入参必须 Zod schema 校验
- 错误统一用 AppError 类,不抛裸 Error
- 响应格式:{ data, error, meta }
- 日志用 logger 工具,不直接 console.log带 paths: frontmatter 的 rules 只在 Claude 处理匹配文件时加载。适合 monorepo 按模块分规则,避免无关规则污染上下文。
#!/bin/bash
# .claude/hooks/golden-fixture.sh
# 在 3-5 个代表性任务上跑 skill 回归
# 用法:./golden-fixture.sh [skill-name]
SKILL=${1:-"code-review"}
FIXTURES=(
"fixtures/small-bugfix.diff"
"fixtures/medium-feature.diff"
"fixtures/risky-refactor.diff"
)
for f in "${FIXTURES[@]}"; do
echo "=== Testing $SKILL on $f ==="
claude -p "/$SKILL" < "$f" --output-format json > "results/$(basename $f .diff)-result.json"
done
echo "=== Summary ==="
# 对照预期输出,计算通过率
# 通过率下降 = skill 退化或模型变更,需调查Golden fixture 是对抗「模型升级后 skill 行为漂移」的结构解。发 skill 改动或换默认模型前跑一遍,记录通过率趋势。
本页刻意少引营销帖。下列是可核对的一手或高引用实践源。
.claude/agents/*.md 定义格式:name/description/tools/model/permissionMode/isolation/skills。独立上下文,只回摘要。
docs/sub-agents核对于 2026-07
.mcp.json 配置格式;http/stdio/ws 传输;环境变量展开;工具按需加载。
docs/mcp核对于 2026-07
偏实战判断。全对才通过。