mcpField
D
design-review

design-review

github.com/shiplightai设计与 UI2418 次安装16 周前更新
代码仓库

关于 design-review

design-review 是用于依据设计与无障碍标准评估应用视觉质量和易用性的技能,指导浏览器检查、证据报告及修复测试。

主要功能

  1. 01检查不同断点下的响应式布局
  2. 02执行 WCAG 无障碍检查
  3. 03审查视觉一致性与排版
  4. 04检查国际化准备情况
  5. 05生成含证据和置信度的报告
  6. 06提供修复建议和 YAML 回归测试

适用场景

  1. 01在发布或演示前审查界面
  2. 02依据 WCAG 2.1 AA 检查无障碍性
  3. 03改版后评估响应式表现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shiplightai/agent-skills --skill design-review

安装后在 Claude Code 中输入/design-review确认已加载。

详细介绍

设计审查

依据既定设计标准,评估应用的视觉质量和可用性。此审查能发现通常需要专业设计师才能察觉的问题,包括响应式断点、无障碍合规性、视觉层次、间距一致性和国际化就绪度。

适用场景

以下情况可使用 /design-review:

  • 发布 UI,但没有设计师审查
  • 发布或演示之前
  • 进行重大 UI 更改或重新设计之后
  • 检查无障碍合规性(WCAG 2.1 AA)
  • 验证应用在不同设备上的响应式表现

参考标准

  • WCAG 2.1 Level AA — Web Content Accessibility Guidelines(Web 内容无障碍指南)
  • Material Design / Human Interface Guidelines — 间距、触控目标、字体比例
  • ISO 9241-110 — 交互原则(适用性、自描述性、符合性)
  • APCA — Advanced Perceptual Contrast Algorithm(新一代对比度算法)

阶段概览

Phase 1: EDUCATE   → Brief context on what we check and why
Phase 2: SCOPE     → Identify pages, breakpoints, and focus areas
Phase 3: ANALYZE   → Browser-based checks with evidence capture
Phase 4: REPORT    → Findings with screenshots, scores, confidence
Phase 5: REMEDIATE → Fix guidance + YAML regression tests

阶段 1:了解

**为何重要:**94% 的第一印象与设计有关。即使功能正确,糟糕的视觉质量也会削弱信任。无障碍问题影响 15-20% 的用户,还会带来法律风险(自 2018 年以来,ADA 诉讼增加了 300%)。

本审查依据客观、可衡量的设计标准检查应用,而非主观审美。每项发现都会引用具体标准。


阶段 2:确定范围

收集上下文
  1. 自动检测 — 扫描项目以确定:

    • 框架(React、Vue、Next.js 等)
    • CSS 方案(Tailwind、CSS modules、styled-components 等)
    • 使用的设计系统(如有)
    • 路由结构 → 页面列表
    • 现有的 a11y 工具(eslint-plugin-jsx-a11y、axe-core 等)
  2. 询问用户(一次询问一个问题,并提供自动检测的默认值):

    • 目标 URL:应用运行在哪里?(自动检测开发服务器)
    • 关键页面:哪些页面最重要?(根据路由推荐前 3-5 个页面)
    • 目标设备:仅桌面端?移动端优先?两者都要?(默认:两者都要)
    • 品牌指南:是否有指定的颜色、字体或设计系统?(默认:依据通用最佳实践进行评估)
    • 关注领域:是否有已知问题?(可选)
  3. 定义要测试的断点:

    • 移动端:375px(iPhone SE)、390px(iPhone 14)
    • 平板:768px(iPad)
    • 桌面端:1280px、1920px
    • (根据用户的目标受众调整)

阶段 3:分析

使用 new_session 打开浏览器会话,并设置 record_evidence: true。针对范围内的每个页面,执行以下检查类别。

类别 A:响应式设计(RES)
检查 ID检查项标准方法
RES-01存在视口 meta 标签移动端最佳实践检查 <meta name="viewport">
RES-02所有断点均无水平溢出响应式设计调整视口大小,检查是否出现水平滚动条
RES-03移动端触控目标 ≥ 48x48pxWCAG 2.5.8 / Material Design测量移动端断点下交互元素的尺寸
RES-04375px 宽度下无需缩放即可阅读文本WCAG 1.4.4检查移动端正文的字号是否 ≥ 16px
RES-05所有断点下均可访问导航可用性确认导航会折叠或适配,并验证汉堡菜单可用
RES-06图片按需缩放响应式图片检查是否使用 srcset/sizes 或 CSS 容器约束
RES-07内容被截断时有明确提示可用性检查文本溢出,以及是否提供带工具提示或可展开的省略文本
RES-08移动端表单输入可用可用性检查输入框尺寸及适当的输入类型(tel、email)

**浏览器验证:**针对每个断点,使用 act 调整视口大小,然后使用 inspect_page 获取 DOM 和截图。检查是否存在溢出元素,并通过 JavaScript 测量尺寸。

类别 B:无障碍(A11Y)
检查 ID检查项标准方法
A11Y-01颜色对比度 ≥ 4.5:1(普通文本)WCAG 1.4.3 AA提取计算后的颜色,计算对比度
A11Y-02颜色对比度 ≥ 3:1(大号文本 ≥ 18pt)WCAG 1.4.3 AA对大号文本执行上述检查
A11Y-03所有图像都有替代文本WCAG 1.1.1检查 <img> 元素是否具有 alt 属性
A11Y-04表单输入项有关联标签WCAG 1.3.1检查 <label for=""> 或 aria-label
A11Y-05标题层级符合逻辑(h1→h2→h3)WCAG 1.3.1提取标题级别,检查顺序
A11Y-06所有交互元素上的焦点均可见WCAG 2.4.7使用 Tab 键遍历元素,检查焦点环是否可见
A11Y-07键盘导航可用(Tab、Enter、Escape)WCAG 2.1.1通过键盘浏览整个页面
A11Y-08存在跳过导航链接WCAG 2.4.1检查是否有跳转到内容的链接
A11Y-09ARIA 角色使用正确WCAG 4.1.2检查 ARIA 是否误用或冗余
A11Y-10页面具有 lang 属性WCAG 3.1.1检查 <html lang="">
A11Y-11模态框焦点限制有效WCAG 2.4.3打开模态框,确认 Tab 键焦点始终在框内
A11Y-12错误消息与输入项相关联WCAG 3.3.1检查 aria-describedby 或 aria-errormessage
A11Y-13遵循减少动态效果的设置WCAG 2.3.3检查 prefers-reduced-motion 媒体查询
A11Y-14不含可能诱发癫痫的内容(每秒闪烁 >3 次)WCAG 2.3.1目视检查动画

浏览器验证: 使用 inspect_page 提取 DOM。通过 act 运行 JavaScript,计算对比度、检查 ARIA 属性并提取标题层级。使用键盘导航(Tab、Enter、Escape)测试焦点管理。

类别 C:视觉一致性(VIS)
检查 ID检查项标准方法
VIS-01间距比例一致设计系统提取外边距和内边距,检查比例是否一致(4px/8px 网格)
VIS-02字体排印比例一致字体排印层级提取字号,检查比例或级别是否一致
VIS-03配色方案精简且有意设计设计最佳实践提取所有使用的颜色,若非灰色的独特颜色超过 10 种则标记
VIS-04交互元素的样式一致一致性比较各页面的按钮样式和链接样式
VIS-05对齐网格一致布局检查是否存在破坏视觉网格的未对齐元素
VIS-06异步操作有加载状态用户体验最佳实践触发异步操作,确认存在加载指示器
VIS-07空状态处理妥当用户体验最佳实践浏览无数据的页面,检查是否提供有意义的空状态
VIS-08错误状态样式一致用户体验最佳实践触发验证错误,检查样式
VIS-09深色模式一致性(如适用)设计系统切换深色模式,检查是否有元素未应用主题样式

浏览器验证: 使用 JavaScript 提取计算后的样式,并比较不同元素和页面的样式。通过页面截图对比检查视觉一致性。

类别 D:字体排印与可读性(TYP)
检查 ID检查项标准方法
TYP-01正文为 16-20px可读性研究提取计算后的 font-size
TYP-02正文行高为 1.4-1.6可读性提取计算后的 line-height
TYP-03行长为 45-75 个字符可读性(Bringhurst)测量每行的字符数
TYP-04字体加载策略(防止 FOUT/FOIT)Web 性能检查 font-display CSS 和预加载提示
TYP-05层级数量充足(≥3 种不同字号)字体排印提取并统计不同的标题字号
TYP-06正文左对齐(非两端对齐)可读性检查正文段落的 text-align
类别 E:国际化就绪度(I18N)
检查 ID检查项标准方法
I18N-01组件中没有硬编码字符串i18n 最佳实践扫描源代码,查找 JSX/模板中的字符串字面量
I18N-02布局可适应文本扩展(+30%)i18n 设计注入更长的文本字符串,检查是否溢出
I18N-03支持 RTL 布局(如适用)i18n切换 dir="rtl",检查布局适配情况
I18N-04日期/数字格式使用区域设置i18n检查是否存在硬编码的日期/数字格式
I18N-05字体栈包含 CJK/Unicode 后备字体i18n 排版检查 font-family 声明
I18N-06图标/图片不包含文字i18n目视检查图片内容

浏览器验证: 使用 JavaScript 修改 dir 属性、注入更长的文本、更改区域设置。在每种状态下截图。


阶段 4:报告

生成结构化报告并保存到 shiplight/reports/design-review-{date}.md:

# Design Review Report
**Date:** {date}
**URL:** {url}
**Pages reviewed:** {list}
**Breakpoints tested:** {list}

## Overall Score: {X}/10 | Confidence: {X}%

## Score Breakdown
| Category | Score | Findings |
|----------|-------|----------|
| Responsive (RES) | 7/10 | 2 high, 1 medium |
| Accessibility (A11Y) | 5/10 | 1 critical, 3 high |
| Visual Consistency (VIS) | 8/10 | 1 medium |
| Typography (TYP) | 9/10 | 1 low |
| i18n Readiness (I18N) | 6/10 | 2 medium |

## Findings

### CRITICAL

#### A11Y-01: Insufficient color contrast on primary buttons
- **Standard:** WCAG 1.4.3 AA (minimum 4.5:1)
- **Finding:** Primary button (#4A90D2 on #FFFFFF) has contrast ratio 3.1:1
- **Evidence:** [screenshot with annotation]
- **Pages affected:** All pages with primary CTA
- **Confidence:** 97%

### HIGH
...

### MEDIUM
...

### LOW / INFO
...
置信度评分
  • 90-100%:经过浏览器验证,并通过程序测量(已计算对比度、已测量元素尺寸)
  • 70-89%:来自 DOM 检查的有力证据,截图可佐证发现
  • 50-69%:基于启发式判断,可能因情境而异(例如“间距看起来不一致”)
  • 低于 50%:不要报告

阶段 5:修复

针对每项发现,提供:

1. 修复指南
#### A11Y-01: Insufficient color contrast
**File:** src/components/Button.tsx:23
**Current:** `background: #4A90D2` (contrast 3.1:1 against white)
**Fix:** `background: #2563EB` (contrast 4.8:1 against white) — maintains blue hue, meets AA
**Alternative:** `background: #1D4ED8` (contrast 7.1:1) — meets AAA
2. YAML 回归测试
- name: a11y-01-button-contrast
  description: Verify primary button meets WCAG AA contrast ratio
  severity: critical
  standard: WCAG-1.4.3-AA
  steps:
    - URL: /
    - VERIFY: Primary action buttons have sufficient color contrast (minimum 4.5:1 ratio for normal text)
      timeout_seconds: 15

将所有 YAML 测试保存到 shiplight/tests/design-review.test.yaml。


提示

  • 先使用 inspect_page 读取 DOM——这比截图更省资源,并能提供供 act 使用的元素索引。
  • 检查对比度时,使用 act 通过 JavaScript 中的 window.getComputedStyle() 提取实际渲染的颜色。
  • 使用 act 执行键盘操作(Tab、Enter、Escape、方向键)来测试键盘导航。
  • 在多个断点下运行此审查——许多问题只会在特定视口尺寸下出现。
  • 要测试 i18n 文本扩展,使用 act 通过 JavaScript 将 textContent 修改为更长的字符串。
  • 使用 close_session 关闭会话,并通过 generate_html_report 生成可分享的证据报告。

评论

支持 Markdown