release-core-test について
`cyrus-core` を npm のテスト用プレリリースとして公開する開発者向けスキルです。ワークスペース依存関係上必要な場合のみ `claude-runner` も再公開し、バージョン変更はローカルに残して通常のリリース手順を避けます。
主な機能
- 01ワークスペースのパッケージをビルド
- 02`claude-runner` の再公開要否を確認
- 03`cyrus-core` をテスト用プレリリースに更新
- 04`test` dist-tag で公開
- 05dist-tag を検証してインストールコマンドを表示
活用シーン
- 01npm 経由で `cyrus-core` の変更をテスト
- 02`latest` を動かさずプレリリースを提供
- 03`claude-runner` の再公開要否を判断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cyrusagents/ cyrus --skill release-core-testインストール後、Claude Code で/release-core-testを入力して読み込まれたか確認します。
詳細
Core のリリース(テスト)
cyrus-core パッケージのみ(必要な場合は claude-runner も)を、開発・テスト用のプレリリースとして npm の test dist-tag で公開します。これは、正式なリリースフローを経ずに cyrus-core の反復開発を行うための、開発者向けの便宜的なものです。
このスキルで行わないこと
このスキルは意図的に最小限の内容になっています。以下は行いません。
CHANGELOG.mdまたはCHANGELOG.internal.mdの更新- git タグの作成
- GitHub リリースの作成
- Linear のイシューの移動
- プルリクエストの作成
- バージョンの更新をコミットすること(更新後の
package.jsonはローカルの作業ツリー変更として残します)
また、他のワークスペースパッケージ(edge-worker、cyrus CLI、linear-event-transport など)は公開しません。例外は claude-runner のみで、workspace:* の参照先が未公開のバージョンになってしまう場合に限り、再公開します(下記の手順 3 を参照)。
ワークフロー
1. リポジトリのルートから依存関係をインストールする
pnpm install
2. リポジトリのルートからすべてのパッケージをビルドする
pnpm build
すべてのパッケージをビルドすることで、公開前に workspace:* の依存関係が解決されます。
3. claude-runner の再公開が必要か判断する
cyrus-core は workspace:* を介して claude-runner に依存しています。cyrus-core の公開時に、この workspace:* は packages/claude-runner/package.json に現在記載されているバージョンに書き換えられます。そのバージョンがまだ npm に存在しない場合(前回の公開以降に claude-runner がローカルで変更されている場合など)、cyrus-core@test をインストールするユーザーは依存関係を解決できず、インストールに失敗します。
以下の決定的なチェックを両方実行します。
# (a) Is the local claude-runner version already on npm?
LOCAL_CR=$(node -p "require('./packages/claude-runner/package.json').version")
npm view "cyrus-claude-runner@${LOCAL_CR}" version 2>/dev/null
# (b) Does claude-runner have uncommitted/unpushed source changes since its last publish?
git diff --quiet HEAD -- packages/claude-runner/src packages/claude-runner/package.json && echo "clean" || echo "dirty"
どちらかに該当する場合は claude-runner を再公開します。(a)何も返されない(ローカルのバージョンが npm に存在しない)、または(b)dirty が出力される。両方とも問題がなければ、この手順をスキップします。判断に迷う場合は、ユーザーに確認してください。
再公開する場合:
# Determine the next -test.N for claude-runner (same algorithm as cyrus-core below)
# Bump packages/claude-runner/package.json to e.g. 0.0.X-test.N
cd packages/claude-runner
pnpm publish --access public --no-git-checks --tag test
cd ../..
pnpm install # refresh lockfile so cyrus-core picks up the new claude-runner
それ以外の場合は、この手順全体をスキップします。
4. cyrus-core を次の -test.N プレリリースバージョンに更新する
手順:
packages/core/package.jsonから現在のバージョンを読み取ります(例:0.1.22)。- パッチバージョンを上げます(例:
0.1.23)。 -test.Nを付けます。N = 0から始め、<bumped>-test.Nが npm にすでに存在する間はNを増やします(中断された過去の試行や古い試行のものも含みます)。
以下のワンライナーを使って、更新後のパッチバージョンに該当する既存の -test.N バージョンを見つけ、次の N を選びます。
BUMPED=0.1.23 # the patch-bumped base, no suffix
npm view cyrus-core versions --json \
| jq -r '.[]' \
| grep -E "^${BUMPED}-test\.[0-9]+$" \
| awk -F'test.' '{print $2}' \
| sort -n | tail -1
# If empty, use N=0. Otherwise use (max + 1).
選んだバージョン(例:0.1.23-test.0)を packages/core/package.json に書き戻します。この変更はコミットしないでください。開発者が残すかどうかを決められるよう、ローカルの作業ツリー編集として残します。
5. cyrus-core を test dist-tag で公開する
cd packages/core
pnpm publish --access public --no-git-checks --tag test
cd ../..
--tag test を指定すると、次のようになります。
npm install cyrus-core@testでこのバージョンがインストールされます。latestdist-tag は変更されないため、本番用のインストール(npm install cyrus-core)には影響しません。
6. dist-tag が正しく設定されたことを確認する
npm view cyrus-core dist-tags
公開前から latest が変わっておらず、test が今回公開したバージョンを指していることを確認します。latest が移動していた場合は問題があるため、誰かにインストールを勧める前に作業を止めて調査してください。
7. インストール手順を表示する
公開後、開発者がコピーして貼り付けられるよう、両方の形式を表示します。
Published cyrus-core@<version> under dist-tag `test`.
Install with:
npm install cyrus-core@test
or pinned:
npm install cyrus-core@<version>
手順 3 で claude-runner も再公開した場合は、そのバージョンも含めてください。
主な注意事項
- ダーティな作業ツリーのフィーチャーブランチから公開できるよう、必ず
--no-git-checksを使用してください。 - 実際のリリース用の
latestdist-tag を維持するため、必ず--tag testを使用してください。 -test.0のように-で終わるサフィックスを含むプレリリースバージョンは、明示的なタグまたはバージョン指定なしではnpm install cyrus-coreで自動インストールされないため、繰り返し実行しても安全です。claude-runnerを公開した場合は、cyrus-coreのビルドおよび公開の前にpnpm installを実行し、ロックファイルに新しい公開バージョンを反映してください。- クリーンなツリーでは、ルートでの
pnpm installとpnpm buildに合計約 3 分かかります。コマンドのタイムアウトを適切に設定してください。
例
- 「release core test」-
cyrus-coreの開発用リリースを実行します - 「/release-core-test」- このスキルを呼び出します