CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

eas-simulator

Run and control a user's app on a remote iOS/Android simulator hosted on EAS cloud. Read before running any `eas simulator:*` commands - it has the current syntax for this experimental API. Use whenever the user needs a simulator they can't run locally - 'run my app on a cloud simulator', 'use eas simulator to run/install/screenshot my app', 'I'm on Linux/Cursor and need an iOS device', 'no sim on this box / headless CI', 'let an agent click through my app and screenshot it', 'test my dev build on a remote sim with live reload', 'stream a sim to my browser' - even when they don't say 'EAS Simulator' or 'cloud'. On a host WITHOUT a local simulator (Linux, CI, cloud sandbox) it's the default; on macOS, do NOT auto-trigger for a plain 'run on the simulator' - use it only for a cloud/remote/shareable sim, an iOS version they lack, or an agent-driven session. NOT for local sims (expo run:ios, Xcode, Android Studio), EAS Build/Update, web preview, or physical devices.

Quality

95%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

92%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-structured operational skill: executable commands throughout, an explicitly validated workflow with bounded error-recovery loops, and a clean split between the SKILL.md overview and genuinely needed reference files. The only weakness is repetition — the key warnings (static builds, webPreviewUrl handling) are restated enough that the body could be noticeably shorter without losing signal.

Suggestions

State the static-build/live-reload trap once in the mode-selection box and reference it from the table and Operating principle #5 instead of restating it four times.

Consolidate the duplicated webPreviewUrl guidance: keep the full browser-handoff rules in the core-loop section and drop the repetition in the agent-device 'open' row to a one-line cross-reference.

Trim the 'Always name the session' section to the rule list and 2–3 examples, and move the "≥ 20.3.0 as of writing" version pin out of the body since --help is already declared authoritative and npx --yes eas-cli@latest makes it moot.

DimensionReasoningScore

Conciseness

Efficient and high-signal — no explanation of concepts Claude already knows, and every command is a full executable invocation — but the static-build/live-reload trap is stated four times (mode box, mode table, quick decision, Operating principle #5), the webPreviewUrl warning appears twice, and the ~30-line session-naming section could be tightened. Not 5: these repeats and the embedded version pin ("≥ 20.3.0 as of writing") are tokens that could be trimmed; not 3: nothing is padding.

4 / 5

Actionability

The core loop is a copy-paste-ready bash block with comments, and commands are exact throughout: the availability gate, the exec wrapper pattern, concrete verb examples ("press 'label=\"Open\"' --timeout 120000"), and mode flags ("EXPO_UNSTABLE_TUNNEL_V2=1 expo start --tunnel"). Specific examples cover the common cases.

5 / 5

Workflow Clarity

The sequence (check availability → start named → confirm IN_PROGRESS via simulator:get --json → pick mode → drive → stop + reset dotenv) is explicit, with auth verification, a ground-truth checklist, and a bounded feedback loop: "reset to baseline... redo the mode once; a second failure → stop and report" plus reset-don't-retry rules for daemon drops.

5 / 5

Progressive Disclosure

The body stays at decision/overview level while full mode sequences, controller details, crash-log procedures, and error→fix tables live in four real, one-level-deep reference files, each with an explicit read-when signal ("read before running a mode", "read when the app crashes or misbehaves") and a summary References section.

5 / 5

Total

19

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is an exemplary trigger document: concrete third-person capability statement, comprehensive natural-language trigger phrases with environment variations, explicit when/when-not guidance including host-specific defaults, and clean boundaries against adjacent Expo skills. Its only cost is length, but every clause is functional rather than padded.

DimensionReasoningScore

Specificity

"Run and control a user's app on a remote iOS/Android simulator hosted on EAS cloud" plus enumerated concrete actions ("run/install/screenshot my app", "click through my app and screenshot it", "test my dev build on a remote sim with live reload", "stream a sim to my browser") gives comprehensive, concrete coverage in third-person voice. Not 4: no meaningful action is missing for this domain.

5 / 5

Completeness

"What" is answered in the first sentence and "when" by an explicit "Use whenever the user needs a simulator they can't run local" clause with concrete trigger phrases, host-specific defaults (Linux/CI vs. macOS), and NOT-for exclusions. Both halves are explicit and concrete.

5 / 5

Trigger Term Quality

Seven natural quoted phrasings with synonym and environment variations ("run my app on a cloud simulator", "I'm on Linux/Cursor and need an iOS device", "no sim on this box / headless CI") comprehensively cover how users actually ask, and it explicitly extends to users who never say "EAS Simulator" or "cloud".

5 / 5

Distinctiveness Conflict Risk

A clear cloud-simulator niche with explicit fences against adjacent skills: "NOT for local sims (expo run:ios, Xcode, Android Studio), EAS Build/Update, web preview, or physical devices" and macOS-specific auto-trigger suppression. Minimal conflict risk.

5 / 5

Total

20

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

14

/

16

Passed

Repository

expo/skills

Path

plugins/expo/skills/eas-simulator/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.