[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CDWRNM9GV7Q57CJ6BGHKZG":3,"skill-same:01M6CDWRNM9GV7Q57CJ6BGHKZG":109},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":14,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6CDWRNM9GV7Q57CJ6BGHKZG","taro2rn",null,"Taro 小程序代码转 React Native 完整工具包。提供组件映射、API 映射、样式转换规则和已知问题解决方案。兼容 Taro 3.x 与 React Native 0.72+。","ecomfe\u002Fagent-skill","ecomfe","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2268460?v=4","01M6CDWNHMA03NWSSPZWAKKV5G","Baidu EFE team","01M6CDWNNV8DYQ1M6ER7G39KK6",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32],"react","vue","api","grep","read","write","edit","react native","use","2026-11-10 10:12:30",false,"---\nname: taro2rn\ndescription: \"Taro 小程序代码转 React Native 完整工具包。提供组件映射、API 映射、样式转换规则和已知问题解决方案。兼容 Taro 3.x 与 React Native 0.72+。\"\nwhen_to_use: \"用户需要将 Taro 项目代码迁移至 React Native 时触发。Trigger phrases: '转 RN' \u002F '转换 RN' \u002F 'taro to rn' \u002F 'taro2rn' \u002F '迁移成原生' \u002F 'port Taro to RN' \u002F 'Taro 转 native' \u002F '从 Taro 迁出'。也包括询问 Taro\u002FRN 组件映射、样式映射、迁移问题。Do NOT use for: uni-app 或 Vue 小程序迁移、纯新建 RN 项目(无 Taro 来源)、单文件实验性转换、纯 RN 项目调试。\"\nallowed-tools: Read Write Edit Glob Grep\n---\n\n# Taro to React Native 转换\n\n## 快速开始\n\n### 第一步:处理 taro2rnTODO.md\n\n检查项目根目录是否存在 `taro2rnTODO.md`:\n\n| 情况 | 操作 |\n|------|------|\n| **存在** | 读取进度,跳至第二步 |\n| **不存在** | 执行初始化流程(见下方) |\n\n#### 初始化流程\n\n1. **询问用户配置**:\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| 项目名称 | 当前目录名 | 标识项目 |\n| 设计稿宽度 | 750 | 750 或 1242 |\n| RN 应用路径 | . | React Native 应用相对路径 |\n\n2. **基于模板生成 taro2rnTODO.md**:读取 `assets\u002FTODO_TEMPLATE.md`,替换占位符后写入项目根目录。\n\n### 第二步:执行转换\n\n进入实际转换前 `ultrathink`:先确认设计稿宽度、检查 rpx 工具函数是否已封装、识别项目是否为 Monorepo(`pnpm-workspace.yaml` 或 workspaces 字段)。这三项判断错了后续每次转换都要返工。\n\n1. 读取 Taro 源码,分析组件结构\n2. 按场景加载对应转换规则(见下方索引)\n3. 遇到问题查阅对应子域 known-issues 文件\n4. 完成后更新 `taro2rnTODO.md`\n\n## 转换规则(按需加载)\n\n### 主要转换规则\n\n| 转换场景 | 加载文件 | 包含内容 |\n|---------|---------|---------|\n| **规则索引 + 速查** | [references\u002FTRANSFORM_RULES.md](references\u002FTRANSFORM_RULES.md) | 最常用映射速查表(先读这个) |\n| **组件转换** | [references\u002Fcomponents.md](references\u002Fcomponents.md) | 基础组件映射、事件处理、Portal\u002FRichText\u002FWebView、导入汇总 |\n| **API \u002F 生命周期** | [references\u002Fapi.md](references\u002Fapi.md) | 路由、存储、网络、UI 反馈、页面生命周期、平台代码 |\n| **样式转换** | [references\u002Fstyles.md](references\u002Fstyles.md) | rpx 单位、Flex、文字\u002F边框\u002F定位、不支持的 CSS、动态宽度 |\n| **IM 聊天页面** | [references\u002Fim-layout.md](references\u002Fim-layout.md) | 键盘避让、FlatList inverted、滚动监听、分页加载 |\n\n### 已知问题(按子域加载,不要一次性读全部)\n\n| 子域 | 加载文件 | 适用场景 |\n|---------|---------|---------|\n| **依赖兼容** | [references\u002Fknown-issues-dependencies.md](references\u002Fknown-issues-dependencies.md) | 渐变、安全区、Picker、DatePicker、常用依赖清单 |\n| **样式差异** | [references\u002Fknown-issues-styles.md](references\u002Fknown-issues-styles.md) | rpx 设计稿、Image、阴影、Flex 宽度、模糊效果 |\n| **API \u002F 键盘 \u002F React 版本** | [references\u002Fknown-issues-api.md](references\u002Fknown-issues-api.md) | API 差异、ScrollView 监听、IM 键盘、React 版本冲突 |\n| **Monorepo** | [references\u002Fknown-issues-monorepo.md](references\u002Fknown-issues-monorepo.md) | pnpm 依赖提升、CocoaPods、Metro、Monorepo React 冲突 |\n| **(索引\u002F兼容)** | [references\u002FKNOWN_ISSUES.md](references\u002FKNOWN_ISSUES.md) | 子域路由索引(旧链接仍可用) |\n\n**加载策略**:先读 TRANSFORM_RULES.md 速查表 → 不够用时按场景加载详细 references → 遇到具体问题只加载对应子域的 known-issues-*.md。\n\n## 转换工作流\n\n```\n1. 处理 taro2rnTODO.md → 初始化或读取现有进度\n2. 确认设计稿标准     → 750 用 rpx(),1242 用 rpx1242()\n3. 读取 Taro 源码     → 分析组件结构\n4. 应用转换规则       → 按需加载对应 references\n5. 处理特殊情况       → 按子域查阅 known-issues-*.md\n6. 更新 taro2rnTODO.md → 标记完成\n```\n\n## 文档结构\n\n```\ntaro2rn\u002F\n├── SKILL.md                              # 入口(本文件)\n├── references\u002F\n│   ├── TRANSFORM_RULES.md                # 规则索引 + 速查表\n│   ├── components.md                     # 组件映射详细规则\n│   ├── api.md                            # API\u002F生命周期映射\n│   ├── styles.md                         # 样式转换规则\n│   ├── im-layout.md                      # IM 页面布局方案\n│   ├── KNOWN_ISSUES.md                   # 已知问题索引(旧链接兼容)\n│   ├── known-issues-dependencies.md      # 依赖兼容\n│   ├── known-issues-styles.md            # 样式差异\n│   ├── known-issues-api.md               # API\u002F键盘\u002FReact 版本\n│   └── known-issues-monorepo.md          # Monorepo 特有\n└── assets\u002F\n    └── TODO_TEMPLATE.md                  # 项目进度模板\n```\n","# Taro to React Native 转换\n\n## 快速开始\n\n### 第一步:处理 taro2rnTODO.md\n\n检查项目根目录是否存在 `taro2rnTODO.md`:\n\n| 情况 | 操作 |\n|------|------|\n| **存在** | 读取进度,跳至第二步 |\n| **不存在** | 执行初始化流程(见下方) |\n\n#### 初始化流程\n\n1. **询问用户配置**:\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| 项目名称 | 当前目录名 | 标识项目 |\n| 设计稿宽度 | 750 | 750 或 1242 |\n| RN 应用路径 | . | React Native 应用相对路径 |\n\n2. **基于模板生成 taro2rnTODO.md**:读取 `assets\u002FTODO_TEMPLATE.md`,替换占位符后写入项目根目录。\n\n### 第二步:执行转换\n\n进入实际转换前 `ultrathink`:先确认设计稿宽度、检查 rpx 工具函数是否已封装、识别项目是否为 Monorepo(`pnpm-workspace.yaml` 或 workspaces 字段)。这三项判断错了后续每次转换都要返工。\n\n1. 读取 Taro 源码,分析组件结构\n2. 按场景加载对应转换规则(见下方索引)\n3. 遇到问题查阅对应子域 known-issues 文件\n4. 完成后更新 `taro2rnTODO.md`\n\n## 转换规则(按需加载)\n\n### 主要转换规则\n\n| 转换场景 | 加载文件 | 包含内容 |\n|---------|---------|---------|\n| **规则索引 + 速查** | [references\u002FTRANSFORM_RULES.md](references\u002FTRANSFORM_RULES.md) | 最常用映射速查表(先读这个) |\n| **组件转换** | [references\u002Fcomponents.md](references\u002Fcomponents.md) | 基础组件映射、事件处理、Portal\u002FRichText\u002FWebView、导入汇总 |\n| **API \u002F 生命周期** | [references\u002Fapi.md](references\u002Fapi.md) | 路由、存储、网络、UI 反馈、页面生命周期、平台代码 |\n| **样式转换** | [references\u002Fstyles.md](references\u002Fstyles.md) | rpx 单位、Flex、文字\u002F边框\u002F定位、不支持的 CSS、动态宽度 |\n| **IM 聊天页面** | [references\u002Fim-layout.md](references\u002Fim-layout.md) | 键盘避让、FlatList inverted、滚动监听、分页加载 |\n\n### 已知问题(按子域加载,不要一次性读全部)\n\n| 子域 | 加载文件 | 适用场景 |\n|---------|---------|---------|\n| **依赖兼容** | [references\u002Fknown-issues-dependencies.md](references\u002Fknown-issues-dependencies.md) | 渐变、安全区、Picker、DatePicker、常用依赖清单 |\n| **样式差异** | [references\u002Fknown-issues-styles.md](references\u002Fknown-issues-styles.md) | rpx 设计稿、Image、阴影、Flex 宽度、模糊效果 |\n| **API \u002F 键盘 \u002F React 版本** | [references\u002Fknown-issues-api.md](references\u002Fknown-issues-api.md) | API 差异、ScrollView 监听、IM 键盘、React 版本冲突 |\n| **Monorepo** | [references\u002Fknown-issues-monorepo.md](references\u002Fknown-issues-monorepo.md) | pnpm 依赖提升、CocoaPods、Metro、Monorepo React 冲突 |\n| **(索引\u002F兼容)** | [references\u002FKNOWN_ISSUES.md](references\u002FKNOWN_ISSUES.md) | 子域路由索引(旧链接仍可用) |\n\n**加载策略**:先读 TRANSFORM_RULES.md 速查表 → 不够用时按场景加载详细 references → 遇到具体问题只加载对应子域的 known-issues-*.md。\n\n## 转换工作流\n\n```\n1. 处理 taro2rnTODO.md → 初始化或读取现有进度\n2. 确认设计稿标准     → 750 用 rpx(),1242 用 rpx1242()\n3. 读取 Taro 源码     → 分析组件结构\n4. 应用转换规则       → 按需加载对应 references\n5. 处理特殊情况       → 按子域查阅 known-issues-*.md\n6. 更新 taro2rnTODO.md → 标记完成\n```\n\n## 文档结构\n\n```\ntaro2rn\u002F\n├── SKILL.md                              # 入口(本文件)\n├── references\u002F\n│   ├── TRANSFORM_RULES.md                # 规则索引 + 速查表\n│   ├── components.md                     # 组件映射详细规则\n│   ├── api.md                            # API\u002F生命周期映射\n│   ├── styles.md                         # 样式转换规则\n│   ├── im-layout.md                      # IM 页面布局方案\n│   ├── KNOWN_ISSUES.md                   # 已知问题索引(旧链接兼容)\n│   ├── known-issues-dependencies.md      # 依赖兼容\n│   ├── known-issues-styles.md            # 样式差异\n│   ├── known-issues-api.md               # API\u002F键盘\u002FReact 版本\n│   └── known-issues-monorepo.md          # Monorepo 特有\n└── assets\u002F\n    └── TODO_TEMPLATE.md                  # 项目进度模板\n```\n",{"name":5,"description":7,"when_to_use":38,"allowed-tools":39},"用户需要将 Taro 项目代码迁移至 React Native 时触发。Trigger phrases: '转 RN' \u002F '转换 RN' \u002F 'taro to rn' \u002F 'taro2rn' \u002F '迁移成原生' \u002F 'port Taro to RN' \u002F 'Taro 转 native' \u002F '从 Taro 迁出'。也包括询问 Taro\u002FRN 组件映射、样式映射、迁移问题。Do NOT use for: uni-app 或 Vue 小程序迁移、纯新建 RN 项目(无 Taro 来源)、单文件实验性转换、纯 RN 项目调试。","Read Write Edit Glob Grep","master","0511b321a278d755b7a64e0f69c97638e1356e73","skills\u002Ftaro2rn","https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill","https:\u002F\u002Fgithub.com\u002Fecomfe","http:\u002F\u002Fefe.baidu.com\u002F","2026-05-13 17:07:09",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add ecomfe\u002Fagent-skill --skill taro2rn",{"tool":53,"command":54},"bunx","bunx skills add ecomfe\u002Fagent-skill --skill taro2rn",{"tool":56,"command":57},"pnpm","pnpm dlx skills add ecomfe\u002Fagent-skill --skill taro2rn","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002FSKILL.md",true,[61,67,73,77,81,85,89,93,97,101,105],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"assets\u002FTODO_TEMPLATE.md","ASSET","资产文件",1375,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Fassets\u002FTODO_TEMPLATE.md",{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Fapi.md","REFERENCE","参考文档",4469,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002Fapi.md",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fcomponents.md",5037,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002Fcomponents.md",{"path":78,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fim-layout.md",3533,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002Fim-layout.md",{"path":82,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002FKNOWN_ISSUES.md",2468,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002FKNOWN_ISSUES.md",{"path":86,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fknown-issues-api.md",7179,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002Fknown-issues-api.md",{"path":90,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fknown-issues-dependencies.md",5787,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002Fknown-issues-dependencies.md",{"path":94,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fknown-issues-monorepo.md",1817,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002Fknown-issues-monorepo.md",{"path":98,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fknown-issues-styles.md",5067,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002Fknown-issues-styles.md",{"path":102,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fstyles.md",4109,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002Fstyles.md",{"path":106,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002FTRANSFORM_RULES.md",2279,"https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Ftaro2rn\u002Freferences\u002FTRANSFORM_RULES.md",[110],{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":33},"01M6CDWQ54QMZ4FT9FV5VGPCR8","hello","Useless template skill, NEVER load this","https:\u002F\u002Fgithub.com\u002Fecomfe\u002Fagent-skill\u002Fblob\u002Fmaster\u002Fskills\u002Fhello\u002FSKILL.md",[],[112,117,118,119],"template skill","template","never"]