create-vasvibe 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/README.md +170 -167
  2. package/bin/cli.mjs +9 -9
  3. package/package.json +45 -45
  4. package/src/git.mjs +47 -47
  5. package/src/index.mjs +228 -228
  6. package/src/prompts.mjs +113 -113
  7. package/src/scaffold.mjs +74 -74
  8. package/src/upgrade.mjs +121 -121
  9. package/src/utils.mjs +91 -91
  10. package/template/.agents/agents/analyst/agent.json +43 -43
  11. package/template/.agents/agents/backend/agent.json +44 -44
  12. package/template/.agents/agents/data-architect/agent.json +43 -43
  13. package/template/.agents/agents/devops/agent.json +44 -44
  14. package/template/.agents/agents/discovery/agent.json +43 -43
  15. package/template/.agents/agents/document/agent.json +43 -43
  16. package/template/.agents/agents/fixer/agent.json +44 -44
  17. package/template/.agents/agents/frontend/agent.json +44 -44
  18. package/template/.agents/agents/fullstack/agent.json +44 -44
  19. package/template/.agents/agents/initiator/agent.json +41 -41
  20. package/template/.agents/agents/{explorer → manual-tester}/agent.json +4 -3
  21. package/template/.agents/agents/orchestrator/agent.json +44 -44
  22. package/template/.agents/agents/pm/agent.json +42 -42
  23. package/template/.agents/agents/qa/agent.json +44 -44
  24. package/template/.agents/agents/reliability/agent.json +44 -44
  25. package/template/.agents/agents/security/agent.json +44 -44
  26. package/template/.agents/agents/sysarch/agent.json +44 -44
  27. package/template/.agents/agents/tester/agent.json +44 -44
  28. package/template/.agents/agents/toolsmith/agent.json +44 -44
  29. package/template/.agents/agents/ux-designer/agent.json +43 -43
  30. package/template/.agents/skills/find-skills/SKILL.md +142 -142
  31. package/template/.agents/skills/fullstack/SKILL.md +89 -89
  32. package/template/.agents/skills/penetration-testing/SKILL.md +94 -94
  33. package/template/.agents/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
  34. package/template/.agents/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
  35. package/template/.agents/skills/penetration-testing/scripts/security-checklist.sh +30 -30
  36. package/template/.agents/skills/pm/SKILL.md +170 -170
  37. package/template/.agents/skills/ui-ux-pro-max/SKILL.md +658 -658
  38. package/template/.agents/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
  39. package/template/.agents/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
  40. package/template/.agents/skills/ui-ux-pro-max/data/design.csv +1775 -1775
  41. package/template/.agents/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
  42. package/template/.agents/skills/ui-ux-pro-max/data/icons.csv +105 -105
  43. package/template/.agents/skills/ui-ux-pro-max/data/products.csv +162 -162
  44. package/template/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  45. package/template/.agents/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
  46. package/template/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  47. package/template/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  48. package/template/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  49. package/template/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  50. package/template/.agents/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
  51. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  52. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  53. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  54. package/template/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  55. package/template/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  56. package/template/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  57. package/template/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  58. package/template/.agents/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
  59. package/template/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  60. package/template/.agents/skills/ui-ux-pro-max/data/typography.csv +74 -74
  61. package/template/.agents/skills/ui-ux-pro-max/scripts/core.py +262 -262
  62. package/template/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
  63. package/template/.agents/workflows/build-feature.md +21 -21
  64. package/template/.agents/workflows/daily-standup.md +16 -16
  65. package/template/.agents/workflows/deliver-feature.md +16 -16
  66. package/template/.agents/workflows/harden-release.md +21 -21
  67. package/template/.agents/workflows/plan-project.md +25 -25
  68. package/template/.agents/workflows/release.md +18 -18
  69. package/template/.agents/workflows/security-audit.md +19 -19
  70. package/template/.agents/workflows/setup-workspace.md +21 -21
  71. package/template/.agents/workflows/start-fix.md +17 -18
  72. package/template/.agents/workflows/test-feature.md +17 -17
  73. package/template/.claude/agents/analyst.md +75 -104
  74. package/template/.claude/agents/backend.md +61 -61
  75. package/template/.claude/agents/data-architect.md +43 -43
  76. package/template/.claude/agents/devops.md +44 -43
  77. package/template/.claude/agents/discovery.md +51 -51
  78. package/template/.claude/agents/document.md +51 -51
  79. package/template/.claude/agents/fixer.md +83 -81
  80. package/template/.claude/agents/frontend.md +58 -60
  81. package/template/.claude/agents/fullstack.md +84 -85
  82. package/template/.claude/agents/initiator.md +74 -74
  83. package/template/.claude/agents/manual-tester.md +108 -0
  84. package/template/.claude/agents/orchestrator.md +115 -133
  85. package/template/.claude/agents/pm.md +199 -199
  86. package/template/.claude/agents/qa.md +66 -65
  87. package/template/.claude/agents/reliability.md +48 -47
  88. package/template/.claude/agents/security.md +107 -106
  89. package/template/.claude/agents/sysarch.md +301 -301
  90. package/template/.claude/agents/tester.md +100 -100
  91. package/template/.claude/agents/toolsmith.md +77 -76
  92. package/template/.claude/agents/ux-designer.md +45 -45
  93. package/template/.claude/commands/build-feature.md +22 -22
  94. package/template/.claude/commands/daily-standup.md +16 -16
  95. package/template/.claude/commands/deliver-feature.md +17 -17
  96. package/template/.claude/commands/harden-release.md +22 -22
  97. package/template/.claude/commands/manual-test.md +19 -0
  98. package/template/.claude/commands/plan-project.md +26 -26
  99. package/template/.claude/commands/release.md +19 -19
  100. package/template/.claude/commands/security-audit.md +20 -20
  101. package/template/.claude/commands/setup-workspace.md +22 -22
  102. package/template/.claude/commands/start-fix.md +18 -19
  103. package/template/.claude/commands/test-feature.md +18 -18
  104. package/template/.claude/skills/find-skills +1 -0
  105. package/template/.claude/skills/penetration-testing/SKILL.md +94 -94
  106. package/template/.claude/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
  107. package/template/.claude/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
  108. package/template/.claude/skills/penetration-testing/scripts/security-checklist.sh +30 -30
  109. package/template/.claude/skills/ui-ux-pro-max/SKILL.md +658 -658
  110. package/template/.claude/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
  111. package/template/.claude/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
  112. package/template/.claude/skills/ui-ux-pro-max/data/design.csv +1775 -1775
  113. package/template/.claude/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
  114. package/template/.claude/skills/ui-ux-pro-max/data/icons.csv +105 -105
  115. package/template/.claude/skills/ui-ux-pro-max/data/products.csv +162 -162
  116. package/template/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  117. package/template/.claude/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
  118. package/template/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  119. package/template/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  120. package/template/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  121. package/template/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  122. package/template/.claude/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
  123. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  124. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  125. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  126. package/template/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  127. package/template/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  128. package/template/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  129. package/template/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  130. package/template/.claude/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
  131. package/template/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  132. package/template/.claude/skills/ui-ux-pro-max/data/typography.csv +74 -74
  133. package/template/.claude/skills/ui-ux-pro-max/scripts/core.py +262 -262
  134. package/template/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
  135. package/template/.github/prompts/analyst.prompt.md +58 -104
  136. package/template/.github/prompts/backend.prompt.md +44 -44
  137. package/template/.github/prompts/data-architect.prompt.md +38 -38
  138. package/template/.github/prompts/devops.prompt.md +32 -32
  139. package/template/.github/prompts/discovery.prompt.md +39 -39
  140. package/template/.github/prompts/document.prompt.md +14 -14
  141. package/template/.github/prompts/fixer.prompt.md +91 -81
  142. package/template/.github/prompts/frontend.prompt.md +43 -60
  143. package/template/.github/prompts/fullstack.prompt.md +92 -86
  144. package/template/.github/prompts/initiator.prompt.md +55 -55
  145. package/template/.github/prompts/manual-tester.prompt.md +103 -0
  146. package/template/.github/prompts/orchestrator.prompt.md +75 -133
  147. package/template/.github/prompts/pm.prompt.md +186 -186
  148. package/template/.github/prompts/qa.prompt.md +57 -57
  149. package/template/.github/prompts/reliability.prompt.md +44 -44
  150. package/template/.github/prompts/security.prompt.md +41 -41
  151. package/template/.github/prompts/sysarch.prompt.md +351 -351
  152. package/template/.github/prompts/tester.prompt.md +107 -107
  153. package/template/.github/prompts/toolsmith.prompt.md +46 -46
  154. package/template/.github/prompts/ux-designer.prompt.md +41 -41
  155. package/template/.opencode/agents/analyst.md +75 -104
  156. package/template/.opencode/agents/backend.md +61 -61
  157. package/template/.opencode/agents/data-architect.md +43 -43
  158. package/template/.opencode/agents/devops.md +44 -44
  159. package/template/.opencode/agents/discovery.md +51 -51
  160. package/template/.opencode/agents/document.md +51 -51
  161. package/template/.opencode/agents/fixer.md +83 -81
  162. package/template/.opencode/agents/frontend.md +59 -61
  163. package/template/.opencode/agents/fullstack.md +84 -85
  164. package/template/.opencode/agents/initiator.md +74 -74
  165. package/template/.opencode/agents/manual-tester.md +107 -0
  166. package/template/.opencode/agents/orchestrator.md +116 -131
  167. package/template/.opencode/agents/pm.md +199 -199
  168. package/template/.opencode/agents/qa.md +66 -65
  169. package/template/.opencode/agents/reliability.md +48 -48
  170. package/template/.opencode/agents/security.md +107 -107
  171. package/template/.opencode/agents/sysarch.md +301 -301
  172. package/template/.opencode/agents/tester.md +100 -100
  173. package/template/.opencode/agents/toolsmith.md +77 -77
  174. package/template/.opencode/agents/ux-designer.md +45 -45
  175. package/template/.opencode/commands/build-feature.md +21 -21
  176. package/template/.opencode/commands/daily-standup.md +16 -16
  177. package/template/.opencode/commands/deliver-feature.md +16 -16
  178. package/template/.opencode/commands/harden-release.md +21 -21
  179. package/template/.opencode/commands/manual-test.md +18 -0
  180. package/template/.opencode/commands/plan-project.md +25 -25
  181. package/template/.opencode/commands/release.md +18 -18
  182. package/template/.opencode/commands/security-audit.md +19 -19
  183. package/template/.opencode/commands/setup-workspace.md +21 -21
  184. package/template/.opencode/commands/start-fix.md +17 -18
  185. package/template/.opencode/commands/test-feature.md +17 -17
  186. package/template/.opencode/skills/penetration-testing/SKILL.md +94 -94
  187. package/template/.opencode/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
  188. package/template/.opencode/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
  189. package/template/.opencode/skills/penetration-testing/scripts/security-checklist.sh +30 -30
  190. package/template/.opencode/skills/ui-ux-pro-max/SKILL.md +658 -658
  191. package/template/.opencode/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
  192. package/template/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
  193. package/template/.opencode/skills/ui-ux-pro-max/data/design.csv +1775 -1775
  194. package/template/.opencode/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
  195. package/template/.opencode/skills/ui-ux-pro-max/data/icons.csv +105 -105
  196. package/template/.opencode/skills/ui-ux-pro-max/data/products.csv +162 -162
  197. package/template/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  198. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
  199. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  200. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  201. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  202. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  203. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
  204. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  205. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  206. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  207. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  208. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  209. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  210. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  211. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
  212. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  213. package/template/.opencode/skills/ui-ux-pro-max/data/typography.csv +74 -74
  214. package/template/.opencode/skills/ui-ux-pro-max/scripts/core.py +262 -262
  215. package/template/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
  216. package/template/AGENT_PERSONAS.md +595 -551
  217. package/template/GIT_STRUCTURE_GUIDE.md +270 -270
  218. package/template/PROJECT_README.example.md +81 -81
  219. package/template/QUICK-START.md +134 -131
  220. package/template/README.md +1942 -1919
  221. package/template/_gitignore +141 -138
  222. package/template/agent/workflows/_shared/change-management.md +70 -70
  223. package/template/agent/workflows/_shared/git-branch-management.md +25 -25
  224. package/template/agent/workflows/_shared/phases.md +88 -88
  225. package/template/agent/workflows/_shared/state-management.md +87 -87
  226. package/template/agent/workflows/_shared/work-depth.md +46 -46
  227. package/template/agent/workflows/analyst.md +75 -104
  228. package/template/agent/workflows/backend.md +61 -61
  229. package/template/agent/workflows/data-architect.md +43 -43
  230. package/template/agent/workflows/devops.md +44 -44
  231. package/template/agent/workflows/discovery.md +51 -51
  232. package/template/agent/workflows/document.md +51 -51
  233. package/template/agent/workflows/fixer.md +83 -81
  234. package/template/agent/workflows/frontend.md +58 -60
  235. package/template/agent/workflows/fullstack.md +84 -86
  236. package/template/agent/workflows/initiator.md +74 -74
  237. package/template/agent/workflows/manual-tester.md +103 -0
  238. package/template/agent/workflows/orchestrator.md +114 -133
  239. package/template/agent/workflows/pm.md +199 -199
  240. package/template/agent/workflows/qa.md +66 -66
  241. package/template/agent/workflows/reliability.md +48 -48
  242. package/template/agent/workflows/security.md +107 -107
  243. package/template/agent/workflows/sysarch.md +301 -301
  244. package/template/agent/workflows/tester.md +100 -100
  245. package/template/agent/workflows/toolsmith.md +77 -77
  246. package/template/agent/workflows/ux-designer.md +45 -45
  247. package/template/codes/.gitkeep +1 -1
  248. package/template/project_overview_example.md +54 -54
  249. package/template/schemas/adr.template.md +36 -36
  250. package/template/schemas/changelog.template.md +34 -34
  251. package/template/schemas/data-model.template.md +57 -57
  252. package/template/schemas/design-system.template.md +63 -63
  253. package/template/schemas/dev_log.template.md +20 -20
  254. package/template/schemas/product-ci.template.yml +50 -50
  255. package/template/schemas/requirements.template.md +64 -64
  256. package/template/schemas/security-standards.template.md +58 -58
  257. package/template/schemas/security_report.template.md +89 -89
  258. package/template/schemas/specification.template.md +57 -71
  259. package/template/schemas/style_guide.template.md +29 -29
  260. package/template/schemas/task_list.template.md +28 -28
  261. package/template/schemas/workspace-manifest.template.json +24 -24
  262. package/template/schemas/workspace-registry.json +94 -95
  263. package/template/skills-lock.json +11 -11
  264. package/template/specifications/.gitkeep +1 -3
  265. package/template/state/knowledge_base/.gitkeep +1 -1
  266. package/template/state/knowledge_base/requirements/.gitkeep +1 -1
  267. package/template/tests/.gitkeep +1 -1
  268. package/template/.agents/agents/logger/agent.json +0 -43
  269. package/template/.agents/workflows/build-prototype.md +0 -32
  270. package/template/.agents/workflows/explorer.md +0 -78
  271. package/template/.agents/workflows/logger.md +0 -117
  272. package/template/.agents/workflows/plan-feature.md +0 -30
  273. package/template/.claude/agents/explorer.md +0 -138
  274. package/template/.claude/agents/logger.md +0 -143
  275. package/template/.claude/commands/build-prototype.md +0 -33
  276. package/template/.claude/commands/plan-feature.md +0 -31
  277. package/template/.claude/settings.local.json +0 -44
  278. package/template/.claude/skills/find-skills/SKILL.md +0 -142
  279. package/template/.github/prompts/explorer.prompt.md +0 -133
  280. package/template/.github/prompts/logger.prompt.md +0 -138
  281. package/template/.opencode/agents/explorer.md +0 -137
  282. package/template/.opencode/agents/logger.md +0 -142
  283. package/template/.opencode/commands/build-prototype.md +0 -32
  284. package/template/.opencode/commands/plan-feature.md +0 -30
  285. package/template/agent/workflows/explorer.md +0 -133
  286. package/template/agent/workflows/logger.md +0 -138
@@ -1,31 +1,31 @@
1
- No,Category,Issue,Keywords,Platform,Description,Do,Don't,Code Example Good,Code Example Bad,Severity
2
- 1,Accessibility,Icon Button Labels,icon button accessibilityLabel,iOS/Android/React Native,Icon-only buttons must expose an accessible label,Set accessibilityLabel or label prop on icon buttons,Icon buttons without accessible names,"<Pressable accessibilityLabel=""Close""><XIcon /></Pressable>","<Pressable><XIcon /></Pressable>",Critical
3
- 2,Accessibility,Form Control Labels,form input label accessibilityLabel,iOS/Android/React Native,All inputs must have a visible label and an accessibility label,Pair Text label with input and set accessibilityLabel,Inputs with placeholder only,"<View><Text>Email</Text><TextInput accessibilityLabel=""Email address"" /></View>","<TextInput placeholder=""Email"" /></View>",Critical
4
- 3,Accessibility,Role & Traits,accessibilityRole accessibilityTraits,iOS/Android/React Native,Interactive elements must expose correct roles/traits,Use accessibilityRole/button/link/checkbox etc.,Rely on generic views with no roles,"<Pressable accessibilityRole=""button"">Submit</Pressable>","<View onTouchStart={submit}>Submit</View>",High
5
- 4,Accessibility,Dynamic Updates,accessibilityLiveRegion announce,iOS/Android/React Native,Async status updates should be announced to screen readers,Use accessibilityLiveRegion or announceForAccessibility,Update text silently with no announcement,"<Text accessibilityLiveRegion=""polite"">{status}</Text>","<Text>{status}</Text>",Medium
6
- 5,Accessibility,Decorative Icons,accessible={false} importantForAccessibility,iOS/Android/React Native,Decorative icons should be hidden from screen readers,Mark decorative icons as not accessible,Have screen reader read every icon,"<Icon accessible={false} importantForAccessibility=""no"" />","<Icon />",Medium
7
- 6,Touch,Touch Target Size,touch 44x44 hitSlop,iOS/Android/React Native,Primary touch targets must be at least 44x44pt,Increase hitSlop or padding to meet minimum,Small icons with tiny touch area,"<Pressable hitSlop={10}><Icon /></Pressable>","<Pressable><Icon style={{ width: 16, height: 16 }} /></Pressable>",Critical
8
- 7,Touch,Touch Spacing,touch spacing gap 8px,iOS/Android/React Native,Adjacent touch targets need enough spacing,Keep at least 8dp spacing between touchables,Cluster many buttons with no gap,"<View style={{ gap: 8 }}><Button ... /><Button ... /></View>","<View><Button ... /><Button ... /></View>",Medium
9
- 8,Touch,Gesture Conflicts,scroll swipe back gesture,iOS/Android/React Native,Custom gestures must not break system scroll/back,Reserve horizontal swipes for carousels,Full-screen custom swipe conflicting with back,"HorizontalPager inside vertical ScrollView","PanResponder on full screen blocking back",High
10
- 9,Navigation,Back Behavior,back handler navigation stack,iOS/Android/React Native,Back navigation should be predictable and preserve state,Use navigation.goBack and keep screen state,Reset stack or exit app unexpectedly,onPress={() => navigation.goBack()},"BackHandler.exitApp() on first press",Critical
11
- 10,Navigation,Bottom Tabs,tab bar max items,iOS/Android/React Native,Bottom tab bar should have at most 5 primary items,Use 3–5 tabs and move extras to More/Settings,Overloaded tab bar with many icons,Home/Explore/Profile/Settings,"Home/Explore/Shop/Cart/Profile/Settings/More",Medium
12
- 11,Navigation,Modal Escape,modal dismiss close affordance,iOS/Android/React Native,Modals/sheets must have clear close actions,Provide close button and swipe-down where platform expects,Trapping users in modal with no obvious exit,"<Modal><Button title=""Close"" onPress={onClose} /></Modal>","<Modal><View>{children}</View></Modal>",High
13
- 12,State,Preserve Screen State,navigation preserve state,iOS/Android/React Native,Returning to a screen should restore its scroll and form state,Keep components mounted or persist state,Reset list scroll and form inputs on every visit,"<Tab.Navigator screenOptions={{ unmountOnBlur: false }}>","<Tab.Screen options={{ unmountOnBlur: true }} />",Medium
14
- 13,Feedback,Loading Indicators,activity indicator skeleton,iOS/Android/React Native,Show visible feedback during network operations,Use ActivityIndicator or skeleton for >300ms operations,Leave button and screen frozen,"{loading ? <ActivityIndicator /> : <Button title=""Save"" />}", "<Button title=""Save"" onPress={submit} /> // no loading",High
15
- 14,Feedback,Success Feedback,toast checkmark banner,iOS/Android/React Native,Confirm successful actions with brief feedback,Show toast/checkmark or banner,Complete actions silently with no confirmation,"showToast('Saved successfully')","// silently update state only",Medium
16
- 15,Feedback,Error Feedback,inline error banner,iOS/Android/React Native,Show clear error messages near the problem,input-level error + summary banner,Only change border color with no explanation,"<TextInput ... /><Text style={{color:'red'}}>{error}</Text>","<TextInput style={{borderColor:'red'}} />",High
17
- 16,Forms,Inline Validation,onBlur validation,iOS/Android/React Native,Validate inputs on blur or submit with clear messaging,Validate onBlur and onSubmit,Validate on every keystroke causing jank,"onBlur={() => validateEmail(value)}","onChangeText={v => validateEmail(v)} // every char",Medium
18
- 17,Forms,Keyboard Type,keyboardType returnKeyType,iOS/Android/React Native,Use appropriate keyboardType and returnKeyType,Match email/tel/number/search types,Use default keyboard for all inputs,"<TextInput keyboardType=""email-address"" />","<TextInput keyboardType=""default"" />",Medium
19
- 18,Forms,Auto Focus & Next,autoFocus blurOnSubmit onSubmitEditing,iOS/Android/React Native,Guide users through form fields with Next/Done flows,Use onSubmitEditing to focus next input,Force users to tap each field manually,"onSubmitEditing={() => nextRef.current?.focus()}","// no onSubmitEditing, manual tap only",Low
20
- 19,Forms,Password Visibility,secureTextEntry toggle,iOS/Android/React Native,Allow toggling password visibility securely,Provide Show/Hide icon toggling secureTextEntry,Force users to type blind with no option,"<TextInput secureTextEntry={secure} /><Icon onPress={toggle} />","<TextInput secureTextEntry /> // no toggle",Medium
21
- 20,Performance,Virtualize Long Lists,FlatList SectionList virtualization,iOS/Android/React Native,Use FlatList/SectionList for lists over ~50 items,Use keyExtractor and initialNumToRender appropriately,Render hundreds of items with ScrollView,"<FlatList data={items} renderItem={...} />","<ScrollView>{items.map(renderItem)}</ScrollView>",High
22
- 21,Performance,Image Size & Cache,Image resize cache,iOS/Android/React Native,Use correctly sized and cached images,Use Image component with proper resizeMode and caching,Load full-resolution images everywhere,"<Image source={{uri}} resizeMode=""cover"" />","<Image source={require('4k.png')} /> // small avatar",Medium
23
- 22,Performance,Debounce High-Freq Events,debounce scroll search,iOS/Android/React Native,Debounce scroll/search callbacks to avoid jank,Wrap handlers with debounce/throttle,Run heavy logic on every event,"onScroll={debouncedHandleScroll}","onScroll={handleScrollHeavy}",Medium
24
- 23,Animation,Duration & Easing,animation duration easing,iOS/Android/React Native,Micro-interactions should be 150–300ms with native-like easing,Use ease-out for enter/ease-in for exit,Use long or linear animations for core UI,"Animated.timing(..., { duration: 200, easing: Easing.out(Easing.quad) })","Animated.timing(..., { duration: 800, easing: Easing.linear })",Medium
25
- 24,Animation,Respect Reduced Motion,reduced motion accessibility,iOS/Android/React Native,Respect OS reduced-motion accessibility setting,Check reduceMotionEnabled and simplify animations,Ignore user motion preferences,"if (reduceMotionEnabled) skipAnimation()","Always run complex parallax animations",Critical
26
- 25,Animation,Limited Continuous Motion,loop animation loader,iOS/Android/React Native,Reserve infinite animations for loaders and live data,Use looping only where necessary,Keep decorative elements looping forever,"Animated.loop(loaderAnim) for ActivityIndicator","Animated.loop(bounceAnim) on background icons",Medium
27
- 26,Typography,Base Font Size,fontScale dynamic type,iOS/Android/React Native,Body text must be readable and support Dynamic Type,Use platform fontScale and at least 14–16pt base,Render critical text below 12pt,"<Text style={{ fontSize: 16 }}>Body</Text>","<Text style={{ fontSize: 10 }}>Body</Text>",High
28
- 27,Typography,Dynamic Type Support,allowFontScaling adjustsFontSizeToFit,iOS/Android/React Native,Support system text scaling without breaking layout,Set allowFontScaling and test large text,Disable scaling on all text globally,"<Text allowFontScaling>{label}</Text>","<Text allowFontScaling={false}>{label}</Text>",High
29
- 28,Safe Areas,Safe Area Insets,safe area insets notch gesture,iOS/Android/React Native,Content must not overlap notches/gesture bars,Wrap screens in SafeAreaView or apply insets,Place tappable content under system bars,"<SafeAreaView style={{ flex: 1 }}><Screen /></SafeAreaView>","<View style={{ flex: 1 }}><Screen /></View>",High
30
- 29,Theming,Light/Dark Contrast,dark mode contrast tokens,iOS/Android/React Native,Ensure sufficient contrast in both light and dark themes,Use semantic tokens and test both themes,Reuse light-theme grays directly in dark mode,"colors.textPrimaryDark = '#F9FAFB'","colors.textPrimaryDark = '#9CA3AF' on '#111827'",High
1
+ No,Category,Issue,Keywords,Platform,Description,Do,Don't,Code Example Good,Code Example Bad,Severity
2
+ 1,Accessibility,Icon Button Labels,icon button accessibilityLabel,iOS/Android/React Native,Icon-only buttons must expose an accessible label,Set accessibilityLabel or label prop on icon buttons,Icon buttons without accessible names,"<Pressable accessibilityLabel=""Close""><XIcon /></Pressable>","<Pressable><XIcon /></Pressable>",Critical
3
+ 2,Accessibility,Form Control Labels,form input label accessibilityLabel,iOS/Android/React Native,All inputs must have a visible label and an accessibility label,Pair Text label with input and set accessibilityLabel,Inputs with placeholder only,"<View><Text>Email</Text><TextInput accessibilityLabel=""Email address"" /></View>","<TextInput placeholder=""Email"" /></View>",Critical
4
+ 3,Accessibility,Role & Traits,accessibilityRole accessibilityTraits,iOS/Android/React Native,Interactive elements must expose correct roles/traits,Use accessibilityRole/button/link/checkbox etc.,Rely on generic views with no roles,"<Pressable accessibilityRole=""button"">Submit</Pressable>","<View onTouchStart={submit}>Submit</View>",High
5
+ 4,Accessibility,Dynamic Updates,accessibilityLiveRegion announce,iOS/Android/React Native,Async status updates should be announced to screen readers,Use accessibilityLiveRegion or announceForAccessibility,Update text silently with no announcement,"<Text accessibilityLiveRegion=""polite"">{status}</Text>","<Text>{status}</Text>",Medium
6
+ 5,Accessibility,Decorative Icons,accessible={false} importantForAccessibility,iOS/Android/React Native,Decorative icons should be hidden from screen readers,Mark decorative icons as not accessible,Have screen reader read every icon,"<Icon accessible={false} importantForAccessibility=""no"" />","<Icon />",Medium
7
+ 6,Touch,Touch Target Size,touch 44x44 hitSlop,iOS/Android/React Native,Primary touch targets must be at least 44x44pt,Increase hitSlop or padding to meet minimum,Small icons with tiny touch area,"<Pressable hitSlop={10}><Icon /></Pressable>","<Pressable><Icon style={{ width: 16, height: 16 }} /></Pressable>",Critical
8
+ 7,Touch,Touch Spacing,touch spacing gap 8px,iOS/Android/React Native,Adjacent touch targets need enough spacing,Keep at least 8dp spacing between touchables,Cluster many buttons with no gap,"<View style={{ gap: 8 }}><Button ... /><Button ... /></View>","<View><Button ... /><Button ... /></View>",Medium
9
+ 8,Touch,Gesture Conflicts,scroll swipe back gesture,iOS/Android/React Native,Custom gestures must not break system scroll/back,Reserve horizontal swipes for carousels,Full-screen custom swipe conflicting with back,"HorizontalPager inside vertical ScrollView","PanResponder on full screen blocking back",High
10
+ 9,Navigation,Back Behavior,back handler navigation stack,iOS/Android/React Native,Back navigation should be predictable and preserve state,Use navigation.goBack and keep screen state,Reset stack or exit app unexpectedly,onPress={() => navigation.goBack()},"BackHandler.exitApp() on first press",Critical
11
+ 10,Navigation,Bottom Tabs,tab bar max items,iOS/Android/React Native,Bottom tab bar should have at most 5 primary items,Use 3–5 tabs and move extras to More/Settings,Overloaded tab bar with many icons,Home/Explore/Profile/Settings,"Home/Explore/Shop/Cart/Profile/Settings/More",Medium
12
+ 11,Navigation,Modal Escape,modal dismiss close affordance,iOS/Android/React Native,Modals/sheets must have clear close actions,Provide close button and swipe-down where platform expects,Trapping users in modal with no obvious exit,"<Modal><Button title=""Close"" onPress={onClose} /></Modal>","<Modal><View>{children}</View></Modal>",High
13
+ 12,State,Preserve Screen State,navigation preserve state,iOS/Android/React Native,Returning to a screen should restore its scroll and form state,Keep components mounted or persist state,Reset list scroll and form inputs on every visit,"<Tab.Navigator screenOptions={{ unmountOnBlur: false }}>","<Tab.Screen options={{ unmountOnBlur: true }} />",Medium
14
+ 13,Feedback,Loading Indicators,activity indicator skeleton,iOS/Android/React Native,Show visible feedback during network operations,Use ActivityIndicator or skeleton for >300ms operations,Leave button and screen frozen,"{loading ? <ActivityIndicator /> : <Button title=""Save"" />}", "<Button title=""Save"" onPress={submit} /> // no loading",High
15
+ 14,Feedback,Success Feedback,toast checkmark banner,iOS/Android/React Native,Confirm successful actions with brief feedback,Show toast/checkmark or banner,Complete actions silently with no confirmation,"showToast('Saved successfully')","// silently update state only",Medium
16
+ 15,Feedback,Error Feedback,inline error banner,iOS/Android/React Native,Show clear error messages near the problem,input-level error + summary banner,Only change border color with no explanation,"<TextInput ... /><Text style={{color:'red'}}>{error}</Text>","<TextInput style={{borderColor:'red'}} />",High
17
+ 16,Forms,Inline Validation,onBlur validation,iOS/Android/React Native,Validate inputs on blur or submit with clear messaging,Validate onBlur and onSubmit,Validate on every keystroke causing jank,"onBlur={() => validateEmail(value)}","onChangeText={v => validateEmail(v)} // every char",Medium
18
+ 17,Forms,Keyboard Type,keyboardType returnKeyType,iOS/Android/React Native,Use appropriate keyboardType and returnKeyType,Match email/tel/number/search types,Use default keyboard for all inputs,"<TextInput keyboardType=""email-address"" />","<TextInput keyboardType=""default"" />",Medium
19
+ 18,Forms,Auto Focus & Next,autoFocus blurOnSubmit onSubmitEditing,iOS/Android/React Native,Guide users through form fields with Next/Done flows,Use onSubmitEditing to focus next input,Force users to tap each field manually,"onSubmitEditing={() => nextRef.current?.focus()}","// no onSubmitEditing, manual tap only",Low
20
+ 19,Forms,Password Visibility,secureTextEntry toggle,iOS/Android/React Native,Allow toggling password visibility securely,Provide Show/Hide icon toggling secureTextEntry,Force users to type blind with no option,"<TextInput secureTextEntry={secure} /><Icon onPress={toggle} />","<TextInput secureTextEntry /> // no toggle",Medium
21
+ 20,Performance,Virtualize Long Lists,FlatList SectionList virtualization,iOS/Android/React Native,Use FlatList/SectionList for lists over ~50 items,Use keyExtractor and initialNumToRender appropriately,Render hundreds of items with ScrollView,"<FlatList data={items} renderItem={...} />","<ScrollView>{items.map(renderItem)}</ScrollView>",High
22
+ 21,Performance,Image Size & Cache,Image resize cache,iOS/Android/React Native,Use correctly sized and cached images,Use Image component with proper resizeMode and caching,Load full-resolution images everywhere,"<Image source={{uri}} resizeMode=""cover"" />","<Image source={require('4k.png')} /> // small avatar",Medium
23
+ 22,Performance,Debounce High-Freq Events,debounce scroll search,iOS/Android/React Native,Debounce scroll/search callbacks to avoid jank,Wrap handlers with debounce/throttle,Run heavy logic on every event,"onScroll={debouncedHandleScroll}","onScroll={handleScrollHeavy}",Medium
24
+ 23,Animation,Duration & Easing,animation duration easing,iOS/Android/React Native,Micro-interactions should be 150–300ms with native-like easing,Use ease-out for enter/ease-in for exit,Use long or linear animations for core UI,"Animated.timing(..., { duration: 200, easing: Easing.out(Easing.quad) })","Animated.timing(..., { duration: 800, easing: Easing.linear })",Medium
25
+ 24,Animation,Respect Reduced Motion,reduced motion accessibility,iOS/Android/React Native,Respect OS reduced-motion accessibility setting,Check reduceMotionEnabled and simplify animations,Ignore user motion preferences,"if (reduceMotionEnabled) skipAnimation()","Always run complex parallax animations",Critical
26
+ 25,Animation,Limited Continuous Motion,loop animation loader,iOS/Android/React Native,Reserve infinite animations for loaders and live data,Use looping only where necessary,Keep decorative elements looping forever,"Animated.loop(loaderAnim) for ActivityIndicator","Animated.loop(bounceAnim) on background icons",Medium
27
+ 26,Typography,Base Font Size,fontScale dynamic type,iOS/Android/React Native,Body text must be readable and support Dynamic Type,Use platform fontScale and at least 14–16pt base,Render critical text below 12pt,"<Text style={{ fontSize: 16 }}>Body</Text>","<Text style={{ fontSize: 10 }}>Body</Text>",High
28
+ 27,Typography,Dynamic Type Support,allowFontScaling adjustsFontSizeToFit,iOS/Android/React Native,Support system text scaling without breaking layout,Set allowFontScaling and test large text,Disable scaling on all text globally,"<Text allowFontScaling>{label}</Text>","<Text allowFontScaling={false}>{label}</Text>",High
29
+ 28,Safe Areas,Safe Area Insets,safe area insets notch gesture,iOS/Android/React Native,Content must not overlap notches/gesture bars,Wrap screens in SafeAreaView or apply insets,Place tappable content under system bars,"<SafeAreaView style={{ flex: 1 }}><Screen /></SafeAreaView>","<View style={{ flex: 1 }}><Screen /></View>",High
30
+ 29,Theming,Light/Dark Contrast,dark mode contrast tokens,iOS/Android/React Native,Ensure sufficient contrast in both light and dark themes,Use semantic tokens and test both themes,Reuse light-theme grays directly in dark mode,"colors.textPrimaryDark = '#F9FAFB'","colors.textPrimaryDark = '#9CA3AF' on '#111827'",High
31
31
  30,Anti-Pattern,No Gesture-Only Actions,gesture only hidden controls,iOS/Android/React Native,Don't rely solely on hidden gestures for core actions,Provide visible buttons in addition to gestures,Rely on swipe/shake only with no UI affordance,"Swipe to delete + visible Delete button","Only shake device to undo with no UI",Critical