用途:Release Bumper 用于发布一个或多个软件包,完成版本号提升、变更日志条目、提交和标签。非 dry-run 调用即授权仓库内的版本编辑、变更日志、提交和附注标签;仅在包选择或依赖范围策略未决时才询问。
主要能力:通过 plan-release.ts 做只读发现(schemaVersion 2),报告包身份、每个包的 changedFiles、工作区依赖边与声明范围、上一标签事实、选中目标和工作树状态;changeHints 仅为基于文件名的非权威导航提示,不能据此判断发布相关性或变更日志收录。finalize-release-plan.py 执行 beta 与显式版本转换、稳定预发布提升、npm 范围满足、简单依赖范围建议和依赖排序,并报告复杂范围、peer 范围、依赖环及未提供的稳定版本为未决项。validate-changelog.py 校验稳定变更日志的结构(版本、日期、标题/类别顺序、允许类别、列表结构、发布链接标签),不判断重要性、措辞或语义类别。
使用方式:运行 bun run "<skill-dir>/scripts/plan-release.ts" [--cwd <repo>] [--beta] [--dry-run] [--version <semver>] [--package <name-or-dir>]...;将发现 JSON 写入临时文件后运行 uv run "<skill-dir>/scripts/finalize-release-plan.py" --discovery <discovery.json> [--version <package>=<semver>]...;用 uv run "<skill-dir>/scripts/validate-changelog.py" --file <CHANGELOG.md> --version <semver> --date <YYYY-MM-DD> [--tag <tag>] 校验。参数:packages 可选,单包仓库可省略;version 仅对单个用户选定包有效;--beta 创建或推进 -beta.X 预发布;--dry-run 仅预览。
流程要点:要求工作树干净;解析未知或歧义包选择;检查每个目标的完整 changedFiles 与相对上一标签的净差异,由代理决定 patch/minor/major;beta 由 finalizer 计算机械转换;按依赖顺序先提交和打标签依赖再打依赖者,每包一次提交和一个附注标签;不推送,成功后建议仅含本次创建标签的精确 git push origin <tag>... 命令,不使用 --tags。
限制:退出码 2 表示目标不是可发布的 Git/包仓库,64 表示输入无效,均需停止。不运行 npm publish、npm stage approve 或 npm stage reject。GitHub Release 创建需用户批准;1 至 3 个标签且存在适用发布 CI 时不提议手动创建;无适用 CI 时提议用 gh release create;超过 3 个标签同时推送时即使有 CI 也提议手动创建。若无法核实发布历史,报告为未知且不提议写入。推送标签可能触发 npm 发布,staged 发布需维护者用 2FA 批准。