Index of every page on this site: llms.txt
All skills
Run it yourself

Run and inspect an app on an iOS Simulator: choose a target, install and launch, capture evidence, exercise accessibility-driven UI, and diagnose simulator failures. Use for explicit simulator testing or automation, not general iOS implementation, physical-device validation, or App Store approval.

Use this Skill: https://skilld.dev/gh/tristanmanchester/agent-skills/ios-simulator

Nothing lands on disk. Nothing to clean up.

Fork this Skill

Edit a local copy. It keeps the author and licence.

referencesOPERATIONS.md

≈1.1k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Operations and diagnosis

Use an explicit UDID and inspect installed simctl help/idb --help before using optional flags. Do not add || true to mutation commands. Native nonzero results must be explained and reconciled, not converted to success.

Native operations

Examples use the selected simulator, never all:

xcrun simctl list --json
xcrun simctl boot "$UDID"
xcrun simctl bootstatus "$UDID" -b
xcrun simctl shutdown "$UDID"
xcrun simctl get_app_container "$UDID" com.example.MyApp data
xcrun simctl terminate "$UDID" com.example.MyApp

For creation, select exact available device-type and runtime identifiers from the inventory, then use xcrun simctl create NAME TYPE_ID RUNTIME_ID. Record the returned UDID. Erase/delete/uninstall require a deliberately authorised target and loss assessment; verify the result with inventory or app state. They are not generic troubleshooting steps.

Accessibility

idb ui describe-all --udid "$UDID"
idb ui describe 'login.submit' --match-key AXUniqueId --udid "$UDID"
idb ui tap 'login.submit' --match-key AXUniqueId --expected-value 'Log in' --udid "$UDID"
idb ui button HOME --udid "$UDID"

These marker/guard options require a current implementation advertising them in help. Markers use substring matching and may choose the first result. Inspect the complete relevant candidate set, enabled/interactable state, and intended label before acting. Truncated/depth-limited output is not proof of uniqueness. Use accessibility IDs exposed by the app, not invented IDs from this example.

Reads support different output formats/backends; inspect the schema actually returned rather than assuming every response is a flat array. A missing node can mean wrong frontmost app, inaccessible content, incomplete depth, or backend limitations. Consult the upstream accessibility guide before switching backend. Bound waits by a deadline and report the last observed state; never poll forever.

Evidence, permissions, and input

  • Screenshot: xcrun simctl io "$UDID" screenshot /absolute/path/screen.png. Verify the created file and its contents. Use unique private output paths.
  • Video: xcrun simctl io "$UDID" recordVideo /absolute/path/flow.mp4 in a controlled foreground session. Stop cleanly, allow finalisation, then inspect the recording. A killed recorder may leave an unusable file.
  • Logs: xcrun simctl spawn "$UDID" log show --last 5m --predicate 'process == "MyApp"'. Bound time and filters; logs may contain personal data and tokens.
  • Clipboard: xcrun simctl pbpaste "$UDID" / xcrun simctl pbcopy "$UDID" (copy reads stdin). Use native input piping, not the runner, whose stdin is deliberately closed.
  • URL: xcrun simctl openurl "$UDID" URL. Deep links can mutate remote state.
  • Privacy: xcrun simctl privacy "$UDID" grant SERVICE BUNDLE_ID; also inspect help for revoke/reset and supported service names. Verify requested permissions in-app.
  • Push: xcrun simctl push "$UDID" BUNDLE_ID /absolute/path/payload.apns. Create the JSON privately, verify its intended app/payload, then remove the temporary file. Simulated delivery does not test production APNs registration or routing.

Diagnosis

Check selected developer directory and installed runtimes before changing them. Prefer an explicitly scoped DEVELOPER_DIR over changing the entire machine's Xcode selection without permission. First-launch setup and runtime installation are real host changes. Missing CLT-only simctl support needs full Xcode.

For idb, verify the actual companion target, host architecture, Xcode selection, and client/companion versions. An executable in PATH is not a working connection. Use loopback/local sockets or an explicitly secured remote connection. Check the frontmost app and read its tree before retrying input.

For repeatable app assertions, prefer the project's XCTest/XCUITest suite and retain the test result bundle. Installing a test bundle or launching a test is not equivalent to an assertion passing. Keep simulator-only limitations in the report and reserve hardware/performance/billing checks for appropriate devices.

Sources reviewed 2026-09-13

Source: SKILL.md on GitHub

skilld matched fixed text patterns in SKILL.md and file names. Patterns miss obfuscated code.

skilld run checks every file with the same patterns. It asks for approval before it loads a Skill with a behavior marked Needs approval.

1 warning1mo5 checks · Risk SAFE
  • Gen Agent Trust Hub1mo

    This skill provides automation for iOS Simulators on macOS using standard developer tools. It follows security best practices for command execution and includes dependencies from trusted sources. It possesses an indirect prompt injection surface as it processes accessibility UI data from the simulator environment, which is a common characteristic of automation tools.

  • Socket1mo

    No alerts

  • Snyk1mo

    Risk: LOW · No issues

  • Runlayer8mo

    4/5 files flagged

  • ZeroLeaks6mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 3323bc9. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 weeks ago.

Steadyupdated last month
metadata
{
  "version": "2.0.0",
  "reviewed": "2026-09-13"
}
Other metadata
compatibility
Local simctl needs macOS and full Xcode with an installed simulator runtime. Current idb companion binaries require arm64, macOS 15+, and Xcode 26+; a remote client can run elsewhere. The optional checked runner requires Node.js 22+.

README badge

README badge for tristanmanchester/agent-skills/ios-simulator