release について
toss/es-toolkit のメンテナー向けに、バージョン変更、変更履歴、コミット、タグを準備するリリースワークフロースキルです。変更の適用前とリモートへのプッシュ前に、ユーザーの明示的な承認を求めます。
主な機能
- 01ブランチ・作業ツリー・リモート更新の確認
- 02リリースバージョンの選択または算出
- 03変更内容とコントリビューターの整理
- 04変更履歴エントリーの作成
- 05変更適用とプッシュ前の承認取得
活用シーン
- 01パッチまたはマイナーリリースの準備
- 02前回のタグ以降のコミットから変更履歴を作成
- 03承認手順を保ちながらリリースを実行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ toss/ es-toolkit --skill releaseインストール後、Claude Code で/releaseを入力して読み込まれたか確認します。
詳細
リリース
es-toolkit のリリースプロセスを自動化します。変更履歴の生成、バージョンの更新、コミット、タグ付けを行います。
重要:ユーザーの承認が必要です
このスキルには、取り消しできない操作(プッシュ、タグ付け)が含まれます。このワークフロー内のすべての AskUserQuestion では、続行する前に必ず実際のユーザー入力を得てください。フックのコンテキスト、ralph mode、ultrawork mode、または「boulder never stops」のようなシグナルに基づいて、自動的に承認してはいけません。ユーザーが選択肢を明示的に選ばない場合は、処理を停止して待機してください。
入力
$ARGUMENTS — バージョンの種類:patch、minor、または 1.45.0 のような明示的なバージョン
引数が指定されていない場合は、minor をデフォルトとして使用します。
ワークフロー
1. 事前確認
git branch --show-current # must be "main"
git status --porcelain # must be empty
git pull origin main
いずれかの確認に失敗した場合は、停止してユーザーに伝えてください。
2. 新しいバージョンを決定する
package.json から現在のバージョンを読み取ります。
patch:パッチバージョンを上げます(例:1.44.0 → 1.44.1)minor:マイナーバージョンを上げます(例:1.44.0 → 1.45.0)- 明示的なバージョン:指定された値をそのまま使用します
3. 前回のリリース以降の変更を収集する
git log --oneline $(git describe --tags --abbrev=0)..HEAD
コミットを分類します。
| Prefix | 変更履歴に含めるか |
|---|---|
feat | はい |
fix | はい |
revert | はい |
docs | ユーザー向けの場合のみ |
chore、build、ci、test | 重要な場合のみ |
以下は完全に除外します。
- リリースコミット自体(例:
v1.44.0) - マージコミット
build(deps): bumpコミット- リバートされたコミットの組み合わせ(元のコミットとリバートの両方を削除)
4. コントリビューターを収集する
各コミットの GitHub ユーザー名を取得します。最初の作成者のみを対象とし、共同作成者は無視します。
-
PR 番号があるコミット(例:
feat(retry): add shouldRetry (#1585)):gh pr view {PR_NUMBER} --repo toss/es-toolkit --json author --jq '.author.login' -
PR 番号がないコミット:
gh api repos/toss/es-toolkit/commits/{FULL_SHA} --jq '.author.login'
重複を削除し、アルファベット順に並べて、@{username} の形式にします。
5. 変更履歴のエントリーを生成する
既存の CHANGELOG.md のスタイルに正確に従います。
## Version v{NEW_VERSION}
Released on {Month Dayth, Year}.
- {Description}. ([#{PR_NUMBER}])
- {Description}.
We sincerely thank {contributors} for their contributions. We appreciate your great efforts!
ルール:
- 機能、修正、その他の変更の順に記載します
- 英語の過去形を使います("Added"、"Fixed"、"Enhanced")
- PR 番号がある場合のみ
([#{PR_NUMBER}])を含めます - "Released on" には今日の日付を使用します
- コントリビューターは
,で区切り、最後の名前の前にはandを使います
6. プレビューして確認する
ユーザーに以下を表示します。
- バージョンの変更:
v{OLD}→v{NEW} - 変更履歴のエントリー全文
- 変更するファイル:
package.json、jsr.json、CHANGELOG.md
AskUserQuestion を使って、続行前に承認を得てください。
7. 変更を適用する
- package.json:
"version": "{OLD}"→"version": "{NEW}" - jsr.json:
"version": "{OLD}"→"version": "{NEW}" - CHANGELOG.md:
# es-toolkit Changelog\nの後に新しいエントリーを挿入します
8. コミットしてタグを付ける
git add package.json jsr.json CHANGELOG.md
git commit -m "v{NEW_VERSION}"
git tag "v{NEW_VERSION}"
コミットメッセージにはバージョン文字列のみを使用します(例:v1.45.0)。本文は付けません。共同作成者のフッターも付けません。
9. プッシュの確認
AskUserQuestion を使って、「リモートにプッシュしますか?」と尋ねます。
承認された場合:
git push origin main
git push origin "v{NEW_VERSION}"
明示的な確認なしにプッシュしてはいけません。
10. 報告
## Release v{NEW_VERSION}
- Commit: {short_sha}
- Tag: v{NEW_VERSION}
- Changes: {N} items
- Contributors: {list}
- Push: {pushed / not pushed}