Phase 1: Session log archived (1096→91 lines), D031 token access convention
Phase 2: ESLint v9 + Prettier + jsx-a11y, initial config and lint fixes
Phase 3: 7 new skills (polish, harden, normalize, clarify, typeset, quieter, adapt)
+ Vercel reference docs, updated audit/review-component refs
Phase 4: Husky + lint-staged pre-commit hooks, preflight updated to 8 checks
Phase 5: Vitest + Testing Library + /write-tests skill
- Badge.tsx colour maps unified to CSS variables (D031)
- 5 empty interface→type alias fixes (Switch, Radio, Divider, IconButton, Link)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6.9 KiB
name, description, user-invocable, argument-hint
| name | description | user-invocable | argument-hint |
|---|---|---|---|
| adapt | Responsive adaptation review — checks touch targets, overflow, text scaling, content reflow, and mobile spacing across breakpoints. | true | [component or area to check] |
Run a responsive design review on a component or area, then fix issues found. This is assessment AND fix — diagnose breakpoint problems, touch target failures, and mobile usability issues, then apply corrections.
Target: $ARGUMENTS
Preparation
- Read
docs/design-system.mdfor FA responsive conventions and breakpoints - Read the target component/area source files and stories
- Reference
docs/reference/impeccable/responsive-design.mdfor detailed responsive guidelines
FA context reminder: Many Funeral Arranger users are older adults, potentially on older or budget devices, and may be using the platform on mobile during a difficult time. Touch interactions must be generous. Layouts must not break on small screens. Nothing should require precise fine-motor control or hover-only interactions. The platform must work on a 5-year-old Android phone on a slow connection just as well as on a modern desktop.
Diagnostic Checks
Work through each check systematically. For each issue found, note the problem, then fix it.
1. Touch Targets
- All interactive elements (buttons, links, form controls, toggles) must have a minimum touch target of 44x44px
- Check
padding,min-height, andmin-widthon clickable elements — the visual size can be smaller if the tap area is padded out - Text links in body copy need adequate line-height or padding to create 44px+ tap areas
- Adjacent touch targets must have sufficient spacing (at least 8px gap) to prevent mis-taps
- Icon-only buttons are especially prone to being too small — verify dimensions include padding
- This is critical for FA's audience — elderly users and users under emotional stress have reduced fine-motor precision
2. Horizontal Overflow
- No horizontal scrolling on viewports as narrow as 320px (iPhone SE, older Android devices)
- Check for fixed widths (
width: 400px,min-width: 500px) that exceed narrow viewports - Check for content that breaks out of containers (long words, URLs, email addresses without
word-breakoroverflow-wrap) - Tables must adapt on mobile — use responsive patterns (card layout, horizontal scroll with visual indicator, or progressive disclosure)
- Images must have
max-width: 100%or equivalent constraint - Check for
flex-shrink: 0orflex: noneon elements that should be allowed to shrink
3. Text Readability at Mobile Sizes
- Body text minimum 14px on mobile (16px preferred)
- Use
remunits for font sizes so text respects browser zoom/accessibility settings - Never use
user-scalable=noin viewport meta — this breaks accessibility - Layouts must not break at 200% browser zoom (WCAG requirement)
- Small/caption text should remain legible — minimum 12px
- Check that heading sizes scale down appropriately on mobile (a 48px desktop heading should not stay 48px on a 320px screen)
4. Content Reflow
- Content should reflow logically between breakpoints, not just shrink
- Multi-column layouts should collapse to single column on mobile
- Side-by-side arrangements (image + text, icon + label) should stack vertically when space is constrained
- Check
flex-directionandgrid-template-columnsfor responsive adjustments - Navigation should adapt: full horizontal on desktop, hamburger/drawer on mobile
- Cards in a grid should reduce column count at narrow widths, not just shrink cards
5. Hover-Only Interactions
- No functionality should require hover — touch users cannot hover
- Tooltips that appear only on hover need a touch alternative (tap to show, or visible by default on mobile)
- Hover-revealed actions (edit buttons, delete icons) must have an alternative on touch devices
- Use
@media (hover: hover)for hover enhancements, with fallback for@media (hover: none) - Dropdown menus triggered by hover must also work on tap
- Check for CSS
:hoverstyles that hide/show content without a touch-friendly fallback
6. Spacing Adjustments Per Breakpoint
- Padding should be tighter on mobile (16px) and more generous on desktop (24-48px)
- Section spacing should compress on mobile to keep content scannable without excessive scrolling
- Card padding should adapt — desktop cards can be spacious, mobile cards should be compact but not cramped
- Check that spacing uses theme.spacing() or responsive values, not fixed values that work only at one breakpoint
- Container max-widths should be set appropriately for each breakpoint
7. Image and Asset Sizing
- Images should have responsive sizing (
max-width: 100%,height: auto) - Consider
loading="lazy"for images below the fold (important for FA users on slow connections) - Decorative images can be hidden on mobile if they add no informational value
- Avatar/icon sizes should be appropriate for mobile — not too large (wasting space) or too small (illegible)
- Check for background images that might not display well on small screens
Fix Process
For each issue found:
- Identify the file, line, and current value
- Test mentally at 320px, 768px, and 1280px — does the fix work across all three?
- Apply the fix — use responsive utilities (MUI breakpoints, media queries, responsive props)
- Verify the fix does not introduce new issues at other breakpoints
- Prefer CSS/theme solutions over JavaScript breakpoint detection where possible
Report Format
After fixing, present a summary:
Responsive Health Summary
| Check | Status | Issues Found | Issues Fixed |
|---|---|---|---|
| Touch Targets (44px min) | pass/warn/fail | N | N |
| Horizontal Overflow (320px) | pass/warn/fail | N | N |
| Text Readability (mobile) | pass/warn/fail | N | N |
| Content Reflow | pass/warn/fail | N | N |
| Hover-Only Interactions | pass/warn/fail | N | N |
| Breakpoint Spacing | pass/warn/fail | N | N |
| Image/Asset Sizing | pass/warn/fail | N | N |
Breakpoint Walkthrough
Brief assessment of the component at each key breakpoint:
- 320px (small phone): Does it fit? Is it usable?
- 768px (tablet): Does the layout adapt sensibly?
- 1280px (desktop): Does it use the available space well?
Changes Made
For each fix applied:
- What changed: Brief description
- File: Path and relevant line(s)
- Before/After: The old and new values
- Breakpoint affected: Which viewport size(s) this fix targets
Remaining Concerns
Any issues that need design input, Storybook viewport testing, or are outside the scope of a responsive pass.
NEVER: Use fixed pixel widths for containers. Add user-scalable=no to viewport meta. Rely on hover for essential functionality. Assume all users have modern large-screen devices. Ignore the 320px viewport — real people use iPhone SE and budget Android phones. Let touch targets fall below 44px.