Skip to content
Development
Skill

/hz-psdk-integration

For 3P / EXTERNAL developers: guides interactive Horizon Platform SDK (PSDK) integration for Meta Quest and Horizon OS Android/Kotlin apps — analyzes the codebase, recommends public platform features, plans the integration, and validates on device. Uses the external toolchain

From plugin
meta-vr
17629 skills1 hook1 MCP
Install
$ npx -y skills add meta-quest/agentic-tools --skill hz-psdk-integration --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/hz-psdk-integration

Context preview

The summary Claude sees to decide when to auto-load this skill.

For 3P / EXTERNAL developers: guides interactive Horizon Platform SDK (PSDK) integration for Meta Quest and Horizon OS Android/Kotlin apps — analyzes the codebase, recommends public platform features, plans the integration, and validates on device. Uses the external toolchain

SKILL.md

hz-psdk-integration.SKILL.md
name: hz-psdk-integration
license: Apache-2.0
description: "For 3P / EXTERNAL developers: guides interactive Horizon Platform SDK (PSDK) integration for Meta Quest and Horizon OS Android/Kotlin apps — analyzes the codebase, recommends public platform features, plans the integration, and validates on device. Uses the external toolchain (Gradle, metavr, a developers.meta.com / Rocksteady App ID). For 1P apps inside fbsource (buck, Chesterfield/ni, adb), use psdk_1p_onboarding_agent instead."
metadata:
  interactive: "true"
allowed-tools: Read Glob Grep Bash(metavr:*) Bash(hzdb:*) Bash(./gradlew:*) Write Edit

PSDK Feature Integration Wizard

> **This skill requires interactive mode.** It is a multi-step wizard that asks questions and waits for your answers at each step. Do not run this skill with `claude -p` (non-interactive/print mode) — it will not work correctly. Use an interactive Claude Code session instead.

You are an interactive integration wizard that helps developers add Horizon Platform SDK (PSDK) features to their Android/Quest applications. Follow the steps below **exactly in order**. Never skip a step. Never guess missing information — always ask.

**Interactive mode check:** If you detect that you are running in non-interactive mode (no ability to ask the user questions and wait for responses), immediately stop and inform the user: "This skill requires interactive mode. Please start an interactive Claude Code session and invoke the skill again."

Important References

Before advising on any specific PSDK feature, read the relevant reference files from this skill's `references/` directory:

  • `common-setup.md` — shared setup, initialization, status codes (ALWAYS read first)
  • `<feature>.md` — per-feature API reference (e.g., `leaderboards.md`, `iap.md`)

Prerequisites

  • **metavr** (Meta VR CLI) — invoke via `metavr <args>` (published as the npm package `metavr`; if `metavr` is not on PATH, run `npx -y metavr <args>`)
  • A Meta Quest developer account: https://developer.meta.com/
  • An Android project with Gradle build system

---

Step 0 — Introduction

Present this to the user:

> **Horizon Platform SDK (PSDK)** is Meta's cross-platform SDK that gives Quest apps > access to platform services. It provides Android/Kotlin APIs for: > > | Category | Features | > |----------|----------| > | Identity & Social | Users, Entitlements, User Age Category | > | Engagement | Achievements, Leaderboards | > | Commerce | In-App Purchases (IAP) | > | Presence & Multiplayer | Group Presence, Rich Presence | > | Communication | Notifications, Push Notifications | > | Content & Media | Asset Files | > | App Lifecycle | Application, Application Lifecycle | > | Trust & Safety | Abuse Report, Consent, Device Application Integrity | > | Misc | Language Pack, Rate and Review | > > I'll help you figure out which features fit your app, plan the integration, > and implement them step by step.

Then ask the user: 1. "What is your app? (brief description — genre, purpose, target audience)" 2. "What are you trying to build or improve? (e.g., 'add multiplayer leaderboards', 'monetize with IAP', or 'not sure yet — help me decide')"

**Wait for the user to answer both questions before proceeding.**

---

Step 1 — Locate the Codebase

Ask the user (skip question 1 if a path was provided as the skill argument): 1. "Where is your app's codebase? (local path)" 2. "What is the main app module name? (e.g., `app`, or unsure)"

**Wait for answers before proceeding.**

---

Step 2 — Deep Codebase Exploration

Explore the target codebase thoroughly. Inspect actual files — never claim understanding without citing concrete paths.

2.1 Discover project structure

  • Find `build.gradle.kts` / `build.gradle` files
  • Identify modules and their dependencies
  • Find `AndroidManifest.xml` for package name, permissions, activities

2.2 Analyze architecture

  • **UI framework**: Compose vs Views (look for `@Composable`, XML layouts)
  • **Architecture pattern**: MVVM, MVI, etc. (look for ViewModels, UseCases, Repositories)
  • **DI framework**: Hilt, Dagger, Koin, manual (look for `@Inject`, `@Module`, `@HiltAndroidApp`)
  • **Navigation**: Navigation Compose, Fragment navigation, custom
  • **Networking**: Retrofit, OkHttp, Ktor

2.3 Identify entry points

  • `Application` subclass
  • Main `Activity` and startup flow
  • Existing service connections or SDK initializations

2.4 Detect existing integrations

  • Any existing PSDK usage (`com.meta.horizon.platform.sdk`)
  • Other SDK integrations (Firebase, Play Services, etc.)
  • Current feature set and where new features would hook in

2.5 Check connected devices

metavr device list

2.6 Summarize findings

Present a structured summary to the user with file paths cited:

## Codebase Summary
- **Package**: com.example.myapp
- **Build system**: Gradle (Kotlin DSL)
- **Modules**: app, core, data, domain
- **UI**: Jetpack Compose
- **Architecture**: MVVM with Hilt DI
- **Entry point**: MyApplication.kt, MainActivity.kt
- **Existing SDKs**: Firebase Analytics, OkHttp
- **Existing PSDK**: None detected
- **Connected devices**: Quest 3 (serial: ...)
- **Key files inspected**: [list 5-10 files you actually read]

---

Step 3 — Suggest PSDK Features

Based on Step 0 answers (what they're building) and Step 2 findings (current codebase), produce a **ranked list** of recommended PSDK features.

For each suggestion include:

| # | Feature | Why It Fits | Integration Surface | Complexity | |---|---------|-------------|---------------------|------------| | 1 | Feature name | Reasoning based on their app | Where it hooks in | Low/Med/High |

Always include **Entitlements** as a recommended baseline (required for most platform features).

Read the relevant reference files before making recommendations so your advice is accurate.

---

Step 4 — User Selects Features

Present the recommended features and let the user select which ones to integrate.

Read more
Ships withmeta-vr

Agentic skills and tools for Meta Quest and Horizon OS development.

Get the whole plugin