将Figma设计稿转换为移动端UI代码(Android Jetpack Compose/XML,iOS SwiftUI/UIKit)。用户粘贴Figma链接并请求生成布局代码时使用。通过Figma REST API提取设计树和token,必要时进行澄清提问,最终输出可直接用于工程的代码。
图片 图解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片解 图片是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
用交互式澄清流程,把 Figma 设计转为移动端 UI 代码。
支持:Android Compose、Android XML、iOS SwiftUI、iOS UIKit。
FIGMA_TOKEN(Figma → 头像 → Settings → Security → Personal Access Tokens)fetch;脚本为纯 JavaScript,无需 npm install)scripts/ 下执行 node src/figma-fetch.js,或 npm run figma-fetch --(package.json 仅用于声明 type: module 与 npm 脚本快捷方式,无第三方依赖)用户粘贴 Figma 设计链接 时启用本技能。
用户也可能在链接旁给出 内联提示,例如:
若用户已通过内联说明回答某类问题,则不要再问同类问题。 例如用户已写「Android XML,三张卡是 RecyclerView 列表」,则不要再问输出格式或列表动静态。
用户提供 Figma 链接后:
scripts/,运行:
node src/figma-fetch.js "" [--json] [--depth N]
若用户提供 多个链接(同一页不同状态),使用 --compare 拉取并对比差异,便于多状态代码(selector、条件样式等):
node src/figma-fetch.js --compare "" "" [--json] variantProperties 理解状态(如 State=Default)references/figma-interpretation.md 中的节点语义规则详细解读规则:阅读 references/figma-interpretation.md
在提问之前,先用 2~3 行 向用户确认你理解的结构,例如:
我看到:顶部导航(返回 + 标题)→ 两大块内容(用户资料卡、设置列表约 8 项)→ 底部主按钮。约 25 个节点。
需覆盖:主要区域、重复模式(如「8 个相似列表项」)、显眼元素(渐变、插画、叠卡)。
若用户纠正结构,先修正理解再进入步骤 2。
结构非常简单时(如单卡片 + 少量输入框)可跳过本步。
问题顺序(严格先问靠前的):
输出形态(除非用户已说明,否则必须先问)
→ Android XML / Compose / SwiftUI / UIKit
决定后续分析与代码风格。
结构歧义(只问真正不确定的) → 「这几项看起来相似——动态列表还是写死布局?」 → 「这块是整图资源还是图标+背景组合?」
组件选型(仅在与平台相关时) → 「是否有指定自定义组件?没有则使用系统默认。」
追问规则:
何时追问 vs 直接生成:
componentId 的 INSTANCE → 复用组件 → 可说明并给默认实现若本地能访问目标工程,可运行扫描以复用颜色、字符串等资源:
cd scripts node src/project-scan.js /path/to/project --json --output scan-report.json
如何在生成代码时使用扫描结果:阅读 references/figma-scan-usage.md
用户确认后(或无需追问时)生成代码文件。
详细生成规则:阅读 references/code-generation.md
多文件时每个文件用清晰标题标出,例如:
📄 activity_notification_settings.xml [代码] 📄 item_expert_notification.xml [代码]
展示代码后简短询问:
是否贴合设计?需要调整的地方?
用户可能继续迭代:间距、替换组件、删区块、换平台、改色值等。
除非用户要求整页重写,否则每轮只改变化部分。
反馈记录(建议自动执行):
每当用户纠正生成结果,在项目根目录维护 feedback-log.md(不存在则创建)。每条格式:
## YYYY-MM-DD HH:MM - **Platform**: Android XML / Compose / SwiftUI / UIKit - **Figma node type**: (如:带图标的 FRAME、Tab 栏、按钮组) - **Issue**: 问题简述 - **Before**: 原先生成内容(片段或说明) - **After**: 用户期望(片段或说明) - **Rule candidate**: (可选)可沉淀为通用规则的说明
记录应 简洁、可分类、偏映射错误;不要记录纯个人偏好或一次性命名。
可在适当时机或应用户要求运行:
cd scripts node src/feedback-analyze.js [path/to/feedback-log.md]
用于汇总模式与规则候选(默认读取当前目录下的 feedback-log.md)。
需从 Figma 导出 SVG 时(见 references/code-generation.md):
cd scripts node src/figma-fetch.js "" --export-svg [--nodes "节点id1,节点id2"]
简化后的 JSON 中每个节点含 id 字段,可用于 --nodes 附加导出。
FIGMA_TOKEN 未设置(脚本打印 FIGMA_TOKEN_NOT_SET)→ 不要让用户自行敲复杂命令。应:
figd_ 开头).env:FIGMA_TOKEN=figd_xxx(脚本会自动读取 .env)node src/figma-fetch.js 或 npm run figma-fetch --Token 无效(401/403)→ 可能过期或撤销,请用户重新生成并更新 .env
链接无效 → 给出正确示例:https://www.figma.com/design/
API 其它错误 → 展示错误信息,提示检查网络/代理
子节点过多(>200) → 脚本会在 JSON 中标注 _largeChildList,建议缩小选区 Frame
深度截断 → 脚本会将 _truncated 标在节点上,必要时提高 --depth(最高可自动提升到 15 层对比模式)
references/ 下文档按 命名约定 区分用途(见 README.md「目录与命名」):figma-* 为 Figma 语义与扫描用法,platform-* 为各平台映射表,code-generation.md 为生成总则。正文为 中文,代码与 API 标识保留英文原名;工作流以本 SKILL.md 为准。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134万人学习
共49课时 | 82.5万人学习