From axiom
Routes iOS graphics tasks to specialized skills for Metal/OpenGL migration, GLSL/HLSL shader conversion, RealityKit 3D/AR in SwiftUI, and display performance like ProMotion/VRR.
npx claudepluginhub charleswiltgen/axiom --plugin axiomThis skill uses the workspace's default tool permissions.
**You MUST use this skill for ANY GPU rendering, graphics programming, 3D content display, or display performance work.**
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
You MUST use this skill for ANY GPU rendering, graphics programming, 3D content display, or display performance work.
Use this router when:
Strategy decisions → /skill axiom-metal-migration
API reference & conversion → /skill axiom-metal-migration-ref
Diagnostics → /skill axiom-metal-migration-diag
Frame rate & render loops → /skill axiom-display-performance
For 3D content in non-game SwiftUI apps, AR experiences, and spatial computing, use the RealityKit skills. For game-specific RealityKit patterns, use the ios-games router instead.
Architecture, ECS, and best practices → /skill axiom-realitykit
API reference → /skill axiom-realitykit-ref
Troubleshooting → /skill axiom-realitykit-diag
| 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. axiom-realitykit covers SwiftUI integration. |
| "I don't need ECS for one 3D model" | Model3D shows one model with zero ECS. RealityView scales to complex scenes. axiom-realitykit shows both paths. |
metal-migration:
metal-migration-ref:
metal-migration-diag:
display-performance:
axiom-realitykit (non-game 3D):
axiom-realitykit-ref (API):
User: "Should I use MetalANGLE or rewrite in native Metal?"
→ Invoke: /skill axiom-metal-migration
User: "I'm porting projectM from OpenGL ES to iOS"
→ Invoke: /skill axiom-metal-migration
User: "How do I convert this GLSL shader to Metal?"
→ Invoke: /skill axiom-metal-migration-ref
User: "Setting up MTKView for the first time"
→ Invoke: /skill axiom-metal-migration-ref
User: "My ported app shows a black screen"
→ Invoke: /skill axiom-metal-migration-diag
User: "Performance is worse after porting to Metal"
→ Invoke: /skill axiom-metal-migration-diag
User: "My app is stuck at 60fps on iPhone Pro"
→ Invoke: /skill axiom-display-performance
User: "How do I configure CADisplayLink for 120Hz?"
→ Invoke: /skill axiom-display-performance
User: "ProMotion not working in my Metal app"
→ Invoke: /skill axiom-display-performance
User: "How do I show a 3D model in my SwiftUI app?"
→ Invoke: /skill axiom-realitykit
User: "I need to display a USDZ model"
→ Invoke: /skill axiom-realitykit
User: "How do I set up RealityView?"
→ Invoke: /skill axiom-realitykit-ref
User: "My 3D model isn't showing in RealityView"
→ Invoke: /skill axiom-realitykit-diag
User: "How do I use RealityRenderer with Metal?"
→ Invoke: /skill axiom-realitykit-ref
User: "I need AR in my app"
→ Invoke: /skill axiom-realitykit