
This is the antidote to treating mobile like "desktop but smaller." It forces you to assess feasibility before designing anything using an MFRI scoring system across platform clarity, performance, and accessibility. The hard bans are especially useful: no ScrollView for long lists, no touch targets under 44px, no tokens in AsyncStorage. It includes mandatory reading checklists that vary by platform (iOS vs Android vs both) and won't let you proceed without explicitly stating framework, navigation pattern, and offline requirements. Best for teams who keep shipping janky lists, broken gestures, or apps that feel like responsive websites crammed into a WebView. The performance doctrine section alone (with actual FlatList and Flutter const patterns) justifies keeping this loaded.
$ npx -y skills add sickn33/antigravity-awesome-skills --skill mobile-design --agent claude-codeInstalls into .claude/skills of the current project.
(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 exists to prevent desktop-thinking, AI-defaults, and unsafe assumptions when designing or building mobile applications.
Use the existing project/platform requirements and preserve its conventions. Ask only for missing information that changes the implementation. Do not require an interview or framework switch for a targeted fix. The former MFRI score was an unvalidated heuristic with inconsistent dimensions/range; it is not a safety or release gate. Record concrete interaction, data, accessibility and performance risks instead.
For a new app, establish platform, framework, audience, device classes, navigation, offline needs and actual output. For existing work, reuse that context. Read only the reference material needed for the changed behavior. User scope and repository instructions take precedence over this skill's suggested ceremony.
| File | Purpose | Status |
|---|---|---|
| mobile-design-thinking.md | Anti-memorization, context-forcing | Context reference |
| touch-psychology.md | Fittsโ Law, thumb zones, gestures | Task-dependent |
| mobile-performance.md | 60fps, memory, battery | Task-dependent |
| mobile-backend.md | Offline sync, push, APIs | Task-dependent |
| mobile-testing.md | Device & E2E testing | Task-dependent |
| mobile-debugging.md | Native vs JS debugging | Task-dependent |
| Platform | File |
|---|---|
| iOS | platform-ios.md |
| Android | platform-android.md |
| Cross-platform | BOTH above |
Read the relevant platform guidance before changing platform-specific behavior.
| โ Never | Why | โ Always |
|---|---|---|
| ScrollView for long lists | Memory explosion | FlatList / FlashList / ListView.builder |
| Unmeasured row churn | May cause avoidable work | Profile identity/state updates; memoize only where useful |
| Index as key | Reorder bugs | Stable ID |
| JS-thread animations | Jank | Native driver / GPU |
| console.log in prod | JS thread block | Strip logs |
| Blanket memoization claims | Can add complexity without benefit | Profile and apply targeted optimization |
| โ Never | Why | โ Always |
|---|---|---|
| Undersized hit area | Miss taps | Use platform logical units: typically 44pt iOS / 48dp Android |
| Gesture-only action | Excludes users | Button fallback |
| No loading state | Feels broken | Explicit feedback |
| No error recovery | Dead end | Retry + message |
| Ignore platform norms | Muscle memory broken | iOS โ Android |
| โ Never | Why | โ Always |
|---|---|---|
| Tokens in AsyncStorage | Easily stolen | SecureStore / Keychain |
| Embedded app secrets | Can be extracted | Keep server secrets on server; secure per-user credentials |
| Disabled TLS verification | MITM risk | Valid platform TLS; pinning only for a justified managed threat model |
| Log sensitive data | PII leakage | Never log secrets |
UNIFY DIVERGE
โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโ
Business logic Navigation behavior
Data models Gestures
API contracts Icons
Validation Typography
Error semantics Pickers / dialogs
| Element | iOS | Android |
|---|---|---|
| Font | SF Pro | Roboto |
| Min touch | 44pt | 48dp |
| Back | Edge swipe | System back |
| Sheets | Bottom sheet | Dialog / sheet |
| Icons | SF Symbols | Material Icons |
Rules:
const Row = React.memo(({ item }) => (
<View><Text>{item.title}</Text></View>
));
const renderItem = useCallback(
({ item }) => <Row item={item} />,
[]
);
<FlatList
data={items}
renderItem={renderItem}
keyExtractor={(i) => i.id}
getItemLayout={(_, i) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * i,
index: i,
})}
/>
class Item extends StatelessWidget {
const Item({super.key});
@override
Widget build(BuildContext context) {
return const Text('Static');
}
}
const everywhere possibleState the target platform, changed behavior and checks actually performed. Profile representative devices/data; a static pattern scan cannot measure touch targets, contrast, frame rate, battery, platform navigation or secure storage behavior.
Preserve an existing stack unless a change is requested. For new work compare team experience, native integrations, accessibility, deployment policies and measured workload constraints. Expo OTA is bounded by runtime compatibility and store policies; it does not authorize bypassing review or delivering arbitrary native code. No framework is universally fastest or smallest.
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.
This skill is applicable to execute the workflow or actions described in the overview.
Run python scripts/mobile_audit.py . --json from the intended project directory.
The helper is read-only, bounded and advisory. It never imports project code and
never declares compliance; compliant is null. Exit 2 means incomplete inspection
or no detected mobile source. Source-pattern hints can match comments or miss
behavior spread across files. Validate findings before editing. No simulator,
real-device, screen-reader or GPU run was performed in this catalog review.
Use touch guidance, typography, color, navigation and decisions for focused checks. Code blocks are version-sensitive fragments, not certified complete apps; verify current APIs before execution.
Sponsors