Communityコーディング&開発github.com

Commit Hygiene (コミットの衛生管理)

コミット数を最小限に保ち、メッセージを短くします。コミット前、プッシュ前、修正中にコミットが積み重なったとき、または commit-check フックが警告を出したときに使用します。

Commit Hygiene (コミットの衛生管理) とは?

このスキルは、開発者が Git のコミット履歴をクリーンで読みやすく保つためのルールと手順を提供します。Jarrett のルール第 4 条に基づき、1 つの変更には論理的に必要なコミットのみを含め、レビュアーが簡単に変更内容を把握できるようにします。具体的には、コミットメッセージの件名を 72 文字以内、本文を 5 行以内に制限し、簡潔な英語を使用します。また、1 つの論理変更に 1 コミットの原則、プッシュ前の fix-up コミットの squash、コメントの短縮といった実践的なテクニックを詳しく説明しています。このスキルは主に Claude Code や Cursor、Codex などの AI エージェント向けに設計されていますが、あらゆる開発環境で Git の運用ルールとして活用できます。スキル本文には、コミットメッセージの書き方、squash の具体的なコマンド手順、よくある言い訳と現実の対比表、チェックリストが含まれており、開発者が即座に実践できるようになっています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jksim/agent-skills-jksim/tree/HEAD/skills/commit-hygiene

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Commit Hygiene(コミットの衛生管理)

概要

Jarrett のルール第 4 条: 1 つの変更には、論理的に必要なコミットだけを含める。レビュアーは各変更に対して、試行錯誤の履歴ではなく、1 つのクリーンなコミットを読む。コメントは短くする。

commit-check フックは、git commit メッセージが制限を超えた場合に警告を出します。ブロックはしません。あなたがコミットを修正します。

使用するタイミング

  • 各コミットの前。
  • 各プッシュの前。
  • 1 つの問題を修正するために複数のコミットを作成した場合。
  • commit-check フックが警告を出した場合。

手順

1. メッセージを書く

  • 件名: 72 文字以内。命令形を使用する: 「Added rules hook」ではなく「Add rules hook」。
  • 本文: 5 行以内。件名だけで十分な場合は本文を省略する。
  • 何が変わったのか、なぜ変わったのかを書く。各ファイルの説明はしない。
  • 簡略化された英語を使用する。simplified-english スキルを参照。

2. 論理変更ごとに 1 コミット

  • 1 つの論理変更: レビュアーが 1 つの単位として承認または却下できる、機能の一部、修正、リファクタリング。
  • 1 つのコミットにリファクタリングと振る舞いの変更を混在させない。
  • 試行錯誤のコミットはしない。変更が動作し、テストが通ったときにコミットする。

3. プッシュ前に fix-up コミットを squash する

fix-up コミットは、同じ変更内の以前のコミットを修正するものです。例:「fix typo」「wip」「address review」。

  1. git commit --fixup <sha> で fix-up コミットを作成する。
  2. エディターなしで squash する: GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash <base>。
  3. リベースがコンフリクトで停止した場合、ファイルを修正して git add <files> を実行する。その後 GIT_EDITOR=true git rebase --continue を実行する。中止するには git rebase --abort を実行する。
  4. 再度テストを実行する。
  5. 結果を確認する: git log --oneline <base>..HEAD。

最後のコミットが修正対象の場合、git commit --amend --no-edit を使用する。

警告: 共有ブランチ上にあるコミットを書き換えないこと。まずユーザーに確認すること。書き換えはチームメイト全員にリセットを強制します。

4. コメントを短く保つ

  • コードが明確でない場合のみコメントを書く。
  • 通常は 1 行で十分。何をしているかではなく、なぜそうしているかを書く。
  • コメントに変更履歴を書かない。Git が履歴を保持する。

よくある言い訳

言い訳現実
「小さなコミットは進捗を示す」レビュアーが必要とするのは結果であり、道のりではない。試行錯誤のコミットは squash せよ。
「長いメッセージはより多くの文脈を提供する」長いメッセージは読まれない。文脈は仕様書または PR に書け。
「後で squash する」後はプッシュ後だ。プッシュ前に squash せよ。
「フックは警告するだけだから、制限は任意だ」制限はチームのルールだ。フックは修正できるように警告している。

警告サイン

  • プッシュ前に git log に「wip」「fix」「oops」「try again」が表示される。
  • 1 つのバグ修正に対して複数のコミットがある。
  • コミット本文に変更された各ファイルが列挙されている。
  • コードが言っていることを繰り返すだけのコメント。

確認項目

  • 各件名が 72 文字以内で、命令形を使用している。
  • 各本文が 5 行以内である。
  • git log --oneline <base>..HEAD が論理変更ごとに 1 コミットを示している。
  • プッシュ前に fix-up コミットが残っていない。
  • リベース後もテストが通る。

既知の制限: フックは git -C <dir> commit や git -c <key>=<value> commit をチェックしません。また、-F <file> など、読み取れない一部のメッセージはスキップします。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル