CHANGELOGをClaudeに自動生成させる
リリースのたびにCHANGELOGを手書きしていませんか? Gitのコミット履歴はすでにそこにあります。Claude Codeを使えば、その情報を整理されたChangelogへと自動変換できます。
コミット履歴をテキストで取り出す
Section titled “コミット履歴をテキストで取り出す”まずClaude Codeに渡すための素材を用意しましょう。git log コマンドで直近のコミットを整形して出力します。
git log v1.2.0..HEAD --pretty=format:"%h %s (%an, %ad)" --date=short > commits.txtこのコマンドは「前回タグ v1.2.0 から現在の HEAD まで」の範囲を対象に、コミットハッシュ・件名・著者名・日付を1行ずつ書き出します。出力例はこんな感じです。
a3f1c2d fix: ログイン画面のバリデーションエラーを修正 (yamada, 2025-06-10)b91e004 feat: ダークモード対応を追加 (sato, 2025-06-08)c02fa11 chore: 依存パッケージをアップデート (tanaka, 2025-06-07)※コミット: Gitでファイルの変更を履歴として記録する操作。
Claude Codeにプロンプトを渡す
Section titled “Claude Codeにプロンプトを渡す”次に、このテキストをClaudeへ渡して整形させます。Claude Codeのチャット欄に以下のように入力してください。
以下のGitコミット履歴をもとに、Keep a Changelogフォーマットの日本語CHANGELOGを生成してください。feat/fix/chore などのプレフィックスでセクションを分類し、バージョンは v1.3.0、リリース日は今日の日付を使ってください。
---[commits.txt の内容をここに貼り付け]---Claudeは Added / Fixed / Changed のセクションに自動で振り分け、人間が読みやすいMarkdownを返してくれます。
※プロンプト: AIへの指示文。Claude Codeへの指示の質がそのまま出力の質に影響する。
スクリプトにまとめて毎回使い回す
Section titled “スクリプトにまとめて毎回使い回す”毎回手作業で貼り付けるのは面倒なので、シェルスクリプトにまとめてしまいましょう。
#!/bin/bashPREV_TAG=${1:-$(git describe --tags --abbrev=0)}COMMITS=$(git log "$PREV_TAG"..HEAD --pretty=format:"%h %s (%an, %ad)" --date=short)
claude "以下のGitコミット履歴からKeep a Changelog形式の日本語CHANGELOGを生成してください。\n\n$COMMITS"./gen-changelog.sh v1.2.0 のように前のタグを引数に渡すだけで、Claudeがそのままターミナル上にChangelogを出力します。出力内容を CHANGELOG.md に追記すれば完成です。コミット〜リリースの一連の作業がぐっとスムーズになりますよ。