hz-api-upgrade
Upgrades Meta VR apps to newer Horizon OS SDK versions — migration guides, deprecated API replacements, changelog. Use when…
Guides porting existing Android 2D apps to Meta VR and Horizon OS — input adaptation, panel layout, and design requirements. Use when adapting a mobile Android app for Meta VR. For UI design decisions, use hz-panel-designer if available. Build path: Standard Android; use
Claude Code
$ npx -y skills add meta-quest/agentic-tools --skill hz-android-2d-porting --agent claude-code
Codex
$ npx skills add meta-quest/agentic-tools --skill hz-android-2d-porting -a codex -y
Cursor
$ npx skills add meta-quest/agentic-tools --skill hz-android-2d-porting -a cursor -y
Gemini CLI
$ npx skills add meta-quest/agentic-tools --skill hz-android-2d-porting -a gemini-cli -y
GitHub Copilot
$ npx skills add meta-quest/agentic-tools --skill hz-android-2d-porting -a github-copilot -y
OpenCode
$ npx skills add meta-quest/agentic-tools --skill hz-android-2d-porting -a opencode -y
Windsurf
$ npx skills add meta-quest/agentic-tools --skill hz-android-2d-porting -a windsurf -y
name: hz-android-2d-porting license: Apache-2.0 description: "Guides porting existing Android 2D apps to Meta VR and Horizon OS — input adaptation, panel layout, and design requirements. Use when adapting a mobile Android app for Meta VR. For UI design decisions, use hz-panel-designer if available. Build path: Standard Android; use hz-quest-verify-first if the build path is unclear." allowed-tools: Bash(metavr:*), Bash(hzdb:*)
Use this skill when:
Horizon OS is built on Android (AOSP) and can run standard Android applications inside **panels** -- floating 2D windows positioned in 3D space. Most well-built Android apps work on Meta VR devices with minimal changes, but several areas require attention:
1. **Input**: There is no touchscreen. Users interact via controller pointer (ray-casting), hand tracking, or connected peripherals. 2. **Layout**: Apps run in resizable panels, not full-screen on a fixed display. 3. **Compatibility**: Dependencies and permissions must work without Google Play Services or unavailable hardware. 4. **Design and performance**: Apps must meet Horizon Store requirements on mobile hardware.
The goal of porting is to make the app feel native to the Meta VR experience while preserving existing functionality.
Build and install the existing app with its normal Android workflow. Android Studio, Gradle, and `adb` all work with a connected Meta VR device:
./gradlew installDebug adb shell am start -n com.example.yourapp/.MainActivity
Prefer `metavr app install <apk>` and `metavr app launch <package>` over raw adb here, then stream `metavr adb logcat --follow` during this first run. Note any immediate crashes, black screens, input problems, or layout breakage.
Check whether the app depends on Google Play Services, unsupported hardware, or prohibited permissions before changing its UI. Make unsupported features optional or replace them with Horizon OS alternatives. See [Compatibility Requirements](references/compatibility-requirements.md).
The most common porting issue is input. Touch events are translated from the controller pointer, but:
See [Input Adaptation Reference](references/input-adaptation.md) for detailed guidance.
Panels are resizable and can have various aspect ratios. Your app must handle:
Use responsive Android layouts and window-size breakpoints. See [Panel Layout Reference](references/panel-layout.md).
Update your build configuration to target Horizon OS:
// build.gradle.kts
android {
defaultConfig {
minSdk = 29 // Android 10 minimum
targetSdk = 34 // API 34 or higher required for all new 2D panel apps
}
}Add required manifest entries for device targeting. See [Gradle Setup Reference](references/gradle-setup.md).
Test with all supported input methods:
Use the Meta Spatial Simulator for rapid desktop iteration, then validate on-device with the Meta Horizon OS Android Studio plugin or normal ADB tooling. Keep `metavr adb logcat --follow` running during each input pass — it catches input errors that don't visibly crash.
Before submitting to the Horizon Store:
| Feature | Status | Notes | |---|---|---| | Standard Android Views | Supported | TextView, RecyclerView, etc. | | Jetpack Compose | Supported | Full Compose UI toolkit | | React Native | Supported | Uses the standard Android application path | | WebView | Supported | Chromium-based | | Media playback (ExoPlayer) | Supported | Video and audio | | Networking (HTTP, WebSocket) | Supported | Wi-Fi connectivity | | Room / SQLite | Supported | Local database | | WorkManager | Supported | Background tasks | | Notifications | Supported | Horizon OS notification panel | | Bluetooth (peripherals) | Supported | Keyboard, mouse, gamepad | | Android Accessibility APIs | Supported | TalkBack equivalent available |
| Feature | Status | Notes | |---|---|---| | Telephony / SMS | Not available | No cellular radio | | NFC | Not available | No NFC hardware | | GPS / Fine location | Limited | Wi-Fi-based location only | | Fingerprint / BiometricPrompt | Not available | Use Meta account auth instead | | Multiple app-owned panels | Limited | Use the current public multi-panel guidance when available | | Google Play Services | Not available | Use Meta equivalents or alternatives | | ARCore | Not available | Use Meta Spatial SDK for spatial features | | Mult
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,…
Builds WebXR experiences for Meta VR and Horizon OS using the Immersive Web SDK (IWSDK) — ECS architecture, Three.js integration,…
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.