Skip to content

feat: config-base イメージに AI レビューフックと Gemini CLI を追加 - #369

Merged
keito4 merged 1 commit into
mainfrom
feat/368-include-claude-hooks-in-config-base
Jan 22, 2026
Merged

feat: config-base イメージに AI レビューフックと Gemini CLI を追加#369
keito4 merged 1 commit into
mainfrom
feat/368-include-claude-hooks-in-config-base

Conversation

@keito4

@keito4 keito4 commented Jan 22, 2026

Copy link
Copy Markdown
Owner

Summary

  • config-base イメージを使用するすべてのリポジトリでAIレビューフックが自動的に有効化
  • Gemini CLI を追加してCodexとGemini両方でAIレビューが実行可能に

Changes

AIレビューフックの設定追加

  • PostToolUse: post_pr_ai_review.py - PR作成後にCodex/GeminiによるAIレビューを自動実行
  • PreToolUse: pre_exit_plan_ai_review.py - ExitPlanMode前にプランをAIでレビュー

フックパスの絶対パス化

  • 相対パス .claude/hooks/ → 絶対パス /home/vscode/.claude/hooks/
  • config-baseイメージを使用するすべてのリポジトリでフックが動作するように改善

Gemini CLI のインストール

  • @google/gemini-cli@0.25.0 をイメージに追加
  • npm/global.json でバージョン管理

Test plan

  • フォーマットチェック通過
  • Lint通過
  • 全テスト通過 (101 tests)
  • pre-commitフック通過

Closes #368

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Added Gemini CLI (v0.25.0) to development environment dependencies
    • Updated development container configuration with new pre and post-execution hooks
    • Refined development setup paths for improved reliability and consistency

✏️ Tip: You can customize this high-level summary in your review settings.

config-base イメージを使用するリポジトリでAIレビューフックが自動的に有効になるように設定を更新。

## 変更内容

### AIレビューフックの設定追加
- PostToolUse: `post_pr_ai_review.py` (PR作成後の自動AIレビュー)
- PreToolUse: `pre_exit_plan_ai_review.py` (ExitPlanMode前のプランレビュー)

### フックパスの絶対パス化
- 相対パス `.claude/hooks/` から絶対パス `/home/vscode/.claude/hooks/` に変更
- これによりconfig-baseイメージを使用するすべてのリポジトリでフックが動作

### Gemini CLI のインストール
- `@google/gemini-cli@0.25.0` をイメージに追加
- Codex と Gemini の両方でAIレビューが実行可能に

Closes #368

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the size/XS PR サイズ Extra Small label Jan 22, 2026
@coderabbitai

coderabbitai Bot commented Jan 22, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The changes integrate Google Gemini CLI into the development container, add a new pre-execution AI review hook for ExitPlanMode, convert relative hook paths to absolute paths, and extend Claude's hook configuration sequence with additional tool-use handlers.

Changes

Cohort / File(s) Summary
Gemini CLI Integration
.devcontainer/Dockerfile, npm/global.json
Adds @google/gemini-cli (v0.25.0) to global npm dependencies and Dockerfile installation, replacing single vercel package with dual package installation using version-resolved mechanism.
Claude Hook Configuration
.devcontainer/claude-settings.local.json
Converts hook script paths from relative (python3 .claude/hooks/...) to absolute (python3 /home/vscode/.claude/hooks/...), adds new ExitPlanMode pre-execution hook with pre_exit_plan_ai_review.py, and introduces PostToolUse hook for Bash with post_pr_ai_review.py.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

size/M

Poem

🐰 A bunny hops with glee so bright,
Gemini CLI, shining light!
Hooks now absolute, paths made true,
ExitPlanMode gets review too!
Review automation, hopping through the night! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: adding AI review hooks and Gemini CLI to the config-base image, which aligns with the PR's core objectives.
Linked Issues check ✅ Passed All coding requirements from issue #368 are met: hooks are configured with absolute paths, AI review hooks (PostToolUse and PreToolUse) are added to claude-settings.local.json, and Gemini CLI is included in the dependencies.
Out of Scope Changes check ✅ Passed All changes are directly aligned with issue #368 objectives: Dockerfile adds Gemini CLI, claude-settings.local.json configures the AI review hooks with absolute paths, and global.json adds the Gemini CLI dependency.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@keito4
keito4 merged commit a9e671e into main Jan 22, 2026
17 of 18 checks passed
@claude

claude Bot commented Jan 22, 2026

Copy link
Copy Markdown
Contributor

PR Review - AI レビューフックと Gemini CLI の追加

概要

このPRは、config-base イメージにAIレビューフック機能とGemini CLIを追加し、config-baseを使用するすべてのリポジトリで自動的にAIレビューが実行されるようにする重要な改善です。

✅ 良い点

1. アーキテクチャの改善

  • フックパスを相対パス (.claude/hooks/) から絶対パス (/home/vscode/.claude/hooks/) に変更
  • これにより、config-baseイメージを使用するすべてのリポジトリでフックが自動的に動作
  • 各リポジトリでの手動セットアップが不要に

2. 複数AIツールのサポート

  • Gemini CLI (@google/gemini-cli@0.25.0) を追加
  • CodexとGeminiの両方でAIレビューが実行可能
  • いずれかのツールが利用できない場合でもグレースフルにフォールバック

3. 適切なフック設計

  • PreToolUse: pre_exit_plan_ai_review.py - プラン承認前にAIレビュー
  • PostToolUse: post_pr_ai_review.py - PR作成後にAIレビュー
  • フックは非ブロッキング(PostToolUse)とブロッキング(PreToolUse)を適切に使い分け

4. バージョン管理の一貫性

  • npm/global.json でGemini CLIのバージョンを管理
  • Dockerfileでバージョンを動的に取得する既存パターンを踏襲

🔍 指摘事項

1. セキュリティ: Diff サイズ制限

.claude/hooks/post_pr_ai_review.py:150 でdiffを50,000文字に制限していますが、切り詰めが発生した場合の警告がありません。

推奨: 切り詰め時に警告を追加することで、レビューが部分的であることを明示

2. エラーハンドリング: タイムアウト設定

すべてのAIレビュー実行で timeout=600 (10分) が設定されていますが、タイムアウト値がハードコードされています。

推奨: タイムアウト値を定数化して保守性を向上

3. パフォーマンス: シーケンシャル実行

.claude/hooks/post_pr_ai_review.py:175-179 でCodexとGeminiのレビューが順次実行され、両方が利用可能な場合は最大20分かかる可能性があります。

推奨: 並行実行を検討(ただし、現在の実装でも機能的には問題なし)

4. ロバスト性: Git マージベース取得の失敗ハンドリング

.claude/hooks/post_pr_ai_review.py:115-125 でマージベース取得失敗時は警告して終了していますが、フォールバックがありません。

推奨: origin/main との直接diffをフォールバックとして試みる

5. テストカバレッジ: フックスクリプトのテスト不在

.claude/hooks/*.py に対応するテストファイルが見つかりません。

推奨: Pythonフックスクリプトの単体テストを追加(正常系・異常系)

6. ドキュメント: AIレビュー機能の説明不足

READMEやCLAUDE.mdにAIレビューフックに関する説明がありません。

推奨: .claude/hooks/README.md に各フックの目的、セットアップ方法、トラブルシューティングを追加

📊 CI/CD Status

現在実行中のチェック:

  • ✅ すべての必須チェックが成功またはスキップ
  • 🔄 Trivy Container Scan - 進行中
  • 🔄 claude-review - 進行中
  • 🔄 Generate SBOM - 進行中

🎯 総合評価

カテゴリ 評価 コメント
機能性 ⭐⭐⭐⭐⭐ 要件を完全に満たし、適切に実装
コード品質 ⭐⭐⭐⭐ 明確で保守性が高いが、テスト不足
セキュリティ ⭐⭐⭐⭐ 適切なサンドボックスとタイムアウトを実装
パフォーマンス ⭐⭐⭐ シーケンシャル実行が最大20分かかる可能性
ドキュメント ⭐⭐⭐ 実装は明確だが、ユーザー向けドキュメント不足

✅ 承認推奨度: APPROVE with minor suggestions

このPRは以下の理由で承認を推奨します:

  1. Issue #368を完全に解決: config-baseイメージを使用するすべてのリポジトリでAIレビューが自動有効化
  2. リリース要件を満たす: feat: コミットタイプを使用し、semantic-releaseと整合
  3. 既存の品質ゲートをすべてパス: CI/CDパイプラインが正常に動作
  4. 段階的な改善が可能: 指摘事項は重大なブロッカーではなく、今後のPRで対応可能

指摘事項は改善提案であり、現在の実装でも十分に動作します。Issue #368の解決を優先し、テストやドキュメントの追加は後続のPRで対応することを推奨します。


レビュー実施者: Claude Sonnet 4.5
レビュー基準: CLAUDE.md の開発品質基準に準拠

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XS PR サイズ Extra Small

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: config-base イメージに .claude/hooks を含める

1 participant