SuperAPI AI 工具集

docs-audit

写作与研究

查看项目

更新于 10-16 07:45

技能介绍

用途

docs-audit 是一个文档审计技能,用于对照当前代码库状态审计文档文件,检查其准确性、完整性和时效性。它适合在代码持续演进、文档容易滞后的项目中定期运行,帮助发现文档与实现不一致的问题。

主要能力

审计流程分为五个阶段:

  1. 发现(Discovery):运行 discover-docs.ts 脚本,获取所有 Markdown 文件及其 git 元数据的清单,输出 JSON,包含文档总数、活动状态分布(active/recent/idle/stale/ancient)、以及存在相关代码变更的文件(潜在过时指标)。

  2. 优先级排序(Prioritization):根据 focus 参数选择深入分析的文件。focus 可选 stale(优先最旧提交、尤其是有近期相关代码变更的文件)、all(跨活动状态均衡采样)、recent(关注最近修改、可能引入错误的文档)。默认选取前 10 个文件。

  3. 深度分析(Deep Analysis):对每个选中文件执行三类检查:

    • 正确性:代码示例的导入/require 路径、函数签名、配置示例、CLI 命令与标志、环境变量是否与当前实现一致。
    • 链接验证:内部 Markdown 链接、锚点链接、图片引用是否有效;外部 URL 仅抽样检查,不阻塞。
    • 完整性:必需章节、公共导出文档、复杂功能示例、错误处理说明等是否齐全。
  4. Docstring 覆盖率(Docstring Coverage):检查与文档相关代码文件的 TSDoc/JSDoc/docstring 覆盖率,支持 TypeScript/JavaScript、Python、Rust、Go,通过 grep 统计导出项与已文档化导出项的比例,计算每种语言的覆盖率百分比。

  5. 报告生成(Report Generation):使用 report-path.ts 生成报告路径,写入带 YAML frontmatter 的 Markdown 报告,包含摘要表格(正确性、链接、Docstring、时效性)、关键问题、警告、过时文档、各语言 Docstring 覆盖率、优先建议等。

使用方式

基本调用:

/docs-audit                                    # 单份报告写入 .pack/reports/
/docs-audit --path docs/                       # 限定 docs/ 目录
/docs-audit --focus all --limit 20             # 分析 20 个文件,覆盖所有状态
/docs-audit --multi                            # 多文件模式,生成多份报告
/docs-audit --output docs/audits/latest.md     # 自定义输出位置
/docs-audit --multi --path src/                # 对 src/ 文档做多文件审计

报告默认写入 .pack/reports/,文件名带前置时间戳。单文件模式为 {timestamp}-docs-audit-{sessionShort}.md,多文件模式为 {timestamp}-docs-audit/ 目录,内含 summary.md、markdown-docs.md、docstrings.md、recommendations.md、meta.json。所有报告均带 YAML frontmatter,包含 type、generated、timestamp、session、session_short、scope、focus、files_analyzed、files_total、status 等字段,便于 grep/ripgrep 搜索和工具聚合。

该技能使用 context: fork 隔离运行,典型审计的 token 预算目标为 15-30k。它使用任务工具(TaskCreate、TaskUpdate、TaskList)跟踪各阶段进度,支持在上下文压缩或中断后通过检查点数据恢复。

适用场景

  • 代码库持续演进,需要定期检查文档是否与实现同步。
  • 发布前审查文档准确性,避免用户因过时示例或错误命令产生困惑。
  • 评估项目 Docstring 覆盖率,识别缺少文档的公共导出。
  • 大型仓库中优先处理最可能过时的文档。

限制

  • 外部 URL 仅抽样检查,不作为阻塞项。
  • 非 git 仓库会跳过 git 元数据,改用文件修改时间,并在报告中注明“Git metadata unavailable”。
  • 超大仓库(100+ 文档)需严格使用 limit 参数,聚焦最过时的文件。
  • 未提供文档时会报告“No markdown files found in {scope}”。
  • 自定义文件名不会自动包含会话 ID 前缀,需通过 frontmatter 追踪。
  • 默认 .pack/reports/ 位置建议加入 gitignore,也可选择性提交以保留审计历史。