moai-domain-mobile-app
关于
This Claude Skill provides enterprise mobile development expertise for React Native 0.76+, Flutter 3.24+, and Capacitor 6.x cross-platform frameworks. It focuses on implementing robust patterns, comprehensive testing, and CI/CD automation for production-ready mobile applications. Use this skill for guidance on mobile architecture, performance optimization, and deployment strategies.
快速安装
Claude Code
推荐/plugin add https://github.com/modu-ai/moai-adkgit clone https://github.com/modu-ai/moai-adk.git ~/.claude/skills/moai-domain-mobile-app在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
moai-domain-mobile-app
Enterprise Mobile Development Excellence
Version: 4.0.0 (React Native 0.76+, Flutter 3.24+) Technology Stack: Modern async mobile development with CI/CD automation Focus: Cross-platform strategies, performance optimization, production deployment
📖 Progressive Disclosure
Level 1: Quick Reference (Core Concepts)
Purpose: Enterprise mobile development covering React Native, Flutter, Capacitor with modern patterns.
Core Stack (2025 Stable):
- React Native: 0.76+ (New Architecture default)
- Flutter: 3.24+ (Dart 3.5+)
- Expo: 52.x (EAS Build/Submit)
- Navigation: React Navigation 6.x, Flutter Navigator 2.x
- State: Provider 6.x, GetX 4.x, Redux Toolkit
- Testing: Detox 20.x (E2E), Jest 30.x (Unit)
- CI/CD: GitHub Actions, fastlane 2.x, EAS Build
Quick Setup Patterns:
React Native App Structure:
// Main app with modern navigation
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import AsyncStorage from '@react-native-async-storage/async-storage';
export const AppNavigator = () => (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Profile" component={ProfileScreen} />
</Stack.Navigator>
</NavigationContainer>
);
Flutter App Structure:
import 'package:flutter/material.dart';
import 'package:flutter/services/navigation.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter App',
theme: ThemeData(primarySwatch: Colors.blue),
home: MyHomePage(),
routes: {
'/': (context) => MyHomePage(),
'/profile': (context) => ProfilePage(),
},
);
}
}
When to Use:
- ✅ Native iOS/Android app development
- ✅ Cross-platform apps with shared business logic
- ✅ Web app deployment (Capacitor/Ionic)
- ✅ Performance optimization and battery management
- ✅ E2E automation and CI/CD integration
Level 2: Practical Implementation (Essential Patterns)
Pattern 1: React Native Architecture (0.76+)
Modern Setup:
npx react-native@latest init MyApp --template
cd MyApp
npm install @react-navigation/native @react-native-async-storage @react-native-community/netinfo
Async Data Management:
const [products, setProducts] = useState<Product[]>([]);
const [loading, setLoading] = useState(false);
const [isOnline, setIsOnline] = useState(true);
// Load from cache first, then API
const loadProducts = useCallback(async () => {
try {
setLoading(true);
// Try cache first
const cached = await AsyncStorage.getItem('products');
if (cached) {
setProducts(JSON.parse(cached));
}
// Fetch fresh data if online
if (isOnline) {
const response = await fetch('https://api.example.com/products');
const data = await response.json();
setProducts(data);
await AsyncStorage.setItem('products', JSON.stringify(data));
}
} finally {
setLoading(false);
}
}, [isOnline]);
Pattern 2: Testing Strategy
Detox E2E Testing:
// detox/e2e/app.config.js
module.exports = {
testEnvironment: 'node',
testRunner: 'jest',
setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
};
Component Testing:
// Component Testing with React Testing Library
import { render, screen, fireEvent } from '@testing-library/react-native';
import { renderHook } from '@testing-library/react-native');
it('should render correctly', () => {
render(<HomeScreen />);
expect(screen.getByText('Welcome')).toBeTruthy();
});
Pattern 3: Performance Optimization
Image Optimization:
const OptimizedImage = ({ uri, style, resizeMode, width, height }) => {
return (
<Image
source={{ uri }}
style={style}
resizeMode={resizeMode}
width={width}
height={height}
onLoad={handleImageLoad}
onError={() => console.log('Image failed to load')}
/>
);
};
Level 3: Advanced Integration (Complex Scenarios)
Pattern 1: Capacitor Plugin Development
Plugin Structure:
// capacitor-plugin/src/index.ts
import { registerPlugin } from '@capacitor/core';
export interface CustomPluginPlugin {
echo(options: { value: string }): Promise<{ value: string }>;
openNativeScreen(): Promise<void>;
}
export const CustomPlugin = registerPlugin<CustomPlugin>('CustomPlugin', {
web: () => import('./web').then(m => new m.CustomPluginWeb()),
});
React Native Integration:
// capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: [
{
name: 'Camera',
plugins: ['camera', 'filesystem']
}
]
};
export default config;
Pattern 2: Cross-Platform Business Logic
Shared Service Architecture:
// services/user-service.ts
export class UserService {
async getUserProfile(userId: string): Promise<UserProfile> {
// Shared implementation across platforms
return await this.apiCall(`/users/${userId}`);
}
}
Platform-Specific Implementations:
// services/platform-specific/web-service.ts
export class WebUserService implements UserService {
async getUserProfile(userId: string): Promise<UserProfile> {
const response = await fetch(`/api/users/${userId}`);
return response.json();
}
}
// services/platform-specific/mobile-service.ts
export class MobileUserService implements UserService {
async getUserProfile(userId: string): Promise<UserProfile> {
const user = await this.realm.objects.get(userId);
return user.profile || null;
}
}
Pattern 3: Advanced Production Features
Sentry Integration:
import * as Sentry from '@sentry/react-native';
import { ReactNode } from 'react';
Sentry.init({
dsn: 'https://@[key]@[domain].ingest.sentry.io/[projectId]',
tracesSampleRate: 1.0,
environment: __DEV__ ? 'development' : 'production',
integrations: [
new Sentry.BrowserTracing(),
new Sentry.ReactNavigationRoutingInstrumentation()
]
});
Custom Metrics:
import Analytics from 'analytics-react-native';
import { MetricsCollector } from './metrics';
const AppAnalytics = Analytics.getAnalytics({
trackAppSessions: true,
trackScreen: true,
trackUserProperties: true,
trackExceptions: true
});
Analytics.track('screen_view', { screen: 'Home', platform: platform });
🎯 Decision Matrix
| Scenario | Best Choice | Why |
|---|---|---|
| Dashboard App | Tabler Icons (5900+) | Optimized for admin UI |
| Tailwind Project | Heroicons (official) | Native integration |
| Multiple Weights | Phosphor (6 weights) | Design flexibility |
| 200K+ Icons | Iconify (universal) | Complete coverage |
| Compact UI | Radix Icons (~5KB) | Minimal bundle |
📊 Technology Comparison
| Framework | Icons | Bundle Size | Use Case | Type System |
|---|---|---|---|---|
| React Native | 1000+ | Native apps | TypeScript | Medium |
| Flutter | 800+ | Cross-platform | Dart | High |
| Capacitor | 500+ | Hybrid apps | Web + native | Medium |
| Ionic | 1300+ | Hybrid apps | Angular/React | Medium |
🔗 Related Skills
Skill("moai-domain-frontend")– UI/UX integration patternsSkill("moai-domain-testing")- Mobile testing strategiesSkill("moai-domain-devops")- CI/CD and deploymentSkill("moai-domain-backend")- API integration and data management
Version: 4.0.0 Enterprise Last Updated: 2025-11-13 Status: Production Ready Stack: React Native 0.76+, Flutter 3.24+, Capacitor 6.x
GitHub 仓库
相关推荐技能
content-collections
元Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。
evaluating-llms-harness
测试该Skill通过60+个学术基准测试(如MMLU、GSM8K等)评估大语言模型质量,适用于模型对比、学术研究及训练进度追踪。它支持HuggingFace、vLLM和API接口,被EleutherAI等行业领先机构广泛采用。开发者可通过简单命令行快速对模型进行多任务批量评估。
cloudflare-turnstile
元这个Skill提供完整的Cloudflare Turnstile集成知识,用于在表单、登录页面和API端点中实现无验证码的机器人防护。它支持React/Next.js/Hono等框架集成,涵盖令牌验证、错误代码调试和端到端测试等场景。通过运行后台不可见挑战,在保持用户体验的同时有效阻止自动化流量和垃圾信息。
webapp-testing
测试该Skill为开发者提供了基于Playwright的本地Web应用测试工具集,支持自动化测试前端功能、调试UI行为、捕获屏幕截图和查看浏览器日志。它包含管理服务器生命周期的辅助脚本,可直接作为黑盒工具运行而无需阅读源码。适用于需要快速验证本地Web应用界面和交互功能的开发场景。
