Install
$ agentstack add skill-simiancraft-simiancraft-skills-expo-ios-simulator ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Expo on the iOS Simulator (layer on top of ios-simulator)
Everything here is Expo / React-Native runtime behavior, not the simulator itself (that is ios-simulator, which boots devices, captures screenshots, and grants permissions). This skill gets an Expo app running on a booted simulator and clears the Expo-specific overlays that stall automation. For "make the app driveable" see mobile-accessibility.
Before anything
A booted simulator and AXe installed; that is ios-simulator prerequisites.md. This skill discovers everything app-specific (bundle id, scheme) from the app config; it never hardcodes a project's nouns.
The loop
- Pick an execution mode (
references/execution-modes.md): Expo Go, a development
build (dev client), Storybook-mobile, or web-on-mobile. The choice is forced by whether the app has custom native code.
- Get the app on the device. Pure-JS app: Expo Go installs and launches it for you
(references/expo-go.md). Anything with native modules or a config plugin: build and install a dev client (references/development-builds.md), then serve Metro and connect by deep link.
- Clear the recurring prompts (
references/known-prompts.md): the "Open in app?"
deep-link dialog, the push-token alert that re-fires and stacks on each reload, and the dev menu; avoid the element-inspector trap. Clear each by accessibility, never coordinates.
- Drive it. The driving primitive is ios-simulator
references/driving.md
(axe tap --id / --label); what makes the app addressable is mobile-accessibility.
Rules
- Discover bundle id and scheme from the app config; never hardcode them.
- Never drive a bundling app. Two readiness gates sit between "launched" and "driveable":
Metro serving (curl /status) and the first bundle finishing (the tree grows labels); both recipes are in references/development-builds.md. Taps dispatched before them report success and do nothing.
- Clear every Expo dialog and overlay by accessibility (
axe tap --label), not coordinates. - Every factual claim here and in the references cites a primary source (Expo, Apple, AXe's
own help); a prior-art skill is never a source.
Out of scope
- The simulator itself, its chrome, capture, and permissions: ios-simulator.
- What makes an app addressable (accessibility props): mobile-accessibility.
- The dev menu's items and React Native DevTools (shared with Android): expo-developer-tools.
- Build, runtime, and automation failures: ios-simulator-triage.
References
references/execution-modes.md: the four ways to run an Expo app and when to use each.references/expo-go.md: the Expo Go path and its fixed-native-set limit.references/development-builds.md: building and connecting a dev client.references/known-prompts.md: the recurring dialogs, the dev menu, and the inspector trap.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: simiancraft
- Source: simiancraft/simiancraft-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.