界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
开发与工程 · SKILL.md

mobile-developer

mobile-developer

【开发与工程】Expert mobile developer for React Native, native Swift/SwiftUI, Kotlin/Compose, and mobile CI/CD (Fastlane, Codemagic, Bitrise, EAS). Use for everything mobile that flutter-mobile does NOT cover. For Flutter 3.41.x work, use flutter-mobile skill instead.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: mobile-developer description: Expert mobile developer for React Native, native Swift/SwiftUI, Kotlin/Compose, and mobile CI/CD (Fastlane, Codemagic, Bitrise, EAS). Use for everything mobile that flutter-mobile does NOT cover. For Flutter 3.41.x work, use flutter-mobile skill instead. allowed-tools: Bash, Read, Write, Edit, Glob, Grep metadata: triggers: React Native, React Native New Architecture, Hermes, TurboModules, SwiftUI, Kotlin Compose, Fastlane, Codemagic, Bitrise, EAS Update, CodePush, Detox, native module, brownfield, Expo, MAUI related-skills: flutter-mobile, mobile-design domain: frontend role: specialist scope: implementation output-format: code last-reviewed: "2026-03-15"

Iron Law

FOR FLUTTER WORK — USE flutter-mobile SKILL INSTEAD. This skill is for React Native, native Swift/Kotlin, and mobile CI/CD only.

Mobile Developer Skill

Disambiguation — Which Skill to Use

TaskUse This SkillUse flutter-mobile Instead
React Native appYESNo
Flutter screen/provider/widgetNoYES
Native Swift/SwiftUI moduleYESNo
Native Kotlin/Compose moduleYESNo
Fastlane lanes / Codemagic pipelineYESNo
EAS Update / CodePush OTAYESNo
Flutter CI/CD (GitHub Actions, build)No — use deployment-engineer agentNo
Detox E2E (React Native)YESNo
Maestro E2E (Flutter)NoYES (via flutter-mobile)
App Store signing (any)NoNo — use asc-signing-setup skill

Capabilities

1. React Native (RN 0.74+, New Architecture)

New Architecture (Fabric renderer, TurboModules, JSI), Hermes engine, Metro bundler configuration, Flipper debugging, Codegen for typed native modules, and the bridge-free JSI layer for synchronous native calls.

2. Expo (SDK 50+)

EAS Build for managed and bare workflows, EAS Update for over-the-air JS bundle delivery, development builds with custom native code, config plugins for extending native projects without ejecting.

3. Native Integration

Swift/SwiftUI platform channel implementations (method channels, event channels), Kotlin/Compose native module authoring, brownfield integration (embedding RN screens in an existing native app or vice versa).

4. Architecture

Clean Architecture for React Native (data/domain/presentation layers), MVVM with React Query or Zustand, MVI with Redux Toolkit, BLoC pattern adapted for RN, feature-first folder structure mirroring the flutter-mobile convention.

5. Performance

App startup time reduction (Hermes bytecode, lazy loading), memory leak detection (Flipper Memory Monitor, Instruments, Android Profiler), battery impact analysis, FlatList/FlashList virtualization, Reanimated 3 for 60fps UI-thread animations, InteractionManager for deferred heavy work.

6. Data Management

Realm for complex relational offline data, WatermelonDB for high-performance sync, MMKV for fast key-value storage, offline-first sync patterns with conflict resolution (last-write-wins, CRDT), background sync with WorkManager (Android) and BGTaskScheduler (iOS).

7. Mobile CI/CD

Fastlane lanes (match for code signing, gym for builds, pilot/deliver for distribution), Codemagic YAML workflows, Bitrise pipelines, GitHub Actions with mobile-specific caching (CocoaPods, Gradle), CodePush for hotfix OTA, EAS Update for Expo-managed OTA.

8. Testing

Jest unit tests with @testing-library/react-native, Detox for black-box E2E on device/emulator, Maestro for declarative E2E (RN and native), XCTest for Swift unit tests, Firebase Test Lab and Bitrise device farm for multi-device coverage.

9. Security

OWASP MASVS compliance (MASVS-STORAGE, MASVS-CRYPTO, MASVS-NETWORK, MASVS-AUTH), react-native-keychain / expo-secure-store for credential storage, certificate pinning via react-native-ssl-pinning or TrustKit (iOS), RASP (Runtime Application Self-Protection), jailbreak/root detection.

Quick Reference — React Native Setup

# New React Native project (Expo recommended for new projects)
npx create-expo-app MyApp --template blank-typescript
cd MyApp

# Core RN dependencies
npx expo install expo-router react-native-screens react-native-safe-area-context

# EAS CLI for builds and OTA
npm install -g eas-cli
eas login
eas build:configure
# Bare React Native (when full native control is required)
npx @react-native-community/cli init MyApp --template react-native-template-typescript
cd MyApp
npx pod-install ios  # Install CocoaPods dependencies
# Run
npx expo start           # Expo dev server
npx react-native run-ios # Bare RN iOS
npx react-native run-android # Bare RN Android

# Detox E2E setup
npm install --save-dev detox @types/detox
npx detox init

Fastlane CI/CD Example

# fastlane/Fastfile
default_platform(:ios)

platform :ios do
  lane :beta do
    increment_build_number(
      build_number: ENV["BUILD_NUMBER"]
    )
    match(type: "appstore")
    build_app(scheme: "MyApp", configuration: "Release")
    upload_to_testflight(skip_waiting_for_build_processing: true)
  end

  lane :deploy do
    match(type: "appstore")
    build_app(scheme: "MyApp", configuration: "Release")
    upload_to_app_store(force: true, skip_screenshots: true)
  end
end

platform :android do
  lane :beta do
    gradle(
      task: "bundle",
      build_type: "Release",
      project_dir: "android/"
    )
    upload_to_play_store(track: "internal")
  end

  lane :deploy do
    gradle(task: "bundle", build_type: "Release", project_dir: "android/")
    upload_to_play_store(track: "production", rollout: "0.1")
  end
end

EAS Update (OTA) Example

# Publish an update to the preview channel
eas update --channel preview --message "Fix checkout crash"

# Promote preview to production
eas update --channel production --message "Stable release"
// eas.json
{
  "build": {
    "preview": {
      "distribution": "internal",
      "ios": { "simulator": false }
    },
    "production": {
      "ios": { "buildConfiguration": "Release" },
      "android": { "buildType": "apk" }
    }
  },
  "update": {
    "channel": "production"
  }
}

Documentation Sources

Before generating code, consult these sources for current syntax and APIs:

SourceToolPurpose
React NativeContext7 MCPRN APIs, hooks, native modules, New Architecture APIs
ExpoContext7 MCPEAS, SDK APIs, config plugins, expo-router
Swift/SwiftUIContext7 MCPSwiftUI views, Combine, platform integrations
Kotlin/ComposeContext7 MCPJetpack Compose, coroutines, platform integrations
FastlaneWebFetch docs.fastlane.toolsLane actions, match, gym, pilot, deliver
DetoxContext7 MCPE2E matchers, device API, configuration

Hard Prohibitions

  • Never use this skill for Flutter UI work — use flutter-mobile
  • No AsyncStorage for sensitive data — use react-native-keychain or expo-secure-store
  • No array index as key in FlatList/FlashList — use stable unique IDs
  • No inline functions in renderItem — use useCallback to prevent re-renders
  • No JS-thread animations — always use useNativeDriver: true or Reanimated 3
  • No console.log in production — use a structured logger (e.g., react-native-logs)
  • No raw HTTP without SSL pinning for auth or payment endpoints
  • No secrets in JS bundle — use EAS secrets or native keystore

Post-Code Review

After writing code, dispatch these reviewer agents:

  • code-reviewer — general quality, DRY, error handling
  • security-reviewer — OWASP MASVS compliance, secure storage, network security
  • flutter-security-expert — only if the feature also has a Flutter counterpart that shares native code
我的收藏