Expo 原生模块迁移助手
将现有 Expo 原生模块从 1.0 DSL 迁移到 2.0 宏 API,同时保持 JavaScript 接口不变。
技能要求先检查 Expo 版本和实际宏/核心支持,强调最小范围修改、保留 JS 契约、避免未验证迁移,并要求创建外部 issue 前征得用户确认;未提供完整数据流、敏感数据处理、回滚步骤或明确来源归属,因此扣分。
工作流、兼容性门槛、混合模式和异常分支描述较细,能在不支持时停止或保留 DSL;但仅有静态文档,没有该技能路径的测试或实际构建证据,按静态校准限制在 10 分以下。
名称、目标用户、适用场景和明确非适用范围清楚,覆盖 Swift 原生模块迁移而排除新建模块、SDK 升级及 Android;未说明中文交互支持、环境前置条件的完整范围和更多触发边界,因此扣分。
具备版本号、MIT 许可、分层参考文档、迁移清单、已知陷阱、安装/依赖检查和交接要求;但缺少该技能自身的维护责任人、变更日志、更新路径及充分 FAQ,且发布者身份未验证,因此扣分。
流程直接围绕保持 JS/TypeScript 契约并完成 Swift 1.0 到 2.0 迁移,包含逐组迁移、混合模式和验证交付物,核心任务预期可完成;但没有静态可证明的真实输出或执行结果,按校准最高 7 分。
参考文档提供了可审计的规则、兼容性检查命令和契约核对表,且仓库有通用 CI;但没有覆盖该技能关键路径的提交测试、第三方执行证据或独立复现结果,按静态校准最高 5 分。
- 该评估仅基于源文件静态阅读,未执行命令、构建、测试或实际迁移。
- 技能要求在特定失败场景下创建 expo/expo 外部 issue;应继续确认用户批准、最小披露范围和 issue 内容后再发布。
- 迁移可能改变执行队列、事件名称、默认值或记录可选性;必须针对实际 expo-modules-core 版本逐项验证,不能仅依据 SDK 版本。
- 发布者身份未通过 FollowSkills 企业注册表验证,维护责任和更新路径也未在该技能文档中明确。
这个 Skill 能做什么,适合哪些场景?
这是 expo/skills 中面向 Expo 原生模块开发的单项技能,专门处理 Apple/Swift 模块从 Expo Modules API 1.0 定义 DSL 到 2.0 宏 API 的迁移。它以现有 JavaScript、TypeScript 接口和测试作为兼容性契约,并支持渐进式混合迁移。该技能要求目标项目使用 expo 57.0.7 或更高版本。它不负责新建模块、常规 Expo SDK 升级或 Android/Kotlin 迁移。
检查目标项目的 Expo 版本、仓库指令、Swift 模块、JavaScript/TypeScript 绑定、测试、示例应用、podspec 和 expo-modules-core;读取迁移映射、示例和兼容性参考;盘点模块名称、函数、属性、常量、事件、记录和共享对象的 JavaScript 可见契约;核验实际可用的 2.0 宏和运行时支持;按语义分组迁移 Swift 源码,必要时保留 1.0 definition() DSL;运行构建、类型检查、原生测试和 JS/TS 测试,并比较迁移前后的导出表面。
- 维护现有 Swift Expo 原生模块,并希望升级到 Expo Modules API 2.0 宏 API。
- 需要在不改变 JavaScript 或 TypeScript 合约的情况下,逐步迁移模块功能。
- 目标模块包含 @ExpoModule、@JS、@Event、@SharedObject 或 @Record 等 2.0 宏对应概念。
- 迁移过程中需要判断某个成员应迁移、保留在 DSL 中,还是因运行时能力不足而阻塞。
- 需要验证事件名称、记录字段必填性、常量缓存、队列语义和同步/异步行为没有意外变化。
这个 Skill 有哪些优点和局限?
- 以现有 JS/TS 表面和测试作为兼容性契约,强调保持公开行为。
- 支持混合模式,可将暂不支持的成员保留在 1.0 definition() DSL 中。
- 覆盖函数、属性、常量、事件、共享对象和记录等迁移前检查项。
- 包含构建、测试、示例应用和旧注册项搜索等验证要求。
- 仅针对现有 Apple/Swift Expo 原生模块,不适用于新模块创建或 Android/Kotlin 迁移。
- 要求 expo 57.0.7 或更高,且实际宏与运行时支持仍需检查具体分支或版本。
- 来源没有提供该单项技能的独立测试结果或平台覆盖证明。
- 遇到能力缺口时,创建 expo/expo 跟踪 issue 需要用户确认后才能发布。
如何安装这个 Skill?
该技能属于 expo/skills 集合。使用 Skills CLI 安装全部 Expo 技能:npx skills@latest add expo/skills --skill '*'。也可在 Codex 中安装 Expo 插件:codex plugin add expo@openai-curated。来源未提供仅安装 expo-migrate-module 的命令。
如何使用这个 Skill?
在已安装该技能的项目中,向代理提出具体迁移请求,例如:“将这个现有 Swift Expo 原生模块从 Expo Modules API 1.0 DSL 迁移到 2.0 宏 API,保持现有 JavaScript/TypeScript 合约不变。”目标项目的 expo 版本必须为 57.0.7 或更高;Android/Kotlin 迁移需另行明确请求。
这个 Skill 与同类方案有什么区别?
相较于继续完全使用 Expo Modules API 1.0 DSL,该技能提供向 2.0 宏 API 的渐进式迁移路径,同时要求保留现有 JavaScript 接口。