Agent skill

arkit-visionos-developer

Build and debug ARKit features for visionOS, including ARKitSession setup, authorization, data providers (world tracking, plane detection, scene reconstruction, hand tracking), anchor processing, and RealityKit integration. Use when implementing ARKit workflows on visionOS or troubleshooting provider-specific space, privacy, and lifecycle behavior.

Stars 47
Forks 5

Install this agent skill to your Project

npx add-skill https://github.com/tomkrikorian/visionOSAgents/tree/main/skills/arkit-visionos-developer

SKILL.md

ARKit visionOS Developer

Description and Goals

This skill provides comprehensive guidance for implementing ARKit-powered features on visionOS. ARKit on visionOS uses ARKitSession with data providers to access world tracking, hand tracking, plane detection, scene reconstruction, and other spatial data, which can then be bridged into RealityKit content.

Goals

  • Enable developers to set up and manage ARKitSession on visionOS
  • Guide proper authorization handling for ARKit data providers
  • Help developers choose and configure appropriate data providers
  • Support anchor processing and RealityKit integration
  • Ensure proper lifecycle management of ARKit sessions

What This Skill Should Do

When implementing ARKit features on visionOS, this skill should:

  1. Guide ARKitSession setup - Help you create and manage long-lived ARKitSession instances
  2. Handle authorization - Show how to request and check authorization for required data types
  3. Select data providers - Help you choose the right providers (world tracking, hand tracking, plane detection, etc.)
  4. Process anchors - Demonstrate how to consume anchor updates and map them to RealityKit entities
  5. Manage lifecycle - Ensure proper session start/stop and task cancellation
  6. Bridge to RealityKit - Show how to integrate ARKit anchors with RealityKit content

Load the appropriate reference file from the tables below for detailed usage, code examples, and best practices.

Quick Start Workflow

  1. Add NSWorldSensingUsageDescription, NSHandsTrackingUsageDescription, and NSMainCameraUsageDescription to Info.plist as needed for the providers you use.
  2. Use the presentation style required by the selected providers. Some providers require immersive space, while others have more specific rules.
  3. Create a long-lived ARKitSession and the data providers you need.
  4. Request authorization for provider-required data types before running the session.
  5. Run the session with your providers and observe anchorUpdates streams.
  6. Map anchors to RealityKit entities and keep state in a model layer.
  7. Observe ARKitSession.events for authorization changes and errors.
  8. Stop the session and cancel tasks when leaving the immersive space.

Information About the Skill

Core Concepts

ARKitSession Lifecycle

  • Keep a strong reference to the session; call run(_:) with providers, stop on teardown.
  • Sessions stop automatically on deinit, so maintain references throughout the immersive experience.

Authorization

  • Use requestAuthorization(for:) or queryAuthorization(for:) and handle denied states gracefully.
  • Request authorization before running the session with providers that require it.

Data Providers

  • Choose providers for world tracking, plane detection, scene reconstruction, and hand tracking based on the feature set.
  • Providers expose anchorUpdates streams that you consume to process anchors.

Anchors and Updates

  • Consume provider anchorUpdates and reconcile added, updated, and removed anchors.
  • Normalize anchor IDs to your own state model for reliable entity updates.

RealityKit Bridge

  • Use ARKitAnchorComponent to inspect backing ARKit data on entities when needed.
  • Treat ARKit streams as authoritative and keep rendering logic in RealityKit.

Implementation Patterns

  • Prefer one session per immersive experience and reuse providers when possible.
  • Normalize anchor IDs to your own state model for reliable entity updates.
  • Treat ARKit streams as authoritative and keep rendering logic in RealityKit.

Provider References

Provider When to Use
WorldTrackingProvider When tracking device position and orientation in 3D space.
HandTrackingProvider When tracking hand poses and gestures for interaction.
PlaneDetectionProvider When detecting horizontal and vertical surfaces (floors, walls, tables).
SceneReconstructionProvider When creating detailed 3D mesh reconstructions of the environment.
ImageTrackingProvider When tracking known 2D images in the environment.
ObjectTrackingProvider When tracking 3D objects in the environment.
RoomTrackingProvider When tracking room boundaries and room-scale experiences.
AccessoryTrackingProvider When tracking Apple Vision Pro accessories.
BarcodeDetectionProvider When detecting and reading barcodes in the environment.
CameraFrameProvider When accessing raw camera frames for custom processing.
CameraRegionProvider When accessing camera frames from specific regions.
EnvironmentLightEstimationProvider When estimating ambient lighting conditions.
SharedCoordinateSpaceProvider When sharing coordinate spaces across multiple sessions.
StereoPropertiesProvider When accessing stereo camera properties.

General ARKit Patterns

Reference When to Use
REFERENCE.md When implementing ARKit session setup, authorization, and general provider patterns.

Pitfalls and Checks

  • In SwiftUI-first visionOS apps, prefer RealityView for presentation and ARKitSession for tracking data; use ARView only when you specifically need its UIKit/AppKit-style view APIs.
  • Do not assume every ARKit provider has the same presentation requirements; check the provider-specific guidance before choosing Shared Space, a volumetric window, or an immersive space.
  • Do not block the main actor while awaiting provider updates.
  • Do not drop session references; ARKit stops sessions on deinit.

Expand your agent's capabilities with these related and highly-rated skills.

tomkrikorian/visionOSAgents

shadergraph-editor

Author, load, and troubleshoot Reality Composer Pro Shader Graph materials for RealityKit on visionOS. Use when building Shader Graph materials, exposing promoted inputs for runtime control, or debugging exported USD and MaterialX interop.

47 5
Explore
tomkrikorian/visionOSAgents

shareplay-developer

Build, integrate, and troubleshoot SharePlay GroupActivities features, including GroupActivity definitions, activation flows, GroupSession lifecycle, messaging and journals, ShareLink and SharePlay UI surfaces, and visionOS spatial coordination. Use when implementing or debugging SharePlay experiences across Apple platforms, especially visionOS.

47 5
Explore
tomkrikorian/visionOSAgents

coding-standards-enforcer

Enforce repository coding standards for Swift 6.2 concurrency, Swift language rules. Use when reviewing or implementing Swift code changes.

47 5
Explore
tomkrikorian/visionOSAgents

visionos-widgetkit-developer

Build and debug WidgetKit widgets for Apple Vision Pro (visionOS), including mounting styles (elevated/recessed), textures (glass/paper), proximity-aware layouts via LevelOfDetail, and timeline update troubleshooting.

47 5
Explore
tomkrikorian/visionOSAgents

spatial-swiftui-developer

Design and implement visionOS SwiftUI scenes that integrate RealityKit content. Use when building spatial UI with RealityView, Model3D, attachments, volumetric windows, ImmersiveSpace, or spatial gestures, or when choosing SwiftUI vs RealityKit APIs for 3D presentation.

47 5
Explore
tomkrikorian/visionOSAgents

realitykit-visionos-developer

Build, debug, and optimize RealityKit scenes for visionOS, including entity/component setup, rendering, animation, physics, audio, input, attachments, and custom systems. Use when implementing RealityKit features or troubleshooting ECS behavior on visionOS.

47 5
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results