babysit · michael-denyer — Claude Code skill: shepherd an open PR to merge
Watches an open pull request: repairs broken CI, handles the easy review notes, and keeps nudging the branch until it can be merged.
npx skills add michael-denyer/pstack-claude --skill babysit -a claude-codeWhat babysit does
The skill is a loop built on the gh CLI. It starts by pulling the PR state with gh pr view <number> --json ..., then works through issues in order: merge conflicts, failed checks, review comments, notes from bots such as Bugbot. Each case hands off to a companion skill — fix-merge-conflicts, fix-ci, get-pr-comments.
A mechanical note (rename this, add a guard clause, fix formatting) gets applied directly, with the original comment quoted in the commit message. When the intent is a judgement call, the skill does not guess. It skips the edit and replies with what it would have done, and asks first on security and data findings.
Pacing comes from the loop skill. An active run uses gh pr checks --watch, which blocks until checks settle. Waiting on a reviewer means a 20–30 min heartbeat, and watching for fresh comments runs hourly. After three rounds of fix, push and recheck without full green, it stops and hands control back. The hard rules are firm: no history rewrite without your approval, no adjusting assertions to match a broken result, no --no-verify, no marking a failing check as optional.
Inside poteto-mode the Babysit playbook takes precedence and owns mode and stack behaviour. This skill is the standalone entry point for one PR outside such a run.
What it helps with
- fix a failing CI run on an open PR
- resolve merge conflicts with the main branch
- apply straightforward review feedback and commit it
- sort review-bot findings into fix, dismiss and ask
- get a branch to the point where
gh pr readymakes sense
Example prompts for the agent
- Keep an eye on PR #128 until it goes green
- Fix the failing checks on this branch and push
- Work through the review comments on my PR, apply the mechanical ones yourself
How to install babysit
1Skills CLI (Vercel)
npx skills add michael-denyer/pstack-claude --skill babysit -a claude-code2Manually: put the files in place
~/.claude/skills/babysit/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/babysit/
1Skills CLI (Vercel)
npx skills add michael-denyer/pstack-claude --skill babysit -a codex2Manually: put the files in place
.agents/skills/babysit/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add michael-denyer/pstack-claude --skill babysit -a cursor2Manually: put the files in place
.cursor/skills/babysit/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install michael-denyer/pstack-claude babysit2Manually: put the files in place
.github/skills/babysit/SKILL.md1Skills CLI (Vercel)
npx skills add michael-denyer/pstack-claude --skill babysit -a gemini-cli2Platform CLI
gemini skills install https://github.com/michael-denyer/pstack-claude --path plugins/pstack/skills/babysitManually: put the files in place
.devin/skills/babysit/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add michael-denyer/pstack-claude --skill babysit -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about babysit
How do I install babysit in Claude Code?
Run npx skills add michael-denyer/pstack-claude --skill babysit -a claude-code. The skill file lands at ~/.claude/skills/babysit/SKILL.md.
What does babysit do?
It tracks an open pull request: reads state via gh, resolves conflicts and failing CI, applies mechanical review edits, and tells you when the branch is ready to merge.
How is it different from Cursor's built-in /babysit?
It covers the same job for Claude and is written from scratch, with a gh CLI loop paced by the loop skill. Cursor's code is closed, so nothing was ported.
Source text
SKILL.md · MIT
--- name: babysit description: Watch an open PR — fix failing CI, handle the straightforward review comments, and drive it to a mergeable state. Claude Code analog of Cursor's built-in /babysit. Use after opening a PR when the user wants the agent to shepherd it without re-prompting. --- # Babysit a PR On Codex, read the [platform mapping](../poteto-mode/references/codex-tools.md), including its per-skill notes, before following this skill. On GitHub Copilot, read the [platform mapping](../poteto-mode/references/copilot-tools.md), including its per-skill notes, before following this skill. On Muse, read the [platform mapping](../poteto-mode/references/muse-tools.md), including its per-skill notes, before following this skill. Claude Code analog of Cursor's built-in `/babysit`. The implementation is a loop over `gh` CLI plus the Claude Code `loop` skill for pacing. Inside poteto-mode, the **Babysit** playbook ([`../poteto-mode/playbooks/babysit.md`](../poteto-mode/playbooks/babysit.md)) supersedes this skill: it owns mode declaration, the merge frontier, stack safety, and the `watch-pr` watcher. This skill stays the standalone `/babysit` entry point for a single PR outside a poteto-mode run. ## When to use - There's an open PR and the user explicitly wants it kept green, and you are not already inside a poteto-mode run (the playbook owns that case). - The user invokes `/babysit` directly. - A subagent that opens a PR does NOT babysit — return to the parent and let the parent decide. ## Steps 1. **Fetch PR state.** ```bash gh pr view <number> --json number,title,state,mergeable,reviewDecision,statusCheckRollup,mergeStateStatus,comments,reviews ``` 2. **Triage in priority order.** - Merge conflicts (`mergeStateStatus == DIRTY`): run the **fix-merge-conflicts** skill. Force-push only if the branch is yours and not shared. - Failing checks (`statusCheckRollup` entries with `conclusion: FAILURE`): run the **fix-ci** skill. Root-cause the failure; fix the underlying code or test; commit; push. - Review comments: run the **get-pr-comments** skill for the summary, then act only on feedback you actually agree with. When a comment has a single mechanical answer — a rename, a guard clause, a formatting nit — make the edit and quote the comment in the commit message. When it hinges on a judgement call, or you can't tell what's being asked, don't guess: leave it and reply with what you would have done. - Review-bot comments (Bugbot and similar automation): classify fix/dismiss/ask before acting, per [`bugbot-triage.md`](../poteto-mode/references/bugbot-triage.md). Ask by default on security, data, and high-severity findings. 3. **Loop.** Use the Claude Code `loop` skill to pace re-checks. Pick the interval from what you're watching: - Active CI run: poll `gh pr checks --watch` (it blocks until checks finish, so no separate loop interval needed). - Awaiting reviewer: 20–30 min heartbeat. - Idle but want to catch new comments: hourly. 4. **When to stop.** - Build is green, every comment resolved, branch merges cleanly → call it ready. - You've run three rounds of fix → push → recheck and it still isn't fully green → stop, summarise what's still broken, and hand control back. - The next fix would force a design choice → pause and put it to the user with `AskUserQuestion`. 5. **Report.** Summarize fixes applied, comments addressed, comments deferred (with reason), current PR status. Cite each commit by SHA. ## Hard rules - Don't rewrite history on a branch others may have pulled. If a rebase or force-push looks necessary, clear it with the user first. - Don't tweak a test's expected values just to get a pass. Only change an assertion when the behaviour genuinely changed and the assertion was pinned to the old behaviour. - Never skip hooks (`--no-verify`). - Never bypass a failing check by marking it as not required. - `gh pr ready` only when all checks are green and no unresolved review comments remain. ## Cross-refs - Opening a PR does not start a babysit; inside poteto-mode the Babysit playbook owns the request and starts only when asked. - Use `interrogate` before opening if the diff is contested; once open, babysit takes over. - Use `unslop` on any prose you write here (PR comments, commit messages, status reports). ## Provenance This is a Claude Code analog of Cursor's `/babysit`, not a port — Cursor's implementation is closed source. The skill is independently authored, with its own prose and structure; the workflow is informed by Cursor's public `/babysit` behavior. The only overlap with other PR tools is the `gh` CLI commands it runs, which are functional invocations rather than copied text.
© michael-denyer · MIT · michael-denyer/pstack-claude
Similar skills
All skills for Git and GitHub →babysit by other authors comes first.