Mobile First Design Rules Skill
-
Always design and implement for mobile screens first, then scale up to larger screens.
-
Use Tailwind's responsive prefixes (sm:, md:, lg:, xl:) to adjust layouts for different screen sizes.
-
Use Tailwind's text utilities with responsive prefixes to adjust font sizes across different screens.
-
Consider using a fluid typography system for seamless scaling.
Iron Laws
-
ALWAYS write base styles for mobile first (no Tailwind prefix = mobile) — adding mobile overrides after desktop classes defeats the responsive cascade and creates maintenance debt.
-
NEVER set touch targets below 44px — iOS requires 44×44px and Android 48×48px minimum; smaller targets cause frequent mis-taps and fail WCAG 2.5.5.
-
ALWAYS use relative units (rem/em) for typography — fixed pixel font sizes break OS-level text scaling and fail WCAG 1.4.4 (Resize Text).
-
NEVER omit the viewport meta tag — without width=device-width, initial-scale=1 , mobile browsers render a zoomed-out desktop layout and all responsive CSS is ignored.
-
ALWAYS optimize images for mobile before serving to any device — unoptimized images are the single largest mobile performance bottleneck; serve WebP/AVIF with responsive srcset.
Anti-Patterns
Anti-Pattern Why It Fails Correct Approach
Desktop-first CSS with mobile overrides Mobile overrides fight specificity; cascade order breaks; maintenance burden grows Write base styles for mobile, then use sm: md: lg: prefixes to scale up
Touch targets smaller than 44px iOS/Android guidelines violated; WCAG 2.5.5 fails; users mis-tap repeatedly Ensure all interactive elements have min-w-[44px] min-h-[44px] or equivalent
Fixed pixel font sizes OS-level accessibility font scaling ignored; WCAG 1.4.4 violation Use text-base (1rem) as mobile base; scale with responsive Tailwind text utilities
Missing viewport meta tag Browser renders zoomed-out desktop layout; responsive CSS never activates Always include <meta name="viewport" content="width=device-width, initial-scale=1">
Unoptimized images served to mobile Largest mobile performance bottleneck; LCP degrades; battery and data consumed Serve WebP/AVIF with responsive srcset; lazy-load below-the-fold images
Memory Protocol (MANDATORY)
Before starting:
cat .claude/context/memory/learnings.md
After completing: Record any new patterns or exceptions discovered.
ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.