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.svg" alt="Measured on agentmods" 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.00100 | $0.02642 |
| Opus 5 | $0.00050 | $0.01321 |
| Sonnet 5 | $0.00020 | $0.00528 |
| Haiku 4.5 | $0.00010 | $0.00264 |
Grade A, and why
ios-simulator-interaction scanned grade A with 0 findings 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 7d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 276 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.
- 7d 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 (18 stars, last pushed 12d ago), licensed MIT. It adds 100 tokens to every session and 2,642 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. 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 end-to-end 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 iOS simulators programmatically via the baguette CLI — taps, swipes, multi-finger gestures, hardware buttons (Home / Lock / Volume / Action / Power), ASCII keyboard text, and frame capture, all without opening Xcode. Use when: (1) an agent needs to drive a booted iOS simulator from a script — tap a coordinate…
argent-create-flow
Create, record, edit, replay, or repair reusable Argent flow YAML files. Use when the user asks to record or replay a repeatable device path, set up profiling or an A/B comparison, or invoke the authoring engine behind argent-qa-flows. Also use before repeating three or more interactions. For one-off UI checks…
Appium Mobile Testing
Mobile application testing skill using Appium for iOS and Android, covering device capabilities, selectors, gestures, and cross-platform testing strategies.