リリースチェックリスト(npm + macOS)
リポジトリのpnpm (ノード22+) を使用します。 リポジトリのルートから pnpm(Node 22+)を使用します。タグ付けや公開の前に、作業ツリーがクリーンであることを保ってください。
オペレータートリガー
オペレーターが「release」と言ったら、直ちに次の事前確認を実行します(ブロックされない限り、追加の質問はしないでください)。- このドキュメントと
docs/platforms/mac/release.mdを読む。 ~/.profileから env を読み込み、SPARKLE_PRIVATE_KEY_FILEと App Store Connect の変数が設定されていることを確認します(SPARKLE_PRIVATE_KEY_FILE は~/.profileに配置されている必要があります)。- 必要に応じて
~/Library/CloudStorage/Dropbox/Backup/Sparkleの Sparkle キーを使用します。
- バージョン & メタデータ
-
package.jsonのバージョンを更新します(例:2026.1.29)。 -
pnpm plugins:syncを実行して、拡張パッケージのバージョンと changelog を整合させます。 - CLI / バージョン文字列を更新します:
src/cli/program.tsとsrc/provider-web.tsの Baileys ユーザーエージェント。 - パッケージメタデータ(name、description、repository、keywords、license)を確認し、
binのマップがopenclaw向けにopenclaw.mjsを指していることを確認します。 - 依存関係を変更した場合は、
pnpm installを実行してpnpm-lock.yamlが最新であることを確認します。
- ビルド & 成果物
- A2UI の入力が変更された場合は、
pnpm canvas:a2ui:bundleを実行し、更新されたsrc/canvas-host/a2ui/a2ui.bundle.jsをコミットします。 -
pnpm run build(dist/を再生成します)。 - npm パッケージ
filesに、必要なdist/*フォルダーがすべて含まれていることを確認します(特にヘッドレス node + ACP CLI 用のdist/node-host/**とdist/acp/**)。 -
dist/build-info.jsonが存在し、期待されるcommitハッシュが含まれていることを確認します(CLI バナーは npm インストール時にこれを使用します)。 - 任意: ビルド後に
npm pack --pack-destination /tmpを実行します。tarball の内容を確認し、GitHub リリース用に手元に保持します(コミットしないでください)。
- Changelog & ドキュメント
-
CHANGELOG.mdをユーザー向けのハイライトで更新します(存在しない場合は作成します)。エントリはバージョンの降順を厳守してください。 - README の例やフラグが、現在の CLI の挙動(特に新しいコマンドやオプション)と一致していることを確認します。
- 検証
-
pnpm build -
pnpm check -
pnpm test(カバレッジ出力が必要な場合はpnpm test:coverage) -
pnpm release:check(npm pack の内容を検証します) -
OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke(Docker インストールのスモークテスト、ファストパス。リリース前に必須)- 直前の npm リリースが既知の不具合を含む場合は、事前インストール手順のために
OPENCLAW_INSTALL_SMOKE_PREVIOUS=<last-good-version>またはOPENCLAW_INSTALL_SMOKE_SKIP_PREVIOUS=1を設定します。
- 直前の npm リリースが既知の不具合を含む場合は、事前インストール手順のために
- (任意)フルインストーラーのスモーク(非 root + CLI のカバレッジを追加):
pnpm test:install:smoke - (任意)インストーラー E2E(Docker、
curl -fsSL https://openclaw.ai/install.sh | bashを実行し、オンボーディング後に実際のツール呼び出しを実行):pnpm test:install:e2e:openai(OPENAI_API_KEYが必要)pnpm test:install:e2e:anthropic(ANTHROPIC_API_KEYが必要)pnpm test:install:e2e(両方のキーが必要。両プロバイダーを実行)
- (任意)変更が送受信パスに影響する場合は、Web ゲートウェイをスポットチェックします。
- macOS アプリ(Sparkle)
- macOS アプリをビルドして署名し、配布用に zip 化します。
- Sparkle の appcast を生成(
scripts/make_appcast.shによる HTML ノート)し、appcast.xmlを更新します。 - GitHub リリースに添付できるよう、アプリの zip(および任意の dSYM zip)を用意します。
- 正確なコマンドと必要な env 変数については macOS release に従ってください。
APP_BUILDは数値かつ単調増加である必要があります(-betaは不可)。これにより Sparkle がバージョンを正しく比較します。- 公証する場合は、App Store Connect API の env 変数から作成した
openclaw-notaryのキーチェーンプロファイルを使用します(macOS release を参照)。
- 公開(npm)
- git の状態がクリーンであることを確認し、必要に応じてコミットと push を行います。
- 必要に応じて
npm login(2FA の確認)。 -
npm publish --access public(プレリリースには--tag betaを使用)。 - レジストリを確認します:
npm view openclaw version、npm view openclaw dist-tags、npx -y [email protected] --version(または--help)。
トラブルシューティング(2.0.0-beta2 リリース時のメモ)
- npm pack / publish がハングする、または巨大な tarball を生成する:
dist/OpenClaw.app内の macOS アプリバンドル(およびリリース zip)がパッケージに取り込まれています。package.jsonfilesによって公開内容をホワイトリスト化して修正します(dist サブディレクトリ、docs、skills を含め、アプリバンドルを除外)。npm pack --dry-runでdist/OpenClaw.appが一覧に含まれていないことを確認してください。package.jsonfilesで公開内容をホワイトリストに追加して修正しました(ディストのサブディレクトリ、ドキュメント、スキル、アプリのバンドルを除く)。dist/OpenClaw.appがリストされていないnpm pack --dry-runで確認します。package.jsonfilesで公開内容をホワイトリストに追加して修正しました(ディストのサブディレクトリ、ドキュメント、スキル、アプリのバンドルを除く)。dist/OpenClaw.appがリストされていないnpm pack --dry-runで確認します。 - dist-tags の npm auth web ループ: OTP プロンプトを表示するため、レガシー認証を使用します:
NPM_CONFIG_AUTH_TYPE=legacy npm dist-tag add [email protected] latest
npxの検証がECOMPROMISED: Lock compromisedで失敗する: 新しいキャッシュで再試行します:NPM_CONFIG_CACHE=/tmp/npm-cache-$(date +%s) npx -y [email protected] --version
- 遅れた修正後にタグの付け替えが必要: タグを強制更新して push し、GitHub リリースのアセットが引き続き一致していることを確認します:
git tag -f vX.Y.Z && git push -f origin vX.Y.Z
- GitHub リリース + appcast
- タグ付けして push:
git tag vX.Y.Z && git push origin vX.Y.Z(またはgit push --tags)。 -
vX.Y.Zの GitHub リリースを作成または更新し、タイトルはopenclaw X.Y.Z(タグ名のみは不可)にします。本文には、そのバージョンの 完全な changelog セクション(Highlights + Changes + Fixes)をインラインで含め(リンクのみは不可)、本文内でタイトルを繰り返してはいけません。 - 成果物を添付します:
npm packの tarball(任意)、OpenClaw-X.Y.Z.zip、OpenClaw-X.Y.Z.dSYM.zip(生成している場合)。 - 更新された
appcast.xmlをコミットして push します(Sparkle は main からフィードします)。 - クリーンな一時ディレクトリ(
package.jsonなし)からnpx -y [email protected] send --helpを実行し、インストール / CLI のエントリポイントが動作することを確認します。 - リリースノートを告知 / 共有します。
プラグインの公開スコープ(npm)
既存の npm プラグイン を@openclaw/* スコープにのみ公開します。 公開するのは @openclaw/* スコープ配下の 既存の npm プラグイン のみです。npm に存在しない同梱プラグインは ディスクツリーのみ に留めます(引き続き extensions/** に同梱されます)。 公開するのは @openclaw/* スコープ配下の 既存の npm プラグイン のみです。npm に存在しない同梱プラグインは ディスクツリーのみ に留めます(引き続き extensions/** に同梱されます)。
リストを導出する手順:
npm search @openclaw --jsonを実行し、パッケージ名を取得します。extensions/*/package.jsonの名前と比較します。- 共通部分(すでに npm に存在するもの)のみを公開します。
- @openclaw/bluebubbles
- @openclaw/diagnostics-otel
- @openclaw/discord
- @openclaw/feishu
- @openclaw/lobster
- @openclaw/matrix
- @openclaw/msteams
- @openclaw/nextcloud-talk
- @openclaw/nostr
- @openclaw/voice-call
- @openclaw/zalo
- @openclaw/zalouser
tlon)についても必ず言及してください。