repo-updater

Repo Updater - Multi-repo synchronization with AI-assisted review orchestration. Parallel sync, agent-sweep for dirty repos, ntm integration, git plumbing. 17K LOC Bash CLI. Use when syncing multiple GitHub repositories, running agent-sweep on uncommitted changes, or orchestrating AI-assisted code review across repos.

oakoss/agent-skills60 installsMITSynced Aug 26

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
name: repo-updater
description: Repo Updater - Multi-repo synchronization with AI-assisted review orchestration. Parallel sync, agent-sweep for dirty repos, ntm integration, git plumbing. 17K LOC Bash CLI. Use when syncing multiple GitHub repositories, running agent-sweep on uncommitted changes, or orchestrating AI-assisted code review across repos.
license: MIT
---

# Repo Updater

Bash CLI for synchronizing dozens or hundreds of GitHub repositories with AI-assisted code review and agent-sweep for uncommitted changes.

## Critical Concepts

| Concept           | Rule                                                                                 |
| ----------------- | ------------------------------------------------------------------------------------ |
| Git plumbing only | Never parse human-readable output; use `rev-list`, `status --porcelain`, `rev-parse` |
| Stream separation | Human-readable → stderr; data → stdout (`--json 2>/dev/null \| jq`)                  |
| No global `cd`    | All git operations use `git -C`                                                      |

## Essential Commands

| Command                    | Purpose                                            |
| -------------------------- | -------------------------------------------------- |
| `ru sync`                  | Sync all configured repos (add `-j8` for parallel) |
| `ru sync --dry-run`        | Preview what would happen                          |
| `ru sync --resume`         | Resume interrupted sync                            |
| `ru status`                | Read-only check of all repos                       |
| `ru add owner/repo`        | Add repo to sync list                              |
| `ru remove owner/repo`     | Remove from list                                   |
| `ru list`                  | Show configured repos                              |
| `ru prune`                 | Detect orphaned repos                              |
| `ru doctor`                | System health check                                |
| `ru review --plan`         | Discover issues/PRs for AI review                  |
| `ru review --apply --push` | Apply reviewed changes                             |
| `ru agent-sweep`           | Process repos with uncommitted changes             |
| `ru agent-sweep -j4`       | Parallel agent processing                          |

## AI Review Priority Scoring

| Factor     | Points | Logic                                   |
| ---------- | ------ | --------------------------------------- |
| Type       | 0-20   | PRs: +20, Issues: +10, Draft PRs: -15   |
| Labels     | 0-50   | security/critical: +50, bug/urgent: +30 |
| Age (bugs) | 0-50   | >60 days: +50, >30 days: +30            |
| Recency    | 0-15   | Updated <3 days: +15, <7 days: +10      |
| Staleness  | -20    | Recently reviewed: -20                  |

Levels: CRITICAL (≥150), HIGH (≥100), NORMAL (≥50), LOW (<50)

## Agent Sweep Phases

| Phase       | Default Timeout | Action                                                   |
| ----------- | --------------- | -------------------------------------------------------- |
| 1: Planning | 300s            | Analyze uncommitted changes, generate commit plan        |
| 2: Commit   | 600s            | Validate plan, stage files, create commit, quality gates |
| 3: Release  | 300s (opt-in)   | Determine version bump, create tag/release               |

Execution modes: `agent` (full workflow), `plan` (phase 1 only), `apply` (phase 2+3)

## Update Strategies

| Strategy  | Behavior                                       |
| --------- | ---------------------------------------------- |
| `ff-only` | Fast-forward only; fails if diverged (default) |
| `rebase`  | Rebase local commits on top of remote          |
| `merge`   | Create merge commit if needed                  |

## Exit Codes

| Code | Meaning                            |
| ---- | ---------------------------------- |
| 0    | All repos processed successfully   |
| 1    | Some repos failed                  |
| 2    | Conflicts or quality gate failures |
| 3    | System/dependency error            |
| 4    | Invalid arguments                  |
| 5    | Interrupted (use `--resume`)       |

## Environment Variables

| Variable             | Default          | Description                          |
| -------------------- | ---------------- | ------------------------------------ |
| `RU_PROJECTS_DIR`    | `/data/projects` | Base directory for repos             |
| `RU_LAYOUT`          | `flat`           | Path layout (flat, owner-repo, full) |
| `RU_PARALLEL`        | `1`              | Parallel workers                     |
| `RU_TIMEOUT`         | `30`             | Network timeout (seconds)            |
| `RU_UPDATE_STRATEGY` | `ff-only`        | Pull strategy                        |
| `GH_TOKEN`           | (from gh CLI)    | GitHub token                         |

## Common Mistakes

| Mistake                                                           | Correct Pattern                                                            |
| ----------------------------------------------------------------- | -------------------------------------------------------------------------- |
| Parsing human-readable git output (e.g., `git status` text)       | Use git plumbing: `rev-list`, `status --porcelain`, `rev-parse`            |
| Using `cd` to change into repo directories                        | Use `git -C <path>` for all git operations                                 |
| Mixing data and human-readable output on the same stream          | Data goes to stdout, human-readable to stderr (`--json 2>/dev/null \| jq`) |
| Running sync without `--dry-run` first on unfamiliar repos        | Always preview with `ru sync --dry-run` before executing                   |
| Using `service_role` key or bypassing auth in agent-sweep scripts | Follow security guardrails; agent-sweep has preflight checks for a reason  |

## Delegation

- **Discover which repos have uncommitted changes or are out of sync**: Use `Explore` agent to run `ru status` and analyze the output
- **Process dirty repos with agent-sweep across multiple repositories**: Use `Task` agent to run `ru agent-sweep -j4` and handle quality gate failures
- **Plan a multi-repo sync strategy with review prioritization**: Use `Plan` agent to design sync order, parallelism settings, and review budget allocation

## References

- [Commands](references/commands.md) — sync, status, repo management, diagnostics, output modes, jq examples
- [Review System](references/review-system.md) — two-phase workflow, session drivers, cost budgets, priority scoring
- [Agent Sweep](references/agent-sweep.md) — three-phase workflow, preflight checks, security guardrails, execution modes
- [Configuration](references/configuration.md) — XDG directory structure, repo list format, layout modes, per-repo config
- [Troubleshooting](references/troubleshooting.md) — common issues, debug mode, preflight failure debugging, integration points

More Code Review skills

pr-to-video

heygen-com/hyperframes

Turn a GitHub pull request (a PR URL, owner/repo#N, or 'this PR' in a checked-out repo) into a code-change explainer video — changelog, feature reveal, fix, or refactor walkthrough built from the diff, commits, and files: the input is a code change, not a website. Not a product promo (/product-launch-video) or a no-PR topic explainer (/faceless-explainer). Unclear → /hyperframes.

178.9k

receiving-code-review

obra/superpowers

Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation

178.0k

public-relations

coreyhaines31/marketingskills

When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy (not pull requests). Also use when the user mentions 'PR,' 'public relations,' 'press,' 'press release,' 'press coverage,' 'media outreach,' 'pitch a journalist,' 'get featured,' 'media list,' 'media kit,' 'press kit,' 'newsjacking,' 'news hijack,' 'HARO,' 'Qwoted,' 'Featured,' 'Help A Reporter,' 'reporter request,' 'tech press,' 'TechCrunch,' 'earned media,' 'thought leadership placement,' 'op-ed,' 'guest article,' 'press contacts,' 'podcast prep,' 'going on a podcast,' 'podcast guest,' 'prep me for this podcast,' or 'how do I get press.' Use this for earned media work — finding journalists, pitching stories, newsjacking, prepping podcast appearances, and responding to press requests. For startup/SaaS/AI directory submissions, see directory-submissions. For product launches, see launch. For social-media engagement, see social. For cold-email outreach to prospects, see cold-email.

33.1k

← All Code Review skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY