eas-simulator – skill Agent & Tự động hóa cho agent AI
Hướng dẫn upstream được tuyển chọn cho Eas Simulator; dùng khi quy trình phù hợp với mục tiêu của người dùng.
Cài skill eas-simulator bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/eas-simulator-4ed7c.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /eas-simulator – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/eas-simulator-4ed7c.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $eas-simulator – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/eas-simulator-4ed7c.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /eas-simulator – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/eas-simulator-4ed7c.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /eas-simulator – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
When to Use
- Use when this upstream workflow matches the user's stated goal.
- Use when the task requires the procedures documented in this skill.
EAS Simulator
> EAS service - costs apply. EAS Simulator is a hosted EAS service. Session usage is subject to your account's pricing and limits. See https://expo.dev/pricing for current terms.
EAS Simulator runs a remote iOS simulator or Android emulator on EAS infrastructure that you drive from your machine — from the CLI, from an AI agent (via agent-device), and from a browser preview. It's the unlock for environments that can't run a simulator locally (Linux boxes, cloud/background agents like Cursor Cloud), and for letting an agent *verify* a change on a remote simulator/emulator rather than only reasoning about code.
The simulator:* commands are experimental and hidden, and need a recent eas-cli (≥ 20.3.0 as of writing) — which is why this skill runs everything via npx --yes eas-cli@latest. Flags and verbs may change; the relevant subcommand's --help output is authoritative.
When to Use
The frontmatter description carries the trigger phrases. In short: use this to get a user's app onto a cloud simulator and interact with it — especially from a Mac-less or cloud/sandbox agent. Not for local sims (expo run:ios, Xcode, Android Studio), store builds/signing (that's EAS Build), or physical devices. For the macOS case, see *Cloud vs local* next.
Cloud vs local: decide this first
- Explicit cloud/remote/shareable request: use EAS Simulator after checking access, on any host.
- Generic simulator request: use a suitable local simulator when available. If the host cannot run the requested simulator (for example, iOS on Linux or a cloud sandbox), use EAS Simulator after checking access. A non-macOS host may still support a local Android emulator.
- Honor an explicit local choice; hand off to
expo run:ios/ Xcode / Android Studio as appropriate. Clarify only when the requested environment remains ambiguous and affects the task.
When the user requests EAS Simulator or a cloud simulator, proceed within that request and
any stated budget. Explain applicable usage once and carry existing authorization through
the session. Ask before exceeding a stated budget or expanding beyond the requested work.
Prerequisites
- Run every
eascommand vianpx --yes eas-cli@latest …— resolves a recent CLI, but does not guarantee feature availability or account access (a globaleasis often too old), and--yesskips npx's prompt. (Bareeasis fine ifeas --versionis current.) - Authenticated. Interactive machine →
npx --yes eas-cli@latest login. Cloud sandbox / CI / headless agent has no browser login — setEXPO_TOKEN(expo.dev → Account → Access Tokens) in the env instead. Verify either way withnpx --yes eas-cli@latest whoami. - Run from an Expo project directory. A fresh app needs one-time setup:
npx --yes eas-cli@latest initto create/link the project (when there's noprojectId), and setios.bundleIdentifierin app config if it's missing — a freshcreate-expo-appoften has none, andprebuild/eas buildneed it (they prompt or fail without it; e.g.dev.<owner>.<slug>). Read current config withnpx expo config --json(it may live inapp.config.js). The first Mode-C run is slow (native build); later runs reuse it. - A controller to drive the device. This skill uses agent-device (open source, MIT), run on demand via
npx agent-device@latest— nothing globally installed. Appium and argent are alternative automation interfaces;web-preview-onlyhas no automation interface. See [references/controllers.md](references/controllers.md). .env.eas-simulatoris written/managed by eas-cli (not this skill): it holds the session id (EAS_SIMULATOR_SESSION_ID) + the daemon URL/token, soget/stop/execdefault to that session (usually omit--id; pass--id <id>to target another). It carries a token → keep it gitignored (eas-cli marks it "do not commit" but may not add the ignore rule, and a fresh app's.gitignorewon't cover it — add.env.eas-simulatorif missing).- The command blocks assume a POSIX shell (bash/zsh) —
printf,lsof,$(seq …)loops won't run in cmd/PowerShell. On Windows, run them in WSL or Git Bash, or translate as you go (theeas-cli/agent-deviceinvocations themselves are cross-platform).
Session lifetime
--max-duration-minutes Nis the hard automatic-stop deadline. Customize it when supported by the account; otherwise use the service's default session limit.--max-idle-time-minutes Nstops a session after that many inactive minutes. Omitted means no idle timeout: the session runs until its maximum duration or an explicit stop.- Only activity reported through
agent-deviceandargentresets the idle timer. Appium commands and browser-preview activity do not reset it. For Appium or a user-driven browser preview, rely on the maximum duration—not idle time—to bound the session; customize it with--max-duration-minuteswhen supported by the account.
Check availability first
EAS Simulator is a limited-access EAS feature that is still rolling out, so it isn't enabled on every account. Check access before starting a session; this read-only command does not create a session.
npx --yes eas-cli@latest simulator:availability --json
# → {"available": true, ...} enabled → continue to the core loop
# → {"available": false, ...} not enabled → do NOT start a sessionIf it's not available, don't call simulator:start (it will fail). Instead, hand off gracefully so you keep making progress without this skill:
- Tell the user EAS Simulator isn't available on their account yet — it's coming soon.
- Fall back to their normal local path for the actual goal —
expo run:ios/ Xcode / Android Studio for a local sim/emulator, an EAS Build, or whatever else fits. Don't dead-end on the cloud sim; the request was almost never "use EAS Simulator specifically."
(If simulator:availability isn't recognized, the CLI is too old — upgrade, or treat a not enabled for this account error from simulator:start the same way: stop and fall back.)
The core loop (always the same)
A session is: start → (install your app) → drive → stop. eas-cli owns the *session*; the device *verbs* (open/tap/screenshot) come from the controller, which npx --yes eas-cli@latest simulator:exec runs for you with the session's connection env loaded.
# 1. Start a session (boots the remote sim + agent-device daemon; writes .env.eas-simulator).
# If the dotenv names a session, inspect it with simulator:get --json first. Reuse it when it
# belongs to this run; stop it only when it is in scope and no longer needed. An IN_PROGRESS
# session may be intentionally concurrent, so preserve its id/config before resetting the dotenv.
# Continue below only after choosing how to handle that existing session.
printf '# managed by eas-cli\n' > .env.eas-simulator # clear only after resolving any live session
npx --yes eas-cli@latest simulator:start --platform ios --type agent-device --non-interactive \
--name "Checkout flow screenshots" # always name it — see 'Always name the session'
# Then confirm it's live: simulator:get --json → status IN_PROGRESS (bounded poll in run-your-app.md).
# 2. Drive it through `exec` (loads the session env, then runs the command you give it).
# agent-device runs on demand via npx — nothing installed globally.
npx --yes eas-cli@latest simulator:exec npx agent-device@latest open <app-or-url> --platform ios
npx --yes eas-cli@latest simulator:exec npx agent-device@latest snapshot -i # interactive UI tree → @e1, @e2 refs
npx --yes eas-cli@latest simulator:exec npx agent-device@latest press @e2 # tap a ref (NOTE: 'press', not 'tap')
npx --yes eas-cli@latest simulator:exec npx agent-device@latest screenshot ./shot.png
# 3. Stop the session and reset the dotenv. Omit --id to target the dotenv session.
npx --yes eas-cli@latest simulator:stop
printf '# managed by eas-cli\n' > .env.eas-simulatorTo watch it live, hand the user the webPreviewUrl that start prints. All current session types include a browser preview; agent-device, appium, and argent also provide automation, while web-preview-only provides no automation interface. This URL belongs in a local browser preview, never on the simulated device. Treat it as potentially sensitive. If the host provides an authorized browser-opening tool, use it when requested; otherwise hand off the link:
- "Open it here" (Cursor/VS Code) → print the URL on its own line and tell the user to open Simple Browser (
Cmd/Ctrl+Shift+P→ "Simple Browser: Show") and paste it. Use the host-supported browser-opening surface when available, or provide a manual handoff; do not claim a tab opened without tool
… (nội dung đầy đủ có trong gói tải về)
Skill liên quan
- prompt-governance – Dùng khi quản lý prompt trong production ở quy mô lớn: quản lý phiên bản prompt, chạy…
- ecl-harness-engineer – Tạo hoặc kiểm tra hạ tầng ECL Agent Harness: AGENTS.md, theo dõi thay đổi, hướng dẫn…
- effective-agent-skills – Soạn thảo và đánh giá skill cho agent chất lượng cao, với trigger, progressive…
- subagent-driven-development – Thực thi kế hoạch qua các subagent delegate_task (đánh giá 2 giai đoạn).
- ejentum-reasoning-harness – Máy chủ MCP cung cấp bốn chế độ harness nhận thức (suy luận, mã nguồn, chống lừa dối, bộ…
- etsy-search-listings – Lấy các dòng kết quả tìm kiếm Etsy trực tiếp theo từ khóa, cụm từ thị trường hoặc danh…
- evaluation – Xây dựng khung đánh giá cho hệ thống agent. Dùng khi kiểm thử hiệu năng agent một cách…
- event-staffing-compliance – Đánh giá rủi ro phân loại lao động và tuân thủ cho nhân sự sự kiện tạm thời tại Mỹ và…