agentleFS
ParadevAIParadevAI/Paradev/.agents/skills/mobile-eas-dev/SKILL.md

mobile-eas-dev

Skill16k starsChanged 10 days agoMITView on GitHub

Launch and iterate on apps/mobile from a cloud sandbox (no local Xcode or simulator) on an EAS cloud iOS simulator. Use when asked to run, start, open, or show the mobile app from a cloud workspace, or to verify a mobile change there. On a machine with real Xcode, use mobile-sim-verification instead.

  • Reads credentials
  • Installs packages

1 other project uses a version of this; 1 new project in the last 4 weeks, against 0 the 4 before.

Adopted by

Surging: 1 new project took it in the last 4 weeks, none the 4 weeks before.thin data

Week of Sep 13: 0 new projectsWeek of Sep 20: 0 new projectsWeek of Sep 27: 0 new projectsWeek of Oct 4: 0 new projectsWeek of Oct 11: 0 new projectsWeek of Oct 18: 0 new projectsWeek of Oct 25: 1 new projectWeek of Nov 1: 0 new projects
Sep 2026Oct 2026Nov 2026
New projects taking a version of this file each week, over the 8 weeks our latest run read: only 1 in all, so this is a hint, not a trend.

Most recently taken up by

Who's talking about ParadevAI/Paradev

The biggest 5 of 64 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 64

Talked about on GitHub, the web, Bluesky and YouTube (64 times).

On GitHub · 50

45 more on GitHub

On the web · 11

6 more on the web

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Switch sessions with --new,: never eas simulator by hand.

    line 38
  2. Distinctive:

    When the script started Metro, each run that (re)starts the tunnel ends only when Metro has served the app a bundle.

    line 41

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Mobile on a cloud sandbox (EAS Simulator)

A cloud sandbox is Linux: no xcrun, no simctl. apps/mobile/scripts/eas-dev.sh is the one command that gets the real dev-client app running on an EAS cloud iOS simulator, connected to this sandbox's own Metro and API. Run it:

apps/mobile/scripts/eas-dev.sh

It reuses this checkout's running session when there is one. Otherwise it installs the finished simulator build whose native fingerprint matches this checkout and starts a session, about two minutes. It builds only when no such build exists (the first time, or after a native change), about fifteen minutes. apps/mobile/AGENTS.md's "Verifying in the real app" section records why the script does each step.

apps/mobile/scripts/eas-dev.sh --reload   # load the app from Metro again; starts nothing
apps/mobile/scripts/eas-dev.sh --new      # stop the running session and start a fresh one
apps/mobile/scripts/eas-dev.sh --user maya@local.test   # sign the app in as this dev account
  • Switch accounts with --user name@local.test. It runs db:seed-dev for the account, which creates it with the shared dev password and makes it an onboarded member of admin@local.test's Pro organization. Then it signs out in Settings and signs in through "Sign in with email (dev)". It needs no app code and takes about 20 s. It works alone on a running session or with --new and --reload. Only @local.test accounts: to test as your real account, use the token that setup bakes in for the first launch.
  • Reload with --reload. It opens the dev-client URL and waits for a new iOS Bundled line in the Metro log, three tries. Never agent-device open Superset: that relaunches the app without the Metro URL and it fails with "Could not connect to the server".
  • Switch sessions with --new, never eas simulator by hand. The egress client is bound to the session it started with, so the script stops the old client and starts one for the new session. With no flag it keeps a connected client and restarts one that died.
  • When the script started Metro, each run that (re)starts the tunnel ends only when Metro has served the app a bundle; otherwise it exits non-zero and names the Metro and egress logs. With a Metro started some other way it opens the app but cannot confirm the load.
  • The dev-client URL carries disableAutoLaunch=1&disableFab=1, so no dev menu opens at launch and no gear button covers the toolbar. Each session is a fresh install, so every load passes them.
  • Logs and PID files are in .tmp/eas-dev/ of the checkout, so two checkouts do not stop each other's tunnel.
  • The fingerprint lookup refuses to run when bun --version differs from .bun-version. The dependencies that bun installs give a fingerprint no build has, and EAS would start a 15-minute build that also fails. A cloud workspace made before the pin changed has the old bun: make a new one.

The session is tagged with the workspace id. The desktop Mobile pane lists the workspace's tagged sessions, so the person can watch the simulator there without a link. The script also prints an expo.dev/simulator-preview/... URL for a browser.

Driving the simulator

Load the session and call agent-device directly:

cd apps/mobile && set -a && . ./.env.eas-simulator && set +a
agent-device snapshot -i                        # what is on screen, with @refs
agent-device press 'label="Continue"' --settle  # acts, waits, prints what changed
agent-device fill @e16 "hello" --settle
agent-device screenshot /tmp/screen.png
agent-device help                               # the rest
  • agent-device keeps one session per working directory. Run it from apps/mobile every time.
  • Through eas simulator:exec npx agent-device each command takes about 25 s. Install it globally (npm install -g agent-device) when it is missing.
  • The dev-menu sheet covers the first screen on a fresh install: press Continue, then Close.
  • iOS's "slide to type" keyboard intro is already dismissed on a session the script started.
  • SwiftUI menu items (@expo/ui Menu) are not in agent-device snapshot. Open the menu, take a screenshot, and tap the item by coordinate: agent-device press <x> <y>. This is a limit of the tool, not of the app.
  • Source edits reach the app through fast refresh in about two seconds.

Limits

  • The script forwards the relay and realtime ports but starts neither service, so host and workspace presence show as unreachable. That is fine for auth and UI checks.
  • The session stops by itself after 15 idle minutes (MOBILE_EAS_IDLE_MINUTES). Stop it sooner with eas simulator:stop from apps/mobile.
  • The Expo account runs two builds at a time; a build can wait in the queue behind the team's.

Needs EXPO_TOKEN and this repo's .env (.paradev/setup.sh or .paradev/setup.cloud.sh).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.