hz-android-2d-porting
Guides porting existing Android 2D apps to Meta VR and Horizon OS — input adaptation, panel layout, and design requirements. Use…
Builds WebXR experiences for Meta VR and Horizon OS using the Immersive Web SDK (IWSDK) — ECS architecture, Three.js integration, spatial UI. Use when creating web-based VR/MR apps for Quest Browser.
Claude Code
$ npx -y skills add meta-quest/agentic-tools --skill hz-iwsdk-webxr --agent claude-code
Codex
$ npx skills add meta-quest/agentic-tools --skill hz-iwsdk-webxr -a codex -y
Cursor
$ npx skills add meta-quest/agentic-tools --skill hz-iwsdk-webxr -a cursor -y
Gemini CLI
$ npx skills add meta-quest/agentic-tools --skill hz-iwsdk-webxr -a gemini-cli -y
GitHub Copilot
$ npx skills add meta-quest/agentic-tools --skill hz-iwsdk-webxr -a github-copilot -y
OpenCode
$ npx skills add meta-quest/agentic-tools --skill hz-iwsdk-webxr -a opencode -y
Windsurf
$ npx skills add meta-quest/agentic-tools --skill hz-iwsdk-webxr -a windsurf -y
name: hz-iwsdk-webxr license: Apache-2.0 description: Builds WebXR experiences for Meta VR and Horizon OS using the Immersive Web SDK (IWSDK) — ECS architecture, Three.js integration, spatial UI. Use when creating web-based VR/MR apps for Quest Browser. allowed-tools: Bash(metavr:*), Bash(hzdb:*)
Build immersive WebXR experiences for Meta VR using Meta's Immersive Web SDK (IWSDK). This skill covers the current package layout, ECS architecture, Three.js integration, spatial UI development, XR input handling, and the recommended Vite-based development loop.
Use this skill when you need to:
Browser
This skill applies to Meta VR Glasses with gaze-pinch input, and to all Meta Quest headsets with Quest Browser.
The Immersive Web SDK (IWSDK) is Meta's framework for building WebXR experiences. It provides:
typed component storage and query-driven systems
session lifecycle so app code can focus on content
`UIKitDocument` for in-world and screen-space UI
pointers, and grabbing
turning features
`AssetManager`
IWSDK runs in the browser via the WebXR Device API. Applications are standard web pages that are usually served by Vite during development and opened in Quest Browser for on-device validation.
These details are important because older pre-release guidance is now wrong:
npm create @iwsdk@latest my-project cd my-project
If you are starting from the official create flow, it can also install dependencies and initialize git for you.
npm install
If you are setting up manually, use `@iwsdk/core`, `three`, `@iwsdk/vite-plugin-dev`, and `vite-plugin-mkcert` instead of the old `@meta-quest/iwsdk` package.
npm run dev
The standard IWSDK Vite setup gives you a secure local dev server, hot module replacement, and an emulator/dev browser workflow through `@iwsdk/vite-plugin-dev`.
There are two normal validation paths:
quick desktop iteration
Quest Browser testing requires HTTPS. If the app works on desktop but will not enter XR on-device, confirm that the dev server URL is secure and headset reachable. When XR still won't enter, `metavr log` from the headset often names the failing check (HTTPS, WebXR flags, GPU process).
IWSDK is a strong fit for coding agents because the development loop is already web-native: edit source, reload the page, observe behavior, and iterate.
Recommended loop:
1. Verify API and platform details against current docs before coding 2. Edit the code and run the Vite dev server 3. Reload in Quest Browser or the IWSDK emulator/dev browser 4. Observe logs, screenshots, and runtime state 5. Iterate until runtime behavior matches the request
If you are pairing a native Meta VR frontend with a host-side coding agent, keep the frontend thin. Let the host machine own the repository, file edits, dependency installs, tests, build steps, and metavr tool calls.
A typical IWSDK project looks like this:
my-project/
src/
index.ts # Entry point: World.create, scene setup, XR controls
systems/ # Optional ECS systems
movement.ts
components/ # Optional ECS components
velocity.ts
public/
models/ # GLTF / GLB assets
textures/ # Textures and images
audio/ # Audio assets
ui/ # Compiled UIKitML JSON output
ui/
welcome.uikitml # Source UIKitML files
vite.config.ts
package.json
tsconfig.jsonimport { Types, createComponent } from '@iwsdk/core';
export const Velocity = createComponent(
'Velocity',
{
x: { type: Types.Float32, default: 0 },
y: { type: Types.Float32, default: 0 },
z: { type: Types.Float32, default: 0 },
},
'Linear velocity in meters per second',
);import { createSystem } from '@iwsdk/core';
import { Velocity } from './components/velocity';
export class MovementSystem extends createSystem({
moving: { required: [Velocity] },
}) {
update(delta: number) {
this.queries.moving.entities.forEach((entity) => {
if (!entity.object3D) {
return;
}
entity.object3D.position.x += Velocity.data.x[entity.index] * delta;
entity.object3D.position.y += Velocity.data.Guides porting existing Android 2D apps to Meta VR and Horizon OS — input adaptation, panel layout, and design requirements. Use…
Upgrades Meta VR apps to newer Horizon OS SDK versions — migration guides, deprecated API replacements, changelog. Use when…
Guides design of comfortable, intuitive VR/MR experiences for Meta VR and Horizon OS — comfort guidelines, interaction patterns,…
Build multi-window Meta Horizon OS experiences with the MetaVrx Layout SDK in Jetpack Compose or React Native. Covers framework…
Builds app UI for Meta VR and Horizon OS with the MetaVrx UI Set, a Jetpack Compose component library and design system. Covers…
Scaffolds new Meta VR and Horizon OS projects after the build path is selected — Standard Android, Meta Spatial SDK, Unity,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.