Borrowing it
Nothing to install: this file belongs to DebugSwift/XcodeBazelMCP. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/DebugSwift/XcodeBazelMCP/main/.agents/skills/simulator-workflow/SKILL.mdgit clone --depth 1 https://github.com/DebugSwift/XcodeBazelMCPWrote 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/debugswift/xcodebazelmcp/simulator-workflow)<a href="https://agentmods.dev/skills/debugswift/xcodebazelmcp/simulator-workflow"><img src="https://agentmods.dev/badge/skills/debugswift/xcodebazelmcp/simulator-workflow/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/debugswift/xcodebazelmcp/simulator-workflow"><img src="https://agentmods.dev/badge/skills/debugswift/xcodebazelmcp/simulator-workflow.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.00040 | $0.00699 |
| Opus 5.5 | $0.00016 | $0.00280 |
| Sonnet 5.5 | $0.00008 | $0.00140 |
| Haiku 4.5 | $0.00004 | $0.00070 |
Grade A, and why
simulator-workflow scanned grade A 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 2mo 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.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
6. **Read bundle ID** — `plutil -convert json -o -` on `Info.plist` (sync `execSync`) How it starts
The opening of the file, as written. The whole thing — 60 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Simulator Workflow
Build + Run + Launch Chain
The bazel_ios_build_and_run tool chains these steps (each failure short-circuits):
- Build —
bazel build <target> - Find app — search
bazel-bin/using target label's package path - Resolve simulator — priority: explicit UDID > name match > first booted > first available iPhone > first available device
- Boot — lazy, only
simctl bootif state !=Booted - Install —
simctl install <udid> <app_path> - Read bundle ID —
plutil -convert json -o -onInfo.plist(syncexecSync) - Launch —
simctl launch <udid> <bundleId>
App Bundle Discovery
- After
bazel build, searchbazel-bin/using the target label's package path. - Target
//:Foo→bazel-bin/Foo.app,//Apps/Bar:Bar→bazel-bin/Apps/Bar/Bar.app. rules_appleplaces bundles inside<target>_archive-root/Payload/—findAppBundlesearches recursively.
Simulator Resolution
resolveSimulator returns { device: SimulatorDevice; warning?: string }:
warningis set when the resolved simulator is not the explicitly requested one (fallback).resolveSimulatorFromArgsinhelpers.tsis the convenience wrapper — returns{ sim, warning }.prependWarning(message, warning)prepends the warning to tool output.
Launch Environment Variables
Env vars are passed via SIMCTL_CHILD_* prefix convention — simctl forwards them to the launched process.
For Cursor DEBUG MODE (NDJSON hypothesis logs), use the swift-agent-debug-log skill and bazel_ios_agent_debug_* tools:
AGENT_DEBUG_LOG_PATH/AGENT_DEBUG_SESSION_IDvialaunchEnvonbuild_and_runoragent_debug_repro- Simulator fallback:
Documents/agent-debug.ndjson+bazel_ios_agent_debug_log_pull - Do not rely on the sim app writing directly to
.cursor/debug-*.logon the host
Platform CPU Flags
| Platform | Flag |
|---|---|
| iOS simulator | --ios_multi_cpus=sim_arm64 |
| iOS device | --ios_multi_cpus=arm64 |
| macOS | (none — host arch) |
| tvOS | --tvos_cpus=sim_arm64 |
| watchOS | --watchos_cpus=arm64 |
| visionOS | --visionos_cpus=sim_arm64 |
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.
- 2mo ago First seen · 60 lines · 40 tokens per session scan A 618cbaadf51c
simulator-workflow is a skill published in the GitHub repository DebugSwift/XcodeBazelMCP (8 stars, last pushed 3mo ago), licensed MIT. It adds 40 tokens to every session and 699 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
mobiloop-mobile-qa
Test mobile apps with MobiLoop MCP, collect device evidence, and fix and retest confirmed failures within the user's scope. Use for Flutter, React Native, Android, or iOS QA on an emulator, simulator, or device, including relevant mobile security checks.
xcforge
Complete reference for xcforge — 104 MCP tools (114 with the diagnose group) + 113 CLI commands for iOS development. Covers build, test, simulator, physical devices, SPM, UI automation, screenshots, logs, git, visual regression, accessibility, localization, session profiles, diagnosis workflows, plan execution, LLDB…
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…
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…