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.
Split the combined limrun-xcode-and-ios-simulator skill into two:
limrun-xcode for remote Xcode builds of non-Bazel projects, and
limrun-ios-simulator for build-agnostic simulator interaction (tap,
type, element tree, screenshot, video, action chains). Update
limrun-xcode-bazel to hand off simulator interaction to the new skill,
and surface the toolbar-tap and instance-id targeting recipes inline.
A capability-loss review of the split restored four items from the old
combined skill: the post-build testing directive, signed stream URL
sharing at limrun-xcode's attach step, the end-to-end verify-and-
iterate mandate, and a gotcha for lim ios instance resolution.
- catalog.json: limrun-bazel-rbe → limrun-xcode-bazel, matching the skill
directory and SKILL.md frontmatter (the old name was a leftover from the
pre-rename branch).
- SKILL.md core workflow: reflect background-by-default (returns the terminal,
prints the PID), the same-terminal build command, inferred target, and
`lim xcode rbe --stop` — the prior "keep it running; Ctrl+C tears down" text
described the old blocking model.
- verify-remote.md: background framing + use `lim xcode rbe --stop` for the
decisive cache-miss-with-tunnel-down check.
Building Bazel iOS/Apple apps on Limrun RBE via `lim xcode rbe` — the
remote-build-execution counterpart to limrun-xcode-and-ios-simulator (which
covers plain xcodebuild). Lightweight SKILL.md (core workflow + the gotchas we
actually hit) with progressive-disclosure references:
- verify-remote.md: how to tell real remote execution from cache hits
- project-compatibility.md: per-project patterns (pinned-Xcode transition,
custom exec properties, mnemonic strategy pins, foreign-build genrules,
sha1 codesign) at the pattern level, not app-specific patches
Registered in catalog.json as opt-in (defaultSelected: false), since it only
applies to Bazel workspaces. Validator + npx smoke test pass.