Просмотр исходного кода

chore: 防文档漂移 — CLAUDE.md 规则6(改动同步文档+映射表) + /docs-check 审计命令

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tianyu.chu 1 месяц назад
Родитель
Сommit
fda7ec2ee5
3 измененных файлов с 46 добавлено и 0 удалено
  1. 33 0
      .claude/commands/docs-check.md
  2. 1 0
      CHANGELOG.md
  3. 12 0
      CLAUDE.md

+ 33 - 0
.claude/commands/docs-check.md

@@ -0,0 +1,33 @@
+---
+description: 审计规格文档是否与代码现状一致(防漂移)—— 按"改动类型→文档"映射逐项查,报告漂移并修复
+---
+
+审计项目文档与代码现状的一致性,是 CLAUDE.md 规则 6(改动同步文档)的**兜底**:规则负责每次改动当场同步,本命令负责定期/发版前扫出漏网的漂移。
+
+## 范围
+
+- `$ARGUMENTS` 给了 git 范围(如 `HEAD~10..HEAD` 或某 commit)→ 只查这些改动波及的文档。
+- 为空 → 全量审计文档集:`README.md`、`apps/api/README.md`、`docs/01`~`docs/07`(以及 `CLAUDE.md` 规则 6 的映射表自身是否仍准)。
+
+## 映射(改了什么 → 查哪份)
+
+| 改了什么 | 必须检查 |
+|---|---|
+| 接口/契约(端点、字段、校验) | `docs/02 §5`、`docs/06`、`apps/api/README`、`apps/web/src/api/types.ts`(+ `packages/api-types`) |
+| 取数/口径/表结构 | `docs/02 §6`、`docs/03` |
+| IA/导航/产品范围 | `docs/01`、`README` 能力域表 |
+| UI 控件/文案/视觉/交互 | `docs/04` |
+| 目录/模块/运行/部署架构 | `docs/07`、`docs/02 §10`、`README`、`infra` |
+
+## 步骤
+
+1. **看清现状**:`git log --oneline -15` + `git diff --stat`(或 `$ARGUMENTS` 范围),掌握近期改了哪些代码区域;据此圈定要查的文档。
+2. **逐份对照**:对每份相关文档,**读文档 + 读对应代码/契约**,逐条核对——文档里写的端点/字段/口径/默认值/控件文案/目录树/部署方式,与代码现状是否一致。覆盖面大时,可按文档区并行派 `Explore` 子代理,只回结论(漂移点 + 现状)。
+3. **产出漂移清单**:每条 `文档:段/行 — 写的是 X,现状是 Y — 建议改 Z`。无漂移就明说"未发现漂移",不要硬凑。
+4. **修复**:逐条外科手术式改掉(只碰过期处,不顺手重写);改完按规则 5 记一条 `CHANGELOG`。
+5. **不臆测**:拿不准是"漂移"还是"有意保留"(历史修订注、后续设计、术语)时,摆出来问,别默删默改。
+
+## 注意
+
+- 只查**规格/契约/IA/视觉/结构**类漂移;纯内部实现细节(不改对外行为)不在范围。
+- 诚实:真有漂移就列全,别为"看起来一致"漏报或谎报。

+ 1 - 0
CHANGELOG.md

@@ -5,6 +5,7 @@
 ## 2026-06-29
 
 ### 新增
+- **防文档漂移机制**:`CLAUDE.md` 加规则 6「改动同步文档」(含"改动类型→该改哪份文档"映射,与 changelog 同属收尾动作)作预防;新增 `/docs-check` 命令(`.claude/commands/docs-check.md`)按同一映射审计文档与代码现状的漂移、报告并修复,作发版前/定期兜底。
 - **`docs/07-项目结构与模块`**:新接手者的"地图"——顶层目录树、apps/web · apps/api · packages · infra 各模块与关键文件职责、线上/本地运行数据流、构建与 `/look` 部署流程、本地怎么跑。
 
 ### 文档

+ 12 - 0
CLAUDE.md

@@ -9,3 +9,15 @@
 4. 以目标驱动执行——把任务转为可验证目标("修 bug" = "写复现测试 → 让它通过");多步任务先给简短计划(步骤 → 验证点)
 
 5. 改动入 changelog——每次落地的项目改动都追加到 `CHANGELOG.md`;新条目置顶;按日期分组,正文分 `新增 / 变更 / 修复 / 移除`;纯实验、被回滚、未提交的尝试不写
+
+6. 改动同步文档——代码落地时,同步更新对应规格文档(与 changelog 一样属"收尾动作");按下表对照,改了哪类就检查哪份,过期即改:
+
+   | 改了什么 | 必须检查/同步 |
+   |---|---|
+   | 接口/契约(端点、字段、校验) | `docs/02 §5`、`docs/06`、`apps/api/README`、`apps/web/src/api/types.ts`(+ `packages/api-types`) |
+   | 取数/口径/表结构 | `docs/02 §6`、`docs/03` |
+   | IA/导航/产品范围 | `docs/01`、`README` 能力域表 |
+   | UI 控件/文案/视觉/交互 | `docs/04` |
+   | 目录/模块/运行/部署架构 | `docs/07`、`docs/02 §10`、`README`、`infra` |
+
+   纯内部实现细节(不改契约/口径/IA/视觉/结构)无需动文档。定期或发版前可跑 `/docs-check` 审计漂移。