Sales Enablement
AvdLee/RocketSimApp
When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts.
Meta XR Mixed Reality Utility Kit (MRUK) (com.meta.xr.mrutilitykit) for Unity XR development.
$ npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install meta-quest/agentic-tools hz-unity-meta-mixed-reality-utility-kit --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/meta-quest/agentic-tools.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/hz-unity-meta-mixed-reality-utility-kit .claude/skills/hz-unity-meta-mixed-reality-utility-kit && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "hz-unity-meta-mixed-reality-utility-kit" agent skill from https://github.com/meta-quest/agentic-tools/tree/main/skills/hz-unity-meta-mixed-reality-utility-kit into .claude/skills/hz-unity-meta-mixed-reality-utility-kit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hz-unity-meta-mixed-reality-utility-kit", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/meta-quest/agentic-tools/tree/main/skills/hz-unity-meta-mixed-reality-utility-kitType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install meta-quest/agentic-tools hz-unity-meta-mixed-reality-utility-kit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/meta-quest/agentic-tools.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/hz-unity-meta-mixed-reality-utility-kit .agents/skills/hz-unity-meta-mixed-reality-utility-kit && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hz-unity-meta-mixed-reality-utility-kit" agent skill from https://github.com/meta-quest/agentic-tools/tree/main/skills/hz-unity-meta-mixed-reality-utility-kit into .agents/skills/hz-unity-meta-mixed-reality-utility-kit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hz-unity-meta-mixed-reality-utility-kit", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install meta-quest/agentic-tools hz-unity-meta-mixed-reality-utility-kit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/meta-quest/agentic-tools.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/hz-unity-meta-mixed-reality-utility-kit .cursor/skills/hz-unity-meta-mixed-reality-utility-kit && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "hz-unity-meta-mixed-reality-utility-kit" agent skill from https://github.com/meta-quest/agentic-tools/tree/main/skills/hz-unity-meta-mixed-reality-utility-kit into .cursor/skills/hz-unity-meta-mixed-reality-utility-kit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hz-unity-meta-mixed-reality-utility-kit", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/meta-quest/agentic-tools.git --path skills/hz-unity-meta-mixed-reality-utility-kit--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install meta-quest/agentic-tools hz-unity-meta-mixed-reality-utility-kit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/meta-quest/agentic-tools.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/hz-unity-meta-mixed-reality-utility-kit .gemini/skills/hz-unity-meta-mixed-reality-utility-kit && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "hz-unity-meta-mixed-reality-utility-kit" agent skill from https://github.com/meta-quest/agentic-tools/tree/main/skills/hz-unity-meta-mixed-reality-utility-kit into .gemini/skills/hz-unity-meta-mixed-reality-utility-kit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hz-unity-meta-mixed-reality-utility-kit", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install meta-quest/agentic-tools hz-unity-meta-mixed-reality-utility-kitInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/meta-quest/agentic-tools.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/hz-unity-meta-mixed-reality-utility-kit .github/skills/hz-unity-meta-mixed-reality-utility-kit && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "hz-unity-meta-mixed-reality-utility-kit" agent skill from https://github.com/meta-quest/agentic-tools/tree/main/skills/hz-unity-meta-mixed-reality-utility-kit into .github/skills/hz-unity-meta-mixed-reality-utility-kit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hz-unity-meta-mixed-reality-utility-kit", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install meta-quest/agentic-tools hz-unity-meta-mixed-reality-utility-kit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/meta-quest/agentic-tools.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/hz-unity-meta-mixed-reality-utility-kit .opencode/skills/hz-unity-meta-mixed-reality-utility-kit && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "hz-unity-meta-mixed-reality-utility-kit" agent skill from https://github.com/meta-quest/agentic-tools/tree/main/skills/hz-unity-meta-mixed-reality-utility-kit into .opencode/skills/hz-unity-meta-mixed-reality-utility-kit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hz-unity-meta-mixed-reality-utility-kit", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
hz-unity-meta-mixed-reality-utility-kitMeta XR Mixed Reality Utility Kit (MRUK) (com.meta.xr.mrutilitykit) for Unity XR development.
Hz Unity Meta Mixed Reality Utility Kit is an agent skill from meta-quest/agentic-tools. Meta XR Mixed Reality Utility Kit (MRUK) (com.meta.xr.mrutilitykit) for Unity XR development. Use when working with Scene API data (rooms, walls, floors, furniture), spawning prefabs on scene anchors, placing virtual objects in the real world, world locking to prevent anchor drift, raycasting against room geometry, generating NavMesh from scene data, environment depth raycasting for instant placement without scanning, Passthrough Camera Access (PCA), trackable detection (keyboards, QR codes), destructible scene…
Its SKILL.md is about 5.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/passthrough-relighting.md`, `references/scene-navigation.md` and `references/unity-mcp-fallback.md`).
It sits in Game Development, covering Fundraising and pitch decks. The repository describes itself as: Agent Skills for Meta Quest/Horizon OS VR Development. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 3a8553d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp and bash).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
developers.meta.comgithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Hz Unity Meta Mixed Reality Utility Kit loads about 5.3k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 159 tokens; SKILL.md has 1,620 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from meta-quest/agentic-tools at commit 3a8553d, republished under its Apache-2.0 licence (© meta-quest). 1,620 words, ~5,322 tokens.
.claude/skills/hz-unity-meta-mixed-reality-utility-kit/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.The Meta XR Mixed Reality Utility Kit (MR Utility Kit, MRUK) is a Unity package that provides high-level tools on top of the Scene API for building scene-aware Mixed Reality (MR) experiences. It is designed to be used in conjunction with the Meta XR Core SDK. It handles scene data loading and querying, spawning prefabs on real-world surfaces, world locking to prevent anchor drift, environment raycasting for instant placement without scanning, passthrough camera access, NavMesh generation from room geometry, and trackable detection (keyboards, QR codes).
Package: com.meta.xr.mrutilitykit
The package com.meta.xr.mrutilitykit may be located in different places depending on the project setup:
Library/PackageCache/com.meta.xr.mrutilitykit@<hash>/ (cached from registry)Packages/com.meta.xr.mrutilitykit/ (local package reference)Before searching for SDK source, first locate the package root by searching for a known file by filename pattern:
**/com.meta.xr.mrutilitykit*/Core/Scripts/MRUK.csThen use the resolved parent path for all subsequent search operations.
| Task | Class / Component | Source File | Key Entry Point |
|---|---|---|---|
| Load scene from device | MRUK | Scripts/MRUK.cs | LoadSceneFromDevice() |
| Load scene from prefab/JSON | MRUK | Scripts/MRUK.cs | LoadSceneFromPrefab(), LoadSceneFromJsonString() |
| Get current room | MRUK | Scripts/MRUK.cs | GetCurrentRoom() |
| Prevent anchor drift | MRUK | Scripts/MRUK.cs | EnableWorldLock = true |
| Query room geometry | MRUKRoom | Scripts/MRUKRoom.cs | Raycast(), IsPositionInRoom() |
| Find surfaces / closest point | MRUKRoom | Scripts/MRUKRoom.cs | TryGetClosestSurfacePosition(), GenerateRandomPositionOnSurface() |
| Get anchor properties | MRUKAnchor | Scripts/MRUKAnchor.cs | Label, PlaneRect, VolumeBounds |
| Spawn prefabs on anchors | AnchorPrefabSpawner | Scripts/AnchorPrefabSpawner.cs | PrefabsToSpawn, SpawnOnStart |
| Find random spawn positions | FindSpawnPositions | Scripts/FindSpawnPositions.cs | StartSpawn(), SpawnLocations |
| 27-slice mesh resizing | GridSliceResizer | Scripts/GridSliceResizer.cs | ResizeTo(Vector3) |
| Generate visual meshes | EffectMesh | Scripts/EffectMesh.cs | CreateMesh(), CutHoles |
| Breakable scene geometry | DestructibleGlobalMeshSpawner | Scripts/DestructibleGlobalMeshSpawner.cs | CreateOnRoomLoaded |
| GPU distance field texture | SpaceMapGPU | Scripts/SpaceMapGPU.cs | GetSpaceMap(), StartSpaceMap() |
| Boundary proximity fade | RoomGuardian | Scripts/RoomGuardian.cs | GuardianDistance, GuardianMaterial |
| NavMesh from scene | SceneNavigation | Scripts/SceneNavigation.cs | BuildSceneNavMesh() |
| Depth API raycasting | EnvironmentRaycastManager | Scripts/EnvironmentRaycastManager.cs | Raycast(), PlaceBox() |
| Passthrough camera images | PassthroughCameraAccess | Scripts/PassthroughCameraAccess.cs | GetTexture(), GetCameraPose() |
| Track keyboards / QR codes | MRUKTrackable | Scripts/MRUKTrackable.cs | TrackableType, MarkerPayloadString |
| Instant placement (no scan) | PointAndLocate | Scripts/BuildingBlocks/InstantContentPlacement/ | TryLocateSpace() |
| Share rooms (multiplayer) | MRUK | Scripts/MRUK.cs | ShareRoomsAsync(), LoadSceneFromSharedRooms() |
All source file paths are relative to the package root (see "Finding the SDK Source" above).
MRUK (singleton MonoBehaviour)
└── MRUKRoom (child GameObjects, one per room)
└── MRUKAnchor (children of rooms: walls, floors, furniture, etc.)MRUK.Instance is the central hub. It loads scene data, manages rooms, handles world locking, and provides the SceneSettings configuration.MRUKRoom represents a physical room. Provides spatial queries (raycasting, position checks, surface queries) and holds Anchors, WallAnchors, FloorAnchors, CeilingAnchors, GlobalMeshAnchor.MRUKAnchor represents a single scene element (wall, table, couch, etc.). Has a Label (SceneLabels flags), optional PlaneRect (2D bounds), VolumeBounds (3D bounds), and PlaneBoundary2D (polygon points).MRUKTrackable extends MRUKAnchor for runtime-detected objects (keyboards, QR codes).A C/C++ shared library handles world locking, anchor discovery, and coordinate conversion (OpenXR right-handed ↔ Unity left-handed). A hidden MRUKGlobalContext MonoBehaviour (DontDestroyOnLoad) ticks the native context every frame. You never call these directly.
All feature components (AnchorPrefabSpawner, EffectMesh, FindSpawnPositions, SceneNavigation, SpaceMapGPU, RoomGuardian, DestructibleGlobalMeshSpawner) follow the same pattern:
SpawnOnStart / CreateOnStart / BuildOnSceneLoaded property of type MRUK.RoomFilter controls automatic initializationStart(), they call MRUK.Instance.RegisterSceneLoadedCallback(...) which fires immediately if the scene is already loadedCreateMesh(), StartSpawn(), BuildSceneNavMesh(), etc.) for programmatic controlcom.meta.xr.sdk.core (OVRCameraRig, OVRPlugin, OVRSpatialAnchor, OVRSemanticLabels)com.unity.ai.navigation (for SceneNavigation)com.unity.nuget.newtonsoft-json (for JSON scene serialization)FLOOR, CEILING, WALL_FACE, TABLE, COUCH, DOOR_FRAME, WINDOW_FRAME,
OTHER, STORAGE, BED, SCREEN, LAMP, PLANT, WALL_ART, GLOBAL_MESH,
INVISIBLE_WALL_FACE, UNKNOWN, INNER_WALL_FACEUse as flags: SceneLabels.TABLE | SceneLabels.COUCH matches tables OR couches.
None = 0, Plane = 1, Volume = 2, All = Plane | VolumeAnchors can have plane geometry (2D rect), volume geometry (3D bounds), or both.
Device // Load from device Scene API
Prefab // Load from room prefab GameObjects
DeviceWithPrefabFallback // Device first, prefab if no scene data (recommended for dev)
Json // Load from JSON string
DeviceWithJsonFallback // Device first, JSON if no scene dataFACING_UP = 1 // Floors, table tops
FACING_DOWN = 2 // Ceilings, undersides
VERTICAL = 4 // WallsNone // Don't auto-initialize
CurrentRoomOnly // Only the room the user is in
AllRooms // All loaded roomsV1 // Standard scene model
V2 // High Fidelity: multiple floors/ceilings, slanted ceilings, inner walls
V2FallbackV1 // Try V2, fall back to V1 if unsupportedStruct for filtering anchors by label and component type. Used in raycast, surface query, and spawn methods.
var filter = new LabelFilter(SceneLabels.TABLE | SceneLabels.COUCH, ComponentType.Volume);
bool passes = filter.PassesFilter(anchor.Label);DEFAULT // Standard positioning
CENTER // Center of surface (e.g., center of table for chess board)
EDGE // Edge of surface (e.g., edge of table for piano)Key Properties: Instance (static), IsInitialized, Rooms (List<MRUKRoom>), EnableWorldLock, IsWorldLockActive, TrackingSpaceOffset, SceneSettings
Key Methods:
GetCurrentRoom() → MRUKRoomRegisterSceneLoadedCallback(UnityAction) — fires immediately if already loadedLoadSceneFromDevice(SceneModel) → Task<LoadDeviceResult>LoadSceneFromPrefab(GameObject) → Task<LoadDeviceResult>LoadSceneFromJsonString(string) → Task<LoadDeviceResult>SaveSceneToJsonString() → stringClearScene()HasSceneModel() → Task<bool> (static, checks if device has scene data)ShareRoomsAsync(...), LoadSceneFromSharedRooms(...) — co-located multiplayerEvents: SceneLoadedEvent, RoomCreatedEvent, RoomUpdatedEvent, RoomRemovedEvent
MRUKSettings (serialized config): DataSource, RoomPrefabs[], SceneJsons[], LoadSceneOnStartup, EnableHighFidelityScene, SeatWidth, TrackerConfiguration
Key Properties: Anchors, WallAnchors, FloorAnchors, CeilingAnchors, GlobalMeshAnchor, IsLocal, RoomMeshData
Key Methods:
Raycast(Ray, float, out RaycastHit, out MRUKAnchor) — collisionless raycast against scene geometryRaycastAll(...) — all intersectionsIsPositionInRoom(Vector3), IsPositionInSceneVolume(Vector3)TryGetClosestSurfacePosition(Vector3, out Vector3, out MRUKAnchor, LabelFilter) → float (distance)GenerateRandomPositionOnSurface(SurfaceType, float, LabelFilter, out Vector3, out Vector3) → boolGenerateRandomPositionInRoom(float, bool) → Vector3?FindLargestSurface(SceneLabels) → MRUKAnchorGetRoomBounds() → BoundsGetKeyWall(out Vector2, float) → MRUKAnchor (widest wall facing room center)Events: AnchorCreatedEvent, AnchorUpdatedEvent, AnchorRemovedEvent
Key Properties: Label (SceneLabels), PlaneRect (Rect?), VolumeBounds (Bounds?), PlaneBoundary2D (List<Vector2>), Room (MRUKRoom), ParentAnchor, ChildAnchors, GlobalMesh (Mesh)
Key Methods:
Raycast(Ray, float, out RaycastHit, ComponentType) — collisionless raycastHasAnyLabel(SceneLabels) → boolGetAnchorCenter() → Vector3GetClosestSurfacePosition(Vector3, out Vector3, out Vector3, ComponentType) → floatIsPositionInVolume(Vector3), IsPositionInBoundary(Vector2)Runtime-tracked objects (keyboards, QR codes). Managed by MRUK via SceneSettings.TrackerConfiguration.
Key Properties: TrackableType (OVRAnchor.TrackableType), IsTracked, MarkerPayloadString, MarkerPayloadBytes
Events on SceneSettings: TrackableAdded, TrackableRemoved
Scripts/AnchorPrefabSpawner.cs)Spawns prefabs on scene anchors based on labels. Configure PrefabsToSpawn (List<AnchorPrefabGroup>) mapping labels to prefab lists with scaling/alignment modes.
AnchorPrefabGroup: Labels, Prefabs, PrefabSelection (Random/ClosestSize/Custom), Scaling (Stretch/UniformScaling/UniformXZScale/NoScaling/Custom), Alignment (Automatic/Bottom/Center/NoAlignment/Custom), MatchAspectRatio, CalculateFacingDirection
Methods: SpawnPrefabs(), SpawnPrefabs(MRUKRoom), ClearPrefabs()
Scripts/FindSpawnPositions.cs)Generates random valid positions for spawning objects. Supports floating, surface-mounted, and hanging positions with physics overlap checking.
SpawnLocation enum: Floating, AnySurface, VerticalSurfaces, OnTopOfSurfaces, HangingDown
Key props: SpawnObject, SpawnAmount, MaxIterations, Labels, CheckOverlaps, SurfaceClearanceDistance
Scripts/GridSliceResizer.cs)27-slice 3D mesh resizer (3D analogue of 9-slice). Preserves mesh borders/corners while stretching the interior to match anchor dimensions. Attach to prefabs used with AnchorPrefabSpawner.
Scripts/EffectMesh.cs)Generates visual meshes from scene anchors. Supports materials, colliders, hole cutting (for doors/windows), shadow casting, and visibility toggling.
Key props: MeshMaterial, Colliders, CutHoles (SceneLabels to cut holes for), CastShadow, HideMesh
Methods: CreateMesh(), DestroyMesh(), ToggleEffectMeshVisibility(bool), ToggleEffectMeshColliders(bool)
Casts virtual lights' shadows and highlights onto real-world surfaces by rendering an EffectMesh with the Meta/MRUK/Scene/HighlightsAndShadows shader (TransparentSceneAnchor.mat). Silent-failure heavy — the most common gotcha is the URP Renderer asset's Transparent Receive Shadows flag must be ON, otherwise shadows never appear on the floor.
For setup, URP/EffectMesh/passthrough requirements, common failure modes, and editor verification, see references/passthrough-relighting.md.
Scripts/DestructibleGlobalMeshSpawner.cs)Segments the global mesh into breakable fragments using Voronoi-based segmentation.
Key props: GlobalMeshMaterial, PointsPerUnitX/Y/Z (density), ReservedTop/Bottom (unbreakable zones)
Scripts/SpaceMapGPU.cs)GPU-computed 2D top-down distance field of the room layout. Outputs to RenderTexture.
Key props: TextureDimension, MapGradient; Methods: GetSpaceMap() → RenderTexture, GetColorAtPosition(Vector3) → Color
Sets shader global _SpaceMapProjectionViewMatrix for UV calculation.
Scripts/RoomGuardian.cs)Fades a boundary material as the user approaches room walls. Sets _GuardianFade float on the material.
Key props: GuardianMaterial, GuardianDistance (meters, default 1.0)
Scripts/SceneNavigation.cs)Generates Unity NavMesh from scene geometry. Requires com.unity.ai.navigation.
Key props: NavigableSurfaces (SceneLabels), Agents (List<NavMeshAgent>), AgentRadius
Events: OnNavMeshInitialized
For more info see references/scene-navigation.md.
Scripts/EnvironmentRaycastManager.cs)Depth API raycasting against the physical environment without requiring pre-scanned scene data. Requires Quest 3+. Namespace: Meta.XR.
Check EnvironmentRaycastManager.IsSupported before use.
Methods: Raycast(Ray, out EnvironmentRaycastHit, float), PlaceBox(Ray, Vector3, Vector3, out EnvironmentRaycastHit), CheckBox(Vector3, Vector3, Quaternion)
Scripts/PassthroughCameraAccess.cs)Raw passthrough camera image access. Requires horizonos.permission.HEADSET_CAMERA in AndroidManifest. Quest 3+ only. Namespace: Meta.XR.
Key props: CameraPosition (Left/Right), RequestedResolution, MaxFramerate, TargetMaterial
Methods: GetTexture() → Texture, GetColors() → NativeArray<Color32> (expensive), GetCameraPose() → Pose, ViewportPointToRay(), WorldToViewportPoint()
Struct CameraIntrinsics: FocalLength, PrincipalPoint, SensorResolution, LensOffset
Scripts/BuildingBlocks/InstantContentPlacement/)Building block scripts using EnvironmentRaycastManager for device-scan-free placement:
SpaceLocator (abstract): TryLocateSpace(out Pose), OnSpaceLocateCompleted event, PreferredSurfaceOrientationPointAndLocate: raycast from a Transform, Locate() methodGrabAndLocate: grab-and-release placement via Interaction SDKPlaceWithAnchor: creates OVRSpatialAnchor at placed position to prevent driftvoid Start()
{
MRUK.Instance.RegisterSceneLoadedCallback(OnSceneLoaded);
}
void OnSceneLoaded()
{
var room = MRUK.Instance.GetCurrentRoom();
// Scene is ready — query anchors, spawn objects, etc.
}RegisterSceneLoadedCallback fires immediately if the scene is already loaded — safe to call at any time.
var room = MRUK.Instance.GetCurrentRoom();
foreach (var anchor in room.Anchors)
{
if (anchor.HasAnyLabel(MRUKAnchor.SceneLabels.TABLE | MRUKAnchor.SceneLabels.STORAGE))
{
Debug.Log($"{anchor.Label} at {anchor.GetAnchorCenter()}");
}
}var room = MRUK.Instance.GetCurrentRoom();
var ray = new Ray(origin, direction);
if (room.Raycast(ray, Mathf.Infinity, out var hit, out var anchor))
{
Debug.Log($"Hit {anchor.Label} at {hit.point}, normal {hit.normal}");
}Set MRUK.SceneSettings.DataSource to DeviceWithPrefabFallback and assign room prefabs in SceneSettings.RoomPrefabs. On device, real scene data is used. In editor (no device), prefab rooms load automatically. The package includes ~50 sample room prefabs under Core/Rooms/Prefabs/ (Bedroom, LivingRoom, Office, LargeScale).
com.meta.xr.mrutilitykit packageOVRCameraRig is in the sceneMRUK GameObject with the MRUK component to the sceneSceneSettings.DataSource (use DeviceWithPrefabFallback for development)horizonos.permission.HEADSET_CAMERA to AndroidManifest and regenerate via OVRManifestPreprocessor.GenerateOrUpdateAndroidManifest(true) — silentMode: true is required, or the generator opens a modal dialog that blocks the request. See hz-unity-meta-core-sdk for the full manifest workflow.unity-cliMRUK setup is Editor-only C#. Run it against an open Editor rather than hand-editing scene or settings files:
unity status --format json # look for state "ready"
unity command run_script --file AgentScripts/SetupMRUK.cs --entry SetupMRUK.Run --format jsonKeep the .cs outside Assets/ (path relative to the project root) so writing it triggers no
import or domain reload, and add --dry_run true to compile-check before mutating anything.
run_script references every loaded assembly, so the Meta.XR.MRUtilityKit namespace is directly
referenceable — no reflection:
// AgentScripts/SetupMRUK.cs
using Meta.XR.MRUtilityKit;
public static class SetupMRUK
{
public static string Run()
{
var room = MRUK.Instance.GetCurrentRoom();
return room == null ? "no current room" : $"room: {room.name}";
}
}using System.Reflection; and BindingFlags overloads both work here, so reflection is only for
genuinely non-public members.run_script,
never Task.Wait() on the main thread.EditorSceneManager.MarkSceneDirty + SaveScene, or
unity command save_scene, then read the value back.MRUK is a runtime system, so most of it only produces data in Play mode. Drive that from the CLI:
unity command clear_console --format json
unity command editor_play --format json # blocks until play mode is live
unity command get_console_logs --severity error --format json
unity command editor_stop --format jsonGive the scene time before stopping. editor_play returns once play mode is live, not once MRUK
has finished — LoadSceneFromDevice / LoadSceneFromPrefab return a Task, and EffectMesh,
SceneNavigation and friends only run off SceneLoadedEvent. Stopping straight away truncates all
of it. Poll get_console_logs (or a run_script reading MRUK.Instance.IsInitialized) until the
scene has loaded, and only then read errors and stop.
Connecting, --project-path, and Safe Mode recovery are in the unity-cli skill. The
reflection-based MCP version is in references/unity-mcp-fallback.md.
If the metavr MCP server is available, use the mcp__metavr__vr_docs_search and mcp__metavr__vr_docs_get_page tools to verify current API details, as Meta SDK documentation updates frequently. Use mcp__metavr__vr_api_search with engine='unity' to look up exact method signatures for MRUK, MRUKRoom, MRUKAnchor, and other classes. The same backend is reachable from the CLI: metavr docs search "<topic>" and metavr docs api-search "<Class.method>".
© meta-quest, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in skills/hz-unity-meta-mixed-reality-utility-kit of meta-quest/agentic-tools.
Open the folder on GitHubat commit 3a8553d
Hz Unity Meta Mixed Reality Utility Kit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Hz Unity Meta Mixed Reality Utility Kit this skillmeta-quest/agentic-tools | 215 | — | ~5.3k | Automated safety check: Pass | Apache-2.0 | |
| Sales EnablementAvdLee/RocketSimApp | 806 | 10 repos | ~3.5k | Automated safety check: Pass | Custom licence | |
| Deep Researchsanjay3290/ai-skills | 432 | 9 repos | ~683 | Automated safety check: Notes | Apache-2.0 | |
| Gpt Image2 PptJuneYaooo/gpt-image2-ppt-skills | 1.3k | — | ~8.9k | Automated safety check: Notes | Apache-2.0 | |
| McKinsey-Style PPT Designlikaku/Mck-ppt-design-skill | 297 | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Ppt Agentsunbigfly/ppt-agent-skills | 908 | — | ~5.6k | Automated safety check: Pass | MIT |
AvdLee/RocketSimApp
When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts.
sanjay3290/ai-skills
Execute autonomous multi-step research using Google Gemini Deep Research Agent.
JuneYaooo/gpt-image2-ppt-skills
Generate visually striking PPT slides via OpenAI's gpt-image-2 -- use any style in styles/<collection/STYLEID.md or mimic a user-supplied .pptx template; outputs high-res slide PNGs and a 16:9 .pptx.
likaku/Mck-ppt-design-skill
Builds consultant-style PowerPoint decks from scratch with the MckEngine python-pptx wrapper, through a five-stage flow with scripted quality gates.
sunbigfly/ppt-agent-skills
专业 PPT 演示文稿全流程 AI 生成助手。模拟顶级 PPT 设计公司的完整工作流(需求调研到资料搜集到大纲策划到策划稿到设计稿),输出高质量 HTML 格式演示文稿。当用户提到制作 PPT、做演示文稿、做 slides、做幻灯片、做汇报材料、做培训课件、做路演 deck、做产品介绍页面时触发此技能。即使用户只说"帮我做个关于 X 的介绍"或"我要给老板汇报…
moshuying/pitchcraft
Structures kickoffs, status updates, wrap-ups, investor pitches and solution selling on one five-part persuasion framework, with a pre-submit checklist.
meta-quest/agentic-tools
Guides porting existing Android 2D apps to Meta VR and Horizon OS — input adaptation, panel layout, and design requirements.
meta-quest/agentic-tools
Upgrades Meta VR apps to newer Horizon OS SDK versions — migration guides, deprecated API replacements, changelog.
meta-quest/agentic-tools
Builds WebXR experiences for Meta VR and Horizon OS using the Immersive Web SDK (IWSDK) — ECS architecture, Three.js integration, spatial UI.
meta-quest/agentic-tools
Build multi-window Meta Horizon OS experiences with the MetaVrx Layout SDK in Jetpack Compose or React Native.
meta-quest/agentic-tools
Scaffolds new Meta VR and Horizon OS projects after the build path is selected — Standard Android, Meta Spatial SDK, Unity, Unreal, or WebXR.
meta-quest/agentic-tools
Analyzes Meta VR and Horizon OS VR performance using Perfetto traces — frame timing, CPU/GPU bottlenecks, render pass analysis.
Categories
Meta XR Mixed Reality Utility Kit (MRUK) (com.meta.xr.mrutilitykit) for Unity XR development. Hz Unity Meta Mixed Reality Utility Kit is an agent skill from meta-quest/agentic-tools.mrutilitykit) for Unity XR development.
Hz Unity Meta Mixed Reality Utility Kit fits situations like: working with Scene API data (rooms; spawning prefabs on scene anchors; placing virtual objects in the real world; world locking to prevent anchor drift.
Run `npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a claude-code`. Or copy the skill folder (skills/hz-unity-meta-mixed-reality-utility-kit in meta-quest/agentic-tools) into .claude/skills/hz-unity-meta-mixed-reality-utility-kit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a codex`. Or copy the skill folder (skills/hz-unity-meta-mixed-reality-utility-kit in meta-quest/agentic-tools) into .agents/skills/hz-unity-meta-mixed-reality-utility-kit in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add meta-quest/agentic-tools --skill hz-unity-meta-mixed-reality-utility-kit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hz-unity-meta-mixed-reality-utility-kit, .gemini/skills/hz-unity-meta-mixed-reality-utility-kit, .github/skills/hz-unity-meta-mixed-reality-utility-kit and .opencode/skills/hz-unity-meta-mixed-reality-utility-kit in your project.
SKILL.md names no scripts, command-line tools or credentials: Hz Unity Meta Mixed Reality Utility Kit is instructions for the agent only.
SKILL.md names 2 domains. As links in the text: developers.meta.com and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Hz Unity Meta Mixed Reality Utility Kit is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.3k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Hz Unity Meta Mixed Reality Utility Kit: Sales Enablement (AvdLee/RocketSimApp, 806 stars), Deep Research (sanjay3290/ai-skills, 432 stars), Gpt Image2 Ppt (JuneYaooo/gpt-image2-ppt-skills, 1.3k stars) and McKinsey-Style PPT Design (likaku/Mck-ppt-design-skill, 297 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
meta-quest (a GitHub organization) maintains it in meta-quest/agentic-tools, which has 215 GitHub stars. The repository holds 34 skills in this directory. The repository was last updated on September 24, 2026.
Source: meta-quest/agentic-tools on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.