Release について
linear-cliの新バージョンを準備するメンテナー向けのリリースワークフロースキルです。変更履歴の確認、セマンティックバージョンの提案、チェック、更新、タグ付け、公開を扱います。
主な機能
- 01最新タグ以降のコミット確認
- 02変更履歴の追加とレビュー
- 03セマンティックバージョン更新の提案
- 04品質チェックとバージョン更新
- 05リリースのコミット、タグ付け、プッシュ
活用シーン
- 01linear-cliのバージョンリリース準備
- 02ユーザー向け変更の変更履歴への記録
- 03タグ付けと公開前のチェック
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ schpet/ linear-cli --skill releaseインストール後、Claude Code で/releaseを入力して読み込まれたか確認します。
詳細
リリースワークフロー
このスキルは、linear-cli プロジェクトのリリースを作成して公開するための体系的なワークフローを提供します。変更履歴の管理、バージョンの更新、テスト、タグ付けを行います。
使用するタイミング
linear-cli の新しいバージョンをリリースする準備をするときに、このスキルを使用します。このワークフローにより、すべての変更が記録され、テストに合格し、公開前にバージョンに適切なタグが付けられていることを確認できます。
前提条件
以下のツールが使用できることを確認してください。
- 変更履歴の管理に使用する
changelogスキル - バージョン更新に使用する
svbump(インストール済み) - バージョン管理操作に使用する
jj - リリースタスクの実行に使用する
just - Claude Code プラグインのバージョン更新に使用する
jq
リリースワークフロー
ステップ 1:前回のリリース以降のコミットを確認する
前回のリリース以降に作成されたコミットを特定します。
jj log --ignore-working-copy --git -r 'tags()..@' --no-graph
直近のタグから現在のコミットまでのすべてのコミットが表示されます。
ステップ 2:変更履歴の項目を追加する
上記で特定した各コミットについて、変更履歴に記載する必要があるかを判断します。ユーザーに影響する変更に重点を置いてください。
変更履歴に含めるもの:
- 新機能
- バグ修正
- 破壊的変更
- 重要な改善
- 非推奨化
変更履歴から除外するもの:
- ユーザーへの影響がない内部リファクタリング
- ドキュメントのみの変更
- ビルド/CI 設定の変更
- 重要なものでない雑務的なコミット
変更履歴 CLI を使用して項目を追加します。コミット SHA を指定して --attribute-pr を使用すると、関連する PR を自動的に検索して帰属情報を追加できます。ただし、schpet と schpetbot は除外されます。
changelog add --type <type> "<description>" --attribute-pr <commit-sha> --exclude-users schpet,schpetbot
関連する PR がないコミットや、帰属情報が不要な場合は、--attribute-pr を省略してください。
種類は Keep a Changelog のカテゴリに対応します。
added- 新機能changed- 既存機能の変更deprecated- まもなく削除される機能removed- 削除された機能fixed- バグ修正security- セキュリティの改善
ステップ 3:ユーザーと変更履歴を確認する
関連する変更履歴の項目をすべて追加したら、CHANGELOG.md の未リリースセクションをユーザーに表示し、確認を依頼します。
- CHANGELOG.md ファイルを読み取る
[Unreleased]セクションを表示する- 次のように尋ねる:「これらの変更履歴の項目を確認してください。リリース前に変更が必要なものはありますか?」
- 要望された修正を行う
ステップ 4:Semver の更新レベルを決定する
変更履歴に記載された変更の種類に基づいて、適切なセマンティックバージョンの更新レベルを決定し、提案します。
メジャー(X.0.0):
- 破壊的変更
- 機能の削除
- 重要な API の変更
マイナー(0.X.0):
- 新機能(追加)
- 非推奨化
- 後方互換性のある機能追加
パッチ(0.0.X):
- バグ修正
- セキュリティ修正
- 新機能を伴わない軽微な改善
提案をユーザーに提示します。
Based on the changelog entries, I recommend a <MAJOR/MINOR/PATCH> version bump because:
- [reason 1]
- [reason 2]
Current version: <current>
Proposed version: <proposed>
Should I proceed with this version bump?
先に進む前に、ユーザーの確認を待ってください。
ステップ 5:変更履歴のリリースを実行する
ユーザーがバージョン更新レベルを確認したら、適切な semver レベルを指定して変更履歴のリリースコマンドを実行します。
changelog release <major|minor|patch>
これにより CHANGELOG.md が更新され、Unreleased セクションがバージョン付きのリリースに変換されます。
ステップ 6:タグの処理を実行する
変更履歴をリリースした後、タグのレシピを実行します。
just tag
このレシピは、最初の失敗で停止し、リリースの全手順を順番に実行します。
- 品質チェック(
just check):cargo fmt --all --check、cargo clippy --locked --workspace --all-targets -- -D warnings、cargo test --locked --workspace - バージョンの更新:
svbumpを使って、最新の変更履歴のバージョンをCargo.tomlのworkspace.package.versionに書き込み、その後cargo update --workspaceでCargo.lockを更新します - スキルのドキュメント(
just skill-docs):CLI のヘルプからskills/linear-cli/SKILL.mdとその参照ドキュメントを再生成します - プラグインのバージョン(
just plugin-version):.claude-plugin/plugin.jsonのversionと、.claude-plugin/marketplace.jsonのversionおよびplugins[0].versionを設定します - コミットとタグ:
jj commit -m "chore: Release linear-cli version <version>"を実行し、その後mainブックマークを移動して、同じコミット(@-)にv<version>タグを設定します - プッシュ:
jj git push --bookmark mainを実行し、その後git push origin --tagsを実行します
完了すると、released v<version> と表示されます。
エラー処理
いずれかの手順が失敗した場合:
- 品質チェックの失敗: 続行する前に問題を修正してください。テストが失敗している、または lint エラーがある場合は、リリースを進めないでください。
- バージョン更新の失敗: バージョンの形式とファイルが存在することを確認してください。
- プッシュの失敗: 認証とリモートへのアクセスを確認してください。
必ず停止し、エラーを明確に報告してください。重要な手順が失敗した場合は、リリース処理を続行しないでください。
重要な注意事項
- justfile の
tagレシピが上記のすべての手順を実行するため、手動で実行する必要はありません - すべてのバージョン管理操作には
jjを使用してください(プロジェクトの AGENTS.md に従ってください) - 読み取り専用の jj 操作では、必ず
--ignore-working-copyを使用してください - このワークフローは親コミット(@-)にコミットを作成し、その後新しい作業コミットを作成します
jj git pushとgit push origin --tagsの両方が必要です(ブックマークには jj、タグには git を使用します)
リリース後
リリースが成功した後:
- タグが GitHub に表示されていることを確認します
- GitHub Actions のリリースワークフロー(
.github/workflows/release.yml)がバイナリをビルドし、Homebrew の formula と npm パッケージを公開することを確認します - 新しいバージョンが公開されていることを確認します
参考
実装については、justfile の tag および plugin-version レシピを参照してください。