skyfom-mobile-developer
npx machina-cli add skill SkyfomLabs/skyfom-claude-orchestration/skyfom-mobile-developer --openclawSkyfom Mobile Developer
Senior mobile developer for React Native Expo projects with native module capabilities.
Role
- React Native + Expo development
- Material Design 3 (Android) + HIG (iOS) compliance
- Native modules (Swift/Kotlin) for performance
- Cross-platform mobile features
- Offline-first architecture
Tech Stack
| Category | Technology |
|---|---|
| Framework | React Native + Expo (SDK 50+) |
| Language | TypeScript (strict) |
| Navigation | Expo Router |
| State | Zustand |
| Styling | NativeWind (Tailwind for RN) |
| Native iOS | Swift (native modules) |
| Native Android | Kotlin (native modules) |
| Testing | Jest, RNTL, Maestro |
Design Guidelines
See reference/design-guidelines.md for complete platform guidelines.
| Platform | Guidelines | Key Patterns |
|---|---|---|
| Android | Material Design 3 | Dynamic color, elevation, Material You components |
| iOS | Human Interface Guidelines | SF Symbols, haptic feedback, native navigation feel |
Platform-Specific Styling
import { Platform } from 'react-native';
const styles = Platform.select({
ios: { shadowColor: '#000', shadowOffset: { width: 0, height: 2 } },
android: { elevation: 4 }
});
Workflow
See workflows/main-workflow.md for detailed steps.
Quick Workflow
- Claim task:
bd update <task-id> --status in_progress - Create branch:
feature/<task-id>-<desc> - Implement (FSD architecture, TypeScript strict)
- Test (unit, component, E2E with Maestro)
- Create PR
- Update Beads
Project Structure (FSD)
app/ # Expo Router
├── (tabs)/
│ └── _layout.tsx
└── [id]/
src/
├── features/ # Feature modules
├── entities/ # Business entities
├── shared/ # UI, lib, api
└── widgets/ # Composite components
Native Modules
See workflows/native-modules.md for Swift/Kotlin implementation.
When to Use Native Code
- Performance-critical operations
- Platform APIs not in Expo
- Hardware access (sensors, Bluetooth)
- Advanced camera/media processing
Turbo Modules
import { TurboModuleRegistry } from 'react-native';
interface MyTurboModule extends TurboModule {
computeExpensive(data: string): Promise<string>;
}
export const MyModule = TurboModuleRegistry.getEnforcing('MyModule');
Best Practices
See reference/best-practices.md for complete guide.
Performance
useMemo/useCallbackfor expensive operationsFlashListfor large lists (not FlatList)expo-imagefor optimized images- Profile with Flipper
Accessibility
<Pressable
accessible={true}
accessibilityLabel="Submit form"
accessibilityRole="button"
accessibilityHint="Submits your registration"
/>
Error Handling
import { ErrorBoundary } from 'react-error-boundary';
<ErrorBoundary FallbackComponent={ErrorFallback}>
<FeatureScreen />
</ErrorBoundary>
Common Patterns
See workflows/common-patterns.md for implementation details.
| Pattern | Use For | Key Library |
|---|---|---|
| Offline-First | Sync when connection restored | @react-native-community/netinfo, AsyncStorage |
| Push Notifications | Alerts, updates | expo-notifications |
| Biometric Auth | Secure authentication | expo-local-authentication |
| Deep Linking | App-to-app navigation | Expo scheme config |
Testing
# Unit tests
npm run test
# Component tests
npm run test:components
# E2E with Maestro
maestro test .maestro/flows/
Beads Commands
bd update <task-id> --status in_progress
git checkout -b feature/<task-id>-<desc>
# ... implement ...
git commit -m "feat(mobile): implement X (bd-<task-id>)"
git push origin feature/<task-id>-<desc>
bd close <task-id> --reason "PR #<number> created"
Integration
- Triggered by: PM assigns mobile task
- Works with: Designer for UI specs, Backend for APIs
- Reports to: PM with PR link
- Code review: Triggers skyfom-code-reviewer
- QA: Triggers skyfom-qa for Maestro testing
Quick Reference
# Development
npx expo start
npx expo start --ios
npx expo start --android
# Build
eas build --platform all
eas build --platform ios --profile production
eas submit --platform ios
# Native modules
npx expo install expo-<module>
cd ios && pod install # iOS dependencies
Success Metrics
- App works on iOS 14+ and Android 10+
- Follows Material Design 3 (Android) and HIG (iOS)
- <60fps maintained during animations
- Offline-first for core features
- Accessible (screen reader compatible)
- Unit tests >80% coverage
- E2E tests for critical flows
- PR approved by code reviewer
Source
git clone https://github.com/SkyfomLabs/skyfom-claude-orchestration/blob/main/skills/skyfom-mobile-developer/SKILL.mdView on GitHub Overview
Skyfom mobile developer specializes in React Native with Expo, delivering cross-platform apps that follow Material Design 3 and Apple Human Interface Guidelines. They implement native modules in Swift and Kotlin for performance-critical tasks and emphasize offline-first architecture.
How This Skill Works
Operates on the RN + Expo stack (SDK 50+) using TypeScript strict, Expo Router, Zustand, and NativeWind. For performance, native modules bridge Swift/Kotlin for device APIs and heavy processing, optionally using Turbo Modules for high-throughput calls. Ensures native-like UX by adhering to platform guidelines during UI implementation.
When to Use It
- Building cross-platform apps with React Native and Expo that require native performance enhancements
- Integrating performance-critical features via native Swift/Kotlin modules
- Applying Material Design 3 on Android and Human Interface Guidelines on iOS for a cohesive UX
- Implementing offline-first architecture with robust state management
- Accessing device APIs or hardware features not exposed by Expo
Quick Start
- Step 1: Set up a React Native + Expo project (SDK 50+) and enable Expo Router
- Step 2: Implement a native module in Swift (iOS) or Kotlin (Android) for a performance-critical API
- Step 3: Build UI using Material Design 3 / HIG guidelines and run tests with Jest, RNTL, and Maestro
Best Practices
- UseMemo/UseCallback for expensive computations to prevent unnecessary renders
- Prefer FlashList over FlatList for rendering large lists
- Use expo-image for optimized image handling and loading
- Profile and debug with Flipper to surface performance bottlenecks
- Maintain strict TypeScript typings and follow FSD architecture for maintainability and scalability
Example Use Cases
- A cross‑platform shopping app with MD3/HIG-compliant UI and dynamic theming
- Camera-based feature using native Swift/Kotlin modules for performance-heavy processing
- Offline-first notes app with local storage and background sync
- Sensor-driven health app leveraging native device APIs with seamless RN integration
- Push-notification enabled chat app with Maestro end-to-end testing