🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@limrun/cli

Package Overview
Dependencies
Maintainers
4
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@limrun/cli - npm Package Compare versions

Comparing version
0.7.1
to
0.7.2
+1
-1
package.json
{
"name": "@limrun/cli",
"version": "0.7.1",
"version": "0.7.2",
"description": "Use remote XCode, iOS Simulator, Android Emulator and more to build and test apps from Linux, Windows or macOS.",

@@ -5,0 +5,0 @@ "bin": {

---
name: limrun-ios
description: "Replaces xcodebuild with remote XCode and Simulators, plus full iOS UI control. Use when the user wants to build, run, or launch an iOS app, test iOS UI, interact with the simulator (tap, click, type into, scroll), inspect the screen, capture a screenshot, or record a video. Triggers on phrases like 'run it', 'build it', 'test it', 'show me a screenshot', 'launch on simulator', 'tap the button', or 'type into the field'."
name: limrun-skill
description: "Replaces xcodebuild with remote XCode and Simulators. Use when the user wants to build or run an iOS app, test iOS UI, see their app on a simulator, or says 'run it', 'build it', 'test it', 'show me a screenshot', or 'launch on simulator'."
user-invocable: true
effort: high
---

@@ -8,3 +10,3 @@

You are an iOS build-and-test operator. Your job is to get the user's iOS app running on a Limrun cloud simulator, verify it works, and iterate until the user is satisfied.
You are an iOS build-and-test operator. Your job is to get the user's iOS app running on a Limrun cloud simulator, verify it works, and iterate until the user is satisfied.

@@ -16,3 +18,2 @@ All builds and simulator operations run on Limrun and that's why you can build iOS

If `lim` CLI is not installed, you can install it with the following:
```bash

@@ -22,19 +23,5 @@ npm install --global @limrun/cli

## Check the CLI for current commands and flags
The CLI is the source of truth for command names, flags, and behavior. Before invoking any `lim` command you have not already used in this session, MUST run its `--help` first. The examples below are happy-path only; this skill intentionally does not embed the full reference because it would rot. Use:
```bash
lim ios --help # list all iOS subcommands
lim ios <subcommand> --help # flags and examples for one iOS subcommand
lim xcode --help # list all xcode subcommands
lim xcode <subcommand> --help # flags and examples for one xcode subcommand
lim session --help # list all session subcommands
lim session <subcommand> --help # flags and examples for one session subcommand
```
## Build and Reload
First, create an XCode & iOS Simulator pair:
```bash

@@ -47,17 +34,8 @@ # Add label selector depending on your identifiers. For example, Linear issue, repo name etc.

--label agent=<Your Agent Name>
# Example call: lim xcode create --reuse-if-exists --label issue=LIM-34 --label repo=sample-native-app --label agent=cursor
```
The command output includes the instance ID (e.g. `ios_abc123`) and a `Signed Stream URL:`. Share that URL with the user so they can watch the simulator while you work. If you have a browser you can drive, open the URL in that browser and notify the user.
In the command output, there will be a signed stream URL. Share that with user so that they can watch the simulator while you are working.
If you have a browser that user can see, open the signed stream URL in that browser and notify the user.
### Start a session for fast interaction
Right after creating the instance, start a session so subsequent interaction commands are fast:
```bash
# ID comes from the create output above. Always pass --id explicitly in agent workflows.
lim session start --id <instance-id>
```
Every `tap`, `type`, `element-tree`, `screenshot`, `record`, and `perform` command auto-routes through this session at ~50ms instead of ~2s. `lim ios delete` will auto-stop the session at cleanup; no separate `session stop` step is required.
### Build

@@ -103,3 +81,2 @@

Generally, start with getting an element tree:
```bash

@@ -110,3 +87,2 @@ lim ios element-tree

Then if a single action will be taken, just call it. For example:
```bash

@@ -120,8 +96,5 @@ lim ios tap-element --ax-label Continue

Some examples:
```bash
lim ios perform --action type=tap,x=100,y=200 --action "type=typeText,text=Hello World"
```
```bash
lim ios perform --action type=wait,durationMs=1000 --action type=pressKey,key=enter

@@ -131,3 +104,2 @@ ```

You can write to a file and execute that too:
```bash

@@ -145,3 +117,2 @@ lim ios perform --file ./actions.yaml

Start recording (non-blocking):
```bash

@@ -152,3 +123,2 @@ lim ios record start

Stop and save recording:
```bash

@@ -160,12 +130,16 @@ lim ios record stop -o /tmp/recording.mp4

When you are wrapping up changes, produce a shareable build artifact so the user can test it themselves:
When you are done with the changes and present to the user, you should provide a
preview link to the user so they can test it.
```bash
ASSET_NAME="<bundle-id-or-pr-number-or-session-identifier>.zip"
If you will open a PR, make sure to do this and add the preview link to PR.
First build and make remote xcode upload the build:
```
ASSET_NAME="<bundle id/pr number/ or any session identifier>.zip"
lim xcode build . --upload ${ASSET_NAME}
```
Then share a preview link with the user (substitute the asset name above):
And construct this link for preview:
```
# Change ${ASSET_NAME} with asset name given above
https://console.limrun.com/preview?asset=${ASSET_NAME}&platform=ios

@@ -193,1 +167,156 @@ ```

- **Bundle ID discovery.** If you don't know the bundle ID, check the Xcode project files or run `lim ios list-apps` after a successful build.
## References
```bash
> lim ios
Execute any task on remote iOS Simulators: create, list, get, delete, info, list-apps, launch-app, terminate-app, app-log, syslog, sync, screenshot, tap, tap-element, element-tree, type, press-key, toggle-keyboard, scroll, open-url, install-app, record, perform, simctl, cp, xcrun, xcodebuild, lsof
USAGE
$ lim ios COMMAND
COMMANDS
ios app-log Stream or tail app logs from a running iOS instance
ios cp Copy a local file into the iOS sandbox
ios create Create a new iOS instance
ios delete Delete an iOS instance
ios element-tree Get the UI element tree from a running iOS instance
ios get Get details for a specific iOS instance
ios info Get device information from a running iOS instance
ios install-app Install an app on a running iOS instance
ios launch-app Launch an app on a running iOS instance
ios list List iOS instances
ios list-apps List installed apps on a running iOS instance
ios lsof List open files on a running iOS instance
ios open-url Open a URL on a running iOS instance
ios perform Perform multiple iOS actions in a single batch
ios press-key Press a key on a running iOS instance
ios record Start or stop video recording on a running iOS instance
ios screenshot Capture the current screen from a running Android instance and save the image to a file.
ios scroll Scroll on a running iOS instance
ios simctl Run simctl on a running iOS instance
ios sync Sync a built app bundle to a running iOS instance
ios syslog Stream syslog from a running iOS instance
ios tap Tap at coordinates on a running iOS instance
ios tap-element Tap an iOS element by accessibility selector
ios terminate-app Terminate an app on a running iOS instance
ios toggle-keyboard Toggle the iOS software keyboard
ios type Type text into the focused iOS input field
ios xcodebuild Run xcodebuild on a running iOS instance
ios xcrun Run xcrun on a running iOS instance
```
```bash
> lim ios perform --help
Perform multiple iOS actions in a single batch
USAGE
$ lim ios perform [--api-key <value>] [--json] [--quiet] [--create]
[--id <value>] [--action <value>...] [-f <value>] [--timeout <value>]
FLAGS
-f, --file=<value>
Path to a YAML or JSON file containing an array of action objects.
JSON example:
[
{ "type": "tap", "x": 100, "y": 200 },
{ "type": "typeText", "text": "Hello World" }
]
YAML example:
- type: tap
x: 100
y: 200
- type: typeText
text: "Hello World"
--action=<value>...
Action definition as comma-separated key=value pairs; repeat for multiple
actions.
Available action types:
- Tap on coordinate: type=tap,x=100,y=200
- Tap on element by using a selector:
type=tapElement,selector={"AXLabel":"Submit"}
- Increment an element by using a selector:
type=incrementElement,selector={"AXLabel":"Volume"}
- Decrement an element by using a selector:
type=decrementElement,selector={"AXLabel":"Volume"}
- Set an element value by using a selector:
type=setElementValue,text=42,selector={"AXLabel":"Counter"}
- Type text into the focused field: type=typeText,text=Hello
World,pressEnter=true
- Press a key with optional modifiers:
type=pressKey,key=a,modifiers=["shift"]
- Scroll the screen:
type=scroll,direction=down,pixels=300,coordinate=[200,400],momentum=0.2
- Toggle the software keyboard: type=toggleKeyboard
- Open a URL or deep link: type=openUrl,url=https://example.com
- Set device orientation: type=setOrientation,orientation=Landscape
- Wait before the next action: type=wait,durationMs=1000
- Start a touch gesture: type=touchDown,x=100,y=200
- Move a touch gesture: type=touchMove,x=120,y=220
- End a touch gesture: type=touchUp,x=120,y=220
- Press a raw key code down: type=keyDown,keyCode=4
- Release a raw key code: type=keyUp,keyCode=4
- Press a hardware button down: type=buttonDown,button=home
- Release a hardware button: type=buttonUp,button=home
Use JSON values for complex fields like selector, modifiers, and coordinate.
--api-key=<value>
[env: LIM_API_KEY] API key to use for this command. Overrides the saved
login and can also be provided via LIM_API_KEY.
--[no-]create
Create a replacement instance automatically if the target instance is not
found.
--id=<value>
iOS instance ID to target. Defaults to the last created iOS instance.
--json
Output structured JSON instead of human-readable tables or plain text when
the command supports it.
--quiet
Suppress intermediate human-readable logs and only emit the final result.
--timeout=<value>
Override the total batch timeout in milliseconds. By default the CLI grows
the timeout based on waits and action count.
DESCRIPTION
Perform multiple iOS actions in a single batch
Run a batch of iOS actions in a single CLI invocation using repeated
`--action` flags or a JSON/YAML action file. This is the best choice for
agent-driven multi-step interactions that should execute without reconnecting
between steps.
EXAMPLES
$ lim ios perform --action type=tap,x=100,y=200 --action "type=typeText,text=Hello World"
$ lim ios perform --action type=wait,durationMs=1000 --action type=pressKey,key=enter
$ lim ios perform --file ./actions.yaml
```
```bash
> lim xcode
Execute any task on remote XCode sandboxes: create, list, get, delete, sync, build, attach-simulator
USAGE
$ lim xcode COMMAND
COMMANDS
xcode attach-simulator Attach an iOS simulator to an Xcode instance
xcode build Run xcodebuild on an Xcode sandbox
xcode create Create a new Xcode instance
xcode delete Delete an Xcode instance
xcode get Get details for a specific Xcode instance
xcode list List Xcode instances
xcode sync Continuously sync local source code to an Xcode
sandbox
```