変更内容からコミットメッセージを作成

変更コードを貼り付けてチーム規則に沿ったメッセージを生成する

プロンプト · 変数 2個

先ほど作業した変更内容をコミットしようとしています。このメッセージは、数ヶ月後に「なぜこの行が変更されたのか」を調べる人が読むことになります。

私たちのチームのコミット規則は以下の通りです。{{メッセージ規則}} この規則に従ったメッセージの例は次のようになります。 fix: カートの数量を0に変更しても合計金額が残る問題を修正 refactor: 決済検証ロジックを別関数に分離

以下の変更内容を読み、コミットメッセージを3パターン作成してください。3つの案は単に言い回しが違うだけでなく、この変更を説明する視点(切り口)がそれぞれ異なるようにしてください。

形式: 各案ごとにタイトル1行と本文2〜3行。本文には「何を変更したか」ではなく、「なぜ変更したのか」と「この変更によって何が変わるのか(影響)」を記述してください。

タイトルは末尾に句点をつけず、貼り付けた変更内容から読み取れない理由やイシュー番号は捏造しないでください。理由が判断できない場合は、該当箇所に「[理由の確認が必要]」と記述してください。

変更内容: """ {{変更内容}} """

コピーしたらここに貼り付け · ChatGPT・Claudeはプロンプト入りで開きます ChatGPTで開く ↗Claudeで開く ↗Geminiで開く ↗ ビルダーで編集 授業用カード画像を保存

このプロンプトには個人情報が入りうる変数があります。実名・番号・会社名は仮名に置き換えてください。

なぜこう書くのか

文脈
先ほど作業した変更内容をコミットしようとしています。このメッセージは、数ヶ月後に「なぜこの行が変更されたのか」を調べる人が読むことになります。
例示
私たちのチームのコミット規則は以下の通りです。{{メッセージ規則}} この規則に従ったメッセージの例は次のようになります。 fix: カートの数量を0に変更しても合計金額が残る問題を修正 refactor: 決済検証ロジックを別関数に分離
課題
以下の変更内容を読み、コミットメッセージを3パターン作成してください。3つの案は単に言い回しが違うだけでなく、この変更を説明する視点(切り口)がそれぞれ異なるようにしてください。
形式
形式: 各案ごとにタイトル1行と本文2〜3行。本文には「何を変更したか」ではなく、「なぜ変更したのか」と「この変更によって何が変わるのか(影響)」を記述してください。
制約
タイトルは末尾に句点をつけず、貼り付けた変更内容から読み取れない理由やイシュー番号は捏造しないでください。理由が判断できない場合は、該当箇所に「[理由の確認が必要]」と記述してください。
入力資料
変更内容: """ {{変更内容}} """

コミットメッセージのプロンプトで規則を言葉だけで説明すると、毎回微妙に異なるフォーマットで出力されてしまいます。昨日は "fix: ~" だったのに今日は "[Fix] ~" になったり、ある日はタイトルだけ、別の日は箇条書きが5行続いたりします。リポジトリの履歴は、形式が崩れた瞬間に一覧性が損なわれます。

そこで、2番目の段落に規則の説明と合わせて実際のメッセージ**例(Few-shot)**を2行入れています。人間と同じくAIも、「50文字以内、命令形」という説明より、完成した例文を1つ見たほうがはるかに正確に倣います。例を2つ用意しているのは、1つだけだとその文章のトピック(ドメイン)まで真似してしまうからです。

課題で3パターン要求しつつ「視点が異なること」と釘を刺しているのは、単に3つ求めると語尾だけを変えた3行が返ってくるためです。形式の「なぜ変更したのか」は本文の存在意義そのものです。何を変更したのかはdiffを見ればわかるため、履歴に残すべきはその判断理由です。

最初の段落の「数ヶ月後にこの行がなぜ変わったのかを調べる人が読む」という一文も軽視できません。読み手を指定することで、文章の長さや語彙レベルが定まります。この一文がないと、今日の自分にしか伝わらない略語やタスク番号がタイトルに入ってしまいます。

制約の「イシュー番号を捏造しないでください」は、実際によく起こるトラブルを防ぐためのものです。コミットメッセージの自動生成に任せると、存在しない架空の番号をもっともらしく付けてしまうことがあります。変更内容を """ で囲むのは、diff内のコメントや文字列がプロンプトの指示として誤認されるのを防ぐためです。

用語が分からなければAha AIで: few-shot, output-format

悪い例との比較

よくある悪い例

コミットメッセージ書いて

(diffを貼り付け)

「Update cart.js」のような1行が出力されるか、逆に変更された行をそのまま転記しただけの箇条書きが出てきます。チームの規則がわからないためプレフィックスも言語も毎回バラバラになり、なぜ変更したのかがどこにも残らないため、数ヶ月後にこのコミットを開いた人が再びコードを読み解く羽目になります。

バリエーション

1つのコミットに複数の作業が混ざっている場合

1つのコミットに複数の作業が混ざっている場合

以下の変更内容に複数の異なる作業が混ざっていないか、まず判断してください。混ざっている場合は、どのようにコミットを分割すべきか「コミット順序・含める変更・タイトル」として整理してください。分割する必要がない場合は、そのまま1つのコミットとして進めるよう教えてください。規則は{{メッセージ規則}}に従ってください。

""" {{変更内容}} """

作業をまとめて行ってしまい、コミットを綺麗に分割したいときに使います。分割の判断から任せることで、レビューしやすい粒度が得られます。

英語のコミットメッセージが必要な場合

英語のコミットメッセージが必要な場合

以下の変更内容をもとに、英語のコミットメッセージを2パターン作成してください。タイトルは命令形の現在形・50文字以内、本文は1行あたり72文字以内で改行してください。規則は{{メッセージ規則}}に従いつつ、文章は英語で記述してください。難解な表現は避け、一般的によく使われる平易な単語を選んでください。

""" {{変更内容}} """

オープンソースや英語を使用するリポジトリにプッシュする際に使います。改行幅まで指定することで、ターミナル上での表示崩れを防ぎます。

モデル別の注意

diffが長い場合はファイルごとに分けて入力し、最後に「上記の内容を1つのコミットメッセージにまとめて」と依頼してください。

diffをそのまま貼り付けると記号が多く含まれるため、変更の意図を逆方向に解釈してしまうことがあります。冒頭に「今回の変更の要点は〜」と1行添えると精度が向上します。

関連プロンプト

最終更新 2026-09-02 · 誤りがありますか? 知らせる