“OpenClaw 发布维护者技能专为管理 OpenClaw 项目的端到端发布流程而设计。它详细规定了版本号管理、发布渠道(stable、beta、dev)的命名规范,以及如何在多个位置(如 package.json、Android/iOS/macOS 配置文件)一致地更新版本。技能涵盖了从预发布检查、构建验证到最终发布(包括 npm 包和 macOS 应用)的完整步骤,强调遵守发布护栏、基于变更日志生成用户友好的发布说明,并确保发布后的安装与升级路径验证。适用于需要严格、可重复且跨平台发布流程的软件维护者和 DevOps 工程师。”

OpenClaw 发布维护者
将此技能用于发布和发布时的工作流程。将普通的开发变更和 GHSA 特定的安全通告工作排除在此技能之外。
遵守发布护栏
未经操作员明确批准,不得更改版本号。 在任何 npm 发布或发布步骤之前请求许可。 此技能应足以端到端地驱动正常的发布流程。 使用私有的维护者发布文档获取凭据、恢复步骤以及 Mac 签名/公证的具体细节,并使用 docs/reference/RELEASING.md了解公共政策。核心 openclaw发布是手动workflow_dispatch;创建或推送标签本身不会触发发布。
保持发布渠道命名一致
stable: 仅限带标签的发布,使用 npm dist-tag latestbeta: 预发布标签,如 vYYYY.M.D-beta.N,使用 npm dist-tagbeta优先使用 -beta.N;不要创建新的-1或-2beta 后缀dev: main分支上的移动头部使用 beta Git 标签时,发布 npm 包需使用匹配的 beta 版本后缀,以免消耗或阻塞普通版本号
一致地处理版本和发布文件
版本位置包括: package.jsonapps/android/app/build.gradle.ktsapps/ios/Sources/Info.plistapps/ios/Tests/Info.plistapps/macos/Sources/OpenClaw/Resources/Info.plistdocs/install/updating.mdPeekaboo Xcode 项目和 plist 版本字段 在创建发布标签之前,确保上述所有版本位置与该标签编码的版本号匹配。 对于像 vYYYY.M.D-N这样的回退修正标签,仓库中的版本位置仍保持在YYYY.M.D。“在所有地方更新版本”指的是上述除 appcast.xml外的所有版本位置。发布签名和公证凭据存放在仓库外的私有维护者文档中。 每个 OpenClaw 发布都同时包含 npm 包和 macOS 应用。 生产环境的 Sparkle 订阅源位于 https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml,规范的发布文件是openclaw仓库main分支上的appcast.xml。该共享的生产环境 Sparkle 订阅源仅用于稳定版。Beta 版 Mac 发布可以将资源上传到 GitHub 预发布,但除非存在单独的 beta 订阅源,否则不得替换共享的 appcast.xml。对于像 vYYYY.M.D-N这样的回退修正标签,仓库版本仍保持在YYYY.M.D,但 Mac 发布必须使用严格更高的数字APP_BUILD/ Sparkle 构建号,以便现有安装将其视为更新版本。
构建基于变更日志的发布说明
变更日志条目应面向用户,而非内部发布过程说明。 当使用 beta GitHub 预发布版进行 Mac 发布时: 从发布提交创建标签 vYYYY.M.D-beta.N创建标题为 openclaw YYYY.M.D-beta.N的预发布使用匹配的 CHANGELOG.md版本部分的发布说明至少附加 zip 和 dSYM zip 文件,如果可用则附加 dmg 文件 保持 CHANGELOG.md中顶部版本条目按影响排序:首先是 ### Changes### Fixes去重,面向用户的修复优先
运行发布时验证
在打标签或发布之前,运行:
node --import tsx scripts/release-check.tspnpm release:checkpnpm test:install:smoke对于非 root 的冒烟测试路径:
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke在 npm 发布之后,运行:
node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>这会在一个新的临时前缀中验证已发布的注册表安装路径。 对于像 YYYY.M.D-N这样的稳定版修正发布,它还会验证从YYYY.M.D到YYYY.M.D-N的升级路径,以确保修正发布不会悄无声息地让现有的全局安装停留在旧的稳定版有效负载上。
检查所有相关的发布构建
pnpm checkpnpm buildnode --import tsx scripts/release-check.tspnpm release:checkOPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke
检查发布所涉及的所有相关构建表面,而不仅仅是 npm 包。 在预检中包括 Mac 发布就绪性检查,为每次发布在 openclaw/openclaw中运行公共验证工作流,并在openclaw/releases-private中运行真实的 Mac 预检。将 main分支上的appcast.xml更新视为 Mac 发布就绪性的一部分,而不是可选的后续步骤。工作流仍基于标签。代理负责确保在任何发布运行开始之前,预检运行成功完成。 预检后的任何修复都意味着需要新的提交。从修复后的提交中删除并重新创建标签和匹配的 GitHub 发布,然后在发布前从头开始重新运行预检。 对于稳定的 Mac 发布,在上传公共发布资源之前生成签名的 appcast.xml,以便更新器订阅源不会落后于已发布的二进制文件。跨标签序列化生成稳定版 appcast 的运行,以防止两个发布从同一个过时的种子生成替换的 appcast.xml文件。对于稳定版发布,在发布稳定版之前,确认最新的 beta 版已经通过了更广泛的发布工作流。 如果任何必需的构建、打包步骤或发布工作流失败,不要声称发布已就绪。
使用正确的认证流程
OpenClaw 发布使用 GitHub 可信发布。 发布运行必须通过 workflow_dispatch手动启动。npm 工作流和私有的 Mac 发布工作流接受 preflight_only=true参数,以运行验证/构建/打包步骤而不上传公共发布资源。私有的 Mac 工作流还接受 smoke_test_only=true参数,用于分支安全的工作流冒烟测试,该测试使用临时签名,跳过公证,跳过共享 appcast 生成,并且不证明发布就绪性。在 npm 工作流上使用 preflight_only=true也是在发布后验证现有标签的正确方法;即使 npm 版本已经发布,它也应继续运行构建检查。仅验证的运行可以从分支分派,当你在合并前测试工作流变更时。 openclaw/openclaw中的 .github/workflows/macos-release.yml现在是一个仅用于公共验证的交接点。它验证标签/发布状态,并指引操作员到私有仓库;它不构建或发布 macOS 工件。真实的 Mac 预检和真实的 Mac 发布都使用 openclaw/releases-private/.github/workflows/openclaw-macos-publish.yml。私有的 Mac 工作流在 GitHub 的 xlarge macOS 运行器上运行,并使用 SwiftPM 缓存,因为 Swift 构建/测试/打包路径对 CPU 要求很高。 私有的 Mac 预检将公证后的构建工件作为工作流工件上传,而不是上传到公共的 GitHub 发布资源。 私有的冒烟测试运行上传临时的、未经公证的构建工件作为工作流工件,并有意跳过稳定的 appcast.xml生成。npm 预检、公共 Mac 验证和私有 Mac 预检都必须在任何真实的发布运行开始之前通过。 真实的发布运行必须从 main分支分派;从分支分派的发布尝试应在到达受保护环境之前失败。发布工作流保持基于标签;依赖文档化的发布顺序,而不是工作流级别的 SHA 固定。 npm-release环境必须在发布继续之前获得 @openclaw/openclaw-release-managers的批准。Mac 发布使用 openclaw/releases-private/.github/workflows/openclaw-macos-publish.yml进行构建、签名、公证、打包的 Mac 工件生成以及稳定订阅源appcast.xml工件的生成。当私有仓库的 mac-release环境中存在OPENCLAW_PUBLIC_REPO_RELEASE_TOKEN时,真实的私有 Mac 发布会自动将打包的.zip、.dmg和.dSYM.zip资源上传到openclaw/openclaw中现有的 GitHub 发布。对于稳定版发布,代理还必须从成功的私有 Mac 工作流中下载签名的 macos-appcast-<tag>工件,然后更新main分支上的appcast.xml。对于 beta 版 Mac 发布,除非存在单独的 beta Sparkle 订阅源,否则不要更新共享的生产环境 appcast.xml。私有仓库针对一个专用的 mac-release环境。如果 GitHub 计划尚未支持该环境所需的审查者,不要假设仅凭环境就是批准边界;在这些设置启用之前,依赖私有仓库访问和 CODEOWNERS。不要为 OpenClaw 发布使用 NPM_TOKEN或插件 OTP 流程。@openclaw/*插件发布使用单独的仅维护者流程。 仅发布已存在于 npm 上的插件;仅捆绑在磁盘树中的插件保持未发布状态。
回退的本地 Mac 发布
保持原始的本地 macOS 发布工作流作为回退方案,以防 CI/CD Mac 发布不可用或损坏。 保留 Peter 使用的现有维护者工作流程:在真实的 Mac 上运行,该 Mac 已配置好本地签名、公证和 Sparkle 凭据。 遵循私有维护者 macOS 操作手册中的本地步骤:运行 scripts/package-mac-dist.sh来构建、签名、公证和打包应用;手动上传 GitHub 发布资源;然后运行scripts/make_appcast.sh并将appcast.xml提交到main分支。对于发布构建,如果捆绑的应用输出时带有调试包标识符、空的 Sparkle 订阅源 URL,或者 CFBundleVersion低于该短版本的规范 Sparkle 构建下限,scripts/package-mac-dist.sh现在会失败关闭。对于修正标签,请设置更高的显式APP_BUILD。scripts/make_appcast.sh首先使用 PATH中的generate_appcast,然后回退到apps/macos/.build下的 SwiftPM Sparkle 工具输出。对于稳定版标签,本地回退可以更新共享的生产环境 appcast.xml。对于 beta 版标签,本地回退仍然发布 Mac 资源,但除非存在单独的 beta 订阅源,否则不得更新共享的生产环境 appcast.xml。将本地工作流仅视为回退方案。当 CI/CD 发布工作流正常工作时,优先使用它。 在任何稳定的 Mac 发布之后,在宣布发布完成之前,请验证以下所有内容: GitHub 发布包含 .zip、.dmg和.dSYM.zip资源main分支上的 appcast.xml指向新的稳定版 zip 文件打包的应用报告预期的短版本号,并且数字 CFBundleVersion等于或高于规范的 Sparkle 构建下限
运行发布序列
确认操作员明确希望进行发布。 选择确切的目标版本和 git 标签。 在创建标签之前,使仓库中的每个版本位置都与之匹配。 更新 CHANGELOG.md并组装匹配的 GitHub 发布说明。为所有相关的发布构建运行完整的预检,包括 Mac 就绪性检查。 确认目标 npm 版本尚未发布。 创建并推送 git 标签。 创建或刷新匹配的 GitHub 发布。 使用 preflight_only=true启动.github/workflows/openclaw-npm-release.yml并等待其通过。在 openclaw/openclaw中启动.github/workflows/macos-release.yml并等待仅公共验证的运行通过。使用 preflight_only=true启动openclaw/releases-private/.github/workflows/openclaw-macos-publish.yml并等待其通过。如果任何预检或验证运行失败,在新的提交上修复问题,删除标签和匹配的 GitHub 发布,从修复后的提交重新创建它们,并在继续之前从头开始重新运行所有相关的预检。提交更改后,切勿重用旧的预检结果。 使用相同的标签启动 .github/workflows/openclaw-npm-release.yml进行真实的发布。等待 @openclaw/openclaw-release-managers批准npm-release。启动 openclaw/releases-private/.github/workflows/openclaw-macos-publish.yml进行真实的发布并等待成功。验证成功的真实私有 Mac 运行已将 .zip、.dmg和.dSYM.zip工件上传到openclaw/openclaw中现有的 GitHub 发布。对于稳定版发布,从成功的私有 Mac 运行中下载 macos-appcast-<tag>,更新main分支上的appcast.xml,并验证订阅源。对于 beta 版发布,发布 Mac 资源,但不要期望有共享的生产环境 appcast.xml工件,并且除非存在单独的 beta 订阅源,否则不要更新共享的生产环境订阅源。发布后,验证 npm 和附加的发布资源。
GHSA 安全通告工作
使用 openclaw-ghsa-maintainer进行 GHSA 通告检查、补丁/发布流程、私有分支验证以及 GHSA API 特定的发布检查。
安装命令
npx skills add https://github.com/steipete/clawdis --skill openclaw-release-maintainer仓库
https://github.com/steipete/clawdis
GitHub 星标数
33.6万
首次出现
7 天前
安全审计
Gen Agent Trust HubPass SocketPass SnykWarn
安装于
opencode26
gemini-cli26
github-copilot26
codex26
amp26
cline26
更多技能>>>
find-skills 技能搜索工具 - 让AI更智能的skill
Skills之前端设计技能:告别通用AI UI,打造独特、生产级、令人难忘的界面
Skills之Tailwind CSS v4 开发技能:GitHub Stars 5.3万,安装10万+
Skills之FastAPI官方技能:Python Web开发最佳实践与CLI工具使用指南
Skills之Java 21+ 专家技能:虚拟线程、Spring Boot 3.x、JVM优化与云原生开发指南

夜雨聆风