关于 bump-release
Bump Release 是用于单包仓库和 workspace monorepo 的版本发布技能,支持稳定版与 beta 版规划,并处理变更日志、依赖顺序、提交和标签。
主要功能
- 01单包与 monorepo 发布
- 02稳定版和 beta 版规划
- 03变更日志生成与校验
- 04依赖范围和顺序检查
- 05只读发布预览
- 06逐包提交和注释标签
适用场景
- 01在不改文件的情况下预览发布计划
- 02发布 workspace 中选定的包
- 03将预发布版本提升为稳定版
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulrberg/ agent-skills --skill bump-release安装后在 Claude Code 中输入/bump-release确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/common-changelog.mdscripts/finalize-release-plan.pyplan-release.mjstest_release_helpers.pyvalidate-changelog.py详细介绍
提升版本
如果这些说明已通过斜杠或美元符号调用出现在对话中,请直接遵循; 不要再次通过技能工具调用此技能。
为一个或多个软件包发布新版本,包括版本升级、变更日志条目、提交和标签。支持 单软件包仓库、工作区多包仓库、稳定版、Beta 版和试运行。
参数
packages:可选的软件包名称或目录。在单软件包仓库中可省略。version:可选的显式 semver。仅对用户选择的一个软件包有效。--beta:创建或推进-beta.X预发布版本。--dry-run:预览,不修改文件、不提交、不打标签。
辅助工具接口
从此 SKILL.md 解析 <skill-dir>。辅助工具的标准输出保持为 JSON,诊断信息输出到标准错误。
node "<skill-dir>/scripts/plan-release.mjs" \
[--cwd <repo>] [--beta] [--dry-run] [--version <semver>] \
[--package <name-or-dir>]...
只读发现输出的 schemaVersion: 2。它会报告软件包标识、每个软件包的完整 changedFiles、工作区边、声明的范围、先前标签的事实、选定目标以及工作区状态。changeHints 是基于文件名的导航提示,不具有权威性。切勿用它们判断发布相关性或决定是否纳入变更日志。
Agent 决定每个稳定版的补丁/次要/主要版本后,将发现 JSON 写入临时文件并运行:
uv run "<skill-dir>/scripts/finalize-release-plan.py" \
--discovery <discovery.json> \
[--version <package>=<semver>]...
最终处理器会执行 Beta 版和显式版本转换、稳定版预发布版本升级、npm 范围满足性检查、简单依赖范围建议以及依赖排序。它会将复杂范围、对等依赖范围、依赖循环,以及未由 Agent 提供稳定版本的软件包报告为未解决的决策。如果未满足的依赖边新增了依赖方,请选择该软件包的发布版本,并使用另一个 --version 赋值重新运行。最终处理器不会决定常规发布的版本幅度或依赖策略。
对于每个写入的稳定版变更日志,请验证其确定性结构:
uv run "<skill-dir>/scripts/validate-changelog.py" \
--file <CHANGELOG.md> --version <semver> --date <YYYY-MM-DD> [--tag <tag>]
此检查会验证预期版本和日期、标题/类别顺序、允许的类别、列表结构以及发布链接标签。它不会评判重要性、措辞或语义类别。
工作流
-
直接将用户参数映射到发现操作并运行。退出码
2表示目标不是可发布的 Git/软件包仓库;退出码64表示输入无效。出现任一情况时停止。 -
要求
workingTree.clean。不要纳入无关工作。 -
解决未知或有歧义的软件包选择。用户明确指定版本时,仍只处理单个软件包。
-
检查每个目标的完整
changedFiles,以及与上一个标签之间的净差异。判断保留下来的更改是否值得发布。根据具体情况,运行环境、重构、文档、测试和工具都可能相关;不能仅凭文件名作出判断。 -
对于每个未明确指定版本的相关稳定版目标,根据面向使用者的更改选择补丁、次要或主要版本。对于 beta 版,让最终处理程序计算机械式版本转换。
-
运行最终处理程序。检查尚未满足的工作区依赖边。只有在策略适用时,才接受它对简单依赖范围的建议;对 peer 和复杂范围策略要明确选择。添加依赖方及其 Agent 选择的发布版本,然后重新运行,直到软件包集合和依赖顺序都已确定。
-
对于试运行,报告有序的软件包/版本计划、范围修改、变更日志/标签/提交操作,以及由 Agent 决定的跳过项。停止,不写入任何更改。
-
对于稳定版发布,阅读
references/common-changelog.md,并根据限定范围内的净差异撰写面向使用者的条目。条目的选择、措辞、重要性和类别由 Agent 决定。Beta 版发布不更新变更日志。 -
更新清单和已接受的依赖范围。使用辅助程序验证每个稳定版变更日志。
-
使用仓库中最窄范围的既定命令格式化一次。
-
按依赖方先于被依赖方的顺序提交并打标签。每个软件包使用一个提交和一个附注标签:
- 单软件包提交:
docs: release <version>; - 单体仓库提交:
docs: release <package> <version>; - 单软件包标签:遵循已观察到的
v<version>或纯语义版本事实; - 单体仓库标签:遵循已观察到的软件包标签事实,默认使用
<package-dir>@<version>。
- 单软件包提交:
-
不要推送。成功后,建议使用准确的
git push origin <tag>...命令,其中仅包含本次执行创建的标签;不要使用--tags。 -
在最终报告前,检查
.github/workflows/,确认是否有会从已推送标签创建或发布 GitHub 版本的活动工作流。像release.yml这样的文件名只是线索,并非证据。使用$cli-gh只读检查仓库是否有持续维护 GitHub 版本的既有记录。如果有,则根据以下规则,提出为每个新标签创建 GitHub 版本,并等待用户批准:- 一个标签且存在发布 CI:不要提出手动创建版本;推送标签应触发 CI。
- 一个标签且不存在发布 CI:提出使用
$cli-gh创建版本。 - 将同时推送多个标签:即使存在发布 CI,也提出使用
$cli-gh为每个标签创建一个版本,因为预计多标签推送无法可靠地触发该自动化。
未经用户批准,绝不要创建 GitHub 版本。如果无法核实版本发布记录,请说明情况未知,并且不要提出写入操作。
安全与完成条件
辅助函数失败表示输入格式错误、违反不变量或验证失败;Agent 决策仍未解决是 JSON 中的数据,不属于辅助函数失败。发现和试运行均为只读。在最终稳定的软件包集合确定之前,不要编写变更日志;如果发现阶段报告的是已观察到的事实,也不要据此推断标签约定。
试运行完成需要有基于发现结果、经 Agent 审核的操作预览,且写入次数为零。发布完成需要验证清单和稳定的变更日志、完成格式整理、按依赖顺序为每个软件包各创建一个提交和附注标签,并报告已创建的提交和标签、由 Agent 决定跳过的项目、准确的标签推送命令,以及任何适用的 GitHub 发布提案。
根据情况使用 ### ⛔ Release stopped — working tree is not clean、### ⚠️ Confirm release plan、### 🔎 Release preview — no files, commits, or tags written 或 ### 🏁 Release complete。保持辅助函数 JSON、版本、哈希、标签、命令和变更日志文本原样不变,不添加装饰。