SuperAPI AI 工具集

generate-release-notes

编程与开发

查看项目

更新于 10-15 14:28

技能介绍

用途

该技能用于根据 git 提交历史自动生成发布说明(Release Notes)和变更日志(Changelog)。它解析符合 Conventional Commits 规范的提交信息,将其分类、分组并格式化为专业的 Markdown 输出。

主要能力

  • 解析 git log 中的 Conventional Commits(feat:、fix:、docs: 等)
  • 按提交类型映射到对应章节,如 Features、Bug Fixes、Performance Improvements 等
  • 识别破坏性变更(BREAKING CHANGES),并在顶部单独列出
  • 支持按 scope 分组,同一 scope 的多个提交归入加粗标签下
  • 将不符合规范的提交归入 Other Changes 章节
  • 根据 SemVer 规则建议版本号:有破坏性变更建议 MAJOR,有 feat 建议 MINOR,仅有 fix/docs/style 等建议 PATCH
  • 生成 Release Notes 写入 RELEASE_NOTES.md,或向 CHANGELOG.md 追加新版本条目,也可同时生成两者

使用方式

技能按以下工作流执行:

  1. 确定输出类型:询问用户需要 Release Notes、Changelog 还是两者。
  2. 确定提交范围:默认使用最新标签到 HEAD(<tag>..HEAD),也可接受自定义范围如 v1.0.0..v2.0.0 或 v1.0.0..HEAD。若无标签,则询问用户或默认包含全部提交。
  3. 解析提交:运行解析脚本,命令为 bash ${CLAUDE_PLUGIN_ROOT}/skills/generate-release-notes/scripts/parse-commits.sh [<range>]。脚本输出每个提交的 COMMIT、TYPE、SCOPE、BREAKING、DESCRIPTION、BODY、FOOTERS 字段。
  4. 分类与格式化:按类型映射到章节,章节顺序为 Features、Bug Fixes、Performance Improvements、Code Refactoring、Documentation、Styles、Tests、Build System、Continuous Integration、Chores、Reverts。每个章节内按 scope 字母顺序排列,无 scope 的条目排在最后。破坏性变更单独置于顶部,同时保留在各自类型章节中。
  5. 确定版本:用户提供则使用,否则根据 SemVer 规则建议版本号,读取最新标签计算下一版本,由用户确认或覆盖。
  6. 写入输出:Release Notes 写入 RELEASE_NOTES.md(覆盖原内容);Changelog 将新版本条目前置到 CHANGELOG.md,若文件不存在则创建并保留原有条目。输出模板参见 references/formats.md。
  7. 汇总:显示使用的版本号、处理的提交数量、按类别统计(如“3 features, 2 bug fixes, 1 breaking change”)以及写入的文件。

适用场景

  • 需要规范化版本发布记录的开发团队
  • 使用 Conventional Commits 规范提交信息的项目
  • 需要自动生成发布说明或维护变更日志的场景
  • 支持 monorepo 场景,当 scope 对应包/模块时,可按 scope 作为顶层章节分组

限制

  • 依赖符合 Conventional Commits 规范的提交信息;若未找到可解析的提交,会警告用户并提供列出原始提交信息的选项
  • 混合规范与非规范提交时,非规范提交归入 Other Changes
  • 若指定范围无提交,会提示用户检查范围
  • 输出格式模板和示例需参考 references/formats.md
  • 解析脚本位于 scripts/parse-commits.sh,接受可选范围参数,处理规范提交解析、scope 提取、破坏性变更检测和 footer 解析