Skip to content
Agentmart
Submit a tool

screenshot-critique

Use the unprimed sub agent as a second set of eyes before accepting visual work — MANDATORY before declaring any user-reported visual bug fixed or claiming a…

Skill by dzhng

IndexedMIT★ 1,379
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/dzhng-screenshot-critique

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use the unprimed sub agent as a second set of eyes before accepting visual work — MANDATORY before declaring any user-reported visual bug fixed or claiming a visual change verified; primed eyes pass defects fresh eyes catch.

Use cases: agent-building, testing, ui-design

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/screenshot-critique

What's inside

Skill name
screenshot-critique
Description
Use the unprimed sub agent as a second set of eyes before accepting visual work — MANDATORY before declaring any user-reported visual bug fixed or claiming a visual change verified; primed eyes pass defects fresh eyes catch.
License
MIT
Instructions
164 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (3)

  • SKILL.md
  • receipts.eval.mjs · scripts/
  • receipts.mjs · scripts/

SKILL.md (first lines)

# Screenshot Critique

Use an unprimed sub-agent as a second set of eyes before accepting visual work.
This is for visual defects, not pixel metrics; pair it with
`compare-screenshots` when you also need numbers — including on a single shot
with nothing to compare against, whose scene metrics say whether the frame has
any content in it at all.

## Workflow

1. Capture or locate the exact PNGs/GIF frames under review.
2. Keep native-size evidence and create supplementary 2x-4x crops for every
   key feature, plus the full screenshot. Include complete endpoints and fades;
   recheck crop bounds after geometry changes. Crop selected units, city/town
   stacks, flags/poles,
   shadows, selection rings, labels/icons, roads, terrain features, water, and
   any artifact-prone area. If the complaint is about "too faint", "wrong
   order", or "not in perspective", the crop is mandatory.
3. Spawn one fresh explorer with `fork_context: false`; pass only the full
   images, the crops, and a short neutral task. Include the approved reference
   and user requirements when judging fidelity; withhold history, implementation
   details, prior verdicts and the expected answer.
4. Ask for concrete visible defects with confidence levels. Name likely risk
   categories: unit/prop depth ordering, layering, shadows, selection-marker
   contrast, ground-plane perspective, flag/pole attachment, label style and
   icon readability, blur, scale, lighting, artifacts, missing models, terrain
   feature readability, roads, water, and overall scan readability.
5. Run the returned critique through `scripts/receipts.mjs`. Every number it
   flags is a claim the critique cannot show a command for, and every file it
   flags is one the critique named but never wrote; strike those claims or
   re-measure them yourself before any of them reach a decision.
6. Compare the sub-agent's critique against your own inspection. Treat overlap
   as high-priority evidence. Treat novel high-confidence findings as bugs to
   inspect, not as taste notes to dismiss.
7. Record actionable findings in the spec, visual report, or next task plan
   before claiming the screenshot is accepted.

## Sub-Agent Prompt

Use this shape, replacing the bracketed surface and attaching local images:

```text
Fresh visual critique task. You have no project backstory and should only
inspect the supplied screenshots and crops. First inspect the full screenshot
for context, then inspect each crop at zoomed scale. Look for concrete
visual/layout defects in [surface], especially unit/prop depth ordering,
layering, shadows, selection-marker contrast, ground-plane perspective,
flag/pole attachment, label style/icons, blur, scale, lighting, artifacts,
missing models, terrain feature readability, roads, water, and scan
readability. Do not assume these are correct. Return a concise list of issues
you can see, with confidence and whether the issue is visible in the full image,
the crop, or both.

Describe what you see in words. You are looking at these images, not measuring
them, so state no pixel value, luminance, percentage, ratio, count, or offset
unless you ran a command that produced it and you quote that command and its
output beside the number. "The hem reads clearly darker than the floor beside
it" is a finding; "44.0 versus 33.6" without a receipt is a fabrication. The
same goes for files: name no artifact you did not create with a tool you
actually have.
```

Spawn config:

- `agent_type`: `explorer`
- `fork_context`: `false`
- attach screenshots as `local_image` items
- omit model overrides unless the user explicitly requests one
- grant a measurement tool whenever you want numbers back — see Receipts

## Receipts

A number in a critique is a **receipt or a guess**, and the two are
indistinguishable once they are written down. An agent handed images and asked
for defects will answer in whatever register the question was posed in: ask it
how much darker the hem is and it returns a luminance mean, because that is
what the answer is shaped like — not because it measured anything. Sometimes
the estimate lands close and sometimes it inverts the finding; nothing in the
report tells you which, and it reads as the strongest evidence there precisely
because it is numeric. The same reflex names the crops and dumps it says it
wrote.

- **Match the tool surface to the output contract.** Before spawning, read your
  own prompt and ask which tool produces each claim you demanded. A judge with
  images and no shell can report what it sees and nothing else. If you want
  measurements, grant the tool that measures and name it in the prompt;
  otherwise stop asking for them.
- **A number without its command is not a finding.** Every quantity must arrive
  with the command that produced it and that command's output, close enough to
  read together. Findings that fail this are struck, not discounted.
- **Verify, don't trust the eye of the verifier.** Run `scripts/receipts.mjs`
  over the returned report — `node scripts/receipts.mjs <report.md>` — before
  you read the findings, so an unsupported number never gets to be persuasive
  first. It exits nonzero and prints each unbacked quantity and each file the
  report named but never wrote. `scripts/receipts.eval.mjs` is its own eval,
  over reports written in the eval whose right answer is known by construction,
  both directions pinned: run it after changing the checker, and never widen
  what counts as a receipt to make a failing case pass.
- **Know which half of it is proof.** The file check is proof: the path is
  resolved on disk and a stated sha256 is recomputed, so an invented crop dies
  there. The number check is attribution, not execution — it asks whether a
  command is shown running with this number in its output, and a report that
  invents the whole transcript passes. Nothing readable from static text can
  separate an invented transcript from a real one. So a clean run means the
  claims are attributable and the files are real, not that anything ran; ask
  for the artifact and the hash when a number has to hold weight.
- **Ordinal words are still findings; numbers are not.** "Clearly darker",
  "roughly a third of the panel", "the left edge is cut off" are what an eye can
  honestly report. Push the critique toward that register rather than trying to
  make its arithmetic more careful.
- **The measured pass is a separate run.** When the words justify numbers, take
  the measurement yourself with `compare-screenshots`, or re-run the critic with
  a shell and this same receipt rule. Never repair a report by asking its author
  to double-check its own figures.

## Rules

- **Mandatory before "fixed":** never declare a user-reported visual bug fixed
  on your own inspection — your eyes are primed by the fix you just made. Run

From dzhng/skills, MIT.

More from dzhng/skills

Compare and alternatives

Featured in

Signals

Stars
1,379
Forks
84
Open issues
0
Last commit (this folder)
Oct 14, 2026 (13 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from dzhng

Cite this page

screenshot-critique skill. Agent Mart. https://agentmart.dev/skills/dzhng-screenshot-critique (last updated 2026-10-24)