
Scenekit
Load and maintain 3D scenes in a legacy iOS app with correct SceneKit formats and a clear RealityKit migration boundary.
Overview
SceneKit is an agent skill for the Build phase that corrects iOS 3D asset-loading and shader-modifier plans against documented SceneKit formats and RealityKit migration boundaries.
Install
npx skills add https://github.com/dpearson2699/swift-ios-skills --skill scenekitWhat is this skill?
- Documents SceneKit scene-source formats as .scn, .dae, and .abc—not USDZ/OBJ as the primary SceneKit path
- Recommends .scnassets bundles and asset catalogs for textures Xcode can optimize
- Routes USD/USDZ and major 3D rewrites toward RealityKit instead of stretching SceneKit
- Includes shader-modifier corrections for geometry stage and SCNFrame time handling
- Frames SceneKit as maintenance-mode with RealityKit preferred for new or large updates
- Documented SceneKit scene-source formats: .scn, .dae, .abc
Adoption & trust: 1.2k installs on skills.sh; 713 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your team planned to load USDZ/OBJ in SceneKit and defer RealityKit indefinitely, which conflicts with Apple's supported SceneKit sources and long-term 3D stack direction.
Who is it for?
Maintainers of iOS apps still on SceneKit who need agent-assisted reviews of loading plans and shader snippets.
Skip if: Brand-new 3D products that should start in RealityKit only, or teams with no 3D rendering requirements.
When should I use this skill?
Reviewing SceneKit asset-loading plans, bundled .scnassets structure, or geometry shader modifier snippets before implementation.
What do I get? / Deliverables
You align bundled assets with .scnassets conventions, fix shader modifier usage, and know when to scope RealityKit instead of bolting new formats onto SceneKit.
- Format and packaging corrections
- RealityKit vs SceneKit boundary notes
- Shader modifier fix guidance
Recommended Skills
Journey fit
3D scene loading and shader fixes are product construction work on the mobile client, not distribution or production monitoring. SceneKit/RealityKit choices affect in-app rendering, materials, and asset bundles—front-of-house mobile UI and graphics engineering.
How it compares
Pair with platform migration planning skills for RealityKit rewrites; this skill audits SceneKit specifics rather than generating full game engine architecture.
Common Questions / FAQ
Who is scenekit for?
Indie iOS developers and small teams touching SceneKit scenes, bundled 3D assets, or geometry shader modifiers in Xcode projects.
When should I use scenekit?
Use it in Build while choosing file formats, .scnassets layout, or shader modifier code—especially when agents suggest loading USDZ/OBJ directly with SCNScene(url:).
Is scenekit safe to install?
Check the Security Audits panel on this Prism listing and your repository policies before adding the skill to an agent workspace.
SKILL.md
READMESKILL.md - Scenekit
{ "skill_name": "scenekit", "evals": [ { "id": 0, "prompt": "Review this SceneKit asset-loading plan for an existing iOS app: load hero.usdz directly with SCNScene(url:), keep new models in OBJ because artists already export it, and move everything to RealityKit later. Correct the SceneKit loading guidance and explain the handoff boundary.", "expected_output": "A correction-focused review that names documented SceneKit scene-source formats, recommends .scnassets for bundled SceneKit content, and routes USD/USDZ or significant migration work to RealityKit.", "files": [], "assertions": [ "States that documented SceneKit scene-source formats are .scn, .dae, and .abc rather than presenting .usdz or .obj as the primary SceneKit loading path.", "Recommends placing bundled SceneKit scene files in a .scnassets folder and textures in asset catalogs for Xcode optimization.", "Frames USD/USDZ as the RealityKit migration or new-project path, not as default SceneKit asset-loading guidance.", "Mentions that SceneKit is soft-deprecated or maintenance-mode and RealityKit is preferred for new projects or significant updates." ] }, { "id": 1, "prompt": "Fix this SceneKit shader modifier snippet: material.shaderModifiers = [.geometry: \"_geometry.position.y += sin(scn_frame.time);\"]; material.setValue(Float(scn_frame.time), forKey: \"elapsed\"). Explain how values and built-in time should be handled.", "expected_output": "A corrected SceneKit shader modifier explanation that uses documented shader modifier uniforms such as u_time, passes custom values from Swift by matching #pragma arguments names, and does not use scn_frame outside SCNProgram Metal shader functions.", "files": [], "assertions": [ "Replaces scn_frame.time in shader modifier code with documented shader modifier uniforms such as u_time.", "Explains that Swift should pass custom values with setValue(_:forKey:) matching #pragma arguments declarations, not read scn_frame.time.", "Distinguishes shader modifiers from SCNProgram Metal shader functions where SCNSceneBuffer scn_frame can be used.", "Does not present scn_frame as a shader modifier built-in." ] }, { "id": 2, "prompt": "Audit these SceneKit maintenance snippets: scene.setAttribute([\"UnitMetersPerUnit\": 1.0], forKey: SCNScene.Attribute.unit.rawValue); node.physicsBody = SCNPhysicsBody(type: .dynamic, shape: SCNPhysicsShape(geometry: mesh)); and a plan to rewrite gameplay scoring with GameKit while touching the 3D scene. What should change?", "expected_output": "A SceneKit maintenance review that replaces undocumented scene attribute usage with documented load options or scene attributes, fixes the SCNPhysicsShape initializer, and keeps GameKit limited to a Game Center handoff.", "files": [], "assertions": [ "Flags SCNScene.Attribute.unit as unsupported and uses SCNSceneSource.LoadingOption.convertUnitsToMeters for load-time unit scaling.", "Mentions documented SCNScene.Attribute keys only for scene metadata such as startTime, endTime, frameRate, or upAxis.", "Corrects SCNPhysicsShape construction to include the options: parameter.", "Keeps GameKit out of SceneKit rendering/gameplay scene-graph guidance except as a boundary handoff for Game Center features." ] } ] } # SceneKit Patterns Advanced patterns and techniques for SceneKit development. Covers custom geometry construction, shader modifiers, node constraints, morph targets, hit testing, scene serialization, performance optimization, and SpriteKit overlay rendering. ## Contents - [Custom Geometry](#custom-geometry) - [Shader Modifiers](#shader-modifiers) - [Node Constraints](#node-constraints) - [Morph Targets](#morph-targets) - [Hit Testing](#hit-testing) - [Scene Serialization](#scene-serialization) - [Render Loop and Delegates](#re