✦ Claude Code plugin

Comment on rendered pages. Claude rewrites the source.

Turn any folder of HTML into a Figma-style review canvas. Highlight, comment, hit ▶ Process — the page reloads with Claude's edits, highlighted and revertable.

$ git clone https://github.com/sid8491/html-feedback ~/.claude/skills/html-feedback
💬
💬

Comment

Highlight text or click an element on the page.

Process

Send the batch to Claude with one button.

Reload

Page refreshes with every edit highlighted.

Revert

Undo any single edit, keep the rest intact.

Reviewing AI-generated HTML in a chat window is painful. You squint at a diff and type "the third paragraph is too long" hoping Claude finds the right one. html-feedback flips it around — you stay in the browser, comment on the rendered page, and Claude edits the source. Fast, visual, reversible.
Get started

Install in 30 seconds

Drop it into your Claude Code skills folder, or run it standalone. Python 3.10+, stdlib only — zero extra dependencies.

1. Clone into your Claude Code skills folder

Then just say "start html feedback on ./pages" or run /html-feedback. Claude handles the rest.

$ git clone https://github.com/sid8491/html-feedback ~/.claude/skills/html-feedback
> git clone https://github.com/sid8491/html-feedback "$env:USERPROFILE\.claude\skills\html-feedback"

2. Open Claude Code and type /html-feedback, or point it at a folder: "start html feedback on ./pages".

Run the server yourself

No Claude Code? You can still drive it manually. The server is plain Python — no dependencies.

$ git clone https://github.com/sid8491/html-feedback && cd html-feedback
$ python scripts/start.py --dir /path/to/your/html

The server binds to 127.0.0.1, prints a tokenized URL, and opens your browser.

Built for the loop

Everything you need to iterate

Small, polished pieces that add up to a review surface that just works.

💬

Inline comments

Highlight text, click an element, or attach a note to the whole page.

📸

Visual context

Every comment captures a screenshot of what you were looking at. Claude reads it and edits with visual context, not just source code.

📄

Multi-page nav

Jump between HTML files from the sidebar. Per-page comment counts; a red dot tells you when work is pending elsewhere.

📦

Batch processing

Queue a dozen comments and ship them to Claude with one ▶ Process click.

Live status pill

A floating pill shows Processing N/M… while Claude works through the batch.

🧵

Threaded replies

Push back on an edit without losing the original comment's anchor.

Patch-style revert

Undo a single edit. Reverting one change never wipes out the others. Redo to bring it back.

🟡

Walkthrough highlights

Every change reloads with a yellow mark. Press j / k to step through.

🧹

Clear addressed

Wipe processed comments in one click — the inbox stays focused on what's open.

🔒

Local-only, secure

Binds to 127.0.0.1, random per-session token, idle shutdown. Nothing leaves your machine.

0️⃣

Zero dependencies

Python 3.10 + stdlib. No pip install, no virtualenv dance, no surprises.

How it works

Three moving parts. One smooth loop.

The browser writes comments to a JSONL inbox. Claude tails it. The server pushes events back the moment files change.

🖥️ Browser feedback.js / .css
🐍 Python server HTTP + SSE, stdlib
📋 JSONL files inbox / history / .screenshots
🤖 Claude edits the HTML
1. Browser

A tiny injected script adds a sidebar, selection toolbar, and walkthrough overlay to every page. Comments are anchored with selector + surrounding text so they survive edits.

2. Server

A 127.0.0.1-only Python server appends comments to inbox.jsonl, hands snapshots to Claude, and streams change events back as Server-Sent Events so the page reloads instantly.

3. Claude

When you click ▶ Process, Claude reads the batch, locates each anchor, snapshots before+after, and edits the file with the smallest possible change. Patch diffs power the per-edit revert.

Real workflows

What people actually do with it

Anywhere a folder of generated HTML needs a hundred small edits, this is the loop.

📊

Tightening a research report

"make the intro three sentences shorter"done
✏️

Polishing AI copy

"less corporate, more conversational"done
🎨

Iterating on a mockup

"make the headings rainbow"done
📝

Cleaning meeting notes

"convert this list to a table"done
📑

Editing generated docs

"add a code example after this paragraph"done
💼

Reviewing marketing pages

"CTA button should be bigger and orange"done
Walkthrough

From selection to revert in five steps

No screenshots — these are CSS mockups. Same as what you'd see if you installed it right now.

1
💬 Comment

Highlight any text — a pill appears next to your selection. A screenshot of the region is captured automatically.

2
make this bolder, lead with the number│

Type your request. Send. Repeat for as many spots as you want.

3

Open the sidebar, review the batch, click ▶ Process. The 📄 Pages dropdown next to it jumps you to other HTML files.

4
Processing 2/3…

A live pill tracks Claude's progress through the batch.

5
↶ Revert this edit

Page reloads, edits highlighted. Don't love one? Revert just that change.

FAQ

Questions you probably have

Can I use this on a folder of any size?
It's designed for small-to-medium folders — anywhere from a single file to a few dozen pages. The injector touches every *.html file once, so if you point it at hundreds of pages Claude will confirm before starting. Past a few hundred files, you'll want to point it at a sub-folder.
Does it work with backend-rendered pages or SPAs?
No — and that's the point. It edits source HTML files on disk. Live web apps with backend state, server-side templating, or React SPAs aren't a fit. Think generated reports, AI artifacts, static documentation, marketing pages — anything where the file is the source of truth.
Is anything sent to a cloud service?
The server binds to 127.0.0.1 only — never 0.0.0.0. There's no LAN access, no external calls, no telemetry. The only "cloud" component is Claude itself, which is doing the editing through your existing Claude Code session.
Are screenshots sent anywhere?
They stay on your machine. Each comment's PNG is saved to feedback/.screenshots/<comment-id>.png next to your HTML files. Nothing leaves localhost. Claude Code reads them through its standard file-Read tool, same as any other file in your project.
Can I work on multiple pages in one session?
Yes. Open the Pages dropdown in the sidebar header — it lists every HTML file in the target directory with per-page comment counts. Click any page to jump there with the same session token. A red dot on the button means there's pending work on another page.
How is this different from just chatting with Claude about my HTML?
In chat, you describe what you want changed in prose: "the third paragraph in the methodology section, where it talks about sampling…". Here, you literally highlight the third paragraph and type "shorter." Claude gets a precise anchor (selector + surrounding text), edits exactly that span, and shows you the result on the rendered page — not as a diff.
What happens if I don't like Claude's edit?
Every edit is bracketed by two snapshots. Click ↶ Revert in the sidebar (or on the highlight) and the server reverse-applies the patch — only that one edit goes away. Want it back? ↺ Redo re-applies it. Reverting one change never disturbs the others.
Can I use it on a team?
Not in v1. The server is single-user, local-only by design. If a teammate needs to review the same artifact, they run their own copy on their own machine against the same files. Real-time multi-user editing isn't a v1 goal.
Do I need to be a Python developer?
No. If you have Python 3.10+ installed (most macOS and Linux machines do), you don't write or read any Python. The Claude Code path is even simpler: clone, type /html-feedback, done.
What if Claude is processing and I add more comments?
They queue up. The status pill shows Processing N/M… for the current batch. Your new comments stay in the inbox marked open, and you ship them with the next ▶ Process click. The batch boundary is what you decide it is.
How do I uninstall?
Delete the skill folder (~/.claude/skills/html-feedback) and run python scripts/inject.py remove --dir <your-folder> from a clone of the repo to strip the injected script tags. The feedback/ sub-folder in your target dir holds all comments and snapshots — keep it or trash it.
Does it work without internet?
The server, injector, and UI are 100% offline. Claude itself needs network for inference, but that's true of any Claude Code session. If you've cached a session, comments still queue locally — they just sit in inbox.jsonl until Claude is reachable again.
Where can I read more?
Workflow details live in SKILL.md. The wire protocol and JSON schemas are in SPEC.md. The repo's README covers shortcuts and the full feature list.
Ready to try it?

Stop describing edits. Start pointing at them.

One git clone. One slash command. A loop that actually feels good.

$ git clone https://github.com/sid8491/html-feedback ~/.claude/skills/html-feedback