limrun-ios-simulator
Drive an app running on a Limrun cloud iOS simulator: launch, tap, type, read the accessibility element tree, screenshot, record video, and run timed action chains. Use after a build (from any builder) when the user wants to see, test, or interact with their app on a simulator, or says 'show me a screenshot', 'tap', 'run the UI test', 'record a video', or 'launch on simulator'. To build the app first, use limrun-xcode-bazel (Bazel workspaces) or limrun-xcode (xcodebuild projects).
Security Assessment
About limrun-ios-simulator
This skill drives an app running on a Limrun cloud iOS simulator from any environment (Linux, Windows, macOS, VM, or container), so an agent can see and interact with an iOS app without local Xcode or a local Mac. It solves the problem of testing and demoing iOS apps in headless or non-Mac environments by exposing launch, tap, type, accessibility element-tree reading, screenshots, video recording, and timed action chains through the `lim` CLI. It is build-agnostic and assumes the app was already built and installed by a companion build skill (limrun-xcode-bazel for Bazel workspaces or limrun-xcode for xcodebuild projects).
The skill covers installing the `lim` CLI via npm, authenticating with `lim login` or a LIM_API_KEY environment variable, and creating or attaching a cloud simulator (including syncing a pre-built local .ipa or .app that patches only the diff on re-sync). It documents pragmatic operational details: resolving the correct instance ID from the git worktree and passing --id to every command when it can't auto-resolve, launching and terminating apps by bundle ID with live log streaming, and preferring accessibility-id taps over label taps over raw coordinates. It also captures real-world quirks, such as SwiftUI collapsing toolbar/nav-bar items so they must be tapped by reading their AXFrame and tapping the center by coordinate, and re-reading the element tree after each interaction to confirm UI transitions. It treats the CLI's --help output as the source of truth rather than guessing at flags.
Target users are iOS developers and QA engineers running UI smoke tests, capturing screenshots or videos, and interacting with an app on a cloud simulator, especially from non-Mac CI or agent environments. It relies on the official Limrun CLI and standard API-key authentication.
FAQ
Do I need a Mac or local Xcode?
No. It runs from any environment (Linux, Windows, macOS, VM, or container) and explicitly instructs never using local Xcode, local simulators, or local macOS tools — all interaction goes through the Limrun cloud simulator via the lim CLI.
How do I install and authenticate the CLI?
Install with npm install --global lim, then authenticate with lim login or a LIM_API_KEY environment variable (which may already be set outside the project).
Does this skill build the app?
No. It is build-agnostic and assumes the app was already built and installed by a build skill — limrun-xcode-bazel for Bazel workspaces or limrun-xcode for xcodebuild projects. It can also sync a pre-built local .ipa or .app to the simulator.
How should I interact with UI elements?
Prefer tapping by accessibility id, then by label, then by coordinates as a last resort, and re-read the element tree after each action to confirm the UI transitioned. Nav-bar / toolbar items in SwiftUI often lack a unique id and must be tapped by their AXFrame center coordinate.
Why do lim ios commands sometimes say no instance is found?
Commands resolve the current instance from the git repo/worktree of your cwd, so they can fail when the cwd isn't that worktree. The fix is to get the ID from lim xcode get (or lim ios list) and pass --id to every lim ios command, or git init the project.
Install limrun-ios-simulator
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
limrun-inc/skills