Metadata-Version: 2.4
Name: gemini-actions-lab-cli
Version: 0.11.0
Summary: Command line helpers for Gemini Actions Lab repositories
Author: Sunwood AI Labs
License: MIT License
        
        Copyright (c) 2025 Maki
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.32.3
Requires-Dist: PyNaCl>=1.5.0
Requires-Dist: pyfiglet>=0.8.post1
Requires-Dist: PyYAML>=6.0
Provides-Extra: test
Requires-Dist: pytest>=7.0.0; extra == "test"
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
Dynamic: license-file

<div align="center">

![Image](https://raw.githubusercontent.com/Sunwood-ai-labsII/gemini-actions-lab/refs/heads/main/docs/gemini-actions-labs.png)


# Gemini Actions Lab

<a href="./README.md"><img src="https://img.shields.io/badge/English-Readme-blue?style=for-the-badge&logo=github&logoColor=white" alt="English" /></a>
<a href="./README.ja.md"><img src="https://img.shields.io/badge/日本語-Readme-red?style=for-the-badge&logo=github&logoColor=white" alt="日本語" /></a>
<img src="https://img.shields.io/badge/GitHub%20Actions-AI-blue?style=for-the-badge&logo=github-actions&logoColor=white" alt="GitHub Actions" />
<img src="https://img.shields.io/badge/Gemini-AI-4285F4?style=for-the-badge&logo=google-gemini&logoColor=white" alt="Gemini" />
[![PyPI](https://img.shields.io/pypi/v/gemini-actions-lab-cli?style=for-the-badge)](https://pypi.org/project/gemini-actions-lab-cli/)

[![💬 Gemini CLI](https://github.com/Sunwood-ai-labsII/gemini-actions-lab/actions/workflows/gemini-cli.yml/badge.svg)](https://github.com/Sunwood-ai-labsII/gemini-actions-lab/actions/workflows/gemini-cli.yml)


</div>

---

## 📖 概要

このリポジトリは、GoogleのGemini AIをGitHub Actionsと統合するための実験室およびショーケースとして機能します。生成AIの力を利用して、さまざまなリポジトリ管理タスクを自動化する方法を示します。

### 🎯 主な機能
- **AIによる自動化**: Geminiを活用して、Issueのトリアージ、プルリクエストのレビューなどのタスクを処理します。
- **CLIライクな対話**: Issueのコメントから直接AIアシスタントと対話します。
- **拡張可能なワークフロー**: 独自のプロジェクトに合わせてワークフローを簡単に適応およびカスタマイズできます。

---

## 🤖 ワークフロー概要

![](https://raw.githubusercontent.com/Sunwood-ai-labsII/gemini-actions-lab/refs/heads/main/docs/gal-architecture.png)

このリポジトリには、以下のGitHub Actionsワークフローが含まれています（詳細は [.github/workflows/architecture.md](.github/workflows/architecture.md) を参照）：

- `gemini-cli.yml`: 英語CLI。Issue/PR/コメント/手動でAIコマンドを実行
- `gemini-jp-cli.yml`: 日本語CLI。Issue/PR/コメント/手動でAIコマンドを実行
- `gemini-pr-review.yml`: PRレビュー自動化（MCP GitHubサーバー経由でコメント）
- `gemini-issue-automated-triage.yml`: 新規/更新Issueの自動トリアージ
- `gemini-issue-scheduled-triage.yml`: 定期スキャンで未トリアージIssueを一括処理
- `imagen4-issue-trigger-and-commit.yml`: イシュー由来の画像生成→コミット
- `imagen4-generate-and-commit.yml`: 手動/ディスパッチで画像生成→コミット
- `gemini-release-notes.yml`: リリース画像生成とリリースノートの自動作成
- `static-site.yml`: リポジトリ内容をGitHub Pagesに公開
- `sync-to-report-gh.yml`: 旧テンプレ（現状は参考用）

ワークフローの構成・相互関係・実装詳細は、[.github/workflows/architecture.md](.github/workflows/architecture.md) に集約しています。

### 🚀 リモートワークフロー（新機能）

複数のリポジトリでワークフローを使いたい場合、**リモートワークフローシステム**を使うとメンテナンスが超楽になるよ〜✨

**メリット:**
- ✅ Pythonスクリプトのコピー不要（リモートから自動取得）
- ✅ スクリプトの更新は1箇所でOK
- ✅ メンテナンスコスト90%削減

**使い方:**

```bash
# ワークフローファイルをコピー（スクリプトは不要！）
curl -o .github/workflows/pr-review-kozaki.yml \
  https://raw.githubusercontent.com/Sunwood-ai-labsII/gemini-actions-lab/main/.github/workflows_remote/pr-review-kozaki-remote.yml
```

詳細は [.github/workflows_remote/README.md](.github/workflows_remote/README.md) を参照！

---

## 🏗️ アーキテクチャ
アーキテクチャ図やワークフローの詳細な説明は、[.github/workflows/architecture.md](.github/workflows/architecture.md) を参照してください。

### 💬 Discord Issue Bot（任意）
- Discord から GitHub Issue を作成する最小ボット
- `discord-issue-bot/.env` にローカルでトークン設定（リポジトリには含めない）
- 起動例: `docker compose -f docker-compose.yaml up -d --build`

## 📸 スクリーンショットと例

### 🤖 CLIの対話例
Issueを作成し、`@gemini-cli-jp /help`とコメントして、利用可能なコマンドを確認します:

```
@gemini-cli-jp /help
```

AIアシスタントが利用可能なコマンドと使用例を返信します。

 

### 💬 対話の例

**コードレビューのリクエスト:**
```
@gemini-cli-jp /review-pr
このプルリクエストをレビューし、改善点を提案してください
```

**Issueのトリアージ:**
```
@gemini-cli-jp /triage
このIssueを分析し、適切なラベルと担当者を提案してください
```

---

## 🚀 インストールとセットアップ

### 前提条件
- リポジトリ作成権限のあるGitHubアカウント
- Google AI StudioのGemini APIキー
- GitHub Actionsの基本的な理解

### クイックスタート
1. **このリポジトリをフォーク**して、自分のGitHubアカウントにコピーします
2. リポジトリの設定で**GitHubシークレットを設定**します:
   - `GEMINI_API_KEY`: あなたのGemini APIキー
   - `GITHUB_TOKEN`: (自動的に提供されます)
3. `.github/workflows/`からあなたのリポジトリに**ワークフローファイルをコピー**します
4. あなたのニーズに合わせて**ワークフローをカスタマイズ**します
5. Issueを作成し、`@gemini-cli-jp /help`とコメントして**セットアップをテスト**します

---

## 🛠️ gemini-actions-lab CLI

リポジトリに付属する `gemini-actions-lab-cli`（エイリアス: `gal`）を使うと、シークレット同期やテンプレートワークフローの取得をコマンド一発で実行できます。

### インストール

PyPI から直接インストールできます。

```bash
pip install gemini-actions-lab-cli
```

ローカル開発でソースを同期したい場合は `uv` によるセットアップもサポートしています。

```bash
uv sync
```

### シークレットの同期

`.secrets.env`（任意のファイルを `--env-file` で指定可能）に定義した値を、リポジトリシークレットへ一括で作成・更新します。

```bash
gal sync-secrets --repo <owner>/<repo> --env-file path/to/.secrets.env
```

- コマンド実行ディレクトリの `.env` ファイルは自動的に読み込まれ、`GITHUB_TOKEN` など CLI 実行に必要な環境変数を設定できます。
- リポジトリへ同期したい secrets は `.secrets.env` に分離してください（任意のファイルを `--env-file` で指定可）。
- `GITHUB_TOKEN` 環境変数、または `--token` オプションで GitHub の個人アクセストークンを指定してください。

### AIエージェントガイドラインの同期

`.github/ai-guidelines` ディレクトリに格納されているAIエージェントガイドラインをリポジトリに同期できます。

```bash
# デフォルトブランチに同期
uv run gal sync-agent --repo Sunwood-ai-labs/my-repo

# 特定のブランチに同期
uv run gal sync-agent --repo Sunwood-ai-labs/my-repo --branch develop

# カスタムメッセージで同期
uv run gal sync-agent --repo Sunwood-ai-labs/my-repo --message "docs: update AI agent guidelines"
```

### 🚀 クイックスタート

よく使う同期コマンドは下記のとおりです（Pages 連携とトップページのコピー込み）。

```bash
gal sync-workflows \
  --repo Sunwood-ai-labs/demo-001 \
  --destination . \
  --clean \
  --enable-pages-actions \
  --include-index
```

### 🎯 特定のワークフローのコピー（新機能！）

`.github/workflows_remote` または `.github/workflows` から、指定したワークフローファイルをコピーできます。

#### 単一のワークフローをコピー

```bash
# workflows_remote から特定のワークフローをコピー 🎯
gal sync-workflows \
  --workflow gemini-release-notes-remote.yml \
  --use-remote \
  --destination .

# 通常の workflows から特定のワークフローをコピー
gal sync-workflows \
  --workflow gemini-cli.yml \
  --destination .
```

#### 複数のワークフローをコピー（NEW！✨）

```bash
# 複数のワークフローを一度にコピー 🎯
gal sync-workflows \
  --workflows gemini-cli.yml gemini-jp-cli.yml pr-review-kozaki-remote.yml \
  --destination .

# リモートリポジトリに直接同期
gal sync-workflows \
  --workflows gemini-cli.yml gemini-jp-cli.yml \
  --repo Sunwood-ai-labs/my-repo \
  --overwrite-github
```

#### プリセットの使用（NEW！✨）

よく使う組み合わせをプリセットとして用意しています。

```bash
# 利用可能なプリセット一覧を表示
gal sync-workflows --list-presets

# プリセットを使ってワークフローをコピー
gal sync-workflows --preset pr-review --destination .

# プリセット + リモート同期
gal sync-workflows \
  --preset basic \
  --repo Sunwood-ai-labs/my-repo \
  --overwrite-github
```

**利用可能なプリセット:**
- `pr-review`: PR レビューワークフロー（Kozaki, Onizuka, Yukimura）
- `gemini-cli`: Gemini CLI ワークフロー（英語＋日本語）
- `release`: リリース自動化ワークフロー
- `imagen`: 画像生成ワークフロー
- `basic`: 新規リポジトリ用の基本ワークフロー
- `full-remote`: すべてのリモートワークフロー
- `standard`: 標準プロダクションワークフロー（CLI, Release Articles, Release Notes, PR Review 3種, Static Site）

> **Note**: プリセットは `src/gemini_actions_lab_cli/workflow_presets.yml` で管理されています。カスタムプリセットを追加したい場合は、このYAMLファイルを編集してください✨

**オプション説明:**
- `--workflow`: コピーしたいワークフローファイル名（単一）
- `--workflows`: コピーしたいワークフローファイル名（複数、スペース区切り）
- `--preset`: プリセット名（`--workflow` や `--workflows` より優先）
- `--use-remote`: `.github/workflows_remote` から優先的に取得（なければ `workflows` から自動フォールバック）
- `--overwrite-github`: 既存ファイルを上書き
- `--list-presets`: 利用可能なプリセット一覧を表示

> `uv run` を利用して開発用に実行する場合は、`uv run gal ...` と置き換えてください。

オプションの詳細やその他のユースケースは `src/README.md` を参照してください。

---

## 📁 ディレクトリ構造

```
.
├── .github/
│   └── workflows/
│       ├── architecture.md
│       ├── gemini-cli.yml
│       ├── gemini-jp-cli.yml
│       ├── gemini-pr-review.yml
│       ├── gemini-issue-automated-triage.yml
│       ├── gemini-issue-scheduled-triage.yml
│       ├── imagen4-issue-trigger-and-commit.yml
│       ├── imagen4-generate-and-commit.yml
│       ├── gemini-release-notes.yml
│       ├── static-site.yml
│       └── sync-to-report-gh.yml
├── discord-issue-bot/
│   ├── Dockerfile
│   ├── pyproject.toml
│   ├── docker-compose.yaml
│   └── bot.py
├── .gitignore
├── LICENSE
└── README.md
```

---



## 🤖 Discord Issue Bot

Discord から直接 GitHub Issue を作成する最小ボットの詳細なドキュメントは、以下を参照してください。

- ドキュメント: [discord-issue-bot/README.md](discord-issue-bot/README.md)

## 📝 ライセンス

このプロジェクトは、[LICENSE](LICENSE)ファイルの条件に基づいてライセンスされています。

---

© 2025 Sunwood-ai-labsII


---
