Use when working with ANY GPU rendering, Metal, OpenGL migration, shaders, 3D content, RealityKit, AR, USD/USDZ files, or display performance. Covers Metal migration, shader conversion, RealityKit ECS, RealityView, USDKit, ProMotion.
69
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
You MUST use this skill for ANY GPU rendering, graphics programming, 3D content display, or display performance work.
Use this router when:
Strategy decisions → See skills/metal-migration.md
API reference & conversion → See skills/metal-migration-ref.md
Diagnostics → See skills/metal-migration-diag.md
Any rendering surface in a resizable window → See skills/resizable-rendering.md
drawableSizeWillChange (projection + render-target reallocation, live-resize throttling)drawableSize/contentsScale ownershipFrame rate & render loops → See skills/display-performance.md
For 3D content in non-game SwiftUI apps, AR experiences, and spatial computing, use the RealityKit skills. For game-specific RealityKit patterns, use the axiom-games router instead.
Architecture, ECS, and best practices → See skills/realitykit.md
API reference → See skills/realitykit-ref.md
Troubleshooting → See skills/realitykit-diag.md
HDR drawing and color metadata → See skills/hdr-color-ref.md
CGContextCGContentToneMappingInfo vs CGToneMapping)OS27)CGColor / CGColorSpace (Codable in OS27)OS27USD file work in Swift → See skills/usdkit.md
| Thought | Reality |
|---|---|
| "I'll just translate the shaders line by line" | GLSL→MSL has type, coordinate, and precision differences. metal-migration-ref has conversion tables. |
| "MetalANGLE will handle everything" | Translation layers have significant limitations for production. metal-migration evaluates the trade-offs. |
| "It's just a black screen, probably a simple bug" | Black screen has 6 distinct causes. metal-migration-diag diagnoses in 5 min vs 30+ min. |
| "My app runs at 60fps, that's fine" | ProMotion devices support 120Hz. display-performance configures the correct frame rate. |
| "I'll just use SceneKit for the 3D model" | SceneKit is soft-deprecated. RealityView and Model3D are the modern path. skills/realitykit.md covers SwiftUI integration. |
| "I don't need ECS for one 3D model" | Model3D shows one model with zero ECS. RealityView scales to complex scenes. skills/realitykit.md shows both paths. |
| "I'll parse the USD file myself / bundle OpenUSD" | USDKit is system-provided USD on the 27 releases. skills/usdkit.md covers stages, editing, and compressed export. |
| "I'll write my own pathfinding over the scene graph" | RealityKit 27 ships navigation meshes with costs and off-mesh connections. skills/realitykit-ref.md Part 10. |
| "The frame drop only happens after an hour of play, can't trace that" | The 27 releases record Metal metrics continuously — collect after the fact with metalperftrace. skills/display-performance.md Part 12. |
| "I'll size my render target from the screen bounds" | Windows resize continuously at 27 and scenes move between screens with different scales. Size from the drawable/view + trait scale — skills/resizable-rendering.md. |
"I'll use CGContentToneMappingInfo — it's the modern Swift enum" | It cannot express Headroom Adaptive Gain Curve; only the C-imported CGToneMapping can. Newer spelling, narrower capability. skills/hdr-color-ref.md Part 1. |
metal-migration:
metal-migration-ref:
metal-migration-diag:
display-performance:
realitykit (non-game 3D):
realitykit-ref (API):
ClothBodyComponent), ComputeGraph frameworkusdkit (USD authoring, 27 releases):
User: "My MTKView content stretches when the iPad window resizes"
→ See skills/resizable-rendering.md
User: "My cached thumbnails look blurry in iPhone Mirroring"
→ See skills/resizable-rendering.md
User: "Should I use MetalANGLE or rewrite in native Metal?"
→ See skills/metal-migration.md
User: "I'm porting projectM from OpenGL ES to iOS"
→ See skills/metal-migration.md
User: "How do I convert this GLSL shader to Metal?"
→ See skills/metal-migration-ref.md
User: "Setting up MTKView for the first time"
→ See skills/metal-migration-ref.md
User: "My ported app shows a black screen"
→ See skills/metal-migration-diag.md
User: "Performance is worse after porting to Metal"
→ See skills/metal-migration-diag.md
User: "My app is stuck at 60fps on iPhone Pro"
→ See skills/display-performance.md
User: "How do I configure CADisplayLink for 120Hz?"
→ See skills/display-performance.md
User: "ProMotion not working in my Metal app"
→ See skills/display-performance.md
User: "How do I show a 3D model in my SwiftUI app?"
→ See skills/realitykit.md
User: "I need to display a USDZ model"
→ See skills/realitykit.md
User: "How do I set up RealityView?"
→ See skills/realitykit-ref.md
User: "My 3D model isn't showing in RealityView"
→ See skills/realitykit-diag.md
User: "How do I use RealityRenderer with Metal?"
→ See skills/realitykit-ref.md
User: "I need AR in my app"
→ See skills/realitykit.md
User: "How do I read and edit a USD file in Swift?"
→ See skills/usdkit.md
User: "How do I shrink my USDZ assets for delivery?"
→ See skills/usdkit.md
User: "How do I add pathfinding to my RealityKit scene?"
→ See skills/realitykit-ref.md (Part 10)
User: "My game's frame rate drops after an hour of play"
→ See skills/display-performance.md (Part 12)
User: "How do I run a neural network inside my Metal shader?"
→ See skills/metal-migration-ref.md (Part 6)
User: "My HDR photo looks washed out when I draw it into a CGContext"
→ See skills/hdr-color-ref.md
User: "How do I check whether an image's ICC profile carries a gain curve?"
→ See skills/hdr-color-ref.md
ea3be7c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.