Expo 原生模块开发指南
帮助 Expo 开发者使用 Swift、Kotlin 和 TypeScript 构建原生模块与原生视图。
文档明确了模块类型、平台和配置范围,并提供 MIT 许可与部分数据流示例;但没有系统说明最小权限、用户确认、回滚或外部副作用。config-plugin 示例直接把 apiKey 写入 Info.plist/AndroidManifest,未警告其敏感信息暴露风险;npx 下载和遥测也未在该技能中充分披露,因此扣分。
DSL、脚手架、自动链接和生命周期说明整体一致,包含若干非交互模式和异常行为提示;但本次仅静态阅读,未见覆盖关键路径的测试、CI 执行证据或统一的错误诊断流程,且部分 CLI/API 行为可能随版本变化,因此低于中高分。
受众、适用场景及迁移场景的排除范围写得清楚,覆盖 Swift、Kotlin、TypeScript、iOS、Android 和 web;但触发边界仍不完整,中文支持没有说明,且关键脚手架流程依赖 npx/npm 与 Expo 工具,在中国大陆网络环境下可达性存在不确定性,因此扣分。
技能具有清晰的主文档、分主题 references、快速开始、工作流和代码示例,版本号及 MIT 许可明确;但没有技能级 changelog、维护负责人、变更记录或明确的更新责任,已知限制和故障排查仍有限,故未满分。
内容能够直接指导常见 Expo 原生模块、原生视图、配置插件和自动链接任务,示例具有较强可操作性;但没有静态可验证的代表性产出、测试结果或与手工操作的比较证据,关键实现仍需用户自行适配和验证,因此按静态上限保守扣分。
提供了结构化参考文件、命令示例、代码样例以及“Expo 文档/CLI 为事实来源”的声明;但未提供可复现测试套件、第三方执行证据或多源交叉验证,CI 文件只验证技能限制和版本规则,不能证明本技能关键路径,故仅给有限分数。
- 本评估仅基于静态源文件,未执行脚手架、编译、预构建或原生运行验证。
- config-plugin 示例中的 apiKey 可能进入可分发的原生配置,使用真实凭据前应确认安全存储和暴露范围。
- npx create-expo-module@latest 依赖外部网络和动态版本,建议锁定版本并审查依赖来源。
- 文档未明确中文支持及中国大陆网络可达性,相关环境可能需要镜像、代理或离线流程。
这个 Skill 能做什么,适合哪些场景?
这是 expo/skills 仓库中的一个开放源代码 Agent Skill,专门指导 Expo 原生模块和原生视图的开发。内容覆盖 Expo Modules API、模块定义 DSL、共享对象、配置插件、生命周期钩子、自动链接和类型系统。它适合创建新模块、包装平台 SDK,或为现有模块增加平台支持。它不用于将旧 Swift 模块从定义 DSL 迁移到 Expo Modules API 2.0 宏。
指导代理选择本地模块或独立模块,使用 create-expo-module 进行脚手架搭建,并根据 Constant、Function、AsyncFunction、Event、View、ViewEvent 和 SharedObject 等特性选择示例代码。它还指导编写 Swift、Kotlin 和 TypeScript 模块代码,配置 expo-module.config.json,添加配置插件和生命周期钩子,并处理自动链接及多平台支持。
- 需要为 Expo 应用创建相机、传感器或其他系统 API 原生功能的开发者。
- 需要使用 Swift 和 Kotlin 包装平台 SDK,并向 React Native 暴露接口的团队。
- 需要创建包含原生视图、属性、事件或基于 ref 的函数的 Expo 模块开发者。
- 需要编写配置插件以修改 Info.plist 或 AndroidManifest.xml 的开发者。
- 需要为现有 Expo 模块增加 Android、Apple 或 Web 支持的维护者。
这个 Skill 有哪些优点和局限?
- 覆盖 Expo 原生模块从脚手架到自动链接和配置插件的主要流程。
- 同时提供 Swift、Kotlin 和 TypeScript 的开发指导。
- 明确区分本地模块与可复用的独立模块。
- 明确列出不适用的 Expo Modules API 2.0 宏迁移场景。
- 它是开发指导,不是原生模块运行库或实时文档服务。
- 源材料未提供各个 references 文件的完整内容,因此无法评估其示例和边界情况的详细程度。
- 仅凭该 Skill 文本无法确认具体 Expo SDK 版本或目标平台组合的实际测试情况。
如何安装这个 Skill?
该仓库是包含 23 个技能的集合。使用 Skills CLI 安装 Expo 技能集合:npx skills@latest add expo/skills --skill '*'. 也可以在 Claude Code 中运行 claude plugin install expo@claude-plugins-official,或在 Codex 中运行 codex plugin add expo@openai-curated。源材料没有提供仅安装 expo-module 的独立命令。
如何使用这个 Skill?
在已安装技能的代理中提出具体任务,例如:“为我的 Expo 应用创建一个原生模块,提供 Swift、Kotlin 和 TypeScript 接口,并包含一个原生视图。”创建或扩展模块前,应先查阅 references/create-expo-module.md;如果只是增加平台支持,应请求使用 create-expo-module add-platform-support。
这个 Skill 与同类方案有什么区别?
如果任务是将现有 Swift 模块从定义 DSL 迁移到 Expo Modules API 2.0 宏,应使用 expo-migrate-module,而不是本技能。