✨
GitHub Copilotで実現するコミットメッセージの自動生成
以前、czgとcommitlintを組み合わせて、規約に沿ったコミットメッセージを自動生成する方法を紹介しました。
今回は、GitHub CopilotとAwesome GitHub CopilotのConventional Commitを使い、コミットメッセージを生成する手法を紹介します。
前提
- GitHub CLIのがインストールされていること
- GitHub Copilotを利用できる環境であること
Skillのインストール
まずはAwesome CopilotのConventional Commitをインストールします。
gh skill install github/awesome-copilot conventional-commit
.agents/skills/conventional-commitにSKILL.mdがインストールされます。
Skillのワークフロー
Conventional Commitの基本的な流れは次のとおりです。
-
git statusで変更されたファイルを確認する -
git diffまたはgit diff --cachedで差分を検査する -
git add <file>で変更をステージする - コミットメッセージを生成する
- メッセージ生成後、以下のコマンドを実行する
git commit -m "type(scope): description"
SKILL.mdから読み取れるコミットメッセージ構造
Conventional CommitのSkillでは、次のようなXML形式でコミットメッセージを構成しています。
<commit-message>
<type>feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert</type>
<scope>(スコープ: 省略可)</scope>
<description>変更内容の要約(命令形)</description>
<body>(オプション: より詳細な説明)</body>
<footer>(オプション: 例 BREAKING CHANGE: 詳細, または関連イシュー番号)</footer>
</commit-message>
typeの選択肢
- feat: 新機能の追加
- fix: バグ修正
- docs: ドキュメントのみの変更
- style: コードの意味に影響しない変更
- refactor: バグ修正や新機能追加ではないコードの変更
- perf: パフォーマンス改善
- test: テスト関連の変更
- build: ビルドシステムや外部依存関係の変更
- ci: CI設定の変更
- chore: その他の雑務的な変更
- revert: 以前のコミットの取り消し
例
feat(parser): 配列を解析する機能を追加fix(ui): ボタンの配置を修正docs: READMEに使用方法を追記refactor: データ処理のパフォーマンスを改善chore: 依存関係を更新feat!: 登録時にメールを送信 (BREAKING CHANGE: メールサービスが必須化)
検証ルール
- type: 指定された型のいずれかである必要がある
- scope: 任意だが、変更箇所を明確にするために推奨
- description: 必須。命令形で簡潔に記述
- body: 任意。補足説明が必要な場合に使用
- footer: 任意。破壊的変更や Issue 参照を記載
実際の使い方
GitHub Copilotのコマンドやチャット機能から、Conventional CommitのSkillを呼び出すことができます。
czg + commitlintとの比較
czg + commitlint
- ローカルにczgとcommitlintをインストールして使う
-
commitlint.config.jsでルールとプロンプトを定義する - 差分から複数候補を生成し、選択してコミットを作成する
- ルールベースの検証とAIによる生成を組み合わせる
GitHub Copilot + Awesome GitHub Copilot
-
gh skill installでSkillを導入するだけで使い始められる -
SKILL.mdに定義されたワークフローとXML構造に従う - GitHub Copilotのプロンプトから直接コミットメッセージを生成する
GitHub Copilotをすでに使っている環境では、追加のローカル設定が少なくスムーズに導入できる点がメリットです。一方、czg + commitlintはローカルに細かいルールを置いて厳密にチェックしたい場合に強みがあります。
まとめ
GitHub CopilotとAwesome GitHub CopilotのConventional Commitを使用することで、Conventional Commits形式のコミットメッセージを生成できます。
-
SKILL.mdはコミット構造、例、検証ルールを含む - czg + commitlintと比べ、GitHub Copilotは設定の手間が少ない
GitHub Copilotを活用して、従来のツールベース運用とは異なる形でコミットメッセージの作成を試してみましょう。
Discussion