Generate a commit message from staged changes and open $EDITOR for review before committing. Use when the user wants to commit changes or create a git commit.
From commitnpx claudepluginhub ncaq/konoka --plugin commitThis skill is limited to using the following tools:
Gitリポジトリの変更をコミットします。
AIがコミットメッセージを生成し、
ユーザが$EDITORで修正してからコミットします。
git status
ステージ済みの変更がない場合は全ての変更をステージングします。
git add --all
既にステージ済みの変更がある場合はそのまま使用します。
git diff --cached
差分がなければ「コミットする変更がありません」と報告して終了してください。
プロジェクトに.github/git-commit-instructions.mdが存在する場合はReadツールで読み込んでください。
存在しない場合はスキップしてください。
git log --oneline -10
既存のコミットメッセージのスタイルを把握してください。
ステージ済みの差分を分析し、 適切なコミットメッセージを生成してください。
プロジェクト固有のガイドラインと衝突するスタイルがある場合はそちらを優先してください。 以下はデフォルトのスタイルとして使用してください。
丁寧語とですます調で書いてください。
英単語と日本語が混在する場合は、 英単語の前後にスペースを入れないでください。 中国語の風習では普通スペースを入れますが、 日本語ではスペースを入れないのも一般的で、 私は基本的にスペースなしのスタイルを採用しています。
1行目はタイトルなので簡潔に変更の要約をしてください。 タイトルは68文字以内に収めることが推奨されます。
必要に応じて空行の後に本文を追加してください。
本文の行長はできる限り120文字以内に収めてください。 URLなど改行できないものを挿入する場合は例外です。 行長が100文字程度なのは普通の行長で全く問題ないです。 行長が120文字になっても問題はありません。
改行位置は句読点の後など、 自然な場所を選んでください。 不自然な場所で改行はしないでください。 改行位置が不自然になるぐらいなら文章を練りなおしてください。 日本語は英語と違い好きに改行して良い言語ではないので、 改行位置には十分注意してください。
コードのシンボル(関数名や変数名など)をメッセージに含める場合は、 Markdownのインラインコード記法であるバッククォートで囲んでください。
GitHub向けのissueに関連付けるキーワードはcloseなどの原形を使ってください。
本文には変更の内容だけではなく、 なぜその変更が必要だったのか、 理由をなるべく書いてください。
まず一時ディレクトリを作成します。
mktemp -dでユニークなディレクトリを作り、
その出力パスを以降のステップで使用してください。
以降の<mktemp出力>は全てこのコマンドが標準出力に出力したディレクトリパスに置き換えてください。
親ディレクトリが存在しない場合に備えて先に作成します。
mkdir -p /tmp/coding-agent-work/ && mktemp -d /tmp/coding-agent-work/commit.XXXXXX
生成したコミットメッセージをWriteツールで<mktemp出力>/COMMIT_EDITMSGに書き出してください。
git commit --verboseと同様にエディタで差分を確認できるようにするため、
コミットメッセージの後にシザーズライン(scissors line)と差分を付加します。
差分は前のステップで取得したgit diff --cachedの出力を使用してください。
diff --gitで始まる形式である必要があるので、
フルの形式を使用してください。
ファイルの内容は以下の形式にしてください。
ここにコミットメッセージ
# ------------------------ >8 ------------------------
差分を入力
以下のコマンドでユーザにコミットメッセージを編集してもらいます。 タイムアウトは最大の600秒(10分)に設定してください。
${EDITOR:-emacsclient --reuse-frame --alternate-editor=emacs} <mktemp出力>/COMMIT_EDITMSG
エディタが正常終了したら次のステップに進んでください。
エディタが異常終了した場合、 ユーザがコミットをキャンセルしたいという意思表示であると解釈して、 コミット作業をキャンセルしてください。
以下のコマンドでコミットを実行してください。
git commit --cleanup=scissors -F <mktemp出力>/COMMIT_EDITMSG
コミットが成功したら、 コミットメッセージを取得して誤字がないか確認してください。
git log -1 --format=%B
誤字があれば修正したメッセージを一時ファイルに書き出し、 amendで上書きしてください。
git commit --amend --cleanup=scissors -F <mktemp出力>/COMMIT_EDITMSG
コミットが完了したら報告してください。