Skip to content
ar-vr-xr logo

AR / VR / XR (Reality Tech)

ar-vr-xr

Reality tech (AR/VR/XR). Build and ship spatial experiences (WebXR/OpenXR/Unity/Unreal) with strong defaults for interaction, performance, comfort, privacy, and deployment.

plurigrid/asi0installs67stars

SKILL.md

Full skill instructions

AR / VR / XR (Reality Tech)

Use this skill when the user is building or debugging:

  • AR (camera passthrough overlays)
  • VR (fully immersive)
  • XR/​MR (mixed reality, spatial computing)
  • WebXR/​OpenXR, Quest/​Vision Pro/​PCVR
  • Unity/​Unreal/​Web (Three.js, Babylon.js, A-Frame)

First Questions (Only Ask What Blocks Progress)

Ask up to 3:

  1. Target platform: Web (WebXR) or native (OpenXR via Unity/​Unreal)?
  2. Target device(s): Quest, Vision Pro, PCVR (SteamVR), mobile AR (ARKit/​ARCore), other?
  3. Interaction + locomotion: hands, controllers, gaze, roomscale, smooth locomotion, teleport?

If the user does not know yet, default to:

  • WebXR + Three.js for a fast prototype
  • Teleport locomotion + snap-turn for comfort

Workflow

  1. Define the experience mode and constraints.

    • AR vs VR vs MR
    • Required capabilities: 3DoF/​6DoF, plane detection, meshing, hand tracking, anchors
  2. Establish world scale and coordinate conventions early.

    • 1 unit = 1 meter (recommended)
    • Choose a single "up" axis and stick to it end-to-end
  3. Build a vertical slice (minimum shippable loop).

    • Tracking + session start
    • One interaction (grab/​select)
    • One UI surface (menu, tooltip, reticle)
  4. Budget performance from day 1.

    • Stable frame time beats peak quality
    • Reduce draw calls, overdraw, shader cost, and texture bandwidth
  5. Enforce comfort defaults.

    • Avoid sustained acceleration
    • Prefer teleport and snap-turn
    • Keep UI readable and at comfortable depth
  6. Treat privacy and sensors as first-class.

    • Camera/​mic permissions, spatial maps, room meshes, biometrics
    • Minimize collection, document clearly, store locally when possible

WebXR Quickstart (Three.js)

import * as THREE from 'three';
import { VRButton } from 'three/​examples/​jsm/​webxr/​VRButton.js';

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 0.01, 100);
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.xr.enabled = true;
document.body.appendChild(renderer.domElement);
document.body.appendChild(VRButton.createButton(renderer));

const light = new THREE.HemisphereLight(0xffffff, 0x444444, 1.0);
scene.add(light);

const floor = new THREE.Mesh(
  new THREE.PlaneGeometry(10, 10),
  new THREE.MeshStandardMaterial({ color: 0x222222 })
);
floor.rotation.x = -Math.PI / 2;
scene.add(floor);

renderer.setAnimationLoop(() => {
  renderer.render(scene, camera);
});

Notes:

  • WebXR requires HTTPS (or localhost).
  • To target AR: request an immersive-ar session and handle hit-test/​anchors (framework-specific).

OpenXR Notes (Unity/​Unreal)

  • Unity: prefer XR Plugin Management + OpenXR plugin; use XR Interaction Toolkit for baseline interaction.
  • Unreal: use the OpenXR plugin; validate input mappings per device.

When debugging native XR:

  • Confirm runtime: OpenXR runtime (SteamVR, Oculus, WMR) and version
  • Validate action bindings and controller profiles
  • Verify frame timing on-device, not just in editor

Comfort Checklist

  • Keep horizon stable; avoid camera bob unless user opts in
  • Use snap-turn (30-45 deg) by default
  • Teleport is the safest default locomotion
  • Avoid "forced" motion tied to animations
  • UI: large text, high contrast, avoid depth conflict (z-fighting)

Performance Checklist

  • Measure on target device (Quest/​Vision Pro/​PCVR), not only desktop
  • Reduce: draw calls, transparent layers, dynamic shadows, post-processing
  • Prefer baked lighting where possible
  • Stream assets with progressive quality (LOD), avoid blocking loads

Device Profile: Varjo XR-4

If the target device is Varjo XR-4 Series, use varjo-xr-4 for runtime/​tracking/​refresh-rate specifics.

Interleave With New Skills (plurigrid/​asi PRs #61-64)

Use these as building blocks:

  • visual-design: spatial UI readability, typography, contrast, layout
  • svelte-components / sveltekit-structure / sveltekit-data-flow: WebXR shells, menus, settings, content pipelines
  • browser-navigation: XR web debugging and reproducible repro steps
  • bandwidth-benchmark: asset streaming, scene/​texture delivery constraints
  • threat-model-generation + security-review: sensors, permissions, privacy, on-device data
  • jepsen-testing: correctness thinking for multi-user/​shared-state XR backends

Jepsen For Shared-State XR

Use jepsen-testing when your experience includes a backend claim about correctness under faults (multiplayer rooms, shared anchors, inventories, authoritative physics, replicated scene graphs).

XR-specific intake:

  • Define the surface: websocket RPC, REST/​gRPC, realtime relay, or a persistence API.
  • Define acknowledged for XR ops (e.g., "spawn confirmed", "anchor committed", "inventory write ok").
  • Pick a checkable property per primitive:
  • Room membership/​presence: no phantom joins, monotonic session state.
  • Object transforms: no lost acknowledged updates; no impossible readbacks.
  • Anchors/​placements: placement does not disappear after an ok, unless explicitly deleted.

Faults worth testing:

  • Partitions between clients and relay/​region.
  • Process kill/​restart of relay, authoritative host, or storage layer.
  • Clock skew if you use timestamps for conflict resolution.

Minimization tip:

  • Reduce to 1-2 rooms, 2-3 objects, and a single nemesis schedule until the violation is explainable.

Example Prompts This Skill Should Handle

  • "Build a WebXR VR scene with teleport and grab interactions"
  • "Port this Unity project to OpenXR and fix controller bindings"
  • "Optimize this Quest app to hit stable 72/​90 fps"
  • "Design a spatial settings UI that stays readable in passthrough"
  • "Threat-model an AR app that uses camera + spatial mapping"
  • steamvr-tracking for Lighthouse/​base station setup- xr-color-management for sRGB/​P3/​Rec.2020 pipeline issues

More skills from plurigrid

cargo logo
plurigrid/asi

cargo

Rust package manager (36 subcommands).

67 0
View

Translate Figma nodes into production-ready code with 1:1 visual fidelity using the Figma MCP workflow (design context, screenshots, assets, and project-convention translation). Trigger when the user provides Figma URLs or node IDs, or asks to implement designs or components that must match Figma...

67 0
View

**Status**: 🌳 Production Ready (upstream in StringZilla v3+) **Type**: High-Performance String Operations / SIMD-Accelerated Text Processing **Principle**: Zero-copy views, SIMD/SWAR acceleration, deterministic hashing **Frame**: Cross-language interoperability (C, C++, Python, Rust, Go, Swift, ...

67 0
View
conformal-ga logo
plurigrid/asi

conformal-ga

Conformal Geometric Algebra (CGA) for circles, spheres, and Möbius transformations

67 0
View

Verifies code implements exactly what documentation specifies for blockchain audits. Use when comparing code against whitepapers, finding gaps between specs and implementation, or performing compliance checks for protocol implementations.

67 0
View
zig-systems logo
plurigrid/asi

zig-systems

Systems programming and performance optimization using Zig. Provides low-level abstractions, memory-safe compiled code, and performance benchmarking. Use for system-level operations, optimization, and interoperability with C/POSIX APIs.

67 0
View
paypal-mcp logo
plurigrid/asi

paypal-mcp

PayPal MCP server integration for invoices, payments, subscriptions, disputes, and transaction reporting via @paypal/mcp.

67 0
View
unison logo
plurigrid/asi

unison

Unison language - content-addressed functional programming with abilities for effects, distributed computing, and structural types. Use for pure functional code, effect management, distributed systems, and refactoring-safe codebases.

67 0
View
tasks-acset logo
plurigrid/asi

tasks-acset

Google Tasks management via TasksACSet. Transforms task operations into GF(3)-typed Interactions, routes to triadic queues, detects saturation for task-zero-as-condensed-state.

67 0
View
c logo
plurigrid/asi

c

World C Skill

67 0
View
syrup logo
plurigrid/asi

syrup

Syrup binary serialization for OCapN/CapTP wire format. Canonical encoding for capability messages.

67 0
View
skill-installer logo
plurigrid/asi

skill-installer

Install Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path. Use when a user asks to list installable skills, install a curated skill, or install a skill from another repo (including private repos).

67 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View