Skills

Mobile Principles

Mobile-specific UX principles - touch targets, hover-less doctrine, thumb zones, safe...

Install

npx skills add AThevon/genjutsu --skill mobile-principles -g -a claude-code -y
Repository
AThevon/genjutsu721
Category
Design
Updated
3d ago
License
See repository
Context cost
Mediumabout 2,829 tokens
Runs scripts
No, instructions only

What it does

Mobile-specific UX principles - touch targets, hover-less doctrine, thumb zones, safe areas, gestures, mobile perf budgets. Cross-platform (web mobile, iOS, Android).

Version-sensitive. Every API name, SDK gate and browser-support claim below was verified on 2026-09-08 against primary sources. What against, and when, is in _jutsu/VERSIONS.md. If that date is old, re-verify before acting on a version number.

Mobile Principles

Touch-first UX context. Loaded when mobile is detected (web mobile, iOS, Android). Concise rules here. Deep-dive in references/.


Touch Targets

PlatformRecommended (design to this)Hard floorSpacingSpec
Apple iOS / iPadOS44x44 pt28x28 pt~12 pt padding around bezeled controls, ~24 pt around unbezeled onesApple HIG, Accessibility > Mobility
Apple watchOS44x44 pt28x28 ptas aboveApple HIG
Android48x48 dp48x48 dp8 dp between targetsMaterial Design 3
Web mobile44x44 CSS px24x24 CSS px24 px un-overlapped spacing satisfies the AA exceptionWCAG 2.5.5 Target Size (Enhanced), AAA = 44x44; WCAG 2.5.8 Target Size (Minimum), AA = 24x24

Rule of thumb: any tap target smaller than the platform minimum is a usability bug, period. The hit area can extend beyond the visible glyph (use padding, hitSlop, or a transparent inner spacer), but the interactive surface must reach the minimum. Spacing matters as much as size: two 44pt buttons touching edges are still mistappable.


No-Hover Doctrine

:hover does not exist on touch. Treating it as a primary trigger means hidden affordances on every phone. Anything reachable only by hover is, on mobile, simply gone. Visible-by-default is the rule; hover styles are a desktop enhancement, never a load-bearing interaction.

CSS - gate hover styles behind a media query:

.card { opacity: 1; transform: translateY(0); }

@media (hover: hover) and (pointer: fine) {
  .card { opacity: 0.85; }
  .card:hover { opacity: 1; transform: translateY(-2px); }
}
Read the whole SKILL.md on GitHub

More in Design