From meta-vr
Validates Meta Quest and Horizon OS apps against VRC store publishing requirements. Checks project config, entitlements, manifest, permissions for Quest Store submission prep.
npx claudepluginhub meta-quest/agentic-tools --plugin meta-vrThis skill is limited to using the following tools:
Help developers prepare and validate Meta Quest apps for store submission. This skill covers the full publishing readiness lifecycle -- project configuration, code review, VRC compliance, content policies, data use, and store assets.
Guides end-to-end Meta Quest and Horizon OS app submission to Meta Horizon Store: build validation, VRC compliance, asset preparation, upload, and tracking. Use for Quest app publishing prep.
Audits iOS/iPadOS/macOS app projects against App Store Review Guidelines before submission. Supports Swift/ObjC, Flutter, React Native, Expo, Kotlin Multiplatform, .NET MAUI, Cordova/Ionic, Unity.
Scans iOS/macOS Xcode projects, source code, metadata, IAP setups, and privacy configs for App Store rejection patterns. Maps issues to Apple guidelines with severity and fixes before submission.
Share bugs, ideas, or general feedback.
Help developers prepare and validate Meta Quest apps for store submission. This skill covers the full publishing readiness lifecycle -- project configuration, code review, VRC compliance, content policies, data use, and store assets.
Apps go through these phases before reaching the store. Understand which phase the developer is in to focus your review.
After release, binary updates ship immediately without review. Metadata updates (descriptions, images, trailers) require 1-2 day review.
Work through each step in order. Each step tells you what to check and points to a reference doc when you need deeper detail.
Verify the project is set up correctly for store submission.
Check these items:
VRC.Quest.Security.1 -- most commonly failed VRC)Find entitlement check in code:
# Unity
grep -rn "Entitlements\|IsEntitled\|GetViewerEntitled\|PlatformInitialize" --include="*.cs" Assets/
# Unreal
grep -rn "Entitlement\|OvrPlatform\|GetViewerEntitlement" --include="*.cpp" --include="*.h" Source/
# Native / Spatial SDK
grep -rn "ovr_Entitlement_GetIsViewerEntitled\|ovr_PlatformInitializeAndroid" --include="*.c" --include="*.cpp" --include="*.h" src/
If entitlement check is missing or deferred, flag it -- this will fail review.
Audit the Android manifest against release requirements. Non-conforming manifests fail VRC.Quest.Packaging.1.
Quick manifest check on a built APK:
aapt dump badging app.apk
Verify: targetSdkVersion is 32-34 for immersive apps (32-36 for 2D panel apps), minSdkVersion 29-32, installLocation is auto, debuggable is false/unset.
Permissions check:
aapt dump permissions app.apk
Cross-reference against three categories: prohibited (auto-reject on upload), review-requiring (need justification), and safe. Unity and Unreal silently add permissions via plugins -- remove them before submission.
For the full manifest spec, SDK version table, prohibited/review-requiring permission lists, and engine-specific removal instructions, see references/publishing-requirements.md.
Validate the release APK before upload.
apksigner verify app.apk # Signature (VRC.Quest.Packaging.2)
ls -lh app.apk # Size < 1 GB (VRC.Quest.Packaging.5)
aapt dump badging app.apk | grep native-code # 64-bit arm64-v8a (VRC.Quest.Packaging.6)
Also verify: keystore is consistent across versions, no unsupported Android features (no Google Play Services), expansion files follow OBB naming and size limits.
For packaging specs and expansion file details, see references/publishing-requirements.md.
Deploy to a Quest device and run through the app.
hzdb app install ./app.apk
hzdb app launch com.example.app
hzdb perf capture
Test for at least 45 minutes (or content length, whichever is shorter):
VRC.Quest.Performance.1)VRC.Quest.Performance.2)VRC.Quest.Performance.3)VRC.Quest.Functional.2)VRC.Quest.Input.4)VRC.Quest.Functional.7)VRC.Quest.Functional.1, .3)VRC.Quest.Functional.12)For the complete VRC test plan with all categories and test steps, see references/vrc-test-plan.md.
After technical review passes, Meta evaluates the app's UX quality, content, and policies. Prepare for this by reviewing:
For the full content review criteria, app policies, and brand guidelines, see references/content-and-policies.md.
Required if the app uses platform features that access user data.
Features that require a DUC: User ID, User Profile, Avatars, Achievements, In-App Purchases, Matchmaking, Leaderboards, Cloud Storage, Deep Linking, Invites, Followers, Parties, Subscriptions, Challenges, User Age Group.
Verify:
For the DUC features table, submission process, and data handling questions, see references/content-and-policies.md.
Review all store-facing materials before submission.
Metadata checklist:
Asset checklist:
For full asset specifications, safe area rules, and format requirements, see references/store-assets.md.
Summarize findings as a pass/fail checklist:
Flag any failures with VRC IDs and remediation steps. Recommend whether the build is ready for Production channel upload.
The most frequently failed VRCs -- check these first:
| VRC | Issue |
|---|---|
VRC.Quest.Security.1 | Missing or late entitlement check |
VRC.Quest.Security.2 | Unnecessary permissions (often added by engine plugins) |
VRC.Quest.Performance.1 | Frame rate below target refresh rate |
VRC.Quest.Functional.2 | App doesn't pause when HMD removed |
VRC.Quest.Functional.7 | No offline notification for internet-required apps |
VRC.Quest.Input.4 | Not focus-aware under Universal Menu |
VRC.Quest.Tracking.1 | Behavior doesn't match declared play mode |
hzdb (Horizon Debug Bridge) is the CLI for on-device testing. Invoke via npx — no install required:
npx -y @meta-quest/hzdb --version
Examples below use the bare hzdb command for brevity — substitute npx -y @meta-quest/hzdb in front.
hzdb device list # Verify device connection
hzdb device battery # Check battery and thermal state
hzdb app install ./app.apk # Deploy build
hzdb app launch com.example.app # Launch app
hzdb app stop com.example.app # Stop app
hzdb log # View app logs
hzdb adb logcat --tag ThermalService --level W # Thermal monitoring
hzdb perf capture # Performance profiling
hzdb capture screenshot # Capture VR view
hzdb docs search "entitlement check" # Search documentation
Load these on demand when you need deeper detail: