← ClaudeAtlas

pr-babysitterlisted

Owns the merge tail for Rihla PRs — the stretch between "auto-merge enabled" and "actually merged" that GitHub never finishes on its own. Each pass updates BEHIND branches (auto-merge never self-updates them), runs /automerge on open PRs that lack it, surfaces P1-commented / red-CI / conflicted PRs, checks for pending backend deploys after merges, and GCs worktrees whose PR merged. Use when asked to "babysit the PRs", "watch the merge queue", "/pr-babysitter", or under /loop to run until the board is clear.
NasserAlbusaidi/ship-gate · ★ 0 · Code & Development · score 72
Install: claude install-skill NasserAlbusaidi/ship-gate
# PR babysitter GitHub auto-merge holds a PR until `readiness` is green AND the branch is up-to-date — but it **never updates a BEHIND branch itself** (`allow_update_branch` only permits the update; nothing calls it). Every squash-merge re-BEHINDs the PRs queued behind it, so a merge train stalls after the first car unless someone keeps nudging. That someone is this skill. It is the tail of `/automerge`, not a replacement — it never merges anything itself. ## One pass ### 1. Snapshot the board ```bash gh pr list --state open --json number,title,isDraft,mergeStateStatus,autoMergeRequest,statusCheckRollup ``` ### 2. Per open non-draft PR, in this order - **CONFLICTING** → surface it for the human. Never resolve or force anything. - **BEHIND** → `gh pr update-branch <N>`. If the update errors (usually a conflict with the new base) → surface as CONFLICT. - **No auto-merge enabled** (`autoMergeRequest == null`) → check whether a prior `/automerge` round left P1 comments with no push since (`gh pr view <N> --json comments,commits`): - P1s still standing → surface, skip. The human fixes; a new push makes it eligible again. - Otherwise → run the full **`automerge`** skill pipeline on it (classify → exempt-enable or gate-review→refute). This may spawn Opus reviewer/refuter agents — that's the point; classification still fails toward GATE. - **Checks failing** (any `statusCheckRollup` conclusion FAILURE) → surface with the failing check's name. Don't auto-