MCP.Market

babysit-pr skill

by openinterpreter·openinterpreter/openinterpreter·69k stars·Apache-2.0

Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep watching open PRs so fresh review feedback is surfaced promptly. Use when the user asks Codex to monitor a PR, watch CI, handle review comments, or keep an eye on failures and feedback on an open PR.

A100/100content scan

Is the babysit-pr skill safe?

Clean: nothing in its files matched our rules. We read 6 files in the folder on 2026-10-25.

No findings.

Install the babysit-pr skill

A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.

git clone --depth 1 https://github.com/openinterpreter/openinterpreter.git /tmp/openinterpreter
mkdir -p ~/.claude/skills
cp -r /tmp/openinterpreter/.codex/skills/babysit-pr ~/.claude/skills/babysit-pr
available in every project

In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub

The instructions your agent would load

SKILL.md as published, without the frontmatter. Read it on GitHub

PR Babysitter

Objective

Babysit a PR persistently until one of these terminal outcomes occurs:

  • The PR is merged or closed.
  • A situation requires user help (for example CI infrastructure issues, repeated flaky failures after retry budget is exhausted, permission problems, or ambiguity that cannot be resolved safely).
  • Optional handoff milestone: the PR is currently green + mergeable + review-clean. Treat this as a progress state, not a watcher stop, so late-arriving review comments are still surfaced promptly while the PR remains open.

Do not stop merely because a single snapshot returns idle while checks are still pending.

Inputs

Accept any of the following:

  • No PR argument: infer the PR from the current branch (--pr auto)
  • PR number
  • PR URL

Core Workflow

  1. When the user asks to "monitor"/"watch"/"babysit" a PR, start with the watcher's continuous mode (--watch) unless you are intentionally doing a one-shot diagnostic snapshot.
  2. Run the watcher script to snapshot PR/review/CI state (or consume each streamed snapshot from --watch).
  3. Inspect the actions list in the JSON response.
  4. If diagnosecifailure is present, inspect failed run logs and classify the failure.
  5. If the failure is likely caused by the current branch, patch code locally, commit, and push. Do not patch random flaky tests, CI infrastructure, dependency outages, runner issues, or other failures that are unrelated to the branch.
  6. If processreviewcomment is present, inspect surfaced published review items and decide whether to address them.
  7. If a review item is actionable and correct, patch code locally, commit, push, and then resolve the associated review thread only when allowed by the GitHub state mutation policy below.
  8. Do not post replies to human-authored review comments/threads unless the user explicitly confirms the exact response. If a human review item is non-actionable, already addressed, or not valid, surface the item and recommended response to the user instead of replying on GitHub.
  9. If the failure is likely flaky/unrelated and retryfailedchecks is present, rerun failed jobs with --retry-failed-now.
  10. If both actionable review feedback and retryfailedchecks are present, prioritize review feedback first; a new commit will retrigger CI, so avoid rerunning flaky checks on the old SHA unless you intentionally defer the review change.
  11. On every loop, look for newly surfaced review feedback before acting on CI failures or mergeability state, then verify mergeability / merge-conflict status (for example via gh pr view) alongside CI.
  12. After any push or rerun action, immediately return to step 1 and continue polling on the updated SHA/state.

Commands

One-shot snapshot

python3 .codex/skills/babysit-pr/scripts/gh_pr_watch.py --pr auto --once

Continuous watch (JSONL)

python3 .codex/skills/babysit-pr/scripts/gh_pr_watch.py --pr auto --watch

Trigger flaky retry cycle (only when watcher indicates)

python3 .codex/skills/babysit-pr/scripts/gh_pr_watch.py --pr auto --retry-failed-now

Explicit PR target

python3 .codex/skills/babysit-pr/scripts/gh_pr_watch.py --pr <number-or-url> --once

CI Failure Classification

Use gh commands to inspect failed runs before deciding to rerun.

  • gh run view --json jobs,name,workflowName,conclusion,status,url,headSha
  • gh api repos///actions/runs//jobs -X GET -f per_page=100
  • gh api repos///actions/jobs//logs > /tmp/codex-gh-job--logs.zip
  • gh run view --log-failed as a fallback after the overall workflow run is complete

gh run view --log-failed is workflow-run scoped and may not expose failed-job logs until the overall run finishes. For faster diagnosis, poll the run's jobs first and, as soon as a specific job has failed, fetch that job's logs directly from the Actions job logs endpoint. The watcher includes a failedjobs list with each failed job's jobid and logs_endpoint when GitHub exposes one.

Prefer treating failures as branch-related when failed-job logs point to changed code (compile/test/lint/typecheck/snapshots/static analysis in touched areas).

Prefer treating failures as flaky/unrelated when logs show transient infra/external issues (timeouts, runner provisioning failures, registry/network outages, GitHub Actions infra errors).

Do not attempt to fix flaky/unrelated failures by changing tests, build scripts, CI configuration, dependency pins, or infrastructure-adjacent code unless the logs clearly connect the failure to the PR branch. For flaky/unrelated failures, rerun only when the watcher recommends retryfailedchecks; otherwise wait or stop for user help.

If classification is ambiguous, perform one manual diagnosis attempt before choosing rerun.

Read .codex/skills/babysit-pr/references/heuristics.md for a concise checklist.

Review Comment Handling

The watcher surfaces review items from:

  • PR issue comments
  • Inline review comments
  • Review submissions (COMMENT / APPROVED / CHANGES_REQUESTED)

Only act on published feedback. Ignore review submissions in GitHub's PENDING state and inline comments attached to those pending reviews. Do not mark pending review feedback as seen; it should be eligible to surface after the reviewer submits the review.

It intentionally surfaces Codex reviewer bot feedback (for example comments/reviews from chatgpt-codex-connector[bot]) in addition to human reviewer feedback. Most unrelated bot noise should still be ignored. For safety, the watcher only auto-surfaces trusted human review authors (for example repo OWNER/MEMBER/COLLABORATOR, plus the authenticated operator) and approved review bots such as Codex. On a fresh watcher state file, existing unaddressed published review feedback may be surfaced immediately (not only comments that arrive after monitoring starts). This is intentional so already-open review comments are not missed.

When you agree with a comment and it is actionable:

  1. Patch code locally.
  2. Commit with codex: address PR review feedback (#).
  3. Push to the PR head branch.
  4. After the push succeeds, resolve the associated GitHub review thread only when allowed by the GitHub state mutation policy below.
  5. Resume watching on the new SHA immediately (do not stop after reporting the push).
  6. If monitoring was running in --watch mode, restart --watch immediately after the push in the same turn; do not wait for the user to ask again.

Do not post replies to human-authored GitHub review comments/threads automatically. If you disagree with a human comment, believe it is non-actionable/already addressed, or need to answer a question, report the item to the user with a suggested response and wait for explicit confirmation before posting anything on GitHub. If the user approves a response, prefix it with [codex] so it is clear the response is automated and not from the human user. If the watcher later surfaces your own approved reply because the authenticated operator is treated as a trusted review author, treat that self-authored item as already handled and do not reply again. If a code review comment/thread is already marked as resolved in GitHub, treat it as non-actionable and safely ignore it unless new unresolved follow-up feedback appears.

GitHub State Mutation Policy

You can read any PR state you need for monitoring. Writes must comply with this policy.

You can push PRs to update the code under review or to force CI re-runs as described above.

You can resolve review comment threads from the human who requested babysitting or from the Codex review bot. When resolving, leave a comment prefixed with [from Codex]: and explain what changes you made and which commit includes them. Don't touch review threads if other humans other than the user who requested babysitting have participated.

Before making any changes, fetch the PR state yourself instead of relying on the PR watcher script's output.

Unless explicitly asked, do not:

  • comment on other humans' review threads, communicate with the user in chat instead
  • resolve review threads from humans other than the user
  • interact with humans other than the user
  • mark PRs as drafts or ready for review
  • close or reopen PRs

In general, never act on GitHub in ways that would make it hard to tell whether you or the user did something visible to other humans. When in doubt, ask the user for clarification in chat.

Git Safety Rules

  • Work only on the PR head branch.
  • Avoid destructive git commands.
  • Do not switch branches unless necessary to recover context.
  • Before editing, check for unrelated uncommitted changes. If present, stop and ask the user.
  • After each successful fix, commit and git push, then re-run the watcher.
  • If you interrupted a live --watch session to make the fix, restart --watch immediately after the push in the same turn.
  • Do not run multiple concurrent --watch processes for the same PR/state file; keep one watcher session active and reuse it until it stops or you intentionally restart it.
  • A push is not a terminal outcome; continue the monitoring loop unless a strict stop condition is met.

Commit message defaults:

  • codex: fix CI failure on PR #
  • codex: address PR review feedback (#)

Monitoring Loop Pattern

Use this loop in a live Codex session:

  1. Run --once.
  2. Read actions.
  3. First check whether the PR is now merged or otherwise closed; if so, report that terminal state and stop polling immediately.
  4. Check CI summary, new review items, and mergeability/conflict status.
  5. Diagnose CI failures and classify branch-related vs flaky/unrelated. If the overall run is still pending but failed_jobs already includes a failed job, fetch that job's logs and diagnose immediately instead of waiting for the whole workflow run to finish. Patch only when the failure is branch-related.
  6. For each surfaced review item from another author, patch/commit/push if it is actionable, then resolve it only when allowed by the GitHub state mutation policy above. If it is non-actionable, already addressed, or requires a written answer, surface it to the user with a suggested response instead of posting automatically. If a later snapshot surfaces your own approved reply, treat it as informational and continue without responding again.
  7. Process actionable review comments before flaky reruns when both are present; if a review fix requires a commit, push it and skip rerunning failed checks on the old SHA.
  8. Retry failed checks only when retryfailedchecks is present and you are not about to replace the current SHA with a review/CI fix commit. Do not make code changes for unrelated flakes or infrastructure failures just to get CI green.
  9. If you pushed a commit, resolved an eligible review thread, or triggered a rerun, report the action briefly and continue polling (do not stop). If a human review comment needs a written GitHub response, stop and ask for confirmation before posting.
  10. After a review-fix push, proactively restart continuous monitoring (--watch) in the same turn unless a strict stop condition has already been reached.
  11. If everything is passing, mergeable, not blocked on required review approval, and there are no unaddressed review items, report that the PR is currently ready to merge but keep the watcher running so new review comments are surfaced quickly while the PR remains open.
  12. If blocked on a user-help-required issue (infra outage, exhausted flaky retries, unclear reviewer request, permissions), report the blocker and stop.

When the user explicitly asks to monitor/watch/babysit a PR, prefer --watch so polling continues autonomously in one command. Use repeated --once snapshots only for debugging, local testing, or when the user explicitly asks for a one-shot check. Do not stop to ask the user whether to continue polling; continue autonomously until a strict stop condition is met or the user explicitly interrupts. Do not hand control back to the user after a review-fix push just because a new SHA was created; restarting the watcher and re-entering the poll loop is part of the same babysitting task. If a --watch process is still running and no strict stop condition has been reached, the babysitting task is still in progress; keep streaming/consuming watcher output instead of ending the turn.

Polling Cadence

Keep review polling aggressive and continue monitoring even after CI turns green:

  • While CI is not green (pending/running/queued or failing): poll every 1 minute.
  • After CI turns green: keep polling at the base cadence while the PR remains open so newly posted review comments are surfaced promptly instead of waiting on a long green-state backoff.
  • Reset the cadence immediately whenever anything changes (new commit/SHA, check status changes, new review comments, mergeability changes, review decision changes).
  • If CI stops being green again (new commit, rerun, or regression): stay on the base polling cadence.
  • If any poll shows the PR is merged or otherwise closed: stop polling immediately and report the terminal state.

Stop Conditions (Strict)

Stop only when one of the following is true:

  • PR merged or closed (stop as soon as a poll/snapshot confirms this).
  • User intervention is required and Codex cannot safely proceed alone.

Keep polling when:

  • actions contains only idle but checks are still pending.
  • CI is still running/queued.
  • Review state is quiet but CI is not terminal.
  • CI is green but mergeability is unknown/pending.
  • CI is green and mergeable, but the PR is still open and you are waiting for possible new review comments or merge-conflict changes.
  • The PR is green but blocked on review approval (REVIEW_REQUIRED / similar); continue polling at the base cadence and surface any new review comments without asking for confirmation to keep watching.

More skills from openinterpreter/openinterpreter

  • Acode-breaking-changesBreaking changes
  • Acode-reviewRun a final code review on a pull request
  • Acode-review-change-sizeChange size guidance (800 lines)
  • Acode-review-contextModel visible context
  • Acode-review-testingTest authoring guidance
  • Acodex-pr-bodyUpdate the title and body of one or more pull requests.
  • AimagegenGenerate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG/vector/code-native assets, extending an established icon or logo system, or building the visual directly in HTML/CSS/canvas.
  • Aopenai-docsUse for Codex models/pricing, scheduled tasks, skills, settings, setup, troubleshooting, customization, automations, and self-knowledge—including 'you,' 'your,' 'this app,' or 'this coding agent' when they refer to Codex—and for OpenAI APIs/products and ChatGPT Work. Also use for model choice/migration, prompting, SDKs, Responses, Realtime, agents, evals, and Chat/Work/Codex comparisons. Do not use for generic app/software tasks that merely mention Codex.
  • Apath-typesChoose Rust types for operating system paths across the Codex repository. Use when defining new path-bearing types or explicitly migrating existing ones.
  • Dplugin-creatorCreate and scaffold plugin directories for Codex with a required `.codex-plugin/plugin.json`, optional plugin folders/files, valid manifest defaults, and personal-marketplace entries by default. Use when Codex needs to create a new personal plugin, add optional plugin structure, generate or update marketplace entries for plugin ordering and availability metadata, or update an existing local plugin during development with the CLI-driven cachebuster and reinstall flow.
  • Aqa-testingVerify your work by actually operating the app or website you changed, instead of assuming it works. Strongly recommended whenever you build, modify, or debug a web app, website, or desktop GUI app. Drive real browsers with the agent-browser CLI and native desktop apps with the cua-driver CLI. These are installed on demand through the host's normal command-approval flow.
  • Aremote-testsTesting against remote executors in integration tests.

All agent skills → · MCP servers