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,304 @@
1
+ # Implementation Plan
2
+
3
+ Fill out before writing any files. Use after questionnaire completion and validation.
4
+
5
+ ---
6
+
7
+ ## Encryption Model + Layer Selected
8
+
9
+ ### React Native (approaches 4/5/6)
10
+ - [ ] RSA + React Native JS (approach 4)
11
+ - [ ] RSA + Native (approach 5)
12
+ - [ ] EC + React Native JS, per-request (approach 6)
13
+ - [ ] EC + React Native JS, session-init (approach 6)
14
+ - [ ] EC + Native (approach 6 + native layer)
15
+
16
+ ### React JS Web (approach 7)
17
+ - [ ] RSA-OAEP mode (approach 7, default)
18
+ - [ ] ECDH-Session mode (approach 7, sub-mode)
19
+
20
+ ---
21
+
22
+ ## Confirmed Configuration
23
+
24
+ - Platform:
25
+ - Approach:
26
+ - Detection mode (replace / reuse / refactor):
27
+ - Encryption model (rsa / ec):
28
+ - EC contract type (per-request / session-init):
29
+ - RSA key source (api / env):
30
+ - RSA key endpoint:
31
+ - EC key endpoint:
32
+ - EC HKDF info string (session-init only — backend-confirmed, NO default):
33
+ - EC nonce format/length (session-init only — backend-confirmed, NO default):
34
+ - EC AAD shape (session-init only — backend-confirmed, NO default):
35
+ - EC response IV source (session-init only — backend-confirmed, NO default):
36
+ - Shared key length (approach 3 only):
37
+ - API client type (axios / fetch / custom):
38
+ - API layer path:
39
+ - Encryption toggle (env-flag / always-on):
40
+ - HMAC signing enabled (yes / no):
41
+ - URL exclusions:
42
+ - [React Native approach 5] Minimum iOS version:
43
+ - [React Native approach 5] Android Kotlin package:
44
+ - [Approach 7] Web encryption mode (rsa-oaep / ecdh-session):
45
+ - [Approach 7] Framework/bundler (vite / cra / nextjs):
46
+ - [Approach 7] Env prefix (VITE_ / REACT_APP_ / NEXT_PUBLIC_):
47
+ - [Approach 7] Token storage (session-storage / http-only-cookie):
48
+ - [Approach 7] RSA key endpoint (RSA-OAEP mode):
49
+ - [Approach 7] ECDH session init URL (ECDH-Session mode — no default):
50
+ - [Approach 7] ECDH HKDF info string (ECDH-Session mode — no default):
51
+ - [Approach 7] ECDH AAD shape (ECDH-Session mode — no default if required):
52
+ - [Approach 7] Deployment origin confirmed HTTPS or localhost:
53
+
54
+ ---
55
+
56
+ ## Project Discovery
57
+
58
+ - React Native version (if RN):
59
+ - Existing API client file:
60
+ - Existing interceptor location (if any):
61
+ - Existing config/env module:
62
+ - Existing token storage service:
63
+ - App startup / init file:
64
+ - [Native mode] Android native modules folder (`android/app/src/main/java/...`):
65
+ - [Native mode] iOS native modules folder (`ios/`):
66
+ - [Angular] NgModule or standalone (check for `app.module.ts`):
67
+ - [Approach 7] `tsconfig.json` lib includes `"DOM"`: yes / no / patch needed:
68
+ - [Approach 7] `axios` present in package.json: yes / no:
69
+ - [Approach 7] Existing `axiosInstance.ts` location (extend, do not replace):
70
+
71
+ ---
72
+
73
+ ## Dependency Plan
74
+
75
+ ### React Native JS Mode (Approaches 2, 3, 4)
76
+
77
+ - react-native-quick-crypto version:
78
+ - buffer package version (>= 6.0.0):
79
+ - react-native-quick-base64 present (auto-installed — verify with `npm ls react-native-quick-base64`):
80
+ - react-native-keychain version:
81
+ - react-native-get-random-values version:
82
+ - jsencrypt version (approach 2 only):
83
+ - crypto-js version (approaches 2, 3):
84
+ - Already installed (skip):
85
+ - Needs install:
86
+
87
+ ### React Native Native Mode (Approach 5)
88
+
89
+ - All of JS mode packages plus:
90
+ - react-native-aes-crypto version (if not using NativeCryptoModule):
91
+ - react-native-rsa-native version (if not using NativeCryptoModule):
92
+ - Android `minSdkVersion >= 23` verified: yes / no
93
+ - iOS deployment target `>= 13.0` verified: yes / no / CommonCrypto fallback planned
94
+
95
+ ### React Native EC Mode (Approach 6)
96
+
97
+ - react-native-quick-crypto version:
98
+ - react-native-nitro-modules version (REQUIRED peer dep — quick-crypto >= 1.0 / RN >= 0.76):
99
+ - react-native-worklets version (REQUIRED peer dep — quick-crypto >= 1.0 / RN >= 0.76):
100
+ - buffer package version (>= 6.0.0, used for Hermes-safe helpers):
101
+ - react-native-keychain version:
102
+ - react-native-get-random-values version:
103
+ - `npm ls react-native-nitro-modules` — UNMET PEER DEP present: yes / no
104
+ - Android .cxx cache cleared: yes / no
105
+ - iOS pod install completed: yes / no
106
+
107
+ ### React JS Web Production Mode (Approach 7)
108
+
109
+ - No crypto packages required (Web Crypto API is built-in)
110
+ - `axios` present: yes / no (install if missing)
111
+ - Do NOT install: `crypto-js`, `node-forge`, Buffer polyfill, any `react-native-*` package
112
+ - Package manager: npm
113
+
114
+ ### Other Platforms
115
+
116
+ - Package manager (npm / yarn / pnpm / gradle / pub):
117
+ - Packages to install:
118
+ - Packages already present:
119
+
120
+ ---
121
+
122
+ ## Files to Write
123
+
124
+ ### All Platforms
125
+
126
+ | File | Path | Status (new / skip / scaffold) |
127
+ |------|------|-------------------------------|
128
+ | Config | | |
129
+ | Service | | |
130
+ | Interceptor / Middleware | | |
131
+ | Module wiring | | |
132
+
133
+ ### React Native Approaches 4 and 5 (additional)
134
+
135
+ | File | Path | Status |
136
+ |------|------|--------|
137
+ | types.ts | src/services/security/types.ts | |
138
+ | encryption.service.ts | src/services/security/encryption.service.ts | |
139
+ | decryption.service.ts | src/services/security/decryption.service.ts | |
140
+ | rsa-key.service.ts | src/services/security/rsa-key.service.ts | |
141
+ | keychain.service.ts | src/services/security/keychain.service.ts | |
142
+ | hmac.service.ts | src/services/security/hmac.service.ts | |
143
+ | encryption-config.ts | src/services/security/encryption-config.ts | |
144
+ | encryption.interceptor.ts | src/services/security/encryption.interceptor.ts | |
145
+ | axiosInstance.ts | src/api/axiosInstance.ts | |
146
+ | index.js polyfill | index.js (prepend) | |
147
+
148
+ ### Native Mode (Approach 5) Additional
149
+
150
+ | File | Path | Status |
151
+ |------|------|--------|
152
+ | NativeCryptoModule.kt | android/app/src/main/java/…/NativeCryptoModule.kt | |
153
+ | NativeCryptoPackage.kt | android/app/src/main/java/…/NativeCryptoPackage.kt | |
154
+ | NativeCryptoModule.swift | ios/NativeCryptoModule.swift | |
155
+ | NativeCryptoModule.m | ios/NativeCryptoModule.m | |
156
+ | native-crypto.module.ts | src/services/security/native-crypto.module.ts | |
157
+
158
+ ### EC Mode (Approach 6) — JS or Native Layer
159
+
160
+ | File | Path | Status |
161
+ |------|------|--------|
162
+ | types.ts (EC additions) | src/services/security/types.ts | |
163
+ | ec-key.service.ts | src/services/security/ec-key.service.ts | |
164
+ | ec-crypto.util.ts | src/services/security/ec-crypto.util.ts | |
165
+ | keychain.service.ts | src/services/security/keychain.service.ts | |
166
+ | hmac.service.ts | src/services/security/hmac.service.ts | |
167
+ | encryption-config.ts | src/services/security/encryption-config.ts | |
168
+ | encryption.interceptor.ts | src/services/security/encryption.interceptor.ts | |
169
+ | axiosInstance.ts | src/api/axiosInstance.ts | |
170
+ | index.js polyfill | index.js (prepend) | |
171
+
172
+ ### EC Session-Init Additional Files
173
+
174
+ | File | Path | Status |
175
+ |------|------|--------|
176
+ | auth-api.service.ts | src/services/security/auth-api.service.ts | |
177
+
178
+ ### React JS Web Production Mode (Approach 7) — RSA-OAEP Mode
179
+
180
+ | File | Path | Status |
181
+ |------|------|--------|
182
+ | crypto-utils.ts | src/services/security/crypto-utils.ts | |
183
+ | aes.service.ts | src/services/security/aes.service.ts | |
184
+ | rsa.service.ts | src/services/security/rsa.service.ts | |
185
+ | rsa-key.service.ts | src/services/security/rsa-key.service.ts | |
186
+ | hmac.service.ts | src/services/security/hmac.service.ts | |
187
+ | storage.service.ts | src/services/security/storage.service.ts | |
188
+ | encryption.interceptor.ts | src/services/security/encryption.interceptor.ts | |
189
+ | encryption-config.ts | src/services/security/encryption-config.ts | |
190
+ | types.ts | src/services/security/types.ts | |
191
+ | axiosInstance.ts (patch) | src/api/axiosInstance.ts | |
192
+ | .env.example | .env.example | |
193
+
194
+ ### React JS Web Production Mode (Approach 7) — ECDH-Session Additional Files
195
+
196
+ | File | Path | Status |
197
+ |------|------|--------|
198
+ | base64url.ts | src/core/security/ecdh-session/base64url.ts | |
199
+ | aad.ts | src/core/security/ecdh-session/aad.ts | |
200
+ | ecdhSession.ts | src/core/security/ecdh-session/ecdhSession.ts | |
201
+ | aesGcm.ts | src/core/security/ecdh-session/aesGcm.ts | |
202
+ | ecdhSessionService.ts | src/core/security/ecdh-session/ecdhSessionService.ts | |
203
+
204
+ ---
205
+
206
+ ## Runtime Behaviour
207
+
208
+ - Methods encrypted: POST, PUT, PATCH (default)
209
+ - Methods skipped: GET, DELETE, FormData
210
+ - Request mapping strategy: `requestId (randomHex16) → { aesKey, iv }` in-memory Map
211
+ - Key refresh trigger: `KEY_ID_NOT_FOUND` (401) → invalidate cache → retry once
212
+ - Auth tag failure: trigger session reset / force logout
213
+ - Request map cleanup: immediately after response (success or failure)
214
+ - [Native mode] Native module availability check: at JS startup, before first encrypted request
215
+ - [Native mode] Behavior if NativeModules.NativeCryptoModule is undefined at runtime:
216
+ - [Approach 7] `crypto.subtle` availability check: at bootstrap, surface `ERR_CRYPTO_NOT_AVAILABLE` if undefined
217
+ - [Approach 7] Request key map type: `Map<string, { cryptoKey: CryptoKey; iv: Uint8Array }>`
218
+ - [Approach 7] Request ID generation: `crypto.randomUUID()`
219
+ - [Approach 7] `KEY_ID_NOT_FOUND` (401): refresh RSA key → retry exactly once (no loop)
220
+ - [Approach 7] `DOMException` on decryption: fail with `ERR_CRYPTO_REJECTED` — no fallback to plaintext
221
+ - [Approach 7 ECDH-Session] 401 response: `clearSession()` + `ERR_SESSION_EXPIRED`
222
+ - [Approach 7 ECDH-Session] DECRYPTION_FAILED / INVALID_PAYLOAD (400): `clearSession()` + `ERR_CRYPTO_REJECTED`
223
+ - [Approach 7 ECDH-Session] 500 responses: pass through without session invalidation
224
+
225
+ ---
226
+
227
+ ## Feature Flags
228
+
229
+ - `ENCRYPTION_ENABLED` source: env var (react-native-config or process.env)
230
+ - Default by environment: `false` in dev, `true` in staging/prod
231
+ - `ENCRYPTION_MODEL` source: env var; values: `rsa` / `ec` (default: `rsa`)
232
+ - [Native mode] `ENCRYPTION_LAYER` source: env var; values: `rn` / `native`
233
+ - `ENCRYPTION_HMAC_SECRET` source: env var at runtime; never written to disk
234
+ - [EC] `EC_PUBLIC_KEY_ENDPOINT` source: env var
235
+ - [EC] `EC_KEY_RETRY` source: env var; default `3`
236
+ - [Approach 7] `ENCRYPTION_ENABLED` prefix: `VITE_` / `REACT_APP_` / `NEXT_PUBLIC_` (framework-specific)
237
+ - [Approach 7] `RSA_PUBLIC_KEY_ENDPOINT` prefix: same framework prefix
238
+ - [Approach 7] `ENCRYPTION_HMAC_SECRET` prefix: same framework prefix; runtime only — never commit to source
239
+ - [Approach 7 ECDH-Session] `ECDH_SESSION_INIT_URL` prefix: same framework prefix
240
+
241
+ ---
242
+
243
+ ## Build Verification
244
+
245
+ - Build command (from `platform-matrix.json`):
246
+ - Max retries: 3
247
+ - Expected exit code: 0
248
+
249
+ ---
250
+
251
+ ## Testing Plan
252
+
253
+ ### Both Modes
254
+
255
+ - Unit tests: EncryptionService encrypt/decrypt round-trip
256
+ - Integration tests: POST request encrypted end-to-end with real server
257
+ - Negative tests: tampered ciphertext → verify 400 DECRYPTION_FAILED; duplicate nonce → verify 400 INVALID_NONCE
258
+ - Concurrent request test: multiple in-flight requests with independent key maps
259
+
260
+ ### Native Mode Only
261
+
262
+ - AES round-trip on physical Android device (API 23+)
263
+ - AES round-trip on physical iOS device (iOS 13+)
264
+ - `NativeModules.NativeCryptoModule` accessible from JS confirmed
265
+ - `encryptAES` + `decryptAES` + `encryptRSA` all return Promises and resolve correctly
266
+
267
+ ### EC Mode (Approach 6)
268
+
269
+ - EC public key fetch returns 65-byte uncompressed P-256 point (first byte 0x04)
270
+ - `ecEncryptPayload` round-trip: encrypts and server decrypts successfully
271
+ - Ephemeral key pair confirmed discarded after `computeSecret()` (no key reference retained)
272
+ - Derived AES key confirmed NOT present in request envelope
273
+ - Only `ephemeral_public_key` (base64, 65 bytes) sent in envelope
274
+ - Hermes Buffer: `toBase64()` helper used instead of `Buffer.toString('base64')` — verified no mangled output
275
+ - `byteCopy()` used for Buffer slices passed to quick-crypto native code
276
+ - Dual Buffer imports compile without conflict
277
+ - [Session-init] HKDF info string matches backend contract exactly
278
+ - [Session-init] Nonce generator uses `randomBytes` — confirmed no `Math.random()` usage
279
+ - [Session-init] AAD JSON keys are alphabetically sorted before encryption
280
+ - [Session-init] `device_id` matches across init, HKDF derivation, AAD, and all encrypted requests
281
+ - [Session-init] `initEncryptionSession` validated against reference client output (if reference exists)
282
+
283
+ ### React JS Web Production Mode (Approach 7)
284
+
285
+ - `crypto.subtle` available on target origin (HTTPS or localhost)
286
+ - `tsconfig.json` `"lib": ["DOM"]` confirmed — `crypto.subtle` TypeScript types resolve
287
+ - RSA-OAEP: `importKey('spki', ...)` succeeds (PEM headers stripped correctly)
288
+ - RSA-OAEP: `encryptRSAOAEP` returns Base64 ciphertext
289
+ - AES-GCM: round-trip encrypt/decrypt completes without `DOMException`
290
+ - Per-request AES key map: `Map<requestId, {cryptoKey, iv}>` — entry created on request, deleted on response (success and error)
291
+ - `KEY_ID_NOT_FOUND` (401): RSA key cache invalidated, retried exactly once — no retry loop
292
+ - Auth tag tamper: `DOMException` thrown, `ERR_CRYPTO_REJECTED` surfaced — no fallback to plaintext
293
+ - No `crypto-js`, `node-forge`, or Buffer polyfill imported
294
+ - `sessionStorage` used for non-token state; `localStorage` never used for sensitive data
295
+ - HMAC-SHA256 signs request (when enabled); no secret in source files
296
+ - [ECDH-Session] ECDH P-256 key pair generated via `crypto.subtle.generateKey`
297
+ - [ECDH-Session] Derived AES key is `extractable: false` — cannot be exported
298
+ - [ECDH-Session] ECDH private key stored as JWK in `sessionStorage` only; cleared on `clearSession()`
299
+ - [ECDH-Session] `deriveKey` uses native HKDF-SHA256 — no manual HMAC chain
300
+ - [ECDH-Session] AAD keys alphabetically sorted (template literal, not `JSON.stringify`)
301
+ - [ECDH-Session] 401 response → `clearSession()` + `ERR_SESSION_EXPIRED`
302
+ - [ECDH-Session] 400 DECRYPTION_FAILED → `clearSession()` + `ERR_CRYPTO_REJECTED`
303
+ - [ECDH-Session] `X-Request-ID`, `X-Nonce`, `X-Timestamp` headers on every request
304
+ - [ECDH-Session] `X-Timestamp` formatted as ISO 8601 UTC (`new Date().toISOString()`)