将 Figma 设计稿转换为移动端 UI 代码。支持 Android(Jetpack Compose、XML)和 iOS(SwiftUI、UIKit)。当用户提供 Figma 链接并希望获取移动端布局代码时使用。通过 Figma REST API 提取设计令牌(design tokens),主动提出澄清性问题,随后生成可投入生产的代码文件。
图片到 Mobile. 将图片设计转换为移动UI代码,并进行交互式澄清. 支持:Android Compose,Android XML,iOS SwiftUI,是一项面向实际任务的技能,主要用于Prerequisites.FIGMA TOKEN environment var.。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过交互式澄清,将 Figma 设计稿转换为可运行的移动 UI 代码。
支持平台:Android Compose、Android XML、iOS SwiftUI、iOS UIKit。
FIGMA_TOKEN 环境变量(Figma → Settings → Personal Access Tokens)。切勿将 token 直接粘贴至聊天窗口中。requests 包$env:FIGMA_TOKEN = "figd_..."setx FIGMA_TOKEN "figd_..."export FIGMA_TOKEN="figd_..."若您坚持使用 .env 文件,请在本地编辑(不要在聊天中操作),并确保该文件被 Git 忽略(例如通过 .gitignore 配置)。
当用户提供 Figma 链接时,本技能自动激活。
用户还可随链接附带行内提示(inline hints),例如:
若用户已提供提示,请严格遵循,跳过对应问题。 例如,若用户说明“Android XML,3 张卡片是一个 RecyclerView 列表”,则不得再询问输出格式或卡片是否为动态/静态。
当用户提供 Figma 链接时:
判断输入类型:
A. 不含具体 node-id 的链接(无 node-id 参数,或 node-id=0-1):
该链接指向整页(page),而非特定 frame。请向用户说明:
此链接指向整个页面。请在 Figma 中选中您要转换的具体 frame,右键选择“Copy link to selection”,然后发送该链接。 如需转换多个 frame,请分别发送多个链接。
B. 单 frame 链接(含明确 node-id):
执行 scripts/figma_fetch.py " → 返回该 frame 的设计数据。
继续进入分析阶段。
C. 多个链接(用户发送 2 个及以上 URL): 首先根据 frame 名称及用户上下文判断其关系:
同一页的不同视觉状态(例如“首页-有banner”和“首页-无banner”):
启用 --compare 模式批量获取,并生成差异摘要。最终输出多状态代码(例如条件可见性、状态切换逻辑)。
主页面 + 浮层/抽屉(例如“首页” + “首页-抽屉-xxx”): 将每个 frame 分别生成为独立的布局文件;随后向用户说明二者关系:
Frame 1(“首页”)与 Frame 2(“首页-抽屉”)看起来构成一个主页面加侧边抽屉的关系。 我已生成两个独立的布局文件。如何将它们组合(DrawerLayout、Navigation 等)取决于您的项目架构。
本技能职责仅为生成 UI 布局代码,不参与架构决策(Activity vs Fragment vs Navigation)。
多个相互独立的页面(例如“首页” + “设置页” + “个人中心”): 逐个独立处理。每次仅请求一个 node,并在请求间暂停 2–3 秒以避免触发速率限制。 汇总所有页面信息后,询问用户希望优先转换哪一页(或按顺序全部转换)。
关系不确定:主动向用户确认——“这些 frame 看似有关联,但我不确定具体关系。它们是同一页面的不同状态?主页面加浮层?还是完全独立的页面?”
多链接调用的限流保护:批量获取多个 node 时,请求间隔不少于 2–3 秒;严禁并发发起超过 2 个请求。
若链接不含具体 node-id,请引导用户重新从指定 frame 复制链接(见 A 类情形),禁止调用 API。
分析结构:识别主要区域、重复模式、组件类型
标记 INSTANCE 节点——表示可复用组件。检查 variantProperties 获取组件状态(如 State=Default、Size=Large),用于生成多状态代码
记录渐变/阴影数据——若复杂度高,需在摘要中向用户显式标注
在生成代码前,应用 Figma 节点解析规则
详细解析规则:参阅 references/figma-interpretation.md
在提出任何问题前,先向用户提供简明的结构摘要,供其确认理解是否正确:
我看到:[含返回按钮与标题的导航栏] → [2 个内容区:用户资料卡片、设置列表(共 8 项)] → [底部操作按钮]。总计约 25 个节点。
摘要控制在 2–3 行内,需包含:
若用户指出“不对”或修正结构描述,请更新理解后再进入步骤 2。
若设计中可见叶节点(leaf nodes,即映射为实际 View 的可见元素)≤10 个,则跳过本步骤——结构足够简单,可直接进入下一步。
问题优先级(严格按序提问,先问靠前的问题):
输出格式(除非用户已明确指定,否则必须首问) → Android XML / Compose / SwiftUI / UIKit 该选择决定后续所有分析措辞与代码输出形式。
结构性歧义(仅就真正不确定之处提问) → “这 N 个元素结构相似——应实现为动态列表,还是固定布局?” → “该区域:是单张图片资源,还是图标叠加背景的组合?”
组件选型(仅当与目标平台强相关时) → “是否有需要使用的自定义组件?(否则将采用平台默认组件)”
提问规范:
置信度参考——何时提问、何时直接生成:
若目标项目本地可访问,建议执行项目扫描:
python scripts/project_scan.py /path/to/project --json --output scan-report.json
如何在代码生成中使用扫描结果:参阅 references/scan-usage.md
待用户确认(或无需提问时),生成代码文件。
详细生成规则:参阅 references/generation-rules.md
若需生成多个文件,请为每个文件添加清晰的文件名标题:
📄 activity_notification_settings.xml [code] 📄 item_expert_notification.xml [code]
展示代码后,简要询问:
是否符合设计?是否需要调整?
用户可据此反馈持续优化输出。 常见迭代类型包括:
持续迭代直至用户满意。
迭代输出规范:
// replaces lines 12-18 in activity_main.xml)。禁止重复整个文件。反馈收集(可选,需用户显式授权):
仅当用户明确同意持久化日志时,将映射修正记录至目标项目根目录下的 .trae/figma-to-mobile/feedback-log.md(路径不存在则自动创建)。每条记录格式如下:
## YYYY-MM-DD HH:MM - **Platform**: Android XML / Compose / SwiftUI / UIKit - **Figma node type**: (例如:含 icon 的 FRAME、Tab bar、Button group) - **Issue**: 错误简述 - **Before**: Agent 当前生成内容(代码片段或文字描述) - **After**: 用户期望结果(代码片段或文字描述) - **Rule candidate**: (可选)若该修正暗示通用规则模式,请在此注明
日志条目应满足:
以下情况禁止记录:
定期(或应用户要求)运行 scripts/feedback_analyze.py,识别高频模式并生成候选规则。
FIGMA_TOKEN_NOT_SET)→ 禁止引导用户将 token 粘贴至聊天窗口。应改为:FIGMA_TOKEN(推荐),然后重试.env,指导其在本地编辑该文件(禁止在聊天中操作),并确保 .env 已加入 .gitignorehttps://www.figma.com/design//?node-id= 相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.5万人学习
最新文章