agentleFS
geniusyinkageniusyinka/mobile-ui-ux-plugin/skills/mobile-ui-ux/SKILL.md

mobile-ui-ux

Skill0 starsChanged 10 months agoMITView on GitHub

Mobile app UI/UX design best practices for React Native, iOS, and Android. Use when building mobile interfaces, creating mobile components, designing touch interactions, implementing mobile navigation, or when the user mentions mobile app, React Native, iOS, Android, touch targets, mobile layout, bottom sheet, tab bar, or mobile accessibility.

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. wrsilva/reis-mobile★ 8same name
    2. cskwork/skills★ 3same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

Show its rules and text

We split this skill into the rules it gives an agent

32 rules. About 0 are common, 32 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈32

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Thumb zone: Place primary actions in bottom 1/3 of screen (easy reach)

    line 16
  2. Distinctive:

    Use size, weight, and color to establish importance

    line 21
  3. Distinctive:

    Use whitespace generously - mobile screens need breathing room

    line 24
  4. Distinctive:

    Use native components when possible

    line 28
  5. Distinctive:

    Use system fonts for body text (SF Pro, Roboto)

    line 78
  6. Distinctive:

    Place most important destinations here

    line 89
  7. Distinctive:

    Avoid deep nesting (max 3-4 levels)

    line 94
  8. Distinctive:

    Use for focused tasks that interrupt flow

    line 97
  9. Distinctive:

    Always provide clear dismiss action

    line 98
  10. Distinctive:

    Consider sheet presentation for partial modals

    line 99
  11. Distinctive:

    Use separators or spacing to delineate items

    line 115
  12. Distinctive:

    Use for contextual actions and overflow content

    line 120
  13. Distinctive:

    Always dismissible via swipe or tap outside

    line 122
  14. Distinctive:

    Don't cover entire screen unless necessary

    line 123
  15. Distinctive:

    Use appropriate keyboard types (email, phone, number)

    line 141
  16. Distinctive:

    Never block entire UI unnecessarily

    line 157
  17. Distinctive:

    Use sparingly for meaningful interactions

    line 160
  18. Distinctive:

    Don't use technical jargon

    line 168
  19. Distinctive:

    Don't just invert colors - design intentionally

    line 174
  20. Distinctive:

    Test all states in both modes

    line 176
  21. Distinctive:

    Use semantic colors that adapt automatically

    line 177
  22. Distinctive:

    Use native driver for animations

    line 190
  23. Distinctive:

    Don't rely on color alone for meaning

    line 197
  24. Distinctive:

    Test with bold text enabled

    line 199
  25. Distinctive:

    All interactive elements need accessible labels

    line 202
  26. Distinctive:

    Test with VoiceOver (iOS) and TalkBack (Android)

    line 205
  27. Distinctive:

    Consider: React Native Paper (Material), NativeBase, Tamagui, Gluestack

    line 218
  28. Distinctive:

    Use react-native-reanimated for performant animations

    line 219
  29. Distinctive:

    Use FlatList/SectionList for long lists (never ScrollView)

    line 223
  30. Distinctive:

    Use useCallback/useMemo appropriately

    line 225
  31. Distinctive:

    Consider styled-components or Tamagui for dynamic theming

    line 230
  32. Distinctive:

    Use platform-specific styles when needed:

    line 231

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Mobile UI/UX Design Skill

Expert guidance for creating exceptional mobile user interfaces with platform-appropriate design patterns.

Core Principles

Touch-First Design

  • Minimum touch target: 44x44pt (iOS) / 48x48dp (Android)
  • Recommended touch target: 48x48pt for better accessibility
  • Touch target spacing: Minimum 8pt between interactive elements
  • Thumb zone: Place primary actions in bottom 1/3 of screen (easy reach)
  • Stretch zone: Secondary actions in middle 1/3
  • Avoid zone: Minimize critical actions in top 1/3

Visual Hierarchy

  • Use size, weight, and color to establish importance
  • Primary action should be immediately obvious
  • Limit to 1-2 primary actions per screen
  • Use whitespace generously - mobile screens need breathing room

Platform Consistency

  • Respect platform conventions (see IOS-GUIDELINES.md and ANDROID-GUIDELINES.md)
  • Use native components when possible
  • Match system fonts and sizing defaults
  • Honor user's accessibility settings (Dynamic Type, font scaling)

Layout & Spacing

Safe Areas

iOS: Account for notch, home indicator, status bar
Android: Account for navigation bar, status bar, display cutouts

React Native:
- Use SafeAreaView or useSafeAreaInsets()
- Never place content behind system UI without explicit design intent

Spacing Scale (8pt grid)

xs:  4pt   - Tight spacing, related elements
sm:  8pt   - Default spacing between elements
md:  16pt  - Section spacing
lg:  24pt  - Major section breaks
xl:  32pt  - Screen-level padding
xxl: 48pt  - Hero spacing

Screen Padding

  • Horizontal padding: 16-20pt minimum
  • Content should never touch screen edges
  • Cards/containers: 12-16pt internal padding

Typography

Size Guidelines

Caption/Label:    11-12pt
Body:             14-17pt (16pt recommended)
Subheadline:      15-18pt
Headline:         17-22pt
Title:            20-28pt
Large Title:      34pt+

Line Height

  • Body text: 1.4-1.6x font size
  • Headlines: 1.2-1.3x font size
  • Minimum line height for readability: 20pt for body text

Best Practices

  • Maximum 50-75 characters per line for readability
  • Use system fonts for body text (SF Pro, Roboto)
  • Limit to 2-3 font weights per screen
  • Support Dynamic Type / font scaling

Navigation Patterns

Tab Bar (Bottom Navigation)

  • 3-5 items maximum
  • Icons + labels for clarity
  • Active state clearly differentiated
  • Height: 49pt (iOS) / 56dp (Android)
  • Place most important destinations here

Stack Navigation

  • Clear back button/gesture
  • Descriptive titles
  • Avoid deep nesting (max 3-4 levels)

Modal Presentation

  • Use for focused tasks that interrupt flow
  • Always provide clear dismiss action
  • Consider sheet presentation for partial modals
  • Swipe-to-dismiss for convenience

Gestures

Tap:           Primary selection
Long press:    Secondary actions, context menus
Swipe:         Navigation, list actions, dismiss
Pull down:     Refresh content
Pinch:         Zoom (maps, images)

Common Components

Lists

  • Row height: minimum 44pt, recommended 48-72pt
  • Use separators or spacing to delineate items
  • Swipe actions: max 3 actions per direction
  • Pull-to-refresh for dynamic content

Bottom Sheets

  • Use for contextual actions and overflow content
  • Provide multiple snap points (25%, 50%, 90%)
  • Always dismissible via swipe or tap outside
  • Don't cover entire screen unless necessary

Buttons

Primary:    Filled, high contrast, single per screen
Secondary:  Outlined or tinted
Tertiary:   Text-only, for less important actions
Destructive: Red/warning color, require confirmation

Minimum height: 44pt
Padding: 16pt horizontal, 12pt vertical
Border radius: 8-12pt (platform dependent)

Forms & Input

  • Label above input field
  • Placeholder text is NOT a substitute for labels
  • Show validation inline, below the field
  • Use appropriate keyboard types (email, phone, number)
  • Auto-focus first field when appropriate
  • Group related fields visually

Cards

  • Consistent border radius (8-16pt)
  • Subtle shadow or border for elevation
  • Tap entire card for primary action
  • Keep content scannable

Loading & Feedback

Loading States

  • Skeleton screens over spinners when possible
  • Show progress for operations >2 seconds
  • Optimistic updates for better perceived performance
  • Never block entire UI unnecessarily

Haptic Feedback

  • Use sparingly for meaningful interactions
  • Success/failure confirmation
  • Selection changes
  • Button presses (subtle)

Error States

  • Clear, actionable error messages
  • Suggest how to fix the problem
  • Don't use technical jargon
  • Provide retry option when applicable

Dark Mode

  • Support both light and dark modes
  • Don't just invert colors - design intentionally
  • Reduce contrast slightly in dark mode (avoid pure white on black)
  • Test all states in both modes
  • Use semantic colors that adapt automatically

Performance Considerations

Perceived Performance

  • Show UI skeleton immediately
  • Lazy load below-fold content
  • Prefetch likely next screens
  • Use placeholder images

Animation Guidelines

  • 60fps target (16ms per frame)
  • Duration: 200-300ms for most transitions
  • Use native driver for animations
  • Reduce motion for accessibility setting

Accessibility

Visual

  • Minimum contrast ratio: 4.5:1 (body), 3:1 (large text)
  • Don't rely on color alone for meaning
  • Support Dynamic Type / font scaling up to 200%
  • Test with bold text enabled

Screen Readers

  • All interactive elements need accessible labels
  • Group related content logically
  • Announce dynamic content changes
  • Test with VoiceOver (iOS) and TalkBack (Android)

Motor

  • Large touch targets (48pt+)
  • Adequate spacing between targets
  • Support for switch control
  • Avoid time-limited interactions

See ACCESSIBILITY.md for comprehensive accessibility checklist.

React Native Specific

Component Libraries

  • Consider: React Native Paper (Material), NativeBase, Tamagui, Gluestack
  • Use react-native-reanimated for performant animations
  • react-native-gesture-handler for native gestures

Performance

  • Use FlatList/SectionList for long lists (never ScrollView)
  • Memoize expensive components
  • Use useCallback/useMemo appropriately
  • Profile with React DevTools and native profilers

Styling

  • StyleSheet.create for static styles
  • Consider styled-components or Tamagui for dynamic theming
  • Use platform-specific styles when needed:
import { Platform, StyleSheet } from 'react-native';

const styles = StyleSheet.create({
  container: {
    paddingTop: Platform.OS === 'ios' ? 20 : 0,
    ...Platform.select({
      ios: { shadowColor: '#000', shadowOffset: { width: 0, height: 2 } },
      android: { elevation: 4 },
    }),
  },
});

Quick Reference

ElementiOSAndroid
Touch target44pt48dp
Status bar44-59pt24dp
Nav bar44pt56dp
Tab bar49pt56dp
Corner radius8-14pt4-16dp
System fontSF ProRoboto

Examples

Good: Accessible, Touch-Friendly Button

<Pressable
  style={({ pressed }) => [
    styles.button,
    pressed && styles.buttonPressed
  ]}
  accessibilityRole="button"
  accessibilityLabel="Submit form"
  hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}
>
  <Text style={styles.buttonText}>Submit</Text>
</Pressable>

const styles = StyleSheet.create({
  button: {
    minHeight: 48,
    paddingHorizontal: 24,
    paddingVertical: 14,
    backgroundColor: '#007AFF',
    borderRadius: 12,
    justifyContent: 'center',
    alignItems: 'center',
  },
  buttonPressed: {
    opacity: 0.8,
  },
  buttonText: {
    color: '#FFFFFF',
    fontSize: 17,
    fontWeight: '600',
  },
});

Bad: Common Mistakes

// Too small touch target
<TouchableOpacity style={{ padding: 4 }}>
  <Icon size={16} />
</TouchableOpacity>

// Missing accessibility
<View onTouchEnd={handlePress}>
  <Text>Click me</Text>
</View>

// Placeholder as label
<TextInput placeholder="Email" />

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.