约定提交发布 PR 与变更日志生成器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,将 @user_3c6cb52e/generate-release-prs-and-changelog-updates-from-conventional-commits 安装到 AI 助手。
技能介绍
要解决的具体问题
当团队采用 Conventional Commits 之后,提交历史里其实已经携带了足够的版本语义:fix: 应当触发 patch,feat: 应当触发 minor,BREAKING CHANGE 则应当触发 major。问题在于,这些语义只存在于提交记录里,并不会自己变成版本号、CHANGELOG.md 的段落,或者一个等待人工审核的发布 PR。
手工维护这三样东西很容易漂移:忘记升版本号、changelog 分类口径不一致、把若干无关提交塞进同一个版本。release-please 要处理的正是「从已合并提交到结构化发布物」这一段机械但易错的工作。
核心能力与关键步骤
这个技能把 release-please 包装成 Agent 可以直接调用的发布管理流程,关键步骤大致是:
- 读取已合并进主分支的 Conventional Commits;
- 按提交类型(
fix、feat、BREAKING CHANGE等)推导版本升级幅度,生成新版本号; - 创建结构化的发布 PR,内容包含版本号变更与变更日志更新;
- 更新语言相关的元数据文件,例如 Node.js 仓库的
package.json、Python 仓库的pyproject.toml; - 更新
CHANGELOG.md,把对应提交按类型归入相应版本的段落; - 产物停留在 PR 阶段等待人工审核与合并,而不是自动发布。
需要明确的是,这是一个发布管理工作流,既不是通用的包管理工具,也不是 CI 任务清单。
适用边界与注意点
- 前提是仓库使用 GitHub 且提交遵循 Conventional Commits,否则无法推导出可靠的版本语义。
- 支持的语言/生态有明确的可发布单元(releasable unit)配置:
- node:带有 package.json 与 CHANGELOG.md 的 Node.js 仓库;
- python:带有 pyproject.toml、<project>/__init__.py、CHANGELOG.md,可选 setup.py 或 setup.cfg 的 Python 仓库。
docs前缀在 Java 和 Python 中是可发布单元的前缀。- 部分语言有自己的可发布单元配置,需要按语言分别确认。
- 示例中提到了空提交的情形,说明处理历史时边界情况需要被纳入考虑。
- 最终产出是待审核的发布 PR,是否真正发布仍由人决定。
使用场景
- 主分支已合并一批 fix/feat 提交,需要生成新版本号和 CHANGELOG 段落并提交发布 PR。
- Node.js 仓库发版前,需要同步更新 package.json 版本号与 CHANGELOG.md 内容。
- Python 仓库版本升级时,需要更新 pyproject.toml 并维护 CHANGELOG.md 中的版本段落。
- 历史中出现了 BREAKING CHANGE,需要生成触发 major 版本升级的结构化发布 PR。
适合人员
- 使用 Conventional Commits 的开源仓库维护者,每次发版都要手工整理 changelog 和版本号。
- 负责多语言仓库发布流程的开发者,希望把版本推导交给工具而不是逐条翻提交记录。
- 为 Agent 工作流配置技能的工程师,需要把发版步骤封装成可复用的发布流程。