
thumb-first-design
The design-judgment layer of the thumb-first mobile suite — decides WHAT the right mobile pattern is and WHY, platform-agnostic across web and native. Reasons through named designer lenses (Hoober, Hurff, Wroblewski, Clark, Rausch, Budiu, Allen, de With, Nelson) with context-aware weighting, and surfaces decision forks where there's no single right answer. Two modes: plan a feature's mobile design before code, or audit an existing one. Use for navigation-pattern choices (tab bar, drawer, bottom sheet), thumb-reach and action placement, mobile forms, gestures vs visible controls, and mobile design critique — or when the user mentions mobile design, mobile UX, thumb zones, one-handed use, bottom sheets, or mobile navigation. Usually run via the /thumb-first umbrella (which also runs platform checks); invoke directly for design judgment only. For web/PWA technical defects use thumb-first-platform.
- Installs
- 42
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/kylezantos/thumb-first --skill thumb-first-design- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads thumb-first-design automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Thumb-First · Design
Mobile design judgment — what the right mobile pattern is and why, not how to code it. The decisions hold whether the implementation is CSS, SwiftUI, or React Native. This is the design-judgment layer of the thumb-first suite.
Quick Start
Plan a feature's mobile design: /thumb-first-design plan or "design the mobile UX for this" or "how should this work on mobile"
Audit an existing mobile design: /thumb-first-design audit or "review this mobile screen" or "is this good mobile design"
This skill decides patterns and ergonomics; it does not write the implementation — for responsive CSS use responsive-craft; for mobile-web/PWA technical defects (safe areas, viewport, service workers) use its sibling thumb-first-platform; for React Native/Expo use the native-mobile skills. For a single combined pass that runs this judgment audit and the platform audit and merges them into one report, run /thumb-first.
Core Principles
These are the durable principles — synthesized from the people who defined the field. They survive device generations and platform churn.
-
Design for the most constrained grip (Hoober) — Grips switch every few seconds with the task. The often-quoted "49% use one hand" is not license to bury controls in easy-reach zones. Accommodate the hardest grip the user might be in, so the interface works no matter how they hold the device. In practice: keep the interaction surface — controls, nav, primary actions — in the lower band; let content fill the top, but don't put interaction there.
-
Thumb zones are a cost map, not a layout grid (Hurff) — Natural / Stretch / "Ow" tells you the cost of a location, not where things must go. High-cost zones are the right home for rare or destructive actions. Reach cost rises non-linearly with screen size — re-map it per device class.
-
Mobile forces focus (Wroblewski) — The small screen is a feature: it forces the question "what actually earns this screen?" Decide what to cut and what is primary before deciding layout. Prioritization is the design work.
-
The content is the control (Clark) — Prefer direct manipulation of content over chrome wrapped around it. But every gesture without a visible affordance is a feature only experts will discover — gesture power and discoverability trade off, and that tension never fully resolves.
-
Motion is communication, not decoration (Modern Craft) — Transitions carry state, hierarchy, and causality. Design motion with the layout, not as a final polish pass. Where something comes from and goes to is information.
-
Navigation chrome is currently unsettled — iOS 26 (Liquid Glass, floating tab bar) and Material 3 Expressive (nav drawer deprecated) are mid-transition. Treat platform navigation as in-flux; flag it, don't present a moving target as settled canon.
-
Surface decision forks — don't default silently — When a mobile design choice has multiple valid answers (nav pattern, sheet vs. modal, gesture vs. visible control), present 2-3 options with tradeoffs and let the user choose. See
references/design-forks.md.
The Designer Lenses
This skill reasons through eight named lenses rather than a flattened checklist. Each is a real practitioner with sharp, attributable positions. Weighting is context-aware — the lenses that matter most depend on what's being designed.
| Lens | Voice(s) | Leads when the work is about… |
|---|---|---|
| Ergonomic Realist | Steven Hoober | reach, action placement, grip assumptions |
| Thumb-Zone Mapper | Scott Hurff | layout cost, large-screen tradeoffs |
| Focus Forcer | Luke Wroblewski | content prioritization, forms |
| Direct Manipulation | Josh Clark | touch model, gesture vs. control, discoverability |
| Navigation Taxonomist | Frank Rausch | nav architecture, modals, drawers, sheets |
| Empirical Skeptic | Raluca Budiu / NN/g | scanning, overlays, myth-checking assumptions |
| Modern Craft | Allen / de With / Nelson | motion & feel, native-class craft, complex-app density |
| Platform Canon | Apple HIG / Material 3 | current conventions, system-reserved gestures |
Full positions, disagreements between lenses, and the weighting table are in references/designer-lenses.md. Load it at the start of both modes.
Mode Selection
Two modes. Detect from $ARGUMENTS or ask.
Detection
$ARGUMENTScontains "audit", "review", "critique", "evaluate", "feedback" → Audit$ARGUMENTScontains "plan", "design", "build", "new", "how should" → Plan- User points at an existing screen/component/app and asks for assessment → Audit
- User is starting a new mobile feature or unsure how it should work → Plan
- Ambiguous → Ask.
If AskUserQuestion is available:
- Plan — Design the mobile UX for a feature before any code is written
- Audit — Review an existing mobile design against best practice
Otherwise: "Do you want to (1) plan the mobile design for a new feature, or (2) audit an existing mobile design?"
If the user picks Audit but hasn't provided anything to review, ask what they're reviewing — a screenshot, a live URL, code, or a description — before routing. The audit workflow can work from any of these; it just needs one.
Routing
| Mode | Read workflow | Load immediately |
|---|---|---|
| Plan | workflows/plan.md | references/designer-lenses.md |
| Audit | workflows/audit.md | references/designer-lenses.md |
Load other references on demand:
references/reach-and-ergonomics.md— placing actions, thumb reach, one-handed use, large screensreferences/navigation.md— choosing nav patterns; tab bar, drawer, bottom sheet, modalsreferences/forms-and-input.md— any screen with form fields or data entryreferences/touch-gesture-motion.md— gestures, touch targets, transitions, haptics, feelreferences/content-and-attention.md— content prioritization, scanning, glanceability, overlaysreferences/design-forks.md— when a choice has multiple valid answersreferences/output-format.md— presenting Audit findings (HTML report by default; adaptreferences/report-template.html)
Gotchas — Where Claude Fails at Mobile Design
Mobile design failures are judgment failures, not code failures. Check every recommendation against this list.
-
Defaulting to a hamburger menu because it looks "clean" — Hidden navigation has poor discoverability. A tab bar exposes destinations and consistently outperforms it. The hamburger is a last resort for genuinely deep navigation, not a default.
-
Primary action at the top of the screen — A desktop habit. The top is the hardest thumb zone on a modern phone. Primary, frequent actions belong in the easy-reach lower band.
-
Designing for the average grip — There is no average grip. Designing only for comfortable one-handed reach penalizes the ~51% who are cradling or using two hands at any moment. Accommodate the most constrained grip.
-
Treating a bottom sheet as a navigation destination — Sheets are for transient, scoped tasks with the background still relevant. They are not pages. Never stack sheets to build a flow.
-
Adding gestures with no visible affordance — A swipe action nobody can see is a feature for experts only. Every gesture needs either a well-known convention behind it or a visible cue, and ideally a non-gesture fallback.
-
Multi-column forms and placeholder-as-label — Mobile forms are single-column, always. Placeholders that vanish on focus remove the label exactly when the user needs it. Labels stay visible.
-
Treating motion as a final polish pass — Motion that's bolted on after layout can't communicate where things come from. Decide transitions alongside the layout — they carry state and causality.
-
Porting desktop information density to mobile — Cramming a desktop screen's content into a phone is not mobile design. Mobile forces a prioritization decision: what is primary, what is deferred, what is cut.
-
Designing for an unspecified "mobile" target — Asked to design "for mobile," Claude silently defaults to iOS patterns (back-swipe, sheet detents, top-bar actions) that don't translate to Android. When the platform isn't stated, name the assumption and flag what differs across iOS / Android — and note where iOS 26 / Material 3 are mid-transition rather than treating either as settled.
-
Optimizing for the showcase screen — A design that looks great in a marketing shot may fail in one-handed use, with the keyboard open, mid-interruption, or for a returning user. Design for the real, distracted, glancing context.
For the reasoning behind each and the lens that catches it, see references/designer-lenses.md and the topic references.
Reference Index
| File | Contents | Load when |
|---|---|---|
| designer-lenses.md | The 8 lenses — positions, disagreements, context-aware weighting table | Start of both modes |
| reach-and-ergonomics.md | Grip data, thumb zones, action placement, large-screen reach | Placing actions or assessing reach |
| navigation.md | Rausch's nav taxonomy, tab/drawer/sheet/modal decisions, iOS 26 + Material 3 state | Choosing or reviewing navigation |
| forms-and-input.md | Wroblewski's form principles, input types, field reduction, keyboard | Any data-entry screen |
| touch-gesture-motion.md | Touch targets, gesture discoverability, motion as communication, haptics | Gestures, transitions, or feel |
| content-and-attention.md | Prioritization, scanning patterns, glanceability, overlay proliferation | Content layout and hierarchy |
| design-forks.md | Ambiguous mobile decisions with options and tradeoffs | A choice has no single right answer |
| output-format.md | How the Audit presents findings — HTML report (default) + terminal fallback; color/diagram/section rules | Presenting audit findings (Step 5) |
| report-template.html | The canonical self-contained HTML audit report (worked example) — adapt, don't reinvent | Writing the HTML report |
Workflow Index
| Workflow | Purpose |
|---|---|
| plan.md | Discovery → prioritize → choose patterns → mobile design brief |
| audit.md | Assess against lenses → surface forks → prioritized findings |
FAQ
What does the thumb-first-design skill do?
The design-judgment layer of the thumb-first mobile suite — decides WHAT the right mobile pattern is and WHY, platform-agnostic across web and native. Reasons through named designer lenses (Hoober, Hurff, Wroblewski, Clark, Rausch, Budiu, Allen, de With, Nelson) with context-aware weighting, and surfaces decision forks where there's no single right answer. Two modes: plan a feature's mobile design before code, or audit an existing one. Use for navigation-pattern choices (tab bar, drawer, bottom sheet), thumb-reach and action placement, mobile forms, gestures vs visible controls, and mobile design critique — or when the user mentions mobile design, mobile UX, thumb zones, one-handed use, bottom sheets, or mobile navigation. Usually run via the /thumb-first umbrella (which also runs platform checks); invoke directly for design judgment only. For web/PWA technical defects use thumb-first-platform.
How do I install thumb-first-design?
Run npx skills add https://github.com/kylezantos/thumb-first --skill thumb-first-design in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/thumb-first-design/ (personal) or .claude/skills/thumb-first-design/ (project).
Which AI agents can use thumb-first-design?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is thumb-first-design safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains thumb-first-design?
It is published by kylezantos in kylezantos/thumb-first. It has 42 recorded installs.
More from kylezantos/thumb-first
thumb-first-platform
kylezantos/thumb-first
The technical-verification layer of the thumb-first mobile suite — finds and fixes objective platform defects in mobile web apps and PWAs (iOS Safari, Android Chrome). Covers viewport/100vh bugs, safe-area insets, touch targets and tap delay, service workers, web push, PWA manifest, and Core Web Vitals — with file/line defects and fixes, not opinions. Target-aware: full coverage for web/PWA; for native apps (React Native, Expo, SwiftUI, Flutter) it detects the target and hands off to a native skill if one is installed, otherwise states plainly that it does not do native-platform audits. Use for mobile-web/PWA technical audits, safe-area/notch issues, 100vh overflow, service-worker/offline, install/manifest, or mobile performance. Usually run via the /thumb-first umbrella (which also runs the design pass); invoke directly for technical checks only.
Popular mobile skills
design-mobile-apps
designed-by-ai/skills
Design mobile app screens with Sleek, edit Sleek projects, and implement their designs in React Native or HTML.
ios-design
uizze.sh
Design and review iOS UI/UX for iPhone apps in SwiftUI, UIKit, or React Native. Use for mobile app design, screen redesigns, navigation flows, typography, forms, keyboard and safe-area layout, and accessibility checks. Apply Apple Human Interface Guidelines and consult real product references through the optional Uizze connection.
vercel-react-native-skills
vercel-labs/agent-skills
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
animate-expo
emilkowalski/skills
Build animations in React Native and Expo, making the decisions in the order that determines whether they feel right — should it animate, which thread it runs on, which properties, spring or timing, how the gesture hands off, how it degrades. Writes the implementation with Reanimated, Gesture Handler, Expo Router and expo-haptics. Use when animating anything in an Expo app, adding gestures, sheets, screen transitions, press feedback or haptics, or fixing motion that stutters on device. For web animation use animate.
xcode-project-setup
firebase/agent-skills
Safely modifies Xcode projects (.pbxproj) to add Swift Packages and link files. Use this skill whenever an iOS project needs dependencies installed (e.g. Firebase, Alamofire).
firebase-remote-config-basics
firebase/agent-skills
Manages Firebase Remote Config templates, feature flags, loading strategies, and SDKs (Android, iOS). Use when downloading/deploying remoteconfig JSON templates, managing version history/feature flags, setting in-app defaults, fetchAndActivate(), real-time listeners, or SDK setup. Don't use for Firebase Hosting, Auth, Firestore, Data Connect, Crashlytics, or App Hosting.