◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-04-22中級

Claude Code で Conventional Commits を自動生成する — git diff から type と scope を推論させる

コミットメッセージがいつのまにか「update」ばかりになっていませんか。Claude Code に git diff を読ませて Conventional Commits 形式に変換する、小さな運用ルールをまとめました。

claude-code132git18conventional-commitsworkflow26automation55

変更量が多い日ほど、コミットメッセージが「update」「fix」「wip」だけで埋まっていく — そんな経験はないでしょうか。私自身、一人で複数サイトのコードを触っているとログが荒れがちで、あとで「どのコミットで何を直したのか」を追うのに時間を取られることがありました。

Claude Code は git diff をそのまま読める環境にいるので、コミットメッセージ生成は本来とても得意な作業です。ただし、何の手当てもせずに「いい感じでコミットして」と頼むと、件名だけが整っていて本文が空、あるいは毎回違う書式、という状態になりがちです。

なぜ Conventional Commits を Claude Code に任せたいのか

Conventional Commits は feat:・fix:・refactor: などの接頭辞で変更種別を明示する規約です。feat: add login form のように一目で意図が分かるため、後から履歴を掘り返すときの負担が大幅に下がります。

手で書けば済む話ではあるのですが、毎回 type と scope を考え直すのは思っている以上に疲れます。そして疲れると、冒頭で挙げたような「update」一辺倒の履歴が出来上がります。これは Claude Code が肩代わりするのに向いている、典型的な「判断の繰り返し」です。

前提として、Conventional Commits の全体像や周辺ツールを押さえたい方は、先にClaude Code の Git ワークフロー自動化に目を通しておくと、この記事の位置づけがよく分かります。

最小構成で試す — 1つのプロンプトから始める

いきなりフックやスラッシュコマンドを作る前に、まずは単発のプロンプトで動きを確認するのがおすすめです。Claude Code のチャットに次のテキストをそのまま貼って、挙動を見てください。

次の手順でコミットメッセージを作成してください。
 
1. `git diff --staged` を実行して、ステージされた差分を確認する
2. 変更内容を 1〜2 行で要約する
3. 下記のテンプレートに沿って出力する(本文は不要なら省略可)
 
<type>(<scope>): <subject>
 
<body>
<footer>
 
type は feat / fix / refactor / perf / docs / test / chore / build / ci
のいずれかを選び、推論の根拠も 1 行だけ示してください。

ここで重要なのは「推論の根拠を 1 行だけ示す」という指示です。ただ結果だけを受け取ると、feat と fix の境界があいまいなコミットで違和感が残ります。根拠が見えると、その場で「これは refactor だから書き直して」と返しやすく、会話を1往復で終わらせやすくなります。

/commit スラッシュコマンドに育てる

挙動に満足したら、毎回貼り付けるのは面倒なのでスラッシュコマンド化します。プロジェクト直下の .claude/commands/ に次のファイルを置くだけで、/commit と打つだけで呼び出せるようになります。

---
description: "Conventional Commits 形式でコミットメッセージを生成する"
allowed-tools: Bash(git diff:*), Bash(git status:*)
---
 
`git diff --staged` を実行し、Conventional Commits 形式でコミットメッセージを
提案してください。規則は以下の通りです。
 
- type は feat / fix / refactor / perf / docs / test / chore / build / ci から選ぶ
- subject は 50 文字以内、命令形で書く
- body は「何を」「なぜ」の順で 1 段落以内にまとめる
- 機能追加か既存挙動の変更か迷ったら fix ではなく feat を選び、根拠を body に書く
 
最後に `git commit -m "..."` 形式で貼り付けやすい1行も併記してください。

allowed-tools で git diff と git status だけ許可しておくと、コミットの内容と関係ないコマンドが差し込まれる余地がなくなり、挙動が安定します。スラッシュコマンド全般の設計はClaude Code のカスタムスラッシュコマンドガイドにまとめたので、複数のコマンドを整理したい方は併せてご覧ください。

PostToolUse フックで差分を要約する自動化

もう一歩進めて、ステージングのタイミングで差分要約を自動生成したくなったら、フックを使います。PostToolUse で git add を検知し、そのまま差分の要約をメモリファイルに書き出す、という流れです。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'echo \"$(date -Iseconds)\" >> .claude/last-stage.log && git diff --staged --stat >> .claude/last-stage.log'"
          }
        ]
      }
    ]
  }
}

この構成の狙いは「コミットメッセージを書く直前に、そのセッション中に何をステージしたかを思い出せる」ことです。フックの仕組みそのものはClaude Code のフック自動化で詳しく扱っているので、イベント種別の全体像を押さえたい場合はそちらを参照してください。

注意点として、フックから直接 Claude に問い合わせるような設計は避けるのがおすすめです。コミット前は差分の「ログ化」だけに留め、メッセージ生成はユーザーが /commit を叩いたときに行う、と役割を分けたほうが、意図しないコミットが発生しにくくなります。

chore / refactor / fix の誤判定を減らす工夫

Conventional Commits の運用で一番もめるのが type の選び方です。Claude Code も例外ではなく、放っておくと以下のような取り違えが起きます。

  • バグ修正なのに feat: 欠けていた機能を「追加した」と解釈してしまう
  • リファクタなのに fix: 動作は変わらないはずなのに、差分を見て「壊れていたから直した」と誤認する
  • 設定変更なのに chore: 依存関係の更新を全部 chore にまとめてしまい、build や ci が埋もれる

対策は、判断基準をプロジェクトの CLAUDE.md に短く書いておくことです。私が 4 サイト運用で使っている書き方を抜き出すと、次のような形になります。

## コミットメッセージの方針
 
- ユーザーから見て挙動が変わる追加/変更: feat
- 既にあった挙動が意図通りに戻る修正: fix
- 挙動を変えない内部構造の変更: refactor
- 依存更新はパッケージ名が分かる場合 build、わからなければ chore
- CI ファイル (`.github/workflows/` 等) のみの変更: ci
- 迷ったら feat か refactor を優先し、fix は使わない

「迷ったら fix を使わない」の一文が、体感でいちばん効きます。理由は単純で、fix は後から CHANGELOG に書くときに重み付けが強くなるため、安易に使うと「何も壊れていなかったのに fix が並ぶ」履歴になりやすいからです。プロジェクトのリリースノートをきれいに保ちたい方は、このルールを入れてみてください。

CLAUDE.md の設計そのものを見直したい場合は、CLAUDE.md とメモリの使い方で運用パターンをいくつか紹介しています。

実際のビフォー/アフター

イメージが掴みにくいと思うので、私が先週実際に行ったコミットで比較してみます。疲れた頭のまま手で書いた場合と、/commit に差分を読ませて生成した場合の違いです。

Before(手書き・疲れた状態):

fix article slug

After(差分から生成):

fix(articles): correct category path for newly-migrated MDX files

Two MDX files were moved from api-sdk/ to claude-code/ but their
internal links still pointed at the old category, causing 404s in
production. Update the links to match the new category.

手書きのほうは、後から何を直したのか分かるためにコミット本体を開く必要があります。生成されたほうは「どの不具合をどう直したのか」がコミットメッセージだけで完結しています。1 コミットごとに数分ずつしか変わらない差ですが、何百コミットも積み重なると、履歴を遡る時間として跳ね返ってきます。

明日からできる最初の一歩

すべての仕組みを一度に入れようとすると、かえって運用が続きません。まず今日は、.claude/commands/commit.md を 1 ファイルだけ作って /commit を叩いてみてください。5 分で設定でき、それだけでも履歴の品質は目に見えて変わります。

フックや CLAUDE.md の整備は、/commit が自分の書き方に馴染んできてから手を付けても遅くありません。道具は、自分の手に馴染んだ順に足していくのがいちばん長続きします。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

⟐ Claude Code2026-05-02
Claude Code の Edit ツールで「old_string is not unique」エラーを止める実践的な書き換え戦略
Claude Code の Edit ツールで「old_string is not unique」が頻発するのは、編集ターゲットの一意性をプロンプト側で保証していないことが根本原因です。再発を防ぐ書き換え戦略を解説します。
⟐ Claude Code2026-04-30
Claude Code Skills を組み合わせる設計術 — 単一スキルでは届かない自動化を作る
Claude Code の Skills を1つずつ作るところから一歩進み、複数スキルを連携させて自動化を組む設計手法をお伝えします。Pipeline・条件分岐・メタスキルの3パターンとよくある落とし穴を実装例付きで詳述します。
⟐ Claude Code2026-03-28
Claude Code × Playwright で E2E テストを本番運用に乗せる — 落とし穴と導入の判断基準
Claude Code と Playwright を組み合わせて E2E テストを本番運用するための実装パターンと、導入効果の測り方。Cloudflare Workers/Pages preview deployment 下での落とし穴と、個人開発者がテストを導入する判断基準まで踏み込んで解説します。