design-review
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDesign Review
设计评审
Evaluate your application's visual quality and usability against established design standards. This review catches issues that typically require a trained designer's eye — responsive breakpoints, accessibility compliance, visual hierarchy, spacing consistency, and internationalization readiness.
对照既定设计标准评估应用的视觉质量与可用性。本次评审能发现通常需要专业设计师才能识别的问题——响应式断点、可访问性合规性、视觉层级、间距一致性以及国际化就绪程度。
When to use
使用场景
Use when:
/design-review- Shipping UI without a designer reviewing it
- Before a launch or demo
- After significant UI changes or redesigns
- Checking accessibility compliance (WCAG 2.1 AA)
- Validating responsive behavior across devices
在以下场景使用 :
/design-review- 无设计师参与评审就发布UI时
- 上线或演示前
- 重大UI变更或重新设计后
- 检查可访问性合规性(WCAG 2.1 AA)
- 验证跨设备的响应式表现
Standards Referenced
参考标准
- WCAG 2.1 Level AA — Web Content Accessibility Guidelines
- Material Design / Human Interface Guidelines — spacing, touch targets, typography scales
- ISO 9241-110 — Interaction principles (suitability, self-descriptiveness, conformity)
- APCA — Advanced Perceptual Contrast Algorithm (next-gen contrast)
- WCAG 2.1 Level AA — 网页内容可访问性指南
- Material Design / Human Interface Guidelines — 间距、触摸目标、排版比例
- ISO 9241-110 — 交互原则(适用性、自描述性、一致性)
- APCA — 高级感知对比度算法(下一代对比度标准)
Phase Overview
阶段概述
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 testsPhase 1: EDUCATE → 简要说明我们的检查内容及原因
Phase 2: SCOPE → 确定页面、断点和重点关注区域
Phase 3: ANALYZE → 基于浏览器的检查并捕获证据
Phase 4: REPORT → 包含截图、分数和可信度的检查结果
Phase 5: REMEDIATE → 修复指南 + YAML回归测试Phase 1: Educate
阶段1:认知
Why this matters: 94% of first impressions are design-related. Poor visual quality erodes trust even when functionality is correct. Accessibility issues affect 15-20% of users and carry legal risk (ADA lawsuits increased 300% since 2018).
This review checks your app against objective, measurable design criteria — not subjective taste. Every finding references a specific standard.
重要性说明: 94%的第一印象由设计决定。即使功能正常,糟糕的视觉质量也会削弱用户信任。可访问性问题影响15-20%的用户,还存在法律风险(自2018年以来,ADA诉讼增加了300%)。
本次评审对照客观、可衡量的设计标准检查应用——而非主观审美偏好。每一项检查结果都对应具体标准。
Phase 2: Scope
阶段2:范围确定
Gather context
收集上下文信息
-
Auto-detect — scan the project for:
- Framework (React, Vue, Next.js, etc.)
- CSS approach (Tailwind, CSS modules, styled-components, etc.)
- Design system in use (if any)
- Route structure → list of pages
- Existing a11y tooling (eslint-plugin-jsx-a11y, axe-core, etc.)
-
Ask the user (one at a time, with auto-detected defaults):
- Target URL: Where is the app running? (auto-detect dev server)
- Key pages: Which pages matter most? (recommend top 3-5 from routes)
- Target devices: Desktop only? Mobile-first? Both? (default: both)
- Brand guidelines: Any specific colors, fonts, or design system? (default: evaluate against general best practices)
- Focus areas: Any known concerns? (optional)
-
Define breakpoints to test:
- Mobile: 375px (iPhone SE), 390px (iPhone 14)
- Tablet: 768px (iPad)
- Desktop: 1280px, 1920px
- (Adjust based on user's target audience)
-
自动检测 — 扫描项目以获取:
- 框架(React、Vue、Next.js等)
- CSS方案(Tailwind、CSS modules、styled-components等)
- 使用的设计系统(如有)
- 路由结构 → 页面列表
- 现有可访问性工具(eslint-plugin-jsx-a11y、axe-core等)
-
询问用户(逐一提问,附带自动检测的默认值):
- 目标URL:应用部署在哪里?(自动检测开发服务器)
- 关键页面:哪些页面最重要?(推荐路由中的前3-5个页面)
- 目标设备:仅桌面端?移动端优先?两者兼顾?(默认:两者兼顾)
- 品牌指南:是否有特定的颜色、字体或设计系统?(默认:对照通用最佳实践评估)
- 重点区域:是否有已知问题?(可选)
-
定义测试断点:
- 移动端:375px(iPhone SE)、390px(iPhone 14)
- 平板端:768px(iPad)
- 桌面端:1280px、1920px
- (可根据用户目标受众调整)
Phase 3: Analyze
阶段3:分析
Open a browser session with using . For each page in scope, run the following check categories.
new_sessionrecord_evidence: true使用 打开浏览器会话,设置 。对范围内的每个页面,运行以下检查类别。
new_sessionrecord_evidence: trueCategory A: Responsive Design (RES)
类别A:响应式设计(RES)
| Check ID | Check | Standard | Method |
|---|---|---|---|
| RES-01 | Viewport meta tag present | Mobile best practice | Inspect |
| RES-02 | No horizontal overflow at any breakpoint | Responsive design | Resize viewport, check for horizontal scrollbar |
| RES-03 | Touch targets ≥ 48x48px on mobile | WCAG 2.5.8 / Material Design | Measure interactive element sizes at mobile breakpoint |
| RES-04 | Text remains readable without zoom at 375px | WCAG 1.4.4 | Check font sizes ≥ 16px for body text on mobile |
| RES-05 | Navigation is accessible at all breakpoints | Usability | Verify nav collapses/adapts, hamburger menu works |
| RES-06 | Images scale appropriately | Responsive images | Check for |
| RES-07 | No content truncation without indication | Usability | Check text overflow, ellipsis with tooltip or expand |
| RES-08 | Form inputs are usable on mobile | Usability | Check input sizes, proper input types (tel, email) |
Browser validation: For each breakpoint, use to resize the viewport, then to capture DOM and screenshot. Check for overflow elements, measure sizes via JavaScript.
actinspect_page| 检查ID | 检查内容 | 参考标准 | 方法 |
|---|---|---|---|
| RES-01 | 存在视口元标签 | 移动端最佳实践 | 检查 |
| RES-02 | 所有断点下无水平溢出 | 响应式设计 | 调整视口大小,检查是否出现水平滚动条 |
| RES-03 | 移动端触摸目标≥48x48px | WCAG 2.5.8 / Material Design | 在移动端断点测量交互元素尺寸 |
| RES-04 | 375px断点下文本无需缩放即可阅读 | WCAG 1.4.4 | 检查移动端正文文本字体大小≥16px |
| RES-05 | 导航在所有断点下均可访问 | 可用性 | 验证导航是否折叠/适配,汉堡菜单是否正常工作 |
| RES-06 | 图片适当缩放 | 响应式图片 | 检查是否使用 |
| RES-07 | 内容截断时有提示 | 可用性 | 检查文本溢出情况,是否使用省略号搭配 tooltip 或展开功能 |
| RES-08 | 表单输入在移动端可用 | 可用性 | 检查输入框大小,是否使用合适的输入类型(tel、email等) |
浏览器验证: 针对每个断点,使用 调整视口大小,然后使用 捕获DOM和截图。检查溢出元素,通过JavaScript测量尺寸。
actinspect_pageCategory B: Accessibility (A11Y)
类别B:可访问性(A11Y)
| Check ID | Check | Standard | Method |
|---|---|---|---|
| A11Y-01 | Color contrast ratio ≥ 4.5:1 (normal text) | WCAG 1.4.3 AA | Extract computed colors, calculate ratio |
| A11Y-02 | Color contrast ratio ≥ 3:1 (large text ≥ 18pt) | WCAG 1.4.3 AA | Same as above for large text |
| A11Y-03 | All images have alt text | WCAG 1.1.1 | Check |
| A11Y-04 | Form inputs have associated labels | WCAG 1.3.1 | Check |
| A11Y-05 | Heading hierarchy is logical (h1→h2→h3) | WCAG 1.3.1 | Extract heading levels, check sequence |
| A11Y-06 | Focus is visible on all interactive elements | WCAG 2.4.7 | Tab through elements, check focus ring visibility |
| A11Y-07 | Keyboard navigation works (Tab, Enter, Escape) | WCAG 2.1.1 | Navigate entire page via keyboard |
| A11Y-08 | Skip navigation link present | WCAG 2.4.1 | Check for skip-to-content link |
| A11Y-09 | ARIA roles used correctly | WCAG 4.1.2 | Check for misused/redundant ARIA |
| A11Y-10 | Page has lang attribute | WCAG 3.1.1 | Check |
| A11Y-11 | Modal focus trapping works | WCAG 2.4.3 | Open modal, verify Tab stays within |
| A11Y-12 | Error messages are associated with inputs | WCAG 3.3.1 | Check |
| A11Y-13 | Reduced motion respected | WCAG 2.3.3 | Check for |
| A11Y-14 | No seizure-inducing content (>3 flashes/sec) | WCAG 2.3.1 | Visual inspection of animations |
Browser validation: Use to extract the DOM. Run JavaScript via to compute contrast ratios, check ARIA attributes, extract heading hierarchy. Use keyboard navigation (Tab, Enter, Escape) to test focus management.
inspect_pageact| 检查ID | 检查内容 | 参考标准 | 方法 |
|---|---|---|---|
| A11Y-01 | 普通文本颜色对比度≥4.5:1 | WCAG 1.4.3 AA | 提取计算后的颜色,计算对比度 |
| A11Y-02 | 大文本(≥18pt)颜色对比度≥3:1 | WCAG 1.4.3 AA | 同上,针对大文本 |
| A11Y-03 | 所有图片均有替代文本 | WCAG 1.1.1 | 检查 |
| A11Y-04 | 表单输入关联标签 | WCAG 1.3.1 | 检查 |
| 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-09 | ARIA角色使用正确 | WCAG 4.1.2 | 检查是否误用/冗余使用ARIA |
| A11Y-10 | 页面包含lang属性 | WCAG 3.1.1 | 检查 |
| A11Y-11 | 模态框焦点捕获正常 | WCAG 2.4.3 | 打开模态框,验证Tab键仅在框内循环 |
| A11Y-12 | 错误消息与输入框关联 | WCAG 3.3.1 | 检查 |
| A11Y-13 | 遵循减少动画的设置 | WCAG 2.3.3 | 检查是否使用 |
| A11Y-14 | 无诱发癫痫的内容(每秒闪烁>3次) | WCAG 2.3.1 | 视觉检查动画内容 |
浏览器验证: 使用 提取DOM。通过 运行JavaScript计算对比度、检查ARIA属性、提取标题层级。使用键盘导航(Tab、Enter、Escape)测试焦点管理。
inspect_pageactCategory C: Visual Consistency (VIS)
类别C:视觉一致性(VIS)
| Check ID | Check | Standard | Method |
|---|---|---|---|
| VIS-01 | Consistent spacing scale | Design systems | Extract margins/paddings, check for consistent scale (4px/8px grid) |
| VIS-02 | Typography scale is consistent | Typographic hierarchy | Extract font sizes, check for consistent ratio/scale |
| VIS-03 | Color palette is limited and intentional | Design best practice | Extract all used colors, flag if >10 unique non-gray colors |
| VIS-04 | Interactive elements have consistent styling | Consistency | Compare button styles, link styles across pages |
| VIS-05 | Alignment grid is consistent | Layout | Check for misaligned elements that break the visual grid |
| VIS-06 | Loading states exist for async operations | UX best practice | Trigger async actions, verify loading indicators |
| VIS-07 | Empty states are handled | UX best practice | Navigate to pages with no data, check for meaningful empty states |
| VIS-08 | Error states are styled consistently | UX best practice | Trigger validation errors, check styling |
| VIS-09 | Dark mode consistency (if applicable) | Design systems | Toggle dark mode, check for un-themed elements |
Browser validation: Use JavaScript to extract computed styles, compare across elements and pages. Screenshot comparison between pages for visual consistency.
| 检查ID | 检查内容 | 参考标准 | 方法 |
|---|---|---|---|
| VIS-01 | 间距比例一致 | 设计系统 | 提取外边距/内边距,检查是否符合一致的比例(4px/8px网格) |
| VIS-02 | 排版比例一致 | 排版层级 | 提取字体大小,检查比例是否一致 |
| VIS-03 | 调色板有限且合理 | 设计最佳实践 | 提取所有使用的颜色,若独特非灰色颜色>10种则标记 |
| VIS-04 | 交互元素样式一致 | 一致性 | 对比不同页面的按钮样式、链接样式 |
| VIS-05 | 对齐网格一致 | 布局 | 检查破坏视觉网格的错位元素 |
| VIS-06 | 异步操作有加载状态 | UX最佳实践 | 触发异步操作,验证加载指示器存在 |
| VIS-07 | 空状态处理得当 | UX最佳实践 | 导航到无数据页面,检查是否有有意义的空状态提示 |
| VIS-08 | 错误状态样式一致 | UX最佳实践 | 触发验证错误,检查样式 |
| VIS-09 | 深色模式一致性(如适用) | 设计系统 | 切换深色模式,检查未适配主题的元素 |
浏览器验证: 使用JavaScript提取计算后的样式,跨元素和页面对比。通过页面间截图对比检查视觉一致性。
Category D: Typography & Readability (TYP)
类别D:排版与可读性(TYP)
| Check ID | Check | Standard | Method |
|---|---|---|---|
| TYP-01 | Body text 16-20px | Readability research | Extract computed font-size |
| TYP-02 | Line height 1.4-1.6 for body text | Readability | Extract computed line-height |
| TYP-03 | Line length 45-75 characters | Readability (Bringhurst) | Measure character count per line |
| TYP-04 | Font loading strategy (FOUT/FOIT prevention) | Web performance | Check font-display CSS, preload hints |
| TYP-05 | Sufficient hierarchy levels (≥3 distinct sizes) | Typography | Extract and count distinct heading sizes |
| TYP-06 | Text is left-aligned (not justified) for body | Readability | Check text-align for body paragraphs |
| 检查ID | 检查内容 | 参考标准 | 方法 |
|---|---|---|---|
| TYP-01 | 正文文本16-20px | 可读性研究 | 提取计算后的字体大小 |
| TYP-02 | 正文文本行高1.4-1.6 | 可读性 | 提取计算后的行高 |
| TYP-03 | 每行长度45-75字符 | 可读性(Bringhurst) | 测量每行字符数 |
| TYP-04 | 字体加载策略(预防FOUT/FOIT) | Web性能 | 检查font-display CSS、预加载提示 |
| TYP-05 | 足够的层级(≥3种不同大小) | 排版 | 提取并统计不同的标题大小 |
| TYP-06 | 正文文本左对齐(非两端对齐) | 可读性 | 检查正文段落的text-align属性 |
Category E: Internationalization Readiness (I18N)
类别E:国际化就绪程度(I18N)
| Check ID | Check | Standard | Method |
|---|---|---|---|
| I18N-01 | No hardcoded strings in components | i18n best practice | Scan source code for string literals in JSX/templates |
| I18N-02 | Layout handles text expansion (+30%) | i18n design | Inject longer text strings, check for overflow |
| I18N-03 | RTL layout support (if applicable) | i18n | Toggle |
| I18N-04 | Date/number formatting uses locale | i18n | Check for hardcoded date/number formats |
| I18N-05 | Font stack includes CJK/Unicode fallbacks | i18n typography | Check font-family declarations |
| I18N-06 | Icons/images don't contain text | i18n | Visual inspection of image content |
Browser validation: Use JavaScript to modify attribute, inject longer text, change locale settings. Screenshot at each state.
dir| 检查ID | 检查内容 | 参考标准 | 方法 |
|---|---|---|---|
| I18N-01 | 组件中无硬编码字符串 | 国际化最佳实践 | 扫描源代码中的JSX/模板字符串字面量 |
| I18N-02 | 布局可容纳文本扩展(+30%) | 国际化设计 | 注入更长的文本字符串,检查是否溢出 |
| I18N-03 | 支持RTL布局(如适用) | 国际化 | 切换 |
| I18N-04 | 日期/数字格式使用本地化设置 | 国际化 | 检查是否有硬编码的日期/数字格式 |
| I18N-05 | 字体栈包含CJK/Unicode回退字体 | 国际化排版 | 检查font-family声明 |
| I18N-06 | 图标/图片不含文本 | 国际化 | 视觉检查图片内容 |
浏览器验证: 使用JavaScript修改 属性、注入更长文本、更改本地化设置。在每个状态下截图。
dirPhase 4: Report
阶段4:报告
Generate a structured report saved to :
shiplight/reports/design-review-{date}.mdmarkdown
undefined生成结构化报告并保存到 :
shiplight/reports/design-review-{date}.mdmarkdown
undefinedDesign Review Report
设计评审报告
Date: {date}
URL: {url}
Pages reviewed: {list}
Breakpoints tested: {list}
日期: {date}
URL: {url}
评审页面: {list}
测试断点: {list}
Overall Score: {X}/10 | Confidence: {X}%
总体评分:{X}/10 | 可信度:{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 |
| 类别 | 得分 | 问题数量 |
|---|---|---|
| 响应式设计(RES) | 7/10 | 2个高优先级,1个中优先级 |
| 可访问性(A11Y) | 5/10 | 1个关键级,3个高优先级 |
| 视觉一致性(VIS) | 8/10 | 1个中优先级 |
| 排版(TYP) | 9/10 | 1个低优先级 |
| 国际化就绪(I18N) | 6/10 | 2个中优先级 |
Findings
检查结果
CRITICAL
关键级
A11Y-01: Insufficient color contrast on primary buttons
A11Y-01:主按钮颜色对比度不足
- 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%
- 标准: WCAG 1.4.3 AA(最低4.5:1)
- 问题: 主按钮(#4A90D2 底色搭配 #FFFFFF 文字)对比度为3.1:1
- 证据: [带标注的截图]
- 影响页面: 所有包含主CTA的页面
- 可信度: 97%
HIGH
高优先级
...
...
MEDIUM
中优先级
...
...
LOW / INFO
低优先级 / 信息
...
undefined...
undefinedConfidence Scoring
可信度评分
- 90-100%: Browser-validated, measured programmatically (contrast ratio calculated, element size measured)
- 70-89%: Strong evidence from DOM inspection, screenshot supports finding
- 50-69%: Heuristic-based, may vary by context (e.g., "spacing looks inconsistent")
- Below 50%: Don't report
- 90-100%:浏览器验证,程序化测量(对比度计算、元素尺寸测量)
- 70-89%:DOM检查有充分证据,截图支持结论
- 50-69%:基于启发式判断,可能因上下文而异(如“间距看起来不一致”)
- 低于50%:不纳入报告
Phase 5: Remediate
阶段5:修复
For each finding, provide:
针对每个问题,提供:
1. Fix guidance
1. 修复指南
markdown
undefinedmarkdown
undefinedA11Y-01: Insufficient color contrast
A11Y-01:颜色对比度不足
File: src/components/Button.tsx:23
Current: (contrast 3.1:1 against white)
Fix: (contrast 4.8:1 against white) — maintains blue hue, meets AA
Alternative: (contrast 7.1:1) — meets AAA
background: #4A90D2background: #2563EBbackground: #1D4ED8undefined文件: src/components/Button.tsx:23
当前代码: (与白色文字对比度3.1:1)
修复方案: (与白色文字对比度4.8:1)—— 保持蓝色色调,符合AA标准
替代方案: (对比度7.1:1)—— 符合AAA标准
background: #4A90D2background: #2563EBbackground: #1D4ED8undefined2. YAML regression test
2. YAML回归测试
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: 15Save all YAML tests to .
shiplight/tests/design-review.test.yamlyaml
- 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.yamlTips
提示
- Use to read the DOM first — it's cheaper than screenshots and provides element indices for
inspect_page.act - For contrast checking, use JavaScript via with
actto extract actual rendered colors.window.getComputedStyle() - Test keyboard navigation by using with keyboard actions (Tab, Enter, Escape, Arrow keys).
act - Run this review at multiple breakpoints — many issues only appear at specific viewport sizes.
- For i18n text expansion testing, use with JavaScript to modify
actto longer strings.textContent - Close the session with and use
close_sessionfor a shareable evidence report.generate_html_report
- 先使用 读取DOM——这比截图成本更低,还能为
inspect_page提供元素索引。act - 对比度检查时,通过 运行JavaScript,使用
act提取实际渲染颜色。window.getComputedStyle() - 使用 模拟键盘操作(Tab、Enter、Escape、方向键)测试键盘导航。
act - 在多个断点运行评审——许多问题仅在特定视口尺寸下出现。
- 国际化文本扩展测试时,使用 通过JavaScript修改
act为更长的字符串。textContent - 使用 关闭会话,然后使用
close_session生成可分享的证据报告。generate_html_report