design-review

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
This skill runs a structured design review of what has been built, measured against the design brief and the chosen aesthetic philosophy.
CRITICAL — Visual Screenshot Capture
You MUST capture screenshots of the running application as part of every design review. Code review alone is insufficient — you need to see what the user sees. Follow the screenshot capture protocol in Step 3 below. This is not optional.
本技能会对照设计说明和选定的美学理念,对已构建的内容执行结构化设计评审。
重要提示 — 可视化截图采集
每次设计评审都必须采集运行中应用的截图。仅靠代码评审是不够的,你需要看到用户实际看到的内容。请遵循下方第3步的截图采集规范,本步骤不可省略。

Example prompts

示例提示词

  • "Review what I just built"
  • "Run a design critique on the landing page"
  • "Check this against the brief"
  • "Here's a screenshot. How does it look?" [paste screenshot]
  • "QA pass before I ship this"
  • 「评审我刚构建的内容」
  • 「对落地页执行设计评审」
  • 「对照设计说明检查这个内容」
  • 「这是截图,你觉得效果怎么样?」[粘贴截图]
  • 「在我上线前做一轮QA检查」

Process

流程

  1. Read the brief. Look for the active feature's brief at
    .design/<feature-slug>/DESIGN_BRIEF.md
    . If multiple feature folders exist under
    .design/
    , ask the user which feature to review. If no
    .design/
    folder exists, fall back to
    DESIGN_BRIEF.md
    in the project root. If neither exists, ask the user what the intended design direction was.
  2. Explore the built code. Examine every component, page, and style file that was created or modified. Scan specifically for:
    • All new or modified components and their relationship to pre-existing components
    • Token/variable usage: are components using shared tokens or hardcoding values?
    • Duplicate components that should be consolidated
    • File naming and organization: do new files follow the project's conventions?
    • Understand what was actually built, not what was planned.
  3. Capture screenshots of the running application.
    This step is mandatory. Do not skip it. Do not rely only on user-provided screenshots.

    Screenshot Tool Priority

    Try each option in order. Use the first one that is available:
    1. Playwright MCP (preferred). Check if the
      plugin-playwright-playwright
      MCP server is available. If it is, use it — it gives you precise control over viewport sizing, full-page captures, and file naming.
    2. Cursor IDE Browser (second choice). If Playwright MCP is not available, use the
      cursor-ide-browser
      MCP server's
      browser_take_screenshot
      tool instead. It has the same core capabilities.
    3. Ask the user (last resort). If neither MCP server nor in-app browser is available, you MUST ask the user to provide screenshots manually. Be specific about what you need:
      • "I don't have access to a browser tool. To complete the visual review I need screenshots of the running application. Please provide:"
      • A full-page screenshot at desktop width (1280px)
      • A full-page screenshot at tablet width (768px)
      • A full-page screenshot at mobile width (375px)
      • Dark mode variants (if applicable)
      • Any specific component or interactive state you want reviewed
      • Ask the user to paste/attach the images directly in chat, or to save them into the
        screenshots/
        folder themselves.
      • Do not skip the visual review. Wait for the user to provide screenshots before proceeding with the checklist.

    Screenshot Save Location

    All screenshots MUST be saved to a
    screenshots/
    subfolder inside the feature's
    .design/
    directory — the same folder where
    DESIGN_BRIEF.md
    and other design flow files live.
    Path pattern:
    .design/<feature-slug>/screenshots/
    If the brief lives at
    .design/onboarding-flow/DESIGN_BRIEF.md
    , screenshots go to
    .design/onboarding-flow/screenshots/
    . Create the folder if it does not exist.
    If no
    .design/
    folder exists (legacy project or standalone review), fall back to a
    screenshots/
    folder in the project root.
    Use descriptive filenames that encode what was captured:
    .design/
    └── onboarding-flow/
        ├── DESIGN_BRIEF.md
        ├── DESIGN_REVIEW.md
        └── screenshots/
            ├── review-homepage-desktop-1280.png
            ├── review-homepage-tablet-768.png
            ├── review-homepage-mobile-375.png
            ├── review-homepage-dark-mode-desktop-1280.png
            └── review-card-component-hover.png

    Screenshot Capture Protocol

    a. Navigate to the application. Ask the user for the URL if not obvious from the project (e.g.,
    http://localhost:3000
    ). Use
    browser_navigate
    to open it.
    b. Capture responsive breakpoints. At minimum, capture these three viewports for every key page/view:
    BreakpointWidth × HeightFilename suffix
    Mobile375 × 812
    -mobile-375
    Tablet768 × 1024
    -tablet-768
    Desktop1280 × 800
    -desktop-1280
    Use
    browser_resize
    to set the viewport before each screenshot. Use
    browser_take_screenshot
    with
    fullPage: true
    to capture the entire scrollable page, and save with the
    filename
    parameter pointing to the
    screenshots/
    folder.
    Playwright MCP example sequence (assuming feature slug is
    onboarding-flow
    ):
    1. browser_navigate → { url: "http://localhost:3000" }
    2. browser_resize   → { width: 1280, height: 800 }
    3. browser_take_screenshot → { type: "png", filename: ".design/onboarding-flow/screenshots/review-homepage-desktop-1280.png", fullPage: true }
    4. browser_resize   → { width: 768, height: 1024 }
    5. browser_take_screenshot → { type: "png", filename: ".design/onboarding-flow/screenshots/review-homepage-tablet-768.png", fullPage: true }
    6. browser_resize   → { width: 375, height: 812 }
    7. browser_take_screenshot → { type: "png", filename: ".design/onboarding-flow/screenshots/review-homepage-mobile-375.png", fullPage: true }
    c. Capture interactive states (when relevant).
    • Hover states on buttons, cards, links
    • Focus states on form fields
    • Open states on dropdowns, modals, menus
    • Error/success states on forms
    • Loading and empty states
    d. Capture dark mode (if the project supports it). Toggle dark mode and repeat the responsive breakpoint captures with
    -dark-mode
    in the filename.
    e. Capture specific components. If the review focuses on a particular component, use the
    element
    and
    ref
    parameters to screenshot just that element.

    Analyze Every Screenshot

    After capturing, visually analyze each screenshot against the design brief. For each screenshot:
    • Compare against the brief's aesthetic direction
    • Check visual hierarchy: is the most important element the most prominent?
    • Check spacing consistency: do margins and padding look even and intentional?
    • Check color: does the palette match the brief's direction?
    • Check typography: are font sizes, weights, and spacing visually correct?
    • Check responsive adaptation: does the layout properly reorganize (not just shrink)?
    • Note rendering issues that code review alone would miss (font loading failures, broken images, layout overflow, z-index problems, incorrect border-radius, color mismatches)
    Reference specific screenshots by filename in the review output so findings are traceable.
  4. Run the review checklist below. For each category, note what passes and what needs refinement. Be specific. Reference exact components, files, line numbers, and screenshot filenames.
  5. Produce a prioritized refinement list. Group issues by severity:
    • Must fix: Broken functionality, accessibility failures, major deviations from the brief.
    • Should fix: Inconsistencies, missing states, responsive issues.
    • Could improve: Polish, animation refinement, typography fine-tuning.
  6. Save the review as
    DESIGN_REVIEW.md
    inside the feature's
    .design/<feature-slug>/
    folder (next to
    DESIGN_BRIEF.md
    ). If no
    .design/
    folder exists, save to the project root. Include a "Screenshots Captured" section listing all screenshots taken with their paths. Present the review directly as well if the user prefers.
  1. 阅读设计说明:在
    .design/<功能标识>/DESIGN_BRIEF.md
    路径下查找当前活跃功能的设计说明。如果
    .design/
    目录下存在多个功能文件夹,询问用户需要评审哪个功能。如果不存在
    .design/
    文件夹,回退到项目根目录的
    DESIGN_BRIEF.md
    。如果两个文件都不存在,询问用户预期的设计方向是什么。
  2. 排查已构建的代码:检查所有新建或修改的组件、页面和样式文件,重点排查:
    • 所有新建/修改的组件,以及它们和现有组件的关联关系
    • Token/变量使用情况:组件是使用共享token还是硬编码数值?
    • 是否存在需要合并的重复组件
    • 文件命名和组织:新文件是否遵循项目规范?
    • 明确实际构建的内容,而非计划中的内容。
  3. 采集运行中应用的截图
    本步骤是强制要求,不得跳过,也不要仅依赖用户提供的截图。

    截图工具优先级

    按顺序尝试以下选项,使用第一个可用的工具:
    1. Playwright MCP(首选):检查
      plugin-playwright-playwright
      MCP服务是否可用,如果可用就使用它——它支持精准控制视口尺寸、整页采集和文件命名。
    2. Cursor IDE浏览器(次选):如果Playwright MCP不可用,改用
      cursor-ide-browser
      MCP服务的
      browser_take_screenshot
      工具,它具备相同的核心能力。
    3. 询问用户(最后方案):如果MCP服务和内置浏览器都不可用,你必须要求用户手动提供截图,明确说明需要的内容:
      • 「我无法访问浏览器工具,要完成可视化评审,我需要运行中应用的截图,请提供:」
      • 桌面端宽度(1280px)的整页截图
      • 平板端宽度(768px)的整页截图
      • 移动端宽度(375px)的整页截图
      • 深色模式版本(如果适用)
      • 任何需要评审的特定组件或交互状态
      • 要求用户直接在聊天中粘贴/附加图片,或者自行保存到
        screenshots/
        文件夹下。
      • 不要跳过可视化评审,等待用户提供截图后再继续后续检查清单流程。

    截图保存位置

    所有截图必须保存到对应功能
    .design/
    目录下的
    screenshots/
    子文件夹中——即
    DESIGN_BRIEF.md
    和其他设计流程文件所在的文件夹。
    路径规则:
    .design/<功能标识>/screenshots/
    如果设计说明存放在
    .design/onboarding-flow/DESIGN_BRIEF.md
    ,则截图存放在
    .design/onboarding-flow/screenshots/
    路径下,文件夹不存在则新建。
    如果不存在
    .design/
    文件夹(旧项目或独立评审),则回退到项目根目录的
    screenshots/
    文件夹。
    使用描述性文件名,说明采集的内容:
    .design/
    └── onboarding-flow/
        ├── DESIGN_BRIEF.md
        ├── DESIGN_REVIEW.md
        └── screenshots/
            ├── review-homepage-desktop-1280.png
            ├── review-homepage-tablet-768.png
            ├── review-homepage-mobile-375.png
            ├── review-homepage-dark-mode-desktop-1280.png
            └── review-card-component-hover.png

    截图采集规范

    a. 导航到应用:如果无法从项目中明确获取访问URL(比如
    http://localhost:3000
    ),询问用户获取。使用
    browser_navigate
    打开对应页面。
    b. 采集响应式断点:每个核心页面/视图至少采集以下三个视口的截图:
    断点类型宽度 × 高度文件名后缀
    移动端375 × 812
    -mobile-375
    平板端768 × 1024
    -tablet-768
    桌面端1280 × 800
    -desktop-1280
    每次截图前使用
    browser_resize
    设置视口尺寸,使用
    browser_take_screenshot
    并设置
    fullPage: true
    采集完整可滚动页面,通过
    filename
    参数指定保存到
    screenshots/
    文件夹的路径。
    Playwright MCP示例执行流程(假设功能标识为
    onboarding-flow
    ):
    1. browser_navigate → { url: "http://localhost:3000" }
    2. browser_resize   → { width: 1280, height: 800 }
    3. browser_take_screenshot → { type: "png", filename: ".design/onboarding-flow/screenshots/review-homepage-desktop-1280.png", fullPage: true }
    4. browser_resize   → { width: 768, height: 1024 }
    5. browser_take_screenshot → { type: "png", filename: ".design/onboarding-flow/screenshots/review-homepage-tablet-768.png", fullPage: true }
    6. browser_resize   → { width: 375, height: 812 }
    7. browser_take_screenshot → { type: "png", filename: ".design/onboarding-flow/screenshots/review-homepage-mobile-375.png", fullPage: true }
    c. 采集交互状态(如果相关)
    • 按钮、卡片、链接的悬停状态
    • 表单字段的聚焦状态
    • 下拉框、弹窗、菜单的展开状态
    • 表单的错误/成功状态
    • 加载和空状态
    d. 采集深色模式(如果项目支持):切换深色模式,重复响应式断点采集,文件名中添加
    -dark-mode
    标识。
    e. 采集特定组件:如果评审聚焦于某个特定组件,使用
    element
    ref
    参数仅对该元素截图。

    分析所有截图

    采集完成后,对照设计说明对每张截图做可视化分析,针对每张截图:
    • 对照设计说明的美学方向做对比
    • 检查视觉层次:最重要的元素是不是最突出的?
    • 检查间距一致性:边距和内边距是否均匀、符合设计逻辑?
    • 检查颜色:配色是否符合设计说明的方向?
    • 检查排版:字体大小、字重和间距视觉上是否正确?
    • 检查响应式适配:布局是否合理重排(而不只是缩小)?
    • 记录仅靠代码评审会遗漏的渲染问题(字体加载失败、图片损坏、布局溢出、z-index问题、border-radius错误、颜色不匹配)
    在评审输出中通过文件名引用具体截图,确保问题可溯源。
  4. 执行下方的评审检查清单:针对每个分类,记录通过项和需要优化的项,描述要具体,引用明确的组件、文件、行号和截图文件名。
  5. 输出优先级优化列表:按严重程度对问题分组:
    • 必须修复:功能损坏、可访问性故障、严重偏离设计说明的问题。
    • 应该修复:一致性问题、缺失状态、响应式问题。
    • 可以优化:细节打磨、动画优化、排版微调。
  6. 将评审结果保存为功能
    .design/<功能标识>/
    文件夹下的
    DESIGN_REVIEW.md
    文件(和
    DESIGN_BRIEF.md
    同目录)。如果不存在
    .design/
    文件夹,保存到项目根目录。添加「已采集截图」章节,列出所有截图的路径。如果用户需要,也可以直接展示评审内容。

Review Checklist

评审检查清单

Visual Hierarchy

视觉层次

  • Is the most important content the most visually prominent on each page/view?
  • Does the type scale create clear levels of importance (heading, subheading, body, caption)?
  • Do interactive elements (buttons, links, inputs) have enough visual weight to be found without hunting?
  • Is there a clear reading order? Can you trace where the eye goes first, second, third?
  • 每个页面/视图中最重要的内容是不是视觉上最突出的?
  • 字体层级是否体现了清晰的重要度区分(标题、副标题、正文、说明文字)?
  • 交互元素(按钮、链接、输入框)是否有足够的视觉权重,不需要用户费力查找?
  • 是否有清晰的阅读顺序?你能不能追踪到视线第一、第二、第三落点的顺序?

Consistency

一致性

  • Are spacing values consistent? Check padding and margins against the established scale (4px/8px base or whatever the project uses).
  • Are colors used consistently? Check that the same semantic meaning always maps to the same color (primary actions, errors, success states, disabled states).
  • Are border radii, shadow values, and font sizes reused from a shared set, or are there one-off values?
  • Do similar components look and behave similarly? (e.g., all cards, all form fields, all buttons within a category.)
  • 间距值是否一致?对照既定的间距规范(4px/8px基础或项目使用的其他规范)检查内边距和外边距。
  • 颜色使用是否一致?检查相同的语义含义是否始终对应相同的颜色(主操作、错误、成功状态、禁用状态)。
  • 圆角、阴影值和字体大小是否复用共享配置,还是存在一次性的自定义值?
  • 同类组件的外观和行为是否一致?(比如所有卡片、所有表单字段、同一分类下的所有按钮。)

Aesthetic Fidelity

美学保真度

  • Does the implementation match the named philosophy from the brief?
  • Would someone looking at this immediately recognize the intended aesthetic direction?
  • Are there elements that break the aesthetic (a generic component in an otherwise distinctive interface, a conflicting font, an out-of-place color)?
  • Does the level of detail match the philosophy? (Minimalist designs should not have unnecessary decoration. Maximalist designs should not have empty, unfinished areas.)
  • 实现效果是否匹配设计说明中指定的设计理念?
  • 看到这个实现的人能不能立刻识别出预期的美学方向?
  • 是否存在破坏整体美学的元素(在风格独特的界面中出现通用组件、冲突的字体、突兀的颜色)?
  • 细节程度是否匹配设计理念?(极简设计不应该有多余的装饰,繁复设计不应该有空旷、未完成的区域。)

Component Quality

组件质量

  • Do existing components from the codebase appear correctly, or were they reimplemented?
  • Are new components following the same API patterns (props, naming, file organization) as existing ones?
  • Are there duplicate components that should be consolidated?
  • 代码库中的现有组件是否正常显示,还是被重新实现了?
  • 新组件是否遵循和现有组件一致的API模式(props、命名、文件组织)?
  • 是否存在需要合并的重复组件?

States and Interactions

状态和交互

  • Do interactive elements have all necessary states: default, hover, focus, active, disabled?
  • Do form fields have states for: empty, filled, error, success, disabled?
  • Are loading states handled? Empty states?
  • Do transitions and animations match the philosophy's motion guidelines?
  • Is there visual feedback for every user action?
  • 交互元素是否具备所有必要的状态:默认、悬停、聚焦、激活、禁用?
  • 表单字段是否具备以下状态:空、已填写、错误、成功、禁用?
  • 是否处理了加载状态?空状态?
  • 过渡和动画是否匹配设计理念的动效规范?
  • 每个用户操作是否都有视觉反馈?

Responsive Behavior

响应式表现

  • Does the layout work at mobile (375px), tablet (768px), and desktop (1280px+)?
  • Do components adapt appropriately? (Not just shrink, but reorganize when needed.)
  • Is touch target size adequate on mobile (minimum 44x44px)?
  • Does text remain readable at all breakpoints? No text too small, no lines too wide (max 65-75 characters).
  • 布局在移动端(375px)、平板端(768px)和桌面端(1280px+)下是否正常工作?
  • 组件是否适配合理?(不只是缩小,必要时会重排。)
  • 移动端的触控目标尺寸是否足够(最小44x44px)?
  • 所有断点下的文字是否保持可读性?没有过小的文字,也没有过宽的行(最多65-75个字符)。

Accessibility

可访问性

  • Color contrast: Do text/background combinations meet WCAG AA (4.5:1 for body text, 3:1 for large text)?
  • Keyboard navigation: Can every interactive element be reached and activated with keyboard alone?
  • Focus indicators: Are focus rings visible and styled consistently?
  • Semantic HTML: Are headings in order? Are landmarks used (main, nav, header, footer)? Are form labels associated?
  • Screen reader: Do images have alt text? Do icons have labels? Are decorative elements hidden from assistive technology?
  • Motion: Is there a reduced-motion media query for users who need it?
  • 颜色对比度:文本/背景组合是否满足WCAG AA标准(正文4.5:1,大文本3:1)?
  • 键盘导航:所有交互元素是否都可以仅通过键盘访问和触发?
  • 聚焦指示器:聚焦环是否可见且样式一致?
  • 语义化HTML:标题层级是否有序?是否使用了地标元素(main、nav、header、footer)?表单标签是否关联正确?
  • 屏幕阅读器适配:图片是否有alt文本?图标是否有标签?装饰元素是否对辅助技术隐藏?
  • 动效:是否为有需要的用户提供了减少动效的媒体查询支持?

Typography

排版

  • Is the font actually loading? (Check for FOIT/FOUT flash.)
  • Are line lengths comfortable for reading (45-75 characters on body text)?
  • Is line height appropriate (1.4-1.6 for body, tighter for headings)?
  • Is the type scale intentional, or are there arbitrary sizes?
  • 字体是否正常加载?(检查FOIT/FOUT闪烁问题。)
  • 行宽是否适合阅读(正文45-75个字符)?
  • 行高是否合适(正文1.4-1.6,标题更紧凑)?
  • 字体层级是否经过规划,还是存在随意设置的大小?

Dark Mode

深色模式

  • If the project has dark mode tokens, are they applied correctly?
  • Are all color values using CSS variables (not hardcoded hex values that won't switch)?
  • Does the dark palette feel intentional for the chosen philosophy, or is it a simple inversion?
  • Are shadows adjusted for dark mode (darker, more transparent)?
  • Do accent colors maintain sufficient contrast against dark backgrounds?
  • Is there a working toggle mechanism or
    prefers-color-scheme
    support?
  • 如果项目有深色模式token,是否正确应用?
  • 所有颜色值是否使用CSS变量(而非不会切换的硬编码十六进制值)?
  • 深色配色是否符合选定设计理念的设计逻辑,还是只是简单的颜色反转?
  • 阴影是否针对深色模式做了调整(更深、更透明)?
  • 强调色在深色背景下是否保持足够的对比度?
  • 是否有可用的切换机制,或是支持
    prefers-color-scheme

Mobile-First

移动端优先

  • Was the layout built mobile-first (using
    min-width
    media queries, not
    max-width
    )?
  • Does the mobile layout work at 375px without horizontal scrolling?
  • Is navigation adapted for mobile (not just a desktop nav that overflows)?
  • Are touch targets at least 44x44px?
  • Is body text at least 16px on mobile?
  • 布局是否按移动端优先构建(使用
    min-width
    媒体查询,而非
    max-width
    )?
  • 移动端布局在375px宽度下是否正常工作,没有横向滚动?
  • 导航是否适配移动端(不只是会溢出的桌面端导航)?
  • 触控目标是否至少44x44px?
  • 移动端正文大小是否至少16px?

Output Format

输出格式

markdown
undefined
markdown
undefined

Design Review: [Feature/Page Name]

设计评审:[功能/页面名称]

Reviewed against: DESIGN_BRIEF.md Philosophy: [named philosophy] Date: [date]
评审依据:DESIGN_BRIEF.md 设计理念:[指定的设计理念] 日期:[日期]

Screenshots Captured

已采集截图

ScreenshotBreakpointDescription
screenshots/review-[page]-desktop-1280.png
Desktop (1280×800)[what it shows]
screenshots/review-[page]-tablet-768.png
Tablet (768×1024)[what it shows]
screenshots/review-[page]-mobile-375.png
Mobile (375×812)[what it shows]
All screenshots are in
.design/<feature-slug>/screenshots/
.
截图路径断点类型描述
screenshots/review-[页面]-desktop-1280.png
桌面端 (1280×800)[截图内容说明]
screenshots/review-[页面]-tablet-768.png
平板端 (768×1024)[截图内容说明]
screenshots/review-[页面]-mobile-375.png
移动端 (375×812)[截图内容说明]
所有截图存放在
.design/<功能标识>/screenshots/
目录下。

Summary

总结

[2-3 sentences on overall quality and the biggest finding.]
[用2-3句话说明整体质量和最突出的问题。]

Must Fix

必须修复

  1. [Issue]: [Specific description with file/component reference]. See [
    screenshots/[relevant-screenshot].png
    ]. Fix: [concrete suggestion].
  1. [问题]:[具体描述,附带文件/组件引用]。参见 [
    screenshots/[相关截图].png
    ]。修复方案:[具体建议]。

Should Fix

应该修复

  1. [Issue]: [Description]. See [
    screenshots/[relevant-screenshot].png
    ]. Fix: [suggestion].
  1. [问题]:[描述]。参见 [
    screenshots/[相关截图].png
    ]。修复方案:[建议]。

Could Improve

可以优化

  1. [Issue]: [Description]. Suggestion: [idea].
  1. [问题]:[描述]。建议:[优化思路]。

What Works Well

亮点

[Note the strongest aspects of the implementation. This is not padding. Designers need to know what to keep doing.]
undefined
[记录实现中最优秀的部分,这部分不是凑数,设计师需要知道哪些内容应该保持。]
undefined