.agents/skills/ux-audit/references/layer-2-visual.md
L1 proves what's in the code; L2 judges what the user actually sees. Many verdicts — visual hierarchy, spacing, truncation, whether an empty state reads as a real page — can only be reached from a render. Add this layer whenever findings are about layout, hierarchy, rendered states, or responsive behavior.
Part of the ux-audit skill — see ../SKILL.md.
This is the layer that fixes the recurring trap: don't conclude "one primary button" or "empty is a real page" from a
variantprop. On the render, confirm the dominant control is the primary action, and the empty body is a purpose-built page.
agent-browser --cdp 9222 screenshot renders from the
renderer (works headless under xvfb-run). See the agent-testing skill for launch +
auth (its Step 0). Capture the states you need; forcing hard-to-reach states (error,
empty) is an L3 job (see layer-3-dynamic.md).Capture the set, not one frame: the default state, plus (where reachable) empty / loading / error, at desktop + one narrow / mobile width, and dark + light if both ship.
Per finding: the checklist item / catalog pattern, the screenshot (path or the user-supplied image) as evidence, and the remedy. Mark anything time-based (a layout jump, streaming) as "needs L3 (GIF / metric)".