git-gemini-cli

command module
v1.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2026 License: MIT Imports: 1 Imported by: 0

README

🤖 Git Gemini CLI

CI Language Go Version GitHub tag (latest by date) Status

🚀 概要 (About)

Git Gemini CLI は、Gemini Reviewer Core を利用した、コマンドラインから使えるAIレビューツールです。

git-gemini-webと同じくGitリポジトリのブランチ間差分をAIでレビューしますが、こちらはWebフォームを介さず、ローカルのターミナルから直接実行する用途向けです。

用途もgit-gemini-webと同様、コードに限らず記事や小説の原稿レビューにも使っています。


✨ 技術スタック (Technology Stack)

要素 技術 / ライブラリ 役割
言語 Go (Golang) ツールの開発言語。クロスプラットフォームでの高速な実行を実現します。
CLI フレームワーク Cobra コマンドライン引数(フラグ)の解析とサブコマンド構造 (review, publish) の構築に使用します。
コアレビュー機能 gemini-reviewer-core Git操作、AI通信、HTML変換といった中核のレビューロジックを担う外部ライブラリです。

🔄 実行ワークフロー (Execution Workflow)

  • 分析フェーズ: 指定されたブランチ間の差分(Diff)を取得し、gemini-reviewer-core を用いて AI によるレビューを実施します(構造化出力のJSONで安定した結果を返します)。
  • 出力フェーズ: publish コマンドの場合、レビュー結果のJSONをHTMLに変換し、指定されたストレージ(GCS等)へ保存します。
  • 通知フェーズ: 公開準備が整い次第、Slack 等の外部サービスへレビュー完了レポートを即座に通知します。

🛠️ 事前準備と環境設定

1. プロジェクトのセットアップとビルド
# リポジトリをクローン
git clone git@github.com:shouni/git-gemini-cli.git

# 実行ファイルを bin/ ディレクトリに生成
go build -o bin/git_gemini_cli

実行ファイルは、プロジェクトルートの ./bin/git_gemini_cli に生成されます。


2. 環境変数の設定 (必須)

Gemini API を利用するために、API キーを環境変数に設定する必要があります。また、連携サービスを使用する場合は、対応する環境変数を設定します。

# GCP プロジェクトID
export GCP_PROJECT_ID="YOUR_GCP_PROJECT_ID"
# Gemini API キー
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
# Slack 連携 (publishモードで保存成功時に公開URLが通知されます)
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."

🤖 プロンプト設定とレビューの種類 (--mode オプション)

本ツールは、レビューの目的に応じて AI に与える指示(プロンプト)を切り替えることができます。これは共通フラグの -m, --mode で指定します。

モード (-m) プロンプトファイル 目的とレビュー観点
article assets/prompts/article.md 技術記事・ドキュメントの品質レビュー。読者にとっての価値、技術的正確性、読みやすさに焦点を当てます。
code assets/prompts/code.md コード品質と保守性の向上を目的とした詳細なレビュー。可読性、重複、命名規則、一般的なベストプラクティスからの逸脱など、広範囲な技術的側面に焦点を当てます。
novel assets/prompts/novel.md 小説原稿の完成度向上を目的としたレビュー。整合性、人物描写、テンポ、Show, Don't Tellの観点に焦点を当てます。

上記以外の値を指定した場合、Git操作を行う前にエラーで終了します。


🚀 使い方 (Usage) と実行例

このツールは、リモートリポジトリのブランチ間比較に特化しており、サブコマンドを使用します。

🛠 共通フラグ (Persistent Flags)

すべてのサブコマンド (review, publish) で使用可能なフラグです。

フラグ ショートカット 説明 デフォルト値 必須
--mode -m レビューモードを指定: 'article', 'code', または 'novel' code
--repo-url -u レビュー対象の Git リポジトリの SSH URL なし
--base-branch -b 基準となるブランチ名またはハッシュ main
--feature-branch -f レビュー対象のブランチ名またはハッシュ なし
--gemini -g 使用する Gemini モデル名 (例: gemini-2.5-flash) gemini-2.5-flash
--ssh-key-path -k Git 認証用の SSH 秘密鍵のパス。チルダ (~) 展開をサポートしています。CI/CD環境ではシークレットマウント先の絶対パスを指定してください。 ~/.ssh/id_rsa
--skip-host-key-check なし SSHホストキーチェックをスキップする(🚨非推奨/危険な設定)。known_hostsを使用しない場合に設定します。 false
--use-external-git なし ローカルのGitコマンドを使用する。 true

1. 標準出力モード (review)

リモートリポジトリのブランチ差分を取得し、レビュー結果を標準出力に出力します。

実行コマンド例
# main と develop の差分をコードレビューモードで実行
./bin/git_gemini_cli review \
  -m "code" \
  --repo-url "git@github.com:user/my-awesome-project.git" \
  --base-branch "main" \
  --feature-branch "develop"

2. クラウド保存モード (publish)

リモートリポジトリのブランチ比較を行い、その結果を GCS(Google Cloud Storage) などのクラウドストレージに、スタイル付き HTML として保存します。保存完了後、チームへの共有を自動化するための通知機能も備えています。

💡 Slack通知について: SLACK_WEBHOOK_URL が設定されている場合、保存成功後に GCS上の保存先URI(または署名付きURL) を含めたレビュー完了レポートをSlackへ自動投稿します。

実行コマンド例 (GCSへの保存)
# feature/publish の差分をレビューし、GCSにHTML結果を保存
./bin/git_gemini_cli publish \
  -m "novel" \
  --repo-url "git@github.com:user/my-awesome-project.git" \
  --base-branch "main" \
  --feature-branch "feature/publish" \
  --bucket "my-awesome-bucket"
固有フラグ (クラウド連携)
フラグ ショートカット 説明 必須 デフォルト値
--bucket なし 保存先の GCS バケット名 なし

📜 ライセンス (License)
  • このプロジェクトは MIT License の下で公開されています。

Documentation

Overview

git-gemini-cli は、Git差分ベースのAIコードレビューを行うCLIツールです。

Directories

Path Synopsis
Package assets は、プロンプトテンプレートを埋め込みリソースとして提供します。
Package assets は、プロンプトテンプレートを埋め込みリソースとして提供します。
Package cmd は、git-gemini-cli の review/publish サブコマンドを定義します。
Package cmd は、git-gemini-cli の review/publish サブコマンドを定義します。
internal
adapters
Package adapters は、Gemini/Slack クライアントの初期化と、 gemini-reviewer-core のポート実装を提供します。
Package adapters は、Gemini/Slack クライアントの初期化と、 gemini-reviewer-core のポート実装を提供します。
app
Package app は、アプリケーションの依存関係を組み立てて保持する DI コンテナを提供します。
Package app は、アプリケーションの依存関係を組み立てて保持する DI コンテナを提供します。
builder
Package builder は、設定値から各サービスクライアント・パイプラインの 依存関係を組み立てるファクトリ関数を提供します。
Package builder は、設定値から各サービスクライアント・パイプラインの 依存関係を組み立てるファクトリ関数を提供します。
config
Package config は、環境変数とCLIフラグからアプリケーション設定を読み込み・検証します。
Package config は、環境変数とCLIフラグからアプリケーション設定を読み込み・検証します。
domain
Package domain は、レビューワークフローが扱う中心的なドメインモデルと インターフェース(ポート)を定義します。
Package domain は、レビューワークフローが扱う中心的なドメインモデルと インターフェース(ポート)を定義します。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL