/docaudit
文档体系审计。检查文档完整性、索引一致性和规范合规性。
文档体系审计
分工声明
确定性检查(索引一致性 / 编号连续 / 断链 / frontmatter 必填)已由 doc-governance 组件承担:
- 项目根存在
doc-governance.config.mjs时 → 先运行该组件并引用其输出,跳过本 skill 中对应的步骤 1(索引一致性)、2(编号连续性)、5(交叉引用)、6 的 frontmatter 必填部分 - 组件不在时 → 按下述旧步骤人工检查,作为 fallback
语义检查(步骤 8)无法机器化,任何情况下都由本 skill 执行。
步骤
索引一致性检查
- 读取
docs/design/README.md索引表 - 扫描
docs/design/目录下所有*.md文件(排除 README.md 和 CHANGELOG.md) - 比对:索引中列出但文件不存在的条目 → 报错
- 比对:文件存在但索引中未列出的条目 → 报错
- 读取
编号连续性检查
- 提取所有文档的编号前缀(00, 01, 02...)
- 检查是否有跳号或重号
CHANGELOG 时效性检查
- 读取
docs/design/CHANGELOG.md - 检查最新条目的日期是否为最近 7 天内
- 如果最近有 git 提交修改了 docs/design/ 下的文件,但 CHANGELOG 未更新 → 警告
- 读取
文档行数检查
- 统计每篇文档的行数
- 超过 500 行的文档 → 警告,建议拆分
交叉引用检查
- 扫描文档中的内部链接(
[xxx](./yy-zzz.md)) - 检查链接目标是否存在
- 扫描文档中的内部链接(
知识沉淀检查(如目录存在)
docs/research/和docs/troubleshooting/下的文件是否都在对应README.md索引中- 文件 frontmatter 是否包含
title、date、tags三个必填字段
参考 doc-22 项目知识沉淀机制 §6
N/A 章节合规检查(v1.2 新增,对齐产品文档体系方法论 §5.0)
- 扫描
docs/下所有设计类*.md(spec / product-spec / design-spec / prd / test-spec / ops-spec / features / sitemap / user-flows / constitution / tech-stack / CLAUDE.md) - 定位 N/A 章节:标题含「N/A」或正文首段以 "N/A" 开头
- 反模式自动检测(违反 §5.0 禁令):
- 章节正文仅写「(略)」「(skip)」「同上」「无」「TBD」 → 错误
- 章节为空(标题下无内容直到下一个章节标题) → 错误
- N/A 章节但缺「理由」(无 constitution / tech-stack 引用,无 #X 锚点) → 警告
- N/A 章节但缺「升级条件」(无 "触发条件" / "什么变化让它重新适用" 类语句) → 警告
- 合规要求(参考 prompt-hub
test-spec.md §6好例子):N/A 章节必须含 a) 显式声明 "N/A" b) 理由 + 禁令源(链回 constitution / tech-stack) c) 替代方案(如有) d) 升级条件(什么变化让它重新适用) e) 盲区编号反向链(项目维护盲区登记表时;否则可省略)
- 扫描
语义检查(无法机器化,本 skill 的存在理由)
- 愿景/事实混写检测:设计文档中描述的机制是否在本项目实际运行?逐个核对(查代码 / 配置 / git 记录),未运行的机制必须标注状态——「已运行」/「已定义未回填」/「愿景」;描述成既成事实但实际未运行且无状态标注 → 警告
- 字段语义腐化:frontmatter
description超过 120 字符 → 警告;status字段含版本叙事(如 "v1.2 已完成 xxx",状态字段被当 changelog 用)→ 警告 - status 僵尸:plan / ADR 的状态与 git 近期活动明显矛盾(如状态为 pre-code / Proposed,但对应模块已有大量实现提交)→ 警告
输出格式
## 文档审计报告
### 通过 ✓
- [列出通过的检查项]
### 警告 ⚠
- [列出警告项,附具体位置和建议]
### 错误 ✗
- [列出必须修复的问题]
### 统计
- 文档总数:N 篇
- 总行数:N 行
- 平均行数:N 行/篇
- 最长文档:xx-xxx.md(N 行)
- N/A 章节数:N(合规 X / 警告 Y / 错误 Z)IMPORTANT:客观报告,不美化。有问题就直说,没有问题就确认通过。