Communitygithub.com

Figma 转前端页面

根据 Figma URL 实现或更新当前仓库中的前端页面、区块或组件,包括资产复用和浏览器验证。适用于 Figma 到代码的实现请求,而非仅设计分析或向 Figma 写入设计。

Figma 转前端页面 是什么?

该技能旨在协助开发者根据 Figma 设计稿,在现有项目代码中实现前端页面、区块或组件,并最终在浏览器中验证效果。它通过读取仓库代码,自动推断项目框架、路由、样式规范和组件库,并复用现有资产,从而确保实现贴合项目实际。技能核心约束包括:使用 margin 而非 gap 进行间距控制、避免通用选择器和兄弟选择器以确保 WXSS 兼容性,以及通过显式的 top/left 声明处理遮罩和固定面板。该技能支持多种平台(如 Taro H5 和小程序),并内置了针对 Taro 按钮 active 状态的兼容性处理。其工作流程涵盖了从识别 Figma 节点、获取设计证据、映射组件与实现到最终的浏览器验证和迭代调整,并强调使用明确的决策分类(已确认、推断、未知)来管理信息不确定性。最终,它会生成一份包含实现目标、入口点、行为变更和未决问题的简洁报告。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Shunqiang/skills/tree/HEAD/figma-to-frontend-page

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Figma 转前端页面 是做什么的?

成果与范围

在现有项目中实现所选设计,并在浏览器中验证结果。通常只需一个 Figma URL 即可开始;从仓库中推断项目约定。当无法访问设计时,接受提供的截图或导出文件作为备用证据。

用户指示优先于这些指南。保留现有更改,并将编辑范围控制在请求范围内。在确定文件或路由之前,务必明确任务是新页面、现有页面更新、区块还是可复用组件。不要将组件或局部修正转换为新页面。

核心约束

  • 在编辑之前,先阅读相关仓库代码。在合适时,复用其框架、路由、样式、令牌、组件、资产和数据约定。
  • 将设计几何转换为布局规则。优先使用普通流、flex 和 grid;仅在需要实际重叠、装饰或覆盖层时使用绝对定位。Figma 编组是证据,而非强制性的组件边界。
  • 复用相同的资产和适合的映射组件。保留独特的图像和图标,而不是用近似符号替代。不要将整个交互部分渲染为屏幕截图。
  • 实现由需求、原型或现有产品行为支持的功能。不要仅凭外观推断粘性定位、过滤语义、API 契约或导航目标。
  • 保留语义控件、无障碍名称、键盘操作和适当的焦点行为。排除设备界面元素(如 OS 状态栏),除非有要求。
  • 在未将实现目标与设计进行比较之前,不要声称视觉一致性。明确报告被阻止或未验证的需求。

CSS 兼容性

  • 对于 flex、grid 和重复项目之间的间距,使用 margin。不要使用 gap、row-gap 或 column-gap。将间距放在具名项目类上;当第一个或最后一个项目的边距不同时,为其添加显式的修饰符类。不要使用 > * + *、:first-child 或 :last-child 等选择器替换 gap。
  • 针对显式的组件类编写选择器。避免在可能编译为 WXSS 的样式中使用通用选择器和兄弟选择器(+、~)。在使用其他伪类或选择器之前,检查目标平台的选择器支持情况;不要假设浏览器 CSS 支持意味着 WXSS 支持。
  • 对于遮罩和固定面板,使用显式的 top、right、bottom 和 left 声明,而不是 inset。当使用 env(safe-area-inset-*) 时,在声明使用 env() 的紧跟之前放置一个简单值回退。在固定宽度和内边距需要配合的地方设置 box-sizing: border-box。
  • 在 Taro H5 中,内置的 taro-button-core:active 样式可能会在禁用悬停类的情况下将按下的按钮变灰。如果设计中没有按下颜色变化,则针对特定按钮类覆盖 active 背景和文字颜色,同时保留每个按钮的正常颜色。不要全局重置按钮或更改禁用状态样式。

证据与决策

当收集或刷新设计证据时,请阅读 design-evidence.md。保持一个简洁的工作摘要,包括目标、项目约定、资产映射、可用能力和不确定性。简短的任务使用上下文记录即可;除非有用或要求,否则不要生成规范文件。

对决策进行分类:

  • 确认: 明确的用户要求、选定的设计属性、原型行为或相关的现有产品契约。
  • 推断: 与项目一致的常规布局适配、换行和局部组件边界。选择最小的合理实现并披露重要的假设。
  • 未知: 缺失的提交通货、模糊的目标、冲突的目标框架或重要的业务行为。首先检查可用证据;如果仍然需要,提出一个聚焦的问题。在等待答案的同时继续独立工作。

单独的可见控件并不确立其业务行为。不要伪造成功提交、发明端点或静默替换模拟行为。仅当任务或现有预览约定支持时,才使用 fixture,并指出该限制。

执行

遵循依赖关系,而不是重复固定的序列。对于局部修正,复用仍然有效的证据,并检查更改区域以及受影响的共享行为。仓库和设计的独立读取可以分批进行。

1. 识别目标与项目

解析文件 key 和节点 ID。检查所选节点的类型、尺寸和周围上下文。如果缺少节点 ID,则检查顶层候选节点;仅在目标明确时才选择。

使用有针对性的搜索和读取来确定:

  • 适用的仓库说明和当前更改;
  • 包管理器、开发和验证命令;
  • 可能的目标文件及最接近的现有实现;
  • 路由、样式、令牌、字体、视口/单位处理及组件约定;
  • 现有的设计到代码的映射和资产(如果有)。

对于现有页面或组件的工作,保留其入口点。对于新页面,遵循现有的路由族和参数约定,检查冲突。仅将框架名称作为后备命名提示;不要强加一个通用的详情路由。

2. 获取足够的设计证据

优先使用可用的 Figma 工具获取元数据、截图、变量、组件映射和资产。在调用这些工具之前,遵循任何所需的工具特定技能前提条件。如果访问失败,尝试可用的经过身份验证的浏览器,然后使用提供的截图或导出文件。不要将网络搜索作为实际设计的替代。

从目标截图和结构概览开始,然后获取相关子树的详细信息。检查折叠线以下的内容。不要重复检索整个文件或不相关的框架。将不可用的测量值或状态记录为不确定性,而不是确切事实。

3. 映射与实现

将设计映射为有意义的模块,选择行为与外观匹配的现有组件。当组件具有复用性、独立行为或足够的复杂性时,将其提取为组件;不要拆分每个包装或为一个页面创建设计系统。

尽早解决字体和主要资产问题。保留资产的长宽比、透明度和适当的分辨率;使用仓库存储约定和语义化文件名。检查运行时资产是否从项目支持的持久位置加载。

根据提供的变体和现有项目行为,推导流体尺寸、最大宽度、换行和断点。对于单一设计尺寸,实现保守的适配,并将其与设计师指定的响应式布局区分开来。测试请求的平台;不要创建未请求的桌面或移动端重新设计。

对于在 H5 和小程序构建之间共享样式的 Taro 项目,除了源样式表外,还要检查生成的 WXSS。在可用时,在每个请求的运行时上验证间距和按下状态。

仅启用相关的行为分支:

  • 导航: 使用已有的目标和路由行为。
  • 表单和集合: 使用现有的数据契约;实现所需的验证、加载、空状态、错误状态和成功状态。
  • 选项卡和过滤器: 根据证据确定状态所有权和选择语义。仅当有支持时,才应用草稿/提交行为。
  • 表格: 保留对齐和显示的边框;提供适合目标视口的溢出处理。
  • 覆盖层或粘性 UI: 阅读 overlays-and-sticky.md。
  • 动效或媒体: 复现确认的行为,并在适用时处理加载和减少动效。

4. 验证与迭代

复用合适的运行服务器,或在可用的端口上启动文档化的开发命令。使用可用的浏览器自动化界面,合适时优先使用应用内浏览器,然后使用经过身份验证的外部浏览器或项目的浏览器工具。检查相关路由或现有组件预览。

阅读 acceptance-checklist.md 了解视觉比较、适用交互检查和完成标准。在局部打磨之前先修复大的结构差异。每次更改后,检查受影响的区域;最后执行一次整体目标的检查。

运行相关的仓库检查,检查最终的差异,并区分预先存在的失败与引入的失败。避免为了进行验证而添加依赖项或进行广泛的重构。保留预先存在的服务器会话,并确保为此任务启动的任何服务器的状态是明确的。

恢复与完成

如果访问或运行时验证失败,检查具体的错误并尝试可用的相关替代方案。在没有新证据的情况下,停止重复相同的失败。继续可以独立完成的工作,然后报告确切的阻塞因素、已实现的内容以及尚未验证的内容。缺少工具或凭据不能作为验证成功的证据。

当请求的目标已实现、适用的检查通过且没有已知的必要缺陷时,视为完成。轻微的渲染差异可以记录文档;未解决的布局错误、缺少必需的行为或浏览器检查被阻止的情况,不得作为完全完成来呈现。

简洁地报告:

  • 实现的目标和入口点,包括路由(仅当适用时);
  • 有意义的行为和组件更改;
  • 预览位置和实际执行的检查;
  • 重要的假设、未解决的差异或阻塞因素。

相关技能