devendra-skill-package 1.0.2

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 (223) hide show
  1. package/.github/skills/boiler-project-generator/SKILL.md +103 -0
  2. package/.github/skills/boiler-project-generator/assets/templates/android/README.md +3 -0
  3. package/.github/skills/boiler-project-generator/assets/templates/angular/README.md +3 -0
  4. package/.github/skills/boiler-project-generator/assets/templates/flutter/README.md +3 -0
  5. package/.github/skills/boiler-project-generator/assets/templates/ios/README.md +3 -0
  6. package/.github/skills/boiler-project-generator/assets/templates/react/README.md +3 -0
  7. package/.github/skills/boiler-project-generator/assets/templates/react-native/README.md +3 -0
  8. package/.github/skills/boiler-project-generator/assets/templates/react-native/api-setup.ts +76 -0
  9. package/.github/skills/boiler-project-generator/assets/templates/react-native/component-primary-button.tsx +29 -0
  10. package/.github/skills/boiler-project-generator/assets/templates/react-native/env-config.env +4 -0
  11. package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-auth-screen.tsx +45 -0
  12. package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-dashboard-screen.tsx +45 -0
  13. package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-profile-screen.tsx +45 -0
  14. package/.github/skills/boiler-project-generator/assets/templates/react-native/hook-use-app-boot.ts +11 -0
  15. package/.github/skills/boiler-project-generator/assets/templates/react-native/navigation-setup.tsx +25 -0
  16. package/.github/skills/boiler-project-generator/assets/templates/react-native/project-structure.md +24 -0
  17. package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-hooks.ts +5 -0
  18. package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-session-slice.ts +29 -0
  19. package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-store.ts +15 -0
  20. package/.github/skills/boiler-project-generator/assets/templates/react-native/theme-index.ts +23 -0
  21. package/.github/skills/boiler-project-generator/assets/templates/react-native/utils-helpers.ts +7 -0
  22. package/.github/skills/boiler-project-generator/metadata.yaml +29 -0
  23. package/.github/skills/boiler-project-generator/references/android.md +19 -0
  24. package/.github/skills/boiler-project-generator/references/angular.md +14 -0
  25. package/.github/skills/boiler-project-generator/references/flutter.md +17 -0
  26. package/.github/skills/boiler-project-generator/references/ios.md +17 -0
  27. package/.github/skills/boiler-project-generator/references/react-native.md +103 -0
  28. package/.github/skills/boiler-project-generator/references/react.md +17 -0
  29. package/.github/skills/boiler-project-generator/scripts/angular.js +43 -0
  30. package/.github/skills/boiler-project-generator/scripts/generate-project.mjs +107 -0
  31. package/.github/skills/boiler-project-generator/scripts/init.js +105 -0
  32. package/.github/skills/boiler-project-generator/scripts/react-native.js +1041 -0
  33. package/.github/skills/boiler-project-generator/scripts/react.js +32 -0
  34. package/.github/skills/clean-architecture-generator/SKILL.md +235 -0
  35. package/.github/skills/clean-architecture-generator/references/architecture-core.md +126 -0
  36. package/.github/skills/clean-architecture-generator/references/platform-angular.md +374 -0
  37. package/.github/skills/clean-architecture-generator/references/platform-flutter.md +366 -0
  38. package/.github/skills/clean-architecture-generator/references/platform-react-native.md +590 -0
  39. package/.github/skills/clean-architecture-generator/references/platform-react.md +261 -0
  40. package/.github/skills/code-test-coverage-analyzer/SKILL.md +1358 -0
  41. package/.github/skills/code-test-coverage-analyzer/assets/config-questionnaire.md +118 -0
  42. package/.github/skills/code-test-coverage-analyzer/assets/conflict-resolution-protocol.md +99 -0
  43. package/.github/skills/code-test-coverage-analyzer/assets/coverage-calculation-rules.md +294 -0
  44. package/.github/skills/code-test-coverage-analyzer/assets/multi-strategy-search.md +145 -0
  45. package/.github/skills/code-test-coverage-analyzer/assets/output-file-contracts.md +651 -0
  46. package/.github/skills/code-test-coverage-analyzer/assets/status-definitions.md +273 -0
  47. package/.github/skills/code-test-coverage-analyzer/examples/example-invocation.md +208 -0
  48. package/.github/skills/code-test-coverage-analyzer/references/android-patterns.md +229 -0
  49. package/.github/skills/code-test-coverage-analyzer/references/angular-patterns.md +177 -0
  50. package/.github/skills/code-test-coverage-analyzer/references/backend-patterns.md +383 -0
  51. package/.github/skills/code-test-coverage-analyzer/references/flutter-patterns.md +254 -0
  52. package/.github/skills/code-test-coverage-analyzer/references/ios-patterns.md +228 -0
  53. package/.github/skills/code-test-coverage-analyzer/references/react-native-patterns.md +431 -0
  54. package/.github/skills/code-test-coverage-analyzer/references/react-patterns.md +206 -0
  55. package/.github/skills/code-test-coverage-analyzer/scripts/detect-platform.ps1 +261 -0
  56. package/.github/skills/code-test-coverage-analyzer/scripts/scan-repository.ps1 +242 -0
  57. package/.github/skills/code-test-coverage-analyzer/templates/brd-compliance-row.md +107 -0
  58. package/.github/skills/code-test-coverage-analyzer/templates/test-case-row.md +130 -0
  59. package/.github/skills/code-test-coverage-analyzer/templates/user-story-compliance-row.md +170 -0
  60. package/.github/skills/custom-font-integrator/SKILL.md +373 -0
  61. package/.github/skills/custom-font-integrator/assets/FontTestScreen.js +150 -0
  62. package/.github/skills/custom-font-integrator/references/example-info-plist.xml +21 -0
  63. package/.github/skills/custom-font-integrator/scripts/setup-fonts.sh +99 -0
  64. package/.github/skills/encryption-decryption-utility/Instructions.md +282 -0
  65. package/.github/skills/encryption-decryption-utility/README.md +222 -0
  66. package/.github/skills/encryption-decryption-utility/SKILL.md +645 -0
  67. package/.github/skills/encryption-decryption-utility/assets/encryption-config-template.json +13 -0
  68. package/.github/skills/encryption-decryption-utility/assets/platform-matrix.json +180 -0
  69. package/.github/skills/encryption-decryption-utility/metadata.yaml +51 -0
  70. package/.github/skills/encryption-decryption-utility/references/android-crypto.md +157 -0
  71. package/.github/skills/encryption-decryption-utility/references/angular-crypto.md +130 -0
  72. package/.github/skills/encryption-decryption-utility/references/approach-1-webcrypto.md +95 -0
  73. package/.github/skills/encryption-decryption-utility/references/approach-2-rsa-aes-cbc.md +111 -0
  74. package/.github/skills/encryption-decryption-utility/references/approach-3-aes-sharedkey.md +114 -0
  75. package/.github/skills/encryption-decryption-utility/references/architecture.md +233 -0
  76. package/.github/skills/encryption-decryption-utility/references/backend-alignment.md +506 -0
  77. package/.github/skills/encryption-decryption-utility/references/dependency-guidance.md +234 -0
  78. package/.github/skills/encryption-decryption-utility/references/ec-implementation.md +832 -0
  79. package/.github/skills/encryption-decryption-utility/references/error-handling-playbook.md +234 -0
  80. package/.github/skills/encryption-decryption-utility/references/flutter-crypto.md +105 -0
  81. package/.github/skills/encryption-decryption-utility/references/ios-crypto.md +338 -0
  82. package/.github/skills/encryption-decryption-utility/references/native-rsa-implementation.md +373 -0
  83. package/.github/skills/encryption-decryption-utility/references/node-crypto.md +86 -0
  84. package/.github/skills/encryption-decryption-utility/references/react-crypto.md +105 -0
  85. package/.github/skills/encryption-decryption-utility/references/react-native-crypto.md +1001 -0
  86. package/.github/skills/encryption-decryption-utility/references/react-web-crypto.md +668 -0
  87. package/.github/skills/encryption-decryption-utility/references/security-checklist.md +176 -0
  88. package/.github/skills/encryption-decryption-utility/references/web-crypto.md +74 -0
  89. package/.github/skills/encryption-decryption-utility/scripts/detect.js +128 -0
  90. package/.github/skills/encryption-decryption-utility/scripts/install.js +1713 -0
  91. package/.github/skills/encryption-decryption-utility/scripts/setup.js +800 -0
  92. package/.github/skills/encryption-decryption-utility/template.md +241 -0
  93. package/.github/skills/encryption-decryption-utility/templates/config-questionnaire.md +467 -0
  94. package/.github/skills/encryption-decryption-utility/templates/delivery-checklist.md +206 -0
  95. package/.github/skills/encryption-decryption-utility/templates/implementation-plan.md +304 -0
  96. package/.github/skills/feature-generator/SKILL.MD +2741 -0
  97. package/.github/skills/feature-generator/assets/fingerprint-schema.json +385 -0
  98. package/.github/skills/feature-generator/assets/spec-template.md +172 -0
  99. package/.github/skills/feature-generator/assets/transform-rules.json +82 -0
  100. package/.github/skills/feature-generator/references/api-envelope-patterns.md +327 -0
  101. package/.github/skills/feature-generator/references/screen-logic-patterns.md +399 -0
  102. package/.github/skills/feature-generator/references/state-library-patterns.md +464 -0
  103. package/.github/skills/figma-ui-mapper/README.md +34 -0
  104. package/.github/skills/figma-ui-mapper/SKILL.md +101 -0
  105. package/.github/skills/figma-ui-mapper/assets/templates/component-map-template.md +30 -0
  106. package/.github/skills/figma-ui-mapper/assets/templates/generation-report-template.md +49 -0
  107. package/.github/skills/figma-ui-mapper/metadata.yaml +22 -0
  108. package/.github/skills/figma-ui-mapper/references/android.md +11 -0
  109. package/.github/skills/figma-ui-mapper/references/angular.md +18 -0
  110. package/.github/skills/figma-ui-mapper/references/capacitor.md +18 -0
  111. package/.github/skills/figma-ui-mapper/references/common.md +23 -0
  112. package/.github/skills/figma-ui-mapper/references/expo.md +18 -0
  113. package/.github/skills/figma-ui-mapper/references/flutter.md +18 -0
  114. package/.github/skills/figma-ui-mapper/references/frameworks/angular/rules.md +23 -0
  115. package/.github/skills/figma-ui-mapper/references/frameworks/capacitor/rules.md +23 -0
  116. package/.github/skills/figma-ui-mapper/references/frameworks/expo/rules.md +23 -0
  117. package/.github/skills/figma-ui-mapper/references/frameworks/flutter/rules.md +23 -0
  118. package/.github/skills/figma-ui-mapper/references/frameworks/ionic/rules.md +23 -0
  119. package/.github/skills/figma-ui-mapper/references/frameworks/kotlin-multiplatform/rules.md +23 -0
  120. package/.github/skills/figma-ui-mapper/references/frameworks/native-android/rules.md +23 -0
  121. package/.github/skills/figma-ui-mapper/references/frameworks/native-ios/rules.md +23 -0
  122. package/.github/skills/figma-ui-mapper/references/frameworks/next/rules.md +23 -0
  123. package/.github/skills/figma-ui-mapper/references/frameworks/nuxt/rules.md +23 -0
  124. package/.github/skills/figma-ui-mapper/references/frameworks/react/rules.md +19 -0
  125. package/.github/skills/figma-ui-mapper/references/frameworks/react-native/rules.md +23 -0
  126. package/.github/skills/figma-ui-mapper/references/frameworks/svelte/rules.md +23 -0
  127. package/.github/skills/figma-ui-mapper/references/frameworks/vue/rules.md +23 -0
  128. package/.github/skills/figma-ui-mapper/references/ionic.md +18 -0
  129. package/.github/skills/figma-ui-mapper/references/ios.md +11 -0
  130. package/.github/skills/figma-ui-mapper/references/kotlin-multiplatform.md +18 -0
  131. package/.github/skills/figma-ui-mapper/references/native-android.md +18 -0
  132. package/.github/skills/figma-ui-mapper/references/native-ios.md +18 -0
  133. package/.github/skills/figma-ui-mapper/references/next.md +18 -0
  134. package/.github/skills/figma-ui-mapper/references/nuxt.md +18 -0
  135. package/.github/skills/figma-ui-mapper/references/react-figma-guideline.md +21 -0
  136. package/.github/skills/figma-ui-mapper/references/react-native.md +18 -0
  137. package/.github/skills/figma-ui-mapper/references/react.md +18 -0
  138. package/.github/skills/figma-ui-mapper/references/script-usage.md +46 -0
  139. package/.github/skills/figma-ui-mapper/references/svelte.md +18 -0
  140. package/.github/skills/figma-ui-mapper/references/vue.md +18 -0
  141. package/.github/skills/figma-ui-mapper/references/workflow.md +74 -0
  142. package/.github/skills/figma-ui-mapper/scripts/generate-page-through-figma.js +635 -0
  143. package/.github/skills/figma-ui-mapper/scripts/generate-react-page-through-figma.js +4 -0
  144. package/.github/skills/frontend-task-breakdown/SKILL.md +734 -0
  145. package/.github/skills/md-file-converter/SKILL.md +291 -0
  146. package/.github/skills/md-file-converter/config/formats.json +114 -0
  147. package/.github/skills/md-file-converter/extractors/extract-docx.sh +120 -0
  148. package/.github/skills/md-file-converter/extractors/extract-eml.py +108 -0
  149. package/.github/skills/md-file-converter/extractors/extract-pdf.sh +97 -0
  150. package/.github/skills/md-file-converter/extractors/extract-pptx.py +143 -0
  151. package/.github/skills/md-file-converter/extractors/extract-xlsx.py +175 -0
  152. package/.github/skills/md-file-converter/scripts/check-tools.sh +47 -0
  153. package/.github/skills/md-file-converter/scripts/extract-archive.sh +83 -0
  154. package/.github/skills/md-file-converter/scripts/extract-ocr.sh +77 -0
  155. package/.github/skills/md-file-converter/scripts/get-metadata.sh +57 -0
  156. package/.github/skills/md-file-converter/templates/output.md +73 -0
  157. package/.github/skills/md-file-converter/templates/unsupported-object.md +6 -0
  158. package/.github/skills/mockAPI-contract-generator/SKILL.md +607 -0
  159. package/.github/skills/test-case-validator/CHANGELOG.md +155 -0
  160. package/.github/skills/test-case-validator/CONFIGURATION.md +130 -0
  161. package/.github/skills/test-case-validator/EXAMPLES.md +50 -0
  162. package/.github/skills/test-case-validator/QUALITY_SCORING.md +98 -0
  163. package/.github/skills/test-case-validator/README.md +111 -0
  164. package/.github/skills/test-case-validator/REPORT_TEMPLATE.md +116 -0
  165. package/.github/skills/test-case-validator/SKILL.md +209 -0
  166. package/.github/skills/test-case-validator/SYSTEM_PROMPT.md +127 -0
  167. package/.github/skills/test-case-validator/TRACEABILITY_ENGINE.md +152 -0
  168. package/.github/skills/test-case-validator/VALIDATION_RULES.md +411 -0
  169. package/.github/skills/test-case-validator/config/default.config.yaml +62 -0
  170. package/.github/skills/test-case-validator/docs/ARCHITECTURE.md +66 -0
  171. package/.github/skills/test-case-validator/docs/EXTENDING.md +85 -0
  172. package/.github/skills/test-case-validator/docs/FAQ.md +88 -0
  173. package/.github/skills/test-case-validator/docs/VERSIONING.md +55 -0
  174. package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-brd.md +43 -0
  175. package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-test-cases.csv +9 -0
  176. package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-user-story.md +29 -0
  177. package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/output-report.md +303 -0
  178. package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-spec.md +43 -0
  179. package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-test-files-index.md +56 -0
  180. package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/output-report.md +274 -0
  181. package/.github/skills/test-case-validator/prompts/00-applicability-resolution.md +61 -0
  182. package/.github/skills/test-case-validator/prompts/01-extraction-user-story.md +58 -0
  183. package/.github/skills/test-case-validator/prompts/02-extraction-brd.md +64 -0
  184. package/.github/skills/test-case-validator/prompts/03-extraction-test-cases.md +92 -0
  185. package/.github/skills/test-case-validator/prompts/04-traceability-matrix.md +41 -0
  186. package/.github/skills/test-case-validator/prompts/05-coverage-analysis.md +46 -0
  187. package/.github/skills/test-case-validator/prompts/06-missing-scenario-detection.md +32 -0
  188. package/.github/skills/test-case-validator/prompts/07-duplicate-detection.md +36 -0
  189. package/.github/skills/test-case-validator/prompts/08-risk-analysis.md +39 -0
  190. package/.github/skills/test-case-validator/prompts/09-gated-wiring-validation.md +53 -0
  191. package/.github/skills/test-case-validator/prompts/10-observation-report.md +56 -0
  192. package/.github/skills/test-case-validator/prompts/11-final-report-assembly.md +57 -0
  193. package/.github/skills/test-case-validator/templates/coverage-table.md +25 -0
  194. package/.github/skills/test-case-validator/templates/executive-summary.md +38 -0
  195. package/.github/skills/test-case-validator/templates/final-summary-block.md +87 -0
  196. package/.github/skills/test-case-validator/templates/observation-entry.md +41 -0
  197. package/.github/skills/test-case-validator/templates/rtm-row.md +25 -0
  198. package/.github/skills/validation-engine-builder/README.md +50 -0
  199. package/.github/skills/validation-engine-builder/SKILL.md +241 -0
  200. package/.github/skills/validation-engine-builder/references/core.md +158 -0
  201. package/.github/skills/validation-engine-builder/references/platform-angular.md +166 -0
  202. package/.github/skills/validation-engine-builder/references/platform-flutter.md +118 -0
  203. package/.github/skills/validation-engine-builder/references/platform-react-native.md +170 -0
  204. package/.github/skills/validation-engine-builder/references/platform-react.md +94 -0
  205. package/.github/skills/validation-engine-builder/scripts/apply-to-project.js +80 -0
  206. package/.github/skills/validation-engine-builder/scripts/generate-angular.js +271 -0
  207. package/.github/skills/validation-engine-builder/scripts/generate-flutter.js +298 -0
  208. package/.github/skills/validation-engine-builder/scripts/generate-react-native.js +217 -0
  209. package/.github/skills/validation-engine-builder/scripts/generate-react.js +163 -0
  210. package/.github/skills/validation-engine-builder/scripts/install-deps.js +53 -0
  211. package/.github/skills/validation-engine-builder/scripts/shared/detect-platform.js +68 -0
  212. package/.github/skills/validation-engine-builder/scripts/shared/npm-deps.js +103 -0
  213. package/.github/skills/validation-engine-builder/scripts/shared/rhf-hook.js +43 -0
  214. package/.github/skills/validation-engine-builder/scripts/shared/ts-messages-regex.js +62 -0
  215. package/.github/skills/validation-engine-builder/scripts/shared/util.js +44 -0
  216. package/.github/skills/validation-engine-builder/scripts/shared/yup-schemas.js +80 -0
  217. package/.github/skills/validation-engine-builder/template.md +73 -0
  218. package/.github/skills/validation-engine-builder/templates/messages.json +22 -0
  219. package/.github/skills/validation-engine-builder/templates/regex.json +16 -0
  220. package/.github/skills/validation-engine-builder/templates/schemas.json +48 -0
  221. package/bin/index.js +145 -0
  222. package/package.json +22 -0
  223. package/readme.md +0 -0
@@ -0,0 +1,103 @@
1
+ # React Native — Reference Guide
2
+
3
+ ## Direct Script Invocation
4
+
5
+ For React Native projects, call the generator script directly with all flags:
6
+
7
+ ```powershell
8
+ node .github/skills/boiler-project-generator/scripts/react-native.js \
9
+ --project MyApp \
10
+ --language typescript \
11
+ --enableNavigation yes \
12
+ --enableRedux yes \
13
+ --enableEnv yes \
14
+ --verificationTarget none
15
+ ```
16
+
17
+ The script handles everything end-to-end: scaffold, dependencies, templates, compatibility verification, and summary.
18
+
19
+ ## Progress Steps
20
+
21
+ The script prints numbered progress steps so you know it is still running:
22
+
23
+ 1. `[1/6]` Installing core packages (axios, react-native-config)
24
+ 2. `[2/6]` Installing navigation packages (or skipped)
25
+ 3. `[3/6]` Installing Redux Toolkit (or skipped)
26
+ 4. `[4/6]` Installing environment config (or skipped)
27
+ 5. `[5/6]` Applying templates and wiring entry point
28
+ 6. `[6/6]` Verifying dependency compatibility
29
+
30
+ Do NOT interrupt the script between these steps. Package installs can take several minutes.
31
+
32
+ ## Navigation and Reanimated Compatibility
33
+
34
+ | React Native | Reanimated | Gesture Handler | Screens | Safe Area Context | Worklets |
35
+ |---|---|---|---|---|---|
36
+ | 0.79.x | 3.16.1 | 2.20.2 | 4.4.0 | 4.14.0 | N/A |
37
+ | 0.80+ / latest | 4.x | latest | latest | latest | Required |
38
+
39
+ - For RN 0.80+, always install `react-native-worklets` explicitly alongside `react-native-reanimated@4`.
40
+ - Do NOT use the 0.79.x pinned versions on 0.80+ — they cause Android build failures due to removed APIs (`LayoutAnimationController`, `UIManagerModuleListener`, `ChoreographerCompat`).
41
+ - The script automatically resolves the actual installed RN version (handles `latest` input) and selects the correct package set.
42
+
43
+ ## Dependency Compatibility
44
+
45
+ After all packages are installed, the script runs `npm ls --depth=0` to detect peer dependency issues.
46
+
47
+ - If issues are found, it attempts a clean reinstall (`rm node_modules + npm install`).
48
+ - If version-pinned packages cause ERESOLVE conflicts during install, the script retries with unpinned versions to auto-resolve compatible ones.
49
+ - Remaining issues are reported as warnings in the final summary.
50
+
51
+ ## Generated Project Structure
52
+
53
+ ```
54
+ <ProjectName>/
55
+ src/
56
+ assets/image/
57
+ components/PrimaryButton.tsx
58
+ features/
59
+ auth/AuthScreen.tsx
60
+ dashboard/DashboardScreen.tsx
61
+ profile/ProfileScreen.tsx
62
+ hooks/useAppBoot.ts
63
+ navigation/RootNavigator.tsx (if enableNavigation=yes)
64
+ services/api.ts
65
+ store/ (if enableRedux=yes)
66
+ store.ts
67
+ hooks.ts
68
+ sessionSlice.ts
69
+ theme/index.ts
70
+ utils/helpers.ts
71
+ .env.uat (if enableEnv=yes)
72
+ .env.staging (if enableEnv=yes)
73
+ .env.prod (if enableEnv=yes)
74
+ App.tsx
75
+ babel.config.js
76
+ ```
77
+
78
+ ## Post-Generation
79
+
80
+ - Replace placeholder API URLs in `.env.*` with real endpoints.
81
+ - Add app icons and splash screen assets to `src/assets/image/`.
82
+ - Extend `RootNavigator.tsx` with additional screens.
83
+ - Wire auth token logic into `useAppBoot.ts`.
84
+
85
+ ## Verification
86
+
87
+ The script runs lint, typecheck, and tests automatically after generation. Platform builds (Android/iOS) run only when `--verificationTarget` is set.
88
+
89
+ To manually verify TypeScript:
90
+
91
+ ```bash
92
+ cd <ProjectName>
93
+ npx tsc --noEmit
94
+ ```
95
+
96
+ ## Troubleshooting
97
+
98
+ | Error | Fix |
99
+ |-------|-----|
100
+ | `ERESOLVE` dependency conflict | Script auto-retries with unpinned versions, then clean reinstall |
101
+ | Android build fails with reanimated/worklets error | Script auto-adds `react-native-worklets` and retries |
102
+ | `pod install` fails | Run `cd ios && pod install --repo-update` manually (macOS only) |
103
+ | Terminal appears stuck during init | The `react-native init` step takes several minutes — wait for it |
@@ -0,0 +1,17 @@
1
+ # React Reference: Post-generation Validation and Notes
2
+
3
+ This reference contains React-specific guidance for the `boiler-project-generator` skill. Use these steps when `framework=react` or generating React projects.
4
+
5
+ 1. After the generator finishes, change directory into the generated project: `cd <projectName>`.
6
+ 2. Install dependencies: `npm install` or `yarn`.
7
+ 3. Run static analysis and linting: `npm run lint` (ensure an ESLint config exists).
8
+ 4. Run tests: `npm test`.
9
+ 5. Build the production bundle: `npm run build` and verify the `build/` output.
10
+
11
+ Validation notes
12
+ - Capture lint warnings/errors and test failures into the skill report JSON.
13
+ - Verify the project includes a README, license, and CI workflow for common platforms (GitHub Actions, Azure Pipelines, etc.).
14
+
15
+ CI guidance
16
+ - Use Node.js official runner images and cache `node_modules` between runs.
17
+ - For static hosting, ensure build artifacts are uploaded to the expected artifact path.
@@ -0,0 +1,43 @@
1
+ const { execSync } = require('node:child_process');
2
+
3
+ function getFlag(name) {
4
+ const idx = process.argv.indexOf(name);
5
+ if (idx === -1) return null;
6
+ return process.argv[idx + 1] || null;
7
+ }
8
+
9
+ if (process.argv.includes('--help') || process.argv.includes('-h')) {
10
+ console.log('Usage: node angular.js <projectName> <language> [--template <name>]');
11
+ process.exit(0);
12
+ }
13
+
14
+ const projectName = getFlag('--project') || process.argv[2] || 'my-angular-app';
15
+ const language = getFlag('--language') || process.argv[3] || 'typescript';
16
+ const template = getFlag('--template');
17
+ const buildEnv = { ...process.env, NG_CLI_ANALYTICS: 'false' };
18
+
19
+ console.log('Creating Angular project...');
20
+
21
+ if (language === 'javascript') {
22
+ console.log('Angular CLI generates TypeScript projects. Proceeding with TypeScript.');
23
+ }
24
+
25
+ const templateArg = '';
26
+ // template currently not used for Angular CLI, reserved for future templates
27
+
28
+ execSync(
29
+ `npx @angular/cli@latest new ${projectName} --routing --style=scss --defaults ${templateArg}`,
30
+ { stdio: 'inherit', env: buildEnv }
31
+ );
32
+
33
+ console.log(`Validating Angular project in ${projectName}...`);
34
+
35
+ try {
36
+ execSync('npm run build', { cwd: projectName, stdio: 'inherit', env: buildEnv });
37
+ } catch (err) {
38
+ console.error('Build failed during validation:', err.message);
39
+ process.exit(2);
40
+ }
41
+
42
+ console.log('Angular project ready!');
43
+ console.log(`Run future Angular commands from inside ${projectName}.`);
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from 'node:child_process';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+
10
+ function parseFlag(name) {
11
+ const idx = process.argv.indexOf(name);
12
+ if (idx === -1) return null;
13
+ return process.argv[idx + 1] || null;
14
+ }
15
+
16
+ function hasFlag(name) {
17
+ return process.argv.includes(name);
18
+ }
19
+
20
+ function showHelp() {
21
+ console.log('Usage: node generate-project.mjs --framework <angular|react|react-native|other> --language <javascript|typescript> --project <name> [--template <name>] [--dry-run] [--force]');
22
+ }
23
+
24
+ if (hasFlag('--help') || hasFlag('-h')) {
25
+ showHelp();
26
+ process.exit(0);
27
+ }
28
+
29
+ const framework = parseFlag('--framework') || 'angular';
30
+ const language = parseFlag('--language') || 'javascript';
31
+ const project = parseFlag('--project') || `my-${framework}-app`;
32
+ const template = parseFlag('--template') || 'minimal';
33
+ const dryRun = hasFlag('--dry-run');
34
+ const force = hasFlag('--force');
35
+
36
+ const reportDir = path.join(process.cwd(), 'artifacts', 'boiler-generator');
37
+ if (!fs.existsSync(reportDir)) fs.mkdirSync(reportDir, { recursive: true });
38
+ const reportPath = path.join(reportDir, `${project}-report.json`);
39
+
40
+ const report = {
41
+ projectName: project,
42
+ framework,
43
+ language,
44
+ template,
45
+ dryRun,
46
+ force,
47
+ timestamp: new Date().toISOString(),
48
+ status: 'pending',
49
+ steps: []
50
+ };
51
+
52
+ function writeReportAndExit(code) {
53
+ try {
54
+ // Deterministic fields ordering
55
+ const out = {
56
+ projectName: report.projectName,
57
+ framework: report.framework,
58
+ language: report.language,
59
+ template: report.template,
60
+ dryRun: report.dryRun,
61
+ force: report.force,
62
+ timestamp: report.timestamp,
63
+ status: report.status,
64
+ steps: report.steps
65
+ };
66
+ fs.writeFileSync(reportPath, JSON.stringify(out, null, 2));
67
+ console.log('Wrote report to', reportPath);
68
+ } catch (err) {
69
+ console.error('Failed to write report:', err.message);
70
+ }
71
+ process.exit(code);
72
+ }
73
+
74
+ report.steps.push({ step: 'validate-inputs', ok: true, details: 'Inputs parsed' });
75
+
76
+ if (dryRun) {
77
+ report.status = 'dry-run';
78
+ report.steps.push({ step: 'dry-run', ok: true, details: `Would invoke framework script for ${framework} with template ${template}` });
79
+ writeReportAndExit(0);
80
+ }
81
+
82
+ // Invoke the existing init.js orchestrator with flags for deterministic execution
83
+ const node = process.execPath;
84
+ const initScript = path.join(__dirname, 'init.js');
85
+ const args = [initScript, '--framework', framework, '--language', language, '--project', project];
86
+ if (template) args.push('--template', template);
87
+ if (force) args.push('--force');
88
+
89
+ report.steps.push({ step: 'invoke-orchestrator', ok: null, details: `Running: ${node} ${args.join(' ')}` });
90
+
91
+ const res = spawnSync(node, args, { stdio: 'inherit' });
92
+
93
+ if (res.error) {
94
+ report.status = 'failed';
95
+ report.steps.push({ step: 'invoke-orchestrator', ok: false, details: res.error.message });
96
+ writeReportAndExit(2);
97
+ }
98
+
99
+ if (res.status !== 0) {
100
+ report.status = 'failed';
101
+ report.steps.push({ step: 'orchestrator-exit', ok: false, details: `exitCode=${res.status}` });
102
+ writeReportAndExit(res.status);
103
+ }
104
+
105
+ report.status = 'success';
106
+ report.steps.push({ step: 'orchestrator-exit', ok: true, details: 'orchestrator completed successfully' });
107
+ writeReportAndExit(0);
@@ -0,0 +1,105 @@
1
+ const path = require('node:path');
2
+ const readline = require('node:readline');
3
+ const { execFileSync } = require('node:child_process');
4
+
5
+ function parseFlag(name) {
6
+ const idx = process.argv.indexOf(name);
7
+ if (idx === -1) return null;
8
+ return process.argv[idx + 1] || null;
9
+ }
10
+
11
+ function showHelp() {
12
+ console.log('Usage: node init.js [--framework <angular|react|react-native|other>] [--language <javascript|typescript>] [--project <name>] [--template <name>] [-- additional flags]');
13
+ console.log('Additional framework-specific flags (e.g. --enableNavigation, --enableRedux) are forwarded to the child script.');
14
+ console.log('If no flags provided, runs interactive prompt.');
15
+ }
16
+
17
+ function runScript(scriptName, projectName, language, template) {
18
+ const args = [path.join(__dirname, scriptName)];
19
+ if (projectName) args.push(projectName);
20
+ if (language) args.push(language);
21
+ if (template) args.push('--template', template);
22
+
23
+ // Forward any additional CLI flags not consumed by init.js to the child script
24
+ const consumed = new Set(['--framework', '--language', '--project', '--template', '--help', '-h']);
25
+ for (let i = 2; i < process.argv.length; i += 1) {
26
+ const token = process.argv[i];
27
+ if (!token.startsWith('--')) continue;
28
+ if (consumed.has(token)) {
29
+ if (process.argv[i + 1] && !process.argv[i + 1].startsWith('--')) i += 1;
30
+ continue;
31
+ }
32
+ args.push(token);
33
+ if (process.argv[i + 1] && !process.argv[i + 1].startsWith('--')) {
34
+ i += 1;
35
+ args.push(process.argv[i]);
36
+ }
37
+ }
38
+
39
+ execFileSync(process.execPath, args, { stdio: 'inherit' });
40
+ }
41
+
42
+ const frameworkFlag = parseFlag('--framework');
43
+ const languageFlag = parseFlag('--language');
44
+ const projectFlag = parseFlag('--project');
45
+ const templateFlag = parseFlag('--template');
46
+
47
+ if (process.argv.includes('--help') || process.argv.includes('-h')) {
48
+ showHelp();
49
+ process.exit(0);
50
+ }
51
+
52
+ if (frameworkFlag) {
53
+ const framework = frameworkFlag.toLowerCase();
54
+ const language = languageFlag || 'javascript';
55
+ const projectName = projectFlag || 'my-app';
56
+
57
+ switch (framework) {
58
+ case 'angular':
59
+ runScript('angular.js', projectName, language, templateFlag);
60
+ break;
61
+ case 'react':
62
+ runScript('react.js', projectName, language, templateFlag);
63
+ break;
64
+ case 'react-native':
65
+ runScript('react-native.js', projectName, language, templateFlag);
66
+ break;
67
+ default:
68
+ console.log(`Custom framework selected: ${framework}. Extend script here.`);
69
+ }
70
+
71
+ process.exit(0);
72
+ }
73
+
74
+ // Interactive fallback
75
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
76
+
77
+ rl.question(
78
+ `Select technology:\n1. Angular\n2. React\n3. React Native\n4. Other\n\nEnter choice: `,
79
+ (choice) => {
80
+ rl.question(`Select language:\n1. JavaScript\n2. TypeScript\n\nEnter choice: `, (languageChoice) => {
81
+ const language = languageChoice === '2' ? 'typescript' : 'javascript';
82
+
83
+ rl.question('Enter project name: ', (projectName) => {
84
+ switch (choice) {
85
+ case '1':
86
+ runScript('angular.js', projectName, language, templateFlag);
87
+ break;
88
+ case '2':
89
+ runScript('react.js', projectName, language, templateFlag);
90
+ break;
91
+ case '3':
92
+ runScript('react-native.js', projectName, language, templateFlag);
93
+ break;
94
+ case '4':
95
+ console.log(`Custom framework selected with ${language}. Extend script here.`);
96
+ break;
97
+ default:
98
+ console.log('Invalid choice');
99
+ }
100
+
101
+ rl.close();
102
+ });
103
+ });
104
+ }
105
+ );