skills/ios-simulator/SKILL.md
--- name: ios-simulator description: Automate iOS Simulator workflows (simctl + idb): create/boot/erase devices, install/launch apps, push notifications, privacy grants, screenshots, and accessibility-based UI navigation. Use when working with iOS apps, Xcode, Simulator, simctl, idb, UI automation, or iOS testing. metadata: {"clawdbot":{"emoji":"📱","os":["darwin"],"requires":{"bins":["xcrun"]},"install":[{"brew":{"formula":"idb-companion","bins":["idb_companion"],"tap":"facebook/fb"}}]}} --- #
npx skillsauth add adamshl-oss/alfred skills/ios-simulatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides a Node-only CLI wrapper around:
xcrun simctl for simulator/device/app managementidb for accessibility-tree inspection + synthesised UI input (tap/text/button)It is designed for AI agents: minimal, structured output by default, with opt-in detail.
idb is optional, but required for UI tree / semantic tapping. (Install steps below.)# 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.png
If you are not on macOS, run the same commands on the macOS node using ClawdBot’s node execution (e.g. exec with host: node / node tools). Ensure the skill folder exists on that node, or copy it there.
--pretty to pretty-print JSON.--text for a short human-readable summary (when provided by the command).ui tree, list --full) are opt-in.select writes a state file (default: ./.ios-sim-state.json) that stores the chosen UDID.
All commands accept --udid <UUID> and otherwise fall back to the state file.
Override location with:
IOS_SIM_STATE_FILE=/path/to/state.jsonIf xcrun cannot find simctl, ensure Xcode CLI tools are selected (via Xcode settings or xcode-select) and run the first-launch setup:
xcodebuild -runFirstLaunchInstall idb_companion and the idb CLI:
brew tap facebook/fb
brew install idb-companion
python3 -m pip install --upgrade fb-idb
| Tier | Commands | Notes |
|------|----------|------|
| SAFE | list, health, boot, shutdown, screenshot, ui * | No data loss |
| CAUTION | privacy *, push, clipboard *, openurl | Alters simulator/app state |
| DANGEROUS | erase, delete | Requires --yes |
All commands live under:
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 ...] (runs until Ctrl+C)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 tree (full UI JSON array)ui find --query <text> [--limit 20]ui tap --query <text> (find + tap best match)ui tap --x <num> --y <num> (raw coordinate tap)ui type --text <text>ui button --name HOME|LOCK|SIRI|SIDE_BUTTON|APPLE_PAYSee: references/TROUBLESHOOTING.md
development
Use when building real-time communication systems with WebSockets or Socket.IO. Invoke for bidirectional messaging, horizontal scaling with Redis, presence tracking, room management.
development
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
tools
Create and deploy single-page static websites to GitHub Pages with autonomous workflow. Use when building portfolio sites, CV pages, landing pages, or any static web project that needs GitHub Pages deployment. Handles complete workflow from project initialization to live deployment with GitHub Actions automation.
tools
Plain English E2E UI testing. Describe tests in natural language, agent executes via browser tool, then exports real Playwright test scripts for CI/CD. Use when asked to create UI tests, test a website, or generate Playwright scripts.