[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KCMR2WVBEC7T0YY4J2SCAR":3,"skill-same:01M6KCMR2WVBEC7T0YY4J2SCAR":75},{"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":26,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6KCMR2WVBEC7T0YY4J2SCAR","mobiai-react-native",null,"Use when working on a React Native project — building, testing, debugging, understanding navigation and state management.","ArisGuimera\u002FMobiAI-Core","ArisGuimera","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F16361358?v=4","01M6KC5MVGRKDA14DWT98445V9","AristiDevs","01M6KC5MZKRFFHFFD340B21YN3",492,"MIT","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Freact-native\u002Fskills\u002Fmobiai-react-native\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"mobiai react native","react","native","react native","cursor","project","claude-code","react-native","navigation","use","testing","management","state","code","state management","debugging","copilot","codex","2026-11-10 10:12:30",false,"---\nname: mobiai-react-native\ndescription: Use when working on a React Native project — building, testing, debugging, understanding navigation and state management.\nlicense: MIT\ncompatibility: [claude-code, cursor, copilot, codex]\nplatforms: [react-native]\n---\n\n# React Native\n\n> **Community contribution welcome!** Help flesh out this skill with React Native patterns, debugging tips, and real-world workflows.\n\nGuide for working with React Native projects.\n\n## When to Use\n\n- Working on a React Native project\n- Debugging JavaScript\u002FTypeScript issues, native module problems, or navigation bugs\n- Writing tests for React Native code\n\n## Detecting a React Native Project\n\n```bash\n# Check for React Native indicators\nls metro.config.js app.json package.json android\u002F ios\u002F 2>\u002Fdev\u002Fnull\ngrep \"react-native\" package.json | head -5\ncat app.json 2>\u002Fdev\u002Fnull | head -10\n```\n\n## Project Structure\n\n```\nproject\u002F\n  src\u002F\n    screens\u002F\n      HomeScreen.tsx\n      DetailScreen.tsx\n    components\u002F\n      Button.tsx\n      Card.tsx\n    navigation\u002F\n      AppNavigator.tsx\n    hooks\u002F\n      useItems.ts\n    services\u002F\n      api.ts\n    store\u002F                        # State management\n      slices\u002F\n        itemSlice.ts\n  __tests__\u002F\n    HomeScreen.test.tsx\n  android\u002F                        # Native Android code\n  ios\u002F                            # Native iOS code\n  package.json\n  metro.config.js\n  app.json\n  tsconfig.json\n```\n\n## Build & Run\n\n```bash\n# Start Metro bundler\nnpx react-native start\n\n# Run on Android\nnpx react-native run-android\n\n# Run on iOS\nnpx react-native run-ios\n\n# Run on specific simulator\nnpx react-native run-ios --simulator=\"iPhone 15 Pro\"\n\n# Clean build\ncd android && .\u002Fgradlew clean && cd ..\ncd ios && xcodebuild clean && cd ..\n\n# Install dependencies\nnpm install  # or yarn install\ncd ios && pod install && cd ..\n```\n\n## State Management Detection\n\n```bash\n# Redux \u002F Redux Toolkit\ngrep -r \"redux\\|@reduxjs\u002Ftoolkit\\|createSlice\\|configureStore\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n\n# Zustand\ngrep -r \"zustand\\|create(\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n\n# MobX\ngrep -r \"mobx\\|observable\\|@observer\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n\n# React Query \u002F TanStack Query\ngrep -r \"react-query\\|@tanstack\u002Freact-query\\|useQuery\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n\n# Context API\ngrep -r \"createContext\\|useContext\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n```\n\n## Testing\n\n### Unit Tests (Jest)\n\n```typescript\n\u002F\u002F __tests__\u002FuseItems.test.ts\nimport { renderHook, act } from '@testing-library\u002Freact-hooks';\nimport { useItems } from '..\u002Fsrc\u002Fhooks\u002FuseItems';\n\ndescribe('useItems', () => {\n  it('returns empty array initially', () => {\n    const { result } = renderHook(() => useItems());\n    expect(result.current.items).toEqual([]);\n  });\n\n  it('loads items on fetch', async () => {\n    const { result, waitForNextUpdate } = renderHook(() => useItems());\n    act(() => { result.current.fetchItems(); });\n    await waitForNextUpdate();\n    expect(result.current.items).toHaveLength(3);\n  });\n});\n```\n\n### Component Tests\n\n```typescript\nimport { render, fireEvent } from '@testing-library\u002Freact-native';\nimport { HomeScreen } from '..\u002Fsrc\u002Fscreens\u002FHomeScreen';\n\ndescribe('HomeScreen', () => {\n  it('renders title', () => {\n    const { getByText } = render(\u003CHomeScreen \u002F>);\n    expect(getByText('Home')).toBeTruthy();\n  });\n\n  it('navigates on button press', () => {\n    const navigate = jest.fn();\n    const { getByText } = render(\n      \u003CHomeScreen navigation={{ navigate }} \u002F>\n    );\n    fireEvent.press(getByText('Go to Details'));\n    expect(navigate).toHaveBeenCalledWith('Details');\n  });\n});\n```\n\n### Run Tests\n\n```bash\n# All tests\nnpx jest\n\n# Specific file\nnpx jest __tests__\u002FHomeScreen.test.tsx\n\n# Watch mode\nnpx jest --watch\n\n# With coverage\nnpx jest --coverage\n```\n\n## Common Issues\n\n- **Metro bundler cache**: `npx react-native start --reset-cache`\n- **Native module linking**: `cd ios && pod install && cd ..`\n- **Android build failure**: `cd android && .\u002Fgradlew clean`\n- **TypeScript errors**: `npx tsc --noEmit`\n- **Flipper issues**: Check if Flipper is properly configured in native code\n\n## Debugging\n\n```bash\n# Check for JavaScript errors in Android logcat\nadb logcat | grep ReactNativeJS\n\n# Check for native errors\nadb logcat | grep -E \"FATAL|crash|Exception\"\n\n# iOS logs\nxcrun simctl spawn booted log stream --predicate 'process == \"MyApp\"'\n```\n\n## Navigation\n\n```bash\n# Detect navigation library\ngrep -r \"react-navigation\\|@react-navigation\" package.json\ngrep -r \"react-native-navigation\" package.json  # Wix navigation\n```\n\n---\n\n**Want to improve this skill?** Share your React Native expertise, architecture patterns, and native module tips via a PR.\n","# React Native\n\n> **Community contribution welcome!** Help flesh out this skill with React Native patterns, debugging tips, and real-world workflows.\n\nGuide for working with React Native projects.\n\n## When to Use\n\n- Working on a React Native project\n- Debugging JavaScript\u002FTypeScript issues, native module problems, or navigation bugs\n- Writing tests for React Native code\n\n## Detecting a React Native Project\n\n```bash\n# Check for React Native indicators\nls metro.config.js app.json package.json android\u002F ios\u002F 2>\u002Fdev\u002Fnull\ngrep \"react-native\" package.json | head -5\ncat app.json 2>\u002Fdev\u002Fnull | head -10\n```\n\n## Project Structure\n\n```\nproject\u002F\n  src\u002F\n    screens\u002F\n      HomeScreen.tsx\n      DetailScreen.tsx\n    components\u002F\n      Button.tsx\n      Card.tsx\n    navigation\u002F\n      AppNavigator.tsx\n    hooks\u002F\n      useItems.ts\n    services\u002F\n      api.ts\n    store\u002F                        # State management\n      slices\u002F\n        itemSlice.ts\n  __tests__\u002F\n    HomeScreen.test.tsx\n  android\u002F                        # Native Android code\n  ios\u002F                            # Native iOS code\n  package.json\n  metro.config.js\n  app.json\n  tsconfig.json\n```\n\n## Build & Run\n\n```bash\n# Start Metro bundler\nnpx react-native start\n\n# Run on Android\nnpx react-native run-android\n\n# Run on iOS\nnpx react-native run-ios\n\n# Run on specific simulator\nnpx react-native run-ios --simulator=\"iPhone 15 Pro\"\n\n# Clean build\ncd android && .\u002Fgradlew clean && cd ..\ncd ios && xcodebuild clean && cd ..\n\n# Install dependencies\nnpm install  # or yarn install\ncd ios && pod install && cd ..\n```\n\n## State Management Detection\n\n```bash\n# Redux \u002F Redux Toolkit\ngrep -r \"redux\\|@reduxjs\u002Ftoolkit\\|createSlice\\|configureStore\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n\n# Zustand\ngrep -r \"zustand\\|create(\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n\n# MobX\ngrep -r \"mobx\\|observable\\|@observer\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n\n# React Query \u002F TanStack Query\ngrep -r \"react-query\\|@tanstack\u002Freact-query\\|useQuery\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n\n# Context API\ngrep -r \"createContext\\|useContext\" src\u002F --include=\"*.ts\" --include=\"*.tsx\" | head -5\n```\n\n## Testing\n\n### Unit Tests (Jest)\n\n```typescript\n\u002F\u002F __tests__\u002FuseItems.test.ts\nimport { renderHook, act } from '@testing-library\u002Freact-hooks';\nimport { useItems } from '..\u002Fsrc\u002Fhooks\u002FuseItems';\n\ndescribe('useItems', () => {\n  it('returns empty array initially', () => {\n    const { result } = renderHook(() => useItems());\n    expect(result.current.items).toEqual([]);\n  });\n\n  it('loads items on fetch', async () => {\n    const { result, waitForNextUpdate } = renderHook(() => useItems());\n    act(() => { result.current.fetchItems(); });\n    await waitForNextUpdate();\n    expect(result.current.items).toHaveLength(3);\n  });\n});\n```\n\n### Component Tests\n\n```typescript\nimport { render, fireEvent } from '@testing-library\u002Freact-native';\nimport { HomeScreen } from '..\u002Fsrc\u002Fscreens\u002FHomeScreen';\n\ndescribe('HomeScreen', () => {\n  it('renders title', () => {\n    const { getByText } = render(\u003CHomeScreen \u002F>);\n    expect(getByText('Home')).toBeTruthy();\n  });\n\n  it('navigates on button press', () => {\n    const navigate = jest.fn();\n    const { getByText } = render(\n      \u003CHomeScreen navigation={{ navigate }} \u002F>\n    );\n    fireEvent.press(getByText('Go to Details'));\n    expect(navigate).toHaveBeenCalledWith('Details');\n  });\n});\n```\n\n### Run Tests\n\n```bash\n# All tests\nnpx jest\n\n# Specific file\nnpx jest __tests__\u002FHomeScreen.test.tsx\n\n# Watch mode\nnpx jest --watch\n\n# With coverage\nnpx jest --coverage\n```\n\n## Common Issues\n\n- **Metro bundler cache**: `npx react-native start --reset-cache`\n- **Native module linking**: `cd ios && pod install && cd ..`\n- **Android build failure**: `cd android && .\u002Fgradlew clean`\n- **TypeScript errors**: `npx tsc --noEmit`\n- **Flipper issues**: Check if Flipper is properly configured in native code\n\n## Debugging\n\n```bash\n# Check for JavaScript errors in Android logcat\nadb logcat | grep ReactNativeJS\n\n# Check for native errors\nadb logcat | grep -E \"FATAL|crash|Exception\"\n\n# iOS logs\nxcrun simctl spawn booted log stream --predicate 'process == \"MyApp\"'\n```\n\n## Navigation\n\n```bash\n# Detect navigation library\ngrep -r \"react-navigation\\|@react-navigation\" package.json\ngrep -r \"react-native-navigation\" package.json  # Wix navigation\n```\n\n---\n\n**Want to improve this skill?** Share your React Native expertise, architecture patterns, and native module tips via a PR.\n",{"name":5,"license":15,"platforms":50,"description":7,"compatibility":51},[34],[33,31,43,44],"main","2edc6ac1cde2cc280ae0388aa8072902d2e230d5","skills\u002Freact-native\u002Fskills\u002Fmobiai-react-native",13,"https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core","https:\u002F\u002Fgithub.com\u002FArisGuimera","https:\u002F\u002Faristi.dev","⭐️ GitHub Star\r\n📲 Mobile developer\r\n🎥 Te enseño a programar apps en Youtube (AristiDevs)\r\n✍🏻 Y por escrito en CursoKotlin.com\r\n❤️ Kotlin Fanboy\r\n👇👇👇👇","2026-11-09 14:18:52",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-react-native",{"tool":67,"command":68},"bunx","bunx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-react-native",{"tool":70,"command":71},"pnpm","pnpm dlx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-react-native","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Freact-native\u002Fskills\u002Fmobiai-react-native\u002FSKILL.md",true,[],[76,89,108,126,140,160],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":83,"publishedAt":45},"01M6KCMKFC3DKFW5B2208SM59W","mobiai-kmp","Use when working on a Kotlin Multiplatform project — shared code, expect\u002Factual declarations, platform-specific implementations, building and testing.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fkmp\u002Fskills\u002Fmobiai-kmp\u002FSKILL.md",[82],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[84,37,44,43,40,85,86,31,36,33,87,32,88],"mobiai kmp","kotlin","kotlin multiplatform","shared","platform",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":45},"01M6KCMEC4YP1FFAX4ZX80Q10R","mobiai-ios-testing","Use when writing or running tests in an iOS project — unit tests, UI tests, snapshot tests, choosing the right framework.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fios\u002Fskills\u002Fmobiai-ios-testing\u002FSKILL.md",[95],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[37,97,98,99,100,44,101,43,40,102,103,104,31,105,36,33,32,106,107],"ios","ios testing","mobiai ios testing","writing","unit tests","framework","running tests","ui","snapshot","tests","unit",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":45},"01M6KCM78C8P9R6X78EZCQ0YF9","mobiai-ios-device","Use when interacting with an iOS Simulator — run simctl commands, capture screenshots, read device logs, manage simulators.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fios\u002Fskills\u002Fmobiai-ios-device\u002FSKILL.md",[],[97,115,116,117,44,43,118,40,119,120,121,31,36,122,123,33,124,125],"device","mobiai ios device","screenshots","run","logs","capture","read","manage","ios simulator","commands","with",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":45},"01M6KCM2HE6Z1B7WREJ9DTKKWA","mobiai-ios-build","Use when building an iOS project, configuring schemes, troubleshooting build failures, or managing dependencies with CocoaPods or SPM.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fios\u002Fskills\u002Fmobiai-ios-build\u002FSKILL.md",[],[97,133,134,135,44,43,40,136,31,36,137,33,32,125,138,139],"build","ios build","mobiai ios build","troubleshooting","dependencies","spm","cocoapods",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":45},"01M6KCKWZNT8P6K5SYXE1YAT9E","mobiai-ios-architecture","Use when creating features, refactoring, or navigating an iOS codebase — understand project structure, find where to make changes, follow existing patterns.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fios\u002Fskills\u002Fmobiai-ios-architecture\u002FSKILL.md",[],[147,97,148,149,44,150,43,40,151,152,31,36,153,154,32,155,156,157,158,159],"architecture","ios architecture","mobiai ios architecture","project structure","refactoring","find","patterns","structure","understand","changes","codebase","Existing","features",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":167,"publishedAt":45},"01M6KCKBZ4CGTMW6GCAZW54QRM","mobiai-flutter","Use when working on a Flutter or Dart project — building, testing, debugging, understanding state management and project structure.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fflutter\u002Fskills\u002Fmobiai-flutter\u002FSKILL.md",[166],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[168,169,37,44,150,43,42,41,40,39,170,38,31,36,154,33,32],"flutter","mobiai flutter","dart"]