figma-ios-build-review 是一个面向原生 iOS UIKit 项目的 Figma 到代码构建与视觉审查工作流。它会指导智能编码代理读取 Figma 节点或截图,理解目标页面状态,结合项目中已有的 UIKit、SnapKit 或 Auto Layout 规范实现界面,并通过模拟器、Maestro、Lookin MCP 和仓库验证脚本反复对比与修正,直到运行中的 App 尽可能贴近设计稿。 这个 skill 既适合从零实现新的 Figma 页面,也适合审查和打磨已有 UIKit 页面。它
Figma iOS 构建审查是一项面向实际任务的技能,主要用于使用此工作流程从 Figma 创建或审查本地 iOS UI, 并进行到;运行应用程序匹配设计;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用本工作流从 Figma 构建或审查原生 iOS UI,并持续迭代,直至线上应用界面与设计稿完全一致。优先采用真实运行时状态,但本地 UI 验证可使用 Local Direct Harness。以 Figma 作为视觉参考依据,而非添加虚假生产环境路径的理由。
仅收集必需内容:
若仓库中存在 AGENTS.md 或本地 Figma-to-code 标准操作流程(SOP),请先阅读并以其为准,覆盖通用说明细节。
在开始编辑前确定路径:
两条路径最终均进入相同的视觉审查循环(visual review loop)。
适用于从零开始的实现:
accessibilityIdentifier 值。适用于保真度审查或细节打磨:
当真实导航或 Maestro 会引入干扰噪声时,使用该方式聚焦于本地视觉验证:
rootViewController 设置为待审查的视图控制器。rootViewController 覆盖逻辑;除非该 harness 是已提交的可复用测试入口,否则不应保留。重复以下循环,直至变更区域全部通过比对检查清单:
使用仓库的启动门禁构建并启动 Debug 版应用,通常执行:
scripts/verify.sh
将模拟器切换至目标页面:
launch.png。.harness/tmp/ 下的临时 hold 流程;在最终 hold sentinel 前断言目标根视图或关键控件。使用 Lookin MCP 检查实时 UIKit 视图层级及其相关属性。若当前环境不可用 Lookin MCP,则改用模拟器截图加代码审查,并将缺失层级证据记录为残余风险(residual risk)。
使用 Lookin 截取实时原生截图。若 Lookin 截图超时、层级过浅,或仅返回不可操作的图层数据,则使用:
xcrun simctl io "$VERIFY_SIMULATOR_ID" screenshot .harness/tmp/.png
将实时原生界面与 Figma 源对比,调整 UIKit/SnapKit、资源、颜色、字体排印、图标朝向、间距及动态尺寸适配。
重新构建、导航回该页面,并对已变更的视觉区域重复 Lookin/截图检查。
运行仓库的验证门禁(verification gates),并记录任何阻塞项(blocker)。
使用 Maestro 作为点击驱动器和持久化黑盒门禁(black-box gate);使用 Lookin 作为原生 UIKit 检查桥接器,用于查看视图层级、属性及截图。针对聚焦式视觉审查,Local Direct Harness 可替代 Maestro 导航;但在验证持久化端到端导航、点击或断言时,应优先使用已提交的 Maestro 流程。
对于 iOS 系统权限,优先使用 Maestro 的 launchApp.permissions 或 setPermissions,以避免常规视觉审查与冒烟测试(smoke flows)依赖系统弹窗文案。当本地 Maestro/Xcode/iOS 模拟器栈在设置 usertracking: allow 后仍显示 ATT/用户追踪提示时,允许跳过 ATT/用户追踪弹窗的点击操作。仅当流程明确用于测试权限行为本身时,才将系统权限弹窗设为流程目标。
当多个 Maestro 流程面向同一模拟器时,请串行执行。单个 iOS 模拟器在同一时间仅能被一个 Maestro 进程可靠驱动,因此切勿为节省时间而并行启动多个流程命令。若仓库提供了封装脚本(如 scripts/verify-flow.sh),请优先使用该脚本——它会自动串行化已提交流程,并传入选定的模拟器 UDID。
启动第二个本地流程前,请确认此前的 maestro 或 verify-flow 进程未仍在占用同一模拟器。
已提交流程示例:
FLOW_FILE=.harness/flows/.yaml scripts/verify-flow.sh
临时 hold 流程示例:
appId:--- - launchApp: permissions: photos: allow usertracking: allow - tapOn: text: "Allow" optional: true - tapOn: id: " " - assertVisible: id: " " - extendedWaitUntil: visible: id: "__hold_for_lookin__" timeout: 120000
hold 流程的最终超时属预期行为。应将成功导航/断言(sentinel 前)视为有效结果,而非最终进程退出码。请勿提交 hold 流程,亦不得将其超时作为验证结果上报。
在宣告审查完成前,请核查以下各项:
仅当满足以下全部条件时,方可认定视觉审查完成:
常见失败情形的处理方式如下:
.harness/tmp/ 下创建本地 hold 流程,或使用 Local Direct Harness 进行检查;仅当该交互应成为持久化门禁时,才建议提交正式流程。accessibilityIdentifier 值。运行相关本地门禁,常见命令如下:
git diff --check scripts/verify-docs.sh scripts/verify.sh scripts/verify-flow.sh
请串行运行流程门禁。若需执行多个特定流程,请依次调用,或使用仓库提供的封装脚本(该脚本会自动串行化流程列表);并行 Maestro 运行会争夺唯一可用模拟器,导致误报失败。
在最终总结或执行计划中,需记录以下内容:
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习