Skills

Vphone Guest Control

Install vphone-launchpad and VPhone.bundle, create and run vphone virtual iPhones, and...

Install

npx skills add Lakr233/vphone-cli --skill vphone-guest-control -g -a claude-code -y
Repository
Lakr233/vphone-cli16.3k
Category
Design
Updated
4d ago
License
MIT
Context cost
Lightabout 1,402 tokens
Runs scripts
No, instructions only

What it does

Install vphone-launchpad and VPhone.bundle, create and run vphone virtual iPhones, and drive a running guest from the command line with vphone-launchpad-cli and the per-machine vphone.sock. Make sure to use this skill whenever the user mentions vphone, vphone-launchpad, vphone-launchpad-cli, VPhone.bundle, vphoned, vphone.sock, or a virtual iPhone on their Mac, even if they do not name the tool. That includes setting vphone up, creating/starting/stopping a machine, tapping/swiping/typing/taking screenshots in the guest, calling a vphoned method (apps, files, logs, processes, UI tree), installing an IPA into a guest, installing the roothide/rootless bootstrap (Irisin), ssh into a guest, installing a .deb, or debugging a guest that shows a black screen or will not boot to the UI.

Driving vphone

vphone runs a virtual iPhone on an Apple Silicon Mac through Virtualization.framework. Two pieces matter to you:

PieceRole
vphone-launchpad (Mac app)Downloads and verifies VPhone.bundle, creates machines, runs them. Owns the only root helper.
vphone-launchpad-cliA stateless client of the running app. Every command also appears in the app's window and history.

Use vphone-launchpad-cli for everything. The app does the privileged and signed work for you; a second route (sudo, a copy of vphone-cli, devicectl) either lacks the entitlements, bypasses the checks the app records, or times out against these guests.

How a session should go

  1. Find out where the user is. Run vphone-launchpad-cli status. If the command does not exist, go to install. Otherwise the JSON tells you the next step:
    • canInstallBundles: false or helper not ready: the user must finish Host Setup in the app (administrator password, Developer Tools access). You cannot do this for them; say exactly what is missing.
    • defaultBundle: null or bundleReady: false: install or verify a bundle. Each machine runs with its own bundle (vm list → bundle); the default only decides what new machines get.
    • machines: 0: create one (machines).
    • Otherwise: list machines, start the one the user named, then control it.
  2. Pick the reference for the task, and read it before acting.
Read the whole SKILL.md on GitHub

More in Design