--- name: review-this-branch description: Run the no_human review gate (fresh-session adversarial reviewer + tamper guard) over the current branch or a GitHub pull request, with no server, no database, and no onboarding, and relay the pass/fail checklist. --- # Review this branch Run `nh gate` to get a fresh-session, adversarial code review and a test-tampering check over a diff, right now, with nothing installed or running beyond the `nh` CLI itself. ## When to use - Someone asks "review this branch" / "check this PR" / "is this safe to merge" and wants a real second-model review with file:line citations, not a summary you write yourself. - There is **no** no_human server running and **no** `~/.no_human` database set up. Unlike `file-a-task`, this skill needs neither. It runs once and exits. ## Prerequisite: your own Claude credential `nh gate` uses **your own** Claude credential, the same one every other `nh` command uses, never one belonging to no_human itself. If none is on file, create it with: ```bash claude setup-token ``` `nh gate` also needs the `nh` CLI on `PATH` and a `claude` CLI it can find: the one bundled inside the installed SDK package is used first, so a separate install on `PATH` is not required. If either precondition is missing, the command refuses and names exactly what is missing. It never prints a pass when it could not actually run. ## Running it Two invocations, both read-only: ```bash nh gate # current branch vs. its merge base with origin's default branch nh gate --pr # a GitHub pull request's head vs. its merge base ``` Optional flags: `--repo ` to point at a checkout other than the current directory, `--base ` to override the comparison base. The comparison actually used, for example `working tree branch ... against merge base with origin/` or `pull request owner/repo#N head ... against merge base with origin/`, is always printed at the top of the output. If the working tree has uncommitted changes, the output says so explicitly and those files are **not** reviewed; commit them first if they should be. ## Reading the result: the exit-code contract | Exit code | Meaning | |---|---| | `0` | Gate passed: reviewer found no blocking findings **and** the tamper guard found no test-weakening. | | `1` | Gate failed: a blocking review finding or a tamper-guard finding (deleted/weakened tests). | | `2` | Gate **refused to run**: no review verdict was reached at all. A named precondition failed: no credential, no upstream, not a git repo, PR fetch failed, the diff is over the single-turn review cap, or the reviewer timed out / hit a transport error. | **On exit `2`, never report a pass.** Also never report the reviewer's checklist as a fail, since the reviewer never actually finished. This includes a diff too large to review and a reviewer timeout or transport error: both refuse before or without a real verdict, not with a "no findings" pass or a "timeout" finding treated as a real blocking issue. Relay the exact refusal message back to the human (it names the missing credential, missing upstream, oversized diff, or fetch/transport failure) instead of guessing at a verdict. Only exit `0` is a pass; treat exit `1` and exit `2` identically as "cannot say this is fine" until the human has read the printed detail. Relay the full Markdown checklist `nh gate` prints back to the human, including every `file:line` citation and the tamper guard's before/after counts. Do not summarize away the citations or the counts. ## Product boundary: read and report only, never write **This skill only reads and reports. It never commits, pushes, merges, or edits a tracked file in your checkout, and it must never be followed by a commit, a push, an approval, or a merge of the pull request on the agent's behalf.** The exact write surface, stated in full: - `~/.no_human/config.yaml` is **read if it already exists** (for reviewer backend/model settings); it is never created by this skill, and there is no on-demand `~/.no_human` setup here, unlike other `nh` commands. One thing does write there: the CLI's background update check caches its result in `~/.no_human/cache/update-check.json`, creating that directory if the run lasts long enough to finish the check. Nothing else in `~/.no_human` is created or modified. - In `--pr` mode only, one additive `git fetch` of the pull request's ref writes `FETCH_HEAD` and the fetched objects **into your checkout**. It creates no branch and moves no ref you own. - Every invocation, default and `--pr` alike, also makes one local `git clone --local --shared` of your own checkout into a throwaway temp directory (see below) and a `git checkout` inside that temp directory only, never against your own checkout. Beyond that, `nh gate` only runs read-only git plumbing against your checkout: `rev-parse`, `merge-base`, `diff`, `status --porcelain`, `symbolic-ref` (reads the locally recorded default branch; never a network call), and `config --get remote.origin.url` (to check a `--pr` URL names your own repo). It also uses the tamper guard's own read-only calls (`ls-tree`, `show`) and a read-only reviewer backend. This list describes what the current implementation does, not a promise that it will never grow; it never becomes a write against a tracked file. The throwaway clone exists so the review reads the exact committed tree it diffed instead of your live working tree (which may be dirty) or, in PR mode, whatever branch you happen to have checked out; it is deleted before the command exits. Merge is always the human's action. After running this skill, your job is to relay the checklist, not to act on it.