Web Design Review Results
Summary
| Item | Value |
|---|---|
| Target URL | file://…/.claude/skills/web-design-reviewer/sample/index.html |
| Framework | None (static HTML) |
| Styling | Inline <style> block in index.html |
| Tested Viewports | Desktop 1280×800, Mobile 375×800 |
| Issues Detected | 8 |
| Issues Fixed | 0 (report only, as requested) |
Screenshots are in .claude/skills/web-design-reviewer/shots/desktop.png and mobile.png.
Detected Issues
[P1] Cards overflow the viewport on mobile
- Page:
/ - Element:
.cardsand.card(index.html:11-12) - Issue: Each card is a fixed 320px with
flex:nonein a non-wrapping row. At 375px only the first card is visible and it is clipped on the right. The other two cards are off-screen and the page scrolls sideways. The hero heading and paragraph are also cut off at the right edge, which suggests the page is wider than the viewport. - Fix:
Alternatively, keep flex and use.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;padding:32px 16px} .card{border:1px solid #ddd;padding:16px} /* drop width:320px and flex:none */flex-wrap:wrapwith.card{flex:1 1 260px}.
[P1] Hero paragraph has insufficient contrast
- Element:
.hero p(index.html:9) - Issue:
#c9b9a6on#f3e9dcis about 1.6:1, against the 4.5:1 AA requirement. The text is nearly unreadable. - Fix:
color:#5a4636, which is about 7:1 on the hero background.
[P1] Price badges are positioned fragilely and overlap
- Element:
.price(index.html:15) - Issue: The badge uses
position:absolutewith hard-codedmargin-top:-40pxandmargin-left:200px. It has no positioned ancestor, so it floats at an arbitrary spot. It sits beside the title instead of at a deliberate corner. On narrower cards it would collide with the title or fall outside the card. - Fix:
Or put the title and price in a flex row with.card{position:relative} .price{position:absolute;top:24px;right:24px;margin:0;...}justify-content:space-between.
[P1] "Order now" CTA is too small
- Element:
.cta(index.html:10) - Issue: The button has 11px text and 4px/8px padding, so it is about 20px tall. That is far below the 44×44px touch target, and it is the page's primary action. White on
#8a5a2bhas acceptable contrast, at about 5.5:1. - Fix:
padding:12px 24px;font-size:16px;min-height:44px;border-radius:4px.
[P2] Missing image alt text and broken images
- Element:
.card img(index.html:21-23) - Issue: The images have no
altattribute.x.pngalso fails to load, so a broken-image icon shows on a grey block. - Fix: Add descriptive alt text, for example
alt="House Blend coffee bag", and pointsrcat real assets. Addobject-fit:coverto.card img.
[P2] No focus or hover states
- Element:
header a,.cta - Issue: No
:focus-visibleor:hoverstyles are defined. Keyboard users get only the browser default, which is hard to see on the dark header. The nav links also have no hover feedback. - Fix:
a:focus-visible{outline:3px solid #f5a623;outline-offset:2px} header a:hover,.cta:hover{text-decoration:underline}
[P2] Card headings use a different font
- Element:
.card h3(index.html:14) - Issue: The headings are Arial sans-serif, while the rest of the page is Georgia serif. The mix looks accidental.
- Fix: Remove the
font-familyoverride, or apply one deliberate heading font to every heading, includingh1.
[P3] Smaller polish items
- Nav on mobile: The three links fit at 375px, but they are about 20px tall and sit close together. Add
padding:12px 0to the links. Considerflex-wrap:wrap, because more items will break the header. - Footer text: At 13px it is small. Use at least 14px.
- Layout width: No
max-widthor centering. At 1280px the cards leave empty space on the right, and wider screens will look unbalanced. Wrap the content in a container withmax-width:1100px;margin:auto. - Hero heading: Use
font-size:clamp(28px,6vw,44px)so it scales on small screens. - Document title:
<title>Brew & Co</title>has an unescaped&. Use&.
Unfixed Issues
All of the above are unfixed because this environment is read-only. The fixes are listed per issue.
Recommendations
- Apply the P1 fixes first, then re-screenshot at 375, 768 and 1280, and add 1920 to check the max-width behavior.
- Move the colors into CSS custom properties (for example
--brown,--cream) so contrast is easy to keep consistent. - Add a tablet check at 768px. The card grid fix should give two columns there, but I haven't verified it.
- My first screenshot call was blocked by the sandbox's command check. Re-running the two screenshot commands separately worked.
试用方式:这是“部分试用”。试用环境没有浏览器工具,所以我提供了一个只会用无头 Chrome 截图的脚本,模型用它截图并用 Read 看图;我做了一个有 8 处故意缺陷的静态页面。试用环境不能改文件,所以只做了检查和报告,没有做修改源码并复查。我复算了对比度(1.6:1 和修复后约 7:1)与报告一致。
它做什麼
透過瀏覽器自動化查看本機、預備環境或正式環境(唯讀)上運行的網站,找出視覺問題並在你的原始碼中修正。它會在四種視窗寬度(375、768、1280、1920 px)下檢查元素溢出與重疊、對齊與間距、文字被截斷、行動端版面、觸控目標、對比度、焦點狀態、圖片替代文字,以及字體與顏色的一致性。能辨識你的框架與樣式方案(純 CSS、SCSS、CSS Modules、Tailwind、styled-components 等),並為每種方案提供修正指南。
運作方式
- 先確認網址,並辨識專案與樣式方案。
- 擷取畫面並取得 DOM,把問題依 P1 到 P3 分級,再追溯到原始檔。
- 做最小的修正,重新整理後比對修正前後,必要時重複;同一個問題修了三次仍不行就來問你。
- 輸出報告:已發現、已修正與未修正的問題。
適合什麼場景
清理版面與響應式 bug,發布前做一輪視覺檢查。
中風險:它會修改你專案中既有的原始碼(樣式與元件),請先提交或備份,並檢查變更。它自己的規則要求只做最小改動、遵循你的程式碼風格、大改動前先確認、正式環境唯讀。它需要瀏覽器自動化(Skill 建議 Playwright MCP,以 `npx -y @playwright/mcp@latest` 啟動,會下載並執行一個套件),並且會造訪你提供的任何網址。部分試用:只試了「檢查並出報告」這一半。我做了一個有 8 處刻意缺陷的頁面,以無頭 Chrome 截圖代替 Playwright,模型在桌面與手機寬度下全部找出(卡片溢出、對比度 1.6:1、按鈕太小、缺 alt、字型不一致、定位重疊等),給的修復建議與對比度數值經我重算是對的。沒有試「修改原始碼並複查」這一半,也沒有使用 Playwright MCP。