#665 by GitHub stars
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 pag
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
src/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
f9a55812f6f3 → f9a55812f6f3
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → f9a55812f6f3
No earlier version was observed for comparison.
Heat
3.6- Star growth, last 7 daysAhead of 51% of tracked repositories
- Star growth, last 24 hoursAhead of 72% of tracked repositories
- Rank movement, last 7 daysAhead of 21% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- human-review
src
How it works
human-review
When your agent uses it
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.
What it loads into context
Frontmatter
77 tokensAlways available to the agent
SKILL.md
2,071 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The loop
- What you get
- Rules
- Better edit labels (optional)
Scripts executed separately
anchor-text.jschrome-client.jschrome-session.jscli.jsclick-target.jsediting.jsframe-policy.jshtml-transform.jsmarkdown.jspaths.jssdk.jsserialize.jsserver-entry.jsserver.jssetup.jsstate.js
Files
SKILL.mdcore8,476 bytesSKILL.mdcore8,476 bytesSKILL.mdcore8,476 bytesSKILL.mdcore8,476 bytesSKILL.mdcore8,476 bytesSKILL.mdcore8,476 bytesSKILL.mdcore8,476 bytesSKILL.mdcore8,476 bytesSKILL.mdcore8,476 bytesanchor-text.jsruns3,681 byteschrome-client.jsruns38,669 byteschrome-session.jsruns217 byteschrome.cssasset13,386 byteschrome.htmlasset3,893 bytescli.jsruns13,621 bytesclick-target.jsruns1,538 bytesediting.jsruns2,887 bytesframe-policy.jsruns594 byteshtml-transform.jsruns3,507 bytesmarkdown.jsruns4,893 bytespaths.jsruns2,559 bytessdk.jsruns68,264 bytesserialize.jsruns1,826 bytesserver-entry.jsruns613 bytesserver.jsruns61,599 bytessetup.jsruns8,758 bytesstate.jsruns17,171 bytes
Read SKILL.md
# 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:
View the complete source on GitHubSkills included
- human-review
Repository facts
- License
- MIT
- Created
- Jul 27, 2026
- Last pushed
- Sep 17, 2026
- Forks
- 126
- Open issues
- 15
- Project activity
- Active
Rank over the last 12 weeks
Now #665 · best #514 · down 83 in 30 days
- #653 on Nov 1
- #654 on Nov 2
- #659 on Nov 3
- #661 on Nov 4
- #663 from Nov 5 to Nov 6
- #665 since Nov 7
77 earlier periods
- #728 on Aug 8
- #710 on Aug 9
- #711 on Aug 10
- #688 on Aug 11
- #612 on Aug 12
- #597 on Aug 13
- #581 on Aug 14
- #549 on Aug 15
- #558 from Aug 16 to Aug 17
- #567 on Aug 18
- #556 on Aug 19
- #555 on Aug 20
- #558 on Aug 21
- #533 on Aug 22
- #544 from Aug 23 to Aug 24
- #551 on Aug 25
- #539 on Aug 26
- #551 from Aug 27 to Aug 28
- #528 on Aug 29
- #514 on Aug 30
- #543 on Aug 31
- #547 on Sep 1
- #540 on Sep 2
- #544 on Sep 3
- #525 on Sep 4
- #519 on Sep 5
- #534 on Sep 6
- #540 on Sep 7
- #554 on Sep 8
- #537 on Sep 9
- #546 on Sep 10
- #539 on Sep 11
- #532 on Sep 12
- #535 on Sep 13
- #555 on Sep 14
- #541 on Sep 15
- #554 on Sep 16
- #548 on Sep 17
- #551 on Sep 18
- #536 on Sep 19
- #551 on Sep 21
- #562 on Sep 22
- #557 on Sep 23
- #542 on Sep 24
- #536 on Sep 25
- #542 on Sep 26
- #565 on Sep 28
- #586 on Sep 29
- #559 on Sep 30
- #546 on Oct 1
- #550 on Oct 2
- #534 on Oct 3
- #537 on Oct 4
- #544 on Oct 5
- #556 on Oct 6
- #559 on Oct 7
- #582 on Oct 8
- #578 on Oct 9
- #561 on Oct 10
- #562 on Oct 11
- #572 on Oct 12
- #583 on Oct 14
- #579 on Oct 15
- #584 on Oct 16
- #576 on Oct 17
- #573 on Oct 18
- #591 on Oct 19
- #599 on Oct 20
- #604 on Oct 21
- #591 on Oct 22
- #582 on Oct 23
- #566 on Oct 24
- #626 on Oct 25
- #642 on Oct 28
- #646 on Oct 29
- #649 on Oct 30
- #650 on Oct 31
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 3, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 8 notes
src/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsrc/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsrc/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsrc/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsrc/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsrc/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsrc/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsrc/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 36 network referencesin 8 files: src/server.js:84 src/chrome-client.js:59 src/editing.js:48 and 5 more
- No hidden or obfuscated text
- No instruction overrides
- 16 executable scriptsin 16 files: src/anchor-text.js:1 src/chrome-client.js:1 src/chrome-session.js:1 and 13 more
- No access to secrets
- No requests to vote in Hot
Show all 52 signals by file
src/SKILL.md
- Network accessline 28
npx -y human-review http://localhost:3000/wiki
src/anchor-text.js
- Executable scriptline 1
Executable file
src/chrome-client.js
- Executable scriptline 1
Executable file - Network accessline 59
async function api(path, options) { const res = await fetch(path, { - Network accessline 60
const res = await fetch(path, { - Network accessline 761
case "eh:asset": try { const saved = await fetch(`/api/page/${state.key}/asset?type=${encodeURIComponent(msg.assetType || "")}`, { - Network accessline 762
try { const saved = await fetch(`/api/page/${state.key}/asset?type=${encodeURIComponent(msg.assetType || "")}`, { method: "POST", - Network accessline 763
const saved = await fetch(`/api/page/${state.key}/asset?type=${encodeURIComponent(msg.assetType || "")}`, { - Network accessline 925
if (events) events.close(); try { fetch(`/api/session/${state.sessionId}/away`, { - Network accessline 926
try { fetch(`/api/session/${state.sessionId}/away`, { method: "POST", - Network accessline 927
fetch(`/api/session/${state.sessionId}/away`, {
src/chrome-session.js
- Executable scriptline 1
Executable file
src/cli.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 116
process.exit(1); } const url = `http://127.0.0.1:${server.port}${body.path}`; - Network accessline 117
} const url = `http://127.0.0.1:${server.port}${body.path}`; openBrowser(url); - Network accessline 118
const url = `http://127.0.0.1:${server.port}${body.path}`;
src/click-target.js
- Executable scriptline 1
Executable file
src/editing.js
- Executable scriptline 1
Executable file - Network accessline 48
/** * A typed link, made openable and safe. Bare domains get https://, in-page - Network accessline 49
* A typed link, made openable and safe. Bare domains get https://, in-page - Network accessline 61
candidate = `https://${href}`; - Network accessline 65
} try { const parsed = new URL(candidate, "https://relative.invalid"); - Network accessline 66
try { const parsed = new URL(candidate, "https://relative.invalid"); if (!/^(https?:|mailto:|tel:)$/i.test(parsed.protocol)) return ""; - Network accessline 67
const parsed = new URL(candidate, "https://relative.invalid");
src/frame-policy.js
- Executable scriptline 1
Executable file
src/html-transform.js
- Executable scriptline 1
Executable file
src/markdown.js
- Executable scriptline 1
Executable file - Network accessline 47
*/ export const MERMAID_VERSION = "11.17.2"; const MERMAID_SRC = `https://cdn.jsdelivr.net/npm/mermaid@${MERMAID_VERSION}/dist/mermaid.esm.min.mjs`; - Network accessline 48
export const MERMAID_VERSION = "11.17.2"; const MERMAID_SRC = `https://cdn.jsdelivr.net/npm/mermaid@${MERMAID_VERSION}/dist/mermaid.esm.min.mjs`; const MERMAID_LOADER = `<script type="module" data-eh-diagram> - Network accessline 49
const MERMAID_SRC = `https://cdn.jsdelivr.net/npm/mermaid@${MERMAID_VERSION}/dist/mermaid.esm.min.mjs`;
src/paths.js
- Executable scriptline 1
Executable file
src/sdk.js
- Executable scriptline 1
Executable file - Network accessline 554
/** * The boot comparison only catches scripts that rewrote the DOM before this * module ran. Pages that render on load or after a fetch (charts, mermaid, - Network accessline 555
* The boot comparison only catches scripts that rewrote the DOM before this * module ran. Pages that render on load or after a fetch (charts, mermaid, * client-rendered apps) mutate later — watch for any serialization drift that - Network accessline 556
* module ran. Pages that render on load or after a fetch (charts, mermaid,
src/serialize.js
- Executable scriptline 1
Executable file
src/server-entry.js
- Executable scriptline 1
Executable file
src/server.js
- Executable scriptline 1
Executable file - Network accessline 84
let response; try { response = await fetch(url, { - Network accessline 85
try { response = await fetch(url, { redirect: "manual", - Network accessline 86
response = await fetch(url, { - Network accessline 738
const server = http.createServer(async (req, res) => { touch(); const url = new URL(req.url, "http://127.0.0.1"); - Network accessline 739
touch(); const url = new URL(req.url, "http://127.0.0.1"); const route = url.pathname; - Network accessline 740
const url = new URL(req.url, "http://127.0.0.1"); - Network accessline 847
sdkOptions = { baseHref: fetched.resolvedUrl, src: `http://${host}/sdk.js?key=${encodeURIComponent(key)}`, - Network accessline 848
baseHref: fetched.resolvedUrl, src: `http://${host}/sdk.js?key=${encodeURIComponent(key)}`, }; - Network accessline 849
src: `http://${host}/sdk.js?key=${encodeURIComponent(key)}`,
src/setup.js
- Executable scriptline 1
Executable file - Network accessline 64
After writing an HTML or Markdown file the user will read, open it for them with \`npx -y human-review <file.html>\`. For a locally running web page, open the real route with \`npx -y human-review http://localhost:3000/path\` instead of rec - Network accessline 65
\`npx -y human-review <file.html>\`. For a locally running web page, open the real route with \`npx -y human-review http://localhost:3000/path\` instead of recreating it as a static file. Then run - Network accessline 66
route with \`npx -y human-review http://localhost:3000/path\` instead of recreating
src/state.js
- Executable scriptline 1
Executable file
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 1 fact
- Network access in code of the SKILL.mdsrc/SKILL.md:28High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md src/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md src/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md src/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md src/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md src/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md src/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/petergyang-human-review/)