human-gate — Claude Code skill: what it does, how to install
Blocks an agent loop until a named person reviews the artifact and signs off on open issues.
/plugin marketplace add alirezarezvani/claude-skills
/plugin install human-gate@claude-code-skillsWhat human-gate does
The skill introduces human verification into the agent loop. It uses human_gate.py to build an offline HTML review page and collects batched comments in .review.md. Issues are graded as BLOCKER, MAJOR, MINOR, NIT, NOTE, APPROVE, or an explicit EDIT replacement.
The gate halts execution if blockers remain open, review rounds never ran, or the reviewer is anonymous. Rule G1 cannot be bypassed — a --waive override accepts recorded objections with a logged reason, but cannot pretend a review happened.
It runs on Python 3 standard library without an external server. You should install this for irreversible actions, migrations, or specs where an agent must not approve its own output.
What it helps with
- block agent execution until human approval is confirmed
- gather structured review feedback for specs and migrations
- track reviewer identity and severity levels across review rounds
- prevent silent downgrades of unresolved blockers
Example prompts for the agent
- Run human-gate open plan.md --launch and wait for review
- Check human-gate status for migration.md
- Collect feedback from plan.md using human-gate collect
How to install human-gate
1Plugin marketplace
/plugin marketplace add alirezarezvani/claude-skills/plugin install human-gate@claude-code-skillsThis installs the whole human-gate plugin with all its skills
2Skills CLI (Vercel)
npx skills add alirezarezvani/claude-skills --skill human-gate -a claude-code3Manually: put the files in place
~/.claude/skills/human-gate/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/human-gate/
Manually: put the files in place
.agents/skills/human-gate/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/human-gate/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install alirezarezvani/claude-skills human-gate2Manually: put the files in place
.github/skills/human-gate/SKILL.mdPlatform CLI
gemini skills install https://github.com/alirezarezvani/claude-skills --path engineering/human-gate/skills/human-gateManually: put the files in place
.devin/skills/human-gate/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set349
The whole set →Similar
Questions about human-gate
How to install human-gate in Claude Code?
Run /plugin install human-gate@claude-code-skills or install via /plugin marketplace add alirezarezvani/claude-skills.
What does human-gate do?
It creates a single-file HTML review interface, collects structured feedback in a sidecar Markdown file, and prevents the agent from finishing work while blockers stay open.
Can rule G1 be waived in human-gate?
No, rule G1 is non-waivable. A waiver allows proceeding with known reviewer objections, but it cannot replace the requirement for an actual review round.
Source text
SKILL.md · MIT
--- name: human-gate description: "Runs the human-verification lane of an agent loop, and proves review happened before work is called done. Builds a single-file HTML review page, collects batched feedback as a structured artifact instead of chat prose, and runs a gate that refuses to close while a BLOCKER is open, the reviewer is unnamed, or nobody has reviewed at all. Use when a plan, spec, RFC, report, landing page, migration, or any irreversible action needs human sign-off before shipping, or on requests such as 'get sign-off', 'have someone check this', 'hold until reviewed', 'needs approval first'. NOT for making AI text sound human (use content-humanizer or behuman). NOT for reviewing code diffs (use md-review or code-reviewer)." license: MIT metadata: version: 1.0.0 author: Alireza Rezvani category: engineering updated: 2026-08-09 --- # Human Gate You are the part of the loop that refuses to let an agent mark its own homework. Machine verification answers *"do the checks pass?"* — `engineering/agent-harness` does that. This answers what no script can: **has a person looked at this, and are their objections resolved?** Feedback becomes a machine-parseable artifact rather than a message — anchored, severity-graded, countable — and a gate either passes or names what is still open. **Before starting**, establish: which artifact (`.md`/`.html`), who the named reviewer is (a person, not "the team" — G3 enforces it), whether the work is reversible, and whether a human is available now. Read `human-gate-context.md` first if it exists. ## The loop ```sh S=engineering/human-gate/skills/human-gate/scripts python3 $S/human_gate.py open plan.md --launch # build page, start round N → END YOUR TURN python3 $S/human_gate.py status plan.md # non-blocking: 0 clear·2 blocked·3 collect·4 none python3 $S/human_gate.py collect plan.md --output json # batch.v1 — apply every item python3 $S/human_gate.py close plan.md # exit 2 = NOT done ``` `human_gate.py --sample` runs the whole loop, refusals included, in ~1s. It drives `review_page_builder.py` (Markdown/HTML → single-file anchored page that makes no network request of its own and sanitizes reviewed HTML — `on*`, `javascript:`, `iframe` dropped) and `feedback_parser.py` (sidecar → `batch.v1`, quotes checked against raw *and* rendered text). ## The sidecar Feedback lands in `<artifact>.review.md`. The page exports it; anyone can also write it by hand in any editor — which keeps this working over SSH and in CI. Worked example and JSON contract are in `assets/`. ```markdown <!-- human-gate:v1 target=plan.md round=1 --> reviewer: reza ## BLOCKER b2 > We expect a 40% lift in activation. No source, and it drives the whole plan. Cite it or cut it. ``` Severities **BLOCKER / MAJOR / MINOR / NIT** (matching `markdown-html/md-review`, from Google's code-review guidance), plus **NOTE**, **APPROVE**, and **EDIT** — a replacement the reviewer already wrote, as `- before:` / `+ after:` lines. ## Gate rules | | Refuses to close when | | | |---|---|---|---| | **G1** | no round collected | **G4** | sidecar changed after the last collect | | **G2** | a BLOCKER or MAJOR is open | **G5** | round cap exhausted → **escalate**, never pass | | **G3** | no named reviewer | **G6** | waiver used without a recorded reason | | **G7** | the round carries unresolved integrity problems — a mistyped severity silently downgrades to NIT, so a real blocker can be lost to a typo | | | Overrides must be explicit — `close plan.md --waive "<reason>"` — but **G1 is never waivable**: a waiver accepts objections a reviewer raised; it cannot stand in for review happening. ## Hard rules 1. **Never report done while `close` exits 2.** Say what is open instead. 2. **Never invent a reviewer name** to satisfy G3. No reviewer *is* the finding. 3. **Never paraphrase an EDIT's `after`** — verbatim, or a human was silently overruled. Apply it to whatever *generates* the artifact too, or it dies on the next build. 4. **Never block-poll for a human.** Hand over the path and end the turn; `open` detects a headless host. Rounds are capped and exhaustion escalates. 5. **Never auto-fetch and run unpinned code.** The richer editor at `petergyang/human-review` is opt-in, asked-first, and always pinned (`npx -y [email protected]`) — unpinned `npx -y` runs whatever was published most recently. Its `poll` blocks and it rewrites HTML in place, so wrap both. It changes the editor, never the gate. See `audit/human-review-2026-08/`. 6. **Never treat the review page as source of truth.** It is a viewing surface. ## Forcing questions One at a time when scope is fuzzy: **Who, by name, signs off?** · **What would make them reject it outright?** (name it before reading — Klein's pre-mortem) · **Is this reversible?** (if not, require explicit APPROVE, not merely no blockers) · **The artifact or its generator?** (both) · **How many rounds is this worth?** · **Is a human available now?** (if not, hand over and stop). Two consecutive NIT-only rounds means it is done — say so rather than opening a third. ## Related skills **`engineering/agent-harness`** — machine verification; this is the human lane it lacks. **`markdown-html/md-review`** — renders a code review *to* HTML, one-way; use when the agent reviews, human-gate when a person does. **`engineering/grill-me`** — interrogates a plan before an artifact exists. **`content-humanizer`**/**`behuman`** — human *voice*, not approval. Reasoning lives in `references/` — human-in-the-loop canon, feedback batching, loop discipline. Conceptual derivation of the batched-review pattern from [`petergyang/human-review`](https://github.com/petergyang/human-review) (MIT © 2026 Peter Yang); no upstream code is used — stdlib Python, no server, non-blocking, plus a gate upstream lacks.
© Alireza Rezvani · MIT · alirezarezvani/claude-skills