PR Babysitter
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
Evaluate, fix, answer, and reply to GitHub pull request review comments and conversation comments.
$ npx skills add tobihagemann/turbo --skill resolve-pr-comments -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tobihagemann/turbo resolve-pr-comments --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tobihagemann/turbo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude/skills/resolve-pr-comments .claude/skills/resolve-pr-comments && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "resolve-pr-comments" agent skill from https://github.com/tobihagemann/turbo/tree/main/claude/skills/resolve-pr-comments into .claude/skills/resolve-pr-comments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resolve-pr-comments", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tobihagemann/turbo/tree/main/claude/skills/resolve-pr-commentsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tobihagemann/turbo --skill resolve-pr-comments -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tobihagemann/turbo resolve-pr-comments --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tobihagemann/turbo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/claude/skills/resolve-pr-comments .agents/skills/resolve-pr-comments && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "resolve-pr-comments" agent skill from https://github.com/tobihagemann/turbo/tree/main/claude/skills/resolve-pr-comments into .agents/skills/resolve-pr-comments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resolve-pr-comments", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tobihagemann/turbo --skill resolve-pr-comments -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tobihagemann/turbo resolve-pr-comments --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tobihagemann/turbo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/claude/skills/resolve-pr-comments .cursor/skills/resolve-pr-comments && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "resolve-pr-comments" agent skill from https://github.com/tobihagemann/turbo/tree/main/claude/skills/resolve-pr-comments into .cursor/skills/resolve-pr-comments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resolve-pr-comments", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tobihagemann/turbo.git --path claude/skills/resolve-pr-comments--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tobihagemann/turbo --skill resolve-pr-comments -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tobihagemann/turbo resolve-pr-comments --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tobihagemann/turbo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/claude/skills/resolve-pr-comments .gemini/skills/resolve-pr-comments && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "resolve-pr-comments" agent skill from https://github.com/tobihagemann/turbo/tree/main/claude/skills/resolve-pr-comments into .gemini/skills/resolve-pr-comments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resolve-pr-comments", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tobihagemann/turbo resolve-pr-commentsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tobihagemann/turbo --skill resolve-pr-comments -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tobihagemann/turbo.git skills-src && mkdir -p .github/skills && cp -r skills-src/claude/skills/resolve-pr-comments .github/skills/resolve-pr-comments && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "resolve-pr-comments" agent skill from https://github.com/tobihagemann/turbo/tree/main/claude/skills/resolve-pr-comments into .github/skills/resolve-pr-comments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resolve-pr-comments", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tobihagemann/turbo --skill resolve-pr-comments -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tobihagemann/turbo resolve-pr-comments --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tobihagemann/turbo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/claude/skills/resolve-pr-comments .opencode/skills/resolve-pr-comments && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "resolve-pr-comments" agent skill from https://github.com/tobihagemann/turbo/tree/main/claude/skills/resolve-pr-comments into .opencode/skills/resolve-pr-comments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resolve-pr-comments", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
resolve-pr-commentsEvaluate, fix, answer, and reply to GitHub pull request review comments and conversation comments.
Resolve PR Comments is an agent skill from tobihagemann/turbo. Evaluate, fix, answer, and reply to GitHub pull request review comments and conversation comments. Handles both change requests (fix or skip) and reviewer questions (explain using the rationale recalled from past Claude Code transcripts). Use when the user asks to "resolve PR comments", "fix review comments", "address PR feedback", "handle review comments", "address review feedback", "respond to PR comments", "answer review questions", or "address code review".
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/fetch-pr-data.sh`).
It sits in Development. It works with GitHub. The repository describes itself as: Reusable workflows for planning, building, reviewing, and shipping with Claude Code and Codex. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 160a0fa. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
gitbashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Resolve PR Comments loads about 3.8k tokens when it runs. Until then it costs about 121 tokens; SKILL.md has 2,058 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from tobihagemann/turbo at commit 160a0fa, republished under its MIT licence (© tobihagemann). 2,058 words, ~3,786 tokens.
.claude/skills/resolve-pr-comments/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Fetch unresolved review comments from a GitHub PR (inline threads, review-body observations, and issue-comment observations from the PR conversation), evaluate each one, fix or skip based on confidence, answer reviewer questions using the recalled rationale behind the change, and reply. Inline threads are answered with thread replies; issue-comment findings are answered with new PR conversation comments. Review-body findings flow through the same evaluate-and-fix pipeline; their outcomes land in the summary because a review body has no destination to post to.
At the start, use TaskCreate to create a task for each step:
/interpret-feedback skill/evaluate-findings skill/resolve-findings skill/reply-to-pr-threads skill/reply-to-pr-conversation skillAuto-detect owner, repo, and PR number from current branch if not provided. Then run scripts/fetch-pr-data.sh, which handles full pagination (reviews, review threads, inner comment pages for long threads, issue comments, commits) and emits a single merged JSON document:
bash <skill-dir>/scripts/fetch-pr-data.sh <owner> <repo> <pr_number>Output shape:
{
"meta": { "title", "url", "headRefName", "baseRefName", "body" },
"reviewThreads": [ { "id", "isResolved", "isOutdated", "comments": { "nodes": [ { "author", "body", "path", "line", "originalLine", "diffHunk" } ] } } ],
"reviews": [ { "author", "body", "state", "submittedAt" } ],
"issueComments": [ { "author", "body", "createdAt", "url" } ],
"commits": [ { "commit": { "oid", "abbreviatedOid", "message", "committedDate" } } ]
}Filter review threads to unresolved only. Filter reviews to those with a non-empty body, excluding PENDING state (unsubmitted drafts). Filter issue comments to those with a non-empty body.
Review bodies and PR conversation comments (issue comments) often pack multiple distinct concerns into one comment. Split each non-empty, non-PENDING review body and each non-empty issue comment into atomic observations, one per paragraph or bullet, so each can be evaluated on its own merits.
For every observation, check whether a subsequent commit already addresses it. Compare the source timestamp (submittedAt for review bodies, createdAt for issue comments) against each commit's committedDate; only commits after the source was posted can address it. Start with commit messages; read git show <oid> only when the message is ambiguous. A commit addresses an observation when its changes clearly resolve that specific concern. Touching the same area is not enough for an observation.
When an observation asserts a requirement or an intended behavior, compare that assertion against meta.body. The PR description is the author's own current statement of intent, so a description stating the opposite leaves a premise for Step 5 to settle. Record the contradiction against the observation and carry it forward, so Step 5 settles that premise once instead of re-deriving it for every finding the premise produced.
Classify each observation:
source (review-body or issue-comment), the author, the observation text, any recorded contradiction with the PR description, and (for review bodies) the review state.Review-body and issue-comment findings have no diffHunk, file path, or line reference. The downstream pipeline handles findings without a code location.
Triage inline threads on their replies. Look for a later reply that claims the concern is fixed and names the commit that fixed it. Verify two things about that commit. First, it is on the branch: it appears in commits, or git branch --contains <sha> reports the head branch. Second, it changed or deleted the thread's path. When both hold, classify the thread Addressed with that SHA and skip Steps 3 through 8 for it. Classify the rest Unaddressed and carry them into Step 3.
/interpret-feedback SkillRun the /interpret-feedback skill on the union of:
Skip AI-reviewer accounts — match by known login (e.g., coderabbitai, copilot-pull-request-reviewer[bot]), not the [bot] suffix alone. Their structured feedback routes directly to /evaluate-findings.
If that leaves no items to interpret, skip the skill invocation.
For inline threads, include the diffHunk so the interpreters can see the code the reviewer was looking at. For outdated comments where line is null, use originalLine. For review-body and issue-comment findings, provide the observation text and the PR's changed-file list as context.
Tag each item with its source (inline-thread, review-body, or issue-comment) so later steps can route replies correctly.
Classify each interpreted item as either a question or a change request based on the reconciled intent from Step 3.
When in doubt, treat the item as a change request. The verdict from /evaluate-findings in Step 5 will catch genuine non-issues.
Produce two lists. Each entry retains the source tag, identifier (thread id for inline threads; a generated id for review-body and issue-comment findings), file path and line (use originalLine when line is null; omit for review-body and issue-comment findings), the reviewer's original text, any recorded contradiction with the PR description, and the reconciled intent from Step 3. Questions skip Step 5 and feed Step 9. Change requests feed Step 5.
/evaluate-findings SkillIf Step 4 produced no change requests and Step 3 routed no AI-reviewer items here, skip the skill invocation.
Run the /evaluate-findings skill on the change requests from Step 4 and the AI-reviewer items Step 3 routed here, to triage each one. Questions are not evaluated here.
Review-body and issue-comment findings have no file or line reference. Scope their assessment to the PR's changed files as a whole, and do not treat the absent code location as a "code has diverged" early exit.
Collect items assigned an Escalate verdict by /evaluate-findings. If there are none, skip to Step 7.
Output all escalated items as a numbered list. For each item, show:
Then use AskUserQuestion to ask how to handle them. State each question as the decision the user owns: what the code should do. Leave the reviewer's wording and code location to the numbered list above. Per item, the options are:
Whenever the item is costly to reverse (its resolution establishes a pattern others will follow, defines an interface, commits to a data shape, or imports a pattern the codebase has not used), and whenever you cannot recommend one of the three with conviction, add a fourth Get a second opinion option. It runs the /consult-codex skill for the soundest resolution on technical merit alone, independent of the changeset's original scope, naming any scope cost with the answer. On an item that turns on product intent, run it for what each resolution commits to, what reversing it costs, and what the prevailing convention is. Then resolve the item with that answer in hand, re-asking when the choice stays the user's.
/resolve-findings SkillIf there are no accepted findings to implement, skip to Step 9.
Run the /resolve-findings skill on the accepted findings from Step 5, including any items reclassified in Step 6. It commits and pushes before returning; Steps 10 and 11 replies reference that commit SHA.
For each finding that was fixed in Step 7, verify the fix actually addresses the reviewer's concern:
diffHunk when available).If the fix did not address the concern (wrong location, incomplete change, or the issue is still present), downgrade the item to Skip. Record the reason (the attempted fix did not resolve the reviewer's concern, with a brief explanation of what remains) so Step 10 (for inline threads), Step 11 (for issue-comment findings), and Step 12 (for review-body findings) report it correctly.
For each question item whose source is inline-thread, run the /recall-rationale skill with <path>:<line> and compose a one-or-two-sentence answer from the rationale it returns, quoting or paraphrasing the implementer's own words where they explain the decision. When it returns no transcript, compose the answer from the current code and record that grounding for Step 12. Leave out any mention of Claude, transcripts, or recalled rationale, and leave voice rules and reply formatting to Step 10.
Issue-comment questions are composed during Step 11's assembly and posted by /reply-to-pr-conversation. They have no file and line to ground with /recall-rationale, so the composition draws on the reconciled intent and the PR's changed code. Review-body questions have no destination to post to and are listed for manual follow-up in Step 12.
If there are no inline-thread questions, skip this step.
/reply-to-pr-threads SkillAssemble the processed-thread list from inline-thread items only:
/evaluate-findings, plus any downgraded in Step 8. Payload: the skip reasoning.Issue-comment findings go to Step 11. Review-body findings have no destination to post to, Addressed inline threads already carry the reply naming the commit, and fixed AI-reviewer threads are left for the reviewer to resolve on its next pass; all three surface only in Step 12.
If there are no inline-thread items to reply to, skip the skill invocation.
Run the /reply-to-pr-threads skill with the assembled list.
/reply-to-pr-conversation SkillAssemble the processed-item list from issue-comment items only. Each entry includes the generated id, the author, the original comment body (for quoting), the category, and the per-category payload:
/evaluate-findings, plus any downgraded in Step 8. Payload: the skip reasoning.Review-body findings have no destination to post to. Exclude them from this list; their triage status is reported in Step 12.
If there are no issue-comment items to reply to, skip the skill invocation.
Run the /reply-to-pr-conversation skill with the assembled list.
After processing all items, present a summary grouped by source.
Inline threads:
Review-body findings:
Issue-comment findings:
Overall: list of files modified.
© tobihagemann, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in claude/skills/resolve-pr-comments of tobihagemann/turbo.
Open the folder on GitHubat commit 160a0fa
Resolve PR Comments next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Resolve PR Comments this skilltobihagemann/turbo | 409 | — | ~3.8k | Automated safety check: Pass | MIT | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Greplooponyx-dot-app/onyx | 32k | 4 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Check PRonyx-dot-app/onyx | 32k | 2 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Setup Matt Pocock Skillsbestofjs/bestofjs | 3.1k | 20 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT |
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
onyx-dot-app/onyx
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.
onyx-dot-app/onyx
Checks a GitHub, GitLab, or Perforce (p4) pull request (or merge request, or shelved changelist) for unresolved review comments, failing status checks, and incomplete PR descriptions.
bestofjs/bestofjs
Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout.
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
cline/cline
Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.
tobihagemann/turbo
Consult ChatGPT Pro via ChatGPT browser automation for problems that resist standard approaches.
tobihagemann/turbo
Fetch and summarize review feedback and conversation from a GitHub PR (unresolved review threads, review bodies, and PR conversation comments) without making changes.
tobihagemann/turbo
Recall why a past change was made by locating the Claude Code transcript that produced it.
tobihagemann/turbo
Evaluate, fix, answer, and reply to GitHub pull request review comments and conversation comments.
tobihagemann/turbo
Assess project-wide structural technical debt: complexity hotspots, deprecated API usage, duplication clusters, architecture rot, and low-value tests.
tobihagemann/turbo
Run autonomous task execution using the codex CLI. An agent skill from tobihagemann/turbo.
Works with
Categories
Evaluate, fix, answer, and reply to GitHub pull request review comments and conversation comments. Resolve PR Comments is an agent skill from tobihagemann/turbo. Evaluate, fix, answer, and reply to GitHub pull request review comments and conversation comments.
Resolve PR Comments fits situations like: the user asks to resolve PR comments; fix review comments; address PR feedback; handle review comments.
Run `npx skills add tobihagemann/turbo --skill resolve-pr-comments -a claude-code`. Or copy the skill folder (claude/skills/resolve-pr-comments in tobihagemann/turbo) into .claude/skills/resolve-pr-comments in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tobihagemann/turbo --skill resolve-pr-comments -a codex`. Or copy the skill folder (claude/skills/resolve-pr-comments in tobihagemann/turbo) into .agents/skills/resolve-pr-comments in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tobihagemann/turbo --skill resolve-pr-comments -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/resolve-pr-comments, .gemini/skills/resolve-pr-comments, .github/skills/resolve-pr-comments and .opencode/skills/resolve-pr-comments in your project.
Going by SKILL.md and its folder, Resolve PR Comments needs a shell for the scripts in its folder and the command-line tools its instructions call (git and bash). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Resolve PR Comments is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Resolve PR Comments: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Greploop (onyx-dot-app/onyx, 32k stars), Check PR (onyx-dot-app/onyx, 32k stars) and Setup Matt Pocock Skills (bestofjs/bestofjs, 3.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tobihagemann (a GitHub user) maintains it in tobihagemann/turbo, which has 409 GitHub stars. The repository holds 81 skills in this directory. The repository was last updated on October 9, 2026.
Source: tobihagemann/turbo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.