用途:根据最近一次版本发布以来的提交,更新项目 CHANGELOG.md 中面向用户的变更记录,适用于用户要求“更新 changelog”“添加 changelog 条目”“上次发布以来有哪些变化”等场景。
主要能力与规则:
- 定位基线:读取 CHANGELOG.md,找到最近的带版本号的发布标题(如 ## [0.5.1] - 2026-02-27),提取版本标签(如 v0.5.1)。
- 收集提交:使用 git log --oneline <tag>..HEAD 获取基线与 HEAD 之间的提交;若该标签不是 git tag,则回退到查找包含版本字符串的提交消息(如 chore(release): 0.5.1)并使用该提交哈希。
- 分类提交:逐条阅读差异(git show --stat <hash> 及 git show <hash>),将提交分为用户可见变更(命令、功能、API、配置、工作流行为或影响用户交互的文档)与仅内部变更(CI 配置、仅测试改动、无行为变化的重构、仅 changelog 更新、发布记录)。跳过仅内部变更,以及已存在于 [Unreleased] 区段的提交。
- 撰写条目:按 Keep a Changelog 分类(Added、Changed、Deprecated、Removed、Fixed、Security)组织,仅包含有条目的分类,写入 ## [Unreleased] 标题下,并保留仍然准确的既有未发布条目。每条条目应是简洁、面向用户的变更说明及其影响,而非复述提交消息。
- 报告:若无用户可见变更可添加,则说明并不修改文件;若有新增,则向用户展示写入 [Unreleased] 区段的内容。
适用场景:维护项目变更日志、在发布前整理用户可见更新、检查自上次发布以来的用户相关变化。
限制:仅处理用户可见变更,不处理内部重构、CI、测试和发布记录;不会重复添加 [Unreleased] 中已存在的条目;资料未提供具体安装方式、运行环境或配置要求。