一键导入
ios-emulator
Control and interact with the iOS simulator via the steve CLI — launch apps, tap UI elements, take screenshots, and read accessibility trees.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Control and interact with the iOS simulator via the steve CLI — launch apps, tap UI elements, take screenshots, and read accessibility trees.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Comprehensive knowledge of Fedi's testing infrastructure for UI code (utilities, mock builders, conventions, and patterns) — use this when reading, writing or running unit/integration/e2e tests
Use when changing, adding, or consuming Fedi remote feature flags across the bridge runtime and web API. Covers crates/runtime/src/features.rs, ui/web/src/pages/api/features.ts, TypeScript bindings, local testing, and selector usage.
Pre-submit checklist for PRs that change Rust or bridge code (`crates/`) in the Fedi project. Use before opening or updating a Rust or bridge PR to run the right local checks and structure the description. Not for UI (`ui/`), docs, or config-only changes, which have their own conventions.
Review a UI pull request or diff in the `ui/` workspace (web, native, shared `common`) for regressions and scope creep, weighing each finding by cost and blocking only on a named cost. Use whenever asked to review a UI or frontend PR or diff, or to check a web or native change before merge, even if the user does not say "code review". Not for Rust, bridge, or infra changes.
Review Dependabot PRs updating GitHub Actions workflows/actions, with a security-focused upstream diff check before commenting.
Review Dependabot PRs updating Rust/Cargo crates with a security-focused crates.io tarball diff before commenting.
| name | ios-emulator |
| description | Control and interact with the iOS simulator via the steve CLI — launch apps, tap UI elements, take screenshots, and read accessibility trees. |
steve is added to PATH by the repo dev shell and is backed by scripts/ui/steve.steve to verify iOS behavior and navigate the app..#xcode shell automatically when needed.# Launch app and verify
steve launch && steve a11y && steve screenshot /tmp/s.png
# Use Read tool on screenshot only if a11y is ambiguous or visual verification needed.
# Tap by exact accessibility text and verify
steve tap "Get started" && steve a11y && steve screenshot /tmp/s.png
# Tap unlabeled element by coordinates (from a11y bounds)
steve tap 200,780 && steve a11y && steve screenshot /tmp/s.png
# Scroll down to find more elements
steve swipe 200 700 200 200 300 && steve a11y && steve screenshot /tmp/s.png
# Type into the focused element
steve type "hello"
# Target a specific simulator; use this for parallel agents/simulators
steve --device <UDID> a11y
screenshot and a11y auto-wait for idle. You usually do NOT need wait-for-idle or sleep before them.&& for tap-then-verify workflows: steve tap "Continue" && steve screenshot /tmp/s.pnga11y on unfamiliar screens before tapping by text. Some controls are exposed only by coordinates or IDs.tap "text" is exact-match only. Use the exact visible accessibility text from a11y.a11y output is normalized, not raw Appium XML. Bounds are printed in (left,top,right,bottom) form.HeaderBackButton, Close, or direct coordinate taps. There is no Android-style key 4 BACK command here.--device <UDID> on every command. Steve keeps separate Appium sessions per device, bundle, port, and headless mode.launch, stop, or reset rather than trying random taps.a11y is enough for navigation, but screenshots are better for confirming layout and styling.steve screens # list available iOS simulators
steve info # print selected simulator info as JSON
steve launch # launch the configured bundle ID
steve restart # terminate and relaunch without clearing Appium session
steve stop # terminate the configured bundle ID
steve reset # uninstall the configured bundle ID, reinstall if --app is provided
steve open-url https://example.com # open URL in the simulator
steve wait-for-idle # wait until the page source is stable
steve screenshot /tmp/s.png # save an app screenshot
steve a11y # print a normalized accessibility tree
steve tap "Button text" # tap by exact accessibility text
steve tap 200,780 # tap by coordinates
steve swipe 200 700 200 200 300 # swipe (optional 5th arg: duration_ms)
steve type "hello" # type into the focused element
Useful options:
steve --device <UDID> ...
steve --bundle com.fedi ...
steve --app /absolute/path/to/FediReactNative.app ...
steve --no-wait ...
steve --no-boot ...