generate-release-notes について
generate-release-notesは、Gitの履歴からリリースノートや変更履歴を作成するClaude Code向けスキルです。Conventional Commitsを解析して種類やスコープ別に整理し、SemVerに基づくバージョンを提案します。
主な機能
- 01コミット解析と破壊的変更の検出
- 02種類とスコープ別の変更整理
- 03SemVerに基づくバージョン提案
- 04リリースノートと変更履歴の作成
活用シーン
- 01最新タグ以降のリリースノート作成
- 02変更履歴へのバージョン項目追加
- 03指定したコミット範囲の変更確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ donnfelker/ donnfelker-plugin-marketplace --skill generate-release-notesインストール後、Claude Code で/generate-release-notesを入力して読み込まれたか確認します。
同梱ファイルreferences/formats.mdscripts/parse-commits.sh
詳細
リリースノートジェネレーター
git のログ履歴から Conventional Commits 形式のコミットメッセージを解析して、リリースノートと変更履歴を生成します。Conventional Commits の仕様(feat:、fix:、docs: など)に従ったコミットを分類、グループ化し、プロフェッショナルな Markdown 形式で出力します。
ワークフロー
ステップ 1:出力形式を決める
ユーザーに必要なものを尋ねます。
- リリースノート —
RELEASE_NOTES.mdに書き込む単一リリースの概要 - 変更履歴 — 既存の
CHANGELOG.mdに追記(または新規作成) - 両方 — 両方のファイルを生成
ステップ 2:コミット範囲を決める
対象に含めるコミットを特定します。方法は 2 つあります。
前回のタグ以降(デフォルト):
範囲が指定されていない場合、パーサースクリプトは最新のタグを自動的に検出し、<tag>..HEAD を使用します。生成前にユーザーと範囲を確認するには、git describe --tags --abbrev=0 を実行して最新のタグを表示します。
カスタム範囲:
v1.0.0..v2.0.0 や v1.0.0..HEAD のようなユーザー指定の範囲を受け取り、パーサースクリプトの最初の引数として渡します。
タグが存在しない場合は、ユーザーに範囲を尋ねるか、すべてのコミットを対象にします(スクリプトが自動的に処理します)。
ステップ 3:コミットを解析する
パーサースクリプトを実行し、構造化されたコミットデータを抽出します。${CLAUDE_PLUGIN_ROOT} 変数は、プラグインがインストールされると Claude Code によって自動的に設定されます。
bash ${CLAUDE_PLUGIN_ROOT}/skills/generate-release-notes/scripts/parse-commits.sh [<range>]
スクリプトは、コミットごとに COMMIT、TYPE、SCOPE、BREAKING、DESCRIPTION、BODY、FOOTERS の各フィールドを含むブロックを 1 つ出力します。
ステップ 4:分類して書式を整える
以下の対応表を使用して、解析したコミットをタイプ別にセクションにまとめます。
| タイプ | セクション見出し |
|---|---|
| feat | 機能 |
| fix | バグ修正 |
| perf | パフォーマンスの改善 |
| refactor | コードのリファクタリング |
| docs | ドキュメント |
| style | スタイル |
| test | テスト |
| build | ビルドシステム |
| ci | 継続的インテグレーション |
| chore | その他の雑務 |
| revert | 取り消し |
順序: 上記の順番でセクションを並べます。各セクション内では、スコープのアルファベット順に項目を並べます(スコープのない項目は最後にします)。
破壊的変更: BREAKING:yes のコミットをすべて、タイプにかかわらず、先頭の専用「破壊的変更」セクションにまとめます。これらのコミットは通常のタイプ別セクションにも記載します。
スコープによるグループ化: 複数のコミットが同じスコープを共有する場合は、太字のスコープラベルの下にまとめます。
タイプが「other」のコミット: 最後に「その他の変更」セクションを設け、そこにまとめます。これらは Conventional Commits の形式に従わないコミットです。
ステップ 5:バージョンを決める
ユーザーがバージョン番号を指定した場合は、それを使用します。指定がない場合は、SemVer のルールに基づいてバージョンを提案します。
BREAKING:yesのコミットがある → MAJOR の更新を提案featのコミットがある → MINOR の更新を提案fix、docs、styleなどのみ → PATCH の更新を提案
最新のタグを読み取って現在のバージョンを特定し、次のバージョンを計算します。提案を提示し、ユーザーに承認または変更してもらいます。
ステップ 6:出力を書き込む
リリースノート → RELEASE_NOTES.md に書き込みます(以前の内容は上書きします)。
変更履歴 → 新しいバージョンの項目を CHANGELOG.md の先頭に追加します。ファイルが存在しない場合は、ヘッダーを付けて作成します。新しい項目より後にある既存の項目はすべて保持します。
正確な出力テンプレートについては、references/formats.md を参照してください。
ステップ 7:概要
書き込み後、以下を表示します。
- 使用したバージョン番号
- 処理したコミット数
- カテゴリー別の内訳(例:「機能 3 件、バグ修正 2 件、破壊的変更 1 件」)
- 書き込んだファイル
エッジケースへの対応
Conventional Commits 形式のコミットが見つからない場合: 解析可能なコミットが見つからなかったことをユーザーに警告します。代わりに、生のコミットメッセージを一覧表示するかどうか尋ねます。
Conventional Commits 形式とそれ以外の形式が混在している場合: Conventional Commits 形式のコミットは通常どおり処理し、それ以外のコミットは「その他の変更」に記載します。
範囲が空の場合: 範囲からコミットが見つからない場合は、そのことをユーザーに伝え、範囲の確認を提案します。
スコープを使用するモノレポの場合: スコープがパッケージやモジュールに対応する場合は、タイプ別ではなく、スコープ別のトップレベルセクションにまとめることを提案します。
追加リソース
参照ファイル
詳細な出力形式のテンプレートと例については、以下を参照してください。
references/formats.md— リリースノートと変更履歴の完全な出力テンプレート。各セクションの種類の例も含まれています。
スクリプト
scripts/parse-commits.sh— Git のログを構造化されたコミットデータに解析します。任意の範囲引数を指定できます。Conventional Commits の解析、スコープの抽出、破壊的変更の検出、フッターの解析に対応しています。