Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/riwsky/iosefnpx agentmods add skills/riwsky/iosef/ios-simulator-interactionWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/riwsky/iosef/ios-simulator-interaction)<a href="https://agentmods.dev/skills/riwsky/iosef/ios-simulator-interaction"><img src="https://agentmods.dev/badge/skills/riwsky/iosef/ios-simulator-interaction/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/riwsky/iosef/ios-simulator-interaction"><img src="https://agentmods.dev/badge/skills/riwsky/iosef/ios-simulator-interaction.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium MCP Rug Pull · line 263 uvx/uv tool run commands without ==version create a rug-pull risk.Fix: Pin the version: uvx package-name==1.2.3
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00107 | $0.03338 |
| Opus 5.5 | $0.00043 | $0.01335 |
| Sonnet 5.5 | $0.00021 | $0.00668 |
| Haiku 4.5 | $0.00011 | $0.00334 |
Grade B, and why
ios-simulator-interaction scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
- **"Could not load framework … SimulatorKit"?** iosef uses the Xcode chosen by `DEVELOPER_DIR`, then `xcode-select`, then `/Applications/Xcode.app`. Check which with `iosef status` (the `Xcode:` line), and point it else How it starts
The opening of the file, as written. The whole thing — 308 lines — stays where its author put it; the contents beside it link to each section on GitHub.
iOS Simulator Interaction
Use iosef (via Bash) as the primary tool for all iOS simulator interactions. Compared to idb and simctl, it:
- Lets you interact by AX-tree selectors (
--name,--role,--identifier) instead of only bare coordinates - Scales screenshots so pixel coordinates match iOS point space — no translation needed
- Infers which simulator to use from VCS root or session state
- Provides dedicated assert commands (
exists,count,text,wait) with exit codes for scripting
Getting Started
Session lifecycle:
# Create a local session (scoped to this directory)
iosef start --local --device "my-sim"
# ... do work (tap, type, describe, view, etc.) ...
# Tear down — shuts down simulator, deletes device, removes .iosef/
iosef stop
Use --local to avoid interfering with simulators used by other agents. Session state lives in .iosef/state.json — ensure .iosef/ is in .gitignore.
For existing simulators: iosef connect "iPhone 16" --local
Check session state anytime: iosef status (or iosef status --json)
Core Workflow
Inspect: describe and view
Always start with iosef describe to get the accessibility tree. The format is:
AXButton "Label" (center_x±half_width, center_y±half_height)
The center values are the tap targets. Example: AXButton "Start" (197±160, 270±22) → tap at (197, 270).
iosef describe # Full AX tree
iosef describe --depth 2 # Limit tree depth
iosef describe --x 200 --y 400 # What's at this coordinate?
iosef describe --json | jq '.. | objects | select(.role == "button")'
Use iosef view for screenshots (not simctl or idb — iosef aligns coordinate spaces):
iosef view # Screenshot to temp file (prints path)
iosef view --output /tmp/screen.png # Screenshot to specific path
Interact: tap, type, swipe
Prefer selectors over coordinates — selectors survive layout changes and scroll position shifts.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +32 lines · +7 tokens per session scan A → B cd58357a593d
- 1mo ago First seen · 276 lines · 100 tokens per session scan A 44a0312e7ab2
ios-simulator-interaction is a skill published in the GitHub repository riwsky/iosef (19 stars, last pushed yesterday), licensed MIT. It adds 107 tokens to every session and 3,338 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
testa
Autonomously E2E-test iOS apps in the Simulator — read the screen (accessibility tree OR on-device OCR), tap/type/swipe/drag-drop/pinch/rotate, manage apps, and assert results. Use when asked to test, QA, drive, or reproduce a flow in an iOS app/simulator (React Native, Expo, native SwiftUI, or any app).…
argent-test-ui-flow
Autonomously test an app UI (iOS or Android) by running interact-screenshot-verify loops using argent MCP tools. Use when testing UI flows, verifying login works, testing navigation, running UI test scenarios, manual QA steps, visible UI changes, or visual behavior.
mobile-automation
Control Android and iOS devices, emulators and simulators — launch apps, tap, swipe, type, take screenshots, read the accessibility tree. Use when a task involves a mobile device or app, mobile UI testing, or reproducing a bug on a phone.
baguette
Drive and inspect iOS simulators with the baguette CLI: taps, swipes, buttons, typing, screenshots, the accessibility tree, logs, and the conditions an app runs under (location, network, appearance, push, UserDefaults), without opening Xcode. Use when an agent must act on or verify a running simulator — a UI flow…
ios-simulator-skill
Build, test, and drive iOS apps in the Simulator with 30 token-efficient scripts. Use when asked to build or test an Xcode project, launch an app on a simulator, tap/type/swipe through its UI by accessibility label, take screenshots or visual diffs, audit accessibility, read logs or diagnose hangs, or manage…
argent-qa-e2e
Write repeatable QA regression e2e tests from test cases, tickets, or acceptance criteria. Use when the user asks to write, automate, or generate an e2e test or preserve an automated regression scenario, with deterministic setup, stable targets, executable structural or visual evidence, and two consecutive full…