Expert mobile application development across iOS, Android, React Native, and Flutter.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionsenior-mobileExecute the skills CLI command in your project's root directory to begin installation:
Fetches senior-mobile from borghei/claude-skills and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate senior-mobile. Access via /senior-mobile in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Create detailed user stories, acceptance criteria, and feature specs
Example
Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios
Reduce spec writing time by 50%, ensure comprehensive coverage
Research competitors, compare features, identify gaps
Example
Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities
Complete competitive research in 2 hours instead of 2 days
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
14
total installs
14
this week
77
GitHub stars
0
upvotes
Run in your terminal
14
installs
14
this week
77
stars
Expert mobile application development across iOS, Android, React Native, and Flutter.
mobile, ios, android, react-native, flutter, swift, kotlin, swiftui, jetpack-compose, expo-router, zustand, app-store, performance, offline-first
# Scaffold a React Native project
python scripts/mobile_scaffold.py --platform react-native --name MyApp
# Build for production
python scripts/build.py --platform ios --env production
# Generate App Store metadata
python scripts/store_metadata.py --screenshots ./screenshots
# Profile rendering performance
python scripts/profile.py --platform android --output report.html
| Script | Purpose |
|---|---|
scripts/mobile_scaffold.py |
Scaffold project for react-native, ios, android, or flutter |
scripts/build.py |
Build automation with environment and platform flags |
scripts/store_metadata.py |
Generate App Store / Play Store listing metadata |
scripts/profile.py |
Profile rendering, memory, and startup performance |
| Aspect | Native iOS | Native Android | React Native | Flutter |
|---|---|---|---|---|
| Language | Swift | Kotlin | TypeScript | Dart |
| UI Framework | SwiftUI/UIKit | Compose/XML | React | Widgets |
| Performance | Best | Best | Good | Very Good |
| Code Sharing | None | None | ~80% | ~95% |
| Best For | iOS-only, hardware-heavy | Android-only, hardware-heavy | Web team, shared logic | Maximum code sharing |
python scripts/mobile_scaffold.py --platform react-native --name MyAppsrc/
├── app/ # Expo Router file-based routes
│ ├── (tabs)/ # Tab navigation group
│ ├── auth/ # Auth screens
│ └── _layout.tsx # Root layout
├── components/
│ ├── ui/ # Reusable primitives (Button, Input, Card)
│ └── features/ # Domain components (ProductCard, UserAvatar)
├── hooks/ # Custom hooks (useAuth, useApi)
├── services/ # API clients and storage
├── stores/ # Zustand state stores
└── utils/ # Helpers
app/_layout.tsx with Stack and Tabs.NavigationStack, @StateObject for ViewModel binding, and .task for async data loading.@MainActor class with @Published properties. Inject services via protocol for testability.@Published -> View re-renders..searchable(text:) for filtering, .refreshable for pull-to-refresh.@MainActor
class ProductListViewModel: ObservableObject {
@Published private(set) var products: [Product] = []
@Published private(set) var isLoading = false
@Published private(set) var error: Error?
private let service: ProductServiceProtocol
init(service: ProductServiceProtocol = ProductService()) {
self.service = service
}
func loadProducts() async {
isLoading = true
error = nil
do {
products = try await service.fetchProducts()
} catch {
self.error = error
}
isLoading = false
}
}
Scaffold, TopAppBar, and state collection via collectAsStateWithLifecycle().Loading, Success<T>, Error.@HiltViewModel, MutableStateFlow, and repository injection.LazyColumn with key parameter for stable identity and Arrangement.spacedBy() for spacing.sealed interface UiState<out T> {
data object Loading : UiState<Nothing>
data class Success<T>(val data: T) : UiState<T>
data class Error(val message: String) : UiState<Nothing>
}
@HiltViewModel
class ProductListViewModel @Inject constructor(
private val repository: ProductRepository
) : ViewModel() {
private val _uiState = MutableStateFlow<UiState<List<Product>>>(UiState.Loading)
val uiState: StateFlow<UiState<List<Product>>> = _uiState.asStateFlow()
fun loadProducts() {
viewModelScope.launch {
_uiState.value = UiState.Loading
repository.getProducts()
.catch { e -> _uiState.value = UiState.Error(e.message ?: "Unknown error") }
.collect { products -> _uiState.value = UiState.Success(products) }
}
}
}
python scripts/profile.py --platform <ios|android> --output report.htmlFlatList with keyExtractor, initialNumToRender=10, windowSize=5, removeClippedSubviews=trueReact.memo and handlers with useCallbackgetItemLayout for fixed-height rows to skip measurementprefetchItemsAt for image pre-loading in collection viewssetHasFixedSize(true) and setItemViewCacheSize(20) on RecyclerViewspython scripts/store_metadata.py --screenshots ./screenshotspython scripts/build.py --platform ios --env production| Document | Path |
|---|---|
| React Native Guide | references/react_native_guide.md |
| iOS Patterns | references/ios_patterns.md |
| Android Patterns | references/android_patterns.md |
| App Store Guide | references/app_store_guide.md |
| Full Code Examples | REFERENCE.md |
| Problem | Cause | Solution |
|---|---|---|
| App crashes on launch after adding a new dependency | Incompatible native module version or missing pod install / gradle sync | Run npx pod-install (iOS) or cd android && ./gradlew clean (Android). Verify dependency version compatibility in the changelog. |
| FlatList renders blank or flickers | Missing keyExtractor, unstable keys, or inline renderItem causing full re-renders |
Add a stable keyExtractor, wrap renderItem in useCallback, and supply getItemLayout for fixed-height rows. |
| iOS build fails with "signing" error | Provisioning profile mismatch or expired certificate | Open Xcode > Signing & Capabilities, select the correct team and profile. Run security find-identity -v -p codesigning to verify certificates. |
| Android build OOM during dexing | Insufficient JVM heap for large projects | Add org.gradle.jvmargs=-Xmx4096m to gradle.properties. Enable dexOptions { javaMaxHeapSize "4g" } in build.gradle. |
| App Store rejection for missing privacy manifest | Apple requires PrivacyInfo.xcprivacy for apps using required reason APIs (UserDefaults, file timestamp, etc.) | Add a PrivacyInfo.xcprivacy file declaring each required reason API. Run store_metadata_generator.py to review privacy label guidance. |
| Slow cold start time (>3 seconds) | Too many synchronous operations on the main thread at launch, large bundle size, or unoptimized images | Defer non-critical initialization, lazy-load modules, compress images, and use app_performance_analyzer.py to identify bottlenecks. |
| Hot reload / fast refresh stops working | Syntax error in a module boundary, anonymous default export, or class component state | Check terminal for error messages, ensure named exports, and restart the Metro bundler or Flutter daemon with a cache clear. |
app_performance_analyzer.py against the project.store_metadata_generator.py.This skill covers:
This skill does NOT cover:
senioMake data-driven prioritization decisions faster
Draft PRDs, status updates, and stakeholder presentations
Example
Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement
Save 3-5 hours/week on communication overhead
Prerequisites
Time Estimate
30-60 minutes to see productivity improvements
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
✗ Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
alirezarezvani/claude-skills
ceorkm/mobile-app-ui-design
mattpocock/skills
parcadei/continuous-claude-v3
cursor/plugins
ailabs-393/ai-labs-claude-skills
Keeps context tight: senior-mobile is the kind of skill you can hand to a new teammate without a long onboarding doc.
senior-mobile is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Registry listing for senior-mobile matched our evaluation — installs cleanly and behaves as described in the markdown.
senior-mobile fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
senior-mobile reduced setup friction for our internal harness; good balance of opinion and flexibility.
I recommend senior-mobile for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
senior-mobile has been reliable in day-to-day use. Documentation quality is above average for community skills.
Solid pick for teams standardizing on skills: senior-mobile is focused, and the summary matches what you get after install.
senior-mobile fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
We added senior-mobile from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
showing 1-10 of 64