From ios-simulator
Build the current repo's iOS app with xcodebuild and run it on the iOS Simulator. Use when the user asks to build, run, install, or interact with their app on the simulator.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ios-simulator:ios-simulatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Build the iOS app from the current repo, install it on the Simulator, and interact with it.
Build the iOS app from the current repo, install it on the Simulator, and interact with it.
Projects use Tuist for project generation and mise as the task runner.
mise.toml or .mise.toml at the repo root to find available tasks and tool versionsmise run generate (or the equivalent Tuist generate task) if the .xcworkspace/.xcodeproj hasn't been generated yettuist graph or xcodebuild -list on the generated workspaceThe repo defines which simulators are available. Check for simulator configuration in:
.mise.toml / mise.toml — look for simulator-related tasks or environment variablesMatchfile, Fastfile, or other config files that specify device namesProject.swift / Tuist manifests — look for destination or test plan configsBoot the simulator defined by the repo. If multiple are configured, ask the user which one. If none are booted:
xcrun simctl boot "<device name from repo config>"
Prefer mise tasks when available:
mise run build
If no mise build task exists or a custom destination is needed, fall back to xcodebuild:
xcodebuild build \
-workspace <workspace> \
-scheme <scheme> \
-destination 'platform=iOS Simulator,name=<device name>' \
-derivedDataPath build/ \
2>&1
BUILD SUCCEEDED or BUILD FAILED.app bundle will be at build/Build/Products/Debug-iphonesimulator/<AppName>.appxcrun simctl install booted build/Build/Products/Debug-iphonesimulator/<AppName>.app
xcrun simctl launch booted <bundle-id>
To find the bundle ID:
defaults read build/Build/Products/Debug-iphonesimulator/<AppName>.app/Info.plist CFBundleIdentifier
Open the Simulator UI so the user can see it:
open -a Simulator
Common interactions via xcrun simctl:
xcrun simctl io booted screenshot screenshot.png then show it with the Read toolxcrun simctl io booted recordVideo video.mp4 (Ctrl+C to stop)xcrun simctl openurl booted <url>xcrun simctl push booted <bundle-id> payload.jsonxcrun simctl terminate booted <bundle-id> then xcrun simctl launch booted <bundle-id>xcrun simctl uninstall booted <bundle-id>xcrun simctl spawn booted log stream --predicate 'subsystem == "<bundle-id>"' --level debugxcrun simctl privacy booted grant camera <bundle-id>Use Playwright MCP tools (browser_take_screenshot, browser_snapshot) if the user wants UI-level assertions or accessibility inspection beyond what simctl provides.
-derivedDataPath build/ to keep output predictable and avoid polluting ~/Library/Developer/Xcode/DerivedDataCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub mikesilvis/ai-skills --plugin ios-simulator