スマートコミットスキル
会話の文脈とファイルの関連性を分析し、意味のある単位でコミットを分割して作成する。
実行手順
1. 変更内容を収集
まず CWD がリポジトリルートであることを保証する(サブディレクトリにいると相対パスが不一致になるため):
bash
cd $(git rev-parse --show-toplevel)
次に変更内容を収集する:
bash
git status --short git diff git diff --cached
変更がない場合は「コミットする変更がありません」と表示して停止する。
2. 変更ファイルをテーマごとにグループ化
以下の情報を総合的に分析してグループ化する:
- •ファイルパスの関連性: 同じディレクトリ・モジュールのファイル
- •変更内容の性質: diff の内容から機能追加/修正/設定変更などを判断
- •会話の文脈: これまでの会話でユーザーが指示した作業単位
グループ化のルール:
- •同じ目的・テーマの変更は1つのコミットにまとめる
- •単一テーマしかない場合は1コミットでOK
- •設定ファイル変更、テストファイル変更、ドキュメント変更など性質が異なるものは分ける
- •各グループに対して日本語で簡潔なコミットメッセージを生成
3. コミットを実行
確認なしで即座に実行する。各グループごとに:
bash
git add <ファイル1> <ファイル2> ... git commit -m "<コミットメッセージ>"
4. 完了メッセージ
以下の形式で表示する:
code
コミットが完了しました(N件): 1. <hash> feat: ダークモード用のCSS変数を追加 2. <hash> feat: ダークモード切り替えコンポーネントを追加 3. <hash> chore: テーマ設定をconfigに追加
コミットメッセージ規約
- •Conventional Commits 形式:
<type>: <description> - •type:
feat,fix,chore,docs,refactor,test,style - •description: 日本語で簡潔に記述
注意事項
- •確認なしで即座にコミットを実行する(ユーザーへの確認は不要)
- •既にステージングされた変更(
git diff --cached)も考慮に含める - •他のスキルから呼び出された場合: コミット完了後、呼び出し元スキルの次のステップに処理を戻すこと。smart-commit の完了は呼び出し元スキル全体の完了を意味しない。