用途
re0-release 用于把「准备并发布一个版本」变成一条有意识的单一命令,而不是每次手工重新推导发布与上线清单。它由用户主动调用,针对一个待提交的改动走完仓库的发布清单,并在确认后打标签、推送。
主要能力
- 对照待提交的 diff 确认发布就绪状态,覆盖 AGENTS.md 的 Shipping 清单中除版本号变更和 sip 运行之外的每一项。
- 检查新增或修改的 SKILL.md 形态是否正确(frontmatter 的 name+description、仅在用户主动调用时使用 disable-model-invocation、正文包含 Goal/Workflow/Rules/Verification 等章节)。
- 检查 README 及 docs/readme/ 下各本地化副本是否准确列出该技能,调用列与名册逻辑顺序是否正确,并与 plugin.json、scripts/catalog.cjs 及 re0-upgrade 的目录保持同步。
- 检查 plugin.json 是否注册其路径;重命名是否在 re0-upgrade 的弃用清单中按发布顺序追加 old -> new 行;跨技能共享规则(edit-safety、negatives-as-corpus、commit-economy)在各副本中是否保持一致。
- 对版本号变更进行分类:新技能为 minor;修复或纯文档改动为 patch;无替代路径地移除技能为 major。对现有技能的增强这一边界情况,按性质而非规模判断,并说明理由。
- 在已安装时运行 sip 并应用其发现;未安装时按顺序直接执行其检查:cold-read(shower)、仅在存在声明或评估时做 truth checks(factchk/mandela)、一致性检查(先 ssotize audit,批准后才 consolidation)、最后 tidy(re0)。
- 将 package.json 的版本更新为分类结果。
- 按 commit-economy 起草提交信息:每个真实且持久的改动一条要点,支撑性编辑并入其中,不写 diff 或版本已能证明的内容,不加 co-author 标签,匹配本地日志的形态。
- 在获得明确确认后提交。
- 写入 .re0/release/RELEASE_NOTES.local.md,这是一个被 gitignore、永不随包发布的本地草稿文件,作为签名标签的消息。
- 在第二次单独确认后执行打标签与推送:git tag -s vX.Y.Z -F .re0/release/RELEASE_NOTES.local.md --cleanup=verbatim,推送 main 与标签。
- 观察触发的发布工作流直至完成,报告成功或真实失败。
- 关闭该版本落地的每个外部贡献:由审阅者在关闭前批准 PR,关闭评论带上发布说明给出的署名。
- 归档已发布的迭代周期:将 .re0/iteration/<version>-<workname>/ 文件夹移动到 .re0/iteration/completed/<version>-<workname>/,不重命名,使用普通文件系统移动(mv)而非 git mv。
使用方式
由用户主动调用,针对一个待提交的改动运行。流程中把「提交」和「打标签 + 推送」视为两个分别确认的时刻:提交保持本地且可回退,打标签 + 推送是唯一对外公开的步骤。提交前需要一次明确确认,打标签与推送前需要第二次单独确认。
适用场景
适用于需要按仓库既定发布清单走完上线流程、并希望把发布说明、版本分类、提交信息与迭代归档统一处理的仓库维护场景。
限制
- 不发明或假设 CLI 命令或标志,写入将执行的步骤前须对照官方文档或真实运行验证。
- 推送是全部手工步骤;绝不手工运行发布工作流负责的步骤(发布、命名发布页、移动标签),尤其不得用于挽救失败的运行。
- 若待提交的 diff 混合了不相关的关注点,应先说明并提出拆分,再起草信息。
- 本地版本匹配成立前绝不推送(package.json 等于即将创建的标签)。
- negatives-as-corpus:归档只移动迭代文件夹,绝不删除;若发布失败或回滚,保持文件夹为活动状态。
- 若提交已存在且需要清理,请人工运行 re0-git,不自动调用。
- 仅当迭代周期从未用 re0-plan 规划且没有匹配的迭代文件夹时,才跳过归档步骤。
验证
完成前需确认:package.json 版本与标签匹配;提交信息脱离 diff 也能作为干净的交接;发布说明符合内部风格且只提及本次发布应得的内容;推送标签触发的工作流运行已成功完成(经确认而非假设);未手工运行任何工作流负责的步骤;每个外部贡献的 PR 在关闭前已获批准并附署名评论;已发布周期的迭代文件夹已归档到 .re0/iteration/completed/,或因不存在而正确跳过。报告任何跳过的步骤或未解决的缺口。