---
title: "ios-simulator by tristanmanchester · skilld"
canonical_url: "https://skilld.dev/gh/tristanmanchester/ios-simulator"
meta:
  description: "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… From tristanmanchester/ios-simulator."
  "og:description": "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… From tristanmanchester/ios-simulator."
  "og:title": "ios-simulator by tristanmanchester"
  "twitter:description": "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… From tristanmanchester/ios-simulator."
  "twitter:title": "ios-simulator by tristanmanchester"
---

`

[All skills](https://skilld.dev/skills)

[![tristanmanchester avatar](https://skilld.dev/_img/avatar?url=https%3A%2F%2Fgithub.com%2Ftristanmanchester.png%3Fsize%3D96)](https://skilld.dev/gh/tristanmanchester)

# **/ios-simulator**

[@15091d2](https://github.com/tristanmanchester/ios-simulator/commit/15091d2b06e6ad29bdfc5ca95f6542a9f9573c66 "Your agent reads SKILL.md at commit 15091d2")

by [Tristan Manchester](https://skilld.dev/gh/tristanmanchester)· [tristanmanchester](https://skilld.dev/gh/tristanmanchester)/ [ios-simulator](https://skilld.dev/gh/tristanmanchester/ios-simulator)

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.

- 1 file
- 5.4 KB
- Updated 8 months ago
- [GitHub](https://github.com/tristanmanchester/ios-simulator/blob/15091d2b06e6ad29bdfc5ca95f6542a9f9573c66/SKILL.md "View SKILL.md on GitHub")
- [2 warnings](#third-party-checks "Third-party checks: 2 warnings · 4 checks · Risk SAFE")

## SKILL.md

5.4 KB

**≈131** tokens always: the name and description. **≈1.2k** when used: this file.

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

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

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

```
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](https://skilld.dev/gh/tristanmanchester/ios-simulator/ios-simulator/-/references/TROUBLESHOOTING.md)

Source: [SKILL.md on GitHub](https://github.com/tristanmanchester/ios-simulator/blob/15091d2b06e6ad29bdfc5ca95f6542a9f9573c66/SKILL.md)

## Third-party checks

<details>

<summary>2 warnings7mo4 checks · Risk SAFE</summary>



- Gen Agent Trust Hub7mo

  This skill automates iOS simulators using system tools like xcrun and idb. It is generally safe and follows best practices for command execution, but it includes the ability to access sensitive information like simulator logs and the clipboard, and it possesses a low-risk surface for indirect prompt injection when inspecting external application UIs.
- Socket7mo

  No alerts
- Snyk7mo

  Risk: MEDIUM · No issues
- Runlayer7mo

  3/4 files flagged

</details>

## Provenance

[Signed by skilld at 15091d2.](https://github.com/tristanmanchester/ios-simulator/commit/15091d2b06e6ad29bdfc5ca95f6542a9f9573c66 "15091d2b06e6ad29bdfc5ca95f6542a9f9573c66") This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 4 days ago.

Dormantupdated 8 months ago

## Capability

<details>

<summary>Other metadata</summary>



<dl>

<dt>metadata</dt>
<dd>

```
{
  "clawdbot": {
    "emoji": "📱",
    "os": [
      "darwin"
    ],
    "requires": {
      "bins": [
        "xcrun"
      ]
    },
    "install": [
      {
        "brew": {
          "formula": "idb-companion",
          "bins": [
            "idb_companion"
          ],
          "tap": "facebook/fb"
        }
      }
    ]
  }
}
```

</dd>

</dl></details>



## README badge

![README badge for tristanmanchester/ios-simulator](https://skilld.dev/b/tristanmanchester/ios-simulator?theme=light&label=0)

## Related skills

-
-
-
-
-
-