Download for MacApple silicon, macOS 14+
Skill

verify-pixels

@playcanvas Updated 2026-10-21

Use when a PlayCanvas rendering change is meant to leave the image unchanged, to prove it with deterministic captures and pixel comparison.

agent-skillsai-agentsclaudeclaude-codeclaude-skillscodex-clicodex-skillscoding-agents

Install

With your agent

Install OMGSkills skill "playcanvas/skills:skills/verify-pixels" into this agent's normal skills directory: call the OMGSkills MCP get_install_plan tool for your agent and run the script it returns (it installs only the pinned commit and verifies SKILL.md), and stop if MCP or the pin is unavailable. Do not overwrite or change existing skills without asking me.

Manual command

git clone https://github.com/playcanvas/skills /tmp/skills && ln -s /tmp/skills/skills/verify-pixels ~/.claude/skills/verify-pixels

From README

Prove pixels unchanged Choose the gate Byte-exact: the change keeps the same decoded data and the same shading math, so every pixel must match. Side-by-side review: the change alters sampled values, random order, precision, or where math runs. Report it as "not byte-gateable" and show old and new at each pose; do not invent thresholds. Make frames deterministic Load every asset and match camera, canvas size, lighting, and animation time between builds. Seed incidental randomness. Drive animated shaders from one app-owned time value, not Date.now() or performance.now(). app.timeScale = 0 makes dt zero, but update still runs; anything counting frames or reading wall-clock time still advances. Set app.autoRender = false, then app.renderNextFrame = true before each frame to capture. Capture and compare WebGL: await (device as WebglGraphicsDevice).readPixelsAsync(x, y, w, h, pixels). WebGPU: render into a RenderTarget and read its colorBuffer with Texture#read().