hz-quest-verify-first

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Verify First — Meta Quest Development

先验证——Meta Quest开发

What you need to know before reading the rest of this

在阅读剩余内容前你需要了解的信息

You are about to be told to call tools you may not recognize by name. Read this section first so the rest makes sense.
  • Meta Quest is Meta's line of standalone VR / mixed-reality headsets (Quest 2, Quest 3, Quest 3S, Quest Pro). They run an Android-based OS.
  • Horizon OS is the name of that operating system. It is forked from Android, ships on every Quest headset, and Meta updates it on its own cadence (separate from upstream Android). Many APIs are Horizon-OS-specific and have no analog in stock Android.
  • metavr ("Meta VR CLI") is a Rust CLI tool published by Meta as
    metavr
    on npm. Invoke via
    npx -y metavr <args>
    — no install required;
    npx
    always pulls the latest published version. It wraps
    adb
    and Meta's developer APIs into higher-level commands for Quest device development: list devices, install apps, capture Perfetto traces, search Meta Quest documentation, query 3D asset libraries, automate UI interactions, etc. metavr is the primary action layer for Quest dev work — the equivalent of what
    gcloud
    is for GCP or
    git
    is for source control.
  • metavr MCP server is a built-in mode of metavr that exposes a focused set of tools to AI coding agents over the Model Context Protocol. The relevant tools for this skill are:
    • meta_docs_search
      — search the official Meta developer documentation
    • meta_docs_get_page
      — fetch the full text of a specific docs page
    • device
      — query and control connected Meta Quest headsets (list, info, connect, reboot, battery, controllers, proximity, etc.)
    • app
      — query and manage installed apps (list, info, install, uninstall, launch, stop, clear)
    • files
      — file ops on a connected headset (ls, push, pull, rm, mkdir)
    • run
      — catch-all for any metavr subcommand without a dedicated tool (perf, ovrmetrics, ui, audio, casting, window, unity, sideload, asset, config, …). Its JSON Schema is generated from clap so the available subcommands and their typed args are visible to you in the tool definition.
    • cli_help
      — discover metavr subcommands and flags as markdown
  • Meta SDKs you may not recognize that are commonly used in Quest projects: Meta XR All-in-One SDK (Unity), Meta XR Core / Interaction / Platform / Voice / Movement SDKs, Meta Spatial SDK (Kotlin / Android panels), IWSDK (Immersive Web SDK for WebXR), MRUK (Mixed Reality Utility Kit), Presence Platform, Horizon Platform SDK. These ship on their own release cadences, separate from Quest OS.
  • OVR vs Meta XR — older Quest Unity content and most of the public web references the
    OVR
    namespace and the "Oculus Integration" Unity package. Both have been deprecated in favor of the Meta XR All-in-One SDK family. Most training data still recommends the deprecated names. Verify before recommending anything in this area.
你即将被要求调用一些可能不熟悉名称的工具。请先阅读本节,以便理解后续内容。
  • Meta Quest是Meta的独立VR/混合现实头显系列(Quest 2、Quest 3、Quest 3S、Quest Pro)。它们运行基于Android的操作系统。
  • Horizon OS是该操作系统的名称。它基于Android分支而来,预装在所有Quest头显上,Meta会按照自己的节奏进行更新(与上游Android更新独立)。许多API是Horizon OS专属的,在原生Android中没有对应功能。
  • metavr("Meta VR CLI")是Meta发布的一款Rust CLI工具,在npm上以
    metavr
    为名发布。可通过
    npx -y metavr <args>
    调用——无需安装;
    npx
    始终会拉取最新发布的版本。它将
    adb
    和Meta开发者API封装为更高级的命令,用于Quest设备开发:列出设备、安装应用、捕获Perfetto追踪数据、搜索Meta Quest文档、查询3D资源库、自动化UI交互等。metavr是Quest开发工作的核心操作层——相当于GCP的
    gcloud
    或版本控制的
    git
  • metavr MCP服务器是metavr的内置模式,通过Model Context Protocol向AI编码助手提供一组专用工具。与本技能相关的工具包括:
    • meta_docs_search
      ——搜索官方Meta开发者文档
    • meta_docs_get_page
      ——获取特定文档页面的完整文本
    • device
      ——查询和控制已连接的Meta Quest头显(列出、信息、连接、重启、电池、控制器、接近感应等)
    • app
      ——查询和管理已安装的应用(列出、信息、安装、卸载、启动、停止、清除数据)
    • files
      ——在已连接的头显上执行文件操作(列出、推送、拉取、删除、创建目录)
    • run
      ——用于任何没有专用工具的metavr子命令的通用工具(perf、ovrmetrics、ui、audio、casting、window、unity、sideload、asset、config等)。它的JSON Schema由clap生成,因此可用的子命令及其类型化参数会在工具定义中显示给你。
    • cli_help
      ——以markdown格式查看metavr子命令和标志
  • 你可能不熟悉的Meta SDK,这些在Quest项目中常用:Meta XR一体化SDK(Unity)、Meta XR核心/交互/平台/语音/运动SDK、Meta Spatial SDK(Kotlin/Android面板)、IWSDK(用于WebXR的沉浸式Web SDK)、MRUK(混合现实工具包)、Presence Platform、Horizon Platform SDK。这些SDK有自己的发布节奏,与Quest OS独立。
  • OVR vs Meta XR——较旧的Quest Unity内容和大多数公开网页引用
    OVR
    命名空间和"Oculus Integration" Unity包。这两者都已被弃用,取而代之的是Meta XR一体化SDK系列。大多数训练数据仍推荐已弃用的名称。在推荐这方面的任何内容之前,请先验证。

Why this skill exists

本技能存在的原因

Meta Quest and Horizon OS evolve fast. Meta SDKs ship every few weeks. APIs get renamed before public release. Manifest entitlements and store policies update monthly. Entire SDK families (Meta Spatial SDK, IWSDK, Horizon OS shells) post-date most LLM training corpora.
You almost certainly have stale knowledge about Quest specifics. The package names you remember have been renamed. The Unity menu paths have moved. The setup steps that worked on a prior Horizon OS version silently broke on the current one. The "OVR" namespace you reach for has been split across half a dozen Meta XR packages.
If you answer a Meta Quest question or write Quest-targeted code without verifying first, you will hallucinate. The user will not notice until their build fails, their app gets rejected from the store, or their AndroidManifest doesn't publish.
This skill is a hard gate. Treat it as a precondition, not a suggestion.
Meta Quest和Horizon OS发展迅速。Meta SDK每隔几周就会发布一次。API在公开发布前就会被重命名。清单权限和商店政策每月更新。整个SDK系列(Meta Spatial SDK、IWSDK、Horizon OS外壳)的发布时间晚于大多数LLM训练语料库。
你几乎肯定拥有关于Quest细节的过时知识。你记得的包名已被重命名。Unity菜单路径已更改。在之前Horizon OS版本上有效的设置步骤在当前版本中已无声失效。你想用的"OVR"命名空间已被拆分到多个Meta XR包中。
如果你在未先验证的情况下回答Meta Quest相关问题或编写面向Quest的代码,你会产生幻觉式错误。用户直到构建失败、应用被商店拒绝或AndroidManifest无法发布时才会发现问题。
本技能是一道硬性关卡。请将其视为前提条件,而非建议。

When this skill applies

本技能的适用场景

You MUST run the verification flow below if ANY of the following is true for the current task:
  • The user mentions Meta Quest, Quest 2 / 3 / 3S / Pro, Oculus, Horizon OS, MR, VR, XR, OpenXR (on Quest), Meta SDK, Meta XR, OVR, Spatial SDK, IWSDK, MRUK, Movement SDK, Voice SDK, Presence Platform, Horizon Platform SDK, hand tracking, passthrough, anchors, scene mesh, casting, eye tracking, body tracking, controllers, or platform compliance / store policy
  • The repository contains any of:
    • Unity files with
      OVRPlugin
      , "Meta XR All-in-One SDK", or
      com.meta.xr.*
      in
      manifest.json
      /
      Packages/manifest.json
    • Spatial SDK gradle plugin (
      com.meta.spatial.plugins.*
      )
    • AndroidManifest with
      com.oculus.*
      ,
      com.meta.quest.*
      , or
      horizon
      feature declarations
    • Package IDs starting with
      com.meta.*
      or
      com.oculus.*
    • .meta
      files indicating Unity, or
      Quest_*.uplugin
      /
      *.unrealhxr
      files
  • The user's question references
    developers.meta.com/horizon
    ,
    developer.oculus.com
    ,
    oculus.com/sparkle-updates
    , or any Meta Quest documentation URL
  • The agent is about to recommend any Meta SDK API, namespace, package, or AndroidManifest entitlement
  • The agent is about to answer a question about app review, Meta Horizon Store submission, store-readiness or publishing requirements, content rating, or distribution
  • The agent is about to write
    adb
    commands targeting a specific device
  • The agent is about to claim what is or isn't installed on the user's headset
If you are not sure, the answer is YES — run the verification flow.
如果当前任务符合以下任何一种情况,你必须运行下面的验证流程:
  • 用户提到Meta Quest、Quest 2/3/3S/Pro、Oculus、Horizon OS、MR、VR、XR、OpenXR(在Quest上)、Meta SDK、Meta XR、OVR、Spatial SDK、IWSDK、MRUK、Movement SDK、Voice SDK、Presence Platform、Horizon Platform SDK、手部追踪、透视显示、锚点、场景网格、投屏、眼动追踪、身体追踪、控制器,或平台合规/商店政策
  • 代码库包含以下任何内容:
    • Unity文件,其
      manifest.json
      /
      Packages/manifest.json
      中包含
      OVRPlugin
      、"Meta XR All-in-One SDK"或
      com.meta.xr.*
    • Spatial SDK gradle插件(
      com.meta.spatial.plugins.*
    • AndroidManifest包含
      com.oculus.*
      com.meta.quest.*
      horizon
      功能声明
    • com.meta.*
      com.oculus.*
      开头的包ID
    • 表明是Unity的
      .meta
      文件,或
      Quest_*.uplugin
      /
      *.unrealhxr
      文件
  • 用户的问题引用
    developers.meta.com/horizon
    developer.oculus.com
    oculus.com/sparkle-updates
    或任何Meta Quest文档网址
  • 助手即将推荐任何Meta SDK API、命名空间、包或AndroidManifest权限
  • 助手即将回答关于应用审核、Meta Horizon Store提交、商店就绪或发布要求、内容评级或分发的问题
  • 助手即将编写针对特定设备的
    adb
    命令
  • 助手即将声称用户头显上安装或未安装某内容
如果你不确定,答案是YES——运行验证流程。

The verification flow

验证流程

Step 1 — Verify against authoritative documentation

步骤1——对照官方文档验证

Before writing or recommending anything Quest-specific, call the
meta_docs_search
MCP tool. If MCP is not available, use the equivalent metavr CLI command
metavr docs search
.
MCP:
meta_docs_search(
  query="<the specific claim or API you are about to make>",
  scope="auto",   # or unity / unreal / spatial_sdk / android / native / web /
                  #    policy / distribution / design
  mode="verify"
)
CLI:
bash
metavr docs search "<query>"
If you need exact wording (manifest entries, full API signatures, store policy text, code snippets), follow up with
meta_docs_get_page
on the
canonical_url
or
doc_path
returned by verify. Never paraphrase a truncated snippet when correctness matters.
CLI:
bash
metavr docs fetch "<canonical_url_or_path>"
在编写或推荐任何Quest特定内容之前,调用
meta_docs_search
MCP工具。如果MCP不可用,使用等效的metavr CLI命令
metavr docs search
MCP:
meta_docs_search(
  query="<你即将提出的具体声明或API>",
  scope="auto",   # 或 unity / unreal / spatial_sdk / android / native / web /
                  #    policy / distribution / design
  mode="verify"
)
CLI:
bash
metavr docs search "<query>"
如果你需要确切的措辞(清单条目、完整API签名、商店政策文本、代码片段),请使用
meta_docs_get_page
工具,传入verify返回的
canonical_url
doc_path
当正确性至关重要时,切勿改写截断的片段。
CLI:
bash
metavr docs fetch "<canonical_url_or_path>"

Step 2 — Verify the user's actual environment

步骤2——验证用户的实际环境

Before suggesting which device a command should target, claiming an app is installed, recommending an
adb
command, or writing install / launch / sideload steps, query the user's actual metavr-managed environment.
MCP:
device(action="list")                        # ALWAYS start here
device(action="info", target="<serial>")
app(action="list", target="<serial>")
app(action="info", package="<package>")
run(subcommand=["config", "show"])           # catch-all for misc reads
CLI:
bash
metavr device list
metavr device info <serial>
metavr app list -d <serial>
metavr app info <package>
metavr config list
The user may have zero, one, or many headsets connected via USB and WiFi — multiple Quest models, dev kits, sideloaded builds, pinned older Horizon OS versions. Your training data has zero visibility into this.
在建议命令应针对哪个设备、声称某应用已安装、推荐
adb
命令或编写安装/启动/侧载步骤之前,请查询用户由metavr管理的实际环境。
MCP:
device(action="list")                        # 始终从这里开始
device(action="info", target="<serial>")
app(action="list", target="<serial>")
app(action="info", package="<package>")
run(subcommand=["config", "show"])           # 用于各种杂项读取的通用工具
CLI:
bash
metavr device list
metavr device info <serial>
metavr app list -d <serial>
metavr app info <package>
metavr config list
用户可能通过USB和WiFi连接了零个、一个或多个头显——包括多种Quest型号、开发套件、侧载构建包、固定的旧版Horizon OS版本。你的训练数据对此完全没有可见性。

Step 3 — Discover metavr capabilities when unsure

步骤3——不确定时探索metavr功能

If you do not know which metavr subcommand or
run
invocation fits the user's request, call
cli_help
(MCP) or
metavr --markdown-help
(CLI) first. Do not invent flags or subcommands — metavr gets new functionality every release and your training data does not include it.
For long-tail subcommands (
perf
,
ovrmetrics
,
ui
, etc.), the
run
tool's input schema enumerates every subcommand path and its typed args via JSON Schema
oneOf
. You can read it directly from the tool definition rather than guessing.
MCP:
cli_help(topic="perf")   # focused help for a subcommand tree
cli_help()               # full top-level command tree
CLI:
bash
metavr --markdown-help
metavr perf --help
如果你不知道哪个metavr子命令或
run
调用适合用户的请求,请先调用
cli_help
(MCP)或
metavr --markdown-help
(CLI)。不要发明标志或子命令——metavr每次发布都会添加新功能,而你的训练数据不包含这些内容。
对于长尾子命令(
perf
ovrmetrics
ui
等),
run
工具的输入模式通过JSON Schema
oneOf
枚举了每个子命令路径及其类型化参数。你可以直接从工具定义中读取,而不是猜测。
MCP:
cli_help(topic="perf")   # 针对子命令树的聚焦帮助
cli_help()               # 完整的顶级命令树
CLI:
bash
metavr --markdown-help
metavr perf --help

Specific failure modes you cause by skipping verification

跳过验证会导致的具体失败模式

These are concrete, recurring failures that the verification flow prevents:
  • Deprecated APIs that compile but no-op at runtime. OVR-namespace function names that were forwarded for one release and removed the next. Code looks correct, builds clean, runs without errors — and produces no observable behavior on device.
  • AndroidManifest entitlements that get the app rejected from the Meta Horizon Store. The required entitlement names changed; an entitlement you "know" is needed is no longer recognized; a new mandatory feature flag is missing.
  • Meta SDK package names that don't exist. Meta XR All-in-One SDK is a family of UPM packages with version-specific names; guessing produces "package not found" errors.
  • Unity menu paths from outdated tutorials. Meta XR menu items moved between SDK versions; setup steps that reference
    Oculus → ...
    may now live under
    Meta XR → ...
    or have been removed entirely.
  • Spatial SDK class names that were renamed before public release. The Spatial SDK iterated on its public API late; many class and method names in older blog posts or training data are wrong.
  • Passthrough / anchor / scene-mesh setup that worked on a prior Horizon OS version. Permission flow, system overlay APIs, and manifest features changed across Quest OS versions. What worked in a tutorial last year may silently fail on current Horizon OS.
  • OpenXR extensions that are listed but not supported on Quest's runtime. Generic OpenXR documentation lists extensions Meta has not implemented. Always verify against Meta's documentation, not the OpenXR spec.
  • Wrong device targeted. Recommending a
    adb shell
    command without first listing devices, then watching it fail or hit the wrong headset.
  • Store policy claims that are out of date. Review requirements, rating buckets, and distribution rules update — verify before answering user questions about submission.
这些是验证流程可以防止的具体、反复出现的失败情况:
  • 编译通过但运行时无操作的已弃用API。OVR命名空间的函数名在一个版本中被转发,在下一个版本中被移除。代码看起来正确,编译干净,运行无错误——但在设备上没有可观察到的行为。
  • 导致应用被Meta Horizon Store拒绝的AndroidManifest权限。所需的权限名称已更改;你“知道”需要的某个权限不再被识别;缺少新的强制功能标志。
  • 不存在的Meta SDK包名。Meta XR一体化SDK是一系列具有版本特定名称的UPM包;猜测会导致“包未找到”错误。
  • 来自过时教程的Unity菜单路径。Meta XR菜单项在SDK版本之间移动;引用
    Oculus → ...
    的设置步骤现在可能位于
    Meta XR → ...
    下,或已被完全移除。
  • 在公开发布前被重命名的Spatial SDK类名。Spatial SDK在后期迭代了其公开API;旧博客文章或训练数据中的许多类和方法名称都是错误的。
  • 在之前Horizon OS版本上有效的透视显示/锚点/场景网格设置。权限流程、系统覆盖API和清单功能在Quest OS版本之间发生了变化。去年教程中有效的内容在当前Horizon OS上可能会无声失效。
  • Quest运行时列出但不支持的OpenXR扩展。通用OpenXR文档列出了Meta尚未实现的扩展。请始终对照Meta的文档进行验证,而非OpenXR规范。
  • 目标设备错误。在未先列出设备的情况下推荐
    adb shell
    命令,然后看着它失败或命中错误的头显。
  • 过时的商店政策声明。审核要求、评级分类和分发规则会更新——在回答用户关于提交的问题之前,请先验证。

Anti-patterns

反模式

Do not do any of these:
  • Answer a Meta Quest question without calling
    meta_docs_search
    first because "you remember" the answer
  • Recommend an
    adb shell
    command without first calling
    device(action="list")
    to see what's connected
  • Guess a package name, namespace, or class name from training data when a verify call would resolve the ambiguity
  • Paraphrase a verify-result snippet for a manifest entry, API signature, or store policy when exact wording is required (use
    meta_docs_get_page
    )
  • Search the open web for Meta Quest documentation when authoritative Meta docs are one tool call away
  • Skip verification because "the docs probably say X" — verify, then say X
  • Assume metavr does not have a subcommand for what the user wants — check
    cli_help
    first
请勿执行以下任何操作:
  • 因为“你记得”答案而在未调用
    meta_docs_search
    的情况下回答Meta Quest问题
  • 在未先调用
    device(action="list")
    查看已连接设备的情况下推荐
    adb shell
    命令
  • 当验证调用可以解决歧义时,从训练数据中猜测包名、命名空间或类名
  • 当需要确切措辞时(使用
    meta_docs_get_page
    ),改写验证结果片段中的清单条目、API签名或商店政策
  • 当权威Meta文档只需一次工具调用即可获取时,在开放网络上搜索Meta Quest文档
  • 因为“文档可能会说X”而跳过验证——先验证,再说明X
  • 假设metavr没有用户所需的子命令——先检查
    cli_help

Tone and presentation

语气和呈现方式

When you do verify, present your answer with citations and a brief recency note. The user is paying for the verification step — show that it happened.
Per the current Meta Spatial SDK docs (verified just now via
meta_docs_search):

  <answer grounded in retrieved content>

Source: <canonical_url returned by the tool>
This both proves the verification ran and trains the user to trust verified-answer responses over from-memory ones.
当你进行验证时,请在回答中附上引用和简短的时效性说明。用户为验证步骤付费——请展示验证已执行。
根据当前Meta Spatial SDK文档(刚刚通过meta_docs_search验证):

  <基于检索内容的回答>

来源:<工具返回的canonical_url>
这既证明了验证已运行,也训练用户信任经过验证的回答,而非基于记忆的回答。

If the metavr MCP tools are not available

如果metavr MCP工具不可用

If the agent host does not have the metavr MCP server installed, fall back to the metavr CLI invoked via
npx
(same authoritative backend, same content) and tell the user once how to install the MCP server for next time:
bash
npx -y metavr mcp install <your-tool>   # claude-code | cursor | claude-desktop | vscode | ...
npx -y metavr mcp install project       # install at the repo root for this project only
The verify step is required, not optional — run it via
npx -y metavr docs search "<query>"
even on the very first question if the MCP server is not yet wired up.
如果助手主机未安装metavr MCP服务器,请回退到通过
npx
调用的metavr CLI(相同的权威后端,相同的内容),并告知用户下次如何安装MCP服务器:
bash
npx -y metavr mcp install <your-tool>   # claude-code | cursor | claude-desktop | vscode | ...
npx -y metavr mcp install project       # 仅在当前项目的仓库根目录安装
验证步骤是必需的,而非可选的——即使MCP服务器尚未连接,也要在第一个问题上通过
npx -y metavr docs search "<query>"
运行验证。

Related skills

相关技能

  • metavr-cli
    — full metavr CLI reference (commands, flags, examples)
  • hz-vr-debug
    — on-device debugging with logs and screenshots
  • hz-perfetto-debug
    — Perfetto trace analysis for jank / GPU / CPU bottlenecks
  • hz-store-submit
    — end-to-end Meta Horizon Store submission (includes store-readiness checks)
  • hz-spatial-sdk
    — Meta Spatial SDK API guidance
  • hz-platform-sdk
    — Horizon Platform SDK API guidance
  • metavr-cli
    ——完整的metavr CLI参考(命令、标志、示例)
  • hz-vr-debug
    ——使用日志和截图进行设备上调试
  • hz-perfetto-debug
    ——Perfetto追踪分析,用于排查卡顿/GPU/CPU瓶颈
  • hz-store-submit
    ——端到端Meta Horizon Store提交(包括商店就绪检查)
  • hz-spatial-sdk
    ——Meta Spatial SDK API指南
  • hz-platform-sdk
    ——Horizon Platform SDK API指南