@haposoft/cafekit 0.16.0-rc.8 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/README.md +116 -27
  2. package/bin/__tests__/codex-hooks-ownership.test.js +239 -0
  3. package/bin/__tests__/codex-hooks.test.js +50 -0
  4. package/bin/__tests__/codex-native.test.js +1882 -70
  5. package/bin/__tests__/develop-contract.test.js +400 -23
  6. package/bin/__tests__/installer-safety.test.js +3 -3
  7. package/bin/__tests__/optional-skill-inventory.test.js +249 -0
  8. package/bin/__tests__/output-styles.test.js +214 -0
  9. package/bin/__tests__/package-inventory.test.js +1735 -98
  10. package/bin/__tests__/runtime-schema.test.js +111 -0
  11. package/bin/__tests__/secret-output-guardrail.test.js +122 -0
  12. package/bin/__tests__/skill-routing-source.test.js +172 -0
  13. package/bin/__tests__/specs-v2-execution-closeout.test.js +1 -1
  14. package/bin/install.js +10 -0
  15. package/bin/lib/codex-install.js +170 -5
  16. package/bin/lib/context.js +14 -0
  17. package/bin/lib/i18n.js +12 -6
  18. package/bin/lib/skill-deps.js +5 -5
  19. package/bin/phases/claude-runtime.js +23 -0
  20. package/bin/phases/claude-settings.js +8 -0
  21. package/bin/phases/codex-hooks.js +156 -0
  22. package/bin/phases/codex-runtime.js +29 -38
  23. package/bin/phases/copy-payload.js +8 -2
  24. package/bin/phases/select-skill-bundles.js +96 -0
  25. package/bin/phases/skill-inventory.js +71 -0
  26. package/bin/phases/skills-setup.js +9 -2
  27. package/bin/phases/write-metadata.js +8 -5
  28. package/package.json +8 -2
  29. package/src/claude/CLAUDE.md +3 -3
  30. package/src/claude/agents/brainstormer.md +52 -69
  31. package/src/claude/agents/code-auditor.md +32 -14
  32. package/src/claude/agents/debugger.md +35 -20
  33. package/src/claude/agents/deployer.md +12 -5
  34. package/src/claude/agents/docs-keeper.md +11 -1
  35. package/src/claude/agents/implementer.md +25 -13
  36. package/src/claude/agents/inspector.md +6 -3
  37. package/src/claude/agents/project-manager.md +1 -1
  38. package/src/claude/agents/researcher.md +26 -55
  39. package/src/claude/agents/spec-maker.md +12 -7
  40. package/src/claude/agents/strategist.md +52 -0
  41. package/src/claude/agents/test-runner.md +117 -132
  42. package/src/claude/agents/ui-ux-designer.md +1 -1
  43. package/src/claude/hooks/__tests__/fixtures/statusline-default.golden +1 -0
  44. package/src/claude/hooks/__tests__/precompact.test.js +158 -0
  45. package/src/claude/hooks/__tests__/spec-gate.test.js +10 -3
  46. package/src/claude/hooks/__tests__/state.test.js +5 -0
  47. package/src/claude/hooks/__tests__/statusline.test.js +196 -0
  48. package/src/claude/hooks/agent.cjs +1 -1
  49. package/src/claude/hooks/docs-sync.cjs +12 -10
  50. package/src/claude/hooks/inspect-block.cjs +1 -1
  51. package/src/claude/hooks/lib/config.cjs +3 -0
  52. package/src/claude/hooks/lib/hook-state-dir.cjs +39 -0
  53. package/src/claude/hooks/lib/secret-keywords.cjs +42 -0
  54. package/src/claude/hooks/precompact.cjs +105 -0
  55. package/src/claude/hooks/rules.cjs +1 -1
  56. package/src/claude/hooks/secret-output-guardrail.cjs +43 -0
  57. package/src/claude/hooks/session.cjs +27 -1
  58. package/src/claude/hooks/spec-gate.cjs +3 -3
  59. package/src/claude/hooks/spec-state.cjs +2 -2
  60. package/src/claude/hooks/state.cjs +1 -1
  61. package/src/claude/hooks/task-scaffold-guard.cjs +1 -1
  62. package/src/claude/hooks/usage.cjs +1 -1
  63. package/src/claude/migration-manifest.json +29 -15
  64. package/src/claude/output-styles/coding-level-0-eli5.md +103 -0
  65. package/src/claude/output-styles/coding-level-1-junior.md +124 -0
  66. package/src/claude/output-styles/coding-level-2-mid.md +146 -0
  67. package/src/claude/output-styles/coding-level-3-senior.md +148 -0
  68. package/src/claude/output-styles/coding-level-4-lead.md +159 -0
  69. package/src/claude/output-styles/coding-level-5-god.md +91 -0
  70. package/src/claude/references/debugger/core-philosophy.md +5 -3
  71. package/src/claude/references/debugger/frontend-verification.md +2 -2
  72. package/src/claude/references/debugger/log-ci-analysis.md +13 -1
  73. package/src/claude/references/debugger/parallel-agent-hydration.md +19 -34
  74. package/src/claude/references/debugger/performance-diagnostics.md +2 -2
  75. package/src/claude/references/debugger/root-cause-tracing.md +37 -6
  76. package/src/claude/references/debugger/side-effect-gate.md +3 -1
  77. package/src/claude/references/debugger/verification-protocol.md +13 -12
  78. package/src/claude/rules/orchestrator.md +7 -1
  79. package/src/claude/rules/process-management.md +39 -0
  80. package/src/claude/rules/review-audit-self-decision.md +48 -0
  81. package/src/claude/rules/skill-domain-routing.md +26 -24
  82. package/src/claude/rules/skill-workflow-routing.md +22 -14
  83. package/src/claude/rules/workflow.md +3 -3
  84. package/src/claude/runtime.json +1 -0
  85. package/src/claude/runtime.schema.json +205 -0
  86. package/src/claude/scripts/generate-skill-catalog.cjs +156 -122
  87. package/src/claude/scripts/provenance.cjs +18 -5
  88. package/src/claude/scripts/workflow-policy.cjs +1 -1
  89. package/src/claude/settings/settings.json +16 -0
  90. package/src/claude/skills/agent-browser/SKILL.md +1 -1
  91. package/src/claude/skills/ai-multimodal/SKILL.md +1 -1
  92. package/src/claude/skills/brainstorm/SKILL.md +193 -172
  93. package/src/claude/skills/brainstorm/references/question-framework.md +105 -167
  94. package/src/claude/skills/chrome-devtools/SKILL.md +1 -1
  95. package/src/claude/skills/code-review/SKILL.md +43 -25
  96. package/src/claude/skills/code-review/references/spec-compliance-review.md +3 -4
  97. package/src/claude/skills/code-review/references/verification-gate.md +1 -1
  98. package/src/claude/skills/debug/SKILL.md +48 -19
  99. package/src/claude/skills/delegate/SKILL.md +1 -1
  100. package/src/claude/skills/develop/SKILL.md +92 -65
  101. package/src/claude/skills/develop/references/parallel-waves.md +36 -63
  102. package/src/claude/skills/develop/references/quality-gate.md +31 -4
  103. package/src/claude/skills/develop/references/subagent-patterns.md +21 -7
  104. package/src/claude/skills/docs/SKILL.md +42 -23
  105. package/src/claude/skills/docs/references/init-workflow.md +4 -4
  106. package/src/claude/skills/docs/references/reconstruct-workflow.md +6 -6
  107. package/src/claude/skills/docs/references/standard-docs-workflow.md +6 -2
  108. package/src/claude/skills/docs/references/summarize-workflow.md +2 -2
  109. package/src/claude/skills/docs/references/update-workflow.md +9 -7
  110. package/src/claude/skills/docs/templates/requirements-as-is.md +1 -1
  111. package/src/claude/skills/docx/SKILL.md +1 -1
  112. package/src/claude/skills/git/SKILL.md +1 -1
  113. package/src/claude/skills/git/references/commit-protocols.md +1 -1
  114. package/src/claude/skills/git/references/finish-branch.md +1 -1
  115. package/src/claude/skills/hotfix/SKILL.md +159 -170
  116. package/src/claude/skills/hotfix/references/diagnosis-protocol.md +14 -9
  117. package/src/claude/skills/hotfix/references/parallel-patterns.md +27 -13
  118. package/src/claude/skills/hotfix/references/prevention-gate.md +5 -0
  119. package/src/claude/skills/hotfix/references/review-cycle.md +21 -15
  120. package/src/claude/skills/hotfix/references/workflow-specialized.md +53 -21
  121. package/src/claude/skills/inspect/SKILL.md +55 -46
  122. package/src/claude/skills/inspect/references/internal-inspection.md +21 -5
  123. package/src/claude/skills/loop/SKILL.md +114 -0
  124. package/src/claude/skills/loop/references/bounded-loop-protocol.md +104 -0
  125. package/src/claude/skills/loop/references/metric-and-guard-contract.md +76 -0
  126. package/src/claude/skills/pdf/SKILL.md +1 -1
  127. package/src/claude/skills/pptx/SKILL.md +1 -1
  128. package/src/claude/skills/question/SKILL.md +16 -13
  129. package/src/claude/skills/research/SKILL.md +70 -43
  130. package/src/claude/skills/route/SKILL.md +94 -0
  131. package/src/claude/skills/route/references/agent-timing.md +46 -0
  132. package/src/claude/skills/route/references/chaining-patterns.md +53 -0
  133. package/src/claude/skills/route/references/task-taxonomy.md +48 -0
  134. package/src/claude/skills/specs/SKILL.md +41 -60
  135. package/src/claude/skills/specs/references/review.md +11 -8
  136. package/src/claude/skills/specs/references/templates.md +34 -18
  137. package/src/claude/skills/specs/templates/requirements-init.md +1 -1
  138. package/src/claude/skills/specs/templates/research.md +2 -2
  139. package/src/claude/skills/sync/SKILL.md +6 -6
  140. package/src/claude/skills/sync/references/sync-protocols.md +1 -1
  141. package/src/claude/skills/test/SKILL.md +120 -120
  142. package/src/claude/skills/test/references/execution-strategy.md +208 -361
  143. package/src/claude/skills/test/references/failure-triage.md +55 -121
  144. package/src/claude/skills/test/references/test-memory.md +20 -34
  145. package/src/claude/skills/ui-ux-pro-max/SKILL.md +1 -1
  146. package/src/claude/skills/web-testing/SKILL.md +1 -1
  147. package/src/claude/skills/xlsx/SKILL.md +1 -1
  148. package/src/claude/status.cjs +135 -33
  149. package/src/codex/AGENTS.md +14 -4
  150. package/src/codex/hooks/docs-sync.cjs +8 -3
  151. package/src/codex/hooks/lib/hook-context.cjs +18 -4
  152. package/src/codex/hooks/rules.cjs +29 -1
  153. package/src/codex/hooks/secret-output-guardrail.cjs +30 -0
  154. package/src/codex/hooks/spec-gate.cjs +3 -8
  155. package/src/codex/hooks/spec-state.cjs +2 -1
  156. package/src/codex/hooks.json +5 -0
  157. package/src/codex/runtime.json +2 -0
  158. package/src/common/.env.example +1 -1
  159. package/src/claude/skills/backend-development/SKILL.md +0 -101
  160. package/src/claude/skills/backend-development/references/backend-api-design.md +0 -495
  161. package/src/claude/skills/backend-development/references/backend-architecture.md +0 -454
  162. package/src/claude/skills/backend-development/references/backend-authentication.md +0 -338
  163. package/src/claude/skills/backend-development/references/backend-code-quality.md +0 -659
  164. package/src/claude/skills/backend-development/references/backend-debugging.md +0 -904
  165. package/src/claude/skills/backend-development/references/backend-devops.md +0 -491
  166. package/src/claude/skills/backend-development/references/backend-mindset.md +0 -387
  167. package/src/claude/skills/backend-development/references/backend-performance.md +0 -397
  168. package/src/claude/skills/backend-development/references/backend-security.md +0 -342
  169. package/src/claude/skills/backend-development/references/backend-technologies.md +0 -256
  170. package/src/claude/skills/backend-development/references/backend-testing.md +0 -429
  171. package/src/claude/skills/devops/.env.example +0 -76
  172. package/src/claude/skills/devops/SKILL.md +0 -102
  173. package/src/claude/skills/devops/references/browser-rendering.md +0 -305
  174. package/src/claude/skills/devops/references/cloudflare-d1-kv.md +0 -123
  175. package/src/claude/skills/devops/references/cloudflare-platform.md +0 -271
  176. package/src/claude/skills/devops/references/cloudflare-r2-storage.md +0 -280
  177. package/src/claude/skills/devops/references/cloudflare-workers-advanced.md +0 -312
  178. package/src/claude/skills/devops/references/cloudflare-workers-apis.md +0 -309
  179. package/src/claude/skills/devops/references/cloudflare-workers-basics.md +0 -418
  180. package/src/claude/skills/devops/references/docker-basics.md +0 -297
  181. package/src/claude/skills/devops/references/docker-compose.md +0 -292
  182. package/src/claude/skills/devops/references/gcloud-platform.md +0 -297
  183. package/src/claude/skills/devops/references/gcloud-services.md +0 -304
  184. package/src/claude/skills/devops/references/kubernetes-basics.md +0 -95
  185. package/src/claude/skills/devops/references/kubernetes-helm-advanced.md +0 -70
  186. package/src/claude/skills/devops/references/kubernetes-helm.md +0 -81
  187. package/src/claude/skills/devops/references/kubernetes-kubectl.md +0 -74
  188. package/src/claude/skills/devops/references/kubernetes-security-advanced.md +0 -94
  189. package/src/claude/skills/devops/references/kubernetes-security.md +0 -89
  190. package/src/claude/skills/devops/references/kubernetes-troubleshooting-advanced.md +0 -74
  191. package/src/claude/skills/devops/references/kubernetes-troubleshooting.md +0 -49
  192. package/src/claude/skills/devops/references/kubernetes-workflows-advanced.md +0 -75
  193. package/src/claude/skills/devops/references/kubernetes-workflows.md +0 -76
  194. package/src/claude/skills/devops/scripts/cloudflare_deploy.py +0 -269
  195. package/src/claude/skills/devops/scripts/docker_optimize.py +0 -332
  196. package/src/claude/skills/devops/scripts/requirements.txt +0 -20
  197. package/src/claude/skills/devops/scripts/tests/requirements.txt +0 -3
  198. package/src/claude/skills/devops/scripts/tests/test_cloudflare_deploy.py +0 -285
  199. package/src/claude/skills/devops/scripts/tests/test_docker_optimize.py +0 -436
  200. package/src/claude/skills/frontend-design/SKILL.md +0 -135
  201. package/src/claude/skills/frontend-design/references/ai-multimodal-overview.md +0 -165
  202. package/src/claude/skills/frontend-design/references/analysis-best-practices.md +0 -80
  203. package/src/claude/skills/frontend-design/references/analysis-prompts.md +0 -141
  204. package/src/claude/skills/frontend-design/references/analysis-techniques.md +0 -118
  205. package/src/claude/skills/frontend-design/references/animejs.md +0 -396
  206. package/src/claude/skills/frontend-design/references/anti-slop-rules.md +0 -103
  207. package/src/claude/skills/frontend-design/references/asset-generation.md +0 -337
  208. package/src/claude/skills/frontend-design/references/bento-motion-engine.md +0 -142
  209. package/src/claude/skills/frontend-design/references/design-extraction-overview.md +0 -71
  210. package/src/claude/skills/frontend-design/references/extraction-best-practices.md +0 -141
  211. package/src/claude/skills/frontend-design/references/extraction-output-templates.md +0 -162
  212. package/src/claude/skills/frontend-design/references/extraction-prompts.md +0 -127
  213. package/src/claude/skills/frontend-design/references/magicui-components.md +0 -129
  214. package/src/claude/skills/frontend-design/references/performance-guardrails.md +0 -169
  215. package/src/claude/skills/frontend-design/references/premium-design-patterns.md +0 -93
  216. package/src/claude/skills/frontend-design/references/redesign-audit-checklist.md +0 -114
  217. package/src/claude/skills/frontend-design/references/technical-accessibility.md +0 -119
  218. package/src/claude/skills/frontend-design/references/technical-best-practices.md +0 -97
  219. package/src/claude/skills/frontend-design/references/technical-optimization.md +0 -44
  220. package/src/claude/skills/frontend-design/references/technical-overview.md +0 -90
  221. package/src/claude/skills/frontend-design/references/technical-workflows.md +0 -150
  222. package/src/claude/skills/frontend-design/references/visual-analysis-overview.md +0 -95
  223. package/src/claude/skills/frontend-design/references/workflow-3d.md +0 -102
  224. package/src/claude/skills/frontend-design/references/workflow-describe.md +0 -87
  225. package/src/claude/skills/frontend-design/references/workflow-immersive.md +0 -87
  226. package/src/claude/skills/frontend-design/references/workflow-quick.md +0 -57
  227. package/src/claude/skills/frontend-design/references/workflow-screenshot.md +0 -63
  228. package/src/claude/skills/frontend-design/references/workflow-video.md +0 -74
  229. package/src/claude/skills/frontend-development/SKILL.md +0 -406
  230. package/src/claude/skills/frontend-development/resources/common-patterns.md +0 -331
  231. package/src/claude/skills/frontend-development/resources/complete-examples.md +0 -872
  232. package/src/claude/skills/frontend-development/resources/component-patterns.md +0 -502
  233. package/src/claude/skills/frontend-development/resources/data-fetching.md +0 -767
  234. package/src/claude/skills/frontend-development/resources/file-organization.md +0 -502
  235. package/src/claude/skills/frontend-development/resources/loading-and-error-states.md +0 -501
  236. package/src/claude/skills/frontend-development/resources/performance.md +0 -406
  237. package/src/claude/skills/frontend-development/resources/routing-guide.md +0 -364
  238. package/src/claude/skills/frontend-development/resources/styling-guide.md +0 -428
  239. package/src/claude/skills/frontend-development/resources/typescript-standards.md +0 -418
  240. package/src/claude/skills/mobile-development/SKILL.md +0 -218
  241. package/src/claude/skills/mobile-development/references/mobile-android.md +0 -604
  242. package/src/claude/skills/mobile-development/references/mobile-best-practices.md +0 -544
  243. package/src/claude/skills/mobile-development/references/mobile-debugging.md +0 -1089
  244. package/src/claude/skills/mobile-development/references/mobile-frameworks.md +0 -465
  245. package/src/claude/skills/mobile-development/references/mobile-ios.md +0 -496
  246. package/src/claude/skills/mobile-development/references/mobile-mindset.md +0 -542
  247. package/src/claude/skills/react-best-practices/AGENTS.md +0 -2249
  248. package/src/claude/skills/react-best-practices/README.md +0 -123
  249. package/src/claude/skills/react-best-practices/SKILL.md +0 -128
  250. package/src/claude/skills/react-best-practices/metadata.json +0 -15
  251. package/src/claude/skills/react-best-practices/rules/_sections.md +0 -46
  252. package/src/claude/skills/react-best-practices/rules/_template.md +0 -28
  253. package/src/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  254. package/src/claude/skills/react-best-practices/rules/advanced-use-latest.md +0 -49
  255. package/src/claude/skills/react-best-practices/rules/async-api-routes.md +0 -38
  256. package/src/claude/skills/react-best-practices/rules/async-defer-await.md +0 -80
  257. package/src/claude/skills/react-best-practices/rules/async-dependencies.md +0 -36
  258. package/src/claude/skills/react-best-practices/rules/async-parallel.md +0 -28
  259. package/src/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
  260. package/src/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
  261. package/src/claude/skills/react-best-practices/rules/bundle-conditional.md +0 -31
  262. package/src/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
  263. package/src/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  264. package/src/claude/skills/react-best-practices/rules/bundle-preload.md +0 -50
  265. package/src/claude/skills/react-best-practices/rules/client-event-listeners.md +0 -74
  266. package/src/claude/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
  267. package/src/claude/skills/react-best-practices/rules/js-batch-dom-css.md +0 -82
  268. package/src/claude/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
  269. package/src/claude/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
  270. package/src/claude/skills/react-best-practices/rules/js-cache-storage.md +0 -70
  271. package/src/claude/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
  272. package/src/claude/skills/react-best-practices/rules/js-early-exit.md +0 -50
  273. package/src/claude/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
  274. package/src/claude/skills/react-best-practices/rules/js-index-maps.md +0 -37
  275. package/src/claude/skills/react-best-practices/rules/js-length-check-first.md +0 -49
  276. package/src/claude/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
  277. package/src/claude/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
  278. package/src/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
  279. package/src/claude/skills/react-best-practices/rules/rendering-activity.md +0 -26
  280. package/src/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  281. package/src/claude/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
  282. package/src/claude/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
  283. package/src/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  284. package/src/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  285. package/src/claude/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
  286. package/src/claude/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
  287. package/src/claude/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
  288. package/src/claude/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
  289. package/src/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
  290. package/src/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  291. package/src/claude/skills/react-best-practices/rules/rerender-memo.md +0 -44
  292. package/src/claude/skills/react-best-practices/rules/rerender-transitions.md +0 -40
  293. package/src/claude/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
  294. package/src/claude/skills/react-best-practices/rules/server-cache-lru.md +0 -41
  295. package/src/claude/skills/react-best-practices/rules/server-cache-react.md +0 -26
  296. package/src/claude/skills/react-best-practices/rules/server-parallel-fetching.md +0 -79
  297. package/src/claude/skills/react-best-practices/rules/server-serialization.md +0 -38
@@ -1,406 +0,0 @@
1
- ---
2
- name: hapo:frontend-development
3
- description: Build React/TypeScript frontends with modern patterns. Use for components, Suspense, lazy loading, useSuspenseQuery, MUI v7 styling, TanStack Router, performance optimization.
4
- user-invocable: true
5
- when_to_use: "Invoke to build React/TS components with best practices."
6
- category: frontend
7
- keywords: [frontend, react, typescript, components]
8
- argument-hint: "[component or feature]"
9
- metadata:
10
- author: haposoft
11
- version: "1.0.0"
12
- ---
13
- # Frontend Development Guidelines
14
-
15
- ## Purpose
16
-
17
- Comprehensive guide for modern React development, emphasizing Suspense-based data fetching, lazy loading, proper file organization, and performance optimization.
18
-
19
- ## When to Use This Skill
20
-
21
- - Creating new components or pages
22
- - Building new features
23
- - Fetching data with TanStack Query
24
- - Setting up routing with TanStack Router
25
- - Styling components with MUI v7
26
- - Performance optimization
27
- - Organizing frontend code
28
- - TypeScript best practices
29
-
30
- ---
31
-
32
- ## Quick Start
33
-
34
- ### New Component Checklist
35
-
36
- Creating a component? Follow this checklist:
37
-
38
- - [ ] Use `React.FC<Props>` pattern with TypeScript
39
- - [ ] Lazy load if heavy component: `React.lazy(() => import())`
40
- - [ ] Wrap in `<SuspenseLoader>` for loading states
41
- - [ ] Use `useSuspenseQuery` for data fetching
42
- - [ ] Import aliases: `@/`, `~types`, `~components`, `~features`
43
- - [ ] Styles: Inline if <100 lines, separate file if >100 lines
44
- - [ ] Use `useCallback` for event handlers passed to children
45
- - [ ] Default export at bottom
46
- - [ ] No early returns with loading spinners
47
- - [ ] Use `useMuiSnackbar` for user notifications
48
-
49
- ### New Feature Checklist
50
-
51
- Creating a feature? Set up this structure:
52
-
53
- - [ ] Create `features/{feature-name}/` directory
54
- - [ ] Create subdirectories: `api/`, `components/`, `hooks/`, `helpers/`, `types/`
55
- - [ ] Create API service file: `api/{feature}Api.ts`
56
- - [ ] Set up TypeScript types in `types/`
57
- - [ ] Create route in `routes/{feature-name}/index.tsx`
58
- - [ ] Lazy load feature components
59
- - [ ] Use Suspense boundaries
60
- - [ ] Export public API from feature `index.ts`
61
-
62
- ---
63
-
64
- ## Import Aliases Quick Reference
65
-
66
- | Alias | Resolves To | Example |
67
- |-------|-------------|---------|
68
- | `@/` | `src/` | `import { apiClient } from '@/lib/apiClient'` |
69
- | `~types` | `src/types` | `import type { User } from '~types/user'` |
70
- | `~components` | `src/components` | `import { SuspenseLoader } from '~components/SuspenseLoader'` |
71
- | `~features` | `src/features` | `import { authApi } from '~features/auth'` |
72
-
73
- Defined in: [vite.config.ts](../../vite.config.ts) lines 180-185
74
-
75
- ---
76
-
77
- ## Common Imports Cheatsheet
78
-
79
- ```typescript
80
- // React & Lazy Loading
81
- import React, { useState, useCallback, useMemo } from 'react';
82
- const Heavy = React.lazy(() => import('./Heavy'));
83
-
84
- // MUI Components
85
- import { Box, Paper, Typography, Button, Grid } from '@mui/material';
86
- import type { SxProps, Theme } from '@mui/material';
87
-
88
- // TanStack Query (Suspense)
89
- import { useSuspenseQuery, useQueryClient } from '@tanstack/react-query';
90
-
91
- // TanStack Router
92
- import { createFileRoute } from '@tanstack/react-router';
93
-
94
- // Project Components
95
- import { SuspenseLoader } from '~components/SuspenseLoader';
96
-
97
- // Hooks
98
- import { useAuth } from '@/hooks/useAuth';
99
- import { useMuiSnackbar } from '@/hooks/useMuiSnackbar';
100
-
101
- // Types
102
- import type { Post } from '~types/post';
103
- ```
104
-
105
- ---
106
-
107
- ## Topic Guides
108
-
109
- ### 🎨 Component Patterns
110
-
111
- **Modern React components use:**
112
- - `React.FC<Props>` for type safety
113
- - `React.lazy()` for code splitting
114
- - `SuspenseLoader` for loading states
115
- - Named const + default export pattern
116
-
117
- **Key Concepts:**
118
- - Lazy load heavy components (DataGrid, charts, editors)
119
- - Always wrap lazy components in Suspense
120
- - Use SuspenseLoader component (with fade animation)
121
- - Component structure: Props → Hooks → Handlers → Render → Export
122
-
123
- **[📖 Complete Guide: resources/component-patterns.md](resources/component-patterns.md)**
124
-
125
- ---
126
-
127
- ### 📊 Data Fetching
128
-
129
- **PRIMARY PATTERN: useSuspenseQuery**
130
- - Use with Suspense boundaries
131
- - Cache-first strategy (check grid cache before API)
132
- - Replaces `isLoading` checks
133
- - Type-safe with generics
134
-
135
- **API Service Layer:**
136
- - Create `features/{feature}/api/{feature}Api.ts`
137
- - Use `apiClient` axios instance
138
- - Centralized methods per feature
139
- - Route format: `/form/route` (NOT `/api/form/route`)
140
-
141
- **[📖 Complete Guide: resources/data-fetching.md](resources/data-fetching.md)**
142
-
143
- ---
144
-
145
- ### 📁 File Organization
146
-
147
- **features/ vs components/:**
148
- - `features/`: Domain-specific (posts, comments, auth)
149
- - `components/`: Truly reusable (SuspenseLoader, CustomAppBar)
150
-
151
- **Feature Subdirectories:**
152
- ```
153
- features/
154
- my-feature/
155
- api/ # API service layer
156
- components/ # Feature components
157
- hooks/ # Custom hooks
158
- helpers/ # Utility functions
159
- types/ # TypeScript types
160
- ```
161
-
162
- **[📖 Complete Guide: resources/file-organization.md](resources/file-organization.md)**
163
-
164
- ---
165
-
166
- ### 🎨 Styling
167
-
168
- **Inline vs Separate:**
169
- - <100 lines: Inline `const styles: Record<string, SxProps<Theme>>`
170
- - >100 lines: Separate `.styles.ts` file
171
-
172
- **Primary Method:**
173
- - Use `sx` prop for MUI components
174
- - Type-safe with `SxProps<Theme>`
175
- - Theme access: `(theme) => theme.palette.primary.main`
176
-
177
- **MUI v7 Grid:**
178
- ```typescript
179
- <Grid size={{ xs: 12, md: 6 }}> // ✅ v7 syntax
180
- <Grid xs={12} md={6}> // ❌ Old syntax
181
- ```
182
-
183
- **[📖 Complete Guide: resources/styling-guide.md](resources/styling-guide.md)**
184
-
185
- ---
186
-
187
- ### 🛣️ Routing
188
-
189
- **TanStack Router - Folder-Based:**
190
- - Directory: `routes/my-route/index.tsx`
191
- - Lazy load components
192
- - Use `createFileRoute`
193
- - Breadcrumb data in loader
194
-
195
- **Example:**
196
- ```typescript
197
- import { createFileRoute } from '@tanstack/react-router';
198
- import { lazy } from 'react';
199
-
200
- const MyPage = lazy(() => import('@/features/my-feature/components/MyPage'));
201
-
202
- export const Route = createFileRoute('/my-route/')({
203
- component: MyPage,
204
- loader: () => ({ crumb: 'My Route' }),
205
- });
206
- ```
207
-
208
- **[📖 Complete Guide: resources/routing-guide.md](resources/routing-guide.md)**
209
-
210
- ---
211
-
212
- ### ⏳ Loading & Error States
213
-
214
- **CRITICAL RULE: No Early Returns**
215
-
216
- ```typescript
217
- // ❌ NEVER - Causes layout shift
218
- if (isLoading) {
219
- return <LoadingSpinner />;
220
- }
221
-
222
- // ✅ ALWAYS - Consistent layout
223
- <SuspenseLoader>
224
- <Content />
225
- </SuspenseLoader>
226
- ```
227
-
228
- **Why:** Prevents Cumulative Layout Shift (CLS), better UX
229
-
230
- **Error Handling:**
231
- - Use `useMuiSnackbar` for user feedback
232
- - NEVER `react-toastify`
233
- - TanStack Query `onError` callbacks
234
-
235
- **[📖 Complete Guide: resources/loading-and-error-states.md](resources/loading-and-error-states.md)**
236
-
237
- ---
238
-
239
- ### ⚡ Performance
240
-
241
- **Optimization Patterns:**
242
- - `useMemo`: Expensive computations (filter, sort, map)
243
- - `useCallback`: Event handlers passed to children
244
- - `React.memo`: Expensive components
245
- - Debounced search (300-500ms)
246
- - Memory leak prevention (cleanup in useEffect)
247
-
248
- **[📖 Complete Guide: resources/performance.md](resources/performance.md)**
249
-
250
- ---
251
-
252
- ### 📘 TypeScript
253
-
254
- **Standards:**
255
- - Strict mode, no `any` type
256
- - Explicit return types on functions
257
- - Type imports: `import type { User } from '~types/user'`
258
- - Component prop interfaces with JSDoc
259
-
260
- **[📖 Complete Guide: resources/typescript-standards.md](resources/typescript-standards.md)**
261
-
262
- ---
263
-
264
- ### 🔧 Common Patterns
265
-
266
- **Covered Topics:**
267
- - React Hook Form with Zod validation
268
- - DataGrid wrapper contracts
269
- - Dialog component standards
270
- - `useAuth` hook for current user
271
- - Mutation patterns with cache invalidation
272
-
273
- **[📖 Complete Guide: resources/common-patterns.md](resources/common-patterns.md)**
274
-
275
- ---
276
-
277
- ### 📚 Complete Examples
278
-
279
- **Full working examples:**
280
- - Modern component with all patterns
281
- - Complete feature structure
282
- - API service layer
283
- - Route with lazy loading
284
- - Suspense + useSuspenseQuery
285
- - Form with validation
286
-
287
- **[📖 Complete Guide: resources/complete-examples.md](resources/complete-examples.md)**
288
-
289
- ---
290
-
291
- ## Navigation Guide
292
-
293
- | Need to... | Read this resource |
294
- |------------|-------------------|
295
- | Create a component | [component-patterns.md](resources/component-patterns.md) |
296
- | Fetch data | [data-fetching.md](resources/data-fetching.md) |
297
- | Organize files/folders | [file-organization.md](resources/file-organization.md) |
298
- | Style components | [styling-guide.md](resources/styling-guide.md) |
299
- | Set up routing | [routing-guide.md](resources/routing-guide.md) |
300
- | Handle loading/errors | [loading-and-error-states.md](resources/loading-and-error-states.md) |
301
- | Optimize performance | [performance.md](resources/performance.md) |
302
- | TypeScript types | [typescript-standards.md](resources/typescript-standards.md) |
303
- | Forms/Auth/DataGrid | [common-patterns.md](resources/common-patterns.md) |
304
- | See full examples | [complete-examples.md](resources/complete-examples.md) |
305
-
306
- ---
307
-
308
- ## Core Principles
309
-
310
- 1. **Lazy Load Everything Heavy**: Routes, DataGrid, charts, editors
311
- 2. **Suspense for Loading**: Use SuspenseLoader, not early returns
312
- 3. **useSuspenseQuery**: Primary data fetching pattern for new code
313
- 4. **Features are Organized**: api/, components/, hooks/, helpers/ subdirs
314
- 5. **Styles Based on Size**: <100 inline, >100 separate
315
- 6. **Import Aliases**: Use @/, ~types, ~components, ~features
316
- 7. **No Early Returns**: Prevents layout shift
317
- 8. **useMuiSnackbar**: For all user notifications
318
-
319
- ---
320
-
321
- ## Quick Reference: File Structure
322
-
323
- ```
324
- src/
325
- features/
326
- my-feature/
327
- api/
328
- myFeatureApi.ts # API service
329
- components/
330
- MyFeature.tsx # Main component
331
- SubComponent.tsx # Related components
332
- hooks/
333
- useMyFeature.ts # Custom hooks
334
- useSuspenseMyFeature.ts # Suspense hooks
335
- helpers/
336
- myFeatureHelpers.ts # Utilities
337
- types/
338
- index.ts # TypeScript types
339
- index.ts # Public exports
340
-
341
- components/
342
- SuspenseLoader/
343
- SuspenseLoader.tsx # Reusable loader
344
- CustomAppBar/
345
- CustomAppBar.tsx # Reusable app bar
346
-
347
- routes/
348
- my-route/
349
- index.tsx # Route component
350
- create/
351
- index.tsx # Nested route
352
- ```
353
-
354
- ---
355
-
356
- ## Modern Component Template (Quick Copy)
357
-
358
- ```typescript
359
- import React, { useState, useCallback } from 'react';
360
- import { Box, Paper } from '@mui/material';
361
- import { useSuspenseQuery } from '@tanstack/react-query';
362
- import { featureApi } from '../api/featureApi';
363
- import type { FeatureData } from '~types/feature';
364
-
365
- interface MyComponentProps {
366
- id: number;
367
- onAction?: () => void;
368
- }
369
-
370
- export const MyComponent: React.FC<MyComponentProps> = ({ id, onAction }) => {
371
- const [state, setState] = useState<string>('');
372
-
373
- const { data } = useSuspenseQuery({
374
- queryKey: ['feature', id],
375
- queryFn: () => featureApi.getFeature(id),
376
- });
377
-
378
- const handleAction = useCallback(() => {
379
- setState('updated');
380
- onAction?.();
381
- }, [onAction]);
382
-
383
- return (
384
- <Box sx={{ p: 2 }}>
385
- <Paper sx={{ p: 3 }}>
386
- {/* Content */}
387
- </Paper>
388
- </Box>
389
- );
390
- };
391
-
392
- export default MyComponent;
393
- ```
394
-
395
- For complete examples, see [resources/complete-examples.md](resources/complete-examples.md)
396
-
397
- ---
398
-
399
- ## Related Skills
400
-
401
- - **error-tracking**: Error tracking with Sentry (applies to frontend too)
402
- - **backend-dev-guidelines**: Backend API patterns that frontend consumes
403
-
404
- ---
405
-
406
- **Skill Status**: Modular structure with progressive loading for optimal context management