---
name: git-commit
description: Gitの変更を安全にコミットするためのPlaybook。`git status` と `git diff` で差分を確認し、変更内容に合うプレフィックスを選んで日本語コミットメッセージ規約を満たしたうえで `git commit` を実行する必要があるときに使う。コミット実行依頼、コミットメッセージ作成依頼、コミット直前の最終確認で適用する。
---

# Gitコミット実行

重要: すべてのコミットメッセージは日本語で記述する。

## 実行手順

1. ワークツリーと差分を確認する。
- `git status --short`
- `git diff --`
- `git diff --staged --`

2. 変更意図ごとにコミット単位を整理する。
- 無関係な変更が混在する場合はコミットを分割する。
- コミット対象が空なら停止して理由を報告する。

3. 必要なファイルのみをステージする。
- 個別指定を優先する: `git add <path>`
- 追加後に再確認する: `git status --short`

4. プレフィックスを選択する。
- `feat`: 新機能の追加
- `fix`: バグ修正
- `docs`: ドキュメントのみの変更
- `style`: 動作に影響しない変更（フォーマットなど）
- `refactor`: 機能追加やバグ修正を伴わない構造変更
- `perf`: パフォーマンス改善
- `test`: テストの追加または修正
- `chore`: ビルド、補助ツール、依存関係などの変更

5. コミットメッセージを作成し、規約チェックを通す。
- 形式: `prefix: メッセージ`
- 全体文字数: 50文字以内（prefixを含む）
- 文体: 現在形（辞書形）または体言止め
- 末尾: 句点（。）を付けない
- 言語: プレフィックス後の本文は日本語のみ

6. 文字数を機械的に確認する。
- `msg='feat: ユーザー認証機能を追加'`
- `printf %s \"$msg\" | wc -m`
- 50を超える場合は短く書き直して再計測する。

7. コミットを実行する。
- `git commit -m \"$msg\"`
- 実行後に `git show --stat --oneline -1` で内容を確認する。

8. 結果を報告する。
- コミットハッシュ、件名、変更ファイルを簡潔に共有する。
- 未ステージ変更が残る場合は明示する。

## メッセージ例

- 良い例: `feat: ユーザー認証機能を追加`
- 悪い例: `feat: Add user authentication`
