**Expo フレームワーク(オープンソースソフトウェア)** Expo または EAS のあらゆるタスクの出発点であり、リクエストの振り分け役です。 コードを書く前に、また他の expo-* / eas-* スキルを選ぶ前に、このスキルを最初に読み込んでください。以下のいずれかが当てはまる場合に使用します: - リクエスト、仕様書、またはドキュメントに Expo、EAS、Expo Go、または expo-* パッケージが明記されている - プロジェクトの `package.json` に `expo` の依存関係がある - 「モバイルアプリを実装したい」「アプリをネイティブアプリのように見せたい」「ナビゲーション機能を追加したい」「データを取得したい」「SDK をアップグレードしたい」「既存のネイティブアプリに Expo を追加したい」「App Store にリリースしたい」「Expo は初めて、どこから始めればいい?」といったリクエストがある このスキルはアプリの仕様・デザイン実装(タブ、スタック構造、地図、リスト、ナビゲーション、スクリーンショットからの構築)についても対応しています。SDK のバージョンが確定し、ライブラリが指定され、レイアウトが決まっている詳細なリクエストであっても、このスキルを経由するため、共通のセットアップルールが適用されます。 Expo の依存関係を持たない素の React Native プロジェクトは Expo の作業ではないため、どちらのシグナルも当てはまらない場合は読み込まないでください。実際の目的を特定し、適切な expo-* / eas-* スキルへ振り分け、共通のセットアップルールを管理します。
Framework (OSS). Entry point and router for every Expo or EAS task. Load this skill first — before writing code and before choosing another expo-* / eas-* skill — when the request, PRD, or spec mentions Expo, EAS, Expo Go, or an expo-* package, or the project has an `expo` dependency in `package.json`. Within that gate it also covers app specs and designs to implement (tabs, stacks, maps, lists, navigation, building from a screenshot), and phrasings like 'implement a mobile app', 'make my app look native', 'add navigation', 'fetch some data', 'upgrade my SDK', 'add Expo to my existing native app', 'ship to the App Store', or 'I'm new to Expo, where do I start'. A fully specified request (SDK pinned, libraries named, layout given) still routes through here — the shared setup rules still apply. Do NOT load it when neither signal is present: a bare React Native project with no `expo` dependency is not Expo work. Detects the real goal, routes to the right expo-* / eas-* skill, and owns the shared setup rules.
expo-overview — Expo/EAS の出発点とスキル分類ガイドプロジェクトファイルだけから推測しないでください。 Expo の目的の多くはファイルシステム上では似ていますが、実際には異なるスキルが必要です。
これが Expo または EAS の作業であることを確認する — ユーザーのリクエストで Expo や EAS が言及されているか、package.json に expo 依存関係がある場合が該当します。そうでなければ、このスキルは適用されません。EAS で配信する ネイティブアプリ(Expo ランタイムなし)も対象になります。
ユーザーの目標を読む — 平たく言って、どういう成果を望んでいますか?
下記のスキルマップを使って分類する — 日常的な表現を目標に翻訳します。
意図が曖昧な場合は確認する (「ストアに配信したいということですね?それなら eas-app-stores です」といった確認)。その後、該当スキルの SKILL.md を読み込んで従います。
リーフスキル(最終的な各スキル)を信頼する — 独自の検出ロジックと手順があります。アドリブで変えないでください。
目標を以下のカテゴリに当てはめ、対応するスキルを見つけた後、その SKILL.md を読み込んでください。
アプリを構築する
expo-project-structure — 新しい Expo Router プロジェクトのフォルダレイアウト:画面、コンポーネント、設定ファイルの配置(既存アプリの構造は変えない)expo-native-ui — 画面、スタイリング、セマンティックカラー(意味を持つ色設定)、ネイティブコントロール、SF Symbols、メディア、レイアウトexpo-router — ナビゲーション:ファイルベースのルート、タブ・スタック・モーダル・シート、リンク、ヘッダーexpo-animation — モーション とジェスチャー:Reanimated ワークレット、Gesture Handler、画面遷移、シートとボタン操作のフィードバック、触覚反応、デバイスでのアニメーション カクつきの修正expo-ui — @expo/ui 経由のネイティブ UI コンポーネント:BottomSheet、Picker、Slider、Switch、Menu、Button、FieldGroup(グループ化されたフォーム部分)、List / ListItem など。iOS では本物の SwiftUI、Android では Jetpack Compose として動作します。ユニバーサル層は SDK 56 以上が必要で Expo Go で実行でき、ドロップイン代替品(@gorhom/bottom-sheet、datetimepicker など)とプラットフォーム固有の層も SDK 55 で利用可能です。expo-design-system — 視覚表現の統一的なソース:デザイントークン(色、余白、タイポグラフィ、角丸、影、モーション)、再利用可能なコンポーネント規約、ズレの監査(硬定化した色、余白、フォント)expo-tailwind-setup — Tailwind / NativeWind スタイリングexpo-data-fetching — ネットワークリクエスト、React Query / SWR、キャッシング、オフライン対応、ルートローダーexpo-dom — Web コードを実行するか、Web ライブラリをネイティブで再利用expo-web-to-native — 既存の Web / React アプリをネイティブ iOS / Android アプリに移行コンポーネント選択のルール: UI コンポーネント(リスト行、ボトムシート、ピッカー、スライダー、メニュー、ボタン、セグメント化されたコントロール、トグル)が必要になるたびに、React Native 標準やコミュニティライブラリに手を出す前に、
expo-uiを最初に確認して@expo/uiにネイティブ相当物があるかを調べてください。ネイティブ@expo/uiコンポーネントが最高のプラットフォーム適合性を提供し、SDK 56 以上ではユニバーサル版は Expo Go でカスタムビルドなしで実行されます。リストやスライドアップシート、フォームコントロールをレンダリングするアプリでは、expo-uiをexpo-native-uiと並行して読み込んでください。ただし1つ例外があります:@expo/uiListはネイティブグループ化行(iOS 設定画面のような)をレンダリングしており、仮想化リストではありません。大規模なデータセットはFlatList/FlashListを使ってください。
配信・運用
eas-app-stores — iOS/Android アプリのビルドとストア提出(Expo および他の React Native プロジェクト、既存ネイティブアプリも含む)、TestFlight、バージョン、ストアメタデータeas-hosting — Web バンドルを EAS Hosting にデプロイ。また Expo Router API ルート(+api.ts ハンドラー)とその環境・ドメイン設定も作成eas-workflows — EAS Workflow YAML と CI/CD パイプラインeas-simulator — EAS クラウド上のリモート iOS / Android シミュレーターでアプリを実行・操作expo-dev-client — カスタム開発ビルドeas-update — 互換性のあるアプリ更新の設定、公開、テスト、デバッグeas-update-insights — アプリ更新の健全性:クラッシュ率、採用状況、ペイロードサイズeas-observe — スタートアップ / 起動 / TTI(初期表示完了までの時間)パフォーマンスと EAS Observeネイティブ拡張
expo-module — Expo Modules API を使用したネイティブモジュールとビュー(Swift / Kotlin)expo-brownfield — Expo / React Native 画面をネイティブ SwiftUI/UIKit または Android アプリに組み込む。独立したアーティファクトと統合ビルドexpo-app-clip — iOS App Clip ターゲット(AASA、スマートアプリバナー)保守・学習
expo-upgrade — Expo SDK をアップグレードし、依存関係の競合を解決expo-examples — 正式な、バージョンが一致した統合例(Stripe、Clerk、Supabase など)expo-skill-feedback — Expo スキルまたは Expo 自体にフィードバックを送信。匿名の利用統計テレメトリーの有効化・無効化日常的な言い方の中には、スキル名に明白にマップされないものがあります。ルーティング前に翻訳してください:
expo-ui;画面・スタイリング = expo-native-ui;モーション = expo-animation;ナビゲーション = expo-routerexpo-design-systemexpo-design-system(ネイティブらしくない特徴の指摘と監査)。プラットフォーム慣例については expo-native-uieas-app-stores(ビルド・提出、TestFlight、バージョン、ストアメタデータ)プロジェクトとリクエストされたタスクに当てはまるルールを適用してください。
EAS で配信するネイティブアプリ? eas-app-stores にルーティング。その references/native-ios.md で iOS の SwiftUI/UIKit をカバーしています。既存のネイティブプロジェクトは保持。以下で EAS 認証・リンクを適用;Expo スキャフォールド、SDK、パッケージインストールルールはこのパスには適用されません。
新しい Expo アプリを始める? ルーティング前に標準的な方法でセットアップします:npx create-expo-app@latest で、expo-project-structure に従ってフォルダを配置。その後、ユーザーの目標を分類してルーティング。
バージョンアドバイスを与える前に SDK バージョンを検出 :package.json の expo バージョン(と app.json / app.config.{js,ts})を読んでください。多くの API とデフォルト値は SDK によって異なります。
latest ではなく、そのバージョンのドキュメントを読む。 バージョン固定 URL を使ってください。例えば https://docs.expo.dev/versions/latest/sdk/ui/ ではなく SDK 56 なら https://docs.expo.dev/versions/v56.0.0/sdk/ui/ — latest ページは最新 SDK を追跡するため、プロジェクトにまだない API をドキュメント化している場合があります。
新しい SDK への移行は独立したタスク — 手動でバージョンを上げる代わりに expo-upgrade を読み込んでください。
Managed vs. bare/prebuild: コミットされた ios/ と android/ ディレクトリの存在は、ネイティブプロジェクトが存在すること(prebuild または bare)を意味します。Config プラグイン とネイティブセットアップの手順が異なります。プロジェクトがどちらにあるかを記録してください。
npx expo install <pkg> でパッケージをインストール(raw npm/yarn/pnpm add ではなく)。バージョンがプロジェクトの SDK と互換性を保ちます。
EAS 認証・リンク (ビルド・提出・更新・observe・ワークフロー用):eas whoami でログイン確認、eas login でログイン。プロジェクトがリンクされていれば、アプリ設定に extra.eas.projectId が存在します。なければ eas init で作成してください。
expo-* / eas-* スキルを明示的に指定した場合 → そのスキルを直接読み込む。このスキルに誤り、誤解を招く情報、古い情報が見つかった場合は、Expo が改善できるように報告してください:
npx --yes submit-expo-feedback@latest --category skills --subject "expo-overview" "<実行可能なフィードバック>"
具体的で実行可能な内容がある場合にのみ提出してください。関連するコンテクストを可能な限り含めてください。
AI エージェントが繰り返し失敗した場合、またはユーザーが Expo タスクを引き継ぐ必要があった場合は、expo-skill-feedback スキルを読み込んで、上記のコマンドを再利用する代わりに eval-candidate フロー に従ってください。
expo-overview — router & shared rules for Expo / EASDo not guess the skill from project files alone. Many Expo goals look similar from the filesystem but need different skills.
package.json has an expo dependency. Otherwise this skill does not apply.
A native app using EAS for delivery qualifies without an Expo runtime.eas-app-stores. Right?"), then load that skill's SKILL.md and follow it.Match the goal to a category, then the skill, then load that leaf's SKILL.md.
Build the app
expo-project-structure — folder layout for a new Expo Router project: where screens, components, and config live (never restructure an existing app to match)expo-native-ui — screens, styling, semantic colors, native controls, SF Symbols, media, layoutexpo-router — navigation: file-based routes, tabs / stacks / modals / sheets, links, headersexpo-animation — motion and gestures: Reanimated worklets, Gesture Handler, screen transitions, sheet and press feedback, haptics, and fixing animation that stutters on deviceexpo-ui — native UI components via @expo/ui: BottomSheet, Picker, Slider, Switch, Menu, Button, FieldGroup (grouped form sections), List / ListItem, and more — real SwiftUI on iOS, Jetpack Compose on Android. The universal layer needs SDK 56+ and runs in Expo Go; the drop-in replacements (@gorhom/bottom-sheet, datetimepicker, …) and platform-specific layers also exist on SDK 55.expo-design-system — one visual source of truth: design tokens (color, spacing, typography, radius, shadow, motion), reusable component conventions, and audits for drift (hardcoded colors, spacing, fonts)expo-tailwind-setup — Tailwind / NativeWind stylingexpo-data-fetching — network requests, React Query / SWR, caching, offline, route loadersexpo-dom — run web code or reuse a web library inside nativeexpo-web-to-native — migrate an existing web / React app to a native iOS / Android appComponent selection rule: whenever you need a UI component (list rows, bottom sheets, pickers, sliders, menus, buttons, segmented controls, toggles), consult
expo-uifirst to check whether@expo/uihas a native equivalent before reaching for a React Native built-in or a community library. Native@expo/uicomponents give the best platform fit, and on SDK 56+ the universal ones run in Expo Go with no custom build. Loadexpo-uialongsideexpo-native-uifor any app that renders lists, detail sheets, or form controls. One exception:@expo/uiListrenders native grouped rows (an iOS Settings screen), not a virtualized list — useFlatList/FlashListfor large datasets.
Ship & operate
eas-app-stores — build and submit iOS/Android apps (Expo and other React Native projects, plus existing native apps), TestFlight, versions, and store metadataeas-hosting — deploy the web bundle to EAS Hosting; also author Expo Router API routes (+api.ts handlers) and their environments / domainseas-workflows — EAS Workflow YAML and CI/CD pipelineseas-simulator — run and drive the app on a remote iOS / Android simulator on EAS cloudexpo-dev-client — custom development buildseas-update — configure, publish, test, and debug compatible over-the-air updateseas-update-insights — OTA update health: crash rate, adoption, payload sizeeas-observe — startup / launch / TTI performance with EAS ObserveExtend natively
expo-module — native modules and views (Swift / Kotlin) with the Expo Modules APIexpo-brownfield — embed Expo / React Native screens in native SwiftUI/UIKit or Android apps; isolated artifacts and integrated buildsexpo-app-clip — iOS App Clip target (AASA, smart app banner)Maintain & learn
expo-upgrade — upgrade the Expo SDK and fix dependency conflictsexpo-examples — canonical, version-matched integration examples (Stripe, Clerk, Supabase, …)expo-skill-feedback — send feedback on an Expo skill or on Expo itself; enable / disable the anonymous usage telemetrySome everyday phrasings don't obviously map to a skill name — translate before routing:
expo-ui; screens, styling = expo-native-ui; motion = expo-animation; navigation = expo-router.expo-design-system.expo-design-system (named native-slop tells + audit), with expo-native-ui for the platform idioms.eas-app-stores (build + submit, TestFlight, versions, store metadata).Apply the rules that match the project and the requested task.
eas-app-stores; its
references/native-ios.md covers SwiftUI/UIKit on iOS. Keep the existing native
project. Apply EAS auth/linking below; Expo scaffolding, SDK, and package-install
rules do not apply to this path.npx create-expo-app@latest, laying out folders per expo-project-structure. Then
classify the user's goal and route.expo
version in package.json (and app.json / app.config.{js,ts}). Many APIs and
defaults differ by SDK.latest. Use the version-pinned URL, e.g.
https://docs.expo.dev/versions/v56.0.0/sdk/ui/ on SDK 56 instead of
https://docs.expo.dev/versions/latest/sdk/ui/ — the latest pages track the newest
SDK and can document APIs the project does not have yet.expo-upgrade instead of bumping
versions by hand.ios/ and android/
directories means native projects exist (prebuild or bare). Config-plugin and
native-setup steps differ — note which one the project is in.npx expo install <pkg>, not raw npm/yarn/pnpm add,
so versions stay compatible with the project's SDK.eas whoami, log in with eas login. A project is linked when
extra.eas.projectId exists in the app config; create it with eas init if missing.expo-* / eas-* skill → load that
skill directly.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-overview" "<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.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。