mcpField
R
release-bump

release-bump

github.com/jamiepine開発58.9k70 回インストール3 週間前に更新
リポジトリ

release-bump について

release-bumpは、変更履歴を確定し、管理対象のバージョンファイルを更新して、リリースコミットとタグを作成するスキルです。リリースノートを用意し、プッシュ前にリポジトリを整えたいメンテナー向けです。

主な機能

  1. 01作業ツリーのクリーン状態を確認
  2. 02パッチ、マイナー、メジャーの更新を計算
  3. 03変更履歴にリリース情報を記載
  4. 04設定済みのバージョンファイルを更新
  5. 05リリースコミットとタグを作成
  6. 06プッシュせずに成果物を検証

活用シーン

  1. 01タグ付きパッチリリースの準備
  2. 02リポジトリ内の複数ファイルのバージョン更新
  3. 03作成済みリリースノートの確定
  4. 04プッシュ前のリリースコミット確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jamiepine/voicebox --skill release-bump

インストール後、Claude Code で/release-bumpを入力して読み込まれたか確認します。

詳細

リリースバンプ

目標

変更履歴のドラフトを確定し、追跡対象のすべてのファイルでバージョンをバンプし、タグ付きリリースコミットを作成します。このスキルが実行されると、リポジトリにはプッシュ可能なクリーンなリリースコミットとタグが用意されます。

前提条件

  • gh CLI がインストールされ、認証済みであること(gh auth status)。
  • bumpversion がインストールされていること(pip install bumpversion、またはプロジェクトの venv で利用可能であること)。
  • CHANGELOG.md の [Unreleased] セクションに、リリースの内容がすでに記載されている必要があります。空であるか古い場合は、先に draft-release-notes スキルを実行してください。

ワークフロー

  1. 作業ツリーがクリーンであることを確認する(ドラフトを含む可能性がある CHANGELOG.md を除く)。

    git status --porcelain
    

    変更されているのは CHANGELOG.md(および任意で .agents/ ファイル)だけであるべきです。他にコミットされていない変更がある場合は、停止して、まずそれらをコミットまたはスタッシュするようユーザーに依頼してください。

  2. バンプレベルを決定する。

    指定がない場合はユーザーに確認します:patch、minor、または major。現在のバージョンを確認します:

    grep '^current_version' .bumpversion.cfg
    
  3. 変更履歴を刻印する。

    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
    
  4. 変更履歴をステージする。

    git add CHANGELOG.md
    
  5. 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 は、このコミットに自動的に含まれます。

  6. 結果を確認する。

    git show --name-only --stat HEAD
    git tag --list "v*" --sort=-v:refname | head -n 5
    

    コミットに次が含まれていることを確認します:

    • CHANGELOG.md
    • .bumpversion.cfg
    • tauri/src-tauri/tauri.conf.json
    • tauri/src-tauri/Cargo.toml
    • package.json
    • app/package.json
    • tauri/package.json
    • web/package.json
    • backend/__init__.py

    新しいタグが存在することを確認します。

  7. ユーザーが明示的に依頼しない限り、プッシュしないでください。 タグ名を報告し、次を提案します:

    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).0
  • major -> (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)

コメント