手順書:上から順に進める
プラグインをリリースする手順
リリースは11手順です。バージョンを上げ、確認を通し、マージ、タグ付け、公開と進め、最後に手元を更新します。
- release/X.Y.Z の worktree で作業する。
- プルリクエストの前に check-repo.mjs を通す。
- リリースとは、マージ・タグ・GitHub リリースの3つ。
11手順を順番に
1.9.0 のリリースつまり:終えた手順の行にチェックを入れます。最初の未完了の手順には「次」と表示されます。各行からその手順へ移動できます。
- 最初に必要なもの4つのツールと、それぞれ1行の確認コマンド。
- リリースブランチを準備する worktree、バージョン、変更履歴、アップグレード用のハッシュ。
- 確認してプルリクエストを出す同梱のページをアップグレードし、2つの確認を実行して、プルリクエストを出す。
- 公開して手元を更新するマージ、タグ付け、GitHub リリースの作成、そして更新。
- うまくいかなかったとき段階ごとに、どこまで元に戻せるか。
第1章 / 全5章、約1分
始める前に、何が必要か
おさらい:リリースとは、マージ済みのプルリクエスト、タグ、GitHub リリースの3つです。
例では、次のリリースを 1.9.0、前回を 1.8.1 としています。番号は自分のものに置き換えてください。リリース作業には専用の worktree を使い、リポジトリが無視するフォルダに置きます。
- Node 18 以降
node --versionで v18 以上が表示されます。 - Git と、変更のない main
git status --shortで何も表示されません。 - GitHub CLI(ログイン済み)
gh auth statusで自分のアカウント名が表示されます。 - Claude Code
claude --versionでバージョンが表示されます。
つまり: 4つのツールを、1コマンドずつ確認します。結果が違うものは、手順1の前に直しておきます。
この章のポイント:最初に4つのツールを確認し、バージョン番号は自分のものに置き換えます。
第2章 / 全5章、約2分
リリースブランチは、どう準備するのか
おさらい: 4つのツールが使え、main に変更はありません。
- 専用の worktree で、リリースブランチを作る。
git worktree add .claude/worktrees/release-1.9.0 -b release/1.9.0 main cd .claude/worktrees/release-1.9.0確認:
git worktree listで、新しいフォルダが[release/1.9.0]付きで表示されます。うまくいかないとき:ブランチがすでにある場合は、
-b release/1.9.0 mainを外し、末尾にそのブランチ名を書きます。 - マニフェストとテンプレートのバージョンを書き換える。
sed -i 's/1\.8\.1/1.9.0/' .claude-plugin/plugin.json skills/glance-explainer/assets/template.html確認:
git diff --statで、2つのファイルのどちらも2 +-と表示されます。うまくいかないとき:それ以外の数字なら、想定外の箇所に一致しています。元に戻し、2か所の番号を手で書き換えてください。
- 前回から入った変更を一覧にして、変更履歴の節を書く。
git log --oneline v1.8.1..main確認:
grep -n '^## ' CHANGELOG.mdの結果で、## 1.9.0が## 1.8.1より上に並びます。うまくいかないとき:新しい節を、最新リリースの節より上に移してください。
- アップグレード用に、テンプレートのハッシュを調べる。
node skills/glance-explainer/scripts/upgrade.mjs --hash skills/glance-explainer/assets/template.html確認: 16桁の16進数が表示されます。KNOWN に載っていれば、何も足しません。載っていなければ、
'digits': '1.9.0',を追加します。うまくいかないとき: worktree の最上位フォルダから実行してください。
つまり:手順4まで終えると、ブランチに新しいバージョン、変更履歴、ハッシュがそろいます。
この章のポイント:リリースブランチは worktree で始め、バージョン、変更履歴、ハッシュをそろえて終わります。
第3章 / 全5章、約2分
リリースの確認とプルリクエストは、どう進めるのか
おさらい:ブランチに新しいバージョン、変更履歴、ハッシュがそろっています。
- 同梱のページを新しいバージョンに合わせる。
node skills/glance-explainer/scripts/upgrade.mjs skills/glance-explainer/assets/gallery.html skills/glance-explainer/examples skills/explainer-gather/examples docs/index.html docs/roadmap.html確認:どの行も
version mark set、upgraded、already currentのどれかになります。うまくいかないとき:
skipped: custom stylesは、手で編集した跡があるという意味です。テンプレートの style と script を貼り付けます。 - 2つの確認を実行する。
node tools/check-repo.mjs claude plugin validate --strict .確認:出力の末尾が
all checks passedとValidation passedで、どちらも終了コードは0です。うまくいかないとき: FAIL の行をひとつずつ直します。バージョンの不一致は、手順2で番号の書き換えが漏れたということです。
- コミットしてプッシュし、プルリクエストを出す。
git add -A && git commit -m "chore(release): 1.9.0" git push -u origin release/1.9.0 gh pr create --title "Release 1.9.0: public examples" --fill確認:
gh pr checks --watchの最後にcheckが pass と表示されます。なお、siteジョブはプルリクエストではスキップされます。うまくいかないとき:
gh pr checks --webを実行するとログが開きます。FAIL の行を直して、もう一度プッシュします。
つまり:まず自分のマシンで確認を実行し、そのあと CI がリポジトリの確認をもう一度実行します。
この章のポイント:同梱ページを更新し、2つの確認を通してから、プルリクエストを出します。
第4章 / 全5章、約2分
リリースの公開と手元の更新は、どう進めるのか
おさらい:プルリクエストを出し、check ジョブが通っています。
- プルリクエストをマージし、ブランチを削除する。
gh pr merge --merge git push origin --delete release/1.9.0確認:まず
git fetchを実行します。続けてgit log origin/main -1 --onelineを実行すると、自分のプルリクエストの名前が表示されます。うまくいかないとき: check ジョブが終わるのを待ちます。main が進んでいたら、origin/main をマージしてプッシュします。
- マージにタグを付け、タグをプッシュする。
git tag -a v1.9.0 -m "1.9.0: public examples" origin/main git push origin v1.9.0確認:
git ls-remote --tags origin v1.9.0でタグが表示されます。うまくいかないとき:
already existsと出たら、すでに誰かがタグを付けています。先にgit show v1.9.0で中身を確認してください。 - 変更履歴から GitHub リリースを作る。
sed -n '/^## 1.9.0/,/^## 1.8.1/{//!p}' CHANGELOG.md > ../notes.md gh release create v1.9.0 --title "1.9.0: public examples" --notes-file ../notes.md確認:
gh release view v1.9.0でタイトルと、1.9.0 の変更履歴の本文が表示されます。うまくいかないとき:
../notes.mdには、1.9.0 の節だけを入れてください。 - 手元のプラグインを更新する。
claude plugin marketplace update glance-explainer claude plugin update glance-explainer@glance-explainer確認:再起動後、
claude plugin listの結果にVersion: 1.9.0と表示されます。うまくいかないとき:まだ古いままなら、2つのコマンドをこの順に実行して、もう一度再起動します。
つまり:マージ、タグ、リリースは別々の操作で、確認もそれぞれ別です。
サイトが再デプロイされたか確認する方法を見る
gh run list --workflow ci --branch main --limit 1
マージのあと、公開サイトは main からビルドされます。最新の実行が completed と success になっていれば成功です。
この章のポイント:マージ、タグ付け、リリースの順に進め、最後に手元のプラグインを更新して再起動します。
第5章 / 全5章、約1分
うまくいかなかったら、どうするのか
おさらい:リリースはマージ、タグ、GitHub リリースの3つで、どれも元に戻せます。
- マージの前プルリクエストを閉じて、worktree を削除します。main には何も届いていません。
- マージのあと、タグの前新しいプルリクエストでマージをリバートし、もう一度確認を通します。
- タグとリリースのあとリリースとタグを削除します。ここでは、リリースはロックされていません。
- ユーザーが更新したあと回収はできません。パッチリリースを出して直します。
つまり:早く止めるほど、戻すコストは小さくなります。このリポジトリには、素早く直した前例があります。1.8.1 は、1.8.0 の約3時間後に出ました。
段階ごとのコマンドを見る
# before the merge (run the second line from the main checkout)
gh pr close --comment "Not shipping"
git worktree remove .claude/worktrees/release-1.9.0
# after the merge, before the tag
git revert -m 1 <merge commit>
# after the tag and the release
gh release delete v1.9.0 --cleanup-tag --yes
git tag -d v1.9.0
ユーザーは、マーケットプレイスを追加するときにタグを付けて、特定のリリースにとどまれます。たとえば ariasr47/glance-explainer#v1.8.1 です。
この章のポイント:進んだところまで戻し、ユーザーが更新したあとは修正版で直します。
まとめ
- 最初に4つのツールを確認し、バージョン番号は自分のものに置き換えます。
- リリースブランチは worktree で始め、バージョン、変更履歴、ハッシュをそろえて終わります。
- 同梱ページを更新し、2つの確認を通してから、プルリクエストを出します。
- マージ、タグ付け、リリースの順に進め、最後に手元のプラグインを更新して再起動します。
- 進んだところまで戻し、ユーザーが更新したあとは修正版で直します。