ARTICLE · 1308090
AI 写 Expo 代码总出问题?Expo 官方给编码助手发了套 skills

让 AI 编码助手写 React Native,大概率都踩过这几个坑。
你让它加个路由,它给你套上 React Navigation 的老结构;你说要上 EAS Build,它写出一份三年前的 eas.json;SDK 升级时它顺手把已经废弃的包也装了回去。
问题不在模型本身,而在于它对 Expo 的各种限制知道得不够细。
而 Expo 的限制恰恰很多:哪些文件该放 app/ 下、哪些 API 只在原生端可用、EAS 的哪一步要花钱。
Expo 团队干脆自己把这件事给做了。
这堆 skills 到底是干嘛的
Expo Skills 是 Expo 官方维护的一组 AI agent skills,MIT 协议。
它不是新框架,也不是新 CLI,本质是一批结构化的 SKILL.md 文件,专门给 AI 助手补充 Expo 领域知识:什么时候该用哪个 API、常见工作流该怎么组织、Expo、EAS、React Native、iOS、Android 各自的限制在哪里。
官方把话说得很明白:Expo 文档、Expo CLI、EAS CLI 依然是唯一事实来源,skills 做的是让 agent 把这些东西用对。
适合谁?已经在用 Claude Code、Codex、Cursor 这类工具写 Expo 项目的人;准备把 Web 应用迁到原生的团队;以及希望让 AI 参与构建、发布、OTA 更新这一整套流程的场景。
四个值得一提的地方
第一,免费和付费的边界划得很清楚。
skills 分两组,组名本身就标了性质。
Framework 组是开源的 Expo SDK 和 React Native 相关能力,免费;Services 组核心用途依赖付费的 EAS 服务。
每个 skill 的描述里都带同样的标签,涉及服务的 skill 开头还有成本或套餐限制说明。
对团队来说这很实用:让 AI 干活之前,你先知道这一步要不要掏钱。
第二,覆盖了从建项目到上架的全链路。
Framework 组从 expo-overview 起步,请求模糊或者用户没说清具体工具时先加载它,再路由到具体 skill。
往下就细了:expo-project-structure 管目录,src/ 怎么摆、app/ 只放路由、平台专属文件放哪里;expo-router 管导航,文件路由、链接、原生栈、modal、sheet、原生 tab 和 header;expo-animation 管 Reanimated 和手势;expo-native-ui 管原生观感的样式、语义色、控件和图标;expo-design-system 管 token 主题和组件规范,还能做设计系统漂移审计。
迁移场景也有对应项:expo-web-to-native 把 Next.js、Vite、CRA 项目迁成原生 App;expo-brownfield 往已有的 iOS/Android 工程里塞 Expo;expo-module 写 Swift/Kotlin 原生模块;expo-upgrade 专门处理 SDK 升级、依赖冲突和缓存清理。
这些基本都是开发里真正卡住人的点。
第三,Services 组管发布这件事。
eas-app-stores 负责构建和提交 iOS/Android,包括 TestFlight、profile、版本号和元数据;eas-workflows 写 CI/CD 的 YAML;eas-update 管 OTA 发布和运行时兼容;eas-update-insights 看发布健康度、崩溃率、启动次数、包体积和放量闸门;eas-observe 接监控指标;eas-simulator 直接在 EAS 云端的远程 iOS 模拟器或 Android 模拟器上跑应用,还带浏览器实时预览。
另外有个 experimental 组,走单独的 expo-experiments 插件安装,目前是 expo-migrate-module,把 Swift 模块从 Modules API 1.0 迁到 2.0 宏。
第四,配了 MCP,让它从“会说”变成“能做”。
skills 教 agent 怎么做,Expo MCP server 给它实际动手的权限:按需读最新文档、用 npx expo install 装兼容版本的依赖、触发并监控 EAS 构建、从 TestFlight 拉崩溃数据、在模拟器里截图正在跑的应用。
装 expo 插件时这套 MCP 配置会一起带上,不用单独折腾。
装起来只要一条命令
先按你用的工具选路径:
用 skills CLI 一次装全部:
npx skills@latest add expo/skills --skill '*'这条命令会选中所有 Expo skill,但不会把每个 agent 都选上。CLI 之后还会问装到哪里,想直接指定某个 agent 就加 --agent。
大部分 agent 有这一条就够了。记得在项目根目录执行,装完重启或刷新一下 agent 会话,它才能发现装好的 SKILL.md。
Claude Code 走官方插件市场:
claude plugin install expo@claude-plugins-official也可以在 Claude Code 里直接敲 /plugin install expo@claude-plugins-official。
Codex 走 OpenAI curation 的市场:
codex plugin add expo@openai-curated或者在 Codex 里打开 /plugins,从市场里装 expo。
后续更新,插件安装靠各自的市场自动处理;skills CLI 安装的用:
npx skills@latest update只更新某一个,把名字带上:
npx skills@latest update expo-router装完就可以直接提问试试了,比如:
“Build a native-feeling Expo Router screen with tabs, modals, and animations.”“Create an EAS workflow that builds previews on pull requests.”“Help me upgrade this app to the latest Expo SDK.”“Check whether this EAS Update rollout is healthy.”
agent 会根据任务上下文和每个 skill 的描述,自己挑合适的那一个。
最后
Expo Skills 解决的不是“AI 会不会写 React Native”,而是“AI 知不知道 Expo 这一套该怎么用”。
路由怎么组织、原生模块怎么写、EAS 哪一步收费、OTA 发布怎么判断健康度,这些原本要翻文档才能确认的细节,现在变成了 agent 可以直接读到的上下文。
如果你平时就用 AI 写 Expo 项目,这条命令值得现在跑一遍。跑完再让它写个带 tab 和 modal 的页面,差别能立刻感觉到。















































































