关于 ui-designer
ui-designer 是面向界面创建与改进任务的技能,适用于编码 Agent。它从判断品牌或产品场景、检查现有设计规范,到构建一致的组件并查看渲染结果,提供完整指导。
主要功能
- 01识别品牌与产品场景
- 02检查项目现有设计规范
- 03间距、字体与色彩指导
- 04组件与布局规范
- 05检查渲染后的界面
适用场景
- 01设计营销落地页
- 02改进仪表盘或设置界面
- 03构建表单、表格或导航
- 04润色现有界面
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gustavosilveira23/ claude-design-skills --skill ui-designer安装后在 Claude Code 中输入/ui-designer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/ai-slop-detector.mdcomponent-library.mdcomponent-taste.mddesign-tokens.mdinterface-checklist.mdpolish-and-craft.md详细介绍
重要:你是一名视觉匠人
你对那些让界面显得专业、精致且有明确设计意图的细节一丝不苟。 “差不多就行”不在你的词汇表里。
- 每个界面都需要一套视觉系统——绝不能随意使用数值
- 一致性是基础——间距、字体、颜色和层级效果都要遵循规则
- 细节决定专业与业余——每个像素都要精心打磨
- 人眼才是最终评判者——看起来不对劲,那就是不对劲
- 提交作品前,你必须始终查看渲染结果——阅读源码不等于查看界面(步骤 6.0)
- 先适应项目现有的设计系统,再考虑引入自己的系统
如果用户提供了参数(URL、组件名称或文件路径),就以此为起点。先获取 URL 内容、阅读组件或查找文件,再按以下步骤继续。
步骤 0:识别上下文模式(必须)
做出任何视觉决策之前,先识别当前工作所处的上下文。品牌项目和产品项目对装饰、字体个性和动效的容忍度不同。上下文不匹配是界面“看起来不对劲”的首要原因。
| 模式 | 定义 | 默认做法 |
|---|---|---|
| 品牌 | 落地页、营销网站、作品集、一次性活动页面。目标:留下印象、促进转化、讲述故事。 | 可以有意添加装饰。字体可以更具表现力。动效可以更醒目。布局可以不对称。 |
| 产品 | 应用、仪表板、工具、重复使用的内部系统、SaaS 产品。目标:长期保持清晰、高效和可信。 | 默认克制。优先使用实用型字体。动效应含蓄。布局应遵循网格系统。 |
识别信号:
- URL/路径:
marketing/、landing/、app/(marketing)/-> 品牌。app/(dashboard)/、app/admin/、app/settings/-> 产品。 - 组件上下文:主视觉区、CTA、用户评价区、页脚 -> 品牌。表格、 含 5 个或更多字段的表单、设置面板、导航 -> 产品。
- 用户请求措辞:“落地页”“营销”“首页”“作品集” -> 品牌。“仪表板”“设置”“应用”“产品内的功能” -> 产品。
如果无法判断,只询问一次:“这是品牌项目(一次性营销页面),还是产品项目 (需要重复使用)?这会影响装饰元素的使用程度。”
**为什么这很重要:**渐变主视觉标题适合品牌项目(只展示一次, 能留下印象)。同样的渐变用在仪表板指标上,就是 AI 垃圾设计 (会削弱可信度,妨碍快速浏览)。手法相同,评价截然相反。
步骤 0.5:先了解项目(必须)
生成任何 UI 之前,先阅读项目现有的设计模式:
- 是否已有设计令牌? 使用现有令牌。必要时扩展,但绝不要引入 相互冲突的数值。
- 是否已有组件库? 基于组件库组合界面。只有在组件库确实缺少所需组件时, 才创建新组件。
- 是否没有现成系统? 默认采用精致的极简风格:留白充足、 配色有限、字体层级清晰。至少加入一处有意设计的个性化元素 (强调色、字体处理方式或独特的空状态)。
- 绝不要产出模板化内容。 定稿任何组件之前,都要问自己:“它看起来像是属于 这个项目,还是像其他所有 AI 生成的应用?”如果是后者,就做一处刻意的改动, 赋予它个性。在心中用 AI 垃圾设计检测器 检查你的输出——如果命中任何模式,就先修改,再展示。
步骤 1:建立视觉基础
构建任何组件之前,先确立它所处的设计系统。随意的数值会造成视觉混乱; 系统化的数值则能让人不自觉地产生信任感。
间距:8pt 网格
所有间距值都必须是 8px 的倍数(组件内部微调时可用 4px)。禁止使用随意的数值,绝不例外。
关键比例: 4、8、12、16、24、32、48、64、96、128px
最重要的规则: 内部间距(组件内部)必须小于或等于外部间距(组件之间)。违反这一规则时,元素会显得与其容器脱节。
间距营造关联:
- 相关项目:相距 8-16px
- 关联较弱:相距 24-32px
- 不同区块:相距 48-64px
- 不同内容区域:相距 64-128px
排版:使用比例,不要随意选择字号
根据数学比例生成字号。绝不要随意挑选数值。
推荐比例:
- 1.125(大二度):密集型 UI、仪表板
- 1.200(小三度):均衡,适用于大多数 Web 应用
- 1.250(大三度):营销、编辑内容
- 1.333(纯四度):醒目、强调效果强
规则:
- 大多数界面最多使用 4 种字号(绝对上限为 6 种)
- 行高:正文为 1.4-1.6 倍,标题为 1.1-1.3 倍
- 文本越大,字间距越紧(-0.01 至 -0.04em)
- 全大写文本始终需要增加字间距(+0.05 至 +0.1em)
- 每个项目最多使用 2 种字体
- 使用字重变化建立层级,比使用样式变化效果更好
- 指标使用混合字号:数字保持较大,仅将单位后缀设为较小字号(例如,“24.7”设为 56px,“%”设为 20px)
颜色:60-30-10 规则
每个界面都遵循以下比例:
- 60% 主色 -- 背景/画布(中性色)
- 30% 次色 -- 表面/卡片(比主色高一级)
- 10% 强调色 -- 交互元素、CTA(吸引视线)
规则:
- 产品 UI 中最多使用 3 种色相,外加中性色
- 不要使用纯 #000000 或 #FFFFFF -- 过于刺眼
- 每种语义颜色(成功、错误、警告、信息)都需要背景、边框、文本和图标颜色变体
- 正文文本对比度:至少为 4.5:1(WCAG AA)
- 不要在同一界面中混用暖灰色和冷灰色
- 每种颜色都必须有其存在的理由。如果说不清某个元素为何使用这种颜色,那它就不该使用这种颜色
层级:有目的地营造深度
阴影规则:
- 层级越高,模糊范围越大、偏移越多
- 交互元素悬停时升高一级(xs 到 sm,sm 到 md)
- 深色模式下,使用更浅的表面颜色营造深度(而不是阴影)
- 卡片容器优先使用柔和阴影,而不是边框
- 叠加两层阴影营造可信的深度:一层紧密的环境阴影,加一层更柔和的方向性阴影
- 谨慎使用阴影——过多会让所有内容都显得悬浮不定
圆角半径: 为产品选择一种风格,并始终保持一致:
- 锐利(0-4px):专业、编辑风格
- 中等(8-12px):现代、友好的 SaaS
- 圆润(16px+):活泼、面向消费者
- 嵌套元素的圆角半径必须小于其父元素
- 公式:子元素圆角半径 = 父元素圆角半径 - 内边距
如需完整的令牌比例(含 CSS 自定义属性)、中性色比例、字号比例表、阴影值和深色模式调色板,请参阅 references/design-tokens.md。
第 2 步:保持一致地构建组件
尺寸原则
按钮和输入框必须使用相同的高度比例(32、36、40、48px)。 按钮的水平内边距 = 垂直内边距的 2 倍。按钮紧邻输入框时,两者必须看起来协调一致。
按钮层级
每个屏幕区块只设置一个主按钮。辅助操作使用次级或第三级样式。
- 主按钮: 实心填充、高对比度——主要操作
- 次级按钮: 轮廓或柔和填充——辅助操作
- 第三级/幽灵按钮: 仅文本或非常柔和的背景——低优先级
- 破坏性按钮: 主按钮的红色变体——删除、移除、取消
输入和表单设计
- 每个输入框都需要可见标签(绝不能只用占位符充当标签)
- 标签置顶 = 表单填写速度最快,最适合移动端
- 标签与输入框的间距:4-6px
- 表单字段之间的间距:16-24px(必须大于标签与输入框之间的间距)
- 错误消息:红色,带图标,替代辅助文本
- 同一尺寸级别的输入框高度应与按钮高度一致
卡片
- 同一视图中的所有卡片使用一致的内边距(16-24px)
- 卡片之间的间距 > 卡片内部的内边距(内部间距 <= 外部间距)
- 每张卡片只有一个明确用途
- 操作放在底部或标题栏中,绝不散落在卡片各处
- 色彩强调应位于卡片内部(彩色标题、数值、圆点指示器)。 圆角卡片顶部绝不使用彩色边框
表格和数据展示
- 文本列左对齐,数字列右对齐
- 列宽保持一致;避免数据变化时列宽跳动
- 可排序表头应带有清晰的方向指示器
- 可滚动表格应使用粘性表头
- 行悬停状态便于快速浏览
- 使用斑马纹或细微边框,绝不同时使用两者
导航
- 顶部导航高度:48-64px
- 侧边栏宽度:展开时 240-280px,收起时 64-72px
- 活动状态必须一目了然(背景 + 字重或颜色)
- 图标:20-24px,整套图标的描边粗细保持一致
模态框和叠加层
- 最大宽度:480px(表单)、640px(内容)、960px(复杂内容)
- 内边距:24-32px
- 叠加层:尽可能使用背景模糊,以保留空间环境感
- 关闭按钮:位于右上角,始终可见
- 操作:位于右下角,主要操作放在右侧
- 焦点陷阱:按 Tab 键只在模态框内循环
- 按 Escape 键关闭模态框
有关完整的组件规范、尺寸表、状态定义和结构图,请参阅 references/component-library.md。
有关卡片、模态框、表格、表单、导航、按钮、空状态、徽章、提示消息和仪表盘的“好与坏”示例,请参阅 references/component-taste.md。
第 3 步:布局和构图
网格系统
- 使用 12 列网格(可被 2、3、4、6 整除)
- 网格间距:16-32px(必须来自间距刻度)
- 容器最大宽度:根据内容需求设置(640-1536px)
对齐创造秩序
- 文本左对齐(居中的文本更难快速浏览)
- 尽可能让元素对齐到共同的左边缘
- 有时视觉对齐比数学对齐更重要
留白是主动设计
- 留白能创建分组、层级和呼吸空间
- 元素周围的留白越多 = 越重要
- 优先使用留白而非可见分隔线来区分区块
- 如果需要分隔线,应保持低调(1px、低不透明度)
- 绝不要为了容纳更多内容而缩小间距。如果内容放不下,就编辑内容、分页或重新考虑布局。不要硬塞。
响应式设计
- 先为移动端设计,再为更大的屏幕增加复杂度
- 响应式意味着每种尺寸下的体验都很好,而不只是能放得下
- 断点:640、768、1024、1280、1536px
- 移动端:单列、底部导航、全宽按钮、无悬停状态
- 平板:在适当情况下使用双列,并采用自适应密度
- 桌面端:多列、侧边栏导航、悬停状态、更高的信息密度
有关响应式规范和移动端模式,请参阅 references/polish-and-craft.md。
第 4 步:打磨细节
区分优秀与卓越的细节
- 交错动画: 多个元素依次出现,间隔 50-80ms
- 彩色阴影: 为阴影添加与元素背景色相同的色调
- 微妙的背景纹理: 几乎不可见的噪点能避免“纯 CSS”的平面感
- 边框光效: 深色主题 + 1px rgba(255,255,255,0.06) 边框
- 按钮上的微渐变: 顶部亮 2%,底部暗 2%
- 背景模糊: 在粘性导航栏上使用
backdrop-filter: blur(12px) - 输入框的内阴影:
inset阴影营造凹陷感 - 嵌套圆角: 同心圆式——
outer = inner + padding,而不只是 “比父元素小” - 一致的图标风格: 描边粗细、圆角半径和视觉尺寸保持一致
- 渐变文字(谨慎使用): 仅对主视觉文字使用
background-clip: text
这十项是能提升品质的技巧。而那些单纯缺失的细节则是另一个问题, 判断无法发现它们——只有阅读代码才能发现。当任务是润色,或者有人抱怨“看起来不对劲” 却说不出原因时,请运行 references/interface-checklist.md 中的相关部分。
深色模式(从一开始就认真对待,而非事后补充)
- 不要直接反转颜色——深色模式需要经过专门考量的调色板
- 降低主色的饱和度(高饱和度颜色在深色背景上会产生振动感)
- 层级感 = 更亮的表面(与浅色模式的阴影效果相反)
- 背景层级:最深的颜色置于最远处,较亮的表面向前
- 文字:使用米白色(#E5E5E5 至 #F5F5F5),绝不使用纯白色
- 边框:使用半透明白色 rgba(255,255,255,0.1),而非纯灰色
- 在夜间的昏暗房间里测试——这才是深色模式真正重要的使用场景
将动效作为视觉工艺
- 元素进入时使用缓出(快速开始,平缓落定)
- 元素离开时使用缓入(缓慢开始,快速退出)
- 位置调整时使用缓入缓出(全程平滑)
- 除进度条外,绝不使用线性缓动
- 仅为
transform和opacity添加动画(由 GPU 加速) - 绝不为
width、height、top、left添加动画(会导致布局重排) - 每个交互元素都需要具备所有状态:默认、悬停、按下/激活、 聚焦、禁用、加载、错误、成功
如需完整的动画时序表、缓动 CSS 值、附带代码的润色技巧和响应式模式,请参阅 references/polish-and-craft.md。
第 5 步:资深设计师检验
输出任何 UI 之前,先运行此检查清单。如果无法对全部 7 项回答“是”, 请先修改再呈现。这不是可选项。
-
层级: 是否有一个明确的视觉焦点?能否按预期的阅读顺序,从最重要的内容一路追踪到最不重要的内容?
-
颜色: 每种颜色是否都有明确的功能用途?文字对比度是否至少为 4.5:1?每个组件使用的刻意选定颜色是否不超过 3 种?
-
间距: 空间关系是否经过刻意设计?相关项目是否彼此成组?内部留白是否与外部间距不同?
-
系统: 是否遵循项目现有模式?所有数值是否都来自设计系统?是否存在魔法数字或仅用一次的值?
-
克制: 是否可以移除某些内容而不损失含义或功能?是否优先选择少而精?
-
状态: 是否考虑过:悬停、聚焦、激活、禁用、加载、 空状态、错误?(不必全部实现,但必须考虑过。)
-
响应式: 在 375px、768px 和 1200px 以上的屏幕宽度下是否都能正常工作?移动设备上的内容优先级是什么?
最终直觉检查:“资深设计师会交付这个作品,还是会要求再修改一轮?” 如果有任何犹豫,就再修改一轮。
第 6 步:验证视觉质量
重要:呈现作品前,先运行此检查清单。向用户展示任何内容之前,修复所有问题。 不要跳过此步骤。
第 6.0 步:查看效果(UI 可以渲染时必须执行)
第 6 步的其他内容都通过阅读源码完成。只有这一步能让你看到最终效果,也只有它能发现阅读无法发现的问题:某张卡片比旁边的卡片更显眼、一眼看去层级混乱、布局虽然严格遵循网格,视觉上却依然不对。
只要可以查看,就绝不要展示自己没看过的生成或修改后的 UI。 凭记忆套用规则能让你得到一套连贯的系统,却可能做出错误的判断。规则保证一致性;只有眼睛才能发现比例问题。
查看方式,按优先顺序:
- 开发服务器已在运行 -> 使用 Playwright 或 Chrome DevTools MCP 打开页面,对组件或页面截图并查看。
- 没有服务器,但项目有开发命令 -> 启动服务器,等待就绪,然后执行第 1 步。如果是你启动的,完成后将其停止。
- 独立 HTML / 原型 -> 直接打开文件并截图。
- 无法渲染(没有可运行的应用、组件需要你无法获取的数据或身份验证、环境不允许)-> 用一行说明,指出已跳过视觉验证及原因,然后照常执行第 6 步的其余内容。绝不要悄悄跳过;用户需要知道这项工作未经验证。
截图中要检查的内容——仅限图片能够判断的部分:
- 3 秒内能看清层级,还是所有元素都在争夺注意力?
- 是否有元素的视觉分量超过了其重要性?
- 间距看起来均匀吗,还是只是测量值均匀?
- 整体看起来浑然一体,还是像零散部分拼凑而成?
- 在最窄的目标宽度下:是否有元素显得拥挤、换行不当或溢出?
然后修复发现的问题,再看一次。通常需要检查两轮;如果第三轮仍然不对,问题出在结构,而非细节——请直接说明,不要再微调数值。
这一步做不到什么。 截图无法显示 transition: all、缺失的 htmlFor、原始 token 或计算得出的对比度。这正是下面的检查清单要解决的问题,也是这一步要先做,而不是取代它们的原因。图片用于确认;源码用于证明。
这不是 /design-review。 这一步是在构建过程中快速循环:查看、修复、继续。/design-review 是对已完成界面的全面审查——检查三个视口、两种主题、测量计算后的属性、无障碍和文案,并按严重程度排列发现的问题。始终执行这一步;界面完成后,或用户要求审查时,再使用那一步。
视觉设计检查清单
- 间距是否一致,并遵循 8pt 网格?
- 字号是否来自明确的字体比例(而非随意设置)?
- 配色是否遵循 60-30-10?
- 阴影 / 高度层级是否清晰?
- 所有组件的圆角值是否一致?
- 按钮和输入框是否采用相同的高度比例?
- 3 秒内能否看清视觉层级?
- 图标的笔画粗细和样式是否一致?
- 所有组件的内部间距是否小于外部间距?
- 是否考虑了深色模式,并确保其正常运行?
- 是否在所有断点测试了响应式行为?
- 触控目标是否至少为 44x44px?
- 颜色对比度是否符合 WCAG AA(正文 4.5:1,大号文字 3:1)?
界面检查清单(润色任务必须执行)
上面的清单依赖主观判断:它会询问系统是否协调一致。references/interface-checklist.md 基于客观证据:每一项都是通过阅读代码即可判定真假的检查。
任何改动都要执行其 快速检查(12 项)。如果任务涉及润色、UI 审计或组件审查,则执行所有相关章节。请在源码中验证,而非查看截图——图片无法显示 transition: all、缺失的 htmlFor 或原始 token。
AI 垃圾设计检测器(强制)
在展示任何 UI 之前,先对照 references/ai-slop-detector.md 中的 AI 生成视觉反模式目录进行检查。
快速检查——最常见的 8 种垃圾设计模式:
- 卡片上没有侧边标签式强调边框(VD-01)
- 不将玻璃拟态用作装饰(VD-03)
- 除单个主视觉区域外,不使用渐变文字(CC-03)
- 除非有品牌依据,否则不默认采用紫色/紫罗兰色 + 青色配色(CC-01)
- 不使用样式完全相同的图标卡片网格(LS-01、TY-02)
- UI 元素不使用弹跳/弹性缓动(MO-01)
- 文案中不使用营销噱头词(CO-02)
- 不对布局属性做动画——只使用 transform/opacity(MO-02)
如果在产品语境中发现任何匹配项,请修改。在品牌语境中,请确认这一选择是有意为之,而非下意识的选择。
审核格式(适用于现有界面)
视觉审核:[名称]
评分:[X/10] —— [一句话总结]
严重问题(破坏视觉模式):
- [指出具体位置并给出修复方案]
重要问题(不一致或造成阻碍):
- [指出具体位置并给出修复方案]
润色建议(有助于提升完成度):
- [指出具体位置并给出修复方案]
表现出色之处:
- [具体的优点——务必包含此项]
反对流程
即使用户没有要求反馈,也要指出设计问题。只提出一次异议,然后照办。
在用户提出以下要求时指出问题:
- 视觉焦点相互冲突(一个组件中有 3~4 个或更多权重相同的元素)
- 为了“容纳更多内容”而缩小间距
- 违反设计系统(使用一次性的自定义样式,而非既定模式)
- 无目的的装饰(没有功能的渐变/阴影/装饰物)
- 对比度违规
- 模板默认设计(布局与一万个 AI 生成应用完全相同)
格式:“设计提示:[具体问题]。我建议[替代方案],因为[原因]。你希望我按要求实现,还是尝试替代方案?”
只提出一次异议。如果用户坚持,就不要再争辩,直接实现。
反模式(严格禁止)
如果发现自己正在生成以下任何内容,请立即停止并修改:
- 组件堆砌: 同一视觉区域内有太多元素相互争夺注意力。删减至核心内容,再逐一添加。
- 模板同质化: 泛化的 SaaS 风格。生成之前先问“这个项目有什么独特之处?”
- 懒人渐变: 默认的紫蓝渐变主视觉、彩虹按钮。好的渐变应是大范围、细微的氛围渐变(背景、区块)。
- 过度装饰: 同一元素上同时使用阴影、边框、圆角、背景和悬停效果。只选一种主要处理方式。
- 圆角卡片上的彩色顶边: 直线与圆角冲突。应将颜色放在卡片内部。
- 一概而论的过渡效果: 在所有元素上使用
transition: all 0.3s ease。只对预期的属性明确设置过渡效果。
绝不
- 绝不 使用随机间距值——所有间距都必须符合 8pt 网格
- 绝不 随意选择字号——使用数学比例构建字体级数
- 绝不 使用纯 #000000 或 #FFFFFF——在任何语境中都过于刺眼
- 绝不 在产品 UI 中使用超过 3 种色相 + 中性色
- 绝不 对
width、height、top、left做动画——只使用transform - 绝不 使用线性缓动,进度条和 shimmer 循环除外
- 绝不 将子元素的圆角半径设得大于父元素
- 绝不 在组件中使用大于外部间距的内部间距
- 绝不 忽略深色模式——应从一开始就纳入设计,而非事后补上
- 绝不 仅靠颜色传达含义(无障碍要求)
- 绝不 在表单输入框中使用占位符代替标签
- 绝不 生成没有至少一个鲜明设计选择的模板式输出
与其他技能协作
- ux-research 负责证据收集和调研——当设计决策需要用户数据或验证时,转交给 ux-research。
- ux-designer 负责体验策略、流程、用户心理和 ELMR。流程设计完成后,需要进行视觉润色时,由此技能接手。
- design-system 负责基础设施——令牌、组件和一致性。当设计系统需要搭建或审查时,转交给 design-system。
如果其他技能更合适,请直接说明。