Loading...
Loading...
This skill should be used when the user asks to "test on iOS simulator", "run app on iPhone", "take iOS screenshot", "tap button in simulator", "automate iOS UI", "install app on simulator", "boot simulator", or when working with iOS apps, Xcode, Simulator, simctl, idb, UI automation, or iOS testing. It automates iOS Simulator workflows including device lifecycle (create/boot/erase), app management (install/launch), push notifications, privacy grants, screenshots, and accessibility-based UI navigation.
npx skill4agent add tristanmanchester/agent-skills ios-simulatorxcrun simctlidbidb# 1) Sanity check
node {baseDir}/scripts/ios-sim.mjs health
# 2) List simulators (compact)
node {baseDir}/scripts/ios-sim.mjs list
# 3) Select a default simulator (writes .ios-sim-state.json in the current dir)
node {baseDir}/scripts/ios-sim.mjs select --name "iPhone" --runtime "iOS" --boot
# 4) Install + launch an .app
node {baseDir}/scripts/ios-sim.mjs app install --app path/to/MyApp.app
node {baseDir}/scripts/ios-sim.mjs app launch --bundle-id com.example.MyApp
# 5) Inspect current UI (requires idb)
node {baseDir}/scripts/ios-sim.mjs ui summary
node {baseDir}/scripts/ios-sim.mjs ui tap --query "Log in"
node {baseDir}/scripts/ios-sim.mjs ui type --text "hello world"
# 6) Screenshot
node {baseDir}/scripts/ios-sim.mjs screenshot --out artifacts/screen.pngexechost: node--pretty--textui treelist --fullselect./.ios-sim-state.json--udid <UUID>IOS_SIM_STATE_FILE=/path/to/state.jsonxcrunsimctlxcode-selectxcodebuild -runFirstLaunchidb_companionidbbrew tap facebook/fb
brew install idb-companion
python3 -m pip install --upgrade fb-idb| Tier | Commands | Notes |
|---|---|---|
| SAFE | | No data loss |
| CAUTION | | Alters simulator/app state |
| DANGEROUS | | Requires |
node {baseDir}/scripts/ios-sim.mjs <command> [subcommand] [flags]list [--full]select --name <substr> [--runtime <substr>] [--boot]boot [--udid <uuid>] [--wait]shutdown [--udid <uuid>|--all]erase --yes [--udid <uuid>|--all]delete --yes [--udid <uuid>]create --name <name> --device-type <substr> --runtime <substr>app install --app <path/to/App.app> [--udid ...]app uninstall --bundle-id <id> [--udid ...]app launch --bundle-id <id> [--udid ...] [-- <args...>]app terminate --bundle-id <id> [--udid ...]app container --bundle-id <id> [--type data|app] [--udid ...]screenshot --out <file.png> [--udid ...]record-video --out <file.mp4> [--udid ...]clipboard get [--udid ...]clipboard set --text <text> [--udid ...]openurl --url <url> [--udid ...]privacy grant --bundle-id <id> --service <svc[,svc...]> [--udid ...]privacy revoke --bundle-id <id> --service <svc[,svc...]> [--udid ...]privacy reset --bundle-id <id> --service <svc[,svc...]> [--udid ...]push --bundle-id <id> --payload <json-string> [--udid ...]logs show [--last 5m] [--predicate <expr>] [--udid ...]ui summary [--limit 12]ui treeui find --query <text> [--limit 20]ui tap --query <text>ui tap --x <num> --y <num>ui type --text <text>ui button --name HOME|LOCK|SIRI|SIDE_BUTTON|APPLE_PAY