| name | test-responsive-design |
| description | Make UIs responsive across all devices and verify responsiveness using Playwright. Includes scrollbar testing, breakpoint verification, and layout validation. Use when implementing new features, fixing layout issues, or ensuring mobile compatibility. |
Responsive Design & Verification Skill
Browser tooling — works for both toolsets. Use whichever is configured:
Playwright MCP (mcp_playwright_browser_*) for Claude, or the Copilot browser
tools (open_browser_page, screenshot_page, read_page) for VS Code Copilot.
Where this skill says "Playwright", use the equivalent tool from whichever set is available.
Purpose
Ensure all UI features are fully responsive and work correctly across all device sizes, from mobile to desktop.
Standard Breakpoints
| Breakpoint | Min Width | Device Type |
|---|
| default | 0px | Mobile |
sm: | 640px | Large mobile |
md: | 768px | Tablet |
lg: | 1024px | Laptop |
xl: | 1280px | Desktop |
2xl: | 1536px | Large Desktop |
Testing Sizes
const testSizes = [
{ width: 375, height: 667, name: 'Mobile (iPhone SE)' },
{ width: 768, height: 1024, name: 'Tablet (iPad)' },
{ width: 1280, height: 720, name: 'Desktop (HD)' },
{ width: 1920, height: 1080, name: 'Desktop (Full HD)' },
];
Responsive Design Patterns
Navigation
- Mobile (< 768px): Hamburger menu, collapsed drawer
- Desktop (≥ 768px): Full horizontal navigation bar
Data Tables
- Mobile: Stack rows as cards or use horizontal scroll
- Desktop: Traditional table layout with all columns
Forms
- Mobile: Single column, full-width inputs, large touch targets (≥ 44x44px)
- Desktop: Grid layouts, inline labels
Layout
- Use
container mx-auto px-4 sm:px-6 lg:px-8
- Responsive grids:
grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3
Typography
- Scale font sizes:
text-2xl md:text-3xl lg:text-4xl
Scrollbar & Overflow Testing
- Lists/Tables: Minimum 15-20 items to trigger vertical scroll
- Horizontal: Test with wide tables (8+ columns)
- Always check for unintentional horizontal page scroll
Playwright Verification Workflow
1. Navigate to Feature
mcp_playwright_navigate → { url: 'http://localhost:5173/feature' }
2. Test Each Breakpoint
const breakpoints = [
{ width: 375, height: 667, name: 'Mobile' },
{ width: 768, height: 1024, name: 'Tablet' },
{ width: 1280, height: 720, name: 'Desktop' },
];
for (const bp of breakpoints) {
mcp_playwright_resize → { width: bp.width, height: bp.height }
mcp_playwright_screenshot → { name: `feature-${bp.name}` }
}
3. Check for Overflow
() => {
const bodyWidth = document.body.scrollWidth;
const windowWidth = window.innerWidth;
return {
hasOverflow: bodyWidth > windowWidth,
overflowElements: Array.from(document.querySelectorAll('*'))
.filter(el => el.scrollWidth > windowWidth)
.map(el => ({ tag: el.tagName, class: el.className }))
};
}
Responsive Design Checklist
Layout
Navigation
Tables/Lists
Typography
Common Mistakes
- Desktop-first thinking — start mobile-first
- Fixed widths — use
w-full, max-w-*
- Insufficient test data — always provide 15-20+ items
- Tiny touch targets — 44x44px minimum on mobile