[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KH2CKB23C7YFAWDHEPP57W":3,"skill-same:01M6KH2CKB23C7YFAWDHEPP57W":90},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":62,"commitSha":63,"skillDirectory":64,"forksCount":65,"repositoryHtmlUrl":66,"repositoryHomepageUrl":6,"ownerHtmlUrl":67,"ownerBlogUrl":6,"ownerDescription":68,"updatedAt":69,"install":70,"resources":83},"01M6KH2CKB23C7YFAWDHEPP57W","unity-xr",null,"XR Interaction Toolkit (XRI) skills for VR\u002FAR development. Use when users want to set up XR rigs, add grab\u002Fsocket\u002Fray interactors, attach grab interactables, configure teleportation, continuous locomotion, snap\u002Fsmooth turn, XR-aware Canvas\u002FEventSystem, haptics, InteractionLayerMask, or diagnose XR scenes. Triggers: XR, XRI, XR Interaction Toolkit, VR, AR, XR Origin, XR Rig, XRRayInteractor, XRDirectInteractor, XRSocketInteractor, XRGrabInteractable, XRSimpleInteractable, TeleportationProvider, TeleportationArea, TeleportationAnchor, ContinuousMoveProvider, SnapTurnProvider, ContinuousTurnProvider, XRUIInputModule, TrackedPoseDriver, grab, teleport, hand tracking, controller, interactor, interactable, locomotion, haptics, InteractionLayerMask, 抓取, 传送, 手柄, 头盔, 虚拟现实, 增强现实, XR 交互, XR 设置. Requires com.unity.xr.interaction.toolkit; reflection-based bridge supports XRI 2.x (Unity 2022) and XRI 3.x (Unity 6+). Missing-package calls return a diagnostic stub.","dyCuong03\u002Funity-agent-team","dyCuong03","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F137050365?v=4","01M6KFXC85HQHXZJC2VC1KY6EZ","CuongND","01M6KFXCCHP6CD5MTA8NECJC36",8,"MIT","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Funity-skills\u002Fskills\u002Fxr\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"unity xr","unity","交互","at","socket","hand","vr","snap","teleport","interaction","canvas","ar","attach","up","bridge","configure","SET","controller","server","code","2026-11-10 10:12:30",false,"---\nname: unity-xr\ndescription: \"XR Interaction Toolkit (XRI) skills for VR\u002FAR development. Use when users want to set up XR rigs, add grab\u002Fsocket\u002Fray interactors, attach grab interactables, configure teleportation, continuous locomotion, snap\u002Fsmooth turn, XR-aware Canvas\u002FEventSystem, haptics, InteractionLayerMask, or diagnose XR scenes. Triggers: XR, XRI, XR Interaction Toolkit, VR, AR, XR Origin, XR Rig, XRRayInteractor, XRDirectInteractor, XRSocketInteractor, XRGrabInteractable, XRSimpleInteractable, TeleportationProvider, TeleportationArea, TeleportationAnchor, ContinuousMoveProvider, SnapTurnProvider, ContinuousTurnProvider, XRUIInputModule, TrackedPoseDriver, grab, teleport, hand tracking, controller, interactor, interactable, locomotion, haptics, InteractionLayerMask, 抓取, 传送, 手柄, 头盔, 虚拟现实, 增强现实, XR 交互, XR 设置. Requires com.unity.xr.interaction.toolkit; reflection-based bridge supports XRI 2.x (Unity 2022) and XRI 3.x (Unity 6+). Missing-package calls return a diagnostic stub.\"\nplatforms: [unity-editor, claude-code]\ntask-categories: [xr, vr-ar, editor-automation]\nuse-when: |-\n  Load when the task requires: XR Interaction Toolkit (XRI) skills for VR\u002FAR development. Use when users want to set up XR rigs, add grab\u002Fsocket\u002Fray interactors, attach grab interactables, configure teleportation, continuous locomotion, snap\u002Fsmooth turn, XR-aware Canvas\u002FEventSystem, haptics, InteractionLayerMask, or diagnose XR scenes. Unity Editor must be running with the unity-skills REST server reachable at http:\u002F\u002Flocalhost:8090.\ndo-not-use-when: |-\n  Do not load when Unity Editor is not running locally. Do not load when unity-skills REST server is unreachable at http:\u002F\u002Flocalhost:8090.\nmetadata:\n  source: https:\u002F\u002Fgithub.com\u002FBesty0728\u002FUnity-Skills\n  version: 1.9.2\n  tier: 2\n\n---\n\n# Unity XR Interaction Toolkit Skills\n\nUse this module for XR Interaction Toolkit setup and configuration. All `xr_*` skills are reflection-based and support XRI 2.x on Unity 2022 and XRI 3.x on Unity 6+.\n\n> **Requires**: `com.unity.xr.interaction.toolkit`.\n> **Hard rule**: Read this file before the first `xr_*` call in a session. Wrong property names can fail silently because the bridge is reflection-based.\n\n## Guardrails\n\n**Operating Mode** (v1.9 three-tier):\n- **Approval** (default): query\u002Flist\u002Finfo skills (`xr_check_setup`, `xr_get_scene_report`, `xr_list_interactors`, `xr_list_interactables`) run directly. Create\u002Fmodify skills are FullAuto — on `MODE_RESTRICTED`, run the grant protocol; a successful `\u002Fpermission\u002Fgrant` executes the skill server-side and returns the result in the same response.\n- **Auto** \u002F **Bypass**: SemiAuto and FullAuto run directly.\n- This module contains **no** Delete \u002F PlayMode \u002F Reload \u002F `RiskLevel=\"high\"` skills, so nothing is auto-classified as forbidden — every skill is reachable via grant.\n- When `com.unity.xr.interaction.toolkit` is missing, every `xr_*` skill returns the `NoXRI()` install instruction instead of executing.\n- **Reflection-sensitive**: property names on XRI components must match XRI 2.x\u002F3.x exactly. A wrong field name on `xr_configure_interactable` \u002F `xr_configure_haptics` \u002F `xr_configure_interaction_layers` is silently ignored. Load `API_REFERENCE.md` before issuing detailed property edits.\n\n**DO NOT** (common hallucinations):\n- `XRHand`, `XRPlayer`, `XRTeleporter`, `GrabInteractor`, `VRController`, `XRLocomotion`, and `XRManager` are not the runtime classes you want here\n- `interactable.OnGrab()` \u002F `OnRelease()` are not the XRI event model -> use `selectEntered` \u002F `selectExited`\n- `controller.vibrate()` is not the documented route here -> configure haptics through `xr_configure_haptics`\n- Do not assume physics Layer or Tag replaces `InteractionLayerMask`\n- Do not guess component property names. Load `API_REFERENCE.md` before setting detailed XR component properties\n\n**Correct class names to anchor on**:\n- `XRInteractionManager`\n- `XROrigin`\n- `XRRayInteractor`\n- `XRDirectInteractor`\n- `XRSocketInteractor`\n- `XRGrabInteractable`\n- `XRSimpleInteractable`\n- `TeleportationProvider`\n- `TeleportationArea`\n- `TeleportationAnchor`\n- `ContinuousMoveProvider`\n- `SnapTurnProvider`\n- `ContinuousTurnProvider`\n- `TrackedDeviceGraphicRaycaster`\n- `XRUIInputModule`\n- `TrackedPoseDriver`\n\n**Routing**:\n- For non-XR Canvas UI creation -> use `ui`\n- For architecture or lifecycle decisions in XR gameplay code -> load advisory modules such as `architecture`, `patterns`, `async`, or `scriptdesign`\n- For exact component property names and full workflow examples -> load `API_REFERENCE.md`\n\n## Skills\n\n### Setup and Diagnostics\n\n| Skill | Use | Key parameters |\n|-------|-----|----------------|\n| `xr_check_setup` | Validate XR package, rig, managers, and scene prerequisites | `verbose?` |\n| `xr_setup_rig` | Create XR Origin + camera + controllers | `name`, `cameraYOffset?` |\n| `xr_setup_interaction_manager` | Add or find manager | none |\n| `xr_setup_event_system` | Replace\u002Fadd XR UI input stack | none |\n| `xr_get_scene_report` | Report scene-side XR status | none |\n\n### Interactors and Interactables\n\n| Skill | Use | Key parameters |\n|-------|-----|----------------|\n| `xr_add_ray_interactor` | Remote pointing \u002F ray interaction | `name`, `maxDistance?`, `lineType?` |\n| `xr_add_direct_interactor` | Close-range hand grab | `name`, `radius?` |\n| `xr_add_socket_interactor` | Snap-to slot | `name`, `showHoverMesh?`, `recycleDelay?` |\n| `xr_add_grab_interactable` | Rigidbody + collider + grab config | `name`, `movementType?`, `throwOnDetach?` |\n| `xr_add_simple_interactable` | Hover\u002Fselect without grab | `name` |\n| `xr_configure_interactable` | Fine-tune interactable behavior | target + changed fields only |\n| `xr_list_interactors` | List all scene interactors | none |\n| `xr_list_interactables` | List all scene interactables | none |\n\n### Locomotion and XR UI\n\n| Skill | Use | Key parameters |\n|-------|-----|----------------|\n| `xr_setup_teleportation` | Add teleport provider to XR Origin | none |\n| `xr_add_teleport_area` | Mark a surface as teleportable | `name`, `matchOrientation?` |\n| `xr_add_teleport_anchor` | Create fixed teleport destination | `name`, `x\u002Fy\u002Fz`, `rotY?`, `matchOrientation?` |\n| `xr_setup_continuous_move` | Add stick locomotion | `moveSpeed?`, `enableStrafe?`, `enableFly?` |\n| `xr_setup_turn_provider` | Add snap or smooth turn | `turnType`, `turnAmount?`, `turnSpeed?` |\n| `xr_setup_ui_canvas` | Convert Canvas for XR interaction | `name` |\n\n### Feedback and Filtering\n\n| Skill | Use | Key parameters |\n|-------|-----|----------------|\n| `xr_configure_haptics` | Set hover\u002Fselect vibration | `name`, intensities, durations |\n| `xr_add_interaction_event` | Wire interaction callback to target method | `name`, `eventType`, `targetName`, `targetMethod` |\n| `xr_configure_interaction_layers` | Set InteractionLayerMask | `name`, `layers`, `isInteractor` |\n\n## Quick Start\n\n```python\nimport unity_skills as u\n\nu.call_skill(\"xr_check_setup\")\nu.call_skill(\"xr_setup_rig\", name=\"XR Origin\")\nu.call_skill(\"xr_add_ray_interactor\", name=\"Right Controller\")\nu.call_skill(\"xr_add_direct_interactor\", name=\"Left Controller\")\nu.call_skill(\"xr_setup_teleportation\")\nu.call_skill(\"xr_setup_turn_provider\", turnType=\"Snap\", turnAmount=45)\nu.call_skill(\"xr_add_grab_interactable\", name=\"MyCube\", movementType=\"VelocityTracking\")\n```\n\n## Workflow Summary\n\n### Rig Setup\n\n1. Run `xr_check_setup`.\n2. Create the rig with `xr_setup_rig`.\n3. Ensure XR UI input exists with `xr_setup_event_system`.\n4. Add at least one interactor per controller.\n\n### Grab Setup\n\n- Direct hand grab: `xr_add_direct_interactor` + `xr_add_grab_interactable`\n- Distance grab: `xr_add_ray_interactor` + `xr_add_grab_interactable`\n- Socket placement: `xr_add_socket_interactor` + grabbable object\n\n`movementType` defaults matter:\n- `VelocityTracking`: best general-purpose physical grab\n- `Kinematic`: use for handles\u002Ftools that should not get stuck\n- `Instantaneous`: best for precise remote grab\n\n### Locomotion Setup\n\n- Teleport: `xr_setup_teleportation` + `xr_add_ray_interactor` + `xr_add_teleport_area`\u002F`xr_add_teleport_anchor`\n- Continuous locomotion: `xr_setup_continuous_move`\n- Turn: `xr_setup_turn_provider`\n\nComfort default: snap turn + moderate move speed (`~2.0 m\u002Fs`).\n\n### XR UI\n\n1. Convert Canvas with `xr_setup_ui_canvas`\n2. Ensure `xr_setup_event_system`\n3. Add a ray interactor on the controller that should click UI\n\n## Collider Configuration Matrix\n\nThis is the most important XR anti-hallucination table in the repo.\n\n| Component | Collider required | `isTrigger` | Recommended collider | Reason |\n|----------|-------------------|-------------|----------------------|--------|\n| `XRDirectInteractor` | Yes | **True** | SphereCollider (`0.1-0.25`) | Overlap detection |\n| `XRRayInteractor` | No | - | None | Uses raycasts |\n| `XRSocketInteractor` | Yes | **True** | SphereCollider (`0.1-0.3`) | Snap zone |\n| `XRGrabInteractable` | Yes | **False** | BoxCollider or convex MeshCollider | Physics + ray target |\n| `XRSimpleInteractable` | Yes | **False** | BoxCollider | Selection detection |\n| `TeleportationArea` | Yes | **False** | MeshCollider or BoxCollider | Surface raycast target |\n| `TeleportationAnchor` | Yes | **False** | Thin BoxCollider | Point raycast target |\n\nCritical rules:\n1. `XRGrabInteractable` needs a `Rigidbody`.\n2. A grabbable collider must **not** be trigger.\n3. A direct interactor collider **must** be trigger.\n4. Dynamic mesh colliders must be convex.\n5. Socket colliders should be trigger-only overlap zones.\n\n## Version Compatibility\n\n| Topic | XRI 2.x | XRI 3.x |\n|------|---------|---------|\n| Main namespace style | root namespace | split sub-namespaces |\n| Rig type | `XROrigin` | `XROrigin` |\n| Locomotion core | `LocomotionSystem` | `LocomotionMediator` |\n| Controller type | `ActionBasedController` | `ActionBasedController` |\n| Bridge behavior | Reflection helper falls back automatically | Reflection helper prefers 3.x first |\n\n## Important Notes\n\n1. Scenes should normally have exactly one `XRInteractionManager`.\n2. Most locomotion skills assume an `XROrigin` already exists.\n3. Package installation or reconfiguration can trigger Domain Reload. Wait before retrying XR calls.\n4. Use `InteractionLayerMask` for interactor\u002Finteractable filtering.\n5. For custom XR scripts, prefer XRI lifecycle hooks and events over `Update()` polling when possible.\n\n## Minimal Example\n\n```python\nimport unity_skills as u\n\nu.call_skill(\"xr_setup_rig\", name=\"XR Origin\", cameraYOffset=1.36)\nu.call_skill(\"xr_setup_event_system\")\nu.call_skill(\"xr_add_ray_interactor\", name=\"Right Controller\", maxDistance=30, lineType=\"StraightLine\")\nu.call_skill(\"xr_add_grab_interactable\", name=\"Tool\", movementType=\"VelocityTracking\", throwOnDetach=True)\nu.call_skill(\"xr_configure_haptics\", name=\"Right Controller\", selectIntensity=0.7, selectDuration=0.15)\n```\n\n## Exact Signatures\n\nExact names, parameters, defaults, and returns are defined by `GET \u002Fskills\u002Fschema` or `unity_skills.get_skill_schema()`, not by this file.\nBefore configuring XR component properties in detail, load `API_REFERENCE.md`. XR property names are reflection-sensitive.\n","# Unity XR Interaction Toolkit Skills\n\nUse this module for XR Interaction Toolkit setup and configuration. All `xr_*` skills are reflection-based and support XRI 2.x on Unity 2022 and XRI 3.x on Unity 6+.\n\n> **Requires**: `com.unity.xr.interaction.toolkit`.\n> **Hard rule**: Read this file before the first `xr_*` call in a session. Wrong property names can fail silently because the bridge is reflection-based.\n\n## Guardrails\n\n**Operating Mode** (v1.9 three-tier):\n- **Approval** (default): query\u002Flist\u002Finfo skills (`xr_check_setup`, `xr_get_scene_report`, `xr_list_interactors`, `xr_list_interactables`) run directly. Create\u002Fmodify skills are FullAuto — on `MODE_RESTRICTED`, run the grant protocol; a successful `\u002Fpermission\u002Fgrant` executes the skill server-side and returns the result in the same response.\n- **Auto** \u002F **Bypass**: SemiAuto and FullAuto run directly.\n- This module contains **no** Delete \u002F PlayMode \u002F Reload \u002F `RiskLevel=\"high\"` skills, so nothing is auto-classified as forbidden — every skill is reachable via grant.\n- When `com.unity.xr.interaction.toolkit` is missing, every `xr_*` skill returns the `NoXRI()` install instruction instead of executing.\n- **Reflection-sensitive**: property names on XRI components must match XRI 2.x\u002F3.x exactly. A wrong field name on `xr_configure_interactable` \u002F `xr_configure_haptics` \u002F `xr_configure_interaction_layers` is silently ignored. Load `API_REFERENCE.md` before issuing detailed property edits.\n\n**DO NOT** (common hallucinations):\n- `XRHand`, `XRPlayer`, `XRTeleporter`, `GrabInteractor`, `VRController`, `XRLocomotion`, and `XRManager` are not the runtime classes you want here\n- `interactable.OnGrab()` \u002F `OnRelease()` are not the XRI event model -> use `selectEntered` \u002F `selectExited`\n- `controller.vibrate()` is not the documented route here -> configure haptics through `xr_configure_haptics`\n- Do not assume physics Layer or Tag replaces `InteractionLayerMask`\n- Do not guess component property names. Load `API_REFERENCE.md` before setting detailed XR component properties\n\n**Correct class names to anchor on**:\n- `XRInteractionManager`\n- `XROrigin`\n- `XRRayInteractor`\n- `XRDirectInteractor`\n- `XRSocketInteractor`\n- `XRGrabInteractable`\n- `XRSimpleInteractable`\n- `TeleportationProvider`\n- `TeleportationArea`\n- `TeleportationAnchor`\n- `ContinuousMoveProvider`\n- `SnapTurnProvider`\n- `ContinuousTurnProvider`\n- `TrackedDeviceGraphicRaycaster`\n- `XRUIInputModule`\n- `TrackedPoseDriver`\n\n**Routing**:\n- For non-XR Canvas UI creation -> use `ui`\n- For architecture or lifecycle decisions in XR gameplay code -> load advisory modules such as `architecture`, `patterns`, `async`, or `scriptdesign`\n- For exact component property names and full workflow examples -> load `API_REFERENCE.md`\n\n## Skills\n\n### Setup and Diagnostics\n\n| Skill | Use | Key parameters |\n|-------|-----|----------------|\n| `xr_check_setup` | Validate XR package, rig, managers, and scene prerequisites | `verbose?` |\n| `xr_setup_rig` | Create XR Origin + camera + controllers | `name`, `cameraYOffset?` |\n| `xr_setup_interaction_manager` | Add or find manager | none |\n| `xr_setup_event_system` | Replace\u002Fadd XR UI input stack | none |\n| `xr_get_scene_report` | Report scene-side XR status | none |\n\n### Interactors and Interactables\n\n| Skill | Use | Key parameters |\n|-------|-----|----------------|\n| `xr_add_ray_interactor` | Remote pointing \u002F ray interaction | `name`, `maxDistance?`, `lineType?` |\n| `xr_add_direct_interactor` | Close-range hand grab | `name`, `radius?` |\n| `xr_add_socket_interactor` | Snap-to slot | `name`, `showHoverMesh?`, `recycleDelay?` |\n| `xr_add_grab_interactable` | Rigidbody + collider + grab config | `name`, `movementType?`, `throwOnDetach?` |\n| `xr_add_simple_interactable` | Hover\u002Fselect without grab | `name` |\n| `xr_configure_interactable` | Fine-tune interactable behavior | target + changed fields only |\n| `xr_list_interactors` | List all scene interactors | none |\n| `xr_list_interactables` | List all scene interactables | none |\n\n### Locomotion and XR UI\n\n| Skill | Use | Key parameters |\n|-------|-----|----------------|\n| `xr_setup_teleportation` | Add teleport provider to XR Origin | none |\n| `xr_add_teleport_area` | Mark a surface as teleportable | `name`, `matchOrientation?` |\n| `xr_add_teleport_anchor` | Create fixed teleport destination | `name`, `x\u002Fy\u002Fz`, `rotY?`, `matchOrientation?` |\n| `xr_setup_continuous_move` | Add stick locomotion | `moveSpeed?`, `enableStrafe?`, `enableFly?` |\n| `xr_setup_turn_provider` | Add snap or smooth turn | `turnType`, `turnAmount?`, `turnSpeed?` |\n| `xr_setup_ui_canvas` | Convert Canvas for XR interaction | `name` |\n\n### Feedback and Filtering\n\n| Skill | Use | Key parameters |\n|-------|-----|----------------|\n| `xr_configure_haptics` | Set hover\u002Fselect vibration | `name`, intensities, durations |\n| `xr_add_interaction_event` | Wire interaction callback to target method | `name`, `eventType`, `targetName`, `targetMethod` |\n| `xr_configure_interaction_layers` | Set InteractionLayerMask | `name`, `layers`, `isInteractor` |\n\n## Quick Start\n\n```python\nimport unity_skills as u\n\nu.call_skill(\"xr_check_setup\")\nu.call_skill(\"xr_setup_rig\", name=\"XR Origin\")\nu.call_skill(\"xr_add_ray_interactor\", name=\"Right Controller\")\nu.call_skill(\"xr_add_direct_interactor\", name=\"Left Controller\")\nu.call_skill(\"xr_setup_teleportation\")\nu.call_skill(\"xr_setup_turn_provider\", turnType=\"Snap\", turnAmount=45)\nu.call_skill(\"xr_add_grab_interactable\", name=\"MyCube\", movementType=\"VelocityTracking\")\n```\n\n## Workflow Summary\n\n### Rig Setup\n\n1. Run `xr_check_setup`.\n2. Create the rig with `xr_setup_rig`.\n3. Ensure XR UI input exists with `xr_setup_event_system`.\n4. Add at least one interactor per controller.\n\n### Grab Setup\n\n- Direct hand grab: `xr_add_direct_interactor` + `xr_add_grab_interactable`\n- Distance grab: `xr_add_ray_interactor` + `xr_add_grab_interactable`\n- Socket placement: `xr_add_socket_interactor` + grabbable object\n\n`movementType` defaults matter:\n- `VelocityTracking`: best general-purpose physical grab\n- `Kinematic`: use for handles\u002Ftools that should not get stuck\n- `Instantaneous`: best for precise remote grab\n\n### Locomotion Setup\n\n- Teleport: `xr_setup_teleportation` + `xr_add_ray_interactor` + `xr_add_teleport_area`\u002F`xr_add_teleport_anchor`\n- Continuous locomotion: `xr_setup_continuous_move`\n- Turn: `xr_setup_turn_provider`\n\nComfort default: snap turn + moderate move speed (`~2.0 m\u002Fs`).\n\n### XR UI\n\n1. Convert Canvas with `xr_setup_ui_canvas`\n2. Ensure `xr_setup_event_system`\n3. Add a ray interactor on the controller that should click UI\n\n## Collider Configuration Matrix\n\nThis is the most important XR anti-hallucination table in the repo.\n\n| Component | Collider required | `isTrigger` | Recommended collider | Reason |\n|----------|-------------------|-------------|----------------------|--------|\n| `XRDirectInteractor` | Yes | **True** | SphereCollider (`0.1-0.25`) | Overlap detection |\n| `XRRayInteractor` | No | - | None | Uses raycasts |\n| `XRSocketInteractor` | Yes | **True** | SphereCollider (`0.1-0.3`) | Snap zone |\n| `XRGrabInteractable` | Yes | **False** | BoxCollider or convex MeshCollider | Physics + ray target |\n| `XRSimpleInteractable` | Yes | **False** | BoxCollider | Selection detection |\n| `TeleportationArea` | Yes | **False** | MeshCollider or BoxCollider | Surface raycast target |\n| `TeleportationAnchor` | Yes | **False** | Thin BoxCollider | Point raycast target |\n\nCritical rules:\n1. `XRGrabInteractable` needs a `Rigidbody`.\n2. A grabbable collider must **not** be trigger.\n3. A direct interactor collider **must** be trigger.\n4. Dynamic mesh colliders must be convex.\n5. Socket colliders should be trigger-only overlap zones.\n\n## Version Compatibility\n\n| Topic | XRI 2.x | XRI 3.x |\n|------|---------|---------|\n| Main namespace style | root namespace | split sub-namespaces |\n| Rig type | `XROrigin` | `XROrigin` |\n| Locomotion core | `LocomotionSystem` | `LocomotionMediator` |\n| Controller type | `ActionBasedController` | `ActionBasedController` |\n| Bridge behavior | Reflection helper falls back automatically | Reflection helper prefers 3.x first |\n\n## Important Notes\n\n1. Scenes should normally have exactly one `XRInteractionManager`.\n2. Most locomotion skills assume an `XROrigin` already exists.\n3. Package installation or reconfiguration can trigger Domain Reload. Wait before retrying XR calls.\n4. Use `InteractionLayerMask` for interactor\u002Finteractable filtering.\n5. For custom XR scripts, prefer XRI lifecycle hooks and events over `Update()` polling when possible.\n\n## Minimal Example\n\n```python\nimport unity_skills as u\n\nu.call_skill(\"xr_setup_rig\", name=\"XR Origin\", cameraYOffset=1.36)\nu.call_skill(\"xr_setup_event_system\")\nu.call_skill(\"xr_add_ray_interactor\", name=\"Right Controller\", maxDistance=30, lineType=\"StraightLine\")\nu.call_skill(\"xr_add_grab_interactable\", name=\"Tool\", movementType=\"VelocityTracking\", throwOnDetach=True)\nu.call_skill(\"xr_configure_haptics\", name=\"Right Controller\", selectIntensity=0.7, selectDuration=0.15)\n```\n\n## Exact Signatures\n\nExact names, parameters, defaults, and returns are defined by `GET \u002Fskills\u002Fschema` or `unity_skills.get_skill_schema()`, not by this file.\nBefore configuring XR component properties in detail, load `API_REFERENCE.md`. XR property names are reflection-sensitive.\n",{"name":5,"metadata":49,"use-when":53,"platforms":54,"description":7,"do-not-use-when":57,"task-categories":58},{"tier":50,"source":51,"version":52},2,"https:\u002F\u002Fgithub.com\u002FBesty0728\u002FUnity-Skills","1.9.2","Load when the task requires: XR Interaction Toolkit (XRI) skills for VR\u002FAR development. Use when users want to set up XR rigs, add grab\u002Fsocket\u002Fray interactors, attach grab interactables, configure teleportation, continuous locomotion, snap\u002Fsmooth turn, XR-aware Canvas\u002FEventSystem, haptics, InteractionLayerMask, or diagnose XR scenes. Unity Editor must be running with the unity-skills REST server reachable at http:\u002F\u002Flocalhost:8090.",[55,56],"unity-editor","claude-code","Do not load when Unity Editor is not running locally. Do not load when unity-skills REST server is unreachable at http:\u002F\u002Flocalhost:8090.",[59,60,61],"xr","vr-ar","editor-automation","main","fe4746b9f07e6c7c2b6d3932002183af9b9f6fa2",".claude\u002Fskills\u002Funity-skills\u002Fskills\u002Fxr",0,"https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team","https:\u002F\u002Fgithub.com\u002FdyCuong03","Game developer","2026-07-25 22:22:25",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add dyCuong03\u002Funity-agent-team --skill unity-xr",{"tool":76,"command":77},"bunx","bunx skills add dyCuong03\u002Funity-agent-team --skill unity-xr",{"tool":79,"command":80},"pnpm","pnpm dlx skills add dyCuong03\u002Funity-agent-team --skill unity-xr","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Funity-skills\u002Fskills\u002Fxr\u002FSKILL.md",true,[84],{"path":85,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":88,"sourceHtmlUrl":89},"API_REFERENCE.md","REFERENCE","参考文档",13253,"https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Funity-skills\u002Fskills\u002Fxr\u002FAPI_REFERENCE.md",[91,116,138,163,181,202],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":44},"01M6KH55FFS00ET877QSMRYGX4","dots-update-groups","How to choose the right ECS system group and ordering so per-frame and per-fixed-step work is deterministic and never races its own readers. Covers InitializationSystemGroup \u002F SimulationSystemGroup \u002F PresentationSystemGroup \u002F FixedStepSimulationSystemGroup \u002F VariableRateSimulationSystemGroup, UpdateBefore \u002F UpdateAfter peer ordering, OrderFirst \u002F OrderLast group-boundary placement, RateManager, and the cross-group ordering trap. Use when adding an ISystem, fixing \"value visible one frame late\" bugs, or coupling simulation to a fixed timestep.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-update-groups\u002FSKILL.md",[],[98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115],"update","dots update groups","boundary","simulation","how","system","choose","work","use","never","peer","deterministic","how to","coupling","ecs","bugs","frame","value",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":44},"01M6KH50PWYEFQDCGYBZ0326F1","dots-transform-patterns","The Entities 1.x transform model — LocalTransform (writable input) vs LocalToWorld (system-owned matrix), Parent\u002FChild hierarchy, reparenting cost, uniform vs non-uniform scale (PostTransformMatrix), and when to opt out with custom transform systems. Use when designing parent\u002Fchild hierarchies, runtime reparenting (mount\u002Fdismount\u002Fsocket), or choosing transform components at the Baker boundary.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-transform-patterns\u002FSKILL.md",[],[123,124,125,126,100,103,127,128,106,129,130,131,132,133,134,28,27,135,136,137],"patterns","transform","dots transform patterns","components","mount","model","cost","runtime","systems","input","with","matrix","child","custom","hierarchy",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":149,"publishedAt":44},"01M6KH4VW4MA14DQW4KQYPFT0S","dots-singleton-patterns","Model cross-system shared configuration and game state as a single-entity component with a strict single-writer contract. Covers RequireForUpdate gating, SystemAPI.GetSingleton \u002F GetSingletonRW \u002F HasSingleton \u002F TryGetSingleton, bake-time vs runtime-created vs ECB-system singletons, the \"exactly one entity\" runtime invariant, and the single-writer rule. Use when designing frame-stable global config, shared mutable state, or any component intended to exist on exactly one entity.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-singleton-patterns\u002FSKILL.md",[144],{"categoryNo":145,"categoryName":146,"taxonomyType":147,"taxonomyTypeDesc":148},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[123,150,151,152,153,154,155,103,128,106,156,157,158,130,159,160,133,114,161,162],"singleton","dots singleton patterns","component","config","state","game","writer","time","shared","contract","as","ecb","gating",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":44},"01M6KH4PR076AYNDZHD63HHWX6","dots-hybrid-bridge","The one-way bridge between DOTS-owned runtime state and Unity-owned presentation. Covers UnityObjectRef for managed asset refs in components, the DOTS-writes \u002F Unity-reads ownership rule, when to use managed IComponentData vs UnityObjectRef vs CompanionComponent, baker-bridge vs runtime-bridge, and SubScene boundary rules. Use when an entity must reference Unity assets (Mesh, Material, AudioClip, ScriptableObject), a MonoBehaviour view must read entity state, or input\u002FUI must trigger ECS work.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-hybrid-bridge\u002FSKILL.md",[],[38,170,171,172,126,154,100,173,174,105,175,176,106,130,177,25,132,178,179,180],"hybrid","dots hybrid bridge","mesh","assets","Rules","read","view","trigger","material","for","managed",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":44},"01M6KH4FGRQ9AP2ND5H5HX4D83","dots-event-driven-ecs","Model one-frame events and external requests in ECS without dual ownership, polling, or persistent state leaks. Covers request-tag pattern with ECB, enableable command components (no structural change), event buffers (IBufferElementData), explicit consumer ownership, one-frame latency rules, and the banned C# event \u002F UnityEvent \u002F static bus anti-patterns. Use when input\u002FUI\u002Fnetwork must trigger ECS work, when a one-frame signal fans out to N consumers (damage, hit, collision), or when state changes must be processed exactly once.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-event-driven-ecs\u002FSKILL.md",[],[188,189,112,190,191,126,192,193,194,128,105,195,196,123,197,198,132,199,200,201],"event driven","driven","event","dots event driven ecs","change","ui","network","command","anti-patterns","pattern","structural","events","static","request",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":217,"publishedAt":44},"01M6KH4BWRGCEBJ8PKCKCSGT33","valid_skill","A complete, well-formed test fixture skill for SkillHub validation testing. Covers basic task routing and code review for Unity projects.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fvalid_skill\u002FSKILL.md",[208,211,214],{"categoryNo":209,"categoryName":210,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":212,"categoryName":213,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":215,"categoryName":216,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[218,219,220,221,222,223,224,43,225,226,227,228,229,230,25,231,179],"valid skill","valid","code review","testing","review","test","routing","validation","projects","fixture skill","task","fixture","basic","complete"]