en un clic
babysit
Multi-PR triage and parallel work dispatcher. Prevents single-PR tunnel vision by enforcing a survey-before-deep-dive protocol.
Menu
Multi-PR triage and parallel work dispatcher. Prevents single-PR tunnel vision by enforcing a survey-before-deep-dive protocol.
Classifies GitHub issues/PRs into PR-type categories and recommends autor techniques. Used by packages/core/src/decomposer.ts.
Use this skill when working in repositories managed by Agent Orchestrator or when the user asks how to use `ao` properly. Covers the default AO workflow: bootstrap with `ao start`, dispatch work with `ao spawn`, inspect progress with `ao status` or `ao session ls`, steer sessions with `ao send`, and recover or clean up sessions safely.
TDD-driven evidence workflow for generating authoritative failure/fix proof in PRs.
Canonical 7-green PR merge criteria, PR status check pattern, PR freeze discipline, and admin merge protocol
Define and run skeptic exit criteria for non-trivial tasks — independent verification agent with inverted incentive to find gaps
How to record asciinema/tmux evidence videos that prove work was done correctly
| name | babysit |
| description | Multi-PR triage and parallel work dispatcher. Prevents single-PR tunnel vision by enforcing a survey-before-deep-dive protocol. |
Prevents the most common agent failure: spending an entire session on one PR while other PRs rot.
gh pr list --state open --limit 100 --json number,title,mergeable,reviewDecision,headRefOid,statusCheckRollup,updatedAt --jq '.[] | . as $pr | "\(.number) | \(.title) | mergeable=\(.mergeable) | review=\(.reviewDecision) | ci=\((.statusCheckRollup // []) | map(select(.headSha == $pr.headRefOid)) | map(.conclusion) | group_by(.) | map({(.[0] // "pending"): length}) | add) | failed=\((.statusCheckRollup // []) | map(select(.headSha == $pr.headRefOid)) | map(. as $check | select(($check.conclusion // "") | ascii_upcase as $c | ["FAILURE","TIMED_OUT","ERROR","CANCELLED","ACTION_REQUIRED","STALE","STARTUP_FAILURE"] | index($c) != null and (($check.name // "") | test("Skeptic Gate"; "i") | not))) | length) | skeptic=\((.statusCheckRollup // []) | map(select(.headSha == $pr.headRefOid)) | map(. as $check | select(($check.name // "") | test("Skeptic Gate"; "i") and (($check.conclusion // "") | ascii_upcase as $c | ["FAILURE","TIMED_OUT","ERROR","CANCELLED","ACTION_REQUIRED","STALE","STARTUP_FAILURE"] | index($c) != null))) | length) | pending=\((.statusCheckRollup // []) | map(select(.headSha == $pr.headRefOid)) | map(select((.conclusion // "") == "")) | length) | \(.updatedAt[:10])"'
Note:
--limit 100covers repos with up to 100 open PRs. If your repo has more, increase the limit or paginate with--jqcursor-based fetching.
The failed=N count excludes Skeptic Gate checks (they are self-referential and tracked separately as skeptic=N). Use failed=N for Step 2 classification (needs-fix = failed > 0), and skeptic=N for skeptic-specific triage.
Mandatory. Do this BEFORE any single-PR work. No exceptions.
| Category | Criteria | Action |
|---|---|---|
| merge-ready | All 7-green gates: CI green (pending=0) + mergeable + review APPROVED + Bugbot clean + inline threads resolved + evidence authentic + same-head Skeptic PASS | Run full 7-green verification then merge |
| needs-fix | CI red (failed > 0), review CHANGES_REQUESTED, or skeptic FAIL | Spawn parallel AO worker per PR |
| blocked | CONFLICTING, depends on another PR, or external blocker | Log blocker, skip for now |
| stale | No activity >7 days | Close or ping owner |
For each needs-fix PR that is independent (no mutual dependencies), spawn an AO worker per PR:
ao spawn --claim-pr N // one per PR, uses AO worker model
Rules:
ao spawn per PR)If a PR needs >30 minutes of your own direct work:
ao skeptic verify serially on each PR — parallelizeSession 2026-05-12: 9 open PRs, entire session spent on #548 serially (6 commit/push/skeptic cycles). The "prefer parallel workers" rule was advisory, not procedural. This skill makes the triage+dispatch protocol mandatory.