expo-smoke-test
Verify an Expo or React Native change together with the app's core loop on both iOS and Android using agent-device.
Skill by toy-crane
Chalk Labs
Need help deploying expo-smoke-test?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/toy-crane-expo-smoke-test
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, testing, writing, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/expo-smoke-test
What's inside
- Skill name
expo-smoke-test- Description
- Verify an Expo or React Native change together with the app's core loop on both iOS and Android using agent-device. Use before delivering a change, when the user asks to confirm behavior on both platforms, or when the core loop should be exercised again as a regression. Establish runtime readiness and an explicit state profile, coordinate shared prerequisites, then spawn exactly two isolated platform subagents—prefer the installed expo-smoke-runner profile—wait for both, and finish only with separate runtime evidence for each platform. For verifying one change on a single target during ordinary editing, use expo-dev-loop instead.
- License
- MIT
- Instructions
- 297 lines in SKILL.md · view on GitHub
Files (6)
- SKILL.md
- openai.yaml · agents/
- expo-smoke-runner.md · companion-agents/claude/
- expo-smoke-runner.toml · companion-agents/codex/
- manifest.json · companion-agents/
- evals.json · evals/
SKILL.md (first lines)
# Expo Smoke Test This skill requires `project-knowledge`. Before doing any work, confirm it is installed. When it is missing, stop and report it with its install command, `npx skills@latest add toy-crane/skills --skill project-knowledge`, using the project's package manager runner where it pins one. Prove two things on each platform: the current change works, and the app's core loop still works. Static inspection, type checks, unit tests, and a successful bundle support the result but do not replace device verification. ## Establish the run Inspect the request, the current diff, the Expo config, and the package manifest to identify the flow the change affects and its observable result. Read root `PRODUCT.md` when it exists and derive one representative journey from its core loop. Read that file only; never create or edit it. When `PRODUCT.md` or its core loop is absent, verify the change flow alone and report the missing regression coverage. Use the installed CLI's version-matched guidance instead of remembered command shapes: ```bash agent-device help workflow agent-device help react-native ``` If `agent-device` is unavailable, report that runtime verification is blocked and give `npm install -g agent-device@latest` as the setup command. Point each platform's client at this project's own dev server rather than a default port another checkout may already hold. Pass the port as a session runtime hint with `--metro-port`, and confirm from the running tools which port this project actually serves. ## Pass preflight before behavior Keep three gates explicit for each platform: 1. **Runtime readiness:** the exact target, development build, project-owned Metro server, and observation path are usable, and the loaded bundle or native build belongs to this checkout. 2. **Known initial state:** app-local data, OS permissions, login or fixture state, and every affected backend boundary match the journey's premise. 3. **Behavior verification:** the prepared app is driven and the change flow plus core loop reach their exact outcomes. Passing preparation never satisfies this gate. Use narrow checks for routine readiness. Run `agent-device doctor` only when the user asks for environment diagnosis or a failed readiness check suggests an unhealthy device, app, development server, or runner. Choose and report one state profile per platform: - **Known app state** is the default. Prepare only the app data, explicit permissions, login, and fixture state the journey needs while preserving unrelated device state. Empty and seeded states both qualify when they are explicit and reproducible. App-state clearing and permission reset are separate boundaries; report each one actually changed. - **Fresh device** applies when the request requires a fresh install or the change depends on first launch, onboarding, OS permission history, secure device storage, application identity, native configuration, deep links, push behavior, another device-level surface, or evidenced device-state contamination. Reset only a simulator or emulator the request or project allocation establishes as dedicated to this run. Fresh-device preparation requires `agent-device` 0.20.10 or newer, whose device claims reject foreign local mutations; earlier releases advertise claims without enforcing them. Acquire each exact target through its final `smoke-ios` or `smoke-android` session with `agent-device open`, confirm `agent-device device status` names that session and workspace, and keep the claim through reset, boot, reinstall, Metro reconnection, and worker handoff. If the claim cannot be acquired or held across the selected reset mechanism, stop before reset. Absence from an advisory claim list is not proof of ownership. Address one exact target, never all devices. After reset, re-establish the allowed backend fixture before behavior verification. - **Preserved or prior state** retains or seeds the earlier application and backend state needed for returning-user, upgrade, or migration behavior. Once that premise is prepared, do not clear app data or erase the target before driving the flow. Never erase a physical, user-owned, shared, or otherwise unowned target. When a fresh-device claim has no eligible virtual target, report that platform's runtime-readiness blocker. When a usable target exists but its required state cannot safely be established, report the known-initial-state blocker. Do not weaken the scenario or mutate another owner's environment. Treat Supabase or another stateful service as a separate affected surface. Use only the repository's deterministic local or test readiness, migration, reset, and seed path needed by the journey. A ready client never proves backend state, and ordinary verification authority never permits a destructive linked or remote reset. ## Choose devices and sessions Use a local simulator and emulator as the default targets. Use a physical device when one is connected and the user asks for it. A physical iOS target additionally needs Developer Mode and a signed XCTest runner; when that setup is missing, report the exact prerequisites from `agent-device help physical-device` as a blocker rather than substituting a simulator. Run every platform against a development build of the project itself. A development build is the binary this change will ship in, so it is the only client that can carry the project's own native modules, config plugins, permissions, and entitlements. Expo Go is a fixed prebuilt shell: passing there proves the JavaScript behaved inside a different binary than the one being delivered, which is not the evidence this check exists to produce. When no development build is installed, build one with the repository-supported command, normally `expo run:ios` or `expo run:android` through the project's own package manager, before verifying. `npx` aborts with `EBADDEVENGINES` where `package.json` pins another package manager through `devEngines`. Give each platform its own named session, so both apps can run at once. Target devices by the names `agent-device devices` reports, which are not adb serials or simulator UDIDs, and open the development build by its own app id: ```bash
From toy-crane/skills, MIT.
More from toy-crane/skills
- 0.609score
clean-branches
toy-crane
Clean up the local leftovers of finished work in one pass, removing worktrees and local branches whose pull request merged or closed, detached worktrees…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
resolve-follow-ups
toy-crane
Resolve evidence-backed `docs/follow-ups/*.md` through a bounded manual, Codex Scheduled task, or Claude Routine sweep.
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
review-sessions
toy-crane
Review this machine's recent Claude Code and Codex session logs for work agents redo by chance every session, and report candidates to hand to a deterministic…
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
implement
toy-crane
Implement or resume settled work from a selected spec folder as one handoff bundle.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
maintain-project-context
toy-crane
Clean, compact, and reconcile durable project context and any configured issue-tracker mirror without changing established meaning.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
project-knowledge
toy-crane
Maintain a project's canonical terms and settled decisions that future work should reuse, and record follow-ups a session discovers but does not resolve.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
expo-dev-loop
toy-crane
Verify Expo and React Native changes in a running app with agent-device.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
build-prototype
toy-crane
Build a complete dummy-data HTML prototype or a temporary comparison of up to three alternatives for a specific user situation.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
babysit-specs
toy-crane
Revise active `docs/specs/SLUG/` specs so they match what has shipped since they were written.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
merge
toy-crane
Carry the current repository change through a verified GitHub pull request merge into the requested base, or the repository's remote default branch when none…
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
pr
toy-crane
Create or reuse a ready-for-review GitHub PR for the current repository change against the requested base, or the repository's remote default branch when none…
SkillAFreshness: A★ 3Claude Code +9 - 0.564score
add-stack-context
toy-crane
Audit and establish current agent context for the technologies that define a project's stack.
SkillBFreshness: B★ 3Claude Code +9
Signals
- Stars
- 3
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 9, 2026 (22 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/toy-crane/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from toy-crane
- 0.609score
clean-branches
toy-crane
Clean up the local leftovers of finished work in one pass, removing worktrees and local branches whose pull request merged or closed, detached worktrees…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
review-sessions
toy-crane
Review this machine's recent Claude Code and Codex session logs for work agents redo by chance every session, and report candidates to hand to a deterministic…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
resolve-follow-ups
toy-crane
Resolve evidence-backed `docs/follow-ups/*.md` through a bounded manual, Codex Scheduled task, or Claude Routine sweep.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
babysit-specs
toy-crane
Revise active `docs/specs/SLUG/` specs so they match what has shipped since they were written.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
maintain-project-context
toy-crane
Clean, compact, and reconcile durable project context and any configured issue-tracker mirror without changing established meaning.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
implement
toy-crane
Implement or resume settled work from a selected spec folder as one handoff bundle.
SkillAFreshness: A★ 3Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get expo-smoke-test running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
expo-smoke-test skill. Agent Mart. https://agentmart.dev/skills/toy-crane-expo-smoke-test (last updated 2026-10-24)