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 GitHub.claude-plugin/plugins/axiom/skills/axiom-ios-graphics/SKILL.md
February 3, 2026
Select 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 1. Translation layer vs native rewrite? → metal-migration 2. Porting / converting code to Metal? → metal-migration 3. API reference / shader conversion tables? → metal-migration-ref 4. MTKView / render pipeline setup? → metal-mig