设计评审技能 design-review

这个技能提供一套系统化的前端设计评审方法论,包含7个阶段,确保可访问性(WCAG 2.1 AA标准)、响应式设计和视觉抛光。它用于代码审查、UI审计,并解决常见设计问题如对比度问题、布局断裂、可访问性违规等,适用于PR评审和用户体验改进。关键词:设计评审、UI审计、前端开发、可访问性测试、响应式设计、视觉QA、用户体验、WCAG合规、PR审查。

前端开发 0 次安装 0 次浏览 更新于 3/7/2026

name: design-review description: 包含可访问性(WCAG 2.1 AA)、响应式测试和视觉抛光的7阶段前端设计评审。适用于PR评审、UI审计,或遇到对比度问题、布局断裂、可访问性违规、间距不一致、缺失焦点状态等情况。

关键词:设计评审、UI审计、前端评审、可访问性审计、WCAG合规、 响应式设计、视觉QA、UX评审、组件评审、PR设计检查、布局问题、 可访问性违规、对比度问题、响应式断裂、交互错误、键盘 导航、焦点状态、设计系统合规、视觉一致性、用户体验 license: MIT allowed-tools:

  • Read
  • Grep
  • Glob
  • Bash

设计评审技能

状态: 生产就绪 ✅ 最后更新: 2025-11-20 依赖: Playwright MCP 或 Chrome DevTools 方法论: 7阶段系统评审(灵感来源于 Stripe、Airbnb、Linear)


快速开始

1. 前提条件检查

开始设计评审前,验证浏览器自动化工具是否可用:

选项 A: Playwright MCP(推荐用于交互式测试)

  • 查看 playwright-testing 技能获取 Playwright 设置
  • 提供浏览器自动化、截图、视口测试、控制台监控

选项 B: Chrome DevTools CLI(替代方案用于截图和性能)

  • 查看 chrome-devtools 技能获取 Puppeteer CLI 设置
  • 提供截图捕获、性能分析、网络监控

完整浏览器工具参考,请参见 references/browser-tools-reference.md

2. 理解评审范围

对于 PR 评审:

# 分析 git diff 以理解范围
git diff --name-only origin/main...HEAD

# 阅读 PR 描述以获取上下文

对于通用 UI 评审: 只需提供预览 URL 和组件/页面描述。

3. 执行7阶段评审

遵循下面的系统检查清单。每个阶段有特定目标和测试流程。


7阶段评审方法论

阶段 0: 准备

目标: 理解上下文并设置测试环境。

步骤:

  1. 阅读 PR 描述 或评审请求以理解:

    • 变更动机
    • 实施范围
    • 开发者的测试笔记
    • 预期行为
  2. 分析代码差异(如果 PR 可用):

    git diff origin/main...HEAD
    

    识别修改的文件(组件、样式、测试)

  3. 设置实时预览环境:

    • 使用浏览器工具导航到预览 URL
    • 设置初始视口:1440x900(桌面)
    • 拍摄基线截图作为参考
  4. 评审设计原则(如果项目有自定义指南):

    • 检查项目 CLAUDE.md 以获取设计标准
    • 评审组件库文档
    • 记录设计系统标记和模式

何时跳过: 用于无 git 上下文的快速组件评审。


阶段 1: 交互和用户流程

目标: 验证交互体验按预期工作。

完整交互指南: 在测试交互状态、表单、按钮、导航流程、微交互、模态框或键盘导航时,加载 references/interaction-patterns.md

快速检查清单:

  • 测试所有元素的5种交互状态(默认、悬停、激活、焦点、禁用)
  • 执行主要用户流程(表单提交、导航、关键操作)
  • 验证破坏性操作有确认对话框
  • 评估感知性能(加载状态、乐观 UI)

分级: [阻塞] 关键流程断裂 | [高] 差劲的 UX/缺失焦点状态 | [中] 缺失抛光 | [挑剔] 小时间问题


阶段 2: 响应式测试

目标: 确保设计在所有视口大小下工作。

完整响应式指南: 在测试视口、触摸目标、移动导航、图像响应式或调试水平滚动时,加载 references/responsive-testing.md

测试3个视口:

  • 桌面 (1440px):最佳布局、完整功能集
  • 平板 (768px):优雅适应、44×44px 触摸目标、折叠导航
  • 移动 (375px):无水平滚动、16px 最小文本、移动友好导航

快速测试:

mcp__playwright__browser_resize(width: 1440, height: 900)  # 桌面
mcp__playwright__browser_resize(width: 768, height: 1024)  # 平板
mcp__playwright__browser_resize(width: 375, height: 667)   # 移动
mcp__playwright__browser_take_screenshot(fullPage: true)

分级: [阻塞] 布局断裂 | [高] 水平滚动/重叠 | [中] 次优间距 | [挑剔] 小不一致性


阶段 3: 视觉抛光

目标: 评估美学质量和视觉一致性。

设计原则指南: 在评估字体层级、间距/布局、颜色调色板、对齐/网格、视觉层级、图像质量或 S-Tier 设计标准时,加载 references/visual-polish.md

快速评估(5个标准):

  1. 布局和间距:网格对齐、8px 尺度、设计标记(无魔法数字如 17px)
  2. 字体:清晰的 H1>H2>H3 层级、1.5-1.7 行高、有限字体权重
  3. 颜色:设计系统标记、语义使用(红色=错误、绿色=成功)、一致的品牌
  4. 图像:高分辨率(无像素化)、正确的宽高比、优化尺寸、替代文本
  5. 视觉层级:主要操作突出、眼睛自然流动、战略性空白

分级: [阻塞] 文本难以辨认/图像断裂 | [高] 明显不一致性 | [中] 间距/对齐问题 | [挑剔] 美学偏好


阶段 4: 可访问性(WCAG 2.1 AA)

目标: 确保包容性设计适合所有用户。

完整 WCAG 2.1 AA 检查清单: 在验证 WCAG 合规性、测试键盘导航、检查颜色对比度、审计语义 HTML 或使用可访问性测试工具(Lighthouse、axe、WAVE)时,加载 references/accessibility-wcag.md

快速 WCAG 测试(4个原则):

  1. 可感知:图像替代文本、颜色对比度(文本 4.5:1、UI 组件 3:1)、语义 HTML
  2. 可操作:键盘导航(Tab 顺序逻辑、焦点在所有交互元素上可见、Enter/Space 激活、Escape 关闭模态框、无键盘陷阱)
  3. 可理解:清晰标签、有帮助的错误消息、一致的导航/术语
  4. 健壮:有效 HTML、适当的 ARIA 属性(角色、状态、属性)

关键测试:

  • 通过整个页面 Tab 键导航(验证焦点状态可见、逻辑顺序、无陷阱)
  • 使用 WebAIM 对比度检查器测试(所有文本/UI ≥4.5:1 或 3:1)
  • 验证表单标签与输入关联(<label for="id">aria-label
  • 检查语义 HTML(h1→h2→h3 无跳过、<button> 而非 <div onClick>

分级: [阻塞] 无键盘访问核心功能 | [高] WCAG AA 违规 | [中] 语义 HTML 问题 | [挑剔] 增强可访问性


阶段 5: 健壮性测试

目标: 验证边缘案例和错误条件的处理。

测试场景:

5.1 表单验证

  • 提交表单时必需字段为空
  • 输入无效数据(错误电子邮件格式、超出范围数字)
  • 测试字段级验证(实时反馈)
  • 验证清晰的错误消息和指导
  • 测试成功提交流程(确认消息)

5.2 内容溢出

  • 长文本字符串:非常长的名称、电子邮件、标题
  • 多个项目:大列表、数百行的表格
  • 深度嵌套内容:多回复评论
  • 空状态:无数据显示(显示有帮助的消息)

常见溢出问题:

  • 文本破坏布局(容器溢出)
  • 截断无省略号或工具提示
  • 大列表性能问题
  • 缺失空状态设计

5.3 加载和错误状态

  • 加载状态:骨架屏幕、旋转器、进度指示器
  • 错误消息:清晰、可操作性的错误描述
  • 重试机制:允许用户重试失败操作
  • 超时处理:优雅处理慢/失败请求
  • 乐观更新:立即反馈、失败时回滚

测试流程:

# 模拟慢网络
# 检查浏览器 DevTools 网络标签 → 节流

# 强制错误状态
# 测试无效 API 响应或网络失败

常见问题:

  • 无加载指示器(出现冻结)
  • 模糊错误消息(“发生错误”)
  • 失败后无重试机制
  • 内容加载时布局跳跃

分级优先级:

  • [阻塞] 边缘案例下崩溃或完全失败
  • [高] 差劲的错误处理或混乱状态
  • [中] 缺失边缘案例处理或小问题
  • [挑剔] 加载状态美学或小抛光

阶段 6: 代码健康

目标: 确保可维护、一致的实现。

代码模式指南: 在评估组件重用(DRY 原则)、设计标记使用(颜色、间距、字体)、模式一致性(命名、文件结构、API 模式)或识别红旗(重复、魔法数字、断裂抽象)时,加载 references/code-health-patterns.md

快速评审(3个标准):

  1. 组件重用:无复制粘贴、提取共享组件、组合优于重复
  2. 设计标记:用于颜色/间距/字体的 CSS 变量(无魔法数字如 margin: 17px)、边界半径一致
  3. 模式一致性:遵循代码库模式、命名约定匹配、文件结构组织

分级: [高] 引入技术债务/破坏模式 | [中] 错过的重用机会 | [挑剔] 代码风格偏好


阶段 7: 内容和控制台

目标: 验证抛光细节和技术正确性。

7.1 内容评审

检查:

  • 语法和拼写:无拼写或语法错误
  • 清晰度:标签和指令明确
  • 语气一致性:匹配品牌声音(正式/随意)
  • 占位符文本:替换为真实内容(无“Lorem ipsum”)
  • 微文案质量:有帮助的错误消息、按钮标签、工具提示

常见内容问题:

  • UI 文本中的拼写错误
  • 生产中留下占位符文本
  • 模糊标签(“提交”对比“保存更改”)
  • 不一致术语
  • 无帮助的错误消息(“错误”对比“电子邮件格式无效”)

7.2 控制台检查

测试流程:

# 使用 Playwright MCP
mcp__playwright__browser_console_messages()

# 使用 Chrome DevTools
# 打开 DevTools → 控制台标签

查找:

  • JavaScript 错误:未捕获异常、空引用
  • React 警告:Key prop 警告、生命周期问题
  • 网络失败:失败 API 请求、404
  • 弃用警告:旧 API 使用警告
  • 性能警告:慢渲染、内存泄漏

分级优先级:

  • [阻塞] 控制台错误破坏功能性
  • [高] 用户面对文本中的语法错误或混乱内容
  • [中] 控制台警告或小内容问题
  • [挑剔] 内容抛光、小控制台噪音

沟通原则

1. 问题而非处方

描述问题及其影响,而非解决方案。让开发者决定实现。

❌ 处方式(避免): “将边距改为 16px”

✅ 问题聚焦(首选): “间距与相邻元素感觉不一致,创建视觉杂乱,分散了对主要 CTA 的注意力。当前间距打破了设计系统的既定节奏。”

2. 分级矩阵

用清晰优先级分类每个问题

优先级 标准 所需操作
[阻塞] 关键失败、核心功能断裂、关键可访问性违规 合并前必须修复
[高优先级] 显著 UX 问题、明显设计不一致性、WCAG 违规 合并前应修复
[中优先级] 改进、小不一致性、边缘案例处理 考虑后续 PR
[挑剔] 美学偏好、小抛光、主观意见 可选精修

重要: 所有挑剔以“Nit:”前缀表示低优先级。

3. 基于证据的反馈

始终为视觉问题提供截图。截图应:

  • 清晰显示问题
  • 包括相关上下文(周围元素)
  • 指示查看内容(如需,箭头、高亮)

示例:

### [高优先级] 禁用按钮对比度差

**问题:** 禁用按钮文本对比度不足 (2.1:1),未达到 WCAG AA 标准 (需 4.5:1)。低视力用户可能无法识别按钮为禁用。

**截图:** [附加显示禁用按钮的截图]

**影响:** 可访问性违规、视觉障碍用户的潜在混淆。

4. 从积极开始

在列出问题前,始终承认工作良好之处。这:

  • 显示您认可良好工作
  • 提供平衡反馈
  • 维护积极协作

示例:

### 设计评审总结

新的结账流程显示出对用户体验的极佳关注。步骤指示器清晰且设计良好,错误消息有帮助且可操作,整体布局感觉宽敞且不杂乱。使用骨架屏幕的加载状态执行得特别好。表单验证反馈做得很好!

然而,合并前有一些可访问性和响应式问题需要解决...

报告结构模板

完整模板: 加载 assets/review-report-template.md 获取包含所有部分和示例的完整 Markdown 模板。

基本结构:

## 设计评审总结
[2-3 句子:积极承认 + 整体评估]
**评审范围:** [PR #、页面、组件]
**测试视口:** 桌面 (1440px)、平板 (768px)、移动 (375px)
**方法论:** 7阶段全面评审

---

### 发现

#### 🚨 阻塞
[需立即修复的关键问题]
- **[阻塞] [标题]:** 问题 + 截图 + 阶段

#### ⚠️ 高优先级问题
[需修复的显著问题]
- **[高] [标题]:** 问题 + 截图 + 阶段

#### 📋 中优先级 / 建议
[后续 PR 的改进]
- **[中] [标题]:** 问题 + 阶段

#### ✨ 挑剔
[小美学细节 - 可选]
- **Nit:** [问题] - [简要描述]

---

### 测试证据
**截图:** 桌面 (1440px) + 平板 (768px) + 移动 (375px)
**控制台输出:** [错误/警告 或 “控制台干净”]
**可访问性:** 键盘导航 + 焦点状态 + 颜色对比度

---

### 下一步
1. 修复阻塞
2. 解决高优先级问题
3. 考虑中优先级项目

**整体评估:** [阻塞修复后可合并 / 需要修订 / 可合并!]

何时加载参考文件

在处理设计评审的特定方面时加载参考文件:

accessibility-wcag.md

加载时机:

  • 基于标准: 验证生产部署的 WCAG 2.1 AA 合规性
  • 基于问题: 遇到可访问性违规(颜色对比度、键盘导航、语义 HTML、焦点状态、ARIA 属性)
  • 基于测试: 进行全面的可访问性审计和系统检查清单
  • 基于工具: 使用可访问性测试工具(Lighthouse、axe、WAVE、Pa11y)进行自动化测试
  • 基于分级: 确定可访问性问题严重性(WCAG 违规的阻塞/高/中)

browser-tools-reference.md

加载时机:

  • 基于设置: 安装或配置 Playwright MCP 或 Chrome DevTools CLI 以进行测试
  • 基于命令: 需要特定 Playwright 命令(导航、调整视口、截图、点击、输入、悬停、获取控制台输出)
  • 基于工作流: 实现常见测试工作流(跨3视口的响应式评审、表单交互测试、键盘导航测试)
  • 基于选择器: 与 CSS 选择器、文本选择器或可访问性选择器以定位元素斗争
  • 基于故障排除: Playwright MCP 找不到元素、Chrome 依赖缺失、截图捕获问题

code-health-patterns.md

加载时机:

  • 基于模式: 评估组件重用模式、DRY 原则合规性、提取共享组件
  • 基于标记: 检查设计标记使用(颜色、间距尺度、字体尺度、边界半径一致性)
  • 基于一致性: 评审模式一致性(命名约定、文件结构组织、API 模式、状态管理)
  • 基于示例: 需要代码示例比较好与坏模式(内联样式对比标记、重复对比组合)
  • 基于红旗: 识别代码健康问题(复制粘贴重复、魔法数字如 17px、不一致状态管理、断裂抽象)

design-principles-s-tier.md

加载时机:

  • 基于标准: 确保 S-Tier SaaS 仪表板质量(Stripe、Airbnb、Linear、Vercel 级别的抛光)
  • 基于系统: 评估设计系统基础(颜色调色板结构、字体尺度、间距尺度、核心 UI 组件)
  • 基于模块: 评审特定模块(多媒体审核界面、数据表、配置面板、仪表板)
  • 基于哲学: 应用核心设计哲学(用户第一、精益求精而非速度、简单优于复杂、一致性)
  • 基于架构: 评估 CSS 和样式架构(设计标记、组件模式、响应式策略)

interaction-patterns.md

加载时机:

  • 基于状态: 测试按钮、输入、链接的交互状态(默认、悬停、激活、焦点、禁用)
  • 基于表单: 测试表单交互、验证模式、错误状态、成功状态、加载状态
  • 基于按钮: 评估按钮加载状态、破坏性操作确认模式、主要对比次要操作
  • 基于流程: 测试导航流程、用户旅程、多步流程、模态框交互
  • 基于动画: 评审微交互、动画计时(200-300ms)、感知性能(乐观 UI、骨架屏幕)
  • 基于模态框: 测试模态框交互、键盘陷阱、焦点管理、Escape 键行为

responsive-testing.md

加载时机:

  • 基于视口: 在特定视口(桌面 1440px、平板 768px、移动 375px)使用 Playwright MCP 测试
  • 基于触摸: 验证触摸目标尺寸满足移动可用性的最小 44×44px 要求
  • 基于溢出: 调试水平滚动问题或移动端的布局溢出问题
  • 基于移动: 确保文本可读性(最小字体 16px)、移动导航模式、响应式图像
  • 基于断点: 实现或测试断点策略(常见断点:640px、768px、1024px、1280px)
  • 基于导航: 测试响应式导航模式(汉堡菜单、折叠导航、移动抽屉菜单)

visual-polish.md

加载时机:

  • 基于字体: 评估字体层级(H1>H2>H3)、字体尺度标准(16/18/24/32/48/64px)、行高(1.5-1.7)、可读性
  • 基于间距: 检查8点网格合规性(8/16/24/32/40/48/64px)、一致间距尺度、组件填充/边距
  • 基于颜色: 验证颜色调色板一致性、语义颜色使用(红色=错误、绿色=成功)、设计标记使用(无硬编码十六进制值)
  • 基于对齐: 检查基于网格的布局、精确对齐(0.5px 精度)、垂直节奏、视觉平衡
  • 基于层级: 评估视觉层级技术(大小对比、权重对比、颜色对比、位置、战略性空白)
  • 基于质量: 评估图像质量(无像素化)、正确的宽高比、适当的图像优化
  • 基于组件: 评审设计系统组件(按钮样式、表单输入样式、卡片组件、一致边界半径)

已知问题预防

此技能预防 8 个记录的设计评审问题:

问题 问题描述 影响 预防
#1: 缺失可访问性 评审仅关注视觉外观,忽略键盘导航和屏幕阅读器 WCAG 违规进入生产,排除残障用户 阶段 4 强制执行完整的 WCAG 2.1 AA 检查清单和键盘测试
#2: 不完整的响应式测试 仅评审桌面视口,遗漏移动断裂 断裂的移动布局、沮丧的移动用户 阶段 2 要求在 1440px、768px 和 375px 视口测试
#3: 模糊反馈 评论如“看起来不对”而无截图或具体性 浪费时间、不清晰的操作项、沮丧的开发者 基于证据的反馈原则需要截图
#4: 处方式解决方案 规定实现(“将边距改为 16px”)而非描述 UX 影响 设计与开发摩擦、错过更好解决方案 “问题而非处方”原则强制执行
#5: 无分级优先级 所有反馈平等对待,挑剔阻碍合并 交付变慢、优先级不清晰 需要分级矩阵(阻塞/高/中/挑剔)
#6: 跳过边缘案例 快乐路径工作,但错误状态和溢出破坏布局 生产中的边缘案例错误 阶段 5 强制健壮性测试
#7: 忽略控制台错误 视觉设计通过,但控制台存在 JavaScript 错误 运行时失败、差劲的用户体验 阶段 7 需要控制台检查
#8: 不一致方法论 临时评审错过关键领域,依赖评审者心情 不完整评审、错过问题 7阶段检查清单确保全面、可重复评审

依赖

必需

浏览器自动化工具(以下之一):

  1. Playwright MCP(推荐)

    • 查看 playwright-testing 技能获取安装
    • 提供:浏览器自动化、截图、视口测试、控制台监控
    • 最佳用于:交互式测试、键盘导航、表单测试
  2. Chrome DevTools CLI

    • 查看 chrome-devtools 技能获取安装
    • 提供:截图捕获、性能分析、网络监控
    • 最佳用于:视觉测试、性能审计

实时预览环境:

  • 可访问测试的 URL
  • 代表实际实现(非模拟)

可选

  • Git/GitHub:用于 PR 上下文和差异分析
  • 设计系统文档:用于一致性检查对已建立模式
  • 项目 CLAUDE.md:用于项目特定设计指南

安装指导

如果浏览器工具不可用,此技能将:

  1. 检测缺失工具
  2. 链接到适当的技能以进行安装(playwright-testingchrome-devtools
  3. 提供手动测试的后备指导

相关技能

  • playwright-testing:使用 Playwright 的端到端测试、浏览器自动化设置
  • chrome-devtools:通过 Puppeteer CLI 脚本进行浏览器自动化
  • frontend-design:创建具有设计质量的新前端接口(补充技能)
  • tailwind-v4-shadcn:UI 框架实现(被评审设计可能使用此)
  • ai-sdk-ui:AI 驱动的 UI 组件(可能作为评审接口的一部分)

官方文档


生产验证

此技能基于真实设计评审工作流,用于:

  • 方法论灵感:Stripe、Airbnb、Linear(7阶段系统方法)
  • 测试方法:使用 Playwright/Puppeteer 的自动化浏览器测试
  • 可访问性标准:WCAG 2.1 AA 合规性(行业标准)

估计令牌效率:

  • 无技能:约 25k 令牌(试错、重复修正)
  • 有技能:约 8k 令牌(引导方法、系统方法)
  • 节省:约 68% 并提供 100% 检查清单覆盖

有问题或问题?

  1. 检查 references/accessibility-wcag.md 获取完整 WCAG 检查清单
  2. 参见 references/browser-tools-reference.md 获取 Playwright/Chrome DevTools 命令
  3. 评审 references/visual-polish.md 获取设计原则
  4. 验证浏览器工具已安装(参见 playwright-testingchrome-devtools 技能)
  5. 确保预览 URL 在线并可访问