pmndrs/xr · Archived

pmndrs-xr

Build, modify, debug, or validate XR, AR, VR, spatial interaction, pointer, controller, hand-tracking, hit-test, teleportation, layer, anchor, uikit, and handle-based React Three Fiber apps using @react-three/xr, @react-three/handle, and @react-three/uikit.

First seen May 29, 2026

Installation

$ npx skills add pmndrs/xr --skill pmndrs-xr

Summary

  • Build, modify, debug, or validate XR, AR, VR, spatial interaction, pointer, controller, hand-tracking, hit-test, teleportation, layer, anchor, uikit, and handle-based React Three Fiber apps using @react-three/xr, @react-three/handle, and @react-three/uikit.
  • Use when working on immersive WebXR experiences, R3F-to-XR conversions, XR games, spatial tools, or XR validation/test harnesses.

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 2.6K
License LICENSE
Default branch main
Open issues 46
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,693 B
  • docs SUMMARY.md 404 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 3 installs

SKILL.md

PMNDRS XR

Use this skill for WebXR experiences built with React Three Fiber and the React Three XR/uikit/handle packages.

Core Workflow

  1. Inspect the app structure and package manager before editing.
  2. If the workspace is empty, scaffold a minimal runnable vertical slice first: package scripts, src/main, src/App, styles, and vitexec/play. Get that slice building before expanding the scene.
  3. Use the React Three Fiber architecture: @react-three/xr plus <Canvas> and <XR store={store}>.
  4. Enter AR/VR from a real user gesture such as a DOM button calling store.enterAR() or store.enterVR().
  5. Put immersive status, score, checklist, report, and controls inside the 3D/WebXR scene. DOM is acceptable for the initial session-entry button and optional desktop fallback, not as headset UI.
  6. Build interactions through real spatial input: pointer events when appropriate, documented handle components, controller/hand pose, near interaction, controller select events, hit-test, or anchors.
  7. For editor/configurator/assembly tasks, use visible handles/gizmos or grabbable affordances and prove drag/translate/rotate/snap behavior through object transform changes.
  8. Validate with a live XR walkthrough when the task is an XR experience. The passing path should enter an emulated XR session, move the headset/viewer, aim controllers, interact with visible in-scene targets, record video, and assert view composition.

Reference Routing

Read the smallest relevant reference first:

  • Architecture and package choice: [references/architecture.md](references/architecture.md)
  • In-scene UI and visual quality: [references/ui-and-visual-quality.md](references/ui-and-visual-quality.md)
  • Domain fit for games, training, simulation, commerce, and tools: [references/use-case-patterns.md](references/use-case-patterns.md)
  • Spatial interaction patterns: [references/interactions.md](references/interactions.md)
  • XR validation with vitexec/IWER: [references/validation.md](references/validation.md)
  • Dependency/version pitfalls: [references/dependencies.md](references/dependencies.md)

Generated upstream docs are also bundled:

  • Getting started: references/docs/getting-started/introduction.md
  • Store/session options: references/docs/tutorials/store.md
  • Interactions: references/docs/tutorials/interactions.md
  • Origin/teleport: references/docs/tutorials/origin.md, references/docs/tutorials/teleport.md
  • AR features: references/docs/tutorials/anchors.md, dom-overlay.md, hit-test.md, object-detection.md
  • Handles: references/docs/handles/introduction.md
  • Full index: references/index.md

If unsure which page applies, search references:

rg -n "createXRStore|TeleportTarget|XRHitTest|pointerEventsType|XROrigin|DefaultXRController|Handle|uikit" path/to/skill/references

Quality Bar

  • Build the actual experience as the first screen, not a landing page.
  • For complex XR apps, avoid long up-front design or broad node_modules archaeology. Read only the specific bundled reference needed for the immediate API choice, then implement and validate the smallest real path before adding polish.
  • Avoid placeholder-cube demos. Use domain-specific environment context, recognizable objects, lighting/material variation, spatial affordances, and visible feedback.
  • Keep desktop fallback useful, but do not let it become the proof for XR behavior.
  • Do not weaken validation to pass. If controller input misses, fix target geometry, ray pose, readiness, occlusion, or event handling.
  • Use patch/file-edit operations for generated JSX/TS/HTML/vitexec files. Do not use shell heredocs for code files.

Before Finishing

Confirm the result has:

  • createXRStore and user-facing session entry.
  • <XR store={store}> around scene content.
  • In-scene XR UI for immersive status/score/report/controls.
  • Real pointer/controller/handle/hit-test interaction, not validation-only state mutation.
  • For manipulation tasks, before/after transform assertions for dragged, grabbed, rotated, scaled, or snapped objects.
  • A build plus browser/XR validation covering the main path.
  • Recording or screenshots plus logs proving active XR, controller input, viewer movement, and readable target composition.