Use when working with ANY GPU rendering, Metal, OpenGL migration, shaders, frame rate, or display performance. Covers Metal migration, shader conversion, variable refresh rate, ProMotion, render loops.
View on GitHubSelect agents to install to:
npx add-skill https://github.com/CharlesWiltgen/Axiom/blob/main/.claude-plugin/plugins/axiom/skills/axiom-ios-graphics/SKILL.md -a claude-code --skill axiom-ios-graphicsInstallation paths:
.claude/skills/axiom-ios-graphics/# iOS Graphics Router **You MUST use this skill for ANY GPU rendering, graphics programming, or display performance work.** ## When to Use Use this router when: - Porting OpenGL/OpenGL ES code to Metal - Porting DirectX code to Metal - Converting GLSL/HLSL shaders to Metal Shading Language - Setting up MTKView or CAMetalLayer - Debugging GPU rendering issues (black screen, wrong colors, crashes) - Evaluating translation layers (MetalANGLE, MoltenVK) - Optimizing GPU performance or fixing thermal throttling - App stuck at 60fps on ProMotion device - Configuring CADisplayLink or render loops - Variable refresh rate display issues ## Routing Logic ### Metal Migration **Strategy decisions** → `/skill axiom-metal-migration` - Translation layer vs native rewrite decision - Project assessment and migration planning - Anti-patterns and common mistakes - Pressure scenarios for deadline resistance **API reference & conversion** → `/skill axiom-metal-migration-ref` - GLSL → MSL shader conversion tables - HLSL → MSL shader conversion tables - GL/D3D API → Metal API equivalents - MTKView setup, render pipelines, compute shaders - Complete WWDC code examples **Diagnostics** → `/skill axiom-metal-migration-diag` - Black screen after porting - Shader compilation errors - Wrong colors or coordinate systems - Performance regressions - Time-cost analysis per diagnostic path ### Display Performance **Frame rate & render loops** → `/skill axiom-display-performance` - App stuck at 60fps on ProMotion (120Hz) device - MTKView or CADisplayLink configuration - Variable refresh rate optimization - System caps (Low Power Mode, Limit Frame Rate, Adaptive Power) - Frame budget math (8.33ms for 120Hz) - Measuring actual vs reported frame rate ## Decision Tree ``` User asks about GPU/graphics/Metal/display ├─ "Should I use translation layer or native?" → metal-migration ├─ "How do I migrate/port/convert?" → metal-migration ├─ "Show me the API/code/example" → metal-migration-ref