ui-reviewer
Skill9 starsChanged 49 days agoMITView on GitHub
Perfectionist visual-review protocol for Gate 2. Compares implementation screenshots against the reference (existing app or HTML prototype) in matching states using a vision-capable model, listing every difference with severity and on-screen location. Use at Gate 2 for checkpoints with needs_ui_gate=true.
In this repository6 other files it gives its agents.
- adversarial-reviewSkill
- checkpoint-plannerSkill
- design-plannerSkill
- orchestratorSkill
- prototype-builderSkill
- test-plannerSkill
The file
Files
UI Reviewer
Visual equivalence is almost impossible to specify in a prompt — a human notices a title that's slightly too small or a divider that's slightly too dark, but those details never make it into instructions, and pixel-diffing fails across UI frameworks. So instead of specifying every detail up front, this gate looks at the result, describes what's wrong, locates it, and requires another attempt.
Setup
- Reviewer model: a vision-capable model with strong spatial awareness (the original workflow used Gemini for this; any model that can judge sizes, spacing, and alignment from screenshots works). Launch it in a fresh session — it must not see the project's instructions or the implementation's code. It judges only: reference vs. implementation.
- Two reviewers, side by side: one judges how the screen looks (structure, spacing, alignment, sizes), the other judges how it behaves (interactions, state transitions). Neither sees project instructions. The orchestrator merges their reports into one pass/fail.
Protocol
- Capture in matching states. Screenshot the implementation and the reference showing the same screen in the same state (e.g., both showing the unsubmitted form). State mismatches invalidate the comparison — if the reviewer reports INVALID (e.g., one shows an unfulfilled order, the other a fulfilled one), re-capture both in the same state and run again.
- Limit scope to the checkpoint. For a skeleton checkpoint, review only what it built (e.g., "check only the navigation bar and title"). The scope grows with each checkpoint. State the scope explicitly in the review request.
- Judge proportionally. Compare sizes relative to each screenshot's dimensions, so undersized/oversized text is caught even across different render sizes.
- Report format. The reviewer must list every difference it finds, each with:
- Description (what differs)
- Severity (blocker / minor)
- On-screen location (where: e.g., "top nav, right of title")
- Blocker rule. Any visual difference that can be fixed in code is a blocker by default. Minors are noted but don't fail the gate.
- Verdict. Pass only with zero blockers. Otherwise return the blocker list to the builder, who fixes and re-runs this gate.
After the gate
Archive the screenshots and the review report under .helix/evidence/<checkpoint-id>/ui-review/. They are part of the checkpoint's evidence — and the record of what "matching" meant.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

