Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Shepherd one or more camunda/camunda PRs through flaky CI and the merge queue to merged. Accepts a list of PRs (e.g. a merge plus its backports). Use when asked to babysit, shepherd, watch, drive, or "get merged" one or more PRs, or to keep retrying CI until they land.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 23% | 0% |
Drive PR(s) open → merged. Handle transient failures only: rerun flaky CI, enqueue when green + approved, re-enqueue after flaky merge-queue removal. Real failure → hand back to human.
Starts after review. Reviews are a human gate — never wait on them. Normal PR must be approved before entering the loop; unapproved → report not-ready, stop. Backports exempt (bot approves them, step 2).
Owns its own loop. Invoke once; tends PR(s) across turns until all merged. No /loop wrapper.
Acts (reruns, enqueues) — unlike ci-fix-failure, which only diagnoses. Never edits code, addresses comments, masks a failure, or lowers the bar to force a merge.
PR numbers in camunda/camunda or URLs. Shapes:
babysit #12345.backport stable/X.Y PRs from the bot. Pass the set, or passthe original and discover backports via gh pr list --repo camunda/camunda --search "<orig> in:body is:open" or the bot's linked-PR comment.
No PR → ask; don't infer from context. Non-camunda/camunda → ask human for confirmation, to assume monorepo conventions (GitHub Merge Queue, backport-action).
gh auth status works against camunda/camunda; CWD = repo root.main/stable aren't acceptablelong-term; real fix is hardening (retries-in-timeout, caching, runner sizing). Note every rerun; a check that flakes repeatedly → stop retrying, surface as a flake to fix.
incidents-only.
(docs/monorepo-docs/flaky-test-gate.md). Needs a code change or ci:flaky-test-bypass label — author's call.
main/stable paths: escalate sooner.
Classify before every rerun. Unsure → real, stop.
Rerun (transient): known flake (dashboard); infra noise (network, registry, runner provisioning); failure unrelated to diff AND green on target; merge-queue failure on the temp branch, not PR head.
Stop (real): compile/assertion/lint/spotless/license failure in touched code; same check fails again after rerun; BEHIND/CONFLICTING (author rebase); merge-queue removal from a concurrently merged dependency (ci.md §6); Flaky Test Gate alert.
Non-obvious failure → delegate diagnosis to ci-fix-failure, act on its verdict. Don't reimplement log-reading.
One row per PR. Repeat passes until every PR terminal, then report and stop.
Terminal: MERGED ✅ · not-approved normal PR (needs review) 🕓 · needs-author ⛔ (real failure, conflict, BEHIND, Flaky Test Gate) · cap hit 🔁✋.
1. State
bashgh pr view <pr> --repo camunda/camunda \ --json number,title,state,isDraft,mergeable,mergeStateStatus,reviewDecision,autoMergeRequest,headRefName,baseRefName,statusCheckRollup
MERGED → ✅.isDraft → bot's conflict-backport (committed conflict markers) or not-ready PR. Don't resolveunless asked → ⛔.
CONFLICTING / BEHIND → author rebase (don't rebase their branch unless asked) → ⛔.2. Approval gate (reviewDecision) — check before any CI work
APPROVED → not ready to babysit. Report 🕓 needs-review and mark terminal.Do NOT rerun CI or loop waiting for review — reviews are a human gate.
3. Checks (statusCheckRollup / gh pr checks <pr>)
bash gh run rerun <run-id> --failed --repo camunda/camunda Log "rerun N/3 of <check>". Real or cap hit → ⛔ + link.
4. Enqueue (normal PR, green + approved)
bash# = "Merge when ready": adds to the branch's merge queue, which applies its own # configured merge method. Author squashes commits before enqueueing (CONTRIBUTING.md). gh pr merge <pr> --repo camunda/camunda --auto
autoMergeRequest non-null = queued. Backports self-merge via the bot — don't enqueue one unless automation clearly stalled and the engineer asks.
5. Merge queue — re-enqueue on flaky removal
Queue builds temp branch (target + PR) and reruns CI. On removal, inspect:
bashgh run list --repo camunda/camunda --event merge_group --branch <baseRefName> --limit 10
Flaky on temp branch & under cap → re-enqueue (repeat step 4) — sanctioned retry (CONTRIBUTING.md). Real → ⛔.
Don't busy-wait. When every non-terminal PR is just waiting on CI, block until CI moves, then next pass. Background poll → re-invoked on change:
bashwhile :; do for pr in <pr-list>; do gh pr checks "$pr" --repo camunda/camunda 2>/dev/null | grep -q pending || exit 0 done sleep 300 done
Floor of a few minutes. Stop the loop once all PRs terminal.
Live status line per PR:
#12345 (main) 📥 enqueued
#12346 (stable/8.7) 🔁 reran unit-tests (flake 1/3)
#12347 (stable/8.6) ✅ mergedFinal summary: what merged, what needs the engineer, any check that flaked repeatedly (hardening candidate, rule 1). Link runs by URL; code refs use the repo's stable-permalink convention.
Other measured skills in the registry, with their headline benchmark lift.