specweave 1.0.32 → 1.0.33

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.
Files changed (123) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CLAUDE.md +205 -148
  3. package/README.md +0 -2
  4. package/bin/specweave.js +11 -0
  5. package/dist/src/cli/commands/init.js +1 -1
  6. package/dist/src/cli/commands/init.js.map +1 -1
  7. package/dist/src/cli/commands/update-instructions.d.ts +16 -0
  8. package/dist/src/cli/commands/update-instructions.d.ts.map +1 -0
  9. package/dist/src/cli/commands/update-instructions.js +134 -0
  10. package/dist/src/cli/commands/update-instructions.js.map +1 -0
  11. package/dist/src/cli/helpers/init/directory-structure.d.ts +28 -1
  12. package/dist/src/cli/helpers/init/directory-structure.d.ts.map +1 -1
  13. package/dist/src/cli/helpers/init/directory-structure.js +163 -33
  14. package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
  15. package/dist/src/cli/helpers/init/index.d.ts +2 -1
  16. package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
  17. package/dist/src/cli/helpers/init/index.js +3 -1
  18. package/dist/src/cli/helpers/init/index.js.map +1 -1
  19. package/dist/src/cli/helpers/init/instruction-file-merger.d.ts +23 -0
  20. package/dist/src/cli/helpers/init/instruction-file-merger.d.ts.map +1 -0
  21. package/dist/src/cli/helpers/init/instruction-file-merger.js +243 -0
  22. package/dist/src/cli/helpers/init/instruction-file-merger.js.map +1 -0
  23. package/dist/src/cli/helpers/init/plugin-installer.js +49 -0
  24. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  25. package/dist/src/config/types.d.ts +2 -2
  26. package/dist/src/core/living-docs/external-sync-orchestrator.d.ts +26 -0
  27. package/dist/src/core/living-docs/external-sync-orchestrator.d.ts.map +1 -1
  28. package/dist/src/core/living-docs/external-sync-orchestrator.js +61 -0
  29. package/dist/src/core/living-docs/external-sync-orchestrator.js.map +1 -1
  30. package/dist/src/core/living-docs/scaffolding/index.d.ts +12 -0
  31. package/dist/src/core/living-docs/scaffolding/index.d.ts.map +1 -0
  32. package/dist/src/core/living-docs/scaffolding/index.js +15 -0
  33. package/dist/src/core/living-docs/scaffolding/index.js.map +1 -0
  34. package/dist/src/core/living-docs/scaffolding/merger.d.ts +183 -0
  35. package/dist/src/core/living-docs/scaffolding/merger.d.ts.map +1 -0
  36. package/dist/src/core/living-docs/scaffolding/merger.js +523 -0
  37. package/dist/src/core/living-docs/scaffolding/merger.js.map +1 -0
  38. package/dist/src/core/living-docs/scaffolding/scaffold.d.ts +102 -0
  39. package/dist/src/core/living-docs/scaffolding/scaffold.d.ts.map +1 -0
  40. package/dist/src/core/living-docs/scaffolding/scaffold.js +346 -0
  41. package/dist/src/core/living-docs/scaffolding/scaffold.js.map +1 -0
  42. package/dist/src/core/living-docs/scaffolding/template-engine.d.ts +108 -0
  43. package/dist/src/core/living-docs/scaffolding/template-engine.d.ts.map +1 -0
  44. package/dist/src/core/living-docs/scaffolding/template-engine.js +204 -0
  45. package/dist/src/core/living-docs/scaffolding/template-engine.js.map +1 -0
  46. package/dist/src/core/living-docs/sync-helpers/generators.d.ts +38 -2
  47. package/dist/src/core/living-docs/sync-helpers/generators.d.ts.map +1 -1
  48. package/dist/src/core/living-docs/sync-helpers/generators.js +65 -10
  49. package/dist/src/core/living-docs/sync-helpers/generators.js.map +1 -1
  50. package/dist/src/core/living-docs/sync-helpers/index.d.ts +1 -1
  51. package/dist/src/core/living-docs/sync-helpers/index.d.ts.map +1 -1
  52. package/dist/src/core/living-docs/sync-helpers/index.js.map +1 -1
  53. package/dist/src/core/tools/index.d.ts +11 -0
  54. package/dist/src/core/tools/index.d.ts.map +1 -0
  55. package/dist/src/core/tools/index.js +10 -0
  56. package/dist/src/core/tools/index.js.map +1 -0
  57. package/dist/src/core/tools/tool-event-bus.d.ts +33 -0
  58. package/dist/src/core/tools/tool-event-bus.d.ts.map +1 -0
  59. package/dist/src/core/tools/tool-event-bus.js +84 -0
  60. package/dist/src/core/tools/tool-event-bus.js.map +1 -0
  61. package/dist/src/core/tools/tool-index-builder.d.ts +27 -0
  62. package/dist/src/core/tools/tool-index-builder.d.ts.map +1 -0
  63. package/dist/src/core/tools/tool-index-builder.js +289 -0
  64. package/dist/src/core/tools/tool-index-builder.js.map +1 -0
  65. package/dist/src/core/tools/tool-registry.d.ts +51 -0
  66. package/dist/src/core/tools/tool-registry.d.ts.map +1 -0
  67. package/dist/src/core/tools/tool-registry.js +224 -0
  68. package/dist/src/core/tools/tool-registry.js.map +1 -0
  69. package/dist/src/core/tools/tool-search-engine.d.ts +22 -0
  70. package/dist/src/core/tools/tool-search-engine.d.ts.map +1 -0
  71. package/dist/src/core/tools/tool-search-engine.js +174 -0
  72. package/dist/src/core/tools/tool-search-engine.js.map +1 -0
  73. package/dist/src/core/tools/types/tool-registry-types.d.ts +112 -0
  74. package/dist/src/core/tools/types/tool-registry-types.d.ts.map +1 -0
  75. package/dist/src/core/tools/types/tool-registry-types.js +7 -0
  76. package/dist/src/core/tools/types/tool-registry-types.js.map +1 -0
  77. package/dist/src/init/compliance/types.d.ts +1 -1
  78. package/package.json +1 -1
  79. package/plugins/specweave/hooks/hooks.json +3 -13
  80. package/plugins/specweave/hooks/lib/common-setup.sh +47 -321
  81. package/plugins/specweave/hooks/lib/migrate-increment-work.sh +5 -5
  82. package/plugins/specweave/hooks/lib/sync-spec-content.sh +5 -5
  83. package/plugins/specweave/hooks/universal/dispatcher.mjs +4 -5
  84. package/plugins/specweave/hooks/universal/fail-fast-wrapper.sh +43 -296
  85. package/plugins/specweave/hooks/universal/hook-wrapper.sh +3 -1
  86. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  87. package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +2 -2
  88. package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +1 -10
  89. package/plugins/specweave/hooks/v2/guards/completion-guard.sh +12 -29
  90. package/plugins/specweave/hooks/v2/guards/increment-duplicate-guard.sh +27 -29
  91. package/plugins/specweave/hooks/v2/guards/metadata-json-guard.sh +10 -4
  92. package/plugins/specweave/hooks/v2/guards/spec-validation-guard.sh +139 -0
  93. package/plugins/specweave/hooks/v2/guards/task-ac-sync-guard.sh +4 -2
  94. package/plugins/specweave/hooks/v2/session-end.sh +3 -1
  95. package/plugins/specweave/hooks/v2/session-start.sh +3 -1
  96. package/plugins/specweave/skills/increment-planner/templates/plan.md +14 -0
  97. package/plugins/specweave/skills/update-instructions/SKILL.md +80 -0
  98. package/plugins/specweave-ado/hooks/post-living-docs-update.sh +1 -1
  99. package/plugins/specweave-mobile/README.md +55 -35
  100. package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +805 -329
  101. package/plugins/specweave-mobile/skills/expo-workflow/SKILL.md +226 -9
  102. package/plugins/specweave-mobile/skills/native-modules/SKILL.md +221 -20
  103. package/plugins/specweave-mobile/skills/performance-optimization/SKILL.md +186 -14
  104. package/plugins/specweave-mobile/skills/react-native-setup/SKILL.md +151 -54
  105. package/plugins/specweave-release/commands/npm.md +61 -17
  106. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -3
  107. package/src/templates/AGENTS.md.template +34 -0
  108. package/src/templates/CLAUDE.md.template +121 -155
  109. package/plugins/specweave/hooks/config-env-separator.sh +0 -99
  110. package/plugins/specweave/hooks/github-metadata-guard.sh +0 -73
  111. package/plugins/specweave/hooks/lib/circuit-breaker.sh +0 -381
  112. package/plugins/specweave/hooks/lib/crash-prevention.sh +0 -336
  113. package/plugins/specweave/hooks/lib/logging.sh +0 -231
  114. package/plugins/specweave/hooks/lib/metrics.sh +0 -347
  115. package/plugins/specweave/hooks/lib/semaphore.sh +0 -216
  116. package/plugins/specweave/hooks/project-folder-guard.sh +0 -274
  117. package/plugins/specweave/hooks/spec-project-validator.sh +0 -210
  118. package/plugins/specweave/hooks/v2/guards/bash-file-guard.sh +0 -212
  119. package/plugins/specweave/hooks/v2/guards/bash-file-guard.test.sh +0 -163
  120. package/plugins/specweave/hooks/v2/guards/features-folder-guard.sh +0 -51
  121. package/plugins/specweave/hooks/v2/guards/increment-root-guard.sh +0 -63
  122. package/plugins/specweave/hooks/v2/guards/per-us-project-validator.sh +0 -335
  123. package/plugins/specweave/hooks/v2/guards/per-us-project-validator.test.sh +0 -406
@@ -1,14 +1,95 @@
1
1
  ---
2
2
  name: performance-optimization
3
- description: Expert in React Native performance optimization including bundle size reduction, memory management, rendering optimization, image optimization, list performance, navigation optimization, startup time, FlatList, memoization, React.memo, useMemo, useCallback, lazy loading, code splitting. Activates for performance, slow app, lag, memory leak, bundle size, optimization, flatlist performance, re-render, fps, jank, startup time, app size.
3
+ description: Expert in React Native 0.83+ performance optimization including Hermes V1, React 19.2 concurrent features, Intersection Observer, Web Performance APIs, bundle size reduction, memory management, rendering optimization, FlashList, expo-image v2, memoization, lazy loading, code splitting. Activates for performance, slow app, lag, memory leak, bundle size, optimization, flatlist performance, re-render, fps, jank, startup time, app size, hermes, concurrent rendering.
4
4
  ---
5
5
 
6
- # Performance Optimization Expert
6
+ # Performance Optimization Expert (RN 0.83+)
7
7
 
8
- Specialized in optimizing React Native and Expo applications for production. Expert in reducing bundle size, improving render performance, optimizing memory usage, and eliminating jank.
8
+ Specialized in optimizing React Native 0.83+ and Expo SDK 54+ applications for production. Expert in Hermes V1, React 19.2 concurrent features, Intersection Observer API, Web Performance APIs, and modern optimization strategies.
9
9
 
10
10
  ## What I Know
11
11
 
12
+ ### React Native 0.83 Performance Features
13
+
14
+ **Hermes V1 (Experimental)**
15
+ - Next-generation JavaScript engine
16
+ - Improved garbage collection
17
+ - Better startup performance
18
+ - Enhanced debugging with DevTools
19
+ - Enable in metro.config.js:
20
+
21
+ ```javascript
22
+ // metro.config.js
23
+ module.exports = {
24
+ transformer: {
25
+ hermesParser: true, // Enable Hermes V1 parser
26
+ },
27
+ };
28
+ ```
29
+
30
+ **React 19.2 Concurrent Features**
31
+ - Activity component for state preservation
32
+ - useEffectEvent for stable event handlers
33
+ - Improved concurrent rendering
34
+ - Better memory management during transitions
35
+
36
+ ```typescript
37
+ // Preserve state while hidden (React 19.2)
38
+ import { Activity } from 'react';
39
+
40
+ function TabContent({ isActive, children }) {
41
+ return (
42
+ <Activity mode={isActive ? 'visible' : 'hidden'}>
43
+ {children}
44
+ </Activity>
45
+ );
46
+ }
47
+ ```
48
+
49
+ **Intersection Observer API (Canary)**
50
+ - Web-like lazy loading for React Native
51
+ - Visibility detection without scroll events
52
+ - More efficient than manual scroll tracking
53
+
54
+ ```typescript
55
+ import { IntersectionObserver } from 'react-native';
56
+
57
+ // Lazy load when element enters viewport
58
+ const observer = new IntersectionObserver((entries) => {
59
+ entries.forEach((entry) => {
60
+ if (entry.isIntersecting) {
61
+ loadContent();
62
+ }
63
+ });
64
+ });
65
+ ```
66
+
67
+ **Web Performance APIs (Stable)**
68
+ - performance.now() for precise timing
69
+ - User Timing API for custom marks
70
+ - PerformanceObserver for monitoring
71
+
72
+ ```typescript
73
+ // Performance measurement
74
+ const start = performance.now();
75
+ await heavyOperation();
76
+ const duration = performance.now() - start;
77
+
78
+ // User Timing API
79
+ performance.mark('loadStart');
80
+ await loadData();
81
+ performance.mark('loadEnd');
82
+ performance.measure('dataLoad', 'loadStart', 'loadEnd');
83
+
84
+ // PerformanceObserver
85
+ const observer = new PerformanceObserver((list) => {
86
+ list.getEntries().forEach((entry) => {
87
+ console.log(`${entry.name}: ${entry.duration}ms`);
88
+ });
89
+ });
90
+ observer.observe({ entryTypes: ['measure'] });
91
+ ```
92
+
12
93
  ### Bundle Size Optimization
13
94
 
14
95
  **Analyzing Bundle Size**
@@ -28,19 +109,20 @@ npx react-native-bundle-visualizer
28
109
  ```
29
110
 
30
111
  **Reducing Bundle Size**
31
- - Remove unused dependencies
32
- - Use Hermes engine (Android)
112
+ - Remove unused dependencies with depcheck
113
+ - Use Hermes V1 for smaller bytecode
33
114
  - Enable code minification and obfuscation
34
115
  - Tree shaking for unused code elimination
35
116
  - Lazy load heavy screens and components
36
117
  - Optimize asset sizes (images, fonts)
118
+ - Use expo-image instead of react-native-fast-image
37
119
 
38
- **Hermes Configuration**
120
+ **Hermes Configuration (RN 0.83)**
39
121
  ```javascript
40
- // app.json (Expo)
122
+ // app.json (Expo SDK 54+)
41
123
  {
42
124
  "expo": {
43
- "jsEngine": "hermes", // Faster startup, smaller bundle
125
+ "jsEngine": "hermes", // Default in SDK 54
44
126
  "ios": {
45
127
  "jsEngine": "hermes"
46
128
  },
@@ -49,6 +131,14 @@ npx react-native-bundle-visualizer
49
131
  }
50
132
  }
51
133
  }
134
+
135
+ // For Hermes V1 experimental
136
+ // metro.config.js
137
+ module.exports = {
138
+ transformer: {
139
+ hermesParser: true,
140
+ },
141
+ };
52
142
  ```
53
143
 
54
144
  ### Rendering Performance
@@ -189,10 +279,85 @@ function SuperFastList({ data }) {
189
279
  }
190
280
  ```
191
281
 
282
+ **Intersection Observer for Lazy Loading (RN 0.83 Canary)**
283
+ ```typescript
284
+ import { useRef, useEffect, useState } from 'react';
285
+ import { View } from 'react-native';
286
+
287
+ function LazyLoadItem({ onVisible, children }) {
288
+ const ref = useRef(null);
289
+ const [isVisible, setIsVisible] = useState(false);
290
+
291
+ useEffect(() => {
292
+ if (!ref.current) return;
293
+
294
+ const observer = new IntersectionObserver(
295
+ ([entry]) => {
296
+ if (entry.isIntersecting && !isVisible) {
297
+ setIsVisible(true);
298
+ onVisible?.();
299
+ observer.disconnect();
300
+ }
301
+ },
302
+ { threshold: 0.1 }
303
+ );
304
+
305
+ observer.observe(ref.current);
306
+ return () => observer.disconnect();
307
+ }, []);
308
+
309
+ return (
310
+ <View ref={ref}>
311
+ {isVisible ? children : <Placeholder />}
312
+ </View>
313
+ );
314
+ }
315
+ ```
316
+
192
317
  ### Image Optimization
193
318
 
194
- **Fast Image for Better Performance**
319
+ **expo-image v2 (Recommended for Expo SDK 54+)**
320
+ ```typescript
321
+ // expo-image is the recommended solution for Expo projects
322
+ import { Image, useImage } from 'expo-image';
323
+
324
+ // Basic usage with blurhash placeholder
325
+ function OptimizedImage({ uri, blurhash }) {
326
+ return (
327
+ <Image
328
+ source={{ uri }}
329
+ placeholder={{ blurhash }}
330
+ contentFit="cover"
331
+ transition={200}
332
+ style={{ width: 100, height: 100 }}
333
+ cachePolicy="memory-disk" // Aggressive caching
334
+ />
335
+ );
336
+ }
337
+
338
+ // Imperative loading with useImage hook (v2)
339
+ function PreloadedImage({ uri }) {
340
+ const image = useImage(uri, {
341
+ onError: (error) => console.error('Image load failed:', error),
342
+ });
343
+
344
+ if (!image) {
345
+ return <ActivityIndicator />;
346
+ }
347
+
348
+ return (
349
+ <Image
350
+ source={image}
351
+ style={{ width: image.width / 2, height: image.height / 2 }}
352
+ contentFit="cover"
353
+ />
354
+ );
355
+ }
356
+ ```
357
+
358
+ **Fast Image for Bare RN Projects**
195
359
  ```javascript
360
+ // For bare React Native projects without Expo
196
361
  // Install: npm install react-native-fast-image
197
362
  import FastImage from 'react-native-fast-image';
198
363
 
@@ -202,8 +367,8 @@ function ProfilePicture({ uri }) {
202
367
  style={{ width: 100, height: 100 }}
203
368
  source={{
204
369
  uri: uri,
205
- priority: FastImage.priority.normal, // high, normal, low
206
- cache: FastImage.cacheControl.immutable // Aggressive caching
370
+ priority: FastImage.priority.normal,
371
+ cache: FastImage.cacheControl.immutable
207
372
  }}
208
373
  resizeMode={FastImage.resizeMode.cover}
209
374
  />
@@ -222,12 +387,14 @@ function ProfilePicture({ uri }) {
222
387
  // Use local images when possible (bundled)
223
388
  <Image source={require('./assets/logo.png')} />
224
389
 
225
- // Progressive loading
226
- import { Image } from 'react-native';
390
+ // Progressive loading with blurhash
391
+ import { Image } from 'expo-image';
227
392
 
228
393
  <Image
229
394
  source={{ uri: imageUrl }}
230
- defaultSource={require('./placeholder.png')} // iOS only
395
+ placeholder={{ blurhash: 'LGF5]+Yk^6#M@-5c,1J5@[or[Q6.' }}
396
+ contentFit="cover"
397
+ transition={300}
231
398
  style={{ width: 200, height: 200 }}
232
399
  />
233
400
  ```
@@ -429,6 +596,11 @@ Ask me when you need help with:
429
596
  - Analyzing performance bottlenecks
430
597
  - Using React.memo, useMemo, useCallback effectively
431
598
  - Implementing 60fps animations
599
+ - **Configuring Hermes V1 for better performance**
600
+ - **Using React 19.2 Activity component for state preservation**
601
+ - **Implementing Intersection Observer for lazy loading**
602
+ - **Using Web Performance APIs for profiling**
603
+ - **Migrating to expo-image v2**
432
604
 
433
605
  ## Performance Monitoring
434
606
 
@@ -1,99 +1,121 @@
1
1
  ---
2
2
  name: react-native-setup
3
- description: Expert in React Native environment setup and configuration. Helps with Node.js, Xcode, Android Studio, watchman installation, CocoaPods, simulators, emulators, and troubleshooting setup issues. Activates for environment setup, installation issues, xcode setup, android studio, simulators, emulators, react-native init, expo init, development environment, SDK configuration.
3
+ description: Expert in React Native 0.83+ and Expo SDK 54+ environment setup. Helps with Node.js 20+, Xcode 16.1+, Android Studio, watchman, CocoaPods, EAS Build, simulators, emulators, and troubleshooting. Activates for environment setup, installation issues, xcode setup, android studio, simulators, emulators, react-native init, expo init, development environment, SDK configuration, EAS Build, development builds.
4
4
  ---
5
5
 
6
- # React Native Setup Expert
6
+ # React Native Setup Expert (2025)
7
7
 
8
- Expert in React Native and Expo environment configuration across macOS, Windows, and Linux. Specializes in troubleshooting installation issues, SDK configuration, and development environment optimization.
8
+ Expert in React Native 0.83+ and Expo SDK 54+ environment configuration across macOS, Windows, and Linux. Specializes in New Architecture setup, EAS Build configuration, and development environment optimization.
9
9
 
10
10
  ## What I Know
11
11
 
12
- ### Prerequisites & Installation
12
+ ### Prerequisites & Installation (2025 Requirements)
13
13
 
14
14
  **Node.js & npm**
15
- - Node.js 18.x or later required
15
+ - **Node.js 20.x or later required** (Node 18 EOL April 2025)
16
+ - Node.js 22 LTS recommended for best performance
16
17
  - Version verification: `node --version && npm --version`
17
- - Troubleshooting Node.js installation issues
18
- - npm vs yarn vs pnpm for React Native projects
18
+ - Package managers: npm, yarn, pnpm, bun all supported
19
+ - Corepack for yarn: `corepack enable && corepack prepare yarn@stable --activate`
19
20
 
20
21
  **Xcode (macOS - iOS Development)**
21
- - Xcode 15.x or later required
22
- - Command line tools installation: `xcode-select --install`
22
+ - **Xcode 16.1 or later required** (minimum for RN 0.83)
23
+ - **Xcode 26 recommended** for iOS Liquid Glass support
24
+ - Command line tools: `xcode-select --install`
23
25
  - License acceptance: `sudo xcodebuild -license accept`
24
- - Platform installation verification
25
- - Common Xcode errors and fixes
26
+ - iOS 15.1+ deployment target (minimum supported)
27
+ - iOS 18+ for latest features, iOS 26 for Liquid Glass
26
28
 
27
29
  **Android Studio (Android Development)**
28
- - Android Studio Hedgehog or later
30
+ - **Android Studio Ladybug or later** (2024.2.1+)
29
31
  - Required SDK components:
30
- - Android SDK Platform 34 or later
31
- - Android SDK Build-Tools
32
+ - **Android SDK Platform 35** (API level 35)
33
+ - Android SDK Build-Tools 35.0.0
32
34
  - Android Emulator
33
35
  - Android SDK Platform-Tools
36
+ - **NDK 27.1.12297006** (for native modules)
37
+ - CMake 3.22.1+ (for Turbo Modules)
38
+ - **compileSdkVersion 35, targetSdkVersion 35, minSdkVersion 24**
34
39
  - ANDROID_HOME environment variable setup
35
- - SDK Manager configuration
36
- - Common Android Studio issues
40
+ - Edge-to-edge display support (Android 15+)
37
41
 
38
42
  **Watchman**
39
43
  - Installation via Homebrew (macOS): `brew install watchman`
40
- - Purpose: File watching for fast refresh
41
- - Troubleshooting watchman errors
42
- - Cache clearing strategies
44
+ - Purpose: File watching for fast refresh with Metro
45
+ - Critical for large codebases
46
+ - Cache clearing: `watchman watch-del-all`
43
47
 
44
48
  ### Environment Configuration
45
49
 
46
50
  **iOS Setup**
47
- - CocoaPods installation and troubleshooting
48
- - Pod install issues and resolutions
49
- - Xcode project configuration
51
+ - CocoaPods 1.15+ installation: `sudo gem install cocoapods`
52
+ - Pod install with New Architecture: `RCT_NEW_ARCH_ENABLED=1 pod install`
53
+ - Xcode project configuration for Fabric
50
54
  - Provisioning profiles and certificates
51
55
  - iOS Simulator management
52
56
  - Device selection: `xcrun simctl list devices`
57
+ - Liquid Glass testing requires iOS 26 simulator
53
58
 
54
59
  **Android Setup**
55
- - Gradle configuration
60
+ - Gradle 8.10+ (bundled with Android Studio Ladybug)
56
61
  - Android SDK path configuration
57
62
  - Environment variables (ANDROID_HOME, PATH)
58
- - AVD (Android Virtual Device) creation
59
- - Emulator performance optimization
63
+ - AVD creation with API 35 images
64
+ - Emulator with edge-to-edge support
60
65
  - ADB troubleshooting
66
+ - New Architecture: `newArchEnabled=true` in gradle.properties
61
67
 
62
68
  **Metro Bundler**
63
69
  - Port 8081 configuration
64
70
  - Cache clearing: `npx react-native start --reset-cache`
65
- - Custom Metro config
66
- - Asset resolution issues
71
+ - Metro config for New Architecture
72
+ - Symlink support for monorepos
73
+ - Custom resolver configuration
74
+
75
+ **EAS Build Setup (Expo)**
76
+ - Install EAS CLI: `npm install -g eas-cli`
77
+ - Login: `eas login`
78
+ - Configure: `eas build:configure`
79
+ - Development builds for custom native code
80
+ - EAS Update for OTA updates
67
81
 
68
82
  ### Common Setup Issues
69
83
 
70
84
  **"Command not found" Errors**
71
- - PATH configuration
85
+ - PATH configuration for Node, Android SDK, Xcode tools
72
86
  - Shell profile updates (.zshrc, .bash_profile)
73
- - Symlink issues
87
+ - Symlink issues with nvm/fnm
74
88
 
75
89
  **SDK Not Found**
76
- - SDK path verification
90
+ - SDK path verification: `echo $ANDROID_HOME`
77
91
  - Environment variable troubleshooting
78
92
  - SDK Manager reinstallation
93
+ - NDK path for native modules
79
94
 
80
95
  **Pod Install Failures**
81
- - CocoaPods version issues
82
- - Ffi gem compilation errors
83
- - Ruby version compatibility
96
+ - CocoaPods version issues (requires 1.15+)
97
+ - Ffi gem compilation errors on Apple Silicon
98
+ - Ruby version compatibility (use system Ruby or rbenv)
99
+ - New Architecture pod failures: clean and rebuild
84
100
  - `pod deintegrate && pod install` strategy
85
101
 
86
102
  **Build Failures**
87
- - Clean build strategies
88
- - Dependency conflicts
103
+ - Clean build strategies (see Pro Tips)
104
+ - Dependency conflicts with New Architecture
89
105
  - Native module compilation errors
90
106
  - Xcode derived data clearing
107
+ - Gradle cache corruption
108
+
109
+ **New Architecture Issues**
110
+ - Turbo Module not found: check codegen ran
111
+ - Fabric component not rendering: verify native setup
112
+ - Bridge module compatibility: use interop layer
91
113
 
92
114
  ## When to Use This Skill
93
115
 
94
116
  Ask me when you need help with:
95
- - Initial React Native environment setup
96
- - Installing and configuring Xcode or Android Studio
117
+ - Initial React Native 0.83+ environment setup
118
+ - Installing and configuring Xcode 16.1+ or Android Studio Ladybug
97
119
  - Setting up iOS simulators or Android emulators
98
120
  - Troubleshooting "Command not found" errors
99
121
  - Resolving SDK path or ANDROID_HOME issues
@@ -103,6 +125,10 @@ Ask me when you need help with:
103
125
  - Troubleshooting build failures
104
126
  - Setting up watchman for file watching
105
127
  - Verifying development environment prerequisites
128
+ - **EAS Build configuration and troubleshooting**
129
+ - **New Architecture setup and migration**
130
+ - **Development build creation for custom native code**
131
+ - **Hermes V1 experimental setup**
106
132
 
107
133
  ## Quick Setup Commands
108
134
 
@@ -114,15 +140,15 @@ xcode-select --install
114
140
  # Accept Xcode license
115
141
  sudo xcodebuild -license accept
116
142
 
117
- # Install CocoaPods
143
+ # Install CocoaPods (1.15+ required)
118
144
  sudo gem install cocoapods
119
145
 
120
146
  # Install watchman
121
147
  brew install watchman
122
148
 
123
149
  # Verify setup
124
- xcodebuild -version
125
- pod --version
150
+ xcodebuild -version # Should be 16.1+
151
+ pod --version # Should be 1.15+
126
152
  watchman version
127
153
  ```
128
154
 
@@ -133,6 +159,9 @@ echo $ANDROID_HOME
133
159
  adb --version
134
160
  emulator -version
135
161
 
162
+ # Verify SDK version
163
+ $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --list | grep "platforms;android-35"
164
+
136
165
  # List available emulators
137
166
  emulator -list-avds
138
167
 
@@ -140,16 +169,16 @@ emulator -list-avds
140
169
  adb devices
141
170
  ```
142
171
 
143
- ### React Native Project
172
+ ### React Native CLI Project
144
173
  ```bash
145
- # Create new React Native project
146
- npx react-native init MyProject
174
+ # Create new React Native project (New Architecture enabled by default)
175
+ npx @react-native-community/cli init MyProject
147
176
 
148
177
  # Navigate to project
149
178
  cd MyProject
150
179
 
151
- # Install iOS dependencies
152
- cd ios && pod install && cd ..
180
+ # Install iOS dependencies with New Architecture
181
+ cd ios && RCT_NEW_ARCH_ENABLED=1 pod install && cd ..
153
182
 
154
183
  # Start Metro bundler
155
184
  npm start
@@ -161,18 +190,39 @@ npm run ios
161
190
  npm run android
162
191
  ```
163
192
 
193
+ ### Expo Project (Recommended)
194
+ ```bash
195
+ # Create new Expo project
196
+ npx create-expo-app@latest MyProject
197
+
198
+ # Navigate to project
199
+ cd MyProject
200
+
201
+ # Start development server
202
+ npx expo start
203
+
204
+ # Create development build (for custom native code)
205
+ npx expo install expo-dev-client
206
+ eas build --profile development --platform ios
207
+ eas build --profile development --platform android
208
+ ```
209
+
164
210
  ## Pro Tips
165
211
 
166
212
  1. **Clean Builds**: When in doubt, clean everything
167
213
  ```bash
168
- # iOS
169
- cd ios && rm -rf build Pods && pod install && cd ..
214
+ # iOS (nuclear option)
215
+ cd ios && rm -rf build Pods Podfile.lock && pod install && cd ..
170
216
 
171
217
  # Android
172
218
  cd android && ./gradlew clean && cd ..
173
219
 
174
- # Metro
220
+ # Metro + Watchman
221
+ watchman watch-del-all
175
222
  npx react-native start --reset-cache
223
+
224
+ # Expo
225
+ npx expo start --clear
176
226
  ```
177
227
 
178
228
  2. **Environment Variables**: Always verify environment variables after changes
@@ -181,6 +231,7 @@ npm run android
181
231
  export ANDROID_HOME=$HOME/Library/Android/sdk
182
232
  export PATH=$PATH:$ANDROID_HOME/emulator
183
233
  export PATH=$PATH:$ANDROID_HOME/platform-tools
234
+ export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
184
235
 
185
236
  # Reload shell
186
237
  source ~/.zshrc
@@ -190,23 +241,68 @@ npm run android
190
241
  ```bash
191
242
  # iOS
192
243
  xcrun simctl list devices
193
- xcrun simctl boot "iPhone 15 Pro"
244
+ xcrun simctl boot "iPhone 16 Pro"
194
245
 
195
- # Android
246
+ # Android (API 35 for edge-to-edge)
196
247
  emulator -list-avds
197
- emulator -avd Pixel_6_API_34
248
+ emulator -avd Pixel_8_API_35
198
249
  ```
199
250
 
200
251
  4. **Quick Health Check**: Verify entire environment
201
252
  ```bash
202
- node --version # Node.js
253
+ node --version # Should be 20+
203
254
  npm --version # npm
204
- xcodebuild -version # Xcode (macOS)
205
- pod --version # CocoaPods (macOS)
255
+ xcodebuild -version # Should be 16.1+
256
+ pod --version # Should be 1.15+
206
257
  adb --version # Android tools
207
258
  watchman version # Watchman
259
+ eas --version # EAS CLI (Expo)
260
+ ```
261
+
262
+ 5. **EAS Build Configuration**: Essential eas.json
263
+ ```json
264
+ {
265
+ "build": {
266
+ "development": {
267
+ "developmentClient": true,
268
+ "distribution": "internal"
269
+ },
270
+ "preview": {
271
+ "distribution": "internal"
272
+ },
273
+ "production": {}
274
+ }
275
+ }
276
+ ```
277
+
278
+ 6. **Hermes V1 (Experimental)**: Enable next-gen engine
279
+ ```javascript
280
+ // metro.config.js
281
+ module.exports = {
282
+ transformer: {
283
+ hermesParser: true,
284
+ },
285
+ };
208
286
  ```
209
287
 
288
+ ```bash
289
+ # Verify Hermes is running
290
+ # In app: global.HermesInternal !== undefined
291
+ ```
292
+
293
+ ## Version Compatibility Matrix (2025)
294
+
295
+ | Component | Minimum | Recommended | Notes |
296
+ |-----------|---------|-------------|-------|
297
+ | Node.js | 20.x | 22 LTS | Node 18 EOL April 2025 |
298
+ | React Native | 0.76+ | 0.83 | New Arch default since 0.76 |
299
+ | React | 18.3+ | 19.2 | Activity, useEffectEvent |
300
+ | Expo SDK | 52+ | 54 | Native tabs, Liquid Glass |
301
+ | Xcode | 16.1 | 26 | iOS 26 for Liquid Glass |
302
+ | Android SDK | 34 | 35 | Edge-to-edge support |
303
+ | CocoaPods | 1.14 | 1.15+ | New Arch compatibility |
304
+ | Gradle | 8.6 | 8.10+ | K2 compiler support |
305
+
210
306
  ## Integration with SpecWeave
211
307
 
212
308
  This skill integrates with SpecWeave's increment workflow:
@@ -214,3 +310,4 @@ This skill integrates with SpecWeave's increment workflow:
214
310
  - Reference in `tasks.md` for setup-related acceptance criteria
215
311
  - Include in `spec.md` for mobile-specific prerequisites
216
312
  - Document setup issues in increment `reports/` folder
313
+ - Use mobile-architect agent for architecture decisions