[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6QP71YSRGKT9XVTMTQBDPTH":3,"skill-same:01M6QP71YSRGKT9XVTMTQBDPTH":134},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":31,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":14,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M6QP71YSRGKT9XVTMTQBDPTH","mobile-design",null,"Mobile-first design thinking and decision-making for iOS and Android apps. Touch interaction, performance patterns, platform conventions. Teaches principles, not fixed values. Use when building React Native, Flutter, or native mobile apps.","LOrdEnRYQuE\u002FLRDEnE-Ai-Specialist","LOrdEnRYQuE","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F93767164?v=4","01M6QNZGVYDMQTN925B3BDB98Z","LOrdEnRYQuE | Advanced Digital Solutions ","01M6QNZH078JB4S8QJNNQNJPS5",0,"MIT","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"mobile design","mobile","design","thinking","for","design thinking","native","touch","interaction","apps","platform","decision-making","patterns","use","react native","read","decision","Bash","react","performance","2026-11-10 10:12:30",false,"---\nname: mobile-design\ndescription: Mobile-first design thinking and decision-making for iOS and Android apps. Touch interaction, performance patterns, platform conventions. Teaches principles, not fixed values. Use when building React Native, Flutter, or native mobile apps.\nallowed-tools: Read, Glob, Grep, Bash\n---\n\n# Mobile Design System\n\n> **Philosophy:** Touch-first. Battery-conscious. Platform-respectful. Offline-capable.\n> **Core Principle:** Mobile is NOT a small desktop. THINK mobile constraints, ASK platform choice.\n\n---\n\n## ? Runtime Scripts\n\n**Execute these for validation (don't read, just run):**\n\n| Script | Purpose | Usage |\n|--------|---------|-------|\n| `scripts\u002Fmobile_audit.py` | Mobile UX & Touch Audit | `python scripts\u002Fmobile_audit.py \u003Cproject_path>` |\n\n---\n\n## ? MANDATORY: Read Reference Files Before Working!\n\n**⛔ DO NOT start development until you read the relevant files:**\n\n### Universal (Always Read)\n\n| File | Content | Status |\n|------|---------|--------|\n| **[mobile-design-thinking.md](mobile-design-thinking.md)** | **⚠️ ANTI-MEMORIZATION: Forces thinking, prevents AI defaults** | **⬜ CRITICAL FIRST** |\n| **[touch-psychology.md](touch-psychology.md)** | **Fitts' Law, gestures, haptics, thumb zone** | **⬜ CRITICAL** |\n| **[mobile-performance.md](mobile-performance.md)** | **RN\u002FFlutter performance, 60fps, memory** | **⬜ CRITICAL** |\n| **[mobile-backend.md](mobile-backend.md)** | **Push notifications, offline sync, mobile API** | **⬜ CRITICAL** |\n| **[mobile-testing.md](mobile-testing.md)** | **Testing pyramid, E2E, platform-specific** | **⬜ CRITICAL** |\n| **[mobile-debugging.md](mobile-debugging.md)** | **Native vs JS debugging, Flipper, Logcat** | **⬜ CRITICAL** |\n| [mobile-navigation.md](mobile-navigation.md) | Tab\u002FStack\u002FDrawer, deep linking | ⬜ Read |\n| [mobile-typography.md](mobile-typography.md) | System fonts, Dynamic Type, a11y | ⬜ Read |\n| [mobile-color-system.md](mobile-color-system.md) | OLED, dark mode, battery-aware | ⬜ Read |\n| [decision-trees.md](decision-trees.md) | Framework\u002Fstate\u002Fstorage selection | ⬜ Read |\n\n> ? **mobile-design-thinking.md is PRIORITY!** This file ensures AI thinks instead of using memorized patterns.\n\n### Platform-Specific (Read Based on Target)\n\n| Platform | File | Content | When to Read |\n|----------|------|---------|--------------|\n| **iOS** | [platform-ios.md](platform-ios.md) | Human Interface Guidelines, SF Pro, SwiftUI patterns | Building for iPhone\u002FiPad |\n| **Android** | [platform-android.md](platform-android.md) | Material Design 3, Roboto, Compose patterns | Building for Android |\n| **Cross-Platform** | Both above | Platform divergence points | React Native \u002F Flutter |\n\n> ? **If building for iOS → Read platform-ios.md FIRST!**\n> ? **If building for Android → Read platform-android.md FIRST!**\n> ? **If cross-platform → Read BOTH and apply conditional platform logic!**\n\n---\n\n## ⚠️ CRITICAL: ASK BEFORE ASSUMING (MANDATORY)\n\n> **STOP! If the user's request is open-ended, DO NOT default to your favorites.**\n\n### You MUST Ask If Not Specified:\n\n| Aspect | Ask | Why |\n|--------|-----|-----|\n| **Platform** | \"iOS, Android, or both?\" | Affects EVERY design decision |\n| **Framework** | \"React Native, Flutter, or native?\" | Determines patterns and tools |\n| **Navigation** | \"Tab bar, drawer, or stack-based?\" | Core UX decision |\n| **State** | \"What state management? (Zustand\u002FRedux\u002FRiverpod\u002FBLoC?)\" | Architecture foundation |\n| **Offline** | \"Does this need to work offline?\" | Affects data strategy |\n| **Target devices** | \"Phone only, or tablet support?\" | Layout complexity |\n\n### ⛔ AI MOBILE ANTI-PATTERNS (YASAK LİSTESİ)\n\n> ? **These are AI default tendencies that MUST be avoided!**\n\n#### Performance Sins\n\n| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |\n|-------------|----------------|--------------|\n| **ScrollView for long lists** | Renders ALL items, memory explodes | Use `FlatList` \u002F `FlashList` \u002F `ListView.builder` |\n| **Inline renderItem function** | New function every render, all items re-render | `useCallback` + `React.memo` |\n| **Missing keyExtractor** | Index-based keys cause bugs on reorder | Unique, stable ID from data |\n| **Skip getItemLayout** | Async layout = janky scroll | Provide when items have fixed height |\n| **setState() everywhere** | Unnecessary widget rebuilds | Targeted state, `const` constructors |\n| **Native driver: false** | Animations blocked by JS thread | `useNativeDriver: true` always |\n| **console.log in production** | Blocks JS thread severely | Remove before release build |\n| **Skip React.memo\u002Fconst** | Every item re-renders on any change | Memoize list items ALWAYS |\n\n#### Touch\u002FUX Sins\n\n| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |\n|-------------|----------------|--------------|\n| **Touch target \u003C 44px** | Impossible to tap accurately, frustrating | Minimum 44pt (iOS) \u002F 48dp (Android) |\n| **Spacing \u003C 8px between targets** | Accidental taps on neighbors | Minimum 8-12px gap |\n| **Gesture-only interactions** | Motor impaired users excluded | Always provide button alternative |\n| **No loading state** | User thinks app crashed | ALWAYS show loading feedback |\n| **No error state** | User stuck, no recovery path | Show error with retry option |\n| **No offline handling** | Crash\u002Fblock when network lost | Graceful degradation, cached data |\n| **Ignore platform conventions** | Users confused, muscle memory broken | iOS feels iOS, Android feels Android |\n\n#### Security Sins\n\n| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |\n|-------------|----------------|--------------|\n| **Token in AsyncStorage** | Easily accessible, stolen on rooted device | `SecureStore` \u002F `Keychain` \u002F `EncryptedSharedPreferences` |\n| **Hardcode API keys** | Reverse engineered from APK\u002FIPA | Environment variables, secure storage |\n| **Skip SSL pinning** | MITM attacks possible | Pin certificates in production |\n| **Log sensitive data** | Logs can be extracted | Never log tokens, passwords, PII |\n\n#### Architecture Sins\n\n| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |\n|-------------|----------------|--------------|\n| **Business logic in UI** | Untestable, unmaintainable | Service layer separation |\n| **Global state for everything** | Unnecessary re-renders, complexity | Local state default, lift when needed |\n| **Deep linking as afterthought** | Notifications, shares broken | Plan deep links from day one |\n| **Skip dispose\u002Fcleanup** | Memory leaks, zombie listeners | Clean up subscriptions, timers |\n\n---\n\n## ? Platform Decision Matrix\n\n### When to Unify vs Diverge\n\n```\n                    UNIFY (same on both)          DIVERGE (platform-specific)\n                    ───────────────────           ──────────────────────────\nBusiness Logic      ✅ Always                     -\nData Layer          ✅ Always                     -\nCore Features       ✅ Always                     -\n                    \nNavigation          -                             ✅ iOS: edge swipe, Android: back button\nGestures            -                             ✅ Platform-native feel\nIcons               -                             ✅ SF Symbols vs Material Icons\nDate Pickers        -                             ✅ Native pickers feel right\nModals\u002FSheets       -                             ✅ iOS: bottom sheet vs Android: dialog\nTypography          -                             ✅ SF Pro vs Roboto (or custom)\nError Dialogs       -                             ✅ Platform conventions for alerts\n```\n\n### Quick Reference: Platform Defaults\n\n| Element | iOS | Android |\n|---------|-----|---------|\n| **Primary Font** | SF Pro \u002F SF Compact | Roboto |\n| **Min Touch Target** | 44pt × 44pt | 48dp × 48dp |\n| **Back Navigation** | Edge swipe left | System back button\u002Fgesture |\n| **Bottom Tab Icons** | SF Symbols | Material Symbols |\n| **Action Sheet** | UIActionSheet from bottom | Bottom Sheet \u002F Dialog |\n| **Progress** | Spinner | Linear progress (Material) |\n| **Pull to Refresh** | Native UIRefreshControl | SwipeRefreshLayout |\n\n---\n\n## ? Mobile UX Psychology (Quick Reference)\n\n### Fitts' Law for Touch\n\n```\nDesktop: Cursor is precise (1px)\nMobile:  Finger is imprecise (~7mm contact area)\n\n→ Touch targets MUST be 44-48px minimum\n→ Important actions in THUMB ZONE (bottom of screen)\n→ Destructive actions AWAY from easy reach\n```\n\n### Thumb Zone (One-Handed Usage)\n\n```\n┌─────────────────────────────┐\n│      HARD TO REACH          │ ← Navigation, menu, back\n│        (stretch)            │\n├─────────────────────────────┤\n│      OK TO REACH            │ ← Secondary actions\n│       (natural)             │\n├─────────────────────────────┤\n│      EASY TO REACH          │ ← PRIMARY CTAs, tab bar\n│    (thumb's natural arc)    │ ← Main content interaction\n└─────────────────────────────┘\n        [  HOME  ]\n```\n\n### Mobile-Specific Cognitive Load\n\n| Desktop | Mobile Difference |\n|---------|-------------------|\n| Multiple windows | ONE task at a time |\n| Keyboard shortcuts | Touch gestures |\n| Hover states | NO hover (tap or nothing) |\n| Large viewport | Limited space, scroll vertical |\n| Stable attention | Interrupted constantly |\n\nFor deep dive: [touch-psychology.md](touch-psychology.md)\n\n---\n\n## ⚡ Performance Principles (Quick Reference)\n\n### React Native Critical Rules\n\n```typescript\n\u002F\u002F ✅ CORRECT: Memoized renderItem + React.memo wrapper\nconst ListItem = React.memo(({ item }: { item: Item }) => (\n  \u003CView style={styles.item}>\n    \u003CText>{item.title}\u003C\u002FText>\n  \u003C\u002FView>\n));\n\nconst renderItem = useCallback(\n  ({ item }: { item: Item }) => \u003CListItem item={item} \u002F>,\n  []\n);\n\n\u002F\u002F ✅ CORRECT: FlatList with all optimizations\n\u003CFlatList\n  data={items}\n  renderItem={renderItem}\n  keyExtractor={(item) => item.id}  \u002F\u002F Stable ID, NOT index\n  getItemLayout={(data, index) => ({\n    length: ITEM_HEIGHT,\n    offset: ITEM_HEIGHT * index,\n    index,\n  })}\n  removeClippedSubviews={true}\n  maxToRenderPerBatch={10}\n  windowSize={5}\n\u002F>\n```\n\n### Flutter Critical Rules\n\n```dart\n\u002F\u002F ✅ CORRECT: const constructors prevent rebuilds\nclass MyWidget extends StatelessWidget {\n  const MyWidget({super.key}); \u002F\u002F CONST!\n\n  @override\n  Widget build(BuildContext context) {\n    return const Column( \u002F\u002F CONST!\n      children: [\n        Text('Static content'),\n        MyConstantWidget(),\n      ],\n    );\n  }\n}\n\n\u002F\u002F ✅ CORRECT: Targeted state with ValueListenableBuilder\nValueListenableBuilder\u003Cint>(\n  valueListenable: counter,\n  builder: (context, value, child) => Text('$value'),\n  child: const ExpensiveWidget(), \u002F\u002F Won't rebuild!\n)\n```\n\n### Animation Performance\n\n```\nGPU-accelerated (FAST):     CPU-bound (SLOW):\n├── transform               ├── width, height\n├── opacity                 ├── top, left, right, bottom\n└── (use these ONLY)        ├── margin, padding\n                            └── (AVOID animating these)\n```\n\nFor complete guide: [mobile-performance.md](mobile-performance.md)\n\n---\n\n## ? CHECKPOINT (MANDATORY Before Any Mobile Work)\n\n> **Before writing ANY mobile code, you MUST complete this checkpoint:**\n\n```\n? CHECKPOINT:\n\nPlatform:   [ iOS \u002F Android \u002F Both ]\nFramework:  [ React Native \u002F Flutter \u002F SwiftUI \u002F Kotlin ]\nFiles Read: [ List the skill files you've read ]\n\n3 Principles I Will Apply:\n1. _______________\n2. _______________\n3. _______________\n\nAnti-Patterns I Will Avoid:\n1. _______________\n2. _______________\n```\n\n**Example:**\n```\n? CHECKPOINT:\n\nPlatform:   iOS + Android (Cross-platform)\nFramework:  React Native + Expo\nFiles Read: touch-psychology.md, mobile-performance.md, platform-ios.md, platform-android.md\n\n3 Principles I Will Apply:\n1. FlatList with React.memo + useCallback for all lists\n2. 48px touch targets, thumb zone for primary CTAs\n3. Platform-specific navigation (edge swipe iOS, back button Android)\n\nAnti-Patterns I Will Avoid:\n1. ScrollView for lists → FlatList\n2. Inline renderItem → Memoized\n3. AsyncStorage for tokens → SecureStore\n```\n\n> ? **Can't fill the checkpoint? → GO BACK AND READ THE SKILL FILES.**\n\n---\n\n## ? Framework Decision Tree\n\n```\nWHAT ARE YOU BUILDING?\n        │\n        ├── Need OTA updates + rapid iteration + web team\n        │   └── ✅ React Native + Expo\n        │\n        ├── Need pixel-perfect custom UI + performance critical\n        │   └── ✅ Flutter\n        │\n        ├── Deep native features + single platform focus\n        │   ├── iOS only → SwiftUI\n        │   └── Android only → Kotlin + Jetpack Compose\n        │\n        ├── Existing RN codebase + new features\n        │   └── ✅ React Native (bare workflow)\n        │\n        └── Enterprise + existing Flutter codebase\n            └── ✅ Flutter\n```\n\nFor complete decision trees: [decision-trees.md](decision-trees.md)\n\n---\n\n## ? Pre-Development Checklist\n\n### Before Starting ANY Mobile Project\n\n- [ ] **Platform confirmed?** (iOS \u002F Android \u002F Both)\n- [ ] **Framework chosen?** (RN \u002F Flutter \u002F Native)\n- [ ] **Navigation pattern decided?** (Tabs \u002F Stack \u002F Drawer)\n- [ ] **State management selected?** (Zustand \u002F Redux \u002F Riverpod \u002F BLoC)\n- [ ] **Offline requirements known?**\n- [ ] **Deep linking planned from day one?**\n- [ ] **Target devices defined?** (Phone \u002F Tablet \u002F Both)\n\n### Before Every Screen\n\n- [ ] **Touch targets ≥ 44-48px?**\n- [ ] **Primary CTA in thumb zone?**\n- [ ] **Loading state exists?**\n- [ ] **Error state with retry exists?**\n- [ ] **Offline handling considered?**\n- [ ] **Platform conventions followed?**\n\n### Before Release\n\n- [ ] **console.log removed?**\n- [ ] **SecureStore for sensitive data?**\n- [ ] **SSL pinning enabled?**\n- [ ] **Lists optimized (memo, keyExtractor)?**\n- [ ] **Memory cleanup on unmount?**\n- [ ] **Tested on low-end devices?**\n- [ ] **Accessibility labels on all interactive elements?**\n\n---\n\n## ? Reference Files\n\nFor deeper guidance on specific areas:\n\n| File | When to Use |\n|------|-------------|\n| [mobile-design-thinking.md](mobile-design-thinking.md) | **FIRST! Anti-memorization, forces context-based thinking** |\n| [touch-psychology.md](touch-psychology.md) | Understanding touch interaction, Fitts' Law, gesture design |\n| [mobile-performance.md](mobile-performance.md) | Optimizing RN\u002FFlutter, 60fps, memory\u002Fbattery |\n| [platform-ios.md](platform-ios.md) | iOS-specific design, HIG compliance |\n| [platform-android.md](platform-android.md) | Android-specific design, Material Design 3 |\n| [mobile-navigation.md](mobile-navigation.md) | Navigation patterns, deep linking |\n| [mobile-typography.md](mobile-typography.md) | Type scale, system fonts, accessibility |\n| [mobile-color-system.md](mobile-color-system.md) | OLED optimization, dark mode, battery |\n| [decision-trees.md](decision-trees.md) | Framework, state, storage decisions |\n\n---\n\n> **Remember:** Mobile users are impatient, interrupted, and using imprecise fingers on small screens. Design for the WORST conditions: bad network, one hand, bright sun, low battery. If it works there, it works everywhere.\n","# Mobile Design System\n\n> **Philosophy:** Touch-first. Battery-conscious. Platform-respectful. Offline-capable.\n> **Core Principle:** Mobile is NOT a small desktop. THINK mobile constraints, ASK platform choice.\n\n---\n\n## ? Runtime Scripts\n\n**Execute these for validation (don't read, just run):**\n\n| Script | Purpose | Usage |\n|--------|---------|-------|\n| `scripts\u002Fmobile_audit.py` | Mobile UX & Touch Audit | `python scripts\u002Fmobile_audit.py \u003Cproject_path>` |\n\n---\n\n## ? MANDATORY: Read Reference Files Before Working!\n\n**⛔ DO NOT start development until you read the relevant files:**\n\n### Universal (Always Read)\n\n| File | Content | Status |\n|------|---------|--------|\n| **[mobile-design-thinking.md](mobile-design-thinking.md)** | **⚠️ ANTI-MEMORIZATION: Forces thinking, prevents AI defaults** | **⬜ CRITICAL FIRST** |\n| **[touch-psychology.md](touch-psychology.md)** | **Fitts' Law, gestures, haptics, thumb zone** | **⬜ CRITICAL** |\n| **[mobile-performance.md](mobile-performance.md)** | **RN\u002FFlutter performance, 60fps, memory** | **⬜ CRITICAL** |\n| **[mobile-backend.md](mobile-backend.md)** | **Push notifications, offline sync, mobile API** | **⬜ CRITICAL** |\n| **[mobile-testing.md](mobile-testing.md)** | **Testing pyramid, E2E, platform-specific** | **⬜ CRITICAL** |\n| **[mobile-debugging.md](mobile-debugging.md)** | **Native vs JS debugging, Flipper, Logcat** | **⬜ CRITICAL** |\n| [mobile-navigation.md](mobile-navigation.md) | Tab\u002FStack\u002FDrawer, deep linking | ⬜ Read |\n| [mobile-typography.md](mobile-typography.md) | System fonts, Dynamic Type, a11y | ⬜ Read |\n| [mobile-color-system.md](mobile-color-system.md) | OLED, dark mode, battery-aware | ⬜ Read |\n| [decision-trees.md](decision-trees.md) | Framework\u002Fstate\u002Fstorage selection | ⬜ Read |\n\n> ? **mobile-design-thinking.md is PRIORITY!** This file ensures AI thinks instead of using memorized patterns.\n\n### Platform-Specific (Read Based on Target)\n\n| Platform | File | Content | When to Read |\n|----------|------|---------|--------------|\n| **iOS** | [platform-ios.md](platform-ios.md) | Human Interface Guidelines, SF Pro, SwiftUI patterns | Building for iPhone\u002FiPad |\n| **Android** | [platform-android.md](platform-android.md) | Material Design 3, Roboto, Compose patterns | Building for Android |\n| **Cross-Platform** | Both above | Platform divergence points | React Native \u002F Flutter |\n\n> ? **If building for iOS → Read platform-ios.md FIRST!**\n> ? **If building for Android → Read platform-android.md FIRST!**\n> ? **If cross-platform → Read BOTH and apply conditional platform logic!**\n\n---\n\n## ⚠️ CRITICAL: ASK BEFORE ASSUMING (MANDATORY)\n\n> **STOP! If the user's request is open-ended, DO NOT default to your favorites.**\n\n### You MUST Ask If Not Specified:\n\n| Aspect | Ask | Why |\n|--------|-----|-----|\n| **Platform** | \"iOS, Android, or both?\" | Affects EVERY design decision |\n| **Framework** | \"React Native, Flutter, or native?\" | Determines patterns and tools |\n| **Navigation** | \"Tab bar, drawer, or stack-based?\" | Core UX decision |\n| **State** | \"What state management? (Zustand\u002FRedux\u002FRiverpod\u002FBLoC?)\" | Architecture foundation |\n| **Offline** | \"Does this need to work offline?\" | Affects data strategy |\n| **Target devices** | \"Phone only, or tablet support?\" | Layout complexity |\n\n### ⛔ AI MOBILE ANTI-PATTERNS (YASAK LİSTESİ)\n\n> ? **These are AI default tendencies that MUST be avoided!**\n\n#### Performance Sins\n\n| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |\n|-------------|----------------|--------------|\n| **ScrollView for long lists** | Renders ALL items, memory explodes | Use `FlatList` \u002F `FlashList` \u002F `ListView.builder` |\n| **Inline renderItem function** | New function every render, all items re-render | `useCallback` + `React.memo` |\n| **Missing keyExtractor** | Index-based keys cause bugs on reorder | Unique, stable ID from data |\n| **Skip getItemLayout** | Async layout = janky scroll | Provide when items have fixed height |\n| **setState() everywhere** | Unnecessary widget rebuilds | Targeted state, `const` constructors |\n| **Native driver: false** | Animations blocked by JS thread | `useNativeDriver: true` always |\n| **console.log in production** | Blocks JS thread severely | Remove before release build |\n| **Skip React.memo\u002Fconst** | Every item re-renders on any change | Memoize list items ALWAYS |\n\n#### Touch\u002FUX Sins\n\n| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |\n|-------------|----------------|--------------|\n| **Touch target \u003C 44px** | Impossible to tap accurately, frustrating | Minimum 44pt (iOS) \u002F 48dp (Android) |\n| **Spacing \u003C 8px between targets** | Accidental taps on neighbors | Minimum 8-12px gap |\n| **Gesture-only interactions** | Motor impaired users excluded | Always provide button alternative |\n| **No loading state** | User thinks app crashed | ALWAYS show loading feedback |\n| **No error state** | User stuck, no recovery path | Show error with retry option |\n| **No offline handling** | Crash\u002Fblock when network lost | Graceful degradation, cached data |\n| **Ignore platform conventions** | Users confused, muscle memory broken | iOS feels iOS, Android feels Android |\n\n#### Security Sins\n\n| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |\n|-------------|----------------|--------------|\n| **Token in AsyncStorage** | Easily accessible, stolen on rooted device | `SecureStore` \u002F `Keychain` \u002F `EncryptedSharedPreferences` |\n| **Hardcode API keys** | Reverse engineered from APK\u002FIPA | Environment variables, secure storage |\n| **Skip SSL pinning** | MITM attacks possible | Pin certificates in production |\n| **Log sensitive data** | Logs can be extracted | Never log tokens, passwords, PII |\n\n#### Architecture Sins\n\n| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |\n|-------------|----------------|--------------|\n| **Business logic in UI** | Untestable, unmaintainable | Service layer separation |\n| **Global state for everything** | Unnecessary re-renders, complexity | Local state default, lift when needed |\n| **Deep linking as afterthought** | Notifications, shares broken | Plan deep links from day one |\n| **Skip dispose\u002Fcleanup** | Memory leaks, zombie listeners | Clean up subscriptions, timers |\n\n---\n\n## ? Platform Decision Matrix\n\n### When to Unify vs Diverge\n\n```\n                    UNIFY (same on both)          DIVERGE (platform-specific)\n                    ───────────────────           ──────────────────────────\nBusiness Logic      ✅ Always                     -\nData Layer          ✅ Always                     -\nCore Features       ✅ Always                     -\n                    \nNavigation          -                             ✅ iOS: edge swipe, Android: back button\nGestures            -                             ✅ Platform-native feel\nIcons               -                             ✅ SF Symbols vs Material Icons\nDate Pickers        -                             ✅ Native pickers feel right\nModals\u002FSheets       -                             ✅ iOS: bottom sheet vs Android: dialog\nTypography          -                             ✅ SF Pro vs Roboto (or custom)\nError Dialogs       -                             ✅ Platform conventions for alerts\n```\n\n### Quick Reference: Platform Defaults\n\n| Element | iOS | Android |\n|---------|-----|---------|\n| **Primary Font** | SF Pro \u002F SF Compact | Roboto |\n| **Min Touch Target** | 44pt × 44pt | 48dp × 48dp |\n| **Back Navigation** | Edge swipe left | System back button\u002Fgesture |\n| **Bottom Tab Icons** | SF Symbols | Material Symbols |\n| **Action Sheet** | UIActionSheet from bottom | Bottom Sheet \u002F Dialog |\n| **Progress** | Spinner | Linear progress (Material) |\n| **Pull to Refresh** | Native UIRefreshControl | SwipeRefreshLayout |\n\n---\n\n## ? Mobile UX Psychology (Quick Reference)\n\n### Fitts' Law for Touch\n\n```\nDesktop: Cursor is precise (1px)\nMobile:  Finger is imprecise (~7mm contact area)\n\n→ Touch targets MUST be 44-48px minimum\n→ Important actions in THUMB ZONE (bottom of screen)\n→ Destructive actions AWAY from easy reach\n```\n\n### Thumb Zone (One-Handed Usage)\n\n```\n┌─────────────────────────────┐\n│      HARD TO REACH          │ ← Navigation, menu, back\n│        (stretch)            │\n├─────────────────────────────┤\n│      OK TO REACH            │ ← Secondary actions\n│       (natural)             │\n├─────────────────────────────┤\n│      EASY TO REACH          │ ← PRIMARY CTAs, tab bar\n│    (thumb's natural arc)    │ ← Main content interaction\n└─────────────────────────────┘\n        [  HOME  ]\n```\n\n### Mobile-Specific Cognitive Load\n\n| Desktop | Mobile Difference |\n|---------|-------------------|\n| Multiple windows | ONE task at a time |\n| Keyboard shortcuts | Touch gestures |\n| Hover states | NO hover (tap or nothing) |\n| Large viewport | Limited space, scroll vertical |\n| Stable attention | Interrupted constantly |\n\nFor deep dive: [touch-psychology.md](touch-psychology.md)\n\n---\n\n## ⚡ Performance Principles (Quick Reference)\n\n### React Native Critical Rules\n\n```typescript\n\u002F\u002F ✅ CORRECT: Memoized renderItem + React.memo wrapper\nconst ListItem = React.memo(({ item }: { item: Item }) => (\n  \u003CView style={styles.item}>\n    \u003CText>{item.title}\u003C\u002FText>\n  \u003C\u002FView>\n));\n\nconst renderItem = useCallback(\n  ({ item }: { item: Item }) => \u003CListItem item={item} \u002F>,\n  []\n);\n\n\u002F\u002F ✅ CORRECT: FlatList with all optimizations\n\u003CFlatList\n  data={items}\n  renderItem={renderItem}\n  keyExtractor={(item) => item.id}  \u002F\u002F Stable ID, NOT index\n  getItemLayout={(data, index) => ({\n    length: ITEM_HEIGHT,\n    offset: ITEM_HEIGHT * index,\n    index,\n  })}\n  removeClippedSubviews={true}\n  maxToRenderPerBatch={10}\n  windowSize={5}\n\u002F>\n```\n\n### Flutter Critical Rules\n\n```dart\n\u002F\u002F ✅ CORRECT: const constructors prevent rebuilds\nclass MyWidget extends StatelessWidget {\n  const MyWidget({super.key}); \u002F\u002F CONST!\n\n  @override\n  Widget build(BuildContext context) {\n    return const Column( \u002F\u002F CONST!\n      children: [\n        Text('Static content'),\n        MyConstantWidget(),\n      ],\n    );\n  }\n}\n\n\u002F\u002F ✅ CORRECT: Targeted state with ValueListenableBuilder\nValueListenableBuilder\u003Cint>(\n  valueListenable: counter,\n  builder: (context, value, child) => Text('$value'),\n  child: const ExpensiveWidget(), \u002F\u002F Won't rebuild!\n)\n```\n\n### Animation Performance\n\n```\nGPU-accelerated (FAST):     CPU-bound (SLOW):\n├── transform               ├── width, height\n├── opacity                 ├── top, left, right, bottom\n└── (use these ONLY)        ├── margin, padding\n                            └── (AVOID animating these)\n```\n\nFor complete guide: [mobile-performance.md](mobile-performance.md)\n\n---\n\n## ? CHECKPOINT (MANDATORY Before Any Mobile Work)\n\n> **Before writing ANY mobile code, you MUST complete this checkpoint:**\n\n```\n? CHECKPOINT:\n\nPlatform:   [ iOS \u002F Android \u002F Both ]\nFramework:  [ React Native \u002F Flutter \u002F SwiftUI \u002F Kotlin ]\nFiles Read: [ List the skill files you've read ]\n\n3 Principles I Will Apply:\n1. _______________\n2. _______________\n3. _______________\n\nAnti-Patterns I Will Avoid:\n1. _______________\n2. _______________\n```\n\n**Example:**\n```\n? CHECKPOINT:\n\nPlatform:   iOS + Android (Cross-platform)\nFramework:  React Native + Expo\nFiles Read: touch-psychology.md, mobile-performance.md, platform-ios.md, platform-android.md\n\n3 Principles I Will Apply:\n1. FlatList with React.memo + useCallback for all lists\n2. 48px touch targets, thumb zone for primary CTAs\n3. Platform-specific navigation (edge swipe iOS, back button Android)\n\nAnti-Patterns I Will Avoid:\n1. ScrollView for lists → FlatList\n2. Inline renderItem → Memoized\n3. AsyncStorage for tokens → SecureStore\n```\n\n> ? **Can't fill the checkpoint? → GO BACK AND READ THE SKILL FILES.**\n\n---\n\n## ? Framework Decision Tree\n\n```\nWHAT ARE YOU BUILDING?\n        │\n        ├── Need OTA updates + rapid iteration + web team\n        │   └── ✅ React Native + Expo\n        │\n        ├── Need pixel-perfect custom UI + performance critical\n        │   └── ✅ Flutter\n        │\n        ├── Deep native features + single platform focus\n        │   ├── iOS only → SwiftUI\n        │   └── Android only → Kotlin + Jetpack Compose\n        │\n        ├── Existing RN codebase + new features\n        │   └── ✅ React Native (bare workflow)\n        │\n        └── Enterprise + existing Flutter codebase\n            └── ✅ Flutter\n```\n\nFor complete decision trees: [decision-trees.md](decision-trees.md)\n\n---\n\n## ? Pre-Development Checklist\n\n### Before Starting ANY Mobile Project\n\n- [ ] **Platform confirmed?** (iOS \u002F Android \u002F Both)\n- [ ] **Framework chosen?** (RN \u002F Flutter \u002F Native)\n- [ ] **Navigation pattern decided?** (Tabs \u002F Stack \u002F Drawer)\n- [ ] **State management selected?** (Zustand \u002F Redux \u002F Riverpod \u002F BLoC)\n- [ ] **Offline requirements known?**\n- [ ] **Deep linking planned from day one?**\n- [ ] **Target devices defined?** (Phone \u002F Tablet \u002F Both)\n\n### Before Every Screen\n\n- [ ] **Touch targets ≥ 44-48px?**\n- [ ] **Primary CTA in thumb zone?**\n- [ ] **Loading state exists?**\n- [ ] **Error state with retry exists?**\n- [ ] **Offline handling considered?**\n- [ ] **Platform conventions followed?**\n\n### Before Release\n\n- [ ] **console.log removed?**\n- [ ] **SecureStore for sensitive data?**\n- [ ] **SSL pinning enabled?**\n- [ ] **Lists optimized (memo, keyExtractor)?**\n- [ ] **Memory cleanup on unmount?**\n- [ ] **Tested on low-end devices?**\n- [ ] **Accessibility labels on all interactive elements?**\n\n---\n\n## ? Reference Files\n\nFor deeper guidance on specific areas:\n\n| File | When to Use |\n|------|-------------|\n| [mobile-design-thinking.md](mobile-design-thinking.md) | **FIRST! Anti-memorization, forces context-based thinking** |\n| [touch-psychology.md](touch-psychology.md) | Understanding touch interaction, Fitts' Law, gesture design |\n| [mobile-performance.md](mobile-performance.md) | Optimizing RN\u002FFlutter, 60fps, memory\u002Fbattery |\n| [platform-ios.md](platform-ios.md) | iOS-specific design, HIG compliance |\n| [platform-android.md](platform-android.md) | Android-specific design, Material Design 3 |\n| [mobile-navigation.md](mobile-navigation.md) | Navigation patterns, deep linking |\n| [mobile-typography.md](mobile-typography.md) | Type scale, system fonts, accessibility |\n| [mobile-color-system.md](mobile-color-system.md) | OLED optimization, dark mode, battery |\n| [decision-trees.md](decision-trees.md) | Framework, state, storage decisions |\n\n---\n\n> **Remember:** Mobile users are impatient, interrupted, and using imprecise fingers on small screens. Design for the WORST conditions: bad network, one hand, bright sun, low battery. If it works there, it works everywhere.\n",{"name":5,"description":7,"allowed-tools":57},"Read, Glob, Grep, Bash","main","b04f8c98dcf3dfacf4e2aff1eae92616ed12d83d",".agent\u002Fskills\u002Fmobile-design","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE","2026-04-10 19:41:10",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add LOrdEnRYQuE\u002FLRDEnE-Ai-Specialist --skill mobile-design",{"tool":70,"command":71},"bunx","bunx skills add LOrdEnRYQuE\u002FLRDEnE-Ai-Specialist --skill mobile-design",{"tool":73,"command":74},"pnpm","pnpm dlx skills add LOrdEnRYQuE\u002FLRDEnE-Ai-Specialist --skill mobile-design","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002FSKILL.md",true,[78,84,88,92,96,100,104,108,112,116,120,124,130],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"decision-trees.md","REFERENCE","参考文档",16320,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fdecision-trees.md",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"mobile-backend.md",14686,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fmobile-backend.md",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"mobile-color-system.md",10211,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fmobile-color-system.md",{"path":93,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":94,"sourceHtmlUrl":95},"mobile-debugging.md",4250,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fmobile-debugging.md",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"mobile-design-thinking.md",17227,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fmobile-design-thinking.md",{"path":101,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":102,"sourceHtmlUrl":103},"mobile-navigation.md",11855,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fmobile-navigation.md",{"path":105,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":106,"sourceHtmlUrl":107},"mobile-performance.md",19305,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fmobile-performance.md",{"path":109,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":110,"sourceHtmlUrl":111},"mobile-testing.md",11027,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fmobile-testing.md",{"path":113,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":114,"sourceHtmlUrl":115},"mobile-typography.md",10717,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fmobile-typography.md",{"path":117,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":118,"sourceHtmlUrl":119},"platform-android.md",19541,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fplatform-android.md",{"path":121,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":122,"sourceHtmlUrl":123},"platform-ios.md",17127,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fplatform-ios.md",{"path":125,"resourceType":126,"resourceTypeDesc":127,"sizeBytes":128,"sourceHtmlUrl":129},"scripts\u002Fmobile_audit.py","SCRIPT","脚本",35976,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Fscripts\u002Fmobile_audit.py",{"path":131,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":132,"sourceHtmlUrl":133},"touch-psychology.md",16848,"https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Fmobile-design\u002Ftouch-psychology.md",[135,161,192,220,226,235],{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":52},"01M6QPEC0HA7GF9HY9S3YDF256","WebApp Architect","Plan, build, refactor, debug, and prepare web applications end-to-end. Activate for greenfield builds, feature additions, architecture reviews, and deployment prep.","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002Fadapters\u002Fwindsurf\u002F.agents\u002Fskills\u002Fwebapp-architect\u002FSKILL.md",[],[142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,36],"webapp architect","webapp","architect","web","architecture","prepare","debug","deployment","refactor","applications","plan","repo","build","activate","scan","feature","end","reviews","prep",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":173,"publishedAt":52},"01M6QPE68RNE5PWPC2CPK7ZHCZ","SEO Growth Auditor","Perform technical and on-page SEO audits, generate schema markup, and produce prioritized action reports. Activate for site launches, ranking improvements, and metadata fixes.","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002Fadapters\u002Fwindsurf\u002F.agents\u002Fskills\u002Fseo-auditor\u002FSKILL.md",[167,170],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000019","营销推广",{"categoryNo":171,"categoryName":172,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000035","市场营销",[174,175,176,177,36,178,179,180,181,182,183,184,185,186,187,188,189,190,191,155],"seo","seo growth auditor","auditor","growth","fixes","action","reports","ranking","crawl","generate","produce","metadata","audit","schema markup","site","page","technical","schema",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":201,"publishedAt":52},"01M6QPDSN4KMHFS4CTEMN3520Q","GDPR Compliance Copilot","Identify GDPR compliance gaps, map data flows, generate DSAR templates, and prepare privacy policy inputs. Always requires human legal review.","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002Fadapters\u002Fwindsurf\u002F.agents\u002Fskills\u002Fgdpr-copilot\u002FSKILL.md",[198],{"categoryNo":199,"categoryName":200,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000037","律师与法务",[194,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,183],"gdpr compliance","gdpr","compliance","copilot","legal review","report","policy","privacy","flow","templates","dsar","map","human","gap","review","flows","privacy policy","gaps",{"skillNo":221,"name":222,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":223,"categories":224,"keywords":225,"publishedAt":52},"01M6QPDR5FMXB4X0960JKCMK80","webapp-architect","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002Fadapters\u002Fcursor\u002Fskills\u002Fwebapp-architect\u002FSKILL.md",[],[142,143,144],{"skillNo":227,"name":228,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":233,"publishedAt":52},"01M6QPDM6FZDXXQS2KRJT1YD8P","seo-auditor","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002Fadapters\u002Fcursor\u002Fskills\u002Fseo-auditor\u002FSKILL.md",[231,232],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":171,"categoryName":172,"taxonomyType":29,"taxonomyTypeDesc":30},[174,234,176],"seo auditor",{"skillNo":236,"name":237,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":238,"categories":239,"keywords":240,"publishedAt":52},"01M6QPDGEH5RE1VEY57YZ1GA1Q","gdpr-copilot","https:\u002F\u002Fgithub.com\u002FLOrdEnRYQuE\u002FLRDEnE-Ai-Specialist\u002Fblob\u002Fmain\u002Fadapters\u002Fcursor\u002Fskills\u002Fgdpr-copilot\u002FSKILL.md",[],[205,203,241],"gdpr copilot"]