**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の基本的な進め方と共通ルールファイル構成だけで推測しないでください。 Expoの多くの作業はフォルダの構成は似ていても、異なるスキルが必要です。
これがExpo作業かを確認する — ユーザーのリクエストがExpoに言及しているか、package.jsonにexpoの依存関係がある。どちらもなければ、このスキルは該当しません。expoの依存関係がないベアなReact Nativeプロジェクトはexpo作業ではありません。
ユーザーのゴールを読む — 実現したい成果は何か、実際の言葉で理解する。
下のスキルマップで分類する — ユーザーの日常的な表現をゴールに訳して対応させる。
意図を確認する(曖昧な場合)—「App Store/Play Storeにリリースしたいということですか。それならeas-app-storesです」というように確認してから、そのスキルのSKILL.mdを読んで従う。
最終的なスキルを信頼する — それ自身の検出ロジックとステップを持っています。即興で進めないでください。
ゴールをカテゴリに、その後スキルに対応させ、その先のSKILL.mdを読んでください。
アプリを開発する
expo-project-structure — 新しいExpo Routerプロジェクトのフォルダレイアウト:スクリーン、コンポーネント、設定の配置場所(既存アプリを無理に再構成しないこと)expo-native-ui — スクリーン、スタイル、意味的な色(ブランドカラーなど)、ネイティブUI部品、SF Symbols(Apple標準アイコン)、メディア、アニメーション、レイアウト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 — ネイティブ内でウェブコードを実行したり、ウェブライブラリを再利用するexpo-web-to-native — 既存のウェブ / Reactアプリをネイティブ(iOS / Android)アプリに移植する部品選択ルール: UIコンポーネントが必要な場合(リスト行、ボトムシート、ピッカー、スライダー、メニュー、ボタン、セグメント選択、トグル)、React Nativeの組み込み部品やコミュニティライブラリを探す前に、必ず
expo-uiを確認して@expo/uiにネイティブ相当品があるか調べてください。ネイティブの@expo/ui部品が最も各プラットフォームに合い、SDK 56以上ではユニバーサル版がカスタムビルドなしでExpo Go内で動作します。リスト、詳細シート、フォーム制御を描画するアプリでは、expo-native-uiと一緒にexpo-uiを読んでください。例外:@expo/uiのListはネイティブ形式の行グループ(iOSの設定画面のような外観)を描画します — 大規模データセットの場合はFlatList/FlashListを使ってください。
リリースと運用
eas-app-stores — App Store / Play Storeへのビルドと申請、TestFlight、バージョン、ストアメタデータeas-hosting — ウェブバンドルをEAS Hostingにデプロイ。Expo Router APIルート(+api.tsハンドラー)と環境/ドメインの作成も行うeas-workflows — EAS WorkflowのYAMLファイルとCI/CDパイプラインeas-simulator — EAS クラウド上でリモートのiOS / Androidシミュレーターでアプリを実行・操作するexpo-dev-client — カスタム開発ビルドeas-update-insights — OTA更新(アプリ再インストール不要なアップデート)の健全性:クラッシュ率、導入率、ペイロードサイズeas-observe — EAS Observeでの起動 / ローンチ / TTI(初回インタラクションまでの時間)パフォーマンスネイティブ機能を拡張する
expo-module — ネイティブモジュールとビュー(Swift / Kotlin):Expo Modules APIexpo-brownfield — 既存ネイティブアプリにExpo / React Nativeを埋め込む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-routerexpo-design-systemeas-app-stores(ビルド + 申請、TestFlight、バージョン、ストアメタデータ)これらはすべてのExpoスキルに適用されるため、各スキルで繰り返さず、ここで一度だけ処理します。
Expoプロジェクトがまだですか? 機能スキルにルーティングする前に、標準的な方法で始めてください:
npx create-expo-app@latestで、expo-project-structureに従ってフォルダを配置。その後、ユーザーのゴールを分類してルーティング。
SDKバージョンを検出します — バージョン固有のアドバイスの前に:package.jsonのexpoバージョン(とapp.json / app.config.{js,ts})を読む。API と デフォルトはSDKごとに異なります。
そのSDKのドキュメントを読んでください。latestではなく。 バージョン指定のURLを使ってください。例えば、https://docs.expo.dev/versions/latest/sdk/ui/ではなくhttps://docs.expo.dev/versions/v56.0.0/sdk/ui/をSDK 56で使用。latestページは最新SDKを追跡し、プロジェクトがまだ持っていないAPIを記述できます。
新しいSDKへの移行はそれ自体がタスク — 手動でバージョンをアップしないでください。代わりにexpo-upgradeを読んでください。
マネージドとベア/プリビルド:コミット済みのios/とandroid/ディレクトリがあればネイティブプロジェクトが存在します(プリビルドまたはベア)。Config-pluginとネイティブセットアップのステップが異なります — どちらのプロジェクトかに注意してください。
パッケージは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スキルを読んで、その評価候補フローに従ってください。
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. If neither holds, stop: this skill does not apply. A bare React
Native project with no expo dependency is not Expo work.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, animations, 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 to the App Store / Play Store / 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-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 in an existing native appexpo-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, animations = expo-native-ui; navigation = expo-router.expo-design-system.eas-app-stores (build + submit, TestFlight, versions, store metadata).These apply across every Expo skill, so handle them here once instead of repeating them in each leaf.
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 による自動翻訳です。