babysit
Skill1 starsChanged 2 months agoApache-2.0View on GitHub
Drive a PR to a clean review (Greptile 5/5, zero open threads) — ships if needed, keeps it mergeable against staging, triggers Greptile/Cursor Bugbot, fixes real findings, replies to and resolves every thread, and loops until clean
- Commits and pushes
We split this skill into the rules it gives an agent
13 rules. 0 are common, 11 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 37 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 32
Do not stop early on "no new comments this round" alone — a thread can be open from an earlier round.
- Distinctive: line 37
Check current state: before doing anything, including whether the PR is still mergeable:
- Very specific: line 54
If mergeable is CONFLICTING, fix that first (step 2).
- Distinctive: line 74
False positive: don't change code. Reply with the specific reason it doesn't apply (cite the type definition, the established pattern it …
- Distinctive: line 80
Reply to every thread individually: before resolving it — never resolve silently:
- Distinctive: line 134
When the loop ends, summarize: how many rounds it took, what was actually fixed (one line each), what was pushed back on as a false …
- Distinctive: line 139
Every reply, comment and commit you post here is public and permanent, and review bots quote your replies back so a leak propagates.
- Distinctive: line 150
Never post the two re-review mentions as a single combined comment.
- Distinctive: line 151
Never paste prod evidence into a reply without scrubbing it first (see above).
- Distinctive: line 152
Never resolve a thread without replying to it first.
- Distinctive: line 153
Never fix a finding with a hacky workaround — if the clean fix isn't obvious, find the sibling pattern elsewhere in the codebase solving …
- Distinctive: line 155
Never silently drop a finding — every thread gets either a code fix or a reasoned reply.
- Very specific: line 156
Always re-run the /ship-style sync check before every push in the loop, not just the first.
“Common” is measured: kept by at least 6 in 10 of the 37 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Babysit PRs
Owns a PR end-to-end through review: ship it, wait for the automatic review round, and if it
isn't already clean, drive fix → reply → resolve → re-review cycles until Greptile reports 5/5
and there are zero open comment threads, keeping the branch mergeable against staging along the
way. Designed to be run under /loop (no fixed interval — let it self-pace on review latency)
so it survives across multiple wakeups in the same session.
When to use
- The user says "babysit this PR", "keep working the reviews until it's clean", or similar
- As the natural follow-up to
/shipwhen the user wants the review loop automated rather than manually re-triggering reviews and answering comments themselves
Inputs
Needs a PR number. If none is given and there's no open PR for the current branch, run /ship
first (which includes the origin/staging sync check — see .agents/skills/ship/SKILL.md) to
create one.
Definition of "clean"
Both must hold:
- The latest Greptile summary comment reports Confidence Score: 5/5
reviewThreads(GraphQL, see below) has zero threads withisResolved: false
Do not stop early on "no new comments this round" alone — a thread can be open from an earlier round. Always check both conditions freshly after every push.
Loop
- Check current state before doing anything, including whether the PR is still mergeable:
gh pr view <n> --json mergeable gh pr view <n> --json comments -q '[.comments[] | select(.author.login=="greptile-apps")] | last | .body' gh api graphql -f query=' query { repository(owner: "<owner>", name: "<repo>") { pullRequest(number: <n>) { reviewThreads(first: 50) { pageInfo { hasNextPage endCursor } nodes { id isResolved path line comments(first: 5) { nodes { id databaseId author { login } body } } } } } } }'[.comments[]] | last | .body, not... | .body | tail -1— the latter pipes every matching comment's full multi-line body through the pipeline and keeps only the final line of that combined output (usually the "Reviews (n): Last reviewed commit..." footer), not the last comment, so it silently misses the actual "Confidence Score: X/5" line.reviewThreads(first: 50)is a single page — checkpageInfo.hasNextPage. Iftrue, don't stop yet: re-run the same query withafter: "<endCursor>"and keep paging untilhasNextPageisfalsebefore evaluating "clean." A PR with more than 50 threads is rare but stopping on a partial page would silently miss unresolved ones past the cutoff. IfmergeableisCONFLICTING, fix that first (step 2). Otherwise, if Greptile is 5/5 and every thread across all pages hasisResolved: true, stop — report the outcome (see "Reporting" below) and skip the rest of this list. - If the PR has a merge conflict, merge
origin/staging, resolve the conflicts, run the usual pre-push checks, push, and go to step 8 to re-trigger review. - If no review has run yet (fresh PR, no Greptile/Cursor comments): they usually run
automatically on PR open — confirm via
gh pr checks <n>(look forCursor Bugbot/Greptile Review) and wait for that first round before doing anything else. - If a review round has landed and it isn't clean: for every thread where
isResolved: false, triage the finding on its own merits — this is the part that requires judgment, not a mechanical loop:- Real bug: fix it in the cleanest way available. Match the codebase's existing
conventions for that kind of problem before inventing a new one (e.g. an SSRF-prone
user-supplied-host fetch should use whatever
validateUrlWithDNS/secureFetchWithPinnedIPpattern the rest of the codebase already uses for that exact situation — grep for a sibling integration solving the same problem first). Never patch around a finding with a workaround, a broad try/catch, or a suppression comment — fix the actual cause. - False positive: don't change code. Reply with the specific reason it doesn't apply (cite the type definition, the established pattern it matches, or the doc it follows) so the reviewer bot and a human skimming later both understand why it was left as-is.
- Already fixed by an earlier finding in the same round: note that and resolve without a duplicate code change.
- Real bug: fix it in the cleanest way available. Match the codebase's existing
conventions for that kind of problem before inventing a new one (e.g. an SSRF-prone
user-supplied-host fetch should use whatever
- Reply to every thread individually before resolving it — never resolve silently:
Then resolve via GraphQL (needs the threadgh api repos/<owner>/<repo>/pulls/<n>/comments/<databaseId>/replies -f body="<what was done and why>"idfrom step 1, not the comment id):gh api graphql -f query='mutation { resolveReviewThread(input: {threadId: "<threadId>"}) { thread { isResolved } } }' - Before pushing, re-run the full sync check from
/shipstep 2 — not just the log command, the whole check-and-recover flow (stash WIP if needed, rebase, verify the rebase didn't just cleanly replay stray commits, cherry-pick rebuild if it did or if it conflicted). A babysit loop spanning a long session is exactly the scenario where a branch can drift, and pushing review fixes on top of undetected drift is how an oversized PR happens even after the branch was fixed once. Then run the repo's pre-ship checks the same way/shipdoes before committing — not just lint/typecheck/boundary-validation, but also the conditional/cleanup(if this round's fix touched UI code) and/db-migrate(if it touched schema/migrations) gates from/shipsteps 4 and 5. A review-fix round is still a code change and can trip either gate just as easily as the original commit did. - Commit and push the round's fixes as one commit —
--force-with-leasewhenever step 6's sync check rewrote history, which includes a plaingit rebase origin/stagingthat completed with no conflicts, not only the cherry-pick rebuild path; both rewrite commits already published to the remote, so a plaingit pushcan be rejected either way — then run/shipstep 9's post-push verify — not just before the first push, every push in the loop:git fetch origin staging && git log --oneline --reverse origin/staging..HEAD gh pr view <n> --json commits -q '.commits[].messageHeadline'--reversemakesgit logoldest-first, matching the PR commit list's order — plaingit logis newest-first, so without it a positional comparison can spuriously fail on any multi-commit branch. These two lists must describe the same commits. A review loop runs many pushes across many rounds; checking sync only before the push (step 6) and never after is how a bad push or a PR whose commit history quietly went stale between rounds goes unnoticed. - Re-trigger review by posting
@greptileand@cursor reviewas two separate PR comments — never combine them into one comment, each bot only responds to its own mention:gh pr comment <n> --body "@greptile" gh pr comment <n> --body "@cursor review" - Wait for the new round, then go back to step 1. Pace the wait with
ScheduleWakeupusing a fallback delay of ~250–300s (Greptile/Cursor typically take 1–3 minutes) — never busy-poll in a sleep loop. Pass the same/loop babysit PR <n>prompt on each wakeup so the loop resumes correctly. - Stop conditions: clean state reached (see above), or the same unresolved finding or merge conflict survives two consecutive rounds with no new information (surface it to the user instead of looping forever), or the user interrupts.
Reporting
When the loop ends, summarize: how many rounds it took, what was actually fixed (one line each), what was pushed back on as a false positive and why, and the final Greptile score / thread count.
Public-repo hygiene
Every reply, comment and commit you post here is public and permanent, and review bots quote
your replies back so a leak propagates. Before each post, strip anything that ties the change to
a tenant: customer/company names, workspace/user/org/KB/connector IDs, emails, tenant hostnames,
verbatim document/sheet/folder names, log lines, and per-tenant DB output. Cite the mechanism and
aggregate numbers instead — see /ship's "What to Omit" for the full list and the pre-publish
grep. Triaging a finding often means pasting evidence you gathered from prod; that is exactly the
moment this gets violated. Check before posting, not after: editing a comment does not unsend its
notification email.
Hard rules
- Never post the two re-review mentions as a single combined comment.
- Never paste prod evidence into a reply without scrubbing it first (see above).
- Never resolve a thread without replying to it first.
- Never fix a finding with a hacky workaround — if the clean fix isn't obvious, find the sibling pattern elsewhere in the codebase solving the same class of problem and match it.
- Never silently drop a finding — every thread gets either a code fix or a reasoned reply.
- Always re-run the
/ship-style sync check before every push in the loop, not just the first.
Other versions38 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- simstudioai/sim★ 30k59% same
Wrote their own version · 37
- nightly-labs/openbot★ 4.4ksame name
- nubjs/nub★ 4.4ksame name
- deadlock-mod-manager/deadlock-mod-manager★ 489same name
- OutThisLife/brooklyn-skills★ 207same name
- getlago/lago-front★ 163same name
- Scino/fstack★ 18same name
- mia-cx/skills★ 5same name
- ArangoGutierrez/claude-toolkit★ 4same name
- fuzzyfox/skills★ 4same name
- magarcia/skills★ 4same name
27 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use oh-my-issues, what-the and 9 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
tuliosalustiano27Skilloh-my-issues
Cluster a GitHub issue backlog by root cause into a small set of plan-master issues, redirect children with a standardized comment, and bundle architectural-fix PRs that close clusters atomically. Use when an issue tracker has accumulated dozens of reports that share underlying defects, when asked to triage / consolidate / cluster / dedupe issues, when asked to build a plan series or roadmap from open issues, or when routing a new incoming bug into an existing plan.
Also in 4 projects that use this
tuliosalustiano27Skillwhat-the
What the? Use when the user wants a plain-English breakdown of something technical — the who, what, where, why, and when.
Also in 4 projects that use this
oivanfelipeSkillcloud-sync
Set up or check claude-mem cloud sync with cmem.ai Pro. Use when the user says "set up cloud sync", "sync my memories", "cmem pro", "cloud backup", "sync status", or wants their memory database backed up or synced to their cmem.ai account.
Also in 3 projects that use this
oivanfelipeSkillmode-creator
Interactively create, install, activate, and verify custom claude-mem modes, including domain-specific observation types, concept tags, optional Telegram alerts, bot setup, worker restart, and startup-context verification. Use this whenever someone asks to customize what claude-mem remembers, create or change a mode, track domain-specific notes, add observation types or tags, or send Telegram notifications for particular memories—even if they do not use the word "mode.
Also in 3 projects that use this
dqtx760Skillknowledge-agent
Build and query AI-powered knowledge bases from claude-mem observations. Use when users want to create focused "brains" from their observation history, ask questions about past work patterns, or compile expertise on specific topics.
Also in 3 projects that use this
Tsumugii24Skillsplit-to-prs
Split current work into small reviewable PRs. Use when the user asks to split a chat, set of changes, branch, or PR.
Also in 4 projects that use this
- +2 more from tuliosalustiano27
In this repository54 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/constitution.mdcCursor rule
- .cursor/rules/emcn-components.mdcCursor rule
- .cursor/rules/global.mdcCursor rule
- .cursor/rules/landing-seo-geo.mdcCursor rule
- .cursor/rules/sim-architecture.mdcCursor rule
- .cursor/rules/sim-components.mdcCursor rule
- .cursor/rules/sim-hooks.mdcCursor rule
- .cursor/rules/sim-imports.mdcCursor rule
- .cursor/rules/sim-integrations.mdcCursor rule
- .cursor/rules/sim-queries.mdcCursor rule
- .cursor/rules/sim-sandbox.mdcCursor rule
- .cursor/rules/sim-stores.mdcCursor rule
- .cursor/rules/sim-styling.mdcCursor rule
- .cursor/rules/sim-testing.mdcCursor rule
- .cursor/rules/sim-typescript.mdcCursor rule
- .cursor/rules/sim-ui-copy.mdcCursor rule
- add-block-previewSkill
- add-blockSkill
- add-column-typeSkill
- add-connectorSkill
- add-enrichmentSkill
- add-feature-flagSkill
- add-hosted-keySkill
- add-integrationSkill
- add-managed-cliSkill
- add-modelSkill
- add-toolsSkill
- add-triggerSkill
- cleanupSkill
- councilSkill
- db-migrateSkill
- design-taste-frontendSkill
- emcn-design-reviewSkill
- emil-design-engSkill
- make-interfaces-feel-betterSkill
- memory-load-checkSkill
- migrate-application-operationSkill
- react-query-best-practicesSkill
- shipSkill
- tool-registry-boundarySkill
- v2-api-conventionsSkill
- validate-connectorSkill
- validate-integrationSkill
- validate-modelSkill
- validate-triggerSkill
- you-might-not-need-a-callbackSkill
- you-might-not-need-a-commentSkill
- you-might-not-need-a-memoSkill
- you-might-not-need-an-effectSkill
- you-might-not-need-stateSkill
- you-might-not-need-url-stateSkill
- add-settings-pageSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

