Communityコーディング&開発github.com

release-openclaw-nightly

OpenClaw Tideclaw アルファ/ナイトリリース自動化:隔離ブランチ、ローカル修正、リリースCI、ブランチ保持、mainへのフォワードポート

release-openclaw-nightly とは?

このスキルは、Tideclaw/OpenClaw プロジェクトのアルファ/ナイトリリースを自動化するためのものです。主な機能として、隔離されたブランチでリリース作業を行い、mainブランチの一時的な障害に影響されずに安定したナイトリビルドを提供します。リリース後は、必要な修正のみをmainにフォワードポートするプルリクエストを作成し、バージョン更新や変更ログなどのリリース専用の変更は除外します。また、Discord経由での手動トリガー(アルファ、ベータ)にも対応し、ベータリリースは人間の承認を必要とします。CIの成功を確認した後にのみ公開し、ブランチは3日間保持されます。

対応~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/release-openclaw-nightly

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ナイトリリース

Tideclaw/OpenClaw アルファ/ナイトリリースの自動化、手動アルファトリガー、ベータ準備、リリースブランチ修復、リリース後のフォワードポートに使用します。Tideclaw ホストパス、cron ID、Discord ルーティング ID を使用する前に、$release-private が存在する場合は読み込んでください。

ポリシー

  • アルファ/ナイトは12時間ごと、または手動トリガーで実行されます。
  • ベータは、実績のあるアルファ/リリースブランチから、人間がDiscordでトリガーします。
  • 安定版/最新版は常に明示的な人間の確認が必要です。
  • ダーティチェックアウトや main から直接公開しないでください。
  • Main はビジーまたは壊れている可能性があります。アルファ作業は隔離する必要があり、main の一時的な障害が利用可能なナイトをブロックしないようにします。
  • リリースブランチの証明が成功してからのみ公開してください。
  • アルファが成功したら、リリースブランチのコミットを main にフォワードポートし、main のCIが成功することを確認します。
  • フォワードポートPRには、ナイト/リリースチェックを通過させるために必要な再利用可能な修正のみを含めます。アルファバージョンのバンプ、リリースノート、変更履歴のリリースエントリ、タグ、生成されたアーティファクト、状態ファイルの更新を含めてはいけません。
  • 過去3日間のアルファ/ナイトブランチと、実行中のアクティブなRun、オープンPR、リリースタグのあるブランチのみを保持します。
  • 広範なenv/トークンダンプを実行しないでください。Tideclaw ホストでのGitHub書き込みには、以下の Tideclaw gh 書き込みラッパーを使用してください。

アイデンティティ

Tideclaw は、リリースブランチとフォワードポートブランチで、自身のマシンアイデンティティでコミットする必要があります。

git config user.name "Tideclaw"
git config user.email "[email protected]"

コミットが明らかに機械作成であり、CIによってゲートされている場合、これは監査性に優れています。保護された main への直接プッシュは避け、PR/自動マージを介してフォワードポートします。ただし、リポジトリポリシーが、グリーンチェック後にボットがプッシュすることを明示的に許可している場合を除きます。人間がパッチまたは明示的なコミットテキストを提供した場合にのみ、人間の Co-authored-by を含めます。

ブランチ形状

  • ブランチプレフィックス: tideclaw/alpha/
  • ブランチ名: tideclaw/alpha/YYYY-MM-DD-HHMMZ
  • ベース: トリガー時の現在の origin/main SHA。
  • 状態ファイル: Tideclaw ホスト上の $release-private から解決します。
  • リリースタグ: vYYYY.M.PATCH-alpha.N
  • npm dist-tag: alpha

PATCH は連続した月次リリーストレイン番号であり、カレンダーの日付ではありません。安定版とベータリリースからアルファトレインを決定します。次のトレインを選択するときは、アルファのみのパッチ番号を無視します。その月の最も高い安定版/ベータパッチより1大きい値を使用し、そのトレインでナイトを繰り返す場合は alpha.N のみをインクリメントします。次のパッチにベータが存在する場合は、アルファを次のトレインに移動します。パッチ番号が膨らんだ従来のアルファのみのタグは、ベータ/安定版の番号を進めません。

新しいRunのために古いアルファブランチを再利用しないでください。同じベースSHAを再実行する場合は、新しいタイムスタンプ付きブランチを作成し、その理由を記録してください。

開始

  1. $release-private から Tideclaw ホストチェックアウトで作業します。
  2. 最初にフェッチします。
git fetch origin main --tags --prune
git switch main
git merge --ff-only origin/main
BASE_SHA="$(git rev-parse origin/main)"
BRANCH="tideclaw/alpha/$(date -u +%Y-%m-%d-%H%MZ)"
git switch -c "$BRANCH" "$BASE_SHA"
  1. 何かを変更する前に、リポジトリのリリースドキュメント/スクリプトを読んでください。
    • AGENTS.md
    • docs/ の下のリリースドキュメント
    • scripts/ の下のリリーススクリプト
    • .github/workflows/*release*
  2. $BASE_SHA を最後に成功したアルファ状態および現在の git/npm/GitHub アルファタグと比較します。すでにリリースされている場合は、スキップを報告し、公開しないでください。

手動トリガー:

CRON_ID="<from release-private>"
OPENCLAW_ALLOW_ROOT=1 openclaw cron run "$CRON_ID" --expect-final --timeout 21600000

Discord アルファトリガー

Tideclaw は、メンテナーが #releases または #maintainers で Tideclaw に言及した場合、Discord からすぐにアルファを実行できます。

受け入れられる形状:

@Tideclaw run alpha now
@Tideclaw alpha release from main now
@Tideclaw trigger alpha

ルール:

  1. これをアルファcronジョブと同等の手動アルファトリガーとして扱います。
  2. 現在の origin/main から開始し、新しい tideclaw/alpha/YYYY-MM-DD-HHMMZ ブランチを作成します。
  3. 通常のアルファワークフローに従います:以前の修正を再利用し、ローカルチェックを実行し、アルファブランチで修正し、リリースCIを実行し、グリーンゲート後にアルファを公開し、修正のみのPRを介して再利用可能な修正をフォワードポートします。
  4. 別のアルファ/ベータ/安定版リリースRunがすでにアクティブな場合は、アクティブなブランチ/Runを報告して停止します。
  5. #maintainers トリガーには明示的なTideclawの言及が必要です。そこでのリリースに関する言及のないチャットには反応しないでください。
  6. Discordのロール/ユーザーIDとライブホットフィックスノートは $release-private から解決します。

Discord ベータトリガー

Tideclaw は、メンテナーが明示的なベータトリガーを送信した場合にのみ、#releases または言及された #maintainers コマンドからベータリリースを実行できます。これは、ベータに対する人間の承認として扱い、安定版/最新版に対しては扱いません。

受け入れられる形状:

@Tideclaw beta release from vYYYY.M.PATCH-alpha.N
@Tideclaw beta release from tideclaw/alpha/YYYY-MM-DD-HHMMZ
@Tideclaw beta release from latest proven alpha

ルール:

  1. beta release という単語と、ソースアルファタグ/ブランチ、または latest proven alpha が必要です。
  2. ソースが不明な場合は、#releases で1つ明確な質問をして停止します。
  3. 最初にソースアルファを確認します:GitHubリリース、npm alpha パッケージ、リリースCI、記録された状態ファイル、ブランチ/タグSHA。
  4. 実績のあるアルファソースから新しいベータブランチ tideclaw/beta/YYYY-MM-DD-HHMMZ を作成します。移動する main から直接作成しないでください。
  5. すでにアルファで実績のある安定化修正のみを再利用/スカッシュします。ベータリリースドキュメントで特に要求されていない限り、無関係なアルファリリースメカニズムをインポートしないでください。
  6. ベータを vYYYY.M.PATCH-beta.N として計算し、npm --tag beta に一致させます。ベータトレインを選択するときは、アルファのみのパッチ番号を無視します。
  7. ベータリリース検証/事前チェック/フルリリースCIを実行し、ベータブランチで失敗を修正します。
  8. ベータゲートが成功した場合のみベータを公開します。GitHub Actions/OIDC を使用し、ホストから直接 npm 公開しないでください。
  9. 最終的なDiscordサマリーには、ソースアルファ、ベータタグ/バージョン、ブランチ、修正コミット、ワークフローRun ID、npm/GitHub の証明、およびスキップ/ブロックされた理由を含める必要があります。
  10. ベータ公開後、以下の修正のみのPRルールと同じルールを使用して、再利用可能な修正を main にフォワードポートします。

以前の修正の再利用

チェックを実行する前に、最近の Tideclaw アルファブランチから、以前のリリース試行中に行われた修正をマイニングします。

  1. $release-private から、最後に成功したアルファブランチと修正コミットSHAの Tideclaw 状態ファイルを読み取ります。
  2. 最近のリモートブランチを一覧表示します。
git for-each-ref refs/remotes/origin/tideclaw/alpha --format='%(refname:short) %(committerdate:iso-strict)'
  1. 過去3日間の Tideclaw アルファブランチと、最後に成功したアルファブランチのみを考慮します。
  2. 各候補ブランチについて、現在の origin/main にないコミットを検査します。
git log --no-merges --reverse --format='%H%x09%s' origin/main..origin/tideclaw/alpha/YYYY-MM-DD-HHMMZ
  1. 新しいアルファブランチにまだ適用可能な、実際の安定化修正のみをチェリーピックします。状態ファイルに fixCommitShas として記録されているコミットを優先します。
  2. バージョンバンプ、変更履歴のリリースエントリ、タグアーティファクト、生成されたリリースノート、状態ファイルのみのコミット、および一回限りのデバッグインストルメンテーションをスキップします。
  3. チェリーピックが競合した場合は、現在の main に同等の修正がすでに含まれているかどうかを検査します。含まれていない場合は、最小限に解決し、コミットメッセージを明確に保ちます。
  4. 再利用されたコミットSHAは、新しい作成の修正SHAとは別に、アルファ状態と最終的なDiscordサマリーに記録します。

git cherry、git range-diff、および対象を絞ったテストの再実行を使用して、main にすでに存在する修正の重複を避けます。

修復ループ

ブランチをリリース候補の修復面として使用します。

  1. 最初に狭いローカルチェックを実行します:変更されたテスト、リリース事前チェック、リリースドキュメントで必要な型/リント/ビルドゲート。
  2. ローカルチェックが失敗した場合は、最小限のコミットでアルファブランチで修正します。
  3. 各一貫した修正を Tideclaw としてコミットします。
  4. 各修正の後、失敗したローカルチェックを再実行します。
  5. ベースライン、期待失敗リスト、無視ファイル、またはリリースインベントリを編集して失敗を隠さないでください。ただし、リリースドキュメントが明示的にそれを要求し、差分が正当である場合を除きます。
  6. 失敗がflakyの場合は、一度再実行します。それでも失敗する場合は、実際の失敗として扱います。
  7. 修正が明らかにmainに役立つ場合は、小さく保ち、フォワードポート可能にします。アルファ安定化中に広範なリファクタリングは避けてください。

コミット例:

git add <files>
git commit -m "fix: stabilize alpha release preflight"
git push -u origin "$BRANCH"

リリースCI

ローカル証明後:

  1. 既存の git タグ、npm バージョン、GitHub リリースから次の vYYYY.M.PATCH-alpha.N を計算します。日付や最も高いアルファのみのパッチではなく、安定版/ベータトレインから PATCH を選択します。同じアルファトレインを再利用し、alpha.N をインクリメントします。そのパッチにベータが存在するまで続けます。ベータが存在した後は、新しいアルファビルドには次のパッチを使用します。
  2. アルファブランチのパッケージバージョンとリリースメタデータをそのタグに一致させ、コミットし、ブランチをプッシュします。
  3. GitHub CLI を使用して、ブラウザ/フェッチツールではなく、アルファブランチからリリース検証を実行します。Tideclaw ホストでは、生の gh は読み取り専用のCodexサンドボックスラッパーです。workflow run、run cancel、公開ディスパッチなどの書き込み可能なコマンドには /usr/local/bin/gh-tideclaw-write を使用します。
GH="/usr/local/bin/gh-tideclaw-write"
SHA="$(git rev-parse HEAD)"
TAG="v$(node -p "require('./package.json').version")"
BRANCH="$(git branch --show-current)"

"$GH" workflow run full-release-validation.yml --repo openclaw/openclaw --ref "$BRANCH" \
  -f ref="$BRANCH" \
  -f release_profile=beta \
  -f rerun_group=all

"$GH" workflow run openclaw-npm-release.yml --repo openclaw/openclaw --ref "$BRANCH" \
  -f tag="$SHA" \
  -f preflight_only=true \
  -f npm_dist_tag=alpha
  1. gh run list、gh run view、gh api で正確なワークフローRun ID とヘッドSHAを監視します。読み取り専用の gh はポーリングには問題ありません。コマンドがGitHubを変更する場合のみ $GH を使用します。GitHub API ポーリングに Codex ブラウザ/フェッチを使用しないでください。以前の Tideclaw Run は、事前チェックが成功した後そこで失敗しました。
  2. アルファの場合、ブロッキングゲートは、Tideclaw が直接修復できるか、パッケージの安全性を証明するものです:通常CI、プラグインリリース前、npm事前チェック、パッケージ準備、インストールスモーク、タグ/到達可能性、公開検証。クロスOS、ライブチャンネル、QAラボ、パッケージ承認、長時間Docker E2E、TelegramパッケージE2Eの失敗はアドバイザリとして扱います。Discordで報告し、ブロッキングゲートが成功していれば続行します。
    • rerun_group=all がアドバイザリレーンのみでスタックしていて、CI、プラグインリリース前、npm事前チェック、パッケージ準備、インストールスモークが成功している場合は、同じヘッドで -f rerun_group=install-smoke を使用して、対象を絞った Full Release Validation をディスパッチします。その成功した対象を絞った Full Release Validation Run を公開証明として使用し、別のCI/プラグイン/フルアドバイザリRun ID をDiscordサマリーに含めます。
  3. ブロッキングゲートが失敗した場合は、アルファブランチで修正し、プッシュし、失敗したか必要なリリースCIのみを再実行します。コミットが変更された場合は、古い事前チェック/フル検証Run IDを破棄し、新しいヘッドに対してそれらを再実行します。
  4. 同じブランチヘッドでフル検証とnpm事前チェックが成功した後、その正確なコミットからリリースタグを作成してプッシュします。
git tag -a "$TAG" "$SHA" -m "openclaw ${TAG#v}"
git push origin "$TAG"
  1. 同じアルファブランチから公開ラッパーをディスパッチします。成功したnpm事前チェックRun IDと、同じヘッドSHAからのフルリリース検証Run IDと正確な試行を使用します。
FULL_RELEASE_VALIDATION_RUN_ATTEMPT="$(gh api \
  "repos/openclaw/openclaw/actions/runs/${FULL_RELEASE_VALIDATION_RUN_ID}" \
  --jq .run_attempt)"
"$GH" workflow run openclaw-release-publish.yml --repo openclaw/openclaw --ref "$BRANCH" \
  -f tag="$TAG" \
  -f preflight_run_id="$NPM_PREFLIGHT_RUN_ID" \
  -f full_release_validation_run_id="$FULL_RELEASE_VALIDATION_RUN_ID" \
  -f full_release_validation_run_attempt="$FULL_RELEASE_VALIDATION_RUN_ATTEMPT" \
  -f npm_dist_tag=alpha \
  -f plugin_publish_scope=all-publishable \
  -f publish_openclaw_npm=true \
  -f release_profile=beta \
  -f wait_for_clawhub=false
  1. 公開ラッパーと子Runを監視します。openclaw-npm-release.yml が npm-release 環境を待機しており、Tideclaw が承認できない場合は、それを唯一のブロッカーとして報告します。リリースが完了したとは呼ばないでください。
  2. ホストから直接 npm を公開しないでください。GitHub Actions/OIDC を使用してください。

重要: preflight_only=true の openclaw-npm-release.yml はアーティファクトのみを準備します。公開はしません。成功したアルファには、後続の openclaw-release-publish.yml ラッパー、プッシュされた git タグ、npm alpha dist-tag の証明、および GitHub プレリリースが必要です。

公開されたアルファの確認

以下がすべて真になるまでリリースは完了しません。

  • GitHub タグが存在する。
  • GitHub リリースが存在し、プレリリースとしてマークされている。
  • リリース本文が npm バージョンページ、レジストリ tarball、整合性、CI/証明にリンクしている。
  • npm view openclaw@<version> が正確なバージョン、dist-tag alpha、tarball、整合性、公開時間を示している。
  • インストール済み/パッケージスモークがリポジトリリリースドキュメントに従っている。
  • $release-private の Tideclaw 状態ファイルが、バージョン、タグ、ベースSHA、ブランチ、修正コミットSHA、ワークフローRun ID、npm整合性、タイムスタンプを記録している。

#releases での最終Discordサマリー:

  • タグ/バージョン
  • ベースSHA
  • ブランチ
  • 修正コミット
  • ワークフローRun ID
  • npm/GitHub の証明
  • リリースされていない場合はスキップ/ブロックされた理由

角括弧ターゲットを使用した Discord セーフな Markdown リンクを使用します。シークレットを決して印刷しないでください。

フォワードポート

成功したアルファの後、main に修正のみのPRを作成します。

  1. 現在の origin/main からフォワードポートブランチを作成/更新します。
git fetch origin main --prune
git switch -c "tideclaw/forward-port/$(date -u +%Y-%m-%d-%H%MZ)" origin/main
  1. ナイト/リリースチェックを通過させるために必要な実際の修正であるリリースブランチコミットのみをチェリーピックします。
  2. アルファバージョンのバンプ、変更履歴のリリースエントリ、リリースノート、タグアーティファクト、生成されたリリースアセット、状態ファイルのみのコミット、および公開が唯一の目的であるコミットを除外します。
  3. コミットが実際の修正とリリース/バージョン変更を混合している場合は、分割します。修正ハンクのみを新しいコミットに再生し、残りを破棄します。
  4. チェリーピックが空の場合は、修正がすでに main に存在することを意味するため、そのコミットをスキップします。
  5. チェリーピックの競合は、main にすでに同等の変更があるかどうかを検査して解決するか、アルファから修正意図を維持しながら最小限に解決します。
  6. フォワードポートブランチをプッシュし、gh 書き込みラッパーを使用してPRを作成します。
"$GH" pr create \
  --base main \
  --head "$BRANCH" \
  --title "fix: forward-port alpha stabilization fixes $(date -u +%Y-%m-%d)" \
  --body "Automated forward-port of reusable fixes from $(BRANCH).\n\n## Changes\n\n$(git log origin/main..HEAD --no-merges --reverse --oneline)\n\n**Not included**: version bumps, changelog entries, release notes, tags, artifacts, state-file updates." \
  --label automated \
  --label forward-port
  1. PRがCIに合格するのを待ちます。失敗した場合は、フォワードポートブランチで修正します。これには、main の最新の変更に合わせるための追加の調整コミットが必要になる場合があります。
  2. 自動マージが設定されている場合は、それを有効にします。設定されていない場合は、メンテナーに #releases でPRを確認してマージするように依頼します。ボットとして直接マージしないでください。
  3. フォワードポートの状態をアルファリリースサマリーと一緒にDiscordに報告し、PRリンクとCIステータスを含めます。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills and agent Templates when requested; add Templates; install, verify, update, uninstall, publish, or sync skills.

関連スキル