Agent skill

Human Review

by petergyang in petergyang/human-review

Open an HTML file, Markdown file, or localhost page in the browser so the user can edit text directly and leave comments on specific parts, then send all edits and comments back to you.

MITAuto-check passedDocuments & Office

Install Human Review

skills CLI
$ npx skills add petergyang/human-review --skill human-review -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install petergyang/human-review human-review --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/petergyang/human-review.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src .claude/skills/human-review && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
human-review
GitHub stars
1.4k
Token cost
~2.1k tokens
SKILL.md length
1,131 words
Files
19
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Open an HTML file, Markdown file, or localhost page in the browser so the user can edit text directly and leave comments on specific parts, then send all edits and comments back to you.

  • Works in 4 steps: Write or update the HTML or Markdown… → Open it for the user → Wait for feedback. This command blocks… → …
  • Tasks that involve Landing pages
  • SKILL.md covers The loop, What you get, Rules and Better edit labels (optional)
  • Runs JavaScript scripts from its folder; calls npx

What it does

Human Review is an agent skill from petergyang/human-review. Open an HTML file, Markdown file, or localhost page in the browser so the user can edit text directly and leave comments on specific parts, then send all edits and comments back to you. Use after writing or updating something the user will read — specs, plans, reports, newsletter drafts, landing pages, slide decks, and locally running web pages.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files (for example `anchor-text.js`, `chrome-client.js` and `chrome-session.js`).

It sits in Documents & Office, covering Landing pages, Slides and decks and Newsletters. The repository describes itself as: A visual tool to edit HTML and Markdown files, leave comments like a Google Doc, and send feedback to your AI agent. Works inside your favorite AI harness. The licence is MIT.

When your agent uses it

  • Tasks that involve Landing pages
  • Tasks that involve Slides and decks
  • Tasks that involve Newsletters

Example prompts

  • “/human-review”

Requirements

  • Node.js

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Write or update the HTML or Markdown file, or start the local page being reviewed.
  2. Open it for the user
  3. Wait for feedback. This command blocks until the user hits Send in the
  4. Apply what comes back, then start the next background poll. --ack clears

What it can do on your machine

Read from SKILL.md and the folder at commit f9a5581. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Human Review loads about 2.1k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 1,131 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~90
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from petergyang/human-review at commit f9a5581, republished under its MIT licence (© petergyang). 1,131 words, ~2,112 tokens.

Download SKILL.mdSave it as .claude/skills/human-review/SKILL.md (or your agent's skills folder). This skill also uses 18 other files; get the full folder from GitHub.
name
human-review
description
Open an HTML file, Markdown file, or localhost page in the browser so the user can edit text directly and leave comments on specific parts, then send all edits and comments back to you. Use after writing or updating something the user will read — specs, plans, reports, newsletter drafts, landing pages, slide decks, and locally running web pages.

human-review

The user reviews your HTML, Markdown, or localhost page in a real browser: they fix small things by typing, select anything to comment on it, and send you the whole batch at once.

Markdown files open rendered. Their quotes and edits reference the rendered text, and the file itself is never touched — apply every change to the Markdown source, keeping its formatting syntax.

The loop

  1. Write or update the HTML or Markdown file, or start the local page being reviewed.

  2. Open it for the user:

    sh
    npx -y human-review path/to/file.html

    For a page served by a local development server, open the real route instead of recreating it as a separate HTML file:

    sh
    npx -y human-review http://localhost:3000/wiki
  3. Wait for feedback. This command blocks until the user hits Send in the browser, then prints their batch and exits:

    sh
    npx -y human-review poll path/to/file.html

    The command exits only when the user clicks Send or closes the review. There is nothing to re-run, no interval to poll on, and no --timeout to add. It survives the local server restarting, and feedback is saved even if the poll dies, so nothing is ever lost. How you wait depends on your harness:

    • Claude Code: run it with run_in_background: true and end your turn. Claude Code wakes you with the output the moment the command exits.

    • Codex, Cursor, and everything else: run it in the foreground, inside your active turn, and stay on it until it prints feedback or closed. Do not detach it or start it as a background session: nothing wakes you when a detached command finishes. While the review is active:

      • If the user sends a message, answer it as commentary and immediately resume the foreground poll in the same turn. Do not send a final response until the poll returns feedback or closed — a final response ends the turn and kills the wait.
      • If your shell tool caps command duration, pass --timeout a little under the cap and run bounded polls back to back in the same active turn until one returns feedback or closed.

      Know the limit: this is reliable only while your turn stays active. A turn that has already ended is not woken when the user hits Send; the user has to message you, and you then run status and poll to pick the batch up. There is no integration that resumes an ended task when the poll exits.

    If it prints {"status":"closed"}, the review is over: the user ended it, closed the tab, or never had one open (reason says which). Stop and do not start another poll. unsent counts feedback they left behind; if it is not zero, tell the user in one line that it is kept and they can restore or discard it next time. {"status":"superseded"} means a newer poll of yours owns the wait — stop this one silently. {"status":"timeout"} only appears after 12 hours; run status and start the wait again if the review is still open.

  4. Apply what comes back, then start the next background poll. --ack clears the batch you just handled:

    sh
    npx -y human-review poll path/to/file.html --ack

Repeat 3–4 until the user says they are done.

Not sure whether feedback is already waiting — say, at the start of a new turn with no poll running? This answers instantly without blocking:

sh
npx -y human-review status path/to/file.html

It prints {"status": "feedback-waiting"} when a batch is ready for a poll, plus counts of unsent comments and edits still in the browser.

What you get

One batch covers every page the user visited, grouped by file or localhost URL.

json
{
  "status": "feedback",
  "pages": [
    {
      "file": "/abs/path/to/page.html",
      "edits_saved": true,
      "comments": [
        { "id": "c_1", "kind": "selection", "quote": "the exact text they selected",
          "anchor": { "prefix": "...", "quote": "...", "suffix": "..." },
          "feedback": "what they want changed" }
      ],
      "edits": [
        { "label": "Problem body", "kind": "edited",
          "before": "the original wording",
          "after": "their exact new wording",
          "after_html": "their exact new wording with <strong>formatting</strong>" }
      ]
    }
  ],
  "overall_note": "feedback not tied to any one page"
}
Show full SKILL.md (558 more words)Show less

Rules

  • edits are changes the user already made. after is their exact wording — carry it across verbatim and never revert it. If the HTML was generated from something else (MDX, Markdown, a template), apply after to the source too, or their fix disappears on the next build.
  • edits_saved: true means those edits are already in the file on disk. Plain HTML files autosave as the user types, so your copy of the file is stale. Re-read the file before touching it and make targeted changes only; never regenerate it from what you wrote earlier, or their work disappears. edits_saved: false (Markdown, localhost pages, self-rendering HTML) means the edits exist only in this batch — apply them to the source yourself.
  • An edit with kind: "deleted" means the user removed that whole block: delete it from the source too, without asking why.
  • An edit marked truncated: true had its text cut at 200k characters; read the block from the page itself rather than from after_html.
  • When before_html/after_html are present, the user changed formatting, not just words — bold, italic, underline, links. Use the HTML version to carry the formatting into the source, translated to its syntax (e.g. <strong> → ** in Markdown/MDX).
  • A page with kind: "url" was edited directly in the review UI. Its file and url fields name the localhost route, not a writable file. Find the matching project source (such as MDX, TSX, or a template), apply every edit and deletion there, then acknowledge so the route reloads. Never write the rendered HTTP response back into the app.
  • When an edit's after_html contains <img src="assets/...">, the user pasted an image: the file already exists in an assets/ folder next to the reviewed file. Keep that relative path — in Markdown, reference it as ![](assets/...). Never regenerate or inline the image.
  • On a localhost page, a pasted image arrives under staged_assets. Copy its local path into the app's appropriate asset folder, replace the temporary preview URL in after_html, and preserve the image at the user's insertion point. Never leave the temporary preview URL in source.
  • An edit with kind: "moved" means the user relocated that whole block. Reposition it in the source without rewriting its content: it now sits right after the block whose text starts with moved_after, and right before the block whose text starts with moved_before (both are clipped to 90 characters and may end in …). An empty moved_after means it is now the first block in its container.
  • Find each comment by its quote. It is the rendered text the user selected, so in Markdown or templated HTML it may span formatting syntax or tags; anchor.prefix and anchor.suffix give the surrounding text to disambiguate.
  • kind: "element" points at a whole block, so quote is its label, not body text.
  • Copy any staged_assets files before you ack: --ack deletes them.
  • A batch with only an overall_note has an empty pages array.
  • Fix every page in pages, not just the first.
  • Do not write a reply. There is no chat. The user sees your work when the page reloads, which happens on its own the moment you save the file.

Better edit labels (optional)

Name the sections you author and the user's edit list uses your names instead of guessing from the DOM:

html
<p data-block="Problem body">…</p>
<div data-container="Metrics callout">…</div>

data-block names a region for the edit list. data-container also makes the block clickable as a comment target.

© petergyang, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 18 other files in src of petergyang/human-review.

  • SKILL.md
  • anchor-text.js
  • chrome-client.js
  • chrome-session.js
  • chrome.css
  • chrome.html
  • cli.js
  • click-target.js
  • editing.js
  • frame-policy.js
  • html-transform.js
  • markdown.js
  • paths.js
  • sdk.js
  • serialize.js
  • server-entry.js
  • server.js
  • setup.js
  • state.js

Open the folder on GitHubat commit f9a5581

Compare with similar skills

Human Review next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Human Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Human Review this skillpetergyang/human-review1.4k—~2.1kAutomated safety check: PassMIT
Document Designjamditis/claude-skills-journalism416—~1.9kAutomated safety check: PassMIT
Youtube Notetakersickn33/agentic-awesome-skills47k1 repos~2.3kAutomated safety check: PassMIT
Markdown HTML Orchestratoralirezarezvani/claude-skills28k—~2.7kAutomated safety check: PassMIT
Ultralytics Brandingfcakyon/claude-codex-settings1.2k—~1.3kAutomated safety check: PassApache-2.0
Data Viz Deckthatrebeccarae/claude-marketing161—~1.8kAutomated safety check: PassMIT

Similar skills

  • Document Design

    jamditis/claude-skills-journalism

    Creates print-ready HTML that exports to PDF. An agent skill from jamditis/claude-skills-journalism.

    416 GitHub stars~1.9k tokensUpdated 6 days ago
    Documents & OfficeAuto-check passed
  • Youtube Notetaker

    sickn33/agentic-awesome-skills

    Turn YouTube talks into local study notes with slides, transcripts, editable annotations, and a markdown-backed viewer.

    47k GitHub starsUsed in 1 repo~2.3k tokens
    Documents & OfficeAuto-check passed
  • Markdown HTML Orchestrator

    alirezarezvani/claude-skills

    A skill your agent uses when a user wants to convert any markdown file in their Claude project into a single-file, lightly-interactive HTML — long-form documents (specs, plans, RFCs, reports…

    28k GitHub stars~2.7k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • Ultralytics Branding

    fcakyon/claude-codex-settings

    This skill should be used when creating Ultralytics-branded content of any kind, including PDF, PPTX, Canva, or Google Slides presentations, DOCX documents, marketing or newsletter HTML emails…

    1.2k GitHub stars~1.3k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Data Viz Deck

    thatrebeccarae/claude-marketing

    Transform audit data, performance reports, and structured analyses into polished visual deliverables.

    161 GitHub stars~1.8k tokensUpdated 4 mo ago
    Documents & OfficeAuto-check passed
  • Given a local video or video URL, downloads the media if needed, extracts slide frames and key moments, transcribes the audio, and writes a Markdown timeline that interleaves screenshots with the…

    176 GitHub stars~922 tokensUpdated 6 days ago
    Documents & OfficeAuto-check passed

Questions about Human Review

What does Human Review do?

Open an HTML file, Markdown file, or localhost page in the browser so the user can edit text directly and leave comments on specific parts, then send all edits and comments back to you. Human Review is an agent skill from petergyang/human-review. Open an HTML file, Markdown file, or localhost page in the browser so the user can edit text directly and leave comments on specific parts, then send all edits and comments back to you.

When should I use Human Review?

Human Review fits situations like: tasks that involve Landing pages; tasks that involve Slides and decks; tasks that involve Newsletters.

How do I install Human Review in Claude Code?

Run `npx skills add petergyang/human-review --skill human-review -a claude-code`. Or copy the skill folder (src in petergyang/human-review) into .claude/skills/human-review in your project. Claude Code loads it when a task matches its description.

How do I install Human Review in Codex?

Run `npx skills add petergyang/human-review --skill human-review -a codex`. Or copy the skill folder (src in petergyang/human-review) into .agents/skills/human-review in your project. Codex loads it when a task matches its description.

Can I use Human Review in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add petergyang/human-review --skill human-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/human-review, .gemini/skills/human-review, .github/skills/human-review and .opencode/skills/human-review in your project.

What does Human Review need to run?

Going by SKILL.md and its folder, Human Review needs JavaScript for the scripts in its folder and the command-line tools its instructions call (npx). Our summary lists: Node.js.

Does Human Review access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Human Review safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Human Review use?

Human Review is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Human Review use?

About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Human Review?

Skills that share tags, products or a category with Human Review: Document Design (jamditis/claude-skills-journalism, 416 stars), Youtube Notetaker (sickn33/agentic-awesome-skills, 47k stars), Markdown HTML Orchestrator (alirezarezvani/claude-skills, 28k stars) and Ultralytics Branding (fcakyon/claude-codex-settings, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Human Review?

petergyang (a GitHub user) maintains it in petergyang/human-review, which has 1,380 GitHub stars. The repository was last updated on September 17, 2026.

Source: petergyang/human-review on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.