/commit - 変更分析・分割コミット
変更内容を分析し、意味的なまとまりで分割コミットを行う。
手順
- 変更内容の分析
以下のコマンドで変更内容を取得する:
git status git diff git diff --cached
変更がない場合はその旨を伝えて終了する。
- 分割案の作成
変更内容を意味的なまとまりでグループ化する。以下の順序に従う:
-
ドキュメント(docs/ 等)があれば常に最初のコミットにする
-
残りの変更を機能的なまとまりでグループ化
- 分割案の提示
AskUserQuestionツールを使い、テーブル形式で分割案をユーザーに提示する:
コミット分割案
| # | タイプ | 対象ファイル | コミットメッセージ |
|---|---|---|---|
| 1 | docs | docs/xxx.md | docs: XXXを追加 |
| 2 | feat | src/features/xxx/... | feat(xxx): YYYを実装 |
| 3 | fix | src/shared/... | fix(shared): ZZZを修正 |
この分割案で進めてよいですか? (順番の入れ替え、コミットの統合・分割、メッセージの変更があれば指示してください)
- コミット実行
ユーザーの承認後、各コミットを順次実行する:
-
git add で対象ファイルをステージング
-
Conventional Commits形式のメッセージ(日本語)
-
Co-Authored-By を付与
git add {files} git commit -m "$(cat <<'EOF' {type}({scope}): {message}
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> EOF )"
- 完了報告
✅ {N}件のコミットを作成しました
{コミットログの要約}
分割の粒度
-
1コミット = 1つの目的・スコープ(タイプではなく「何のためにやったか」で分ける)
-
目安: ドキュメント / 開発環境・リポジトリ設定 / 機能実装 をそれぞれ1コミットにまとめる
-
複数の独立した機能を実装した場合のみ、機能ごとにコミットを分ける
-
例: 「ユーザー一覧の追加」と「ログイン修正」が混在 → 2コミットに分ける
-
例: 「ユーザー一覧の追加」に伴うservice・hook・component → 1コミットにまとめる
注意事項
-
コミットタイプ: feat, fix, refactor, docs, test, chore, style
-
メッセージは日本語で記述
-
未ステージの変更がある場合は、全てをコミット対象として分析する