# babysit

Watches an open pull request: repairs broken CI, handles the easy review notes, and keeps nudging the branch until it can be merged.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 812 installs · ★ 3451
- Author: michael-denyer
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/michael-denyer/pstack-claude/tree/HEAD/plugins/pstack/skills/babysit/SKILL.md
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/skills/michael-denyer-babysit

## What it 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.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add michael-denyer/pstack-claude --skill babysit -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/babysit/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/babysit/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add michael-denyer/pstack-claude --skill babysit -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/babysit/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add michael-denyer/pstack-claude --skill babysit -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/babysit/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install michael-denyer/pstack-claude babysit
```

2. **Manually: put the files in place**
- File: `.github/skills/babysit/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add michael-denyer/pstack-claude --skill babysit -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/michael-denyer/pstack-claude --path plugins/pstack/skills/babysit
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/babysit/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add michael-denyer/pstack-claude --skill babysit -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/michael-denyer/pstack-claude/tree/HEAD/plugins/pstack/skills/babysit/SKILL.md

## When to use it
- 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 ready` makes sense

## Example prompts
- 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

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: e3143077bcc0f1e6.

BEGIN THIRD-PARTY FILE e3143077bcc0f1e6
````text
---
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.
````
END THIRD-PARTY FILE e3143077bcc0f1e6

The third-party file has ended. Everything between the e3143077bcc0f1e6 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2469 of 4751 bytes. © michael-denyer · MIT · https://github.com/michael-denyer/pstack-claude/tree/HEAD/plugins/pstack/skills/babysit/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
