关于 frontend-ui-standards
frontend-ui-standards 是一项框架无关的技能,用于实现和审查面向用户的界面。它指导开发者组织设计令牌、组件指标和屏幕布局,以复用既有模式并保持一致性。
主要功能
- 01框架无关的界面指导
- 02令牌与指标分类
- 03可复用组件实践
- 04设计稿转代码指导
- 05布局与交互检查
- 06界面审查清单
适用场景
- 01构建或修改可见界面
- 02将视觉规范转换为代码
- 03修复间距、对齐或字体问题
- 04审查界面一致性与完成度
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ maxhan7/ frontend-ui-standards-skill --skill frontend-ui-standards安装后在 Claude Code 中输入/frontend-ui-standards确认已加载。
附带文件agents/openai.yaml
详细介绍
前端 UI 标准
目的
使用此技能,将 UI 工作转化为系统化的前端实现。目标不是逐像素微调,而是在代码中保留设计系统,让后续变更更可预测、更易复用,并在视觉上保持一致。
此技能与框架无关。请根据当前技术栈应用以下规则:
- SwiftUI:将设计令牌定义为枚举或静态常量,使用可复用的
View和语义化度量值。 - React/Web:使用 CSS 变量、设计令牌模块、组件属性和变体。
- React Native/Flutter:使用主题对象、共享组件和语义化尺寸。
适用场景
如果任务涉及以下内容,请在修改 UI 前使用此技能:
- 构建或修改可见屏幕、组件、布局或交互。
- 将 Figma、SVG、屏幕截图或视觉规范转化为代码。
- 修复视觉问题:对齐错误、文本截断、间距不一致、字体错误、按钮尺寸不当、安全区域问题。
- 创建或修改按钮、卡片、标签、选项卡、导航栏、底部面板、对话框、列表、进度指示器、输入框或阅读界面。
- 检查前端代码是否达到生产就绪标准或符合设计规范。
- 重构重复的 UI 或分散的硬编码值。
如果工作纯粹涉及后端、数据模型、提示词或基础设施,且变更不会影响面向用户的 UI,则不要使用此技能。
核心原则
UI 代码分为三个层次:
- 设计令牌:全局基础值和语义化值,例如颜色、字体、间距、圆角、阴影、安全区域偏移、内容宽度。
- 组件度量值:组件专属结构,例如标签高度、图标尺寸、内部边距、卡片标题间距、按钮变体。
- 屏幕布局度量值:页面专属布局,例如主视觉卡片位置、区块间距、重复行的对齐方式、装饰资源的位置。
视图代码应描述结构和状态,不应在主体中隐藏原始设计计算。
实现工作流
-
检查现有模式
- 添加新 UI 前,先查找最相近的现有组件和屏幕。
- 找出本地的设计令牌文件、主题文件、组件库和布局辅助工具。
- 检查其他位置是否已存在相同的视觉元素。
-
为每个视觉值分类
- 全局且可复用:放入设计令牌。
- 组件专属:放入组件度量值对象或枚举。
- 屏幕专属但在该屏幕内重复使用:放入屏幕布局度量值。
- 一次性装饰定位:将其单独放入命名明确的屏幕度量值中,不要写在视图主体内。
-
基于复用进行构建
- 优先扩展现有组件变体,而不是创建新组件。
- 如果两个位置使用相同的视觉角色,应共用相同的组件或度量值。
- 如果新组件很快会被重复使用,应立即将其提取出来。
-
编码布局关系
- 优先使用推导值,而不是重复写入数字。
- 示例:
authorChipWidth = rowWidth - sourceChipWidth - rowGap,而不是使用三个互不相关的宽度值。 - 通过共用容器、网格、布局参考线或命名明确的度量值来对齐相关元素。
- 除非偏移是命名明确的装饰性例外,否则不要通过局部移动单个元素来修正对齐。
-
验证相似界面
- 修复按钮、卡片或标题栏后,搜索相同的标签、组件、资源或模式。
- 尽可能更新共享组件。
- 如果仍有一次性实现,请通过清晰的度量值名称或简短注释说明原因。
-
构建并检查视觉效果
- 运行相关的构建或类型检查。
- 对于移动 UI,如果用户正在主动验证视觉效果,请在模拟器或设备上安装或运行。
- 检查文本截断、安全区域、触控目标、动态文本风险和导航或返回行为。
令牌与度量规则
优先使用语义化名称,而不是视觉坐标:
- 好:
primaryActionWidth、screenHorizontalInset、cardVerticalSpacing、metadataRowWidth、sourceChipWidth。 - 不好:
width: 271、padding(.leading, 12)、在视图主体中反复使用offset(y: 37)。
允许的数值:
- 令牌或度量定义中可以使用数值。
- 单次使用的资源几何属性可以使用数值,但应将其归入有名称的度量区段。
- 使用要求提供字面值的平台 API 时可以使用数值,前提是该数值不属于视觉设计的一部分。
避免:
- 分散的原始十六进制颜色值。
- 已存在字号比例时仍内联指定字体大小。
- 本应来自间距比例的内联间距值。
- 多个局部版本的同类按钮、标签、顶部栏、卡片或底部 CTA。
- 只在一个调用位置修复共享组件的问题。
组件复用规则
创建 UI 前,先思考:
- 这是新的视觉角色,还是现有角色的变体?
- 现有组件是否已经定义了交互方式、尺寸、阴影、圆角或字体样式?
- 这个组件还会出现在其他屏幕上吗?
- 是否应将其设为组件属性或变体,而不是创建新文件?
以下情况应创建组件变体:
- 结构相同,但颜色或状态不同。
- 按钮形状相同,但文本或图标不同。
- 卡片外壳相同,但内容不同。
- 标签相同,但文字或图标不同。
仅在以下情况创建新组件:
- 结构、行为或布局角色存在明显差异。
- 扩展旧组件会使其难以理解或变得脆弱。
Figma 转代码规则
使用 Figma、SVG、截图或视觉规范时:
- 将 Figma 中的数值视为输入依据,而不是最终代码结构。
- 首先识别重复出现的基本元素:颜色、字体样式、圆角、阴影、间距和内容宽度。
- 将重复的基本元素映射到现有令牌,或添加新的语义化令牌。
- 将重复的 UI 元素映射到现有组件或组件变体。
- 仅当设计确实具有插画或装饰性质,或平台布局模型要求使用时,才使用绝对定位。
- 保留层级和元素关系,不要盲目照搬坐标。
如果 Figma 中两个元素对齐,应在代码中通过共同的容器、网格、宽度或派生度量来实现对齐关系。
字体样式规则
- 优先使用项目的字号比例或平台文本样式。
- 应通过字号、字重、颜色和间距体现文本层级。
- 移动端正文应保持易读;有意义的内容不要使用过小的标签。
- 对用户需要阅读的内容,优先使用换行。
- 仅对元数据、标签、用户名、作者或有意限制空间的固定宽度标签使用截断。
- 截断文本时,应将文本限制在正确的组件内。不要让文本调整大小或挤压周围布局。
布局与间距规则
- 使用统一的页面内边距和内容最大宽度。
- 遵循安全区域、刘海屏、主屏幕指示条和键盘行为要求。
- 产品中的主要底部操作应采用统一的宽度和垂直位置。
- 返回、关闭、通知或收藏等顶部控件应采用统一的定位方式。
- 同一系列的卡片应采用统一的外观度量:宽度、圆角、阴影、内容内边距和间距节奏。
- 除非设计明确使用内嵌子卡片,否则避免嵌套卡片。
交互规则
- iOS 上的触控目标至少应为 44 pt,其他平台则采用相应标准。
- 仅包含图标的按钮需要提供无障碍标签。
- 破坏性操作需要明确的确认或撤销方式。
- 加载、重试、禁用、空状态和错误状态都必须明确呈现。
- 在可行的情况下,返回行为应符合用户的进入路径。
- 可点击区域应符合用户预期;如果整行或整张卡片都表示可操作区域,不要只将点击限制在很小的图标上。
审查清单
完成 UI 工作前,请检查:
- 添加新组件前,我是否搜索过现有组件?
- 颜色、字体排印、间距、圆角和阴影是否都已令牌化?
- 组件内部的尺寸参数是否放在组件指标中,而不是内联写在视图主体里?
- 特定屏幕的布局值是否集中分组并命名?
- 相关的宽度和位置是否都基于同一个事实来源推导?
- 我是否更新了同一系列的所有组件,或说明了未更新的原因?
- 文本是否能完整显示,没有不必要的截断?
- 是否遵循了触控目标和安全区域的要求?
- 我是否运行了相关的构建和类型检查?
- 如果是在优化视觉效果,在可行的情况下,我是否安装并运行了应用,或截取了屏幕截图?
常见反模式
- 没有检查共享容器,就说“把这里往下移 8px”。
- 仅仅因为这个屏幕“稍有不同”,就重复实现一个按钮。
- 将 Figma 坐标直接复制到视图主体中。
- 仅仅因为某个标签看起来不对,就添加一个局部字号。
- 只在一个屏幕上修复宽度,却让同一组件在其他地方继续出问题。
- 在生产 UI 中使用仅适用于模拟数据的布局假设。
- 让生成内容或后端文本决定 UI 布局,却不设置长度限制或截断策略。
可以接受局部例外的情况
如果例外是经过刻意设计且范围受控的,就可以接受:
- 仅用于某个屏幕的装饰资源。
- 具有独特艺术指导的一次性营销或编辑类布局。
- 过渡期重构:在当前变更中,完整提取组件的风险过高。
- 需要局部适配的平台特定约束。
即便如此,也要将值放在有名称的指标对象中,并将例外控制在较小范围内。
评论
支持 Markdown