mcpField
G
generate-release-notes

generate-release-notes

github.com/donnfelker開発4763 回インストール20 週間前に更新
リポジトリ

generate-release-notes について

generate-release-notesは、Gitの履歴からリリースノートや変更履歴を作成するClaude Code向けスキルです。Conventional Commitsを解析して種類やスコープ別に整理し、SemVerに基づくバージョンを提案します。

主な機能

  1. 01コミット解析と破壊的変更の検出
  2. 02種類とスコープ別の変更整理
  3. 03SemVerに基づくバージョン提案
  4. 04リリースノートと変更履歴の作成

活用シーン

  1. 01最新タグ以降のリリースノート作成
  2. 02変更履歴へのバージョン項目追加
  3. 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 の解析、スコープの抽出、破壊的変更の検出、フッターの解析に対応しています。

コメント