Expo Brownfield Integration
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
Integrate Expo and React Native into an existing native iOS or Android app.
$ npx skills add expo/skills --skill expo-brownfield -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install expo/skills expo-brownfield --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/expo/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/expo/skills/expo-brownfield .claude/skills/expo-brownfield && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "expo-brownfield" agent skill from https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-brownfield into .claude/skills/expo-brownfield/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "expo-brownfield", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-brownfieldType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add expo/skills --skill expo-brownfield -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install expo/skills expo-brownfield --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/expo/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/expo/skills/expo-brownfield .agents/skills/expo-brownfield && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "expo-brownfield" agent skill from https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-brownfield into .agents/skills/expo-brownfield/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "expo-brownfield", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add expo/skills --skill expo-brownfield -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install expo/skills expo-brownfield --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/expo/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/expo/skills/expo-brownfield .cursor/skills/expo-brownfield && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "expo-brownfield" agent skill from https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-brownfield into .cursor/skills/expo-brownfield/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "expo-brownfield", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/expo/skills.git --path plugins/expo/skills/expo-brownfield--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add expo/skills --skill expo-brownfield -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install expo/skills expo-brownfield --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/expo/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/expo/skills/expo-brownfield .gemini/skills/expo-brownfield && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "expo-brownfield" agent skill from https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-brownfield into .gemini/skills/expo-brownfield/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "expo-brownfield", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install expo/skills expo-brownfieldInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add expo/skills --skill expo-brownfield -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/expo/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/expo/skills/expo-brownfield .github/skills/expo-brownfield && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "expo-brownfield" agent skill from https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-brownfield into .github/skills/expo-brownfield/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "expo-brownfield", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add expo/skills --skill expo-brownfield -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install expo/skills expo-brownfield --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/expo/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/expo/skills/expo-brownfield .opencode/skills/expo-brownfield && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "expo-brownfield" agent skill from https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-brownfield into .opencode/skills/expo-brownfield/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "expo-brownfield", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
expo-brownfieldIntegrate Expo and React Native into an existing native iOS or Android app.
Expo Brownfield is an agent skill from expo/skills, published by the product's own GitHub organization. Integrate Expo and React Native into an existing native iOS or Android app. Use for brownfield, embedding a React Native screen in SwiftUI/UIKit or Kotlin, or AAR/XCFramework packaging. Covers isolated and integrated approaches. For building or distributing a purely native app with EAS, use eas-app-stores.
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including reference files (for example `agents/openai.yaml`, `references/brownfield-integrated.md` and `references/brownfield-isolated.md`).
It sits in Mobile, covering Cross-platform mobile apps, iOS development and Android development. It works with Expo, React Native, Android and iOS. The repository describes itself as: A collection of AI agent skills for working with Expo projects and Expo Application Services. The licence is MIT.
Read from SKILL.md and the folder at commit d4f4840. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.expo.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Expo Brownfield loads about 1.4k tokens when it runs, and up to ~20k if it reads all its reference files. Until then it costs about 81 tokens; SKILL.md has 693 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from expo/skills at commit d4f4840, republished under its MIT licence (© expo). 693 words, ~1,450 tokens.
.claude/skills/expo-brownfield/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.A brownfield app is an existing native iOS or Android app that adopts React Native incrementally, as opposed to a greenfield app that is React Native from day one.
Identify the existing app entry point, navigation owner, native build system, deployment targets, and any React Native runtime already linked. Record the installed Expo, React Native, and brownfield package versions from the lockfile. Adding EAS Build or Submit to a Swift app alone does not require React Native; route that task to eas-app-stores.
Preserve the host's SwiftUI App / UIKit window and native screens when embedding a feature. Do not run prebuild in a manually maintained native host, including during troubleshooting. An isolated Expo producer may use CNG; keep its generated ios/ and android/ separate from the consuming app.
Expo supports two distinct ways to add React Native to a brownfield project:
| Approach | What ships to the native app | When to choose |
|---|---|---|
| Isolated | Prebuilt AAR / XCFramework | Native team doesn't need Node or RN tooling; RN code can live in a separate repo |
| Integrated | React Native sources added to the existing Gradle / CocoaPods build | One team owns everything; comfortable with RN tooling; wants a single build |
For the full decision matrix, see ./references/comparison.md.
Use these quick rules — fall through to comparison.md for anything ambiguous.
More information available at https://docs.expo.dev/brownfield/overview/
Both approaches require, in the environment that builds the React Native side:
The iOS build environment needs Xcode and CocoaPods (use the project's Gemfile/Bundler setup when present). The isolated consuming app needs Xcode but no CocoaPods or RN tooling just to consume the artifacts.
For an existing Expo/RN project, keep its selected SDK and use npx expo install to align dependencies. Do not upgrade it just to follow this skill. For a new producer, use the current stable SDK compatible with the host's OS support, dependencies, and build toolchain; confirm the release is stable before selecting it.
Before native setup, read ./references/version-compatibility.md for matching native templates, toolchain/OS requirements, and build defaults across SDK versions. A purely native consumer has no Expo SDK version to pin, but must satisfy the artifact's requirements.
Open the RN screen with input, return a result to native, dismiss, and reopen with fresh input. Check listener cleanup and the host's original navigation. Then build the host in Release with a Release artifact and Metro stopped. Rendering only in Expo Go or the producer's example app does not validate the integration. See ./references/feature-integration.md for the complete acceptance scenario.
If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:
npx --yes submit-expo-feedback@latest --category skills --subject "expo-brownfield" "<actionable feedback>"Only submit when you have something specific and actionable to report. Include as much relevant context as possible. If an AI agent repeatedly failed or the user had to take over an Expo task, load the expo-skill-feedback skill and follow its eval-candidate flow instead of reusing the command above.
© expo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 7 other files (references) in plugins/expo/skills/expo-brownfield of expo/skills.
Open the folder on GitHubat commit d4f4840
Expo Brownfield next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Expo Brownfield this skillexpo/skills | 2.7k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Expo Brownfield Integrationmweinbach/agent-coworker | 156 | 2 repos | ~900 | Automated safety check: Notes | Custom licence | |
| Expo UIarcboxlabs/linkcode | 155 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Simulator Audio E2Ehyochan/react-native-nitro-sound | 961 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Moq Kitsoftware-mansion-labs/skills | 291 | — | ~5k | Automated safety check: Pass | Apache-2.0 | |
| Web To Mobilesuntay44/web-to-mobile-magic-plugin | 107 | — | ~781 | Automated safety check: Pass | MIT |
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
arcboxlabs/linkcode
Framework (OSS). An agent skill from arcboxlabs/linkcode.
hyochan/react-native-nitro-sound
Build and run repeatable react-native-nitro-sound recorder/player regression tests on an iOS Simulator or Android emulator, with explicit virtual-device selection, microphone permission, Maestro…
software-mansion-labs/skills
Software Mansion's moq-kit — native Swift (iOS) and Kotlin (Android) SDKs for Media over QUIC (moq-lite) live streaming: sub-second-latency playback, camera/microphone/screen publishing, and…
suntay44/web-to-mobile-magic-plugin
Orchestrate website or web app conversion into a mobile app.
callstackincubator/codex-mobile-dev-plugin
A skill your agent uses when building, running, changing, or debugging local iOS, Android, Expo, React Native, or SwiftUI apps.
expo/skills
Check the health of published EAS Update: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per channel.
expo/skills
Helps understand and write EAS workflow YAML files for Expo projects.
expo/skills
Add an iOS App Clip target to an Expo app. An agent skill from expo/skills.
expo/skills
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).
expo/skills
Submit feedback on an Expo skill—or Expo itself—and control bundled anonymous usage telemetry (off by default / opt-in).
expo/skills
Guide for creating and writing Expo native modules and views using the Expo Modules API (Swift, Kotlin, TypeScript).
Categories
Integrate Expo and React Native into an existing native iOS or Android app. Expo Brownfield is an agent skill from expo/skills, published by the product's own GitHub organization. Integrate Expo and React Native into an existing native iOS or Android app.
Expo Brownfield fits situations like: embedding a React Native screen in SwiftUI/UIKit; AAR/XCFramework packaging.
Run `npx skills add expo/skills --skill expo-brownfield -a claude-code`. Or copy the skill folder (plugins/expo/skills/expo-brownfield in expo/skills) into .claude/skills/expo-brownfield in your project. Claude Code loads it when a task matches its description.
Run `npx skills add expo/skills --skill expo-brownfield -a codex`. Or copy the skill folder (plugins/expo/skills/expo-brownfield in expo/skills) into .agents/skills/expo-brownfield in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add expo/skills --skill expo-brownfield -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/expo-brownfield, .gemini/skills/expo-brownfield, .github/skills/expo-brownfield and .opencode/skills/expo-brownfield in your project.
Going by SKILL.md and its folder, Expo Brownfield needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
SKILL.md names 1 domain. As links in the text: docs.expo.dev. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Expo Brownfield is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 19k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Expo Brownfield: Expo Brownfield Integration (mweinbach/agent-coworker, 156 stars), Expo UI (arcboxlabs/linkcode, 155 stars), Simulator Audio E2E (hyochan/react-native-nitro-sound, 961 stars) and Moq Kit (software-mansion-labs/skills, 291 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
expo (a GitHub organization, an official publisher) maintains it in expo/skills, which has 2,685 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 7, 2026.
Source: expo/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.