Git Commit Format について
HyperShift のコミットメッセージに Conventional Commits を適用するスキルです。形式、必須フッター、破壊的変更の表記、gitlint による検証を定めています。
主な機能
- 01Conventional Commits の形式
- 02コミット種別とスコープの指針
- 03破壊的変更の表記
- 04Signed-off-by と Assisted-by のフッター
- 05gitlint の検証ルール
活用シーン
- 01HyperShift の機能追加や修正のコミット作成
- 02AI 支援で作成したメッセージへの署名追加
- 03タイトル、本文行、フッターの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ openshift/ hypershift --skill git-commit-formatインストール後、Claude Code で/git-commit-formatを入力して読み込まれたか確認します。
詳細
Git コミットメッセージの書式ルール
HyperShift プロジェクトのすべての Git コミットに、Conventional Commits 形式を適用してください。
コミットメッセージの形式
<type>(<scope>): <description>
[optional body]
[footers]
コミットの種類
- feat:新機能
- fix:バグ修正
- docs:ドキュメントの変更
- style:コードスタイルの変更(フォーマットなど)
- refactor:コードのリファクタリング(機能の変更なし)
- test:テストの追加・更新
- chore:メンテナンス作業
- build:ビルドシステムまたは依存関係の変更
- ci:CI/CD の変更
- perf:パフォーマンスの改善
- revert:以前のコミットの取り消し
破壊的変更
! を付けて明示する場合
feat!: send email when product shipped
BREAKING CHANGE フッターを付ける場合
feat: allow config to extend other configs
BREAKING CHANGE: `extends` key now used for extending config files
! と BREAKING CHANGE の両方を付ける場合
chore!: drop support for Node 6
BREAKING CHANGE: use JavaScript features not available in Node 6.
必須のフッター
Signed-off-by フッター
必ず、名前とメールアドレスを含む Signed-off-by フッターを付けてください。
次の優先順位で認証情報を取得してください。
- 環境変数:
$GIT_AUTHOR_NAMEと$GIT_AUTHOR_EMAIL - Git の設定:
git config user.nameとgit config user.email - どちらも設定されていない場合は、ユーザーに詳細を尋ねてください
Assisted-by フッター
AI アシスタントがコミットメッセージの作成または生成を支援した場合は、Assisted-by: LLM フッターを付けてください。人が作成したコミットメッセージには付けないでください。
Assisted-by: LLM
Gitlint の検証ルール
make run-gitlintを実行して、コミットメッセージを検証してください- タイトル行:最大 120 文字
- 本文の各行:最大 140 文字
- Conventional Commits 形式を使用してください
- 必須のフッター(
Signed-off-by)を含めてください - 行末に空白を入れないでください
例
シンプルなコミット
docs: correct spelling of CHANGELOG
Signed-off-by: Bryan Cox <[email protected]>
Assisted-by: LLM
スコープ付き
feat(azure): add workload identity support
Signed-off-by: Bryan Cox <[email protected]>
Assisted-by: LLM
複数段落とフッターを含む場合
fix: prevent racing of requests
Introduce request ID and reference to latest request. Dismiss
incoming responses other than from latest request.
Remove timeouts which were used to mitigate racing but are
obsolete now.
Reviewed-by: Jane Doe
Refs: #123
Signed-off-by: Bryan Cox <[email protected]>
Assisted-by: LLM
Conventional Commits の例
説明と破壊的変更フッターを含むコミットメッセージ:
feat: allow provided config object to extend other configs
Signed-off-by: Bryan Cox <[email protected]>
BREAKING CHANGE: `extends` key in config file is now used for extending other config files
破壊的変更を明示するために ! を付けたコミットメッセージ:
feat!: send an email to the customer when a product is shipped
Signed-off-by: Bryan Cox <[email protected]>
スコープを指定し、破壊的変更を明示するために ! を付けたコミットメッセージ:
feat(api)!: send an email to the customer when a product is shipped
Signed-off-by: Bryan Cox <[email protected]>
! と BREAKING CHANGE フッターの両方を含むコミットメッセージ:
chore!: drop support for Node 6
Signed-off-by: Bryan Cox <[email protected]>
BREAKING CHANGE: use JavaScript features not available in Node 6.
本文のないコミットメッセージ:
docs: correct spelling of CHANGELOG
Signed-off-by: Bryan Cox <[email protected]>
スコープ付きのコミットメッセージ:
feat(lang): add Polish language
Signed-off-by: Bryan Cox <[email protected]>
複数段落の本文と複数のフッターを含むコミットメッセージ:
fix: prevent racing of requests
Introduce a request ID and a reference to the latest request. Dismiss
incoming responses other than from the latest request.
Remove timeouts which were used to mitigate the racing issue but are
obsolete now.
Reviewed-by: Z
Refs: #123
Signed-off-by: Bryan Cox <[email protected]>
クイックチェックリスト
コミットを作成する際は、次の項目を確認してください。
- Conventional Commits 形式を使用する:
<type>(<scope>): <description> - 命令形の件名を使い、適切な場合は「なぜ」と「どのように」を説明する
- タイトルを 120 文字未満にする
- 本文の各行を 140 文字未満にする
-
Signed-off-byフッターを含める - AI アシスタントがコミットメッセージの作成または生成を支援した場合は
Assisted-by: LLMを含め、人が作成した場合は省略する -
make run-gitlintで検証する - 破壊的変更には
!またはBREAKING CHANGEを使用する
参考資料
Conventional Commits 仕様:https://www.conventionalcommits.org/en/v1.0.0/#specification
コメント
Markdown 対応