repo-updater について
Repo Updater は、多数の GitHub リポジトリを同期する Bash CLI です。AI エージェントによるレビューや未コミット変更の処理を支援し、ドライラン、状態確認、優先順位付け、中断後に再開できる並列処理を備えています。
主な機能
- 01複数リポジトリの同期
- 02同期のプレビューと再開
- 03リポジトリの状態と健全性の確認
- 04AI レビュー対象の Issue とプルリクエストの優先順位付け
- 05エージェントによる未コミット変更の処理
活用シーン
- 01多数のリポジトリの同期維持
- 02同期前の変更確認
- 03ローカル変更があるリポジトリの特定
- 04レビュー対象の Issue とプルリクエストの優先順位付け
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill repo-updaterインストール後、Claude Code で/repo-updaterを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/agent-sweep.mdcommands.mdconfiguration.mdreview-system.mdtroubleshooting.md詳細
Repo Updater
AI 支援のコードレビューと、未コミットの変更に対するエージェント一括処理機能を備えた、数十から数百の GitHub リポジトリを同期する Bash CLI です。
重要な概念
| 概念 | ルール |
|---|---|
| Git のプラミングのみ | 人間向けの出力は解析しません。rev-list、status --porcelain、rev-parse を使用します |
| 出力ストリームの分離 | 人間向けの出力 → stderr、データ → stdout(--json 2>/dev/null | jq) |
グローバルな cd は禁止 | すべての Git 操作で git -C を使用します |
基本コマンド
| コマンド | 用途 |
|---|---|
ru sync | 設定済みのすべてのリポジトリを同期します(並列実行するには -j8 を追加) |
ru sync --dry-run | 実行内容をプレビューします |
ru sync --resume | 中断した同期を再開します |
ru status | すべてのリポジトリを読み取り専用で確認します |
ru add owner/repo | 同期リストにリポジトリを追加します |
ru remove owner/repo | リストから削除します |
ru list | 設定済みのリポジトリを表示します |
ru prune | 孤立したリポジトリを検出します |
ru doctor | システムのヘルスチェックを実行します |
ru review --plan | AI レビュー対象の Issue/PR を検出します |
ru review --apply --push | レビュー済みの変更を適用します |
ru agent-sweep | 未コミットの変更があるリポジトリを処理します |
ru agent-sweep -j4 | エージェント処理を並列実行します |
AI レビューの優先度スコア
| 要素 | 点数 | ロジック |
|---|---|---|
| 種類 | 0-20 | PR:+20、Issue:+10、ドラフト PR:-15 |
| ラベル | 0-50 | security/critical:+50、bug/urgent:+30 |
| 経過期間(バグ) | 0-50 | >60 日:+50、>30 日:+30 |
| 新しさ | 0-15 | 3 日未満に更新:+15、7 日未満:+10 |
| 古さ | -20 | 最近レビュー済み:-20 |
レベル:CRITICAL(≥150)、HIGH(≥100)、NORMAL(≥50)、LOW(<50)
エージェント一括処理のフェーズ
| フェーズ | デフォルトのタイムアウト | アクション |
|---|---|---|
| 1:計画 | 300s | 未コミットの変更を分析し、コミット計画を生成します |
| 2:コミット | 600s | 計画を検証し、ファイルをステージし、コミットを作成して、品質ゲートを実行します |
| 3:リリース | 300s(オプトイン) | バージョンの更新方法を決定し、タグ/リリースを作成します |
実行モード:agent(ワークフロー全体)、plan(フェーズ 1 のみ)、apply(フェーズ 2 と 3)
更新戦略
| 戦略 | 動作 |
|---|---|
ff-only | ファストフォワードのみ。分岐している場合は失敗します(デフォルト) |
rebase | ローカルのコミットをリモートの上にリベースします |
merge | 必要に応じてマージコミットを作成します |
終了コード
| コード | 意味 |
|---|---|
| 0 | すべてのリポジトリの処理に成功しました |
| 1 | 一部のリポジトリの処理に失敗しました |
| 2 | コンフリクトまたは品質ゲートの失敗が発生しました |
| 3 | システム/依存関係のエラーが発生しました |
| 4 | 引数が無効です |
| 5 | 中断されました(--resume を使用してください) |
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
RU_PROJECTS_DIR | /data/projects | リポジトリのベースディレクトリ |
RU_LAYOUT | flat | パスのレイアウト(flat、owner-repo、full) |
RU_PARALLEL | 1 | 並列ワーカー |
RU_TIMEOUT | 30 | ネットワークのタイムアウト(秒) |
RU_UPDATE_STRATEGY | ff-only | プル戦略 |
GH_TOKEN | (from gh CLI) | GitHub トークン |
よくある間違い
| 間違い | 正しいパターン |
|---|---|
人間が読みやすい Git の出力(例:git status のテキスト)を解析する | Git の低レベルコマンドを使用する:rev-list、status --porcelain、rev-parse |
cd を使ってリポジトリのディレクトリに移動する | すべての Git 操作で git -C <path> を使用する |
| 同じストリームにデータと人間が読みやすい出力を混在させる | データは stdout に、人間が読みやすい出力は stderr に出力する(--json 2>/dev/null | jq) |
不慣れなリポジトリで、最初に --dry-run を使わずに同期を実行する | 実行前に必ず ru sync --dry-run でプレビューする |
agent-sweep スクリプトで service_role キーを使う、または認証を回避する | セキュリティガードレールに従う。agent-sweep に事前チェックがあるのには理由があります |
委任
- 未コミットの変更がある、または同期されていないリポジトリを見つける:
Exploreエージェントを使ってru statusを実行し、出力を分析します - 複数のリポジトリで agent-sweep を使って変更のあるリポジトリを処理する:
Taskエージェントを使ってru agent-sweep -j4を実行し、品質ゲートの失敗に対処します - レビューの優先順位を考慮した複数リポジトリの同期戦略を計画する:
Planエージェントを使って、同期順、並列性の設定、レビュー予算の割り当てを設計します
参考資料
- コマンド — 同期、ステータス、リポジトリ管理、診断、出力モード、jq の例
- レビューシステム — 2 段階のワークフロー、セッションドライバー、コスト予算、優先度スコアリング
- Agent Sweep — 3 段階のワークフロー、事前チェック、セキュリティガードレール、実行モード
- 設定 — XDG ディレクトリ構成、リポジトリリストの形式、レイアウトモード、リポジトリごとの設定
- トラブルシューティング — よくある問題、デバッグモード、事前チェック失敗のデバッグ、統合ポイント
コメント
Markdown 対応