Zenn Dev Owayo Articles 9461d3ebb3b77a
Claude CodeのHooksで自動コミット! AIがコミットメッセージも考えてくれるツールを作った
- URL: https://zenn.dev/owayo/articles/9461d3ebb3b77a
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: Claude CodeのStop Hooksを利用して、AIによる変更を自動的にGitコミットするPython製ツール「claude-code-auto-commit」が公開された。Claude Codeが作業を終えるたびにフックが起動し、変更の有無を確認してからGemini CLIでConventional Commits形式のコミットメッセージを生成し自動コミットする。タイムアウト処理(20秒)や差分の5000文字制限によってGemini CLIのエラーを防ぐ工夫がされており、CLAUDE_CODE_AUTO_PUSH=1 の環境変数を明示的に設定した場合のみ自動プッシュが有効化される安全設計になっている。コミット言語やデフォルトメッセージも環境変数でカスタマイズ可能。
詳細
claude-code-auto-commit: Claude Code の Stop Hook で自動コミットするPython製ツール。
仕組み:
- Claude CodeのStop Hookとして python3 /path/to/auto-git-commit.py を登録(timeout: 30秒)
- Gitリポジトリ確認 → 変更確認 → Gemini CLIでメッセージ生成 → git commit の順で実行
環境変数による設定:
- CLAUDE_CODE_COMMIT_LANGUAGE: コミットメッセージの言語(デフォルト: 日本語)
- CLAUDE_CODE_DEFAULT_COMMIT_MESSAGE: Gemini失敗時のフォールバックメッセージ(デフォルト: “chore: Claude Codeによる自動修正”)
- CLAUDE_CODE_AUTO_PUSH: 自動プッシュの有効/無効(デフォルト: 0=無効、1で有効化)
実装上の工夫:
- Gemini CLIに20秒のタイムアウトを設定(subprocess.run timeout=20)
- 差分を5000文字に制限してGemini CLIの入力過多エラーを防止
- AUTO_PUSHはデフォルト無効で環境変数で明示的に有効化するまで動作しない
生成されるコミット形式: Conventional Commits(feat/fix/refactorなどのプレフィックスを自動選択)
インストール: git clone https://github.com/owayo/claude-code-auto-commit.git してパスを設定に記載