--- name: commit description: コード変更を適切なgitコミット戦略でgit commitします。基本的には新しくgitコミットを作成し、必要な場合にのみ履歴整理を行います。実装完了時やユーザーがgit commitを依頼した時に使用します。 --- # Commit and Push Code Changes コード変更を適切なgitコミット戦略でgit commitするためのスキルです。 現在の依頼・許可範囲でコミットする変更だけを選び、無関係な変更や秘密値を含めないでください。非公開情報や移植元の名前・URLなど、公開を許可されていない情報をコミットメッセージに記載しないでください。 このスキルが呼び出された際には、Instructionsに従って、コード変更のgit commitを行ってください。 # Instructions ## 実行ステップ 以下のステップでコード変更のgit commitを行ってください。 ### ステップ1: ブランチとgitコミット履歴の確認 以下のコマンドで現在の状態を確認: ```bash git status git symbolic-ref refs/remotes/origin/HEAD git log --oneline --graph /..HEAD ``` `/` は確認したリモートとデフォルトブランチに置き換える。`origin/HEAD` が未設定ならリモートの情報や利用側の規約から確認し、`main` と決めつけない。 確認事項: - 現在のブランチ名 - `origin/HEAD` が指すデフォルトブランチ名 - デフォルトブランチから何gitコミット進んでいるか - 各gitコミットの内容と粒度 ### ステップ2: ブランチ方針を確認 現在のブランチがデフォルトブランチの場合、ユーザーが直接pushを明示していなければ作業ブランチを作成してください。ユーザーが`main`への直接commit・pushを明示した場合は、その指示を優先してください。 ブランチ名は `feature/` 固定ではなく、変更内容に応じて gitコミットメッセージのtypeと揃えます。 **推奨prefix:** - `feat/`: 新機能 - `fix/`: バグ修正 - `refactor/`: リファクタリング - `test/`: テスト追加・修正 - `docs/`: ドキュメント変更 - `chore/`: ビルドプロセスやツールの変更 - `misc/`: 上記に当てはまらない変更 **ブランチ名の形式:** ```text / ``` 例: - `feat/add-data-import` - `fix/handle-empty-list` - `refactor/simplify-worker-retry` **実行方法:** ```bash git switch -c / ``` すでにデフォルトブランチ以外で作業している場合は、このステップを スキップして次に進んでください。 ### ステップ2.5: コミット前の変更範囲別検証(必須) 利用側の `AGENTS.md` と既存の検証コマンドを確認し、変更したmodule・packageと直接依存先に必要なテスト、型チェック、Lint、buildを選んで実行してください。全体検証は、利用側の規約で定める場合、影響範囲を限定できない場合、またはユーザーが明示した場合に実行します。実行した検証と結果を報告してください。 選定した検証が1つでも失敗した場合は、コミットを作成せずその場で原因を修正してください。 ### ステップ3: gitコミット戦略の判断 以下の基準でgitコミット戦略を選択: #### 戦略A: 新規gitコミット(基本戦略) 以下の場合は新規gitコミットを作成: - ブランチに初めてのgitコミット - 既存のgitコミットに関連する変更だが、追加の作業履歴として残したい - 既存のgitコミットとは異なる独立した変更 - gitコミットを分けることで履歴がより理解しやすくなる **実行方法:** ```bash git add -- <対象ファイル> git commit ``` #### 戦略B: AmendまたはSquash(例外対応) ユーザーが明示的に `--amend` やsquashを希望している場合のみ、既存のgitコミットを書き換えます。軽微な修正やPR作成前の整理だけを理由に履歴を書き換えないでください。 **実行方法:** ```bash git add -- <対象ファイル> git commit --amend ``` amendは原則として避け、新規gitコミットで履歴を積み上げることを優先してください。 gitコミットメッセージを更新する必要がある場合も、ユーザーの明示的な希望がない限り `git commit --amend` を選ばないでください。 #### 戦略C: Interactive Rebase(gitコミット再構成) ユーザーが履歴の再構成を明示的に希望している場合に限り、以下の目的でブランチ全体のgitコミットを再構成: - 複数の小さなgitコミットを論理的なまとまりに整理したい - gitコミットの順序を変更したい - 不要なgitコミットを削除したい - gitコミット履歴を意味のある単位に再編成したい **実行方法:** ```bash git rebase -i / ``` エディタで以下の操作を実行: - `pick`: gitコミットをそのまま維持 - `squash`または`s`: 前のgitコミットと統合 - `reword`または`r`: gitコミットメッセージを変更 - 行の順序を変更してgitコミット順を変更 ### ステップ4: gitコミットメッセージのガイドライン 日本語でメッセージを作成する。 gitコミットメッセージは以下の形式で記述: ``` :