# committer > Git コミットの作成を支援する。以下の場合に発動: (1) ユーザーが /commit と入力した時、(2) コード変更が完了しコミットが適切と判断した時、(3) ユーザーがコミットを依頼した時。変更内容を分析し、適切なコミットメッセージを生成してコミットを作成する。 - Author: muryoimpl - Repository: muryoimpl/dotfiles - Version: 20260104234155 - Stars: 2 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/muryoimpl/dotfiles - Web: https://mule.run/skillshub/@@muryoimpl/dotfiles~committer:20260104234155 --- --- name: committer description: "Git コミットの作成を支援する。以下の場合に発動: (1) ユーザーが /commit と入力した時、(2) コード変更が完了しコミットが適切と判断した時、(3) ユーザーがコミットを依頼した時。変更内容を分析し、適切なコミットメッセージを生成してコミットを作成する。" --- # コミッター 変更内容を分析し、適切なコミットメッセージでコミットを作成する。 ## 前提条件 コミット実行前に必ず確認: - ユーザーから明示的にコミットを依頼されている - すべてのテストがパス - リンター警告がゼロ - 変更が単一の論理的な作業単位 ## ワークフロー ### 1. 状態確認 以下のコマンドを並列実行: ```bash git status # 変更ファイル一覧 git diff --staged # ステージ済み変更 git diff # 未ステージ変更 git log --oneline -5 # 直近のコミットスタイル確認 ``` ### 2. 変更の分析 | 確認項目 | チェック内容 | |----------|-------------| | 変更の種類 | 新機能、バグ修正、リファクタリング、ドキュメント、テストなど | | 影響範囲 | 変更されたファイル、モジュール、機能 | | 目的 | なぜこの変更が必要か | ### 3. コミットメッセージ作成 **原則**: - 「何を」ではなく「なぜ」を重視 - 1〜2文で簡潔に - リポジトリの既存スタイルに合わせる **言語選択**: - リポジトリの既存コミットが日本語 → 日本語 - リポジトリの既存コミットが英語 → 英語 - 混在または不明 → ユーザーに確認 **良いメッセージの例**: ``` ユーザー認証のセッションタイムアウトを修正 セッションが24時間で切れる問題を解決。 タイムアウト値を設定可能にした。 ``` **避けるべき例**: ``` fix bug # 何を修正したか不明 Update files # 具体性がない WIP # 作業途中をコミットしない ``` ### 4. コミット実行 ```bash # 関連ファイルをステージング git add # HEREDOC でメッセージを渡す(フォーマット維持のため) git commit -m "$(cat <<'EOF' コミットメッセージ 詳細説明(必要な場合) EOF )" # 成功確認 git status ``` ## コミット単位 変更は以下の 2 種類に明確に分離します: - **構造変更(Structural Changes)** - コードの配置・整理・フォーマット - 動作は一切変更しない - 例:メソッドの並び替え、インポート整理、変数名変更 - **動作変更(Behavioral Changes)** - 機能の追加・修正・削除 - テスト結果が変わる変更 - 例:新機能追加、バグ修正、ロジック変更 **重要**:構造変更と動作変更を同一コミットに含めない ## 禁止事項 以下は絶対に行わない: - `--force` オプションの使用 - `--no-verify` でフック回避 - 機密情報(.env、credentials など)のコミット - main/master への直接プッシュ - ユーザーの明示的な依頼なしのコミット - `git commit --amend` の使用(特別な条件を除く) ## --amend の使用条件 以下の**すべて**を満たす場合のみ使用可能: 1. ユーザーが明示的に amend を要求、または pre-commit hook が自動修正したファイルを含める必要がある 2. HEAD コミットが**この会話中に自分が作成した**もの 3. コミットがリモートに**プッシュされていない** 確認方法: ```bash git log -1 --format='%an %ae' # 作成者確認 git status # "Your branch is ahead" を確認 ``` ## リソース - [references/commit-guidelines.md](references/commit-guidelines.md) - コミットメッセージのベストプラクティス詳細