The interface is localized. Skill descriptions and documents are machine-translated by AI into your language; code, commands, paths and technical terms stay in the original, and the author's document governs.
Explore skills
Design & creative · SKILL.md

mobile-design

mobile-design

Mobile-first design doctrine for Flutter (iOS + Android). Load BEFORE flutter-mobile to apply touch psychology, MFRI risk scoring, platform conventions, and performance doctrine before writing any UI code.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill documentation

GitHub

name: mobile-design description: Mobile-first design doctrine for Flutter (iOS + Android). Load BEFORE flutter-mobile to apply touch psychology, MFRI risk scoring, platform conventions, and performance doctrine before writing any UI code. allowed-tools: Read metadata: triggers: mobile design, touch psychology, thumb zone, mobile UX, touch targets, platform conventions, mobile performance, MFRI, mobile feasibility, mobile first, iOS design, Android design related-skills: flutter-mobile, riverpod-patterns, ui-standards-tokens domain: frontend role: specialist scope: design output-format: document last-reviewed: "2026-03-15"

Iron Law

NO FLUTTER UI WITHOUT COMPLETING THE MOBILE CHECKPOINT FIRST — load reference/touch-psychology.md and reference/mobile-performance.md before writing any screen

Mobile Design Skill

(Mobile-First · Touch-First · Platform-Respectful)

Philosophy: Touch-first. Battery-conscious. Platform-respectful. Offline-capable. Core Law: Mobile is NOT a small desktop. Operating Rule: Think constraints first, aesthetics second.

This skill provides the design thinking layer that must be loaded BEFORE flutter-mobile. It exists to prevent desktop-thinking, AI-defaults, and unsafe assumptions when designing Flutter screens for iOS and Android.

Load this skill first. Complete the Mobile Checkpoint. Then open flutter-mobile to implement.


Mobile Feasibility & Risk Index (MFRI)

Before designing or implementing any mobile feature or screen, assess feasibility.

MFRI Dimensions (1-5)

DimensionQuestion
Platform ClarityIs the target platform (iOS / Android / both) explicitly defined?
Interaction ComplexityHow complex are gestures, flows, or navigation?
Performance RiskDoes this involve lists, animations, heavy state, or media?
Offline DependenceDoes the feature break or degrade without network?
Accessibility RiskDoes this impact motor, visual, or cognitive accessibility?

Score Formula

MFRI = (Platform Clarity + Accessibility Readiness)
       - (Interaction Complexity + Performance Risk + Offline Dependence)

Range: -10 to +10

Interpretation

MFRIMeaningRequired Action
6-10SafeProceed normally
3-5ModerateAdd performance + UX validation
0-2RiskySimplify interactions or architecture
< 0DangerousRedesign before implementation

Mandatory Thinking Before Any Work

STOP: Ask Before Assuming

If any of the following are not explicitly stated, you MUST ask before proceeding:

AspectQuestionWhy
PlatformiOS, Android, or both?Affects navigation, gestures, typography
FrameworkFlutter (this workspace is Flutter-only)Determines performance and patterns
NavigationTabs, stack, drawer?Core UX architecture
OfflineMust it work offline?Data and sync strategy
DevicesPhone only or tablet too?Layout and density rules
AudienceConsumer, enterprise, accessibility needs?Touch and readability

Flutter note: This workspace uses Flutter 3.41.x exclusively. Framework is not a question — it is Flutter. If the request is for React Native, redirect to the mobile-developer skill.

Never default to your favorite stack or pattern.


Reference Reading Order

Read these files in this order before designing any screen:

FilePurposeWhen
reference/touch-psychology.mdFitts' Law, thumb zones, gesture psychologyAlways first
reference/mobile-performance.mdFlutter const widgets, Riverpod selectors, 60fpsBefore any list or animation
reference/platform-ios.mdiOS HIG, SF Pro, Dynamic TypeWhen building iOS-specific UI
reference/platform-android.mdMaterial 3, Roboto, dp systemWhen building Android-specific UI
reference/mobile-backend.mdOffline sync, push notifications, FirebaseWhen feature uses network
reference/mobile-testing.mdDevice testing, E2E flows, flutter_testBefore writing tests
reference/mobile-debugging.mdFlutter DevTools, Dart Observatory, xcodebuild MCPWhen debugging

If you have not read touch-psychology.md, you are not allowed to design any UI.


Hard Bans (Flutter-Specific)

Performance Sins

NeverWhyAlways
ListView(children: items.map(...).toList())Renders all items, memory explosionListView.builder or SliverList
SingleChildScrollView wrapping long listsSame problem as aboveListView.builder
setState for complex cross-widget stateRebuilds entire subtreeRiverpod providers
Heavy computation inside build()Blocks UI thread, drops framesOffload to isolates or services
Non-const constructors on static widgetsForces unnecessary rebuildsconst on every eligible widget

Touch and UX Sins

NeverWhyAlways
Touch targets below 48dpMissed taps, user frustrationSizedBox padding to min 48dp
Gesture-only actions with no buttonExcludes usersProvide visible button alternative
No loading state on async actionsFeels brokenShow CircularProgressIndicator
No error recoveryDead endRetry button + error message
Ignore platform conventionsBreaks muscle memoryiOS edge swipe, Android system back

Design Token Sins

NeverWhyAlways
Colors.blue or Color(0xFF...)Hardcoded, breaks themingTheme.of(context).colorScheme.*
EdgeInsets.all(16) inlineMagic numbers, no tokenAppSpacing.* tokens
TextStyle(fontSize: 17) inlineBypasses type scaleTheme.of(context).textTheme.*

Security Sins

NeverWhyAlways
Tokens in SharedPreferencesEasily read without rootflutter_secure_storage (Keychain/Keystore)
Hardcoded API secretsReverse-engineered from APK/IPAEnvironment config + secure storage
No certificate pinningMITM riskCert pinning via http_certificate_pinning
Log sensitive dataPII leakageNever log tokens, passwords, PII

Platform Unification Matrix

Some elements should be unified across platforms. Others must diverge.

UNIFY                          DIVERGE
----------------------         -------------------------
Business logic                 Navigation behavior
Data models                    Gestures
API contracts                  Icons
Validation                     Typography
Error semantics                Pickers / dialogs

Platform Defaults

ElementiOSAndroid
FontSF ProRoboto
Min touch44pt48dp
BackEdge swipeSystem back
SheetsBottom sheetDialog / sheet
IconsSF SymbolsMaterial Icons

In Flutter, use CupertinoWidget variants for iOS-specific elements and Material widgets for Android. For cross-platform, prefer Material with iOS adaptations via Platform.isIOS checks or adaptive constructors where available.


Mobile Checkpoint

Complete this before writing any widget code. If you cannot fill it in, go back and read the reference files.

MOBILE CHECKPOINT
Platform:     [ ] iOS  [ ] Android  [ ] Both
Framework:    Flutter 3.41.x
Files Read:   [ ] touch-psychology  [ ] mobile-performance  [ ] platform-specific
MFRI Score:   ___  (must be >= 3)

3 Principles I Will Apply:
1.
2.
3.

Anti-Patterns I Will Avoid:
1.
2.

MFRI score < 3: stop and redesign before opening flutter-mobile.


Integration with Workspace

  1. Load this skill BEFORE flutter-mobile
  2. Complete the Mobile Checkpoint above
  3. Once checkpoint is done and MFRI >= 3, open flutter-mobile for implementation patterns
  4. After writing code, dispatch: riverpod-reviewer, flutter-security-expert, accessibility-auditor

Related Agents

AgentWhen
riverpod-reviewerAfter writing any provider or state
flutter-security-expertAfter adding auth, storage, or network code
accessibility-auditorAfter building any screen or interactive widget

Related Skills

  • flutter-mobile — Implementation patterns, templates, codegen
  • riverpod-patterns — Provider types, AsyncValue, select()
  • ui-standards-tokens — AppSpacing, colorScheme, textTheme tokens

Final Law: Mobile users are distracted, interrupted, and impatient — often using one hand on a bad network with low battery. Design for that reality, or your app will fail quietly.

Saved skills