What problem does it solve? A digital-twin viewer can render beautifully yet silently miss its frame budget, paint no live data, lose its GlobalId join keys, or play back recordings non-deterministically — and a generic engine smoke test will never catch any of it. This Skill layers twin-specific verification gates on top of the base Godot verification floor so a viewer is only called done when it provably works. ## Core Features & Use Cases - Frame-budget gate: Benchmarks the scene against the architect's stated frame budget (via viewer.cfg or TWIN_FRAME_BUDGET_MS) using a windowed bench, with loud SKIP semantics when no display or budget exists. - Data-binding smoke: Drives the real viewer shell headlessly with a seeded sim (seed 42) and asserts stream health, full binding resolution, and visible node-state changes. - GlobalId join coverage: Checks that model elements join to sidecar properties at ~100% coverage, counting both named MeshInstance3D nodes and twin_globalids metadata on optimized MultiMesh batches. - Playback determinism and browser evidence: Runs a two-leg playback-hash comparison for determinism and captures CDP screenshots plus console logs for web builds. - Use Case: After optimizing a plant model scene, run tools/verify_twin.sh to confirm the frame budget holds, bindings still drive colors, the join stayed at 100%, and playback remains deterministic before reporting the optimization win. ## Quick Start Run the composed gate with rtk tools/verify_twin.sh from the project root after any scene, binding, import, or playback change and report each gate's PASS, FAIL, or explicit SKIP verdict.