All skills
expo avatar

/expo-skill-eval

@b2fdce7 official
by expoexpo/skills2.6k stars
156

Evaluate Expo skills in this repo end-to-end - trigger accuracy, generated code quality, and runtime screenshots on iOS simulator and Android emulator via Expo Go (web optional). Use when the user wants to eval an Expo skill, test that a skill produces working code, benchmark a skill with device screenshots, or verify a skill's output renders correctly.

Use this Skill: https://skilld.dev/gh/expo/skills/expo-skill-eval

This session only. Nothing lands on disk.

referencesruntime-matrix.md

≈1.1k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Runtime applicability matrix

Which plugins/expo/skills/* skills can be evaluated at which level. Consult this before writing eval cases — putting runtime.mode: "expo-go" on a skill that needs custom native code wastes a device cycle and produces a misleading FAIL.

Modes:

  • expo-go — generated code runs in Expo Go on simulator/emulator; screenshot grading applies.
  • static-only — stop after the static gate (tsc / lint / expo export). Used when the output needs custom native code, a dev build, or produces no UI at all.
  • n/a — the skill's output is not app code (config, CI YAML, CLI workflows); code evals don't apply, or apply only as file-content assertions without a fixture app.
Skill Mode Platforms Notes
expo-router expo-go ios, android Navigation/routing target: routes, links, native stacks, modals, sheets, headers. Native tabs sections may need a dev build — verify per case.
expo-native-ui expo-go ios, android Core target for visual evals. RN primitives + styling/controls/media/animations all work in Expo Go.
expo-tailwind-setup expo-go ios, android, web NativeWind v5 / react-native-css are JS-level; works in Expo Go. Good web candidate too.
expo-data-fetching expo-go ios, android Fetch/React Query/SWR are pure JS. Mock or use stable public endpoints so evals are deterministic.
expo-dom expo-go ios, android, web DOM components run in a webview on native (Expo Go, SDK 52+) and as-is on web. Allow extra settle time for the webview to paint.
eas-hosting static-only + HTTP — No screenshot: while Metro runs, curl the route and save the response as an output file for grading.
expo-ui (merged swift-ui + jetpack-compose) expo-go ios, android, web @expo/ui ships in the SDK 56 default template (~56.0.17) and its native code is included in Expo Go 56 — verified rendering 2026-06: a SwiftUI Form renders in Expo Go on the iOS simulator. The universal components (Host, Row, Column, Button, List, …) also render on web; only the platform-specific @expo/ui/swift-ui (SwiftUI) and @expo/ui/jetpack-compose (Compose) trees are native-only and render blank on web. Pick platforms by what the eval case uses.
expo-module static-only — Custom native modules can't load in Expo Go. Gate on TS compile of the module API; native compilation (prebuild + xcodebuild/gradle) is possible but expensive — out of scope for now.
expo-app-clip static-only — App Clip targets require prebuild + Xcode. Assert on config-plugin output instead.
expo-brownfield static-only — Brownfield integration has no Expo Go story. Assert on generated integration files.
expo-dev-client n/a — Output is build/distribution workflow, not renderable app code.
eas-app-stores n/a — Deployment guidance; assert on transcript/config content only.
eas-workflows n/a — Output is .eas/workflows/ YAML; assert on YAML content (and workflow_validate via the Expo MCP if available).
expo-upgrade static-only — An upgrade eval can run the static gate on the upgraded fixture — a strong signal. Needs a fixture pinned to an older SDK (pass e.g. 55 to make-fixture.sh).
eas-update-insights n/a — CLI/metrics interpretation; no app code output.
eas-observe expo-go (verify) ios, android expo-observe instrumentation is JS-level, but confirm the package works in Expo Go before relying on screenshots; fall back to static-only.

Entries marked "verify" haven't been validated against a real run yet — confirm on first use and update this table.

Image-prompt (clone-this) candidates

Image prompts (reference_image — build an app to match a target screenshot, graded by reference_match + references/design-rubric.md) are most informative for the visual skills — expo-router, expo-ui, expo-tailwind-setup, expo-dom — where reproducing a specific UI is the point. Pair them with "Runtime + screenshots" so the harness captures the generated app to compare against the target. They add nothing for n/a skills (no app UI).

Source: SKILL.md on GitHub

1 warning2mo3 checks · Risk SAFE
  • Gen Agent Trust Hub2mo

    The skill facilitates the end-to-end evaluation of Expo-based AI agent skills using simulators, emulators, and local build tools. It uses a structured orchestration model via Python and shell scripts within controlled temporary directories. All external dependencies and scripts originate from the vendor's own repository and official package registries.

  • Socket2mo

    No alerts

  • Snyk2mo

    Risk: MEDIUM · 1 issue

Signed by skilld at b2fdce7. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 days ago.

Activeupdated 3 months ago
What it can do
Reads files Edits files Runs commands
version
1.0.0
All 13 allowed tools
Read(~/.cache/expo-skill-eval/**)Read(/tmp/expo-skill-eval-*/**)Read(/private/tmp/expo-skill-eval-*/**)Write(/tmp/expo-skill-eval-*/**)Write(/private/tmp/expo-skill-eval-*/**)Edit(/tmp/expo-skill-eval-*/**)Edit(/private/tmp/expo-skill-eval-*/**)Bash(python3 /tmp/expo-skill-eval-*)Bash(python3 /private/tmp/expo-skill-eval-*)Bash(python3 *expo-skill-eval/scripts/*)Bash(tee /tmp/expo-skill-eval-*)Bash(tee /private/tmp/expo-skill-eval-*)Bash(bash *expo-skill-eval/scripts/*)

README badge

README badge for expo/skills/expo-skill-eval