Swe-skills swe:babysit-pr
git clone https://github.com/ckorhonen/swe-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/ckorhonen/swe-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/babysit-pr" ~/.claude/skills/ckorhonen-swe-skills-swe-babysit-pr && rm -rf "$T"
skills/babysit-pr/SKILL.mdSWE PR Babysitting
What This Skill Does
Use this skill to take one open pull request from active review to merge-safe state with minimal manual intervention.
The job is to keep a live watch loop going, absorb new feedback, push fixes, explain disagreements when feedback is invalid, and only stop when one of these terminal states is reached:
- the PR is ready to merge
- the PR is merged or closed
- a blocker requires user or reviewer input
The expected outcome is not a one-shot review. It is an active PR shepherding loop that keeps working until the branch is either safe to merge or explicitly blocked.
When To Use
Use this skill when the user wants to:
- babysit one open PR until it is merge-ready
- watch for review comments, change requests, and CI failures continuously
- apply small follow-up fixes and push them without waiting for manual nudges
- keep iterating until a reviewer or review bot gives the highest available score
- end with a clear
orready to merge
outcomeblocked
Do Not Use
Do not use this skill for:
- a one-time risk review with no ongoing watch loop
- post-merge production impact checks
- repo-wide CI triage without a scoped PR
- ambiguous product or design decisions that require fresh user direction
- unrelated worktree cleanup or broad refactors outside the PR
Inputs To Confirm
Confirm or infer:
- the PR number, URL, or branch to watch
- the repository scope if the PR target is ambiguous
- whether the local checkout is clean enough to edit safely
- whether the agent is allowed to push commits, reply on GitHub, and rerun checks
- any no-touch files, rollout constraints, or reviewer-specific expectations
If the request is vague, ask only for the missing PR identifier needed to lock onto one PR.
Tooling Stance
Prefer GitHub-native evidence and actions:
for mergeability, review decision, head branch, and head SHAgh pr view
plusgh pr checks
for CI state and failed logsgh run view
review and comment endpoints for issue comments, inline comments, reviews, and reactionsgh api- the local checkout for code changes, validation, commits, and pushes
If a repo has a stronger local helper for PR watching, use it. Otherwise, drive the loop directly with
gh and local git commands.
Instructions
Step 1: Lock To One PR And Establish Watch State
Resolve the exact PR and capture:
- PR number and URL
- head branch and current head SHA
- mergeable state and merge state status
- current review decision
- current CI snapshot
Create a small working state for the session that tracks:
- seen issue comment IDs
- seen inline review comment IDs
- seen review IDs
- retries per head SHA
- outstanding ambiguous or invalid-feedback threads
- the highest explicit reviewer score observed, if any
If the worktree has unrelated uncommitted changes, stop and ask the user before editing the PR branch.
Step 2: Run A 60-Second Watch Loop
Poll the PR every 60 seconds until a terminal state is reached.
Each pass should refresh:
- PR metadata and review decision
- issue comments
- inline review comments
- review summaries and requested-changes state
- CI checks and workflow runs
Do not stop on the first green snapshot. Keep watching until feedback, mergeability, CI, and any score gate all indicate the PR is ready.
Step 3: Triage New Comments And Reviews
For each new substantive issue comment, inline review comment, or review summary:
- read the full comment in context
- add an acknowledgement reaction promptly, such as
eyes - classify it as one of:
- actionable feedback
- ambiguous feedback
- invalid feedback
- non-actionable noise
Ignore obvious noise only after reading it once and confirming it does not change merge readiness.
Step 4: Address Actionable Feedback
When feedback is technically valid and in scope for the PR:
- make the smallest correct code or docs change on the PR branch
- run the narrowest useful validation first
- broaden validation only when the risk surface requires it
- commit and push once the change is ready
- reply on the PR with a concise note saying what changed and where
If a review explicitly requests changes, treat that as blocking until the follow-up change is pushed or the reviewer confirms the concern is resolved.
Step 5: Handle Ambiguous Feedback Without Guessing
If a comment is unclear, incomplete, or open to multiple valid interpretations:
- do not guess
- ask a concise clarifying question on the PR or to the user, depending on who owns the ambiguity
- present 2-3 concrete options with the tradeoff of each option
- keep the loop alive, but mark the PR as blocked on clarification
Do not push speculative changes just to keep the loop moving.
Step 6: Handle Invalid Feedback By Explaining Why
If feedback would regress correctness, violate explicit requirements, conflict with repo guidance, or undo a necessary safeguard:
- do not implement it blindly
- reply with a concise evidence-backed explanation
- cite the relevant file, test, contract, CI result, or requirement
- propose a smaller safe alternative when one exists
Treat this as addressed only after the rationale is posted and the thread is no longer waiting on silent action from the agent.
Step 7: Treat Review Decisions And Scores As Iteration Gates
Requested changes and unresolved review feedback are blocking.
If a reviewer or review bot provides an explicit numeric score such as
3/5 or
4/5:
- treat any score below the maximum on that scale as incomplete
- keep iterating until the highest available score is reached
- do not invent or assume a score when none was provided
If the score cannot improve without a product decision or external dependency, surface that blocker explicitly instead of pretending the PR is done.
Step 8: Diagnose CI Before You Retry Or Fix
When CI fails:
- inspect the failing checks and logs first
- classify the failure as:
- branch-related and caused by the PR
- flaky or unrelated to the PR
- blocked on infrastructure or permissions
- for branch-related failures:
- patch the branch
- validate narrowly
- commit and push
- for flaky or unrelated failures:
- rerun only after one inspection confirms that classification
- cap retries per SHA so the loop does not spin forever
- for infra-only blockers:
- tell the user exactly what failed and why the loop cannot resolve it
Never rerun failed CI blindly without looking at the logs first.
Step 9: End Only At A Real Terminal State
Stop the loop only when one of these is true:
- the PR is merged or closed
- CI is green, mergeability is not blocking, all substantive comments are addressed, any requested changes are resolved, any explicit score gate is at the top of its scale, and the latest review state indicates the code is safe and ready to merge
- a blocker requires user or reviewer help
When a terminal state is reached, notify the user immediately and summarize the current status.
Output Requirements
During the loop, keep updates short and state-based. Report only when something changed materially:
- new feedback arrived
- a fix was pushed
- CI changed state
- the PR became blocked or ready
At the terminal state, provide:
- PR number or URL
- terminal outcome:
,ready to merge
, ormerged or closedblocked - comments and reviews handled
- CI status and any reruns or fixes performed
- score status if a reviewer used a numeric score
- exact blocker or remaining risk, if any
Quality Bar
- Keeps one PR in scope and maintains a real 60-second watch loop
- Reads and acknowledges new substantive feedback instead of skipping it
- Distinguishes actionable, ambiguous, and invalid feedback correctly
- Uses evidence before disagreeing with a reviewer or classifying CI as flaky
- Keeps fixes small, reviewable, and tied to the PR
- Does not declare victory while comments, score gates, merge blockers, or CI failures remain
Examples
Example 1
User says:
Babysit PR #247 until it is ready to merge. Handle comments and CI for me.
Actions:
- lock onto PR #247 and start the 60-second watch loop
- react to new review comments and classify them
- push fixes for valid feedback
- investigate CI failures before reruns
- stop only when the PR is merge-safe or blocked
Result: The user gets a persistent PR shepherding pass instead of a one-time review.
Example 2
User says:
Watch this PR until the reviewer score is 5/5. If a comment is unclear, ask for clarification instead of guessing.
Actions:
- watch the PR continuously
- treat the explicit score as a gate
- ask clarifying questions with options when feedback is ambiguous
- keep iterating until the score reaches the top of the stated scale or a real blocker appears
Result: The loop keeps moving without guessing at reviewer intent.
Troubleshooting
- If GitHub auth is missing, stop and report the exact missing capability.
- If multiple PRs could match the request, ask for the specific PR instead of watching the wrong branch.
- If the reviewer never answers a clarification question, keep the PR in blocked state and tell the user exactly which thread is waiting on input.
- If mergeability stays unknown, treat that as non-ready until better evidence appears.