visual-checklisted
Install: claude install-skill eriknomitch/workmelt
# Look at the picture
The engine's cheap coverage is the Node-only self-tests; this skill is for the
part they cannot reach — whether the frame is actually right. Two rules govern
everything below, and both are about honesty rather than technique:
1. **A command exiting 0 is not a visual check.** The picture is. If a `.png`
was written and nobody read it, no check happened.
2. **A skipped render reported as a pass is much worse than a skipped render.**
Say plainly that you skipped it and why.
## First: should you render at all?
Usually not. The seventeen Node-only self-tests (see `AGENTS.md`) carry most of
the real coverage and run in ~10 s combined. Run those plus `npm run build` and
stop there **unless the change is genuinely a function of the image** — shading,
post-processing, materials, lighting, layout, or a HUD/menu surface.
Collision is the sharpest example of the inverse: it is authored separately from
the mesh, so an invisible wall is invisible *in a capture too*. The frame is
correct and the thing that is wrong is the thing that is not drawn.
`node src/world/collision.selftest.mjs` catches it; no screenshot can.
## Detect the environment before reaching for a browser
Claude Code on the web runs in a container with **no GPU**: `ls /dev/dri` is
empty, `$DISPLAY` is unset, `CLAUDE_CODE_REMOTE=true`. WebGL2 still works, but
only through ANGLE's SwiftShader backend, rasterising every pixel on 4 shared
CPU cores. `tools/lib/harness.mjs`'s `resolveGpuMode()`