release-bump について
release-bumpは、変更履歴を確定し、管理対象のバージョンファイルを更新して、リリースコミットとタグを作成するスキルです。リリースノートを用意し、プッシュ前にリポジトリを整えたいメンテナー向けです。
主な機能
- 01作業ツリーのクリーン状態を確認
- 02パッチ、マイナー、メジャーの更新を計算
- 03変更履歴にリリース情報を記載
- 04設定済みのバージョンファイルを更新
- 05リリースコミットとタグを作成
- 06プッシュせずに成果物を検証
活用シーン
- 01タグ付きパッチリリースの準備
- 02リポジトリ内の複数ファイルのバージョン更新
- 03作成済みリリースノートの確定
- 04プッシュ前のリリースコミット確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jamiepine/ voicebox --skill release-bumpインストール後、Claude Code で/release-bumpを入力して読み込まれたか確認します。
詳細
リリースバンプ
目標
変更履歴のドラフトを確定し、追跡対象のすべてのファイルでバージョンをバンプし、タグ付きリリースコミットを作成します。このスキルが実行されると、リポジトリにはプッシュ可能なクリーンなリリースコミットとタグが用意されます。
前提条件
ghCLI がインストールされ、認証済みであること(gh auth status)。bumpversionがインストールされていること(pip install bumpversion、またはプロジェクトの venv で利用可能であること)。CHANGELOG.mdの[Unreleased]セクションに、リリースの内容がすでに記載されている必要があります。空であるか古い場合は、先にdraft-release-notesスキルを実行してください。
ワークフロー
-
作業ツリーがクリーンであることを確認する(ドラフトを含む可能性がある
CHANGELOG.mdを除く)。git status --porcelain変更されているのは
CHANGELOG.md(および任意で.agents/ファイル)だけであるべきです。他にコミットされていない変更がある場合は、停止して、まずそれらをコミットまたはスタッシュするようユーザーに依頼してください。 -
バンプレベルを決定する。
指定がない場合はユーザーに確認します:
patch、minor、またはmajor。現在のバージョンを確認します:grep '^current_version' .bumpversion.cfg -
変更履歴を刻印する。
CHANGELOG.mdから現在の[Unreleased]の内容を読み取ります。新しいバージョンを計算し(バンプレベルと現在のバージョンに基づく)、次に:a.
## [Unreleased]セクションの本文を空のプレースホルダーに置き換えます。 b.## [Unreleased]の直後に、新しく刻印されたセクションを挿入します:## [Unreleased] ## [X.Y.Z] - YYYY-MM-DD <the content that was in [Unreleased]>c. ファイル末尾の参照リンクを更新します:
[Unreleased]リンクを新しいタグと比較するように変更する- 新しいバージョン用のリンクを追加する
[Unreleased]: https://github.com/jamiepine/voicebox/compare/vX.Y.Z...HEAD [X.Y.Z]: https://github.com/jamiepine/voicebox/compare/vPREVIOUS...vX.Y.Z -
変更履歴をステージする。
git add CHANGELOG.md -
bumpversion を実行する。
bumpversion --allow-dirty <patch|minor|major>CHANGELOG.mdがすでにステージされているため、--allow-dirtyフラグが必要です。bumpversion は次を実行します:- 追跡対象のすべてのファイルでバージョン文字列を更新する(
.bumpversion.cfgを参照) Bump version: X.Y.Z -> A.B.Cというメッセージでコミットを作成するvA.B.Cというタグを作成する
ステージされた
CHANGELOG.mdは、このコミットに自動的に含まれます。 - 追跡対象のすべてのファイルでバージョン文字列を更新する(
-
結果を確認する。
git show --name-only --stat HEAD git tag --list "v*" --sort=-v:refname | head -n 5コミットに次が含まれていることを確認します:
CHANGELOG.md.bumpversion.cfgtauri/src-tauri/tauri.conf.jsontauri/src-tauri/Cargo.tomlpackage.jsonapp/package.jsontauri/package.jsonweb/package.jsonbackend/__init__.py
新しいタグが存在することを確認します。
-
ユーザーが明示的に依頼しない限り、プッシュしないでください。 タグ名を報告し、次を提案します:
Ready to push. When you're ready: git push origin main --follow-tags
バージョン計算のリファレンス
現在のバージョンを X.Y.Z とすると:
patch->X.Y.(Z+1)minor->X.(Y+1).0major->(X+1).0.0
エラーからの復旧
- bumpversion が失敗した場合、タグは存在しません。問題を修正して再実行してください。タグがまだ存在しない限り、bumpversion は冪等です。
- リリースコミットを元に戻す必要がある場合(プッシュ前):
git tag -d vX.Y.Z && git reset --soft HEAD~1 - プッシュ済みのリリースコミットを amend しないでください。
注意事項
- タグがプッシュされると、リリース CI(
.github/workflows/release.yml)がCHANGELOG.mdから一致するバージョンセクションを自動的に抽出し、GitHub Release の本文として使用します。手動でのコピー&ペーストは不要です。 - リリースコミットのメッセージは
.bumpversion.cfgによって制御されます(Bump version: X.Y.Z -> A.B.C)。上書きしないでください。 - 後から GitHub Release の本文を手動で更新する必要がある場合:
gh release edit vX.Y.Z --notes-file <(sed -n '/## \[X.Y.Z\]/,/## \[/p' CHANGELOG.md | head -n -1)