--- name: living-docs-governance description: >- 把长期项目的文档当成一个小系统来维护,防止文档腐烂——四份各司其职的脊柱文件(CLAUDE.md 共享章程 / CLAUDE_MAP.md 地图 / PROJECT_STATUS.md 健康仪表盘 / PROJECT_LOG.md 流水账)+ Codex 的 AGENTS.md 入口桥接 + 固定读序,并按需连接 ARCHITECTURE、CONTEXT、ADR、契约、测试、回归和 Issue Tracker。用于治理初始化、只读审计、阶段同步、LOG 复盘与超过 200 条事件后的归档索引。中文触发:文档治理、活文档、防文档漂移、治理初始化、治理审计、治理同步、治理复盘、AGENTS.md、项目状态追踪、项目地图、架构图、模块流转图、健康仪表盘、流水账、日志归档、长期项目治理。English triggers: living documentation, docs governance, governance init, governance audit, governance sync, governance retrospective, AGENTS.md bridge, architecture document, module flow diagram, prevent doc rot, project status dashboard, project map, append-only changelog, project log archive. metadata: origin: ECC --- # 活文档治理(Living Docs Governance) 长期项目最先腐烂的是文档层:README 在撒谎、架构笔记描述着一次从没上线的重构、每次进会话 agent 都在重新推导本该一读就懂的上下文。**活文档治理**把项目文档当成一个小的、各司其职的**系统**,而不是一堆散文件:四份互相链接的文档,每份只干一件事,外加一个 agent 进会话时读它们的固定顺序。 本技能覆盖**首次 setup 与后续维护**。setup 把真实项目资料接成可维护的文档入口;维护让它在几个月的改动后依然为真。只想了解陌生代码库、不准备配置文档时,用代码库 onboarding 类技能。 > 在 Claude Code 中,可由配套的 `docs-governor` / `docs-auditor` agent 执行;在 Codex 或没有这些自定义 agent 的宿主中,由当前 agent 直接按本 skill 执行,必要时再使用宿主提供的只读探索或执行型子 agent。本 skill 始终是方法论唯一来源。 ## 什么时候启用 满足任一条就启用: - 项目长过几个模块,文档开始和代码漂移。 - agent 或队友在会话之间丢失上下文,反复重新发现同一套结构。 - 没人能从单一位置回答"这项目现在健康度如何?""上周改了啥?"。 - 死文件和废弃实验堆积,偶尔被误重建。 - 你想给一个单人/小团队项目一层耐用、低开销的治理,又不想上大型多人仓库那套重 CI 机器。 **不要**在用完即弃的脚本、或活不过这周的仓库上用——那是过度治理。 ## 渐进式采用:从最小开始,但提前看到下一级 别一上来铺满四件套——那本身就是过度治理。从最小起步,**真正关键的不是"按需补",是提前认出"下一级快需要了"的预警信号**,在它真痛之前就备好。等漂移出事(STATUS 撒谎、重建已删文件)才补,文档已经烂了一轮、返工已经发生——治理的价值在防患,不在救火。 | 当前规模 | 该有 | 下一级的预警信号(看到就准备上) | |---|---|---| | 单文件 / 用完即弃 | 什么都不用 | —— | | 长过几个模块、要维护一阵 | **CLAUDE.md**(几条硬规则 + 路标) | 开始有人问"这项目现在健康吗" → 备 STATUS | | 有健康 / 风险 / 待删要追 | + **PROJECT_STATUS.md** | AI/新人开始"找不到某功能""改错地方" → 备 MAP | | 找东西 / 跨 Module 改开始费劲 | + **CLAUDE_MAP.md** | Module 权责、状态归属、依赖或主流程开始说不清 → 备 ARCHITECTURE | | Module 架构需要共享 | + **ARCHITECTURE.md**(可选血肉) | 反复问“为什么这样设计” → 备 ADR;要追历史 → 备 LOG | | 要追溯决策与历史 | + **PROJECT_LOG.md**(四件套齐) | 分出前后端、接口字段对不上 → 备 CONTRACT | | 分前后端 / 多服务 | + **CONTRACT.md**(见 `contract-first`) | —— | 预警信号的意义:让你在**痛之前**上对应那一级,而不是等它腐烂出事再救火。 ## 团队共享 vs 个人:治理文件放哪一层 四件套是**项目级、团队共享**的——进 git,所有协作者 / agent 共用,写的是"团队共识的真相"。**个人临时偏好别塞进去**(会污染团队视图):那些放 `CLAUDE.local.md`(同目录、不提交)或 `~/.claude/`(全局个人)。判据一句话:**帮整个团队一致 → 进项目四件套;只是你一个人的习惯 → 进 `.local` / 全局。** ## 怎么运作 这套系统 = **四份脊柱文档**(角色严格分离)+ **分级读取协议** + 让它们保持最新的**更新规则** + 阶段收尾时的**查漏补缺矩阵**。`CONTEXT.md`、`docs/adr/`、契约、测试和回归台账都是按真实需要长出的血肉,不是第五到第九份必建脊柱。 本文以插件现有的 CLAUDE 主源布局说明文档角色;项目若已有 AGENTS 主源,沿用其约定。入口具体写什么、依据什么事实生成、如何精简与检查,统一执行 `skills/documentation/agent-entrypoints/SKILL.md`;本文继续负责其他载体及读序。审计脚本和模板仍有 CLAUDE 默认布局,采用不同布局时按目标项目核对适配,不自动迁移规则主源。 ### Claude Code / Codex 入口适配 两端共用本 skill,不复制方法论: | 用户意图 | Claude Code 入口 | Codex / ChatGPT 入口 | 详细执行流程 | |---|---|---|---| | 新项目、讨论后项目或已有项目首次配置 | `/governance-setup`(`/governance-init` 为兼容别名) | `$living-docs-governance` + “setup 当前项目” | 本文“统一 setup”执行模式 | | 已有项目治理 | `/governance` | `$living-docs-governance` + “治理当前项目” | 本文“已有项目治理”执行模式 | | 只读审计 | `/governance-audit` | `$living-docs-governance` + “只读审计” | 本文“只读审计”执行模式 | | 阶段同步 | `/governance-sync` | `$living-docs-governance` + “阶段收尾同步” | 本文“阶段同步”执行模式 | | LOG 复盘 | `/governance-retro` | `$living-docs-governance` + “复盘 PROJECT_LOG” | 本文“日志复盘”执行模式 | 所有宿主直接执行本文对应模式。Claude commands/agents 只选择模式和执行角色;Codex / ChatGPT 由当前 agent 执行,不反向读取 commands/agents。只读审计、只读复盘保持只读。 审计支持 `spine`、`context`、`adr`、`artifacts`、`full` 五种范围。先运行 `scripts/audit-cheap.sh ` 做确定性检查;断链失败就短路,只有通过后才进入语义判断。默认只读;只有用户明确要求保存时,才把报告写入 `docs/audits/YYYY-MM-DD-*.md`。 ### 四份文档与各自的职责 | 文档 | 唯一职责 | 该放什么 | 绝不能放什么 | |---|---|---|---| | `CLAUDE.md` | 宪法:永远生效的硬规则和路标 | 不可妥协的约定、读序、指向其他文档的路标 | 长篇解释(链接出去)、实时状态、历史 | | `CLAUDE_MAP.md` | 地图:只记**文件树看不出来**的导航语义 | 非显然定位跳转表、架构/决策/契约等知识入口、"树真实但误导"清单(废弃/生成物/兼容目录)、别动区 | 目录树镜像(`ls` 就有)、Module 权责与流程图(属 ARCHITECTURE)、接口字段细节(属 CONTRACT/代码 Interface)、健康指标(属 STATUS)、历史(属 LOG) | | `PROJECT_STATUS.md` | 健康仪表盘:当前状态一眼看清 | 指标对阈值、删除区(故意删掉别重建的文件)、未决违规、P0 行动 | 项目是什么(属 MAP)、发生了什么的叙事(属 LOG) | | `PROJECT_LOG.md` | 流水账:只追加的历史 | 每件有意义的事一行(`## [日期] 类型 \| 摘要`),新条目追加到底 | 当前状态(属 STATUS)、结构(属 MAP);永不改/删旧行 | 让它生效的纪律是**非重叠**:每个事实只有一个权威来源,其他载体只引用。"auth 模块在哪?"→ 地图。"覆盖率现在健康吗?"→ STATUS。"旧解析器啥时候删的、为啥?"→ LOG。每份只干一件事,就不会一起烂。 事实按类型认来源:规则、决策与历史由相应文档维护,接口字段由唯一机器契约定义;测试与审查结论引用实际运行的版本、范围、结果和证据位置。项目已有工程 Skill 继续负责代码审查,治理层只核对与引用其证据。STATUS 保存带来源的健康快照,相关实现或验收条件变化后标待复验,不把旧绿色结果延续为当前结论;无法确认版本或范围时明确写未验证。 ### 可选文档与排期 - 需要判断项目是否应建立架构文档,或生成、完善、审查现有架构说明 → `skills/documentation/architecture-docs/SKILL.md`;返回必要性、依据和主记录位置。 - 稳定领域术语、概念关系和歧义反复影响协作时,才创建根目录 `CONTEXT.md`;它不写实现、状态、任务、需求全文或决策。具体边界见 `context-and-decisions`。 - 出现架构、数据库、认证、部署、数据模型或 API 版本等难回退决策时,才创建 `docs/adr/README.md` 和一项决策一个 ADR 文件。MAP 只指向 ADR 索引,不枚举所有决策。 - 任务、负责人、阻塞和项目排期由 GitHub Issues、Linear 或项目已有 Tracker 管理;没有外部 Tracker 时再采用本地 `.scratch/`。`PROJECT_STATUS.md` 只保留当前健康快照,不承担排期。 ### 分级读取协议(按需读,但红线常驻) 不要每次进会话把四份全量灌进上下文——那是把"文档存在"当成"此刻相关"。读取按**分级**,判别只有一句话:**需求会不会自己报到?** - **会自己报到的**(bug 跳出来、要定位某文件、要查健康度)→ 触发时才读,按需。 - **不会报到、却会悄悄咬人的**(你正要重建一个故意删掉的文件,没任何信号提醒你)→ 必须常驻,不能等触发。 按这个分,四份文档各自的读取策略: | 文档 | 进会话默认读 | 何时读完整 | |---|---|---| | `CLAUDE.md` | **全文必读**(小、是规则,违章无信号) | —— | | `PROJECT_STATUS.md` | **只读顶部红线块**:删除区 + 未决 P0/违规(几行;危险不报到) | 需要看健康度/指标时,读其余部分 | | `CLAUDE_MAP.md` | **默认不读**(它只记树里看不出来的导航、误导清单和别动区;目录树本身按需 `ls`) | 找不到东西、要跨 Module 改、**新建/删/重命名文件前**,读它 | | `ARCHITECTURE.md`(若存在) | **默认不读** | 要理解整体结构、改变 Module 权责/状态/Interface/依赖/核心流转,或做跨 Module 设计时,读它 | | `PROJECT_LOG.md` | **不读**(transcript) | 排查 bug、追溯"为什么删 / 为什么这么做"时,`grep` 或读尾部 | 使用 Codex 或多个宿主时,由 `agent-entrypoints` 确定实际入口与共享主源,并挂上本文的分级读取路标。项目以 CLAUDE 为主源时才使用 `templates/AGENTS.example.md` 薄桥接;已有完整 AGENTS 主源时保留正文,不套桥接模板覆盖。 常驻成本压到最小:CLAUDE 全文 + STATUS 红线几行。大头(完整 MAP、ARCHITECTURE、STATUS 指标、整本 LOG)全按需。LOG 之外的当前真相载体是 **projection**(决定此刻喂什么),LOG 是 **transcript**(记录发生了什么)。 **两条护栏(防"该读没读"——这是按需读唯一的真风险):** 1. **不确定就升级全读。** 拿不准这次要不要读完整 MAP/STATUS → **默认读全**,不要为省 token 赌一把。省 token 是小钱;在过期地图上铺代码、重建已删文件是大坑。 2. **动手改文件前必读,不只是进会话时。** 真正的危险不在进会话,在你准备**新建 / 删除 / 重命名文件、跨目录改动**那一刻——这些操作**强制**先读完整 `CLAUDE_MAP.md` 对应段 + `PROJECT_STATUS.md` 删除区,确认没踩禁区、没复活已删文件。 > **LOG 防腐:按事件计数 + 复盘 + 可重建索引。** `PROJECT_LOG.md` 的事件格式是 `## [日期] 类型 | 摘要`;阈值按事件数计算,不按原始行数。活跃事件不超过 200 条时只用 Markdown;超过 200 条后: > 1. **先只读复盘**:识别重复问题和应下沉的 lint / TEST-ID / 回归保护。 > 2. **经用户确认再归档**:运行 `python3 <插件目录>/scripts/project-log-index.py archive --root <项目根> --yes`。旧事件原样进入 `PROJECT_LOG.archive.md`,活跃 LOG 默认保留最近 100 条;归档是受控压缩例外,不得手工删改历史。 > 3. **建立派生索引**:脚本从活跃 LOG + archive 重建 `.governance/project-log.sqlite`。数据库默认进 `.gitignore`,不是唯一事实源;损坏或删除后运行 `rebuild` 即可恢复。 > 4. **分类不猜**:类型取事件头;模块只在明确写出或能从真实路径解析时登记,否则为 `unclassified`;引用只提取 commit、TEST-ID、ADR、CONTRACT 和明确路径。内容哈希保证幂等。 > 5. **失败不伤原文**:解析、归档或建库失败时,不得留下被截断的 `PROJECT_LOG.md`。审计以活跃文件和 archive 的事件合集判断只追加完整性。 > 6. **目录 + 内容分层**:主 LOG 只当**目录**——每条一行(`## [日期] 类型 | 一句话`),需要长详情(完整审计报告、大段修复记录)时下沉到独立文件(如 `docs/log-details/2026-07-03-audit.md`),目录行尾挂链接。主 LOG 永远短、可整读;详情按需点开。这就是「脊柱保持瘦、血肉下沉」用在 LOG 自己身上。 > 7. **复盘统计**(LOG 不只是负担,是资产):归档前跑一次 `/governance-retro`,统计哪个模块出错最多、哪类错误重复出现、标准变更了几次——**重复 TOP 的错误 = "该下沉成 lint / 回归测试"的候选清单**(见 `module-regression` 铁律"坑必下沉")。同一个坑在 LOG 里出现第二次,说明它还没被机器接管。 ### 防腐烂的更新规则 - 改了路径、入口、知识载体或误导区 → **同一次改动**里更新 `CLAUDE_MAP.md`。 - 模块分工、状态、接口、依赖或核心流程变化 → 同次按 `architecture-docs` 核对受影响的架构记录。 - 指标越过阈值,或你故意删了某文件 → 更新 `PROJECT_STATUS.md`,并把路径加进删除区,免得被重建。 - 有意义的变更、决策或验证结果 → 往 `PROJECT_LOG.md` 追加一行,说明结果与必要理由;写入前按阶段归纳,不为重复读取、重试或相同结论另写流水账。已有提交护栏仍按项目约定执行。 - `AGENTS.md` / `CLAUDE.md` 的长度与精简按 `agent-entrypoints` 第 1 条执行,每份不超过 200 行;关键约束留在入口,细节下沉并保留路标。 - **标准变更留痕**:任何验收阈值 / 联动规则 / 契约字段的修改(如 `<0.01` 放宽到 `<0.1`、REGRESSION 联动规则改松),必须在 `PROJECT_LOG.md` 追加一条「标准变更:旧值 → 新值 + 理由」。审计时对照 Git 历史检查标准变化和对应记录;缺失时报告具体变化、可能影响和待补依据,按下述规则分级,不直接认定为 P0。 ### 风险分级与维护成本 - 优先沿用项目已定义的严重级别。未定义时,P0 用于有证据表明必须立即阻止的严重损害(如正在发生的数据丢失或越权);P1 用于已确认会误导实现或阻塞关键路径、需要优先修复的问题;P2 用于一般维护改进。证据不足时标“待核实”,写清可能影响和缺少的证据。 - 覆盖率、测试数量、审计间隔和一般文档行数是检查线索,阈值由项目约束决定;Agent 入口另有 `agent-entrypoints` 的 200 行硬验收,不能降为建议。越线不凭单一数值自动定为 P0,严重级别仍看实际影响;普通验证缺口和维护建议放按需读取区,任务安排仍归 Issue Tracker。 - 只更新本次变更实际影响的文档。业务项目试点时,可在现有审计或复盘记录中观察接手耗时、重复解释、提前发现的问题和文档维护成本;没有测量就标未知,不另建一套指标台账。 ### 阶段收尾同步 当用户说"同步一下"、"整理文档"、"收尾"、"这个阶段做完了"、"新人能接手",或运行 `/governance-sync` 时,不要只追加 `PROJECT_LOG.md`。先按 `references/governance-sync-matrix.md` 判断本次变化应该影响哪份治理文档: - 路径、入口、知识载体、误导区、跳转表 → `CLAUDE_MAP.md` - Module 权责、状态归属、Interface、代码依赖方向、核心流转 → `ARCHITECTURE.md`(若已启用或已达到启用条件) - 风险、测试缺口、指标、待删区 → `PROJECT_STATUS.md` - 长期硬规则、读序、不可妥协约定 → `CLAUDE.md` - 重要历史事件 → `PROJECT_LOG.md`(只追加) - 前后端接口字段 → `CONTRACT.md`(若项目有契约治理) - 领域术语或关系变化 → `CONTEXT.md`(若存在且证据已确认) - 难回退技术决策 → `docs/adr/`(若触发 ADR) - 产品十阶段产物、PRD 基线、需求评审和运营反馈 → `product-evolution`;复用 docs 下产品入口,任务状态留在 Tracker 关键区别:`PROJECT_LOG.md` 是记录员,只追加历史;`CLAUDE_MAP.md` / `ARCHITECTURE.md` / `PROJECT_STATUS.md` / `CLAUDE.md` 是编辑过的当前真相,发现旧事实过期要修正、合并或删除。 ## 文档角色分层(管 4 件套之外的全部文档) 四件套是**脊柱**,但真实项目还有规范、设计记录、参考、审计产物等一大堆**血肉**文档。治理纪律(一文一职、非重叠、按需读、防漂移)对全体文档都适用,不止四份。给任意一份文档定位,用**一条判据 + 三条纪律**。 ### 判据:一份文档属于哪层 = 它回答 AI 的哪个问题 | 它回答 | 角色 | 谁来当 | |---|---|---| | 该遵守什么(永久铁律) | 宪法 | `CLAUDE.md`(脊柱) | | 在哪找、树看不出的语义 | 地图 | `CLAUDE_MAP.md`(脊柱) | | 当前 Module 怎么分工、怎样依赖和流转 | 架构 | `ARCHITECTURE.md`(按需血肉) | | 现在健康吗、啥是禁区 | 仪表盘 | `PROJECT_STATUS.md`(脊柱) | | 发生过什么 | 流水账 | `PROJECT_LOG.md`(脊柱) | | 要做什么 / 怎么做 | 规范 | spec / plan / 模块规则 | | 为什么这么做 | 决策 / 修复记录 | `docs/adr/` / FIX- / CHECK- | | 照着抄的真相 | 参考 / 契约 | 数据源图 / `CONTRACT.md` / references | | 某次结果 | 产物 / 审计 | 带日期的审计或报告 | | 过期但留着 | 归档 | `*/archive/` | 前 4 行是**脊柱(固定 4 份,每次进会话相关)**,后面是**血肉(按项目长,不限层数)**。判据是"它回答哪个问题",不是"必须凑成 N 层"。 ### 三条管理纪律 1. **一文一职**:一份只回答一个问题,回答俩就拆。(把"非重叠"从 4 份扩到全体文档) 2. **可达性(防孤儿)**:每份血肉必须能从脊柱顺着指路牌走到——脊柱是入口树的根。走不到的 = 孤儿文档,要么挂链接、要么归档。**没人指向 = 没人读 = 必烂。** 3. **脊柱保持瘦(防漏)**:脊柱只放「索引 + 指路牌 + 不读会悄悄出事的红线」。任何细节 / 历史 / 产物,**脊柱里只留一行链接,正文下沉到对应层**。 ## 模板 四份文档的可直接套用模板在 `templates/` 下,按项目实情填括号/示例部分: - `templates/CLAUDE.example.md` - `templates/CLAUDE_MAP.example.md` - `templates/ARCHITECTURE.example.md`(多个长期 Module 且架构不再直观时才用) - `templates/PROJECT_STATUS.example.md` - `templates/PROJECT_LOG.example.md` - `templates/context.example.md`(稳定领域语言出现时才用) - `templates/adr-index.example.md` / `templates/adr.example.md`(难回退决策出现时才用) ## PROJECT_STATUS 示例 按 `templates/PROJECT_STATUS.example.md` 填写实际指标、风险影响和删除理由;模板示例不代表项目已发生对应问题或必须采用其数值。 ## 例子 - **文档和代码漂移了**:一个半年前的数据工具,README 还在描述 v1 管线。采用四件套后,MAP 指向当前结构入口,ARCHITECTURE 写出真实 Module 布局,STATUS 标记 README 过期;此后路径变化更新 MAP,Module 结构变化更新 ARCHITECTURE。 - **agent 反复丢上下文**:每次进会话都重新 grep 学布局。采用读序后,会话开头四次短读重建上下文,不再重复发现。 - **删掉的文件老回来**:一个死的 `legacy_parser.py` 被删两次、重建两次。把它记进 STATUS 删除区(连同原因和替代物),循环就断了。 ## 相关 - `docs-governor` agent —— 照本方法论去扫项目、生成/更新四件套的执行者。 - `docs-auditor` agent —— 照本方法论只读审计四件套是否漂移、重复、虚构路径或指标未验证。 - `references/governance-sync-matrix.md` —— 阶段收尾时判断"本次变化应同步哪份治理文档"的影响矩阵。 - `contract-first` skill —— 当项目分前后端两层、需要防接口字段漂移时,那套契约方法论的姊妹篇。 - `context-and-decisions` skill —— 管稳定领域语言与架构/数据库等难回退决策。 - `change-impact` skill —— 修改前收集影响证据,实施后对照实际 diff、验证与文档同步。 ## 共享执行模式 以下流程是两端共用的唯一执行规则;命令参数由宿主适配层转成模式、范围、日期或本阶段说明。 ### 统一 setup 为新项目、已讨论项目和已有代码项目配置产品文档包与 Agent 入口,不实现业务功能。Claude Code 由 `docs-governor` 编排,Codex / ChatGPT 由当前 Agent 编排;按下面顺序读取并执行专项 Skill,不复制其方法论。旧“空项目初始化”“已有项目首次接入”都进入本模式;日常维护走下一节。 1. **只读识别项目。** 定位目标根与 Git 边界,读取现有规则主源、文档入口、已确认讨论及 PRD/Spec、代码与包配置、验证命令、Tracker、hooks/CI 和治理配置。先核对已有资料,再判断场景: | 场景 | 配置依据与结果 | |---|---| | 从零开始,尚无已确认规格 | 用用户已给的目标、对象与约束建立产品草稿;缺失的目标或范围影响建档时才问,未知技术栈、方案和命令明确待定 | | 已讨论或已有 PRD/Spec,尚未实现 | 复用已确认来源与验收条件,登记生效范围和未决项;不重新发明需求,不将计划标为已实现 | | 已有代码/文档 | 将现有产品资料、实现与验证证据映射进文档包;保留原路径与主源,冲突标待核实,不用代码现状反向批准需求 | 2. **确认文件范围。** 给出“保留”“新增/更新”“不创建”清单,注明每项职责、依据和验证方式。复用用户对同一对象与范围的明确授权;尚未授权的文件先确认,部分批准就只做该部分。“看看怎么接入”保持只读。setup 本身不授权 Git 初始化、提交、推送、依赖安装或 hooks/位置护栏配置。 3. **产品文档先行。** 将目标根、来源、确认范围、现有主记录和获准文件清单交给 `skills/documentation/product-evolution/SKILL.md`。完整 setup 建立或补齐产品入口、十阶段导航、PRD/Spec 基线与来源关系;已有阶段材料只映射,不复制。新阶段写真实状态和待补问题,不输出空模板或虚构调研/验收。该步骤返回实际路径、修订、未决项;入口写入与最终审计交回编排者。只批准入口配置时跳过产品写入并说明边界。 4. **按需补治理载体,再配置入口。** 按本文渐进条件与授权补充 MAP、STATUS、LOG 等载体,不预建空目录或整套四件套。将真实项目事实、验证入口、保留的规则和已存在的产品/治理路径交给 `skills/documentation/agent-entrypoints/SKILL.md`,维护共享主文件及所需宿主桥接;采用本插件开发流程时,由该 Skill 接入总路由的“模块变更流程”指针。已有主源不能改成空桥接。专项 Skill 不可用时报告该步未完成,不用临时复制的方法论冒充调用成功。 5. **验证并交接。** 对实际写入的每份入口执行 `agent-entrypoints` 的检查;运行 `python3 <插件目录>/scripts/audit-docs.py --root <目标根> --scope full`。非零先处理,布局不受检查器支持时报告限制,不为消警报造空文件。安全且在授权内的项目验证按真实命令运行,未运行就标未验证。交付项目场景、复用/增改文件、PRD/Spec 与十阶段入口、实际验证结果和待决项;仅部分配置不能称完整 setup。重复运行应复用既有来源、编号和路径,不增建另一套文档。未实测宿主加载时不声称 slash command 或 hook 端到端通过。 专项调用只处理传入范围后返回,不递归启动 setup。可选 hooks 仅在明确授权后安装:检查 `core.hooksPath`,否则用 `git rev-parse --git-path hooks/pre-commit` 定位,尊重 worktree 和既有 hook;不得覆盖已有脚本。 ### 已有项目治理 尚未建立文档体系时执行“统一 setup”;已有体系的日常更新转交 `skills/documentation/docs-maintenance/SKILL.md`,传递项目根、任务范围、实际 base/head、读写权限与已有证据。只读请求转“只读审计”;日志归档仍按本文日志管理执行。 ### 只读审计 默认范围 full;支持 spine/context/adr/artifacts。先执行 `bash <插件目录>/scripts/audit-cheap.sh <范围>`,任何非零退出码都先报告并短路;只有通过后进入语义审计。指定对象时在选定范围内重点核对,仍保持只读。 日志默认比较工作区与 HEAD。审查已提交变更时必须指定原始基线:`python3 <插件目录>/scripts/audit-docs.py --root <项目根> --scope full --base-ref <基线提交>`;Shell 入口可用 `DOCS_GOVERNANCE_BASE_REF`。PR 使用目标分支基线,push 使用推送前提交。显式基准不可解析时失败;无 Git 历史时标未验证。 工具需要复用结果时加 `--format json`,读取 `references/audit-result-format.md`。同一检查结果可渲染为文字或 JSON;按 `check`、`status`、`evidence` 读取,不解析中文提示。退出码 1 表示已发现文档问题,2 表示检查未完成;0 仍可能包含警告或未验证项,继续按覆盖范围做语义核对。 可选的代码路径引用按行声明:``。只豁免列出的路径尚不存在,不豁免文件已存在后的内容检查。活动文件和普通 Markdown 链接不得用可选标记隐藏断链。删除区使用标题以“删除区”开头的章节;表格第一列为已删路径,替代物放后续列;列表每行只列一个删除目标。 语义层按范围检查: - 四件套是否各司其职、是否重复或矛盾;MAP 是否复制架构或目录树,STATUS 指标是否实际量过,LOG 是否只承担历史。AGENTS / CLAUDE 的内容、主源、加载与可执行性按 `agent-entrypoints` 只读检查。 - 架构说明按 `architecture-docs` 只读审查;README、过期文档、误导目录与当前代码冲突时报告。 - CONTEXT 是否只管稳定领域语言;必要时读 `context-and-decisions` 检查 accepted ADR 冲突、替代关系、理由、后果和退出路径。 - 契约存在时读 `contract-first`:检查唯一机器来源、消费方与提供方证据、版本与真实序列化结果,不把手写字段表或内部类型检查当联调。 - 依同步矩阵查漏;活跃 Spec/Issue 的成功标准是否连到实现、TEST-ID/人工出口和交付证据,归档内容是否仍被误当当前依据。Issue Tracker 不可访问时,任务状态与排期标未验证。 - 检查全部文档可达性与职责下沉;确定性孤儿提示只是候选,不能证明从脊柱可达。TEST-ID 字符串出现不等于必要测试点已有完整证据。 - 存在 `.claude/` 时检查死配置、模糊命名、个人偏好混入团队、空目录及规则过载。针对具体变更时执行 `skills/engineering/change-impact/SKILL.md` 的“按事实核对文档”,并检查超范围改动、迁移尾项和遗留临时代码。 输出总体可信度、P0/P1/P2 发现、具体证据、影响、建议、通过项及待人工确认项。未测量不背书,建议不写成已修复。默认在回复输出,用户要求保存时才写审计报告。 ### 阶段同步 执行 `skills/documentation/docs-maintenance/SKILL.md`,传递项目根、阶段说明、实际 base/head、读写权限和已有证据;由它同步主记录、验证并说明剩余差异。只读请求不写文件。 采用 PR 护栏的项目仍须在创建或更新 PR 前运行 `scripts/check-pr-docs.py --base <实际目标分支>`;非零先修复。安装与参数见 `references/document-policy.md`。 ### 日志复盘 默认只读全量;指定起始日期时仅统计该日期起的事件。先运行 `project-log-index.py status --root <项目根>`,再读活跃 LOG;全量模式存在 archive 时一并读。索引可辅助查询,证据必须能回到 Markdown;LOG 不存在时报告缺失。 按真实类型和明确路径统计模块 fix 热点前五、出现至少两次的错误类型、标准变更的旧值/新值/理由和审计间隔;对照期间 commit 数,不凭目录名猜模块。连续放宽标准要提示;重复错误提出回归测试/lint/schema 的下沉候选,并关联 `test-collaboration`。 输出分布、重复错误、标准审查和候选清单。修复、补测及经确认归档是后续写入动作,不混入只读复盘;不把任务排期写入 SQLite。