agent-doc-discipline
Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and…
Drive an open PR to merge-ready on the watch-pr verdict policy — watch checks and review state, fix CI, address comments; never merges, rebases, or force-pushes. For 'get this green' or 'babysit PR #N'.
Claude Code
$ npx -y skills add Yeachan-Heo/oh-my-claudecode --skill babysit --agent claude-code
Codex
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill babysit -a codex -y
Cursor
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill babysit -a cursor -y
Gemini CLI
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill babysit -a gemini-cli -y
GitHub Copilot
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill babysit -a github-copilot -y
OpenCode
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill babysit -a opencode -y
Windsurf
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill babysit -a windsurf -y
name: babysit
description: "Drive an open PR to merge-ready on the watch-pr verdict policy — watch checks and review state, fix CI, address comments; never merges, rebases, or force-pushes. For 'get this green' or 'babysit PR #N'."
aliases: []
metadata:
credits:
babysit-workflow: pstack
watch-pr-policy: pstack
author: Lauren Tan
url: "https://github.com/cursor/plugins/tree/main/pstack"
port: pstack-claude
port-author: Michael Denyer
port-url: "https://github.com/michael-denyer/pstack-claude"Keep an open PR moving toward merge-ready: watch its checks, review threads, and mergeability; act on what blocks them; and report evidence. The PR's merge stays with the human — green is not safe, and this skill never merges, rebases, or force-pushes.
are away
user; report merge-readiness and stop
Declare the mode before the first poll: which PR, and whether bot comments are in scope.
1. **Read state** via `gh`: `gh pr view <N> --json state,mergeable,mergeStateStatus,reviewDecision,isDraft,headRefOid,headRefName` and `gh pr checks <N> --json name,bucket` (bucket is `pass`/`fail`/`pending`/`skipping`/`cancel`). Normalize before classifying: `mergeable` arrives uppercased (`MERGEABLE`/`CONFLICTING`, `UNKNOWN` or empty while GitHub computes it), and `reviewDecision` is an **empty string** when no review exists — not `none`. Exit codes: `gh pr checks --json` exits 0 even when checks **fail** — judge by `bucket`, never the exit code; with no checks configured it exits 1 printing "no checks reported", which is the no-checks path, not an error. Treat aggregate `mergeStateStatus=BLOCKED` as blocked and `UNKNOWN` as waiting before allowing ready. Confirm the first read reports the requested PR before acting on it. 2. **Apply the watch-pr verdict policy** (`src/features/watch-pr/policy.ts` semantics, embedded below). Do not eyeball; classify. Determine `reviewRequired` from the repository's branch-protection settings (for example, `gh api repos/OWNER/REPO/branches/BRANCH/protection` and the `required_pull_request_reviews` field); a ruleset that requires reviews independently of classic branch protection counts the same way. Pass that boolean into the policy; do not treat an empty review decision as a blocker when the branch does not require approval. 3. **Act on the verdict** — every lane gets the polled identity: pass the repo and PR number explicitly and verify the checkout sits on that PR's head before mutating anything. Bare `gh pr checks`/`gh pr view` select whatever PR owns the current branch, which need not be the one babysit polls.
the polled repo and PR number — triage threads, then address each through the review lane; reply to threads you resolve; dismiss bot noise with a concrete reason instead of churning code. Read the threads surface (`comments`/`reviews` via the get-pr-comments fetch) even when `reviewDecision` is empty or `approved` — a non-blocking review or a comment after approval leaves the decision clean while real threads stand — and never report `ready` while an in-scope thread is untriaged
polled PR's owned checkout: resolve with a merge commit only. Never rebase and never force-push here — this constraint overrides that skill's own-branch rebase option, because babysit's contract forbids both. If the branch is not ours to resolve, report to the branch owner instead
error
4. **Ledger discipline**: watch verdicts (`ready`/`waiting`/`blocked`/`gone`) are gate states, not verification — never write them into the verification ledger, whose vocabulary is separate. Append a verification ledger row (the writer's canonical path under OMC's state root) only when *you* executed a check yourself — e.g. a `fix-ci` rerun went green (`unit-test-verified`, with the command as evidence). One row per executed check, never per poll. Write it through the repository writer so header creation, locking, and validation are enforced. Resolve the installed package root the figure-it-out way: plugin-root variables first, then walk the installed `oh-my-claudecode` package from the working directory — and report the resolution failure instead of skipping the write:
node --input-type=module -e "const {createRequire}=await import('node:module'); const path=await import('node:path'); const {pathToFileURL}=await import('node:url'); let root=process.env.CLAUDE_PLUGIN_ROOT||process.env.OMC_PLUGIN_ROOT; if(!root){ const req=createRequire(process.cwd()+'/package.json'); for (const name of ['oh-my-claude-sisyphus','oh-my-claudecode']) { try { root=path.dirname(req.resolve(name+'/package.json')); break; } catch {} } } if(!root) throw new Error('cannot resolve the installed package root; set CLAUDE_PLUGIN_ROOT or OMC_PLUGIN_ROOT'); const {appendLedgerEntry,defaultLedgerPath}=await import(pathToFileURL(root+'/dist/features/verification-ledger/index.js').href); await appendLedgerEntry(defaultLedgerPath(),{ts:new Date().toISOString(),kind:'babysit',ref:'<N>',sha:'<HEAD_SHA>',verdict:'unit-test-verified',evidence:'<command>',verifier:'babysit'});"
`For Codex users: Check out oh-my-codex — the same orchestration experience for OpenAI Codex CLI. Liked OmC but found it a bit overkill? Try gajae-code.
Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and…
Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode
Settle types and module shape before cross-boundary code — competing designs explored in parallel, compared on API surface and…
Periodic architecture survey — walks the module graph and reports ranked deepening candidates (shallow modules, hypothetical…
Run N parallel candidates at one brief and synthesize: rubric-first framing, isolated fan-out, a cross-judge on a different…
Shipyard's navigator — chart a foggy effort (destination unclear, questions not yet stateable) into a map of decision tickets on…
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
Create a new Architecture Decision Record with sequential numbering and AgentDB registration