@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,312 +1,312 @@
1
- # 1. Eliminating Waterfalls
2
-
3
- > **Impact:** CRITICAL
4
- > **Focus:** Waterfalls are the #1 performance killer. Each sequential await adds full network latency. Eliminating them yields the largest gains.
5
-
6
- ---
7
-
8
- ## Overview
9
-
10
- This section contains **5 rules** focused on eliminating waterfalls.
11
-
12
- ---
13
-
14
- ## Rule 1.1: Defer Await Until Needed
15
-
16
- **Impact:** HIGH
17
- **Tags:** async, await, conditional, optimization
18
-
19
- ## Defer Await Until Needed
20
-
21
- Move `await` operations into the branches where they're actually used to avoid blocking code paths that don't need them.
22
-
23
- **Incorrect (blocks both branches):**
24
-
25
- ```typescript
26
- async function handleRequest(userId: string, skipProcessing: boolean) {
27
- const userData = await fetchUserData(userId)
28
-
29
- if (skipProcessing) {
30
- // Returns immediately but still waited for userData
31
- return { skipped: true }
32
- }
33
-
34
- // Only this branch uses userData
35
- return processUserData(userData)
36
- }
37
- ```
38
-
39
- **Correct (only blocks when needed):**
40
-
41
- ```typescript
42
- async function handleRequest(userId: string, skipProcessing: boolean) {
43
- if (skipProcessing) {
44
- // Returns immediately without waiting
45
- return { skipped: true }
46
- }
47
-
48
- // Fetch only when needed
49
- const userData = await fetchUserData(userId)
50
- return processUserData(userData)
51
- }
52
- ```
53
-
54
- **Another example (early return optimization):**
55
-
56
- ```typescript
57
- // Incorrect: always fetches permissions
58
- async function updateResource(resourceId: string, userId: string) {
59
- const permissions = await fetchPermissions(userId)
60
- const resource = await getResource(resourceId)
61
-
62
- if (!resource) {
63
- return { error: 'Not found' }
64
- }
65
-
66
- if (!permissions.canEdit) {
67
- return { error: 'Forbidden' }
68
- }
69
-
70
- return await updateResourceData(resource, permissions)
71
- }
72
-
73
- // Correct: fetches only when needed
74
- async function updateResource(resourceId: string, userId: string) {
75
- const resource = await getResource(resourceId)
76
-
77
- if (!resource) {
78
- return { error: 'Not found' }
79
- }
80
-
81
- const permissions = await fetchPermissions(userId)
82
-
83
- if (!permissions.canEdit) {
84
- return { error: 'Forbidden' }
85
- }
86
-
87
- return await updateResourceData(resource, permissions)
88
- }
89
- ```
90
-
91
- This optimization is especially valuable when the skipped branch is frequently taken, or when the deferred operation is expensive.
92
-
93
- ---
94
-
95
- ## Rule 1.2: Dependency-Based Parallelization
96
-
97
- **Impact:** CRITICAL
98
- **Tags:** async, parallelization, dependencies, better-all
99
-
100
- ## Dependency-Based Parallelization
101
-
102
- For operations with partial dependencies, use `better-all` to maximize parallelism. It automatically starts each task at the earliest possible moment.
103
-
104
- **Incorrect (profile waits for config unnecessarily):**
105
-
106
- ```typescript
107
- const [user, config] = await Promise.all([
108
- fetchUser(),
109
- fetchConfig()
110
- ])
111
- const profile = await fetchProfile(user.id)
112
- ```
113
-
114
- **Correct (config and profile run in parallel):**
115
-
116
- ```typescript
117
- import { all } from 'better-all'
118
-
119
- const { user, config, profile } = await all({
120
- async user() { return fetchUser() },
121
- async config() { return fetchConfig() },
122
- async profile() {
123
- return fetchProfile((await this.$.user).id)
124
- }
125
- })
126
- ```
127
-
128
- **Alternative without extra dependencies:**
129
-
130
- We can also create all the promises first, and do `Promise.all()` at the end.
131
-
132
- ```typescript
133
- const userPromise = fetchUser()
134
- const profilePromise = userPromise.then(user => fetchProfile(user.id))
135
-
136
- const [user, config, profile] = await Promise.all([
137
- userPromise,
138
- fetchConfig(),
139
- profilePromise
140
- ])
141
- ```
142
-
143
- Reference: [https://github.com/shuding/better-all](https://github.com/shuding/better-all)
144
-
145
- ---
146
-
147
- ## Rule 1.3: Prevent Waterfall Chains in API Routes
148
-
149
- **Impact:** CRITICAL
150
- **Tags:** api-routes, server-actions, waterfalls, parallelization
151
-
152
- ## Prevent Waterfall Chains in API Routes
153
-
154
- In API routes and Server Actions, start independent operations immediately, even if you don't await them yet.
155
-
156
- **Incorrect (config waits for auth, data waits for both):**
157
-
158
- ```typescript
159
- export async function GET(request: Request) {
160
- const session = await auth()
161
- const config = await fetchConfig()
162
- const data = await fetchData(session.user.id)
163
- return Response.json({ data, config })
164
- }
165
- ```
166
-
167
- **Correct (auth and config start immediately):**
168
-
169
- ```typescript
170
- export async function GET(request: Request) {
171
- const sessionPromise = auth()
172
- const configPromise = fetchConfig()
173
- const session = await sessionPromise
174
- const [config, data] = await Promise.all([
175
- configPromise,
176
- fetchData(session.user.id)
177
- ])
178
- return Response.json({ data, config })
179
- }
180
- ```
181
-
182
- For operations with more complex dependency chains, use `better-all` to automatically maximize parallelism (see Dependency-Based Parallelization).
183
-
184
- ---
185
-
186
- ## Rule 1.4: Promise.all() for Independent Operations
187
-
188
- **Impact:** CRITICAL
189
- **Tags:** async, parallelization, promises, waterfalls
190
-
191
- ## Promise.all() for Independent Operations
192
-
193
- When async operations have no interdependencies, execute them concurrently using `Promise.all()`.
194
-
195
- **Incorrect (sequential execution, 3 round trips):**
196
-
197
- ```typescript
198
- const user = await fetchUser()
199
- const posts = await fetchPosts()
200
- const comments = await fetchComments()
201
- ```
202
-
203
- **Correct (parallel execution, 1 round trip):**
204
-
205
- ```typescript
206
- const [user, posts, comments] = await Promise.all([
207
- fetchUser(),
208
- fetchPosts(),
209
- fetchComments()
210
- ])
211
- ```
212
-
213
- ---
214
-
215
- ## Rule 1.5: Strategic Suspense Boundaries
216
-
217
- **Impact:** HIGH
218
- **Tags:** async, suspense, streaming, layout-shift
219
-
220
- ## Strategic Suspense Boundaries
221
-
222
- Instead of awaiting data in async components before returning JSX, use Suspense boundaries to show the wrapper UI faster while data loads.
223
-
224
- **Incorrect (wrapper blocked by data fetching):**
225
-
226
- ```tsx
227
- async function Page() {
228
- const data = await fetchData() // Blocks entire page
229
-
230
- return (
231
- <div>
232
- <div>Sidebar</div>
233
- <div>Header</div>
234
- <div>
235
- <DataDisplay data={data} />
236
- </div>
237
- <div>Footer</div>
238
- </div>
239
- )
240
- }
241
- ```
242
-
243
- The entire layout waits for data even though only the middle section needs it.
244
-
245
- **Correct (wrapper shows immediately, data streams in):**
246
-
247
- ```tsx
248
- function Page() {
249
- return (
250
- <div>
251
- <div>Sidebar</div>
252
- <div>Header</div>
253
- <div>
254
- <Suspense fallback={<Skeleton />}>
255
- <DataDisplay />
256
- </Suspense>
257
- </div>
258
- <div>Footer</div>
259
- </div>
260
- )
261
- }
262
-
263
- async function DataDisplay() {
264
- const data = await fetchData() // Only blocks this component
265
- return <div>{data.content}</div>
266
- }
267
- ```
268
-
269
- Sidebar, Header, and Footer render immediately. Only DataDisplay waits for data.
270
-
271
- **Alternative (share promise across components):**
272
-
273
- ```tsx
274
- function Page() {
275
- // Start fetch immediately, but don't await
276
- const dataPromise = fetchData()
277
-
278
- return (
279
- <div>
280
- <div>Sidebar</div>
281
- <div>Header</div>
282
- <Suspense fallback={<Skeleton />}>
283
- <DataDisplay dataPromise={dataPromise} />
284
- <DataSummary dataPromise={dataPromise} />
285
- </Suspense>
286
- <div>Footer</div>
287
- </div>
288
- )
289
- }
290
-
291
- function DataDisplay({ dataPromise }: { dataPromise: Promise<Data> }) {
292
- const data = use(dataPromise) // Unwraps the promise
293
- return <div>{data.content}</div>
294
- }
295
-
296
- function DataSummary({ dataPromise }: { dataPromise: Promise<Data> }) {
297
- const data = use(dataPromise) // Reuses the same promise
298
- return <div>{data.summary}</div>
299
- }
300
- ```
301
-
302
- Both components share the same promise, so only one fetch occurs. Layout renders immediately while both components wait together.
303
-
304
- **When NOT to use this pattern:**
305
-
306
- - Critical data needed for layout decisions (affects positioning)
307
- - SEO-critical content above the fold
308
- - Small, fast queries where suspense overhead isn't worth it
309
- - When you want to avoid layout shift (loading → content jump)
310
-
311
- **Trade-off:** Faster initial paint vs potential layout shift. Choose based on your UX priorities.
312
-
1
+ # 1. Eliminating Waterfalls
2
+
3
+ > **Impact:** CRITICAL
4
+ > **Focus:** Waterfalls are the #1 performance killer. Each sequential await adds full network latency. Eliminating them yields the largest gains.
5
+
6
+ ---
7
+
8
+ ## Overview
9
+
10
+ This section contains **5 rules** focused on eliminating waterfalls.
11
+
12
+ ---
13
+
14
+ ## Rule 1.1: Defer Await Until Needed
15
+
16
+ **Impact:** HIGH
17
+ **Tags:** async, await, conditional, optimization
18
+
19
+ ## Defer Await Until Needed
20
+
21
+ Move `await` operations into the branches where they're actually used to avoid blocking code paths that don't need them.
22
+
23
+ **Incorrect (blocks both branches):**
24
+
25
+ ```typescript
26
+ async function handleRequest(userId: string, skipProcessing: boolean) {
27
+ const userData = await fetchUserData(userId)
28
+
29
+ if (skipProcessing) {
30
+ // Returns immediately but still waited for userData
31
+ return { skipped: true }
32
+ }
33
+
34
+ // Only this branch uses userData
35
+ return processUserData(userData)
36
+ }
37
+ ```
38
+
39
+ **Correct (only blocks when needed):**
40
+
41
+ ```typescript
42
+ async function handleRequest(userId: string, skipProcessing: boolean) {
43
+ if (skipProcessing) {
44
+ // Returns immediately without waiting
45
+ return { skipped: true }
46
+ }
47
+
48
+ // Fetch only when needed
49
+ const userData = await fetchUserData(userId)
50
+ return processUserData(userData)
51
+ }
52
+ ```
53
+
54
+ **Another example (early return optimization):**
55
+
56
+ ```typescript
57
+ // Incorrect: always fetches permissions
58
+ async function updateResource(resourceId: string, userId: string) {
59
+ const permissions = await fetchPermissions(userId)
60
+ const resource = await getResource(resourceId)
61
+
62
+ if (!resource) {
63
+ return { error: 'Not found' }
64
+ }
65
+
66
+ if (!permissions.canEdit) {
67
+ return { error: 'Forbidden' }
68
+ }
69
+
70
+ return await updateResourceData(resource, permissions)
71
+ }
72
+
73
+ // Correct: fetches only when needed
74
+ async function updateResource(resourceId: string, userId: string) {
75
+ const resource = await getResource(resourceId)
76
+
77
+ if (!resource) {
78
+ return { error: 'Not found' }
79
+ }
80
+
81
+ const permissions = await fetchPermissions(userId)
82
+
83
+ if (!permissions.canEdit) {
84
+ return { error: 'Forbidden' }
85
+ }
86
+
87
+ return await updateResourceData(resource, permissions)
88
+ }
89
+ ```
90
+
91
+ This optimization is especially valuable when the skipped branch is frequently taken, or when the deferred operation is expensive.
92
+
93
+ ---
94
+
95
+ ## Rule 1.2: Dependency-Based Parallelization
96
+
97
+ **Impact:** CRITICAL
98
+ **Tags:** async, parallelization, dependencies, better-all
99
+
100
+ ## Dependency-Based Parallelization
101
+
102
+ For operations with partial dependencies, use `better-all` to maximize parallelism. It automatically starts each task at the earliest possible moment.
103
+
104
+ **Incorrect (profile waits for config unnecessarily):**
105
+
106
+ ```typescript
107
+ const [user, config] = await Promise.all([
108
+ fetchUser(),
109
+ fetchConfig()
110
+ ])
111
+ const profile = await fetchProfile(user.id)
112
+ ```
113
+
114
+ **Correct (config and profile run in parallel):**
115
+
116
+ ```typescript
117
+ import { all } from 'better-all'
118
+
119
+ const { user, config, profile } = await all({
120
+ async user() { return fetchUser() },
121
+ async config() { return fetchConfig() },
122
+ async profile() {
123
+ return fetchProfile((await this.$.user).id)
124
+ }
125
+ })
126
+ ```
127
+
128
+ **Alternative without extra dependencies:**
129
+
130
+ We can also create all the promises first, and do `Promise.all()` at the end.
131
+
132
+ ```typescript
133
+ const userPromise = fetchUser()
134
+ const profilePromise = userPromise.then(user => fetchProfile(user.id))
135
+
136
+ const [user, config, profile] = await Promise.all([
137
+ userPromise,
138
+ fetchConfig(),
139
+ profilePromise
140
+ ])
141
+ ```
142
+
143
+ Reference: [https://github.com/shuding/better-all](https://github.com/shuding/better-all)
144
+
145
+ ---
146
+
147
+ ## Rule 1.3: Prevent Waterfall Chains in API Routes
148
+
149
+ **Impact:** CRITICAL
150
+ **Tags:** api-routes, server-actions, waterfalls, parallelization
151
+
152
+ ## Prevent Waterfall Chains in API Routes
153
+
154
+ In API routes and Server Actions, start independent operations immediately, even if you don't await them yet.
155
+
156
+ **Incorrect (config waits for auth, data waits for both):**
157
+
158
+ ```typescript
159
+ export async function GET(request: Request) {
160
+ const session = await auth()
161
+ const config = await fetchConfig()
162
+ const data = await fetchData(session.user.id)
163
+ return Response.json({ data, config })
164
+ }
165
+ ```
166
+
167
+ **Correct (auth and config start immediately):**
168
+
169
+ ```typescript
170
+ export async function GET(request: Request) {
171
+ const sessionPromise = auth()
172
+ const configPromise = fetchConfig()
173
+ const session = await sessionPromise
174
+ const [config, data] = await Promise.all([
175
+ configPromise,
176
+ fetchData(session.user.id)
177
+ ])
178
+ return Response.json({ data, config })
179
+ }
180
+ ```
181
+
182
+ For operations with more complex dependency chains, use `better-all` to automatically maximize parallelism (see Dependency-Based Parallelization).
183
+
184
+ ---
185
+
186
+ ## Rule 1.4: Promise.all() for Independent Operations
187
+
188
+ **Impact:** CRITICAL
189
+ **Tags:** async, parallelization, promises, waterfalls
190
+
191
+ ## Promise.all() for Independent Operations
192
+
193
+ When async operations have no interdependencies, execute them concurrently using `Promise.all()`.
194
+
195
+ **Incorrect (sequential execution, 3 round trips):**
196
+
197
+ ```typescript
198
+ const user = await fetchUser()
199
+ const posts = await fetchPosts()
200
+ const comments = await fetchComments()
201
+ ```
202
+
203
+ **Correct (parallel execution, 1 round trip):**
204
+
205
+ ```typescript
206
+ const [user, posts, comments] = await Promise.all([
207
+ fetchUser(),
208
+ fetchPosts(),
209
+ fetchComments()
210
+ ])
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Rule 1.5: Strategic Suspense Boundaries
216
+
217
+ **Impact:** HIGH
218
+ **Tags:** async, suspense, streaming, layout-shift
219
+
220
+ ## Strategic Suspense Boundaries
221
+
222
+ Instead of awaiting data in async components before returning JSX, use Suspense boundaries to show the wrapper UI faster while data loads.
223
+
224
+ **Incorrect (wrapper blocked by data fetching):**
225
+
226
+ ```tsx
227
+ async function Page() {
228
+ const data = await fetchData() // Blocks entire page
229
+
230
+ return (
231
+ <div>
232
+ <div>Sidebar</div>
233
+ <div>Header</div>
234
+ <div>
235
+ <DataDisplay data={data} />
236
+ </div>
237
+ <div>Footer</div>
238
+ </div>
239
+ )
240
+ }
241
+ ```
242
+
243
+ The entire layout waits for data even though only the middle section needs it.
244
+
245
+ **Correct (wrapper shows immediately, data streams in):**
246
+
247
+ ```tsx
248
+ function Page() {
249
+ return (
250
+ <div>
251
+ <div>Sidebar</div>
252
+ <div>Header</div>
253
+ <div>
254
+ <Suspense fallback={<Skeleton />}>
255
+ <DataDisplay />
256
+ </Suspense>
257
+ </div>
258
+ <div>Footer</div>
259
+ </div>
260
+ )
261
+ }
262
+
263
+ async function DataDisplay() {
264
+ const data = await fetchData() // Only blocks this component
265
+ return <div>{data.content}</div>
266
+ }
267
+ ```
268
+
269
+ Sidebar, Header, and Footer render immediately. Only DataDisplay waits for data.
270
+
271
+ **Alternative (share promise across components):**
272
+
273
+ ```tsx
274
+ function Page() {
275
+ // Start fetch immediately, but don't await
276
+ const dataPromise = fetchData()
277
+
278
+ return (
279
+ <div>
280
+ <div>Sidebar</div>
281
+ <div>Header</div>
282
+ <Suspense fallback={<Skeleton />}>
283
+ <DataDisplay dataPromise={dataPromise} />
284
+ <DataSummary dataPromise={dataPromise} />
285
+ </Suspense>
286
+ <div>Footer</div>
287
+ </div>
288
+ )
289
+ }
290
+
291
+ function DataDisplay({ dataPromise }: { dataPromise: Promise<Data> }) {
292
+ const data = use(dataPromise) // Unwraps the promise
293
+ return <div>{data.content}</div>
294
+ }
295
+
296
+ function DataSummary({ dataPromise }: { dataPromise: Promise<Data> }) {
297
+ const data = use(dataPromise) // Reuses the same promise
298
+ return <div>{data.summary}</div>
299
+ }
300
+ ```
301
+
302
+ Both components share the same promise, so only one fetch occurs. Layout renders immediately while both components wait together.
303
+
304
+ **When NOT to use this pattern:**
305
+
306
+ - Critical data needed for layout decisions (affects positioning)
307
+ - SEO-critical content above the fold
308
+ - Small, fast queries where suspense overhead isn't worth it
309
+ - When you want to avoid layout shift (loading → content jump)
310
+
311
+ **Trade-off:** Faster initial paint vs potential layout shift. Choose based on your UX priorities.
312
+