SuperAPI AI 工具集

update-docs

写作与研究

查看项目

更新于 10-13 15:20

技能介绍

用途

update-docs 是一个用于在代码变更后刷新项目文档的工作流。根据其描述,它适用于实现功能、改变行为或准备里程碑提交之后。

主要能力

  • 使用 git 检测自上一次文档提交以来的变化。
  • 分析 diff,并只更新受影响的文档。
  • 不依赖特定项目:自动检测项目根目录与文档位置。
  • 支持发现常见文档目录(docs、doc、wiki、pages)以及顶层 Markdown 文件。
  • 若无法自动确定文档目录,会向用户询问。
  • 可输出被修改的文档文件及增删改摘要。
  • 可选地将改动提交到 Git。

使用方式(工作流步骤)

第 1 步 — 定位项目

运行以下命令确立项目根目录与基本结构:

# Project root and current branch
git rev-parse --show-toplevel && git branch --show-current

查看最近 5 次提交(用于选择基线):

git log --oneline -5

然后查找文档所在位置:

# Look for common doc directory patterns
find "$(git rev-parse --show-toplevel)" -maxdepth 3 -type d \
  \( -name "docs" -o -name "doc" -o -name "wiki" -o -name "pages" \) \
  ! -path "*/.git/*" ! -path "*/node_modules/*" ! -path "*/.venv/*"

# Also check for top-level markdown files
find "$(git rev-parse --show-toplevel)" -maxdepth 1 -name "*.md" -type f

从结果中识别 $ROOT(git 根目录)与 $DOCS_DIR(文档文件所在位置,例如 docs/src/、docs/、wiki/)。若无法自动确定 $DOCS_DIR,询问用户:“Where are your documentation files? (e.g. docs/, docs/src/, or README.md only)”。

第 2 步 — 查找基线提交

查找最近一次触及文档目录的提交:

git log --oneline --all -- "$DOCS_DIR" | head -5

记录第一个哈希,称为 <baseline>。这是文档最后一次保持最新的时间点。若不存在文档提交,则使用初始提交作为基线:

git log --oneline --all | tail -1

第 3 步 — 获取基线以来的代码 diff

先获取源代码(非文档)变化的紧凑摘要:

git diff <baseline> HEAD --stat -- . \
  ':!'"$DOCS_DIR" ':!*.md' ':!*.rst' ':!*.txt' ':!*.json'

若 diff 规模可控,获取完整 diff:

git diff <baseline> HEAD -- . \
  ':!'"$DOCS_DIR" ':!*.md' ':!*.rst' ':!*.txt' ':!*.json'

提示:若 diff 超过约 400 行,逐文件分析:

git diff <baseline> HEAD -- path/to/file.py

重点关注:新增/删除的类或函数、变更的方法签名、新模块、变更的配置键、新增数据文件。

第 4 步 — 了解现有文档结构

读取第 1 步发现的文档文件,理解:每个文件覆盖的主题、每个文件记录的模块/组件/概念、写作风格(语言、标题层级、代码块与表格的使用)。编辑时保持与现有文档相同的风格与语言。

第 5 步 — 将变更映射到受影响的文档

对每个变更的文件或模块,确定需要更新哪些文档文件。通用映射规则:

代码变更类型 需要更新什么
新增类或模块 将其加入覆盖该层的架构/概览文档;更新依赖图
删除类或函数 从所有提及它的文档中移除或标记删除
方法签名/参数变化 更新代码示例、参数表
新增配置键或环境变量 更新配置文档
新增外部依赖 更新安装/设置文档
数据模式变化(DB、JSON、Pydantic 等) 更新数据模型文档
新增 CLI 命令或标志 更新 CLI 参考/用法文档
行为变化(算法、业务逻辑) 更新设计/架构文档
新增测试覆盖(重大新测试) 通常无需更新文档,除非存在测试指南

第 6 步 — 对受影响的文档做精准编辑

只更新过时的章节,不要重写仍然准确的部分。编辑规则:

  • 添加 diff 中出现的新的项(类、方法、参数、配置键)。
  • 移除或修订被重命名、删除或重构内容的描述。
  • 更新流程图、分步流水线和表格以反映新情况。
  • 保留 diff 未触及的所有章节——不做无谓的重写。
  • 完全匹配现有文档的写作风格(语言、格式、代码围栏风格)。

第 7 步 — 汇总变更并可选提交

全部编辑完成后,展示简要摘要:修改了哪些文档文件、每个文件中新增/移除/更新了什么。然后询问用户:“文档已更新。是否要将这些改动提交到 Git?(Y/n)”。

若选择是,建议使用如下格式的提交信息:

docs: update <DOCS_DIR> to reflect changes since <baseline-short-hash>

然后运行(相应替换 <DOCS_DIR> 与 <message>):

git add <DOCS_DIR> && git commit -m "<message>"

若选择否,提醒用户所有文件已保存,可稍后提交:

git add <DOCS_DIR> && git commit -m "docs: ..."

适用场景

代码发生变化、需要让项目文档保持最新时。具体触发时机包括:实现功能之后、改变行为之后、准备里程碑提交时。

限制

资料中未提供额外的平台限制、收费情况或效果说明。