Skills DirectorySearch all skills ↗

AI agent skill · by @nightly-labs

Babysit

Babysit a pull request through the NorbiAI review loop until no valid issue remains. Fix valid findings, rebut false positives with checkable evidence, and re-request review. Use when asked to babysit a PR, handle NorbiAI comments, or clear the NorbiAI review gate.

Archived 2026-10-23 · Source updated 2026-10-11. Check the original repository for the latest version.

SKILL.md instructions

# Babysit

Drive one pull request through repeated NorbiAI reviews until no valid issue
remains. Fix each valid finding. Rebut each false positive with evidence.
Ask for a new review after each round.

Use this skill only for the NorbiAI review on the current pull request.
Do not use it for human reviews or for other bots.

## Before you start

Do this once, not in each loop.

- Read `AGENTS.md` and each nested `AGENTS.md` for a directory you change.
- Read `.github/norbiai-review-prompt.md`. It defines `[NEW]`, `[REMAINS]`,
  `[RESOLVED]`, `[WITHDRAWN]` and what counts as a valid rebuttal.
- Find the pull request number and the branch. Check `git status`.
  Commit or stash unrelated work first.
- Confirm `gh` can read the pull request. You need the latest review
  comment and the `NorbiAI review` commit status on the head SHA.

## Step 1 — Read the latest review

1. Load only the newest comment from `github-actions[bot]` with
   `<!-- norbiai-review -->` in the body. Filter with `gh api --jq`; do not
   print all PR comments.
2. Record `Reviewed commit` from the comment. Compare it with the head SHA.
   Stop when the review is stale. Wait for a fresh review instead.
3. Read `## Findings`, `## Resolved Since Previous Review`, and
   `## Withdrawn Findings` as one set. Note the `[NEW]` and `[REMAINS]`
   tags and each `P0` to `P3` priority.
4. Read the `NorbiAI review` commit status on the head SHA. The gate
   blocks merge on unresolved `P0` and `P1` findings.

Do not act on an old review. Do not edit the review comment.

## Step 2 — Triage each finding

Check each finding against the full current diff and the surrounding code.
Prove the failure mode. Never trust the title alone.

Mark a finding as **valid** when it shows all of the following:

- It points to changed code or a direct effect of changed code.
- It names a concrete failure, cost, or broken contract. Examples:
  correctness, security, data loss, concurrency, broken contract, concrete
  performance regression, dead code to delete, code to reuse.
- It proposes the smallest fix.

Mark a finding as **not valid** when one of the following holds:

- The guard, check, or contract it asks for already exists. Name the
  file and line.
- It reports a style choice, a naming opinion, or a vague concern
  with no failure mode.
- It reports a speculative edge case with no path to reach it.
- It asks for a test with no concrete regression that test would catch.
- It asks for work outside the stated problem of the pull request.

Record the verdict in a table before you change code:

| Finding | Priority | Verdict | Evidence |
| --- | --- | --- | --- |
| Short title - `path:line` | P0-P3 | fix / rebut | Line, guard, or contract |

Fix only valid findings. Rebut the rest. Never fix a finding you
cannot reproduce in order to turn the gate green.

## Step 3 — Fix each valid finding

1. Apply the smallest change that removes the problem. Prefer delete
   and reuse over new code.
2. Obey the non-negotiable rules in `AGENTS.md`: keep migrations
   irreversible-safe, keep released Team API meaning unchanged, keep the
   renderer-to-main trust boundary, redact secrets, keep the license.
3. Run the narrowest relevant test file and
   `biome check --write --max-diagnostics=none <changed paths>`, as
   `AGENTS.md` says. Leave broad checks to CI.
4. Commit the fixes on the pull request branch.

Do not weaken a test to satisfy a finding. Do not widen a type to
`any` or `unknown` to bypass a checker. Do not change
`.github/norbiai-review-prompt.md` or `.github/workflows/norbiai-review.yml`
to pass the review.

## Step 4 — Rebut each false positive

The reviewer withdraws a finding only for a concrete, checkable reason.
Assertion without evidence does not work. A promise to fix it later
does not work. Disagreement about priority does not work.

Write one short comment for all rebuttals. Each response goes into the
next review prompt, so every word costs tokens. Write one line for each
finding, in ASD-STE100 Simplified Technical English:

```
P1 Short title: wrong, <guard or contract> at `path:line`.
```

Give only the reason and the line that proves it. No greeting, no fixes
summary, no head SHA, no restated finding. The reviewer reads the fixes in
the diff.

Only a comment from someone who can merge counts as a rebuttal. The
workflow ignores other comments. When you cannot post as such a user,
give the user the exact comment text and wait. Do not post it yourself.

Never forge `<!-- norbiai-review -->` or `<!-- norbiai-response -->`
markers. Never edit another comment.

## Step 5 — Push and ask for a new review

One loop is one push plus one review run:

Ask for one review only. Each extra request is a full review run.

1. With fixes to push: post the rebuttal comment first, without
   `/norbiai review`. Then push. The review for the push reads every
   comment posted since the last review.
2. With no fixes to push: add `/norbiai review` to the rebuttal comment.
   That phrase asks for a recheck.
3. Do not also apply the `norbiai` label. The label asks for a full
   review of the whole PR.
4. Wait for the new `<!-- norbiai-review -->` comment and the new
   `NorbiAI review` status on the new head SHA. Poll with `gh api` at
   most once each 2 minutes; a review takes 3 to 15 minutes. Do not start
   the next triage on the old SHA.

When the push itself triggers a review with no comment from you, still
wait for that review before you continue.

## Step 6 — Loop until clean, then stop

Start Step 1 again on the new review. Carry the ledger forward:

- A `[RESOLVED]` finding needs no more work.
- A `[WITHDRAWN]` finding must not return. When code added since
  reintroduces the same problem for a new reason, treat it as new.
- A `[REMAINS]` finding needs a fix or a stronger rebuttal. Say which
  part of your last response the reviewer could not verify.

Stop when both hold:

- `## Findings` says `No actionable findings.` or holds only findings
  you proved not valid and the reviewer withdrew.
- The `NorbiAI review` status on the head SHA is success.

Also stop and ask the user when the same finding returns twice with no
progress, when a `P0` finding is genuinely valid but the fix needs a
product decision, or when the review reports malformed output or failure.
Report the loop count, the fixes, the rebuttals, and the final status.

## Report format

Keep the report short. After each loop, report:

| Finding | Verdict | Action |
| --- | --- | --- |
| Short title - `path:line` | fix / rebut | Commit or rebuttal line |

Then state the head SHA and the checks you ran, in one line each.

Related skills