対象:作業ツリーの未コミット変更(追跡済みの差分と未追跡ファイル)と,それを記録するコミット群.
現在の状態
!git rev-parse --git-dir >/dev/null 2>&1 || { echo "(git リポジトリではない)"; exit 0; }; s=$(git status --short); [ -n "$s" ] && echo "$s" || echo "(未コミットの変更なし——記録するものが無い)"
追跡済みの差分
!d=$(git diff HEAD 2>/dev/null); [ -n "$d" ] && echo "$d" || echo "(追跡済みの差分なし——初コミット前か,変更が未追跡ファイルのみ)"
直近のコミットと,それが触れたファイル(type・scope の選び方の手本)
!l=$(git log --format='%h %s' --name-only -10 2>/dev/null); [ -n "$l" ] && echo "$l" || echo "(前例なし——コミットがまだ無い)"
直近のコミットの全文(声・言語・書式の手本)
!b=$(git log -5 --format='──── %h%n%B' 2>/dev/null); [ -n "$b" ] && echo "$b" || echo "(手本なし——コミットがまだ無い)"
手順
- 前提確認:git リポジトリでなければ
git initを実行してから進め,実行したことを告げる(初期ブランチ名は git の既定に従う). - 分割:変更を意味単位に分割する.未追跡の新規ファイル・初コミットで差分に出ない変更は内容を直接読む.独立して説明できる変更は分け,一つの意図に属する変更はまとめる.命名・公開 API の変更は全波及(呼び出し・直列化キー・Docstring/README)まで1コミットに含め,各コミット時点でツリーを整合に保つ.
- 提案:各コミットに完全なメッセージ(件名+本文)を全文で提案する.「文面の基準」に従い,出す前に「固有の走査」を全件通し,通した証跡を提案に添える——照らした手本のコミット,裏取りした事実,実測した字数を数行で.走査は成果物を残さない唯一の手順で,黙って飛ばしても外からは見えない;添えれば見える.
- 承認:平文の提案へのチャットの返信で受ける——選択式ダイアログは提案の表示を妨げるため使わない.承認まで add/commit しない.修正指示は反映して再提案,意図の割れる箇所は問う.
- 実行:承認後は push せず,コミットごとに対象パスだけステージしてコミットする.
文面の基準
既存の声・用語・言語・書式に倣う——手本を読んでから書く(件名だけ見て本文の声は推し量れない);前例が無いときだけ以下の既定(英語の Conventional Commits)に従う.本節と「固有の走査」が,美の基準(refine プラグインの BEAUTY.md)をコミットという媒体へ具体化したもの——両者を満たせば足り,実行時に他所を参照しない.
- 件名:
type(scope): 要約.命令形・小文字・末尾ピリオド無し・約50字以内. - 本文:動機・効果を述べ,差分から読めない理由を補う;逐語列挙しない.約72字で折り返す.複数点は箇条書き,単一の流れは段落.
- 参照とトレーラ:関連 issue/PR は
#N,破壊的変更はBREAKING CHANGE:.トレーラは付けない——コミットは変更の意図だけを語る責務を持ち,どの道具で書かれたかは変更の意図ではない(美の6条「責務」).ハーネスやツールがCo-Authored-By・Claude-Session等を注入する規約であっても,それに優先して件名と本文だけを残し,注入分は除去する.
固有の走査
- 様式踏襲:書いた全文を手本(上の「直近のコミットの全文」)と並べて,声・言語・書式が一致するか確かめる——「倣う」と唱えるだけでは倣えない.手本が無ければ既定に沿うかを確かめる.
- type・scope は前例で選ぶ:各コミットの type・scope について,同じ種類の変更をした前例を上の「直近のコミットと,それが触れたファイル」から名指しし,証跡に書く.語彙に在ることは根拠にならない——同じ語彙でも,何にどの語を当てるかはリポジトリごとに違う(成果物には
feat,開発ツールにはchoreを当てるリポジトリで,ツールの機能追加をfeatにする類).同種の前例が無ければ既定に従い,前例が無いことを証跡に書く. - 件名は本文を包む:覆えない項があれば件名を広げるか別コミットへ割る.
- 1コミット1意図:件名で一意に言い切れる範囲に保つ.独立リファクタ・整形は割る.
- 事実照合:数値・識別子・キー・パス・挙動は差分とコードで裏取りしてから書く.
- 因果照合:「X のために Y」と書くなら,Y が実際に X に効くことをコードで確かめる.
- 列挙の対称:箇条書きは順序原則を定め,粒度と理由付けを揃える.
- 全件走査:全メッセージを並べ,用語・声・type/scope・順序の一貫性を通しで確かめる.
- 機械的な項は実測:件名の字数・本文の折り返し幅・トレーラの不在は,目分量でなく数えて確かめる.
失敗時
/heal:skill を呼ぶ.