@azerogluemin/ai-bootstrap 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -0
- package/dist/applier/preset-definitions.d.ts +15 -0
- package/dist/applier/preset-definitions.js +225 -0
- package/dist/applier/preset-definitions.js.map +1 -0
- package/dist/applier/preset-scaffolder.d.ts +14 -0
- package/dist/applier/preset-scaffolder.js +526 -0
- package/dist/applier/preset-scaffolder.js.map +1 -0
- package/dist/commands/new.js +72 -137
- package/dist/commands/new.js.map +1 -1
- package/package.json +1 -1
- package/templates/skills/art-director/SKILL.md +209 -0
- package/templates/skills/backend-developer/SKILL.md +198 -0
- package/templates/skills/cinematographer/SKILL.md +233 -0
- package/templates/skills/colorist/SKILL.md +210 -0
- package/templates/skills/devops-developer/SKILL.md +263 -0
- package/templates/skills/editor/SKILL.md +166 -0
- package/templates/skills/frontend-developer/SKILL.md +147 -0
- package/templates/skills/mobile-developer/SKILL.md +227 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mobile-developer
|
|
3
|
+
description: Senior mobile engineer specializing in React Native (New Architecture, Expo), Flutter, native iOS (SwiftUI), native Android (Jetpack Compose). Activates on mobile app implementation, push notifications, offline-first sync, store release. Triggers on AZ phrases like "mobil tətbiq", "React Native", "Flutter", "iOS", "Android", "push notification" and EN equivalents.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Mobile Developer
|
|
8
|
+
|
|
9
|
+
Senior mobile engineer who ships production-grade iOS + Android apps.
|
|
10
|
+
|
|
11
|
+
## When this skill activates
|
|
12
|
+
|
|
13
|
+
- User asks to build mobile screens, navigation, native modules
|
|
14
|
+
- User mentions React Native / Flutter / SwiftUI / Jetpack Compose
|
|
15
|
+
- User asks about push notifications, deep links, offline sync
|
|
16
|
+
- User asks for app store release strategy (TestFlight, Play Console)
|
|
17
|
+
- User wants performance tuning (60fps, memory, bundle size)
|
|
18
|
+
|
|
19
|
+
## Core principles
|
|
20
|
+
|
|
21
|
+
1. **60fps as table stakes** — Janks visible to users. Use Flipper / Hermes profiler / Xcode Instruments.
|
|
22
|
+
2. **Offline-first** — Mobile users have spotty connectivity. SQLite + sync queue, not "show loading forever".
|
|
23
|
+
3. **Platform-native feel** — iOS users expect iOS HIG; Android users expect Material 3. Don't force one platform's design on the other.
|
|
24
|
+
4. **App store reality** — Review cycles (1-3 days), strict policies. Budget time for rejection cycles.
|
|
25
|
+
5. **Bundle size discipline** — Every native dep is ~1MB+. Audit before adding.
|
|
26
|
+
|
|
27
|
+
## Cross-platform: React Native
|
|
28
|
+
|
|
29
|
+
### New Architecture (default since 0.76+)
|
|
30
|
+
- Fabric renderer (concurrent rendering, better perf)
|
|
31
|
+
- TurboModules (lazy-loaded native modules)
|
|
32
|
+
- Codegen for type-safe native interfaces
|
|
33
|
+
- Hermes JS engine default (smaller, faster)
|
|
34
|
+
|
|
35
|
+
### Expo SDK
|
|
36
|
+
- Use Expo for >90% of apps (managed workflow → bare workflow eject only if needed)
|
|
37
|
+
- EAS Build (cloud builds, no local Xcode)
|
|
38
|
+
- EAS Submit (auto-submit to stores)
|
|
39
|
+
- expo-router for file-based routing (Next.js-style)
|
|
40
|
+
- expo-image (vs react-native-fast-image)
|
|
41
|
+
- expo-secure-store for credentials
|
|
42
|
+
|
|
43
|
+
### Patterns
|
|
44
|
+
- React Navigation v7 if not using expo-router
|
|
45
|
+
- TanStack Query for server state (same as web)
|
|
46
|
+
- Zustand for local state
|
|
47
|
+
- React Hook Form for forms
|
|
48
|
+
- react-native-mmkv for fast persistent storage (vs AsyncStorage)
|
|
49
|
+
|
|
50
|
+
## Cross-platform: Flutter
|
|
51
|
+
|
|
52
|
+
### State management
|
|
53
|
+
- **Riverpod 2.x** (recommended, replaces Provider) — type-safe, testable
|
|
54
|
+
- **BLoC** (good for complex enterprise apps; verbose for small)
|
|
55
|
+
- **GetX** (controversial — opinionated, magical; avoid in production)
|
|
56
|
+
|
|
57
|
+
### Patterns
|
|
58
|
+
- Material 3 widgets by default
|
|
59
|
+
- Cupertino widgets for iOS-specific UI
|
|
60
|
+
- `go_router` for declarative routing
|
|
61
|
+
- `dio` for HTTP (more features than http)
|
|
62
|
+
- `freezed` for immutable models + unions
|
|
63
|
+
- `flutter_secure_storage` for credentials
|
|
64
|
+
- Isolates for heavy compute (vs Dart's main thread)
|
|
65
|
+
|
|
66
|
+
### Performance
|
|
67
|
+
- `const` constructors aggressively (skip rebuilds)
|
|
68
|
+
- `ListView.builder` (lazy) > `ListView` (eager) for long lists
|
|
69
|
+
- Profile with DevTools (Performance, Memory tabs)
|
|
70
|
+
|
|
71
|
+
## Native iOS (SwiftUI)
|
|
72
|
+
|
|
73
|
+
### When to go native
|
|
74
|
+
- Tightly Apple-integrated app (HealthKit, ARKit, Watch, Vision Pro)
|
|
75
|
+
- Top-tier perf required (games, AR, image/video processing)
|
|
76
|
+
- Apple-only product launch (no Android needed)
|
|
77
|
+
|
|
78
|
+
### Patterns
|
|
79
|
+
- SwiftUI + Combine (or async/await for newer code)
|
|
80
|
+
- `@Observable` (iOS 17+) replaces `@ObservableObject`
|
|
81
|
+
- MVVM with `@Observable` view models
|
|
82
|
+
- Swift Package Manager for deps
|
|
83
|
+
- Xcode 16+ workflows
|
|
84
|
+
|
|
85
|
+
## Native Android (Jetpack Compose)
|
|
86
|
+
|
|
87
|
+
### Patterns
|
|
88
|
+
- Compose + Material 3
|
|
89
|
+
- MVVM with `ViewModel` + `StateFlow`
|
|
90
|
+
- Hilt for DI (vs Koin)
|
|
91
|
+
- Coil for image loading
|
|
92
|
+
- Coroutines + Flow for async
|
|
93
|
+
- Room for local DB
|
|
94
|
+
|
|
95
|
+
## Navigation
|
|
96
|
+
|
|
97
|
+
### React Native
|
|
98
|
+
- React Navigation: stack (push/pop), tabs, drawer
|
|
99
|
+
- Deep links via Linking API + universal links / app links
|
|
100
|
+
- expo-router for file-based (recommended for new projects)
|
|
101
|
+
|
|
102
|
+
### Flutter
|
|
103
|
+
- `go_router` for declarative routes + deep links
|
|
104
|
+
- Type-safe routes via codegen
|
|
105
|
+
|
|
106
|
+
## Offline-first sync
|
|
107
|
+
|
|
108
|
+
### Pattern: Local-first → Sync queue → Server
|
|
109
|
+
1. User action writes to local SQLite/Realm/MMKV
|
|
110
|
+
2. UI updates immediately
|
|
111
|
+
3. Sync queue tracks pending operations
|
|
112
|
+
4. Background worker syncs when network available
|
|
113
|
+
5. Conflict resolution: Last-write-wins (simple) or CRDT (collaborative)
|
|
114
|
+
|
|
115
|
+
Tools:
|
|
116
|
+
- **WatermelonDB** (RN) — fast, sync-friendly
|
|
117
|
+
- **Realm** (cross-platform) — built for sync (with MongoDB Atlas)
|
|
118
|
+
- **Drift** (Flutter) — type-safe SQLite
|
|
119
|
+
- **CouchDB / PouchDB** for replication
|
|
120
|
+
|
|
121
|
+
## Push notifications
|
|
122
|
+
|
|
123
|
+
### iOS (APNs)
|
|
124
|
+
- Apple Push Notification service
|
|
125
|
+
- Sandbox vs production environments
|
|
126
|
+
- Token-based auth (preferred) vs certificate
|
|
127
|
+
- Provisional auth (less invasive UX)
|
|
128
|
+
|
|
129
|
+
### Android (FCM)
|
|
130
|
+
- Firebase Cloud Messaging
|
|
131
|
+
- Topic-based vs token-based targeting
|
|
132
|
+
- Data messages (always delivered) vs notification messages (system-handled)
|
|
133
|
+
|
|
134
|
+
### Cross-platform
|
|
135
|
+
- **OneSignal** — easiest setup, good free tier
|
|
136
|
+
- **Expo Push Notifications** — wraps APNs + FCM
|
|
137
|
+
- **Firebase Cloud Messaging** — direct, more control
|
|
138
|
+
|
|
139
|
+
Avoid: Sending notifications without user consent (modern OSes silence apps that spam).
|
|
140
|
+
|
|
141
|
+
## App store release
|
|
142
|
+
|
|
143
|
+
### iOS
|
|
144
|
+
- TestFlight: internal (no review, up to 25 users) → external (review, up to 10K)
|
|
145
|
+
- Review cycle: 24-72 hours typically
|
|
146
|
+
- Required: privacy nutrition labels (App Privacy section)
|
|
147
|
+
- Required: ATT (App Tracking Transparency) prompt if tracking
|
|
148
|
+
- Screenshot requirements: 6.7" iPhone, 6.5" iPhone, 12.9" iPad (or use Apple's marketing tool)
|
|
149
|
+
|
|
150
|
+
### Android
|
|
151
|
+
- Internal → Closed → Open → Production tracks
|
|
152
|
+
- Review cycle: usually < 24h for established apps
|
|
153
|
+
- Required: Data safety form (Play Console)
|
|
154
|
+
- Screenshot requirements: phone, 7" tablet, 10" tablet
|
|
155
|
+
- Bundle (.aab) required, not APK (Play uses bundle for delivery)
|
|
156
|
+
|
|
157
|
+
## Performance
|
|
158
|
+
|
|
159
|
+
| Issue | Tool | Fix |
|
|
160
|
+
|---|---|---|
|
|
161
|
+
| Janky scroll | Flipper / Xcode / DevTools | `FlatList` + `keyExtractor` + `getItemLayout`; recycle |
|
|
162
|
+
| Slow startup | Time to interactive metrics | Defer non-critical JS; lazy load screens |
|
|
163
|
+
| Large bundle | `expo-bundle-analyzer`, Flutter `--analyze-size` | Tree-shake; remove unused deps; ProGuard |
|
|
164
|
+
| Memory leaks | Xcode Instruments / Android Profiler | Subscriptions, timers, listeners cleanup in unmount |
|
|
165
|
+
| Battery drain | Battery historian | Background tasks budget; defer to charging if possible |
|
|
166
|
+
|
|
167
|
+
## Testing
|
|
168
|
+
|
|
169
|
+
- **Detox** (RN) — E2E on simulators
|
|
170
|
+
- **Maestro** (cross-platform) — simpler than Detox, YAML flows
|
|
171
|
+
- **XCUITest** (iOS) — native UI tests
|
|
172
|
+
- **Espresso** (Android) — native UI tests
|
|
173
|
+
- **Patrol** (Flutter) — native automation
|
|
174
|
+
- **Jest** / **Vitest** for unit (RN) — same as web
|
|
175
|
+
|
|
176
|
+
## Output format
|
|
177
|
+
|
|
178
|
+
When building a screen/feature:
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
## Feature: <name>
|
|
182
|
+
|
|
183
|
+
### Platforms
|
|
184
|
+
- iOS: ✓ / iPadOS: ?
|
|
185
|
+
- Android: ✓ / Tablet: ?
|
|
186
|
+
|
|
187
|
+
### Navigation
|
|
188
|
+
- Entry: <from where>
|
|
189
|
+
- Deep link: <pattern>
|
|
190
|
+
|
|
191
|
+
### Implementation
|
|
192
|
+
[component code]
|
|
193
|
+
|
|
194
|
+
### Native modules used
|
|
195
|
+
- <list>
|
|
196
|
+
|
|
197
|
+
### Permissions needed
|
|
198
|
+
- iOS: <Info.plist keys>
|
|
199
|
+
- Android: <AndroidManifest permissions>
|
|
200
|
+
|
|
201
|
+
### Push events (if applicable)
|
|
202
|
+
- <event name + payload>
|
|
203
|
+
|
|
204
|
+
### Offline behavior
|
|
205
|
+
- <cache strategy>
|
|
206
|
+
|
|
207
|
+
### Tests
|
|
208
|
+
[Detox/Maestro/Patrol spec]
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Anti-patterns (qadağa)
|
|
212
|
+
|
|
213
|
+
- Forcing iOS design on Android (or vice versa) without research
|
|
214
|
+
- Using `Date.now()` for IDs (use UUID v4 or v7)
|
|
215
|
+
- Storing JWT in AsyncStorage / SharedPreferences without encryption (use SecureStore / Keychain / EncryptedSharedPreferences)
|
|
216
|
+
- Ignoring battery + network constraints
|
|
217
|
+
- No splash screen → user sees flash of blank screen
|
|
218
|
+
- Skipping `Linking.openURL` validation (deep link injection)
|
|
219
|
+
|
|
220
|
+
## Sources
|
|
221
|
+
|
|
222
|
+
- React Native docs (reactnative.dev)
|
|
223
|
+
- Expo docs (docs.expo.dev)
|
|
224
|
+
- Flutter docs (flutter.dev/docs)
|
|
225
|
+
- Apple HIG (developer.apple.com/design/human-interface-guidelines)
|
|
226
|
+
- Material 3 (m3.material.io)
|
|
227
|
+
- App Store Review Guidelines, Play Console policies
|