Overview
gle は、Claude Code セッション中の「作業の意図(prompt)」と「作業要約(stop summary)」を .git/GLE_COMMIT_CONTEXT.md に自動蓄積し、gle commit 実行時に LLM でコミットメッセージを生成する CLI ツール。
git diff だけでは読めない why を、AI セッションログから自動で補う。通常の git commit / git commit -m は一切変更しない。
Background
- コミットメッセージの手書きが面倒で、しかも what しか書けない問題
- Claude Code の tty 問題でセッション出力をパイプできないため、Hooks を経由してコンテキストを収集する設計
git mvや大量リネーム後に diff が肥大化するケースを前処理で解消
Key Features
コンテキスト自動収集(Claude Code Hooks)
UserPromptSubmithook でプロンプト文字列を.git/GLE_COMMIT_CONTEXT.mdに追記Stophook(非同期)でアシスタントの応答サマリーを追記.git/直下に配置するため gitignore 設定不要・push されない
gle commit によるメッセージ生成
- staged diff(リネーム検出・ロックファイル除外・maxDiffChars 切り詰め)と蓄積コンテキストを LLM に渡して生成
--editフラグで生成後にエディタを起動して確認・編集-m/--amend指定時は生成をスキップして通常のgit commitにフォールバック- コミット成功時のみコンテキストをリセット(失敗時は保持)
マルチプロバイダー対応
- Gemini(デフォルト:
gemini-2.5-flash) - OpenAI(デフォルト:
gpt-4o) - LiteLLM(Ollama・LM Studio など任意のローカル LLM も対応)
既存ワークフローを壊さない設計
- 通常の
git commit/git commit -mは手を付けない - Husky v9+ との共存対応(
.husky/post-commitに追記) core.hooksPathを他ツールが使っていても上書きしない
Tech Stack
- TypeScript
- Node.js 18+(外部依存なし・組み込み fetch のみ使用)
- Claude Code Hooks(UserPromptSubmit / Stop)
- Gemini API / OpenAI API / LiteLLM
- Git(isomorphic ではなく CLI 経由)
Implementation Notes
- API キーは環境変数のみで管理。
~/.gle/glerc.jsonには書かない gle installはグローバルインストールのみサポート(hook の参照先の安定性のため)gle prepareでリポジトリ単位の有効化を分離し、意図しないプロジェクトへの影響を防ぐ- hook は
stop_hook_active: trueを検出して無限ループを防止
