Babysit PR
Get a change request to a merge-ready state: green CI, no merge conflicts, and every actionable review thread has an in-thread reply.
For full triage templates, host detection, and tracker updates, also read
engineering/address-change-request-review.
Workflow
- Merge conflicts — Resolve intelligently, preserving branch intent. If intents conflict, abort and ask for clarification. Follow the repo's conflict playbook when one exists.
- Comments — Review active unresolved review threads (including
CodeRabbit/Bugbot). Use GraphQL review threads on GitHub; use discussions API
on GitLab. Read only each comment body and the minimum location needed.
- Reply in the review thread, not as a top-level PR/MR comment. On
GitHub, use
addPullRequestReviewThreadReply(GraphQL) or RESTin_reply_toon the original review comment so the response appears under the inline finding. - Do not resolve or close threads yourself unless the repo's
AGENTS.md(or equivalent) explicitly instructs agents to resolve. Push the fix (or a brief decline with reason), reply in-thread, and leave resolution to the reviewer or bot. - Validate bot findings against current code; skip invalid ones with a one-line in-thread explanation.
- Reply in the review thread, not as a top-level PR/MR comment. On
GitHub, use
- CI — Fix failures caused by this PR's scope only. Never weaken checks or make unrelated changes. If the branch is behind the base branch, merge or rebase latest default branch first. Push scoped fixes and re-watch CI until mergeable and green.
Stay in an isolated worktree on the feature branch — follow
engineering/isolated-worktree.
GitHub — reply in-thread (example)
gh api graphql -f query='mutation($id:ID!,$body:String!){
addPullRequestReviewThreadReply(input:{pullRequestReviewThreadId:$id,body:$body}){
comment{url}
}
}' -f id='<thread-id>' -f body='Fixed in <sha>: <summary>. Leaving this thread open for you to resolve.'
List unresolved threads (paginate; filter isResolved: false client-side):
gh api graphql --paginate -f query='query($n:Int!,$endCursor:String){
repository(owner:"<owner>",name:"<repo>"){
pullRequest(number:$n){
reviewThreads(first:50, after:$endCursor){
pageInfo{ hasNextPage endCursor }
nodes{ id isResolved path line }
}
}
}
}' -F n=<pr-number>
Guardrails
- Top-level PR comments are not a substitute for in-thread replies.
- Do not mark feedback handled in chat only.
- Do not edit the default-branch checkout.
Related skills
engineering/address-change-request-reviewengineering/submit-change-requestoperations/pr-agent-wakeengineering/isolated-worktree