What problem does it solve? Mobile WebGL and Three.js shaders often fail to compile or run slowly because varying and uniform variables exceed hardware register limits, precision qualifiers are misconfigured, or fragment shaders lack explicit precision declarations. This Skill provides the rules to pack variables within register budgets and configure precision correctly. ## Core Features & Use Cases - Register Allocation Packing: Enforces a 16x4 virtual register grid with strict type-ordered packing (mat4, mat2, vec4, mat3, vec3, vec2, float) and no-backtracking constraints. - Precision Management: Defines highp, mediump, and lowp range and bit-resolution boundaries, plus mandatory fragment shader precision declarations like precision mediump float;. - Use Case: When a Three.js fragment shader fails to compile on a mobile GPU, apply the packing hierarchy to reorder varyings and uniforms, flatten structures, and set explicit precision qualifiers so the shader fits the target register grid. ## Quick Start Use the threejs-performance-and-packing skill to review my fragment shader and repack its uniforms and varyings to fit mobile WebGL register limits.