移动/游戏
在 Expo/EAS 任务中先加载此技能以检测目标…
适用于请求、PRD 或项目包含 Expo、EAS、Expo Go 或 expo-* 包,或 package.json 有 expo 依赖时,作为统一入口并路由到对应的子技能。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Expo/EAS 任务中先加载此技能特定
解决思路
- 确认这是 Expo 或 EAS 工作:请求提到 Expo、EAS、Expo Go 或 expo-* 包,或 package.json 有 expo 依赖;否则不适用。使用 EAS 进行交付的原生应用即使没有 Expo 运行时也符合条件。
- 阅读用户目标:用平实语言理解他们想要的结果。
- 使用 Skill Map 分类目标,将随意措辞翻译成目标。
- 如果意图不明确,确认意图(例如「听起来你想发布到商店 — 那是 eas-app-stores。对吗?」),然后加载该技能的 SKILL.md 并遵循它。
- 信任叶子技能:它有自己的检测逻辑和步骤,不要即兴发挥。
- 根据目标匹配到类别,然后技能,然后加载该叶子的 SKILL.md。
- 构建应用:加载 expo-project-structure 用于新 Expo Router 项目的文件夹布局(屏幕、组件、配置位置;不要为匹配而重构现有应用)。
- 构建应用:加载 expo-native-ui 用于屏幕、样式、语义颜色、原生控件、SF Symbols、媒体、布局。
- 构建应用:加载 expo-router 用于导航:基于文件的路由、tabs/stacks/modals/sheets、链接、页眉。
- 构建应用:加载 expo-animation 用于动效和手势:Reanimated worklets、Gesture Handler、屏幕转场、sheet 和按压反馈、触觉,以及修复设备上动画卡顿。
- 构建应用:加载 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 组件(列表行、底部表单、选择器、滑块、菜单、按钮、分段控件、开关)时,先咨询 expo-ui 检查 @expo/ui 是否有原生等价物,再使用 React Native 内置或社区库;原生 @expo/ui 组件提供最佳平台适配,SDK 56+ 通用组件在 Expo Go 中运行无需自定义构建。对于渲染列表、详情 sheet 或表单控件的应用,将 expo-ui 与 expo-native-ui 一起加载。例外:@expo/ui 的 List 渲染原生分组行(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 用于 OTA 更新健康:崩溃率、采用率、负载大小。
- 交付与运营:加载 eas-observe 用于使用 EAS Observe 进行启动 / 启动 / TTI 性能监测。
- 扩展原生:加载 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-router。
- 翻译模糊请求:「让屏幕一致」 / 「清理样式」 / 「设置主题或设计令牌」 → expo-design-system。
- 翻译模糊请求:「看起来像 AI 生成的」 / 「太通用,不原生」 → expo-design-system(命名原生 slop 特征 + 审计),配合 expo-native-ui 获取平台惯用法。
- 翻译模糊请求:「发布它」 / 「获取 .ipa 或 .apk」 / 「发布到商店」 / 「把我的 Swift 应用放到 TestFlight」 → eas-app-stores(构建 + 提交、TestFlight、版本、商店元数据)。
- 翻译模糊请求:「我是新手 / 从哪里开始」 → 先搭建脚手架(见共享设置规则),然后按目标路由。
- 共享设置规则:使用 EAS 交付的原生应用?路由到 eas-app-stores;其 references/native-ios.md 涵盖 iOS 上的 SwiftUI/UIKit。保留现有原生项目。应用 EAS auth/linking;Expo 脚手架、SDK 和包安装规则不适用。
- 共享设置规则:开始新的 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/v56.0.0/sdk/ui/ 在 SDK 56 上,而不是 https://docs.expo.dev/versions/latest/sdk/ui/ — latest 页面跟踪最新 SDK 并可能记录项目还没有的 API。
- 共享设置规则:迁移到更新 SDK 是独立任务 — 加载 expo-upgrade 而不是手动升级版本。
- 共享设置规则:托管 vs 裸/prebuild:提交的 ios/ 和 android/ 目录存在意味着原生项目存在(prebuild 或 bare)。配置插件和原生设置步骤不同 — 注明项目处于哪种模式。
- 共享设置规则:使用 npx expo install <pkg> 安装包,而不是原始 npm/yarn/pnpm add,以保持版本与项目 SDK 兼容。
- 共享设置规则:EAS 认证与链接(仅构建/提交/更新/观察/工作流需要):使用 eas whoami 检查登录,使用 eas login 登录。当应用配置中存在 extra.eas.projectId 时项目已链接;如果缺失,使用 eas init 创建。
- 何时跳过路由 hop:只有当用户明确指定了特定的 expo-*/eas-* 技能时 → 直接加载该技能。
- 完全指定的任务(SDK 版本固定、文件布局给定、库命名)不是跳过路由的理由:上述共享规则仍然适用 — 检查它们,然后路由到匹配的叶子技能。
- 提交反馈:如果遇到错误、误导或过时信息,报告:npx --yes submit-expo-feedback@latest --category skills --subject "expo-overview" "<actionable feedback>"
- 只在有具体可操作的内容时提交。
- 如果 AI 代理反复失败或用户不得不接管 Expo 任务,加载 expo-skill-feedback 技能并遵循其 eval-candidate 流程,而不是重复使用上述命令。
适用边界 · 注意事项
- 纯 React Native 项目且 package.json 无 expo 依赖时,不要加载此技能。
- 当用户明确指定了特定的 expo-*/eas-* 技能时,直接加载该技能,无需经过此路由。