---
name: ios-simulator-9a875940fbc8
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"}}]}}
---

# iOS Simulator Automation

This skill provides a **Node-only** CLI wrapper around:
- `xcrun simctl` for simulator/device/app management
- `idb` 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.

## Important constraints

- **Must run on macOS** with Xcode Command Line Tools (or Xcode) available.
- If the ClawdBot gateway is not macOS, run these commands on a connected **macOS node** (see “Remote macOS node” below).  
- `idb` is optional, but required for UI tree / semantic tapping. (Install steps below.)

## Quick start

```bash
# 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
```

## Remote macOS node

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.

## Output conventions (token-efficient)

- Default output: **single-line JSON** (small summary object).
- Add `--pretty` to pretty-print JSON.
- Add `--text` for a short human-readable summary (when provided by the command).
- Commands that can be huge (`ui tree`, `list --full`) are **opt-in**.

## State / default UDID

`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.json`

## Dependency notes

### Xcode / simctl availability
If `xcrun` cannot find `simctl`, ensure Xcode CLI tools are selected (via Xcode settings or `xcode-select`) and run the first-launch setup:
- `xcodebuild -runFirstLaunch`

### idb (for accessibility automation)
Install `idb_companion` and the `idb` CLI:
```bash
brew tap facebook/fb
brew install idb-companion
python3 -m pip install --upgrade fb-idb
```

## Safety tiers

| 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` |

## Command index

All commands live under:
```bash
node {baseDir}/scripts/ios-sim.mjs <command> [subcommand] [flags]
```

### Core simulator lifecycle
- `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 management
- `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 ...]`

### Screenshots & video
- `screenshot --out <file.png> [--udid ...]`
- `record-video --out <file.mp4> [--udid ...]` (runs until Ctrl+C)

### Clipboard / URL
- `clipboard get [--udid ...]`
- `clipboard set --text <text> [--udid ...]`
- `openurl --url <url> [--udid ...]`

### Simulator permissions & push notifications
- `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
- `logs show [--last 5m] [--predicate <expr>] [--udid ...]`

### Accessibility-driven UI automation (requires idb)
- `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_PAY`

## Troubleshooting

See: [references/TROUBLESHOOTING.md](references/TROUBLESHOOTING.md)


---
Source attribution: kbarbel640-del
Original project: https://github.com/kbarbel640-del/skills/blob/e7e336ac628c3e3bd771aff1aaa469c93778f94a/skills/tristanmanchester/ios-simulator/SKILL.md
License: MIT
License information: https://opensource.org/license/mit
Original upstream instructions; downloaded from Dave AI.

## Upstream license notice

MIT License

Copyright (c) 2026 clawdbot

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



# Dave AI resource metadata

Creator / publisher: kbarbel640-del
Original project: https://github.com/kbarbel640-del/skills/blob/e7e336ac628c3e3bd771aff1aaa469c93778f94a/skills/tristanmanchester/ios-simulator/SKILL.md
Attribution basis: Source repository record

Fields of work: Development & Engineering, Product Management
Roles: Mobile Developer, Product Manager, QA / Test Engineer
Specialties: Mobile, Testing
Tools: Idb, Xcrun
Country applicability: Country not specified
Classification basis: Source catalog labels
Instruction SHA-256: 94ce937b03e02f40bd79e0e2d7f7f0611ca49e5ef46a45df6233107bbf7fba14
