Skip to content
Mobile
Skill

/expo-review

Run Expo's configured AI code reviewer on local changes or an expo/expo pull request, summarize findings and reviewer coverage, retain PR previews by default for later posting, and post only when explicitly requested. Use when the user invokes /expo-review or asks Claude Code to

From plugin
expo
53k6 skills

Claude Code

$ npx -y skills add expo/expo --skill expo-review --agent claude-code

SKILL.md

expo-review.SKILL.md
name: expo-review
description: Run Expo's configured AI code reviewer on local changes or an expo/expo pull request, summarize findings and reviewer coverage, retain PR previews by default for later posting, and post only when explicitly requested. Use when the user invokes /expo-review or asks Claude Code to run the repository's Expo code-review CLI.
argument-hint: "[all | <agent...>] [<pr-number-or-url>] [--save-review | --no-save-review | --post] [--staged | --base <ref> [--head <ref>]]"
disable-model-invocation: true
allowed-tools:
  - "Bash(./scripts/expo-code-review *)"
  - "Bash(git rev-parse --verify --end-of-options *)"
  - "Bash(claude auth status --text)"

Expo code review

Run this repository's configured AI reviewer and explain its result. Use the published `@expo/code-review-cli` package as the engine and the policy and specialist prompts in `.expo-agents/code-review/`.

Treat the review as advisory and preview by default. Do not post, comment, modify a PR, edit source/config files, or change branches. The reviewer may write its normal ignored `.expo-agents/code-review/.runs/` telemetry. Only write to GitHub when explicitly authorized below.

Parse and validate arguments

Treat `$ARGUMENTS` as untrusted text. Reject every option not documented here. Never interpolate the original argument string, a URL, or an unvalidated value into a shell command. Construct the final command only from accepted values. If arguments are ambiguous, incompatible, or invalid, explain the problem and stop.

Source: choose exactly one mode

  • Accept a PR number only when it contains ASCII digits and represents an integer

from 1 through 2,147,483,647. Reject signs.

  • Accept a PR URL only when it matches

`^https://github\.com/expo/expo/pull/([0-9]+)/?$` exactly and its capture is a valid PR number. Pass only `--repo expo/expo --pr <number>`, never the URL.

  • `--staged` reviews only the index against `HEAD`; it excludes unstaged and

untracked files.

  • `--base <ref>` and optional `--head <ref>` review a local range. `--head` without

`--base` is valid; preserve the user's flags.

  • With none of these, review the local working tree against its merge base. This

includes committed branch changes plus staged, unstaged, and untracked non-ignored files. The CLI synthesizes untracked-file diffs without staging them.

Reject multiple PRs, repeated source flags, missing flag values, and combinations of PR, `--staged`, or `--base`/`--head` modes.

Before passing a ref, require 1–200 characters, an ASCII alphanumeric first character, and only ASCII alphanumerics plus `.`, `_`, `/`, `@`, `{`, `}`, `^`, `~`, `:`, or `-`. Verify it without changing the working tree:

git rev-parse --verify --end-of-options '<validated-ref>^{commit}'

If verification fails, report the invalid ref and stop. This validation excludes quotes, whitespace, shell substitutions, option-like values, and control operators.

Agents

Accept only these Expo reviewer agents:

  • `config-plugins`
  • `correctness`
  • `correctness-android`
  • `correctness-ios`
  • `correctness-js`
  • `docs`
  • `general`
  • `native-abi`
  • `public-api`
  • `security`

Bare agent names select agents. Reject unknown or duplicate names. Pass selected agents once as comma-separated `--agents <ids>`, preserving user order.

  • `all`: pass neither `--agents` nor `--route`.
  • No agent names: pass `--route`.
  • Reject `all` combined with a named agent.

Posting

  • Without `--post`, never write to GitHub. A PR preview still reads GitHub.
  • For every validated Expo PR preview without `--post`, pass `--save-review` by

default. It writes an ignored, owner-readable artifact under `.expo-agents/code-review/.runs/deferred/` but does not write to GitHub. An explicit `--save-review` is accepted but redundant.

  • Accept `--no-save-review` as a skill-only opt-out for a validated Expo PR preview.

Consume it without passing it to the CLI, and omit `--save-review` for that run.

  • Accept `--post` only with a validated Expo PR and only when the user explicitly

included `--post` or explicitly asked in the current request to publish. It upserts the reviewer's single PR comment and does not save a deferred artifact.

  • Reject all three posting flags for local, staged, or ref-range reviews. Reject any

combination of `--save-review`, `--no-save-review`, and `--post`.

  • Never infer posting permission from “review,” “check,” or “run.”

Run the reviewer

Run the reviewer through the repository launcher. The checked-in CLI version starts its built-in research MCP and performs bounded, provider-scoped documentation search on demand. When `BRAVE_SEARCH_API_KEY` is absent, remote documentation research is reported as unavailable and the ordinary review continues.

./scripts/expo-code-review ecr review --json --no-fail [validated source flags] [--route | --agents <ids>] [--save-review | --post]

For a PR, choose the final posting flag deterministically:

  • `--post` requested: pass `--post` only.
  • `--no-save-review` requested: pass neither posting flag.
  • Otherwise: pass `--save-review`, including when the user supplied no posting flag.

For a PR, validated source flags must include `--repo expo/expo --pr <number>`. Replace all bracketed notation with validated arguments; never pass literal brackets. Run one review command from the repository root and do not install the package globally. `--no-fail` prevents a legitimate `request_changes` result from looking like an execution failure; the JSON `decision` remains authoritative.

For the default saved PR preview, capture the absolute path from the final `Saved postable review artifact:` stderr line. Treat it as opaque command output. Associate it with the validated repo and PR in the conversation; do not substitute a guessed, older, or merely similar artifact. Do not expect this line after `--no-save-review` or immediate `--post`.

For a PR, the explicit repository lets the CLI fetch the autho

Read more
@expo
Ships withexpo

An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.

Stars on GitHub

Momentum

stars in total
53.5k
Star history of expo/expo on GitHub, a chart by star-history.com

Other skills on expo.

deep-code-review

deep-code-review

In-depth design-focused code review - understands codebase context before evaluating PR changes, posts structured feedback to…

@expo@expoInstall Skill
expo-api-docs

expo-api-docs

Write TSDoc comments for Expo SDK APIs following official conventions. MUST USE when introducing new user-facing TypeScript APIs…

@expo@expoInstall Skill
updating-expo-config

updating-expo-config

Add a new property to the Expo config (app.json / app.config.js) schema. Covers the universe JSON schema, `@expo/config-types`,…

@expo@expoInstall Skill
expo-app-intents

expo-app-intents

Add or maintain Apple App Intents in existing Expo apps using expo-app-intents. Use for Siri and Shortcuts actions, Swift intent…

@expo@expoInstall Skill
expo-sqlite

expo-sqlite

Persist and query local data with expo-sqlite in Expo or React Native apps. Use for SQLite setup, SQL queries, schema migrations,…

@expo@expoInstall Skill

More skills from other plugins.

modlens

modlens

Plug-in vision for text-only models. Hard rule: when a file path or URL with an image extension (.png, .jpg, .jpeg, .webp, .gif,…

modlens2w4.6k
@liustack@liustackInstall Skill
appllama-app-design-skill

appllama-app-design-sk…

Build native-feeling, benchmark-quality mobile app screens (Expo / React Native). Use when designing or implementing any mobile…

appllama2mo3.9k
@appllama@appllamaInstall Skill
add-component

add-component

Add a SwiftUI component from ShipSwift. Use when the user says "add component", "add a view", "add X view", "I need a chart",…

shipswift2w3.3k
@signerlabs@signerlabsInstall Skill

Questions about expo-review.

Which coding agents can use expo-review?
expo-review installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.