@jakkrichm/create-nexus-devflow 2.0.0 → 2.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 (398) hide show
  1. package/README.md +96 -50
  2. package/package.json +1 -1
  3. package/template/.agents/skills/20-spec/SKILL.md +136 -136
  4. package/template/.agents/skills/30-plan/SKILL.md +206 -206
  5. package/template/.agents/skills/40-implement/SKILL.md +152 -152
  6. package/template/.agents/skills/50-verify/SKILL.md +174 -174
  7. package/template/.agents/skills/60-report/SKILL.md +168 -168
  8. package/template/.agents/skills/70-release/SKILL.md +141 -141
  9. package/template/.agents/skills/9arm-skills/README.md +51 -51
  10. package/template/.agents/skills/9arm-skills/debug-mantra/SKILL.md +86 -86
  11. package/template/.agents/skills/9arm-skills/management-talk/SKILL.md +79 -79
  12. package/template/.agents/skills/9arm-skills/post-mortem/SKILL.md +71 -71
  13. package/template/.agents/skills/9arm-skills/scrutinize/SKILL.md +72 -72
  14. package/template/.agents/skills/agent/SKILL.md +164 -164
  15. package/template/.agents/skills/api-and-interface-design/SKILL.md +294 -294
  16. package/template/.agents/skills/app-builder/SKILL.md +75 -75
  17. package/template/.agents/skills/app-builder/agent-coordination.md +71 -71
  18. package/template/.agents/skills/app-builder/feature-building.md +53 -53
  19. package/template/.agents/skills/app-builder/project-detection.md +34 -34
  20. package/template/.agents/skills/app-builder/scaffolding.md +118 -118
  21. package/template/.agents/skills/app-builder/tech-stack.md +40 -40
  22. package/template/.agents/skills/app-builder/templates/SKILL.md +39 -39
  23. package/template/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
  24. package/template/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
  25. package/template/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
  26. package/template/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
  27. package/template/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
  28. package/template/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
  29. package/template/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
  30. package/template/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -122
  31. package/template/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -122
  32. package/template/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -169
  33. package/template/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -134
  34. package/template/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
  35. package/template/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -119
  36. package/template/.agents/skills/architecture/SKILL.md +55 -55
  37. package/template/.agents/skills/architecture/context-discovery.md +43 -43
  38. package/template/.agents/skills/architecture/examples.md +94 -94
  39. package/template/.agents/skills/architecture/pattern-selection.md +68 -68
  40. package/template/.agents/skills/architecture/patterns-reference.md +50 -50
  41. package/template/.agents/skills/architecture/trade-off-analysis.md +77 -77
  42. package/template/.agents/skills/bash-linux/SKILL.md +199 -199
  43. package/template/.agents/skills/behavioral-modes/SKILL.md +242 -242
  44. package/template/.agents/skills/brainstorm/SKILL.md +157 -157
  45. package/template/.agents/skills/browser-testing-with-devtools/SKILL.md +302 -302
  46. package/template/.agents/skills/changelog/SKILL.md +108 -108
  47. package/template/.agents/skills/ci-cd-and-automation/SKILL.md +390 -390
  48. package/template/.agents/skills/code-review-and-quality/SKILL.md +392 -392
  49. package/template/.agents/skills/code-simplification/SKILL.md +331 -331
  50. package/template/.agents/skills/commit/SKILL.md +62 -62
  51. package/template/.agents/skills/competitor-analysis/SKILL.md +66 -66
  52. package/template/.agents/skills/context-engineering/SKILL.md +290 -290
  53. package/template/.agents/skills/database-design/SKILL.md +52 -52
  54. package/template/.agents/skills/database-design/database-selection.md +43 -43
  55. package/template/.agents/skills/database-design/indexing.md +39 -39
  56. package/template/.agents/skills/database-design/migrations.md +48 -48
  57. package/template/.agents/skills/database-design/optimization.md +36 -36
  58. package/template/.agents/skills/database-design/orm-selection.md +30 -30
  59. package/template/.agents/skills/database-design/schema-design.md +56 -56
  60. package/template/.agents/skills/database-design/scripts/schema_validator.py +172 -172
  61. package/template/.agents/skills/debug/SKILL.md +116 -116
  62. package/template/.agents/skills/debugging-and-error-recovery/SKILL.md +298 -298
  63. package/template/.agents/skills/deploy/SKILL.md +90 -90
  64. package/template/.agents/skills/deployment-procedures/SKILL.md +241 -241
  65. package/template/.agents/skills/deprecation-and-migration/SKILL.md +206 -206
  66. package/template/.agents/skills/documentation-and-adrs/SKILL.md +278 -278
  67. package/template/.agents/skills/followup/SKILL.md +78 -78
  68. package/template/.agents/skills/frontend-ui-engineering/SKILL.md +326 -326
  69. package/template/.agents/skills/frontend-ui-engineering/accessibility-checklist.md +159 -159
  70. package/template/.agents/skills/git-workflow-and-versioning/SKILL.md +300 -300
  71. package/template/.agents/skills/goal/SKILL.md +132 -132
  72. package/template/.agents/skills/help/SKILL.md +242 -242
  73. package/template/.agents/skills/human-review-decisions/SKILL.md +74 -74
  74. package/template/.agents/skills/i18n-localization/SKILL.md +154 -154
  75. package/template/.agents/skills/i18n-localization/scripts/i18n_checker.py +241 -241
  76. package/template/.agents/skills/idea-refine/SKILL.md +178 -178
  77. package/template/.agents/skills/idea-refine/examples.md +238 -238
  78. package/template/.agents/skills/idea-refine/frameworks.md +99 -99
  79. package/template/.agents/skills/idea-refine/refinement-criteria.md +113 -113
  80. package/template/.agents/skills/idea-refine/scripts/idea-refine.sh +15 -15
  81. package/template/.agents/skills/incremental-implementation/SKILL.md +248 -248
  82. package/template/.agents/skills/insight/SKILL.md +130 -130
  83. package/template/.agents/skills/insight-capture/SKILL.md +84 -84
  84. package/template/.agents/skills/intelligent-routing/SKILL.md +171 -171
  85. package/template/.agents/skills/issue-triage/SKILL.md +106 -106
  86. package/template/.agents/skills/lint-and-validate/SKILL.md +45 -45
  87. package/template/.agents/skills/lint-and-validate/scripts/lint_runner.py +184 -184
  88. package/template/.agents/skills/lint-and-validate/scripts/type_coverage.py +173 -173
  89. package/template/.agents/skills/mcp-builder/SKILL.md +176 -176
  90. package/template/.agents/skills/md2html/SKILL.md +154 -154
  91. package/template/.agents/skills/md2html/components.md +505 -505
  92. package/template/.agents/skills/md2html/template.html +1152 -1152
  93. package/template/.agents/skills/merge/SKILL.md +75 -75
  94. package/template/.agents/skills/mobile-design/SKILL.md +394 -394
  95. package/template/.agents/skills/mobile-design/decision-trees.md +516 -516
  96. package/template/.agents/skills/mobile-design/mobile-backend.md +491 -491
  97. package/template/.agents/skills/mobile-design/mobile-color-system.md +420 -420
  98. package/template/.agents/skills/mobile-design/mobile-debugging.md +122 -122
  99. package/template/.agents/skills/mobile-design/mobile-design-thinking.md +357 -357
  100. package/template/.agents/skills/mobile-design/mobile-navigation.md +458 -458
  101. package/template/.agents/skills/mobile-design/mobile-performance.md +767 -767
  102. package/template/.agents/skills/mobile-design/mobile-testing.md +356 -356
  103. package/template/.agents/skills/mobile-design/mobile-typography.md +433 -433
  104. package/template/.agents/skills/mobile-design/platform-android.md +666 -666
  105. package/template/.agents/skills/mobile-design/platform-ios.md +561 -561
  106. package/template/.agents/skills/mobile-design/scripts/mobile_audit.py +670 -670
  107. package/template/.agents/skills/mobile-design/touch-psychology.md +537 -537
  108. package/template/.agents/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -312
  109. package/template/.agents/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -240
  110. package/template/.agents/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -490
  111. package/template/.agents/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -264
  112. package/template/.agents/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -581
  113. package/template/.agents/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -432
  114. package/template/.agents/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -684
  115. package/template/.agents/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -150
  116. package/template/.agents/skills/nextjs-react-expert/SKILL.md +286 -286
  117. package/template/.agents/skills/nextjs-react-expert/scripts/convert_rules.py +222 -222
  118. package/template/.agents/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -252
  119. package/template/.agents/skills/nodejs-best-practices/SKILL.md +333 -333
  120. package/template/.agents/skills/package-json-generator/SKILL.md +60 -60
  121. package/template/.agents/skills/package-json-generator/scripts/generate.js +120 -120
  122. package/template/.agents/skills/package-json-generator/scripts/run.sh +19 -19
  123. package/template/.agents/skills/parallel-agents/SKILL.md +144 -144
  124. package/template/.agents/skills/performance-optimization/SKILL.md +299 -299
  125. package/template/.agents/skills/performance-optimization/performance-checklist.md +113 -113
  126. package/template/.agents/skills/planning-and-task-breakdown/SKILL.md +239 -239
  127. package/template/.agents/skills/powershell-windows/SKILL.md +167 -167
  128. package/template/.agents/skills/pr/SKILL.md +92 -92
  129. package/template/.agents/skills/pr-review/SKILL.md +142 -142
  130. package/template/.agents/skills/pr-review-analysis/SKILL.md +89 -89
  131. package/template/.agents/skills/prd/SKILL.md +112 -112
  132. package/template/.agents/skills/preview/SKILL.md +116 -116
  133. package/template/.agents/skills/preview-local-check/SKILL.md +59 -59
  134. package/template/.agents/skills/python-patterns/SKILL.md +441 -441
  135. package/template/.agents/skills/release-git-operations/SKILL.md +97 -97
  136. package/template/.agents/skills/research/SKILL.md +127 -127
  137. package/template/.agents/skills/review/SKILL.md +55 -55
  138. package/template/.agents/skills/review-followup-routing/SKILL.md +98 -98
  139. package/template/.agents/skills/roadmap-strategy/SKILL.md +97 -97
  140. package/template/.agents/skills/security-and-hardening/SKILL.md +349 -349
  141. package/template/.agents/skills/security-and-hardening/security-checklist.md +134 -134
  142. package/template/.agents/skills/security-review/SKILL.md +164 -164
  143. package/template/.agents/skills/seo-fundamentals/SKILL.md +129 -129
  144. package/template/.agents/skills/seo-fundamentals/scripts/seo_checker.py +219 -219
  145. package/template/.agents/skills/server-management/SKILL.md +161 -161
  146. package/template/.agents/skills/shipping-and-launch/SKILL.md +311 -311
  147. package/template/.agents/skills/silent-failure-audit/SKILL.md +73 -73
  148. package/template/.agents/skills/simplify/SKILL.md +74 -74
  149. package/template/.agents/skills/skill-development/SKILL.md +86 -86
  150. package/template/.agents/skills/spec-driven-development/SKILL.md +207 -207
  151. package/template/.agents/skills/spec-orchestration/SKILL.md +91 -91
  152. package/template/.agents/skills/specialist-agent-routing/SKILL.md +107 -107
  153. package/template/.agents/skills/tailwind-patterns/SKILL.md +269 -269
  154. package/template/.agents/skills/test/SKILL.md +77 -77
  155. package/template/.agents/skills/test-driven-development/SKILL.md +422 -422
  156. package/template/.agents/skills/test-driven-development/testing-patterns.md +236 -236
  157. package/template/.agents/skills/test-execution-and-coverage/SKILL.md +56 -56
  158. package/template/.agents/skills/type-design/SKILL.md +84 -84
  159. package/template/.agents/skills/ui-ux-pro-max/SKILL.md +75 -75
  160. package/template/.agents/skills/using-agent-skills/SKILL.md +171 -171
  161. package/template/.agents/skills/verification-orchestration/SKILL.md +68 -68
  162. package/template/.agents/skills/vulnerability-scanner/SKILL.md +276 -276
  163. package/template/.agents/skills/vulnerability-scanner/checklists.md +121 -121
  164. package/template/.agents/skills/vulnerability-scanner/scripts/security_scan.py +458 -458
  165. package/template/.agents/skills/wiki/SKILL.md +148 -148
  166. package/template/.agents/skills/workflow-documentation-sync/SKILL.md +87 -87
  167. package/template/.claude/skills/20-spec/SKILL.md +136 -136
  168. package/template/.claude/skills/30-plan/SKILL.md +206 -206
  169. package/template/.claude/skills/40-implement/SKILL.md +152 -152
  170. package/template/.claude/skills/50-verify/SKILL.md +174 -174
  171. package/template/.claude/skills/60-report/SKILL.md +168 -168
  172. package/template/.claude/skills/70-release/SKILL.md +141 -141
  173. package/template/.claude/skills/9arm-skills/README.md +51 -51
  174. package/template/.claude/skills/9arm-skills/debug-mantra/SKILL.md +86 -86
  175. package/template/.claude/skills/9arm-skills/management-talk/SKILL.md +79 -79
  176. package/template/.claude/skills/9arm-skills/post-mortem/SKILL.md +71 -71
  177. package/template/.claude/skills/9arm-skills/scrutinize/SKILL.md +72 -72
  178. package/template/.claude/skills/agent/SKILL.md +164 -164
  179. package/template/.claude/skills/api-and-interface-design/SKILL.md +294 -294
  180. package/template/.claude/skills/app-builder/SKILL.md +75 -75
  181. package/template/.claude/skills/app-builder/agent-coordination.md +71 -71
  182. package/template/.claude/skills/app-builder/feature-building.md +53 -53
  183. package/template/.claude/skills/app-builder/project-detection.md +34 -34
  184. package/template/.claude/skills/app-builder/scaffolding.md +118 -118
  185. package/template/.claude/skills/app-builder/tech-stack.md +40 -40
  186. package/template/.claude/skills/app-builder/templates/SKILL.md +39 -39
  187. package/template/.claude/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
  188. package/template/.claude/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
  189. package/template/.claude/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
  190. package/template/.claude/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
  191. package/template/.claude/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
  192. package/template/.claude/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
  193. package/template/.claude/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
  194. package/template/.claude/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -122
  195. package/template/.claude/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -122
  196. package/template/.claude/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -169
  197. package/template/.claude/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -134
  198. package/template/.claude/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
  199. package/template/.claude/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -119
  200. package/template/.claude/skills/architecture/SKILL.md +55 -55
  201. package/template/.claude/skills/architecture/context-discovery.md +43 -43
  202. package/template/.claude/skills/architecture/examples.md +94 -94
  203. package/template/.claude/skills/architecture/pattern-selection.md +68 -68
  204. package/template/.claude/skills/architecture/patterns-reference.md +50 -50
  205. package/template/.claude/skills/architecture/trade-off-analysis.md +77 -77
  206. package/template/.claude/skills/bash-linux/SKILL.md +199 -199
  207. package/template/.claude/skills/behavioral-modes/SKILL.md +242 -242
  208. package/template/.claude/skills/brainstorm/SKILL.md +157 -157
  209. package/template/.claude/skills/browser-testing-with-devtools/SKILL.md +302 -302
  210. package/template/.claude/skills/changelog/SKILL.md +108 -108
  211. package/template/.claude/skills/ci-cd-and-automation/SKILL.md +390 -390
  212. package/template/.claude/skills/code-review-and-quality/SKILL.md +392 -392
  213. package/template/.claude/skills/code-simplification/SKILL.md +331 -331
  214. package/template/.claude/skills/commit/SKILL.md +62 -62
  215. package/template/.claude/skills/competitor-analysis/SKILL.md +66 -66
  216. package/template/.claude/skills/context-engineering/SKILL.md +290 -290
  217. package/template/.claude/skills/database-design/SKILL.md +52 -52
  218. package/template/.claude/skills/database-design/database-selection.md +43 -43
  219. package/template/.claude/skills/database-design/indexing.md +39 -39
  220. package/template/.claude/skills/database-design/migrations.md +48 -48
  221. package/template/.claude/skills/database-design/optimization.md +36 -36
  222. package/template/.claude/skills/database-design/orm-selection.md +30 -30
  223. package/template/.claude/skills/database-design/schema-design.md +56 -56
  224. package/template/.claude/skills/database-design/scripts/schema_validator.py +172 -172
  225. package/template/.claude/skills/debug/SKILL.md +116 -116
  226. package/template/.claude/skills/debugging-and-error-recovery/SKILL.md +298 -298
  227. package/template/.claude/skills/deploy/SKILL.md +90 -90
  228. package/template/.claude/skills/deployment-procedures/SKILL.md +241 -241
  229. package/template/.claude/skills/deprecation-and-migration/SKILL.md +206 -206
  230. package/template/.claude/skills/documentation-and-adrs/SKILL.md +278 -278
  231. package/template/.claude/skills/followup/SKILL.md +78 -78
  232. package/template/.claude/skills/frontend-ui-engineering/SKILL.md +326 -326
  233. package/template/.claude/skills/frontend-ui-engineering/accessibility-checklist.md +159 -159
  234. package/template/.claude/skills/git-workflow-and-versioning/SKILL.md +300 -300
  235. package/template/.claude/skills/goal/SKILL.md +132 -132
  236. package/template/.claude/skills/help/SKILL.md +242 -242
  237. package/template/.claude/skills/human-review-decisions/SKILL.md +74 -74
  238. package/template/.claude/skills/i18n-localization/SKILL.md +154 -154
  239. package/template/.claude/skills/i18n-localization/scripts/i18n_checker.py +241 -241
  240. package/template/.claude/skills/idea-refine/SKILL.md +178 -178
  241. package/template/.claude/skills/idea-refine/examples.md +238 -238
  242. package/template/.claude/skills/idea-refine/frameworks.md +99 -99
  243. package/template/.claude/skills/idea-refine/refinement-criteria.md +113 -113
  244. package/template/.claude/skills/idea-refine/scripts/idea-refine.sh +15 -15
  245. package/template/.claude/skills/incremental-implementation/SKILL.md +248 -248
  246. package/template/.claude/skills/insight/SKILL.md +130 -130
  247. package/template/.claude/skills/insight-capture/SKILL.md +84 -84
  248. package/template/.claude/skills/intelligent-routing/SKILL.md +171 -171
  249. package/template/.claude/skills/issue-triage/SKILL.md +106 -106
  250. package/template/.claude/skills/lint-and-validate/SKILL.md +45 -45
  251. package/template/.claude/skills/lint-and-validate/scripts/lint_runner.py +184 -184
  252. package/template/.claude/skills/lint-and-validate/scripts/type_coverage.py +173 -173
  253. package/template/.claude/skills/mcp-builder/SKILL.md +176 -176
  254. package/template/.claude/skills/md2html/SKILL.md +154 -154
  255. package/template/.claude/skills/md2html/components.md +505 -505
  256. package/template/.claude/skills/md2html/template.html +1152 -1152
  257. package/template/.claude/skills/merge/SKILL.md +75 -75
  258. package/template/.claude/skills/mobile-design/SKILL.md +394 -394
  259. package/template/.claude/skills/mobile-design/decision-trees.md +516 -516
  260. package/template/.claude/skills/mobile-design/mobile-backend.md +491 -491
  261. package/template/.claude/skills/mobile-design/mobile-color-system.md +420 -420
  262. package/template/.claude/skills/mobile-design/mobile-debugging.md +122 -122
  263. package/template/.claude/skills/mobile-design/mobile-design-thinking.md +357 -357
  264. package/template/.claude/skills/mobile-design/mobile-navigation.md +458 -458
  265. package/template/.claude/skills/mobile-design/mobile-performance.md +767 -767
  266. package/template/.claude/skills/mobile-design/mobile-testing.md +356 -356
  267. package/template/.claude/skills/mobile-design/mobile-typography.md +433 -433
  268. package/template/.claude/skills/mobile-design/platform-android.md +666 -666
  269. package/template/.claude/skills/mobile-design/platform-ios.md +561 -561
  270. package/template/.claude/skills/mobile-design/scripts/mobile_audit.py +670 -670
  271. package/template/.claude/skills/mobile-design/touch-psychology.md +537 -537
  272. package/template/.claude/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -312
  273. package/template/.claude/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -240
  274. package/template/.claude/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -490
  275. package/template/.claude/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -264
  276. package/template/.claude/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -581
  277. package/template/.claude/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -432
  278. package/template/.claude/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -684
  279. package/template/.claude/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -150
  280. package/template/.claude/skills/nextjs-react-expert/SKILL.md +286 -286
  281. package/template/.claude/skills/nextjs-react-expert/scripts/convert_rules.py +222 -222
  282. package/template/.claude/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -252
  283. package/template/.claude/skills/nodejs-best-practices/SKILL.md +333 -333
  284. package/template/.claude/skills/package-json-generator/SKILL.md +60 -60
  285. package/template/.claude/skills/package-json-generator/scripts/generate.js +120 -120
  286. package/template/.claude/skills/package-json-generator/scripts/run.sh +19 -19
  287. package/template/.claude/skills/parallel-agents/SKILL.md +144 -144
  288. package/template/.claude/skills/performance-optimization/SKILL.md +299 -299
  289. package/template/.claude/skills/performance-optimization/performance-checklist.md +113 -113
  290. package/template/.claude/skills/planning-and-task-breakdown/SKILL.md +239 -239
  291. package/template/.claude/skills/powershell-windows/SKILL.md +167 -167
  292. package/template/.claude/skills/pr/SKILL.md +92 -92
  293. package/template/.claude/skills/pr-review/SKILL.md +142 -142
  294. package/template/.claude/skills/pr-review-analysis/SKILL.md +89 -89
  295. package/template/.claude/skills/prd/SKILL.md +112 -112
  296. package/template/.claude/skills/preview/SKILL.md +116 -116
  297. package/template/.claude/skills/preview-local-check/SKILL.md +59 -59
  298. package/template/.claude/skills/python-patterns/SKILL.md +441 -441
  299. package/template/.claude/skills/release-git-operations/SKILL.md +97 -97
  300. package/template/.claude/skills/research/SKILL.md +127 -127
  301. package/template/.claude/skills/review/SKILL.md +55 -55
  302. package/template/.claude/skills/review-followup-routing/SKILL.md +98 -98
  303. package/template/.claude/skills/roadmap-strategy/SKILL.md +97 -97
  304. package/template/.claude/skills/security-and-hardening/SKILL.md +349 -349
  305. package/template/.claude/skills/security-and-hardening/security-checklist.md +134 -134
  306. package/template/.claude/skills/security-review/SKILL.md +164 -164
  307. package/template/.claude/skills/seo-fundamentals/SKILL.md +129 -129
  308. package/template/.claude/skills/seo-fundamentals/scripts/seo_checker.py +219 -219
  309. package/template/.claude/skills/server-management/SKILL.md +161 -161
  310. package/template/.claude/skills/shipping-and-launch/SKILL.md +311 -311
  311. package/template/.claude/skills/silent-failure-audit/SKILL.md +73 -73
  312. package/template/.claude/skills/simplify/SKILL.md +74 -74
  313. package/template/.claude/skills/skill-development/SKILL.md +86 -86
  314. package/template/.claude/skills/spec-driven-development/SKILL.md +207 -207
  315. package/template/.claude/skills/spec-orchestration/SKILL.md +91 -91
  316. package/template/.claude/skills/specialist-agent-routing/SKILL.md +107 -107
  317. package/template/.claude/skills/tailwind-patterns/SKILL.md +269 -269
  318. package/template/.claude/skills/test/SKILL.md +77 -77
  319. package/template/.claude/skills/test-driven-development/SKILL.md +422 -422
  320. package/template/.claude/skills/test-driven-development/testing-patterns.md +236 -236
  321. package/template/.claude/skills/test-execution-and-coverage/SKILL.md +56 -56
  322. package/template/.claude/skills/type-design/SKILL.md +84 -84
  323. package/template/.claude/skills/ui-ux-pro-max/SKILL.md +75 -75
  324. package/template/.claude/skills/using-agent-skills/SKILL.md +171 -171
  325. package/template/.claude/skills/verification-orchestration/SKILL.md +68 -68
  326. package/template/.claude/skills/vulnerability-scanner/SKILL.md +276 -276
  327. package/template/.claude/skills/vulnerability-scanner/checklists.md +121 -121
  328. package/template/.claude/skills/vulnerability-scanner/scripts/security_scan.py +458 -458
  329. package/template/.claude/skills/wiki/SKILL.md +148 -148
  330. package/template/.claude/skills/workflow-documentation-sync/SKILL.md +87 -87
  331. package/template/.nexus/nexus-devflow.json +1 -1
  332. package/template/AGENTS.md +3 -3
  333. package/template/LICENSE +21 -21
  334. package/template/devflow/context/project_index.json +108 -0
  335. package/template/.agents/skills/check-for-updates/SKILL.md +0 -117
  336. package/template/.agents/skills/devflow-concept-intake/SKILL.md +0 -150
  337. package/template/.agents/skills/devflow-concept-intake/agents/openai.yaml +0 -4
  338. package/template/.agents/skills/devflow-concept-intake/references/adoption-proposal-template.md +0 -60
  339. package/template/.agents/skills/devflow-concept-intake/references/concept-report-template.md +0 -47
  340. package/template/.agents/skills/devflow-concept-intake/references/upstream-tracking-template.md +0 -51
  341. package/template/.agents/skills/devflow-wiki/SKILL.md +0 -75
  342. package/template/.agents/skills/english-to-thai-translator/SKILL.md +0 -125
  343. package/template/.agents/skills/obsidian-bases/SKILL.md +0 -506
  344. package/template/.agents/skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +0 -173
  345. package/template/.agents/skills/obsidian-cli/SKILL.md +0 -115
  346. package/template/.agents/skills/obsidian-clipper-template-creator/SKILL.md +0 -73
  347. package/template/.agents/skills/obsidian-clipper-template-creator/assets/clipping-template.json +0 -51
  348. package/template/.agents/skills/obsidian-clipper-template-creator/assets/recipe-template.json +0 -48
  349. package/template/.agents/skills/obsidian-clipper-template-creator/references/analysis-workflow.md +0 -79
  350. package/template/.agents/skills/obsidian-clipper-template-creator/references/bases-workflow.md +0 -44
  351. package/template/.agents/skills/obsidian-clipper-template-creator/references/filters.md +0 -51
  352. package/template/.agents/skills/obsidian-clipper-template-creator/references/json-schema.md +0 -77
  353. package/template/.agents/skills/obsidian-clipper-template-creator/references/logic.md +0 -67
  354. package/template/.agents/skills/obsidian-clipper-template-creator/references/variables.md +0 -64
  355. package/template/.agents/skills/obsidian-markdown/SKILL.md +0 -205
  356. package/template/.agents/skills/obsidian-markdown/references/CALLOUTS.md +0 -58
  357. package/template/.agents/skills/obsidian-markdown/references/EMBEDS.md +0 -63
  358. package/template/.agents/skills/obsidian-markdown/references/PROPERTIES.md +0 -61
  359. package/template/.agents/skills/prompt-addons/SKILL.md +0 -99
  360. package/template/.agents/skills/prp-dev-fastapi/SKILL.md +0 -114
  361. package/template/.agents/skills/prp-dev-multiplatform/SKILL.md +0 -36
  362. package/template/.agents/skills/prp-dev-odoo/SKILL.md +0 -71
  363. package/template/.agents/skills/prp-dev-php/SKILL.md +0 -63
  364. package/template/.agents/skills/prp-sa-ba/SKILL.md +0 -52
  365. package/template/.agents/skills/red-team-tactics/SKILL.md +0 -199
  366. package/template/.agents/skills/writing-great-skills/SKILL.md +0 -65
  367. package/template/.claude/skills/check-for-updates/SKILL.md +0 -117
  368. package/template/.claude/skills/devflow-concept-intake/SKILL.md +0 -150
  369. package/template/.claude/skills/devflow-concept-intake/agents/openai.yaml +0 -4
  370. package/template/.claude/skills/devflow-concept-intake/references/adoption-proposal-template.md +0 -60
  371. package/template/.claude/skills/devflow-concept-intake/references/concept-report-template.md +0 -47
  372. package/template/.claude/skills/devflow-concept-intake/references/upstream-tracking-template.md +0 -51
  373. package/template/.claude/skills/devflow-wiki/SKILL.md +0 -75
  374. package/template/.claude/skills/english-to-thai-translator/SKILL.md +0 -125
  375. package/template/.claude/skills/obsidian-bases/SKILL.md +0 -506
  376. package/template/.claude/skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +0 -173
  377. package/template/.claude/skills/obsidian-cli/SKILL.md +0 -115
  378. package/template/.claude/skills/obsidian-clipper-template-creator/SKILL.md +0 -73
  379. package/template/.claude/skills/obsidian-clipper-template-creator/assets/clipping-template.json +0 -51
  380. package/template/.claude/skills/obsidian-clipper-template-creator/assets/recipe-template.json +0 -48
  381. package/template/.claude/skills/obsidian-clipper-template-creator/references/analysis-workflow.md +0 -79
  382. package/template/.claude/skills/obsidian-clipper-template-creator/references/bases-workflow.md +0 -44
  383. package/template/.claude/skills/obsidian-clipper-template-creator/references/filters.md +0 -51
  384. package/template/.claude/skills/obsidian-clipper-template-creator/references/json-schema.md +0 -77
  385. package/template/.claude/skills/obsidian-clipper-template-creator/references/logic.md +0 -67
  386. package/template/.claude/skills/obsidian-clipper-template-creator/references/variables.md +0 -64
  387. package/template/.claude/skills/obsidian-markdown/SKILL.md +0 -205
  388. package/template/.claude/skills/obsidian-markdown/references/CALLOUTS.md +0 -58
  389. package/template/.claude/skills/obsidian-markdown/references/EMBEDS.md +0 -63
  390. package/template/.claude/skills/obsidian-markdown/references/PROPERTIES.md +0 -61
  391. package/template/.claude/skills/prompt-addons/SKILL.md +0 -99
  392. package/template/.claude/skills/prp-dev-fastapi/SKILL.md +0 -114
  393. package/template/.claude/skills/prp-dev-multiplatform/SKILL.md +0 -36
  394. package/template/.claude/skills/prp-dev-odoo/SKILL.md +0 -71
  395. package/template/.claude/skills/prp-dev-php/SKILL.md +0 -63
  396. package/template/.claude/skills/prp-sa-ba/SKILL.md +0 -52
  397. package/template/.claude/skills/red-team-tactics/SKILL.md +0 -199
  398. package/template/.claude/skills/writing-great-skills/SKILL.md +0 -65
@@ -1,326 +1,326 @@
1
- ---
2
- name: frontend-ui-engineering
3
- description: Builds production-quality UIs. Use when building or modifying user-facing interfaces. Use when creating components, implementing layouts, managing state, or when the output needs to look and feel production-quality rather than AI-generated.
4
- ---
5
-
6
- # Frontend UI Engineering
7
-
8
- ## Overview
9
-
10
- Build production-quality user interfaces that are accessible, performant, and visually polished. The goal is UI that looks like it was built by a design-aware engineer at a top company — not like it was generated by an AI. This means real design system adherence, proper accessibility, thoughtful interaction patterns, and no generic "AI aesthetic."
11
-
12
- ## When to Use
13
-
14
- - Building new UI components or pages
15
- - Modifying existing user-facing interfaces
16
- - Implementing responsive layouts
17
- - Adding interactivity or state management
18
- - Fixing visual or UX issues
19
-
20
- ## Component Architecture
21
-
22
- ### File Structure
23
-
24
- Colocate everything related to a component:
25
-
26
- ```
27
- src/components/
28
- TaskList/
29
- TaskList.tsx # Component implementation
30
- TaskList.test.tsx # Tests
31
- TaskList.stories.tsx # Storybook stories (if using)
32
- use-task-list.ts # Custom hook (if complex state)
33
- types.ts # Component-specific types (if needed)
34
- ```
35
-
36
- ### Component Patterns
37
-
38
- **Prefer composition over configuration:**
39
-
40
- ```tsx
41
- // Good: Composable
42
- <Card>
43
- <CardHeader>
44
- <CardTitle>Tasks</CardTitle>
45
- </CardHeader>
46
- <CardBody>
47
- <TaskList tasks={tasks} />
48
- </CardBody>
49
- </Card>
50
-
51
- // Avoid: Over-configured
52
- <Card
53
- title="Tasks"
54
- headerVariant="large"
55
- bodyPadding="md"
56
- content={<TaskList tasks={tasks} />}
57
- />
58
- ```
59
-
60
- **Keep components focused:**
61
-
62
- ```tsx
63
- // Good: Does one thing
64
- export function TaskItem({ task, onToggle, onDelete }: TaskItemProps) {
65
- return (
66
- <li className="flex items-center gap-3 p-3">
67
- <Checkbox checked={task.done} onChange={() => onToggle(task.id)} />
68
- <span className={task.done ? 'line-through text-muted' : ''}>{task.title}</span>
69
- <Button variant="ghost" size="sm" onClick={() => onDelete(task.id)}>
70
- <TrashIcon />
71
- </Button>
72
- </li>
73
- );
74
- }
75
- ```
76
-
77
- **Separate data fetching from presentation:**
78
-
79
- ```tsx
80
- // Container: handles data
81
- export function TaskListContainer() {
82
- const { tasks, isLoading, error } = useTasks();
83
-
84
- if (isLoading) return <TaskListSkeleton />;
85
- if (error) return <ErrorState message="Failed to load tasks" retry={refetch} />;
86
- if (tasks.length === 0) return <EmptyState message="No tasks yet" />;
87
-
88
- return <TaskList tasks={tasks} />;
89
- }
90
-
91
- // Presentation: handles rendering
92
- export function TaskList({ tasks }: { tasks: Task[] }) {
93
- return (
94
- <ul role="list" className="divide-y">
95
- {tasks.map(task => <TaskItem key={task.id} task={task} />)}
96
- </ul>
97
- );
98
- }
99
- ```
100
-
101
- ## State Management
102
-
103
- **Choose the simplest approach that works:**
104
-
105
- ```
106
- Local state (useState) → Component-specific UI state
107
- Lifted state → Shared between 2-3 sibling components
108
- Context → Theme, auth, locale (read-heavy, write-rare)
109
- URL state (searchParams) → Filters, pagination, shareable UI state
110
- Server state (React Query, SWR) → Remote data with caching
111
- Global store (Zustand, Redux) → Complex client state shared app-wide
112
- ```
113
-
114
- **Avoid prop drilling deeper than 3 levels.** If you're passing props through components that don't use them, introduce context or restructure the component tree.
115
-
116
- ## Design System Adherence
117
-
118
- ### Avoid the AI Aesthetic
119
-
120
- AI-generated UI has recognizable patterns. Avoid all of them:
121
-
122
- | AI Default | Why It Is a Problem | Production Quality |
123
- |---|---|---|
124
- | Purple/indigo everything | Models default to visually "safe" palettes | Use project-specific color palettes |
125
- | Excessive gradients | Adds visual noise | Subtle or no gradients |
126
- | Rounded everything | Generic signals "safe" | Purposeful corner radii (sharp vs rounded) |
127
- | Generic hero sections | Template-driven, no context | Content-first, unique layouts |
128
- | Bento Grids | Used in every AI design | Use only when content truly benefits from it |
129
- | Shadows everywhere | Competitive depth noise | Subtle or no shadows |
130
-
131
- ### UX Psychology & Layout
132
- - **Hick's Law**: More choices = slower decisions. Limit options, use progressive disclosure.
133
- - **8-Point Grid**: All spacing and sizing in multiples of 8 (Tight: 8px, Med: 16px, Large: 24px, XL: 48px+).
134
- - **Whitespace**: Generous whitespace signals luxury and improves scannability.
135
- - **Contrast**: Check WCAG (4.5:1 for normal text). Do not rely solely on color to convey information.
136
-
137
- ### Spacing and Layout
138
-
139
- Use a consistent spacing scale. Don't invent values:
140
-
141
- ```css
142
- /* Use the scale: 0.25rem increments (or whatever the project uses) */
143
- /* Good */ padding: 1rem; /* 16px */
144
- /* Good */ gap: 0.75rem; /* 12px */
145
- /* Bad */ padding: 13px; /* Not on any scale */
146
- /* Bad */ margin-top: 2.3rem; /* Not on any scale */
147
- ```
148
-
149
- ### Typography
150
-
151
- Respect the type hierarchy:
152
-
153
- ```
154
- h1 → Page title (one per page)
155
- h2 → Section title
156
- h3 → Subsection title
157
- body → Default text
158
- small → Secondary/helper text
159
- ```
160
-
161
- Don't skip heading levels. Don't use heading styles for non-heading content.
162
-
163
- ### Color
164
-
165
- - Use semantic color tokens: `text-primary`, `bg-surface`, `border-default` — not raw hex values
166
- - Ensure sufficient contrast (4.5:1 for normal text, 3:1 for large text)
167
- - Don't rely solely on color to convey information (use icons, text, or patterns too)
168
-
169
- ## Accessibility (WCAG 2.1 AA)
170
-
171
- Every component must meet these standards:
172
-
173
- ### Keyboard Navigation
174
-
175
- ```tsx
176
- // Every interactive element must be keyboard accessible
177
- <button onClick={handleClick}>Click me</button> // ✓ Focusable by default
178
- <div onClick={handleClick}>Click me</div> // ✗ Not focusable
179
- <div role="button" tabIndex={0} onClick={handleClick} // ✓ But prefer <button>
180
- onKeyDown={e => e.key === 'Enter' && handleClick()}>
181
- Click me
182
- </div>
183
- ```
184
-
185
- ### ARIA Labels
186
-
187
- ```tsx
188
- // Label interactive elements that lack visible text
189
- <button aria-label="Close dialog"><XIcon /></button>
190
-
191
- // Label form inputs
192
- <label htmlFor="email">Email</label>
193
- <input id="email" type="email" />
194
-
195
- // Or use aria-label when no visible label exists
196
- <input aria-label="Search tasks" type="search" />
197
- ```
198
-
199
- ### Focus Management
200
-
201
- ```tsx
202
- // Move focus when content changes
203
- function Dialog({ isOpen, onClose }: DialogProps) {
204
- const closeRef = useRef<HTMLButtonElement>(null);
205
-
206
- useEffect(() => {
207
- if (isOpen) closeRef.current?.focus();
208
- }, [isOpen]);
209
-
210
- // Trap focus inside dialog when open
211
- return (
212
- <dialog open={isOpen}>
213
- <button ref={closeRef} onClick={onClose}>Close</button>
214
- {/* dialog content */}
215
- </dialog>
216
- );
217
- }
218
- ```
219
-
220
- ### Meaningful Empty and Error States
221
-
222
- ```tsx
223
- // Don't show blank screens
224
- function TaskList({ tasks }: { tasks: Task[] }) {
225
- if (tasks.length === 0) {
226
- return (
227
- <div role="status" className="text-center py-12">
228
- <TasksEmptyIcon className="mx-auto h-12 w-12 text-muted" />
229
- <h3 className="mt-2 text-sm font-medium">No tasks</h3>
230
- <p className="mt-1 text-sm text-muted">Get started by creating a new task.</p>
231
- <Button className="mt-4" onClick={onCreateTask}>Create Task</Button>
232
- </div>
233
- );
234
- }
235
-
236
- return <ul role="list">...</ul>;
237
- }
238
- ```
239
-
240
- ## Responsive Design
241
-
242
- Design for mobile first, then expand:
243
-
244
- ```tsx
245
- // Tailwind: mobile-first responsive
246
- <div className="
247
- grid grid-cols-1 /* Mobile: single column */
248
- sm:grid-cols-2 /* Small: 2 columns */
249
- lg:grid-cols-3 /* Large: 3 columns */
250
- gap-4
251
- ">
252
- ```
253
-
254
- Test at these breakpoints: 320px, 768px, 1024px, 1440px.
255
-
256
- ## Loading and Transitions
257
-
258
- ```tsx
259
- // Skeleton loading (not spinners for content)
260
- function TaskListSkeleton() {
261
- return (
262
- <div className="space-y-3" aria-busy="true" aria-label="Loading tasks">
263
- {Array.from({ length: 3 }).map((_, i) => (
264
- <div key={i} className="h-12 bg-muted animate-pulse rounded" />
265
- ))}
266
- </div>
267
- );
268
- }
269
-
270
- // Optimistic updates for perceived speed
271
- function useToggleTask() {
272
- const queryClient = useQueryClient();
273
-
274
- return useMutation({
275
- mutationFn: toggleTask,
276
- onMutate: async (taskId) => {
277
- await queryClient.cancelQueries({ queryKey: ['tasks'] });
278
- const previous = queryClient.getQueryData(['tasks']);
279
-
280
- queryClient.setQueryData(['tasks'], (old: Task[]) =>
281
- old.map(t => t.id === taskId ? { ...t, done: !t.done } : t)
282
- );
283
-
284
- return { previous };
285
- },
286
- onError: (_err, _taskId, context) => {
287
- queryClient.setQueryData(['tasks'], context?.previous);
288
- },
289
- });
290
- }
291
- ```
292
-
293
- ## See Also
294
-
295
- For detailed accessibility requirements and testing tools, see `accessibility-checklist.md`.
296
-
297
- ## Common Rationalizations
298
-
299
- | Rationalization | Reality |
300
- |---|---|
301
- | "Accessibility is a nice-to-have" | It's a legal requirement in many jurisdictions and an engineering quality standard. |
302
- | "We'll make it responsive later" | Retrofitting responsive design is 3x harder than building it from the start. |
303
- | "The design isn't final, so I'll skip styling" | Use the design system defaults. Unstyled UI creates a broken first impression for reviewers. |
304
- | "This is just a prototype" | Prototypes become production code. Build the foundation right. |
305
- | "The AI aesthetic is fine for now" | It signals low quality. Use the project's actual design system from the start. |
306
-
307
- ## Red Flags
308
-
309
- - Components with more than 200 lines (split them)
310
- - Inline styles or arbitrary pixel values
311
- - Missing error states, loading states, or empty states
312
- - No keyboard navigation testing
313
- - Color as the sole indicator of state (red/green without text or icons)
314
- - Generic "AI look" (purple gradients, oversized cards, stock layouts)
315
-
316
- ## Verification
317
-
318
- After building UI:
319
-
320
- - [ ] Component renders without console errors
321
- - [ ] All interactive elements are keyboard accessible (Tab through the page)
322
- - [ ] Screen reader can convey the page's content and structure
323
- - [ ] Responsive: works at 320px, 768px, 1024px, 1440px
324
- - [ ] Loading, error, and empty states all handled
325
- - [ ] Follows the project's design system (spacing, colors, typography)
326
- - [ ] No accessibility warnings in dev tools or axe-core
1
+ ---
2
+ name: frontend-ui-engineering
3
+ description: Builds production-quality UIs. Use when building or modifying user-facing interfaces. Use when creating components, implementing layouts, managing state, or when the output needs to look and feel production-quality rather than AI-generated.
4
+ ---
5
+
6
+ # Frontend UI Engineering
7
+
8
+ ## Overview
9
+
10
+ Build production-quality user interfaces that are accessible, performant, and visually polished. The goal is UI that looks like it was built by a design-aware engineer at a top company — not like it was generated by an AI. This means real design system adherence, proper accessibility, thoughtful interaction patterns, and no generic "AI aesthetic."
11
+
12
+ ## When to Use
13
+
14
+ - Building new UI components or pages
15
+ - Modifying existing user-facing interfaces
16
+ - Implementing responsive layouts
17
+ - Adding interactivity or state management
18
+ - Fixing visual or UX issues
19
+
20
+ ## Component Architecture
21
+
22
+ ### File Structure
23
+
24
+ Colocate everything related to a component:
25
+
26
+ ```
27
+ src/components/
28
+ TaskList/
29
+ TaskList.tsx # Component implementation
30
+ TaskList.test.tsx # Tests
31
+ TaskList.stories.tsx # Storybook stories (if using)
32
+ use-task-list.ts # Custom hook (if complex state)
33
+ types.ts # Component-specific types (if needed)
34
+ ```
35
+
36
+ ### Component Patterns
37
+
38
+ **Prefer composition over configuration:**
39
+
40
+ ```tsx
41
+ // Good: Composable
42
+ <Card>
43
+ <CardHeader>
44
+ <CardTitle>Tasks</CardTitle>
45
+ </CardHeader>
46
+ <CardBody>
47
+ <TaskList tasks={tasks} />
48
+ </CardBody>
49
+ </Card>
50
+
51
+ // Avoid: Over-configured
52
+ <Card
53
+ title="Tasks"
54
+ headerVariant="large"
55
+ bodyPadding="md"
56
+ content={<TaskList tasks={tasks} />}
57
+ />
58
+ ```
59
+
60
+ **Keep components focused:**
61
+
62
+ ```tsx
63
+ // Good: Does one thing
64
+ export function TaskItem({ task, onToggle, onDelete }: TaskItemProps) {
65
+ return (
66
+ <li className="flex items-center gap-3 p-3">
67
+ <Checkbox checked={task.done} onChange={() => onToggle(task.id)} />
68
+ <span className={task.done ? 'line-through text-muted' : ''}>{task.title}</span>
69
+ <Button variant="ghost" size="sm" onClick={() => onDelete(task.id)}>
70
+ <TrashIcon />
71
+ </Button>
72
+ </li>
73
+ );
74
+ }
75
+ ```
76
+
77
+ **Separate data fetching from presentation:**
78
+
79
+ ```tsx
80
+ // Container: handles data
81
+ export function TaskListContainer() {
82
+ const { tasks, isLoading, error } = useTasks();
83
+
84
+ if (isLoading) return <TaskListSkeleton />;
85
+ if (error) return <ErrorState message="Failed to load tasks" retry={refetch} />;
86
+ if (tasks.length === 0) return <EmptyState message="No tasks yet" />;
87
+
88
+ return <TaskList tasks={tasks} />;
89
+ }
90
+
91
+ // Presentation: handles rendering
92
+ export function TaskList({ tasks }: { tasks: Task[] }) {
93
+ return (
94
+ <ul role="list" className="divide-y">
95
+ {tasks.map(task => <TaskItem key={task.id} task={task} />)}
96
+ </ul>
97
+ );
98
+ }
99
+ ```
100
+
101
+ ## State Management
102
+
103
+ **Choose the simplest approach that works:**
104
+
105
+ ```
106
+ Local state (useState) → Component-specific UI state
107
+ Lifted state → Shared between 2-3 sibling components
108
+ Context → Theme, auth, locale (read-heavy, write-rare)
109
+ URL state (searchParams) → Filters, pagination, shareable UI state
110
+ Server state (React Query, SWR) → Remote data with caching
111
+ Global store (Zustand, Redux) → Complex client state shared app-wide
112
+ ```
113
+
114
+ **Avoid prop drilling deeper than 3 levels.** If you're passing props through components that don't use them, introduce context or restructure the component tree.
115
+
116
+ ## Design System Adherence
117
+
118
+ ### Avoid the AI Aesthetic
119
+
120
+ AI-generated UI has recognizable patterns. Avoid all of them:
121
+
122
+ | AI Default | Why It Is a Problem | Production Quality |
123
+ |---|---|---|
124
+ | Purple/indigo everything | Models default to visually "safe" palettes | Use project-specific color palettes |
125
+ | Excessive gradients | Adds visual noise | Subtle or no gradients |
126
+ | Rounded everything | Generic signals "safe" | Purposeful corner radii (sharp vs rounded) |
127
+ | Generic hero sections | Template-driven, no context | Content-first, unique layouts |
128
+ | Bento Grids | Used in every AI design | Use only when content truly benefits from it |
129
+ | Shadows everywhere | Competitive depth noise | Subtle or no shadows |
130
+
131
+ ### UX Psychology & Layout
132
+ - **Hick's Law**: More choices = slower decisions. Limit options, use progressive disclosure.
133
+ - **8-Point Grid**: All spacing and sizing in multiples of 8 (Tight: 8px, Med: 16px, Large: 24px, XL: 48px+).
134
+ - **Whitespace**: Generous whitespace signals luxury and improves scannability.
135
+ - **Contrast**: Check WCAG (4.5:1 for normal text). Do not rely solely on color to convey information.
136
+
137
+ ### Spacing and Layout
138
+
139
+ Use a consistent spacing scale. Don't invent values:
140
+
141
+ ```css
142
+ /* Use the scale: 0.25rem increments (or whatever the project uses) */
143
+ /* Good */ padding: 1rem; /* 16px */
144
+ /* Good */ gap: 0.75rem; /* 12px */
145
+ /* Bad */ padding: 13px; /* Not on any scale */
146
+ /* Bad */ margin-top: 2.3rem; /* Not on any scale */
147
+ ```
148
+
149
+ ### Typography
150
+
151
+ Respect the type hierarchy:
152
+
153
+ ```
154
+ h1 → Page title (one per page)
155
+ h2 → Section title
156
+ h3 → Subsection title
157
+ body → Default text
158
+ small → Secondary/helper text
159
+ ```
160
+
161
+ Don't skip heading levels. Don't use heading styles for non-heading content.
162
+
163
+ ### Color
164
+
165
+ - Use semantic color tokens: `text-primary`, `bg-surface`, `border-default` — not raw hex values
166
+ - Ensure sufficient contrast (4.5:1 for normal text, 3:1 for large text)
167
+ - Don't rely solely on color to convey information (use icons, text, or patterns too)
168
+
169
+ ## Accessibility (WCAG 2.1 AA)
170
+
171
+ Every component must meet these standards:
172
+
173
+ ### Keyboard Navigation
174
+
175
+ ```tsx
176
+ // Every interactive element must be keyboard accessible
177
+ <button onClick={handleClick}>Click me</button> // ✓ Focusable by default
178
+ <div onClick={handleClick}>Click me</div> // ✗ Not focusable
179
+ <div role="button" tabIndex={0} onClick={handleClick} // ✓ But prefer <button>
180
+ onKeyDown={e => e.key === 'Enter' && handleClick()}>
181
+ Click me
182
+ </div>
183
+ ```
184
+
185
+ ### ARIA Labels
186
+
187
+ ```tsx
188
+ // Label interactive elements that lack visible text
189
+ <button aria-label="Close dialog"><XIcon /></button>
190
+
191
+ // Label form inputs
192
+ <label htmlFor="email">Email</label>
193
+ <input id="email" type="email" />
194
+
195
+ // Or use aria-label when no visible label exists
196
+ <input aria-label="Search tasks" type="search" />
197
+ ```
198
+
199
+ ### Focus Management
200
+
201
+ ```tsx
202
+ // Move focus when content changes
203
+ function Dialog({ isOpen, onClose }: DialogProps) {
204
+ const closeRef = useRef<HTMLButtonElement>(null);
205
+
206
+ useEffect(() => {
207
+ if (isOpen) closeRef.current?.focus();
208
+ }, [isOpen]);
209
+
210
+ // Trap focus inside dialog when open
211
+ return (
212
+ <dialog open={isOpen}>
213
+ <button ref={closeRef} onClick={onClose}>Close</button>
214
+ {/* dialog content */}
215
+ </dialog>
216
+ );
217
+ }
218
+ ```
219
+
220
+ ### Meaningful Empty and Error States
221
+
222
+ ```tsx
223
+ // Don't show blank screens
224
+ function TaskList({ tasks }: { tasks: Task[] }) {
225
+ if (tasks.length === 0) {
226
+ return (
227
+ <div role="status" className="text-center py-12">
228
+ <TasksEmptyIcon className="mx-auto h-12 w-12 text-muted" />
229
+ <h3 className="mt-2 text-sm font-medium">No tasks</h3>
230
+ <p className="mt-1 text-sm text-muted">Get started by creating a new task.</p>
231
+ <Button className="mt-4" onClick={onCreateTask}>Create Task</Button>
232
+ </div>
233
+ );
234
+ }
235
+
236
+ return <ul role="list">...</ul>;
237
+ }
238
+ ```
239
+
240
+ ## Responsive Design
241
+
242
+ Design for mobile first, then expand:
243
+
244
+ ```tsx
245
+ // Tailwind: mobile-first responsive
246
+ <div className="
247
+ grid grid-cols-1 /* Mobile: single column */
248
+ sm:grid-cols-2 /* Small: 2 columns */
249
+ lg:grid-cols-3 /* Large: 3 columns */
250
+ gap-4
251
+ ">
252
+ ```
253
+
254
+ Test at these breakpoints: 320px, 768px, 1024px, 1440px.
255
+
256
+ ## Loading and Transitions
257
+
258
+ ```tsx
259
+ // Skeleton loading (not spinners for content)
260
+ function TaskListSkeleton() {
261
+ return (
262
+ <div className="space-y-3" aria-busy="true" aria-label="Loading tasks">
263
+ {Array.from({ length: 3 }).map((_, i) => (
264
+ <div key={i} className="h-12 bg-muted animate-pulse rounded" />
265
+ ))}
266
+ </div>
267
+ );
268
+ }
269
+
270
+ // Optimistic updates for perceived speed
271
+ function useToggleTask() {
272
+ const queryClient = useQueryClient();
273
+
274
+ return useMutation({
275
+ mutationFn: toggleTask,
276
+ onMutate: async (taskId) => {
277
+ await queryClient.cancelQueries({ queryKey: ['tasks'] });
278
+ const previous = queryClient.getQueryData(['tasks']);
279
+
280
+ queryClient.setQueryData(['tasks'], (old: Task[]) =>
281
+ old.map(t => t.id === taskId ? { ...t, done: !t.done } : t)
282
+ );
283
+
284
+ return { previous };
285
+ },
286
+ onError: (_err, _taskId, context) => {
287
+ queryClient.setQueryData(['tasks'], context?.previous);
288
+ },
289
+ });
290
+ }
291
+ ```
292
+
293
+ ## See Also
294
+
295
+ For detailed accessibility requirements and testing tools, see `accessibility-checklist.md`.
296
+
297
+ ## Common Rationalizations
298
+
299
+ | Rationalization | Reality |
300
+ |---|---|
301
+ | "Accessibility is a nice-to-have" | It's a legal requirement in many jurisdictions and an engineering quality standard. |
302
+ | "We'll make it responsive later" | Retrofitting responsive design is 3x harder than building it from the start. |
303
+ | "The design isn't final, so I'll skip styling" | Use the design system defaults. Unstyled UI creates a broken first impression for reviewers. |
304
+ | "This is just a prototype" | Prototypes become production code. Build the foundation right. |
305
+ | "The AI aesthetic is fine for now" | It signals low quality. Use the project's actual design system from the start. |
306
+
307
+ ## Red Flags
308
+
309
+ - Components with more than 200 lines (split them)
310
+ - Inline styles or arbitrary pixel values
311
+ - Missing error states, loading states, or empty states
312
+ - No keyboard navigation testing
313
+ - Color as the sole indicator of state (red/green without text or icons)
314
+ - Generic "AI look" (purple gradients, oversized cards, stock layouts)
315
+
316
+ ## Verification
317
+
318
+ After building UI:
319
+
320
+ - [ ] Component renders without console errors
321
+ - [ ] All interactive elements are keyboard accessible (Tab through the page)
322
+ - [ ] Screen reader can convey the page's content and structure
323
+ - [ ] Responsive: works at 320px, 768px, 1024px, 1440px
324
+ - [ ] Loading, error, and empty states all handled
325
+ - [ ] Follows the project's design system (spacing, colors, typography)
326
+ - [ ] No accessibility warnings in dev tools or axe-core