最小限のGitコミット は何をしますか?
目標
現在のエージェントタスクに対して、1つ以上のアトミックなコミットを作成します。生成されるすべてのコミットメッセージはConventional Commitsに従います。通常の依頼では低コンテキストで処理し、完全な差分解析は明示的なフルモード要求があった場合のみ実行します。
モード選択
- デフォルトではクイックモードを使用します。
- フルモードは、ユーザーが
fullと発言した場合、完全な差分のスキャンや分析を依頼した場合、またはすべての変更を明示的に確認するよう依頼した場合にのみ使用します。 - クイックモードを黙ってフルモードにアップグレードしないでください。クイックモードで十分な情報が得られない場合は、変更の要約を求めるか、ユーザーにフルモードを選択するよう依頼してください。
クイックモード
まずはエージェントが現在のタスクについて明確にした要約を使用します。必要な場合にのみ、以下を確認します:
git status --short
git diff --stat
完全な差分や履歴は読み取らないでください。タスク要約にない変更については推測しないでください。明示された変更をアトミックなコミットにグループ化し、メッセージを生成します。ユーザーが明示的にコミットを依頼した場合、ファイルの境界が不明瞭なときは、インデックスを変更したりコミットを作成する前に、予定しているファイルやメッセージを表示してください。
フルモード
関連するワーキングツリーとステージングされた差分をすべて読み取り、変更されたすべてのファイルを検査し、Conventional Commitsリファレンスを読んでください。欠落している機能、テスト、ドキュメント、設定、無関係なファイル、機密ファイル、生成ファイル、独立した論理的な変更がないか確認してください。生成されたファイルがバージョン管理に含まれるべきかを確認:ロックファイルやマイグレーションなどプロジェクトに必要な出力は保持し、ビルド成果物やローカル出力は除外してください。独立した機能、バグ修正、リファクタリング、フォーマットのみの変更はアトミックなコミットに分割し、緊密に結合されていて独立したテストや元に戻すことができない変更はまとめてください。既存のプロジェクトコマンドを使用して、変更されたファイルに関連するチェックを実行してください。デフォルトではテスト、リント、型チェックの全スイートを実行しないでください。タスク中にすでに実行されたチェックを再利用し、要求された場合や変更に必要な場合にのみ検証を拡張してください。明示的に要求されない限り、履歴を確認しないでください。
git addまたはgit commitの前に、現在のタスクの範囲外にあるユーザーの変更を保持してください。それらの変更操作は、ユーザーが明示的にコミットを依頼した場合にのみ実行してください。このスキルの一部としてプッシュは決して行わないでください。
コミットルール
以下の形式を使用します:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
- 新機能には
featを、バグ修正にはfixを使用します。 - プロジェクトで使用されている
docs、style、refactor、perf、test、build、ci、chore、revertのタイプを、変更を正確に説明する場合に優先して使用します。 - 名詞のスコープは、有用なコンテキストを追加する場合にのみ括弧内で使用します。
- 破壊的変更は、コロンの前に
!を付けるか、大文字のBREAKING CHANGE:フッターでマークします。 - 説明は簡潔で、現在形、命令形、できれば72文字未満にします。
- 1つのコミットは1つの論理的な変更を表します。独立した機能、修正、テスト、ドキュメント、リファクタリングは可能な限り分割します。
fixはSemVer PATCH、featはMINOR、破壊的変更はMAJORに対応します。別途要求がない限り、バージョンファイルは変更しないでください。
安全性と確認
- デフォルトで
git add .を使用しないでください。現在のタスクに属するファイルのみを追加してください。 .env、認証情報、トークン、秘密鍵、その他の機密情報をコミットしないでください。- フルモードでは、ステージングされた内容に機密情報がないか確認し、生成ファイルやビルドファイルがプロジェクトに期待されるものであることを確認してから含めてください。
- Git設定の変更、フックのスキップ、force-push、既存のコミットの修正は、ユーザーがその正確なアクションを明示的に要求した場合を除き、決して行わないでください。
- 既存のユーザー変更とエージェントの変更を混在させないでください。
- タスクの境界、ファイルの所有権、論理的な分割、機密ファイルの状態が不明瞭な場合は、停止して確認してください。
- メッセージを作成することはコミットを作成する許可ではありません。
git addまたはgit commitの前に、明示的なコミット要求が必要です。
リファレンス
references/conventional-commits.mdは、フルモード、またはタイプ、フッター、破壊的変更、revert、SemVer、FAQの質問で詳細な処理が必要な場合に読んでください。