Commit Graph

83 Commits

Author SHA1 Message Date
Hasan Turken 86bdecac97 limrun-xcode: run builds in the foreground
Headless agents were launching lim xcode build in a background shell and
ending their turn before it finished, killing the build mid-flight. Observed
as the dominant failure mode in skill evals (baseline iterate 3/5); with this
paragraph the same eval scores 5/5 (see limrun/test/skill-evals/scorecards/
2026-08-18-foreground-build.*, verdict ADOPT).
2026-08-19 00:02:28 +03:00
Hasan Turken daeb532eea Merge pull request #26 from limrun-inc/android-parity-followups
skills: android coverage for the expo dev loop and lifecycle commands
2026-08-18 16:18:13 +03:00
Hasan Turken 2dcd86fe65 skills: address review, avoid blocking launch-app in verify steps
The install check and the expo verify step both pointed at a bare
launch-app, which blocks watching the app until it exits and would hang
an agent on a healthy app; use --detach for the install check and frame
the watched relaunch as a backgrounded crash-diagnosis step. Show the
asset list prefix per platform instead of prose describing the Android
variant.
2026-08-18 16:11:55 +03:00
Hasan Turken 7fcd6e787f skills: android coverage for the expo dev loop and lifecycle commands
limrun-expo-development was iOS-only, and limrun-gradle routed all Expo
dev-loop intent to it, so Android users had no documented Metro/hot
reload path. Extend the expo skill with per-step Android variants in the
same flow: package/asset derivation (including the missing
android.package placeholder trap), gradle Debug builds as assets, the
adb reverse tunnel on Metro's default 8081 (no port range or packager
hostname override needed, unlike iOS), dev-client deep links via
open-url, screenshot-first verification (Expo apps expose no
accessibility nodes on Android), and assembleRelease preview assets
with platform=android links.

Update limrun-android-emulator for the new lim android launch-app and
terminate-app commands: app lifecycle moves out of the adb section into
its own Launching the app section with the watch-until-exit crash
report; adb keeps logcat, files, shell, and package discovery. Route
gradle's Expo pointers to the expo skill.

Every command verified live against production e2e-org emulators: full
dev loop with hot reload observed on sample-expo56-app, both reverse
tunnel and deep-link paths, and a standalone assembleRelease APK
(debug-keystore signed by the Expo template) running without Metro.
2026-08-18 16:05:52 +03:00
Hasan Turken faecc7f07d Merge pull request #24 from limrun-inc/android-emulator
skills: add limrun-android-emulator device-driving skill
2026-08-18 13:55:04 +03:00
Hasan Turken b322bf8e00 android-emulator: read the adb serial from connect output
lim 0.28.4 prints the tunnel address in the connect started message,
so the serial no longer needs to be parsed out of adb devices. Verified
against the released CLI.
2026-08-18 13:53:52 +03:00
Hasan Turken 7cbe6dc693 android-emulator: fold in findings from live multi-model agent test runs
Ran the skill as the sole documentation for 8 subagent sessions (haiku,
sonnet, opus) against production emulators in the e2e org: basic install,
web interaction, adb lane, multi-instance targeting, non-git resolution,
and record/microphone/bandwidth scenarios. All 8 completed their tasks
with no leaked instances, so the changes are refinements, not rescues.

Recurring friction fixed:
- element-tree is one line, so plain grep echoes the whole document;
  document the sed newline split every agent had to invent (works on
  both BSD and GNU sed)
- verifying installs via the launcher fails because new apps land in
  the app drawer; point to pm list packages or launching the app
- page loads after open-url are async; an empty WebView subtree means
  still loading, not a broken tree
- web pages expose DOM ids, not pkg:id/... resource ids; select by
  text plus class-name there
- type takes the same selectors as tap-element, useful for fields
  with no resource id
- lim android list filters with --label-selector; four of eight agents
  guessed --label first
- create blocks until the instance is ready; recorded video frames are
  half the screenshot resolution; monkey exits nonzero on success
2026-08-18 13:20:39 +03:00
Hasan Turken aebdcd0941 android-emulator: align section structure and wording with the iOS simulator skill
Mirror the iOS skill's install subsection names (Build and install /
Install app from local) and fold sync iteration into the local-install
flow like iOS does. Move the create --no-open/--no-connect defaults note
from Auth and CLI into Installing an app, match the signed stream URL
sharing wording, rename the microphone section to the iOS 'Simulate the
X' pattern, and repeat the element-tree check block after interactions.

Fix the logcat example: the previous line passed a package name where
logcat expects a tag filter; replace it with the verified
logcat --pid=$(pidof -s <pkg>) recipe for app-scoped logs.
2026-08-18 13:01:45 +03:00
Hasan Turken 6b604db4c0 skills: add limrun-android-emulator device-driving skill
Android emulators had no device-driving skill; the only guidance was a
4-line aside in limrun-gradle. Add limrun-android-emulator as the Android
counterpart of limrun-ios-simulator, covering install paths (install-asset,
install-app by URL, sync), the exact-match selector model, the adb tunnel
escape hatch for app lifecycle/logcat/files/shell, microphone audio
injection, bandwidth shaping, preview URLs, and fleet gotchas (x86_64 ABI,
RN empty element trees, background installs, session-bound tunnels).

Every command was verified against a live production instance. Slim the
gradle skill's emulator section to a cross-reference and route its
description to the new skill.
2026-08-18 12:48:21 +03:00
muvaffak c34f5b4f40 Merge pull request #23 from limrun-inc/ios-container-ls-docs
ios-simulator: document app container file discovery
2026-08-17 23:31:08 +03:00
Muvaffak Onus 905d8cbaeb ios-simulator: document app container file discovery
Teach agents to list an app data container before pulling generated files and to reuse the same container flags across file operations.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 23:20:42 +03:00
Hasan Turken 2befa235d6 Merge pull request #22 from limrun-inc/skill-content-fixes
Fix stale and unresolvable references in gradle, detox, and expo skills
2026-08-14 18:21:25 +03:00
Hasan Turken 48064116f5 skills: fix Play Store publish contradiction, dead example paths, undefined TUNNEL_URL 2026-08-14 18:19:44 +03:00
Hasan Turken 98e210a31f Merge pull request #21 from limrun-inc/input-followups
ios-simulator: tap-element fail-fast and --scroll-search; type --no-require-focus
2026-08-14 16:00:24 +03:00
Hasan Turken 46d18185d2 ios-simulator: tap-element fail-fast and --scroll-search; type --no-require-focus 2026-08-14 15:17:52 +03:00
Hasan Turken d37341f667 Merge pull request #19 from limrun-inc/dep-security-bumps
deps: refresh package-lock to clear audit findings
2026-08-14 15:01:49 +03:00
Hasan Turken 707b49960e Merge pull request #18 from limrun-inc/ios-input-fidelity
ios: document real-key typing, set-text, swipe, and tap-element sweep
2026-08-12 20:05:46 +03:00
Hasan Turken 7c160d2b1d deps: refresh package-lock to clear audit findings 2026-08-12 15:58:32 +03:00
Hasan Turken cade8f0ea2 ios: document real-key typing, set-text, swipe, and tap-element sweep
type now sends real key events and errors without focus; set-text is the
verbatim path. tap-element scrolls off-screen elements into view. Also fix
a tap-element flag that does not exist (--text -> --ax-label).
2026-08-12 13:33:12 +03:00
muvaffak 8176dd2754 Merge pull request #15 from limrun-inc/feature/ios-camera-video
ios-simulator: document camera simulation from a video file
2026-08-07 17:17:14 +03:00
Muvaffak Onus e225d76967 ios-simulator: rename camera-video command to camera
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 17:15:54 +03:00
Muvaffak Onus bdca5c3e0a ios-simulator: document camera simulation from a video file
Adds the new `lim ios camera-video play|clear` commands so agents can
drive QR-scan and other camera flows with deterministic frames.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 16:46:07 +03:00
muvaffak 84c77230c2 Merge pull request #7 from limrun-inc/limrun-gradle-skill
limrun-gradle: add the remote Gradle build skill
2026-08-05 15:52:01 +03:00
muvaffak e3bccf19b7 Merge pull request #8 from limrun-inc/xcode-build-webhook
limrun-xcode: teach Apple cloud signing
2026-08-05 15:51:11 +03:00
Muvaffak Onus 9e78d1585b limrun-xcode: keep modern cloud signing methods
Stop teaching agents the legacy ad-hoc export alias.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 15:50:35 +03:00
Muvaffak Onus 02ff4a328d limrun-xcode: teach agents Apple cloud signing
Prefer ASC-key-driven signing, document supported export methods, and surface the Apple permission and team errors agents can act on.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 15:50:35 +03:00
Hasan Turken 63a3bb7f55 Merge pull request #14 from limrun-inc/xcode-multi-provisioning-profiles
xcode: document multi-profile signing and fix stale App Store upload flags
2026-07-31 00:42:39 +03:00
Hasan Turken 1920fa3c73 xcode: document multi-profile signing and fix stale App Store upload flags 2026-07-30 23:01:08 +03:00
Hasan Turken 089b92a52c Merge pull request #12 from limrun-inc/hasan/skill-headless-fixes
skills: headless-agent fixes from an external agent's run
2026-07-28 18:22:17 +03:00
Hasan Turken 8c56f35e18 skills: headless-agent fixes from an external agent's run
An external coding agent (Devin) ran the skills on a headless VM against prod.
Accepted the generic findings: --no-open guidance wherever an instance is
created (only the Maestro skill had it), @expo/ngrok as an explicit tunnel
prerequisite since Expo's interactive install fails in non-interactive
environments, the dev-menu onboarding sheet consuming the first deep link, a
pointer from the Maestro skill to the dev-client URL shape, and reading exact
accessibility labels with element-tree before writing text selectors.
2026-07-28 18:18:18 +03:00
Hasan Turken f6b7169705 Merge pull request #11 from limrun-inc/tunnel-lifecycle-notes
expo,detox: note reverse tunnel lifecycle semantics
2026-07-28 16:47:02 +03:00
Hasan Turken 641b4a02d8 expo,detox: kill own leftover tunnel before waiting on a busy port 2026-07-28 16:41:10 +03:00
Hasan Turken c90ead59e6 expo,detox: note reverse tunnel lifecycle semantics
Idle tunnels do not stop the inactivity timeout, and ports from dead
sessions free automatically within about two minutes, so agents should
retry on 'already in use' instead of switching ports.
2026-07-28 16:35:06 +03:00
Hasan Turken b5f6c126b8 Merge pull request #10 from limrun-inc/hasan/lim-552-maestro-skill
limrun-maestro-testing: add the Maestro on iOS skill
2026-07-28 16:15:10 +03:00
Hasan Turken d764e6f281 limrun-maestro-testing: apply fresh-agent validation findings
Two live gate runs by agents that only saw the skill text: added a
self-contained Settings verify flow, machine-readable instance id capture,
explicit --id placement, --no-open for headless machines, runner asset
version-agnosticism, recording and screenshot semantics, and benign JDK
warning note. Second run completed with zero failed commands.
2026-07-28 16:13:18 +03:00
Hasan Turken d15fe0372f limrun-maestro-testing: add the Maestro on iOS skill 2026-07-28 16:13:17 +03:00
Hasan Turken c349ab69a3 Merge pull request #9 from limrun-inc/auto-version-code
limrun-gradle: teach --auto-version-code
2026-07-28 16:10:17 +03:00
Hasan Turken 48230660b3 limrun-gradle: teach --auto-version-code 2026-07-21 23:24:39 +03:00
Hasan Turken 11b0486597 limrun-gradle: add the remote Gradle build skill 2026-07-20 19:52:32 +03:00
Muvaffak Onus b66ea2135a ios-simulator: print preview url
Signed-off-by: Muvaffak Onus <me@muvaf.com>
2026-07-15 22:46:53 +03:00
Muvaffak Onus 37e31015bb ios-simulator: update local sync command section
Signed-off-by: Muvaffak Onus <me@muvaf.com>
2026-07-15 21:55:48 +03:00
Hasan Turken e0c6088330 Merge pull request #5 from limrun-inc/xcodegen-generation
limrun-xcode: server-side XcodeGen generation and --include force-sync
2026-07-10 17:53:18 +03:00
Hasan Turken dd956e2883 limrun-xcode: fix section placement and add XcodeGen to routing description 2026-07-10 17:48:49 +03:00
Hasan Turken 4aa51f3872 limrun-xcode: server-side XcodeGen generation and --include force-sync 2026-07-10 15:39:45 +03:00
Hasan Turken b0742169e6 Merge pull request #4 from limrun-inc/xcode-testflight-skill
limrun-xcode: document direct TestFlight upload
2026-07-10 13:17:40 +03:00
Hasan Turken 4afd48ad6e limrun-xcode: tell agents what to collect for TestFlight and where it lives 2026-07-10 13:04:19 +03:00
Hasan Turken c08e84239f limrun-xcode: review fixes for the TestFlight section 2026-07-09 19:37:21 +03:00
Hasan Turken 8dfde91177 limrun-xcode: asc flags without the intent flag error out 2026-07-09 19:30:06 +03:00
Hasan Turken 4281077113 limrun-xcode: rename the TestFlight flag to --upload-to-testflight 2026-07-09 18:50:26 +03:00
Hasan Turken ed665e13da limrun-xcode: testflight upload behind explicit --testflight flag 2026-07-09 18:48:46 +03:00