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)与报告一致。
できること
ブラウザ自動化で、ローカル、ステージング、本番(読み取り専用)で動いている Web サイトを見て、見た目の問題を見つけ、ソースコードで修正します。4 つの画面幅(375、768、1280、1920 px)で、要素のはみ出しと重なり、整列と余白、文字の切れ、モバイルのレイアウト、タッチターゲット、コントラスト、フォーカス表示、代替テキスト、フォントと色の統一性を確認します。フレームワークとスタイル方式(素の CSS、SCSS、CSS Modules、Tailwind、styled-components など)を判別し、それぞれの修正ガイドがあります。
動き方
- URL を確認し、プロジェクトとスタイル方式を判別します。
- スクリーンショットと DOM を取得し、問題を P1〜P3 に分類してソースファイルまで特定します。
- 最小限の修正を行い、再読み込みして前後を比較し、必要なら繰り返します。同じ問題が 3 回直らなければ相談します。
- 検出、修正済み、未修正の問題をまとめたレポートを作ります。
向いている場面
レイアウトやレスポンシブの不具合の整理、リリース前の見た目の確認。
中リスク:プロジェクト内の既存ソースコード(スタイルやコンポーネント)を編集するため、先にコミットまたはバックアップを取り、差分を確認してください。Skill 自身のルールでは、最小限の変更に限る、コードスタイルに従う、大きな変更の前に確認する、本番は読み取り専用とされています。ブラウザ自動化が必要で(Skill は Playwright MCP を推奨し、`npx -y @playwright/mcp@latest` で起動します。パッケージをダウンロードして実行します)、指定した任意の URL を開きます。一部のみ試用:「点検してレポートを出す」半分だけを試しました。意図的に 8 つの欠陥を入れたページを作り、Playwright の代わりにヘッドレス Chrome のスクリーンショットを使ったところ、モデルはデスクトップとモバイルの幅ですべて見つけました(カードのはみ出し、コントラスト 1.6:1、小さすぎるボタン、alt なし、フォントの不一致、重なりなど)。提案された修正とコントラストの数値は、私の再計算で正しいことを確認しました。「ソースを修正して再確認」の半分は試しておらず、Playwright MCP も使っていません。