prototype
MAmattpocock/skills288k10,178 new stars in the last 7 days
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.
vphone runs a virtual iPhone on an Apple Silicon Mac through Virtualization.framework. Two pieces matter to you:
| Piece | Role |
|---|---|
vphone-launchpad (Mac app) | Downloads and verifies VPhone.bundle, creates machines, runs them. Owns the only root helper. |
vphone-launchpad-cli | A 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.
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).Pick the reference for the task, and read it before acting.
| Task | Read |
|---|---|
| Install Launchpad or a bundle, host requirements, series matching | references/install.md |
An install step failed: "damaged", Developer Tools access turns off, several macOS installations, zsh: killed, not Apple silicon | references/install-faq.md |
| Create, start, stop, retry, update a machine, change its Core Bundle | references/machines.md |
Tap, swipe, key, screenshot, anything on vphone.sock | references/guest-socket.md |
| Call a vphoned method: apps, files, logs, UI tree, processes | references/rpc-methods.md |
| Installing an IPA | references/rpc-methods.md |
roothide vs rootless, installing the bootstrap, ssh, /rootfs, handing files to vphoned, .deb | references/guest-layout.md |
| Black screen, timeouts, AMFI, "客体代理未连接" | references/troubleshooting.md |
| A symptom the above does not cover; which research note or source explains it | references/finding-docs.md |
Verify with the guest, not with assumptions. After an input, take a
screenshot or read ui.describe; after a launch, check apps.foreground.
The guest is a real device with timing, so a command that returned ok has
not necessarily produced the visible result.
vphone-launchpad-cli help prints every command with its options and is
authoritative if this skill and the installed version disagree.guest rpc myphone apps.launch '{"bundle_id":"com.apple.Preferences"}'.exec, waits and CFW install. A bundle install
or a machine creation belongs to the app window and keeps going, so do not
start a second one because the CLI went quiet; run vm log <name> --kind create.--root <library> only when two libraries hold a machine with the same
name; the error lists the libraries.These exist because each one has cost the user real time or disk before.
vm create to reproduce a
problem; diagnose on the existing guest. A creation takes tens of GB and
several restarts, and a half-built machine is harder to clean up than the bug.bundle accept, bundle remove, cfw install or a
second vm create over existing work unless the user asked. Report what is
needed; the Mac's owner decides.force methods need the user's intent. processes.kill, services.stop,
apps.uninstall, system.respring, system.reboot, system.shutdown and
similar refuse to run without "force":true. Passing it is the confirmation,
so pass it only for an action the user asked for.~/.vphone/machines/<name>/) while it runs.
Use RPC for guest files instead.--api-listen sends its token in
clear text.ideviceinstaller) when the point is to
test installation; apps.install bypasses installd. Never use
xcrun devicectl to install or launch (it times out); listing devices is fine.Research/ notes quote real failures; see
references/finding-docs.md.MAmattpocock/skills288k10,178 new stars in the last 7 days
AFaffaan-m/ECC278k4,046 new stars in the last 7 days
FIfirecrawl/firecrawl191k2,010 new stars in the last 7 days
Set visual direction and typography for UI, avoiding templated defaults.
ANanthropics/skills181k1,119 new stars in the last 7 days
Apply color and font themes to slides, docs and web pages, with 10 built-in themes.
ANanthropics/skills181k1,119 new stars in the last 7 days
Build complex HTML artifacts with React, Tailwind CSS, state management and routing.
ANanthropics/skills181k1,119 new stars in the last 7 days