用途
本技能用于执行 Cyrus CLI 的协调发布流程,覆盖准备、验证、发布与收尾。当用户要求发布 Cyrus、发布 cyrus-ai、运行 CLI 发布或执行类似操作时使用。
前置要求
在执行任何发布操作前,必须完整阅读 apps/cli/RELEASING.md,将其视为权威操作指南;并将 scripts/release-packages.mjs 视为权威的包列表与依赖顺序来源。
注意:编辑发布工作流、脚本、安装器或发布文档并不会触发本发布流程。这类改动应通过针对性检查以及 skills/f1-test-drive/SKILL.md 中的 F1 适用性策略进行验证。
工作流
- 获取 origin/main,从当前 main 开始,并保留无关的本地改动。
- 在分支上准备发布:
- 将两个 changelog 的 Unreleased 条目移入新版本。
- 在 node scripts/release-packages.mjs list 打印的每个 manifest 中设置相同版本。
- 运行 pnpm install,并提交任何 lockfile 变更。
- 使用权威 F1 适用性策略评估自上一版本以来的全部变更内容,包括在版本号提升 PR 之前合并的功能性改动。对于 F1 覆盖的行为变更,运行相关 F1 场景并保存证据,文件名需带 -release-v<version>.md 后缀。否则按 apps/cli/RELEASING.md 记录变更评估与针对性检查作为非 F1 发布验证;不要虚构 F1 报告。
- 在 CHANGELOG.md 中列出每个已发布包的 package@version。
- 运行 node scripts/release-packages.mjs validate <version>,然后运行 apps/cli/RELEASING.md 要求的所有检查。继续前修复失败项。
- 提交、推送、打开发布 PR,并在派发工作流前将其合并到 main。绝不发布未合并的源码或非 main 引用。
- 从 main 以 dry-run 模式派发 .github/workflows/release-cli.yml,并监控至完成。
- 仅当用户明确要求正式发布时,才以 dry_run=false 派发完全相同的版本。监控其完成 npm 发布、git 打标签与 GitHub Release 创建。
- 独立验证 npm 上的版本,并运行已发布 CLI 的 --version 命令。
- 使用 Linear 集成,将该版本 changelog 部分引用的每个 issue 从 MergedUnreleased 移动到 ReleasedMonitoring。
安全要求
- 绝不添加 npm token。发布必须使用 GitHub Actions OIDC。
- 在首次正式工作流运行前,确认每个 npm 包都信任 cyrusagents/cyrus 与 release-cli.yml。
- dry run 不会向 npm 认证,也不能证明注册表写入成功。
- 绝不盲目重跑部分发布的版本。npm 版本不可变;应检查哪些包已发布并谨慎恢复。
- 在每个包都发布之前,不要创建或移动发布标签。标签与 GitHub Release 创建由工作流负责。
适用场景
适用于 Cyrus CLI 的版本发布操作,包括准备 changelog、统一版本号、验证包、通过受信任工作流发布、验证 npm 版本以及更新 Linear issue 状态。
限制
- 必须遵循 apps/cli/RELEASING.md 与 scripts/release-packages.mjs 的权威内容。
- 不得手动发布工作区包。
- 不得添加 npm token。
- 不得发布未合并源码或非 main 引用。
- 不得虚构 F1 报告。
- 正式发布需用户明确请求。
- 关于具体版本号、发布时间、价格或平台支持等未在资料中提供的信息,暂未提供。