@haposoft/cafekit 0.16.0-rc.8 → 0.16.1

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 (323) hide show
  1. package/README.md +117 -28
  2. package/bin/__tests__/codex-hooks-ownership.test.js +239 -0
  3. package/bin/__tests__/codex-hooks.test.js +175 -0
  4. package/bin/__tests__/codex-native.test.js +1882 -70
  5. package/bin/__tests__/develop-contract.test.js +442 -23
  6. package/bin/__tests__/grok-envelope.test.js +271 -0
  7. package/bin/__tests__/grok-platform.test.js +133 -0
  8. package/bin/__tests__/hook-payload.test.js +194 -0
  9. package/bin/__tests__/installer-safety.test.js +3 -3
  10. package/bin/__tests__/omp-bridge.test.js +168 -0
  11. package/bin/__tests__/omp-hooks.test.js +178 -0
  12. package/bin/__tests__/omp-runtime.test.js +150 -0
  13. package/bin/__tests__/optional-skill-inventory.test.js +249 -0
  14. package/bin/__tests__/output-styles.test.js +214 -0
  15. package/bin/__tests__/package-inventory.test.js +1735 -98
  16. package/bin/__tests__/runtime-dir.test.js +158 -0
  17. package/bin/__tests__/runtime-schema.test.js +113 -0
  18. package/bin/__tests__/secret-output-guardrail.test.js +122 -0
  19. package/bin/__tests__/skill-routing-source.test.js +172 -0
  20. package/bin/__tests__/specs-v2-execution-closeout.test.js +28 -1
  21. package/bin/install.js +15 -5
  22. package/bin/lib/codex-install.js +170 -5
  23. package/bin/lib/context.js +64 -3
  24. package/bin/lib/i18n.js +15 -36
  25. package/bin/lib/skill-deps.js +5 -5
  26. package/bin/phases/claude-runtime.js +23 -0
  27. package/bin/phases/claude-settings.js +8 -0
  28. package/bin/phases/codex-hooks.js +156 -0
  29. package/bin/phases/codex-runtime.js +29 -38
  30. package/bin/phases/copy-payload.js +15 -2
  31. package/bin/phases/omp-runtime.js +140 -0
  32. package/bin/phases/root-config.js +3 -0
  33. package/bin/phases/select-platform.js +22 -1
  34. package/bin/phases/select-skill-bundles.js +96 -0
  35. package/bin/phases/skill-inventory.js +71 -0
  36. package/bin/phases/skills-setup.js +9 -2
  37. package/bin/phases/summary.js +0 -4
  38. package/bin/phases/write-metadata.js +8 -5
  39. package/package.json +8 -2
  40. package/src/claude/CLAUDE.md +3 -3
  41. package/src/claude/agents/brainstormer.md +52 -69
  42. package/src/claude/agents/code-auditor.md +32 -14
  43. package/src/claude/agents/debugger.md +35 -20
  44. package/src/claude/agents/deployer.md +12 -5
  45. package/src/claude/agents/docs-keeper.md +11 -1
  46. package/src/claude/agents/implementer.md +25 -13
  47. package/src/claude/agents/inspector.md +6 -3
  48. package/src/claude/agents/project-manager.md +1 -1
  49. package/src/claude/agents/researcher.md +26 -55
  50. package/src/claude/agents/spec-maker.md +12 -7
  51. package/src/claude/agents/strategist.md +52 -0
  52. package/src/claude/agents/test-runner.md +117 -132
  53. package/src/claude/agents/ui-ux-designer.md +1 -1
  54. package/src/claude/hooks/__tests__/fixtures/statusline-default.golden +1 -0
  55. package/src/claude/hooks/__tests__/precompact.test.js +158 -0
  56. package/src/claude/hooks/__tests__/semantic-review-authority.test.js +2 -0
  57. package/src/claude/hooks/__tests__/spec-gate.test.js +348 -3
  58. package/src/claude/hooks/__tests__/state.test.js +7 -0
  59. package/src/claude/hooks/__tests__/statusline.test.js +196 -0
  60. package/src/claude/hooks/agent.cjs +13 -8
  61. package/src/claude/hooks/completion-authority.cjs +10 -4
  62. package/src/claude/hooks/docs-sync.cjs +14 -11
  63. package/src/claude/hooks/inspect-block.cjs +28 -8
  64. package/src/claude/hooks/lib/config.cjs +8 -2
  65. package/src/claude/hooks/lib/counter.cjs +7 -5
  66. package/src/claude/hooks/lib/hook-payload.cjs +160 -0
  67. package/src/claude/hooks/lib/hook-state-dir.cjs +39 -0
  68. package/src/claude/hooks/lib/runtime-dir.cjs +49 -0
  69. package/src/claude/hooks/lib/secret-keywords.cjs +42 -0
  70. package/src/claude/hooks/precompact.cjs +106 -0
  71. package/src/claude/hooks/privacy-block.cjs +4 -2
  72. package/src/claude/hooks/rules.cjs +5 -3
  73. package/src/claude/hooks/secret-output-guardrail.cjs +44 -0
  74. package/src/claude/hooks/semantic-review-authority.cjs +6 -4
  75. package/src/claude/hooks/session.cjs +37 -9
  76. package/src/claude/hooks/spec-gate.cjs +21 -11
  77. package/src/claude/hooks/spec-state.cjs +11 -7
  78. package/src/claude/hooks/state.cjs +7 -5
  79. package/src/claude/hooks/task-scaffold-guard.cjs +30 -9
  80. package/src/claude/hooks/usage.cjs +6 -5
  81. package/src/claude/migration-manifest.json +31 -15
  82. package/src/claude/output-styles/coding-level-0-eli5.md +103 -0
  83. package/src/claude/output-styles/coding-level-1-junior.md +124 -0
  84. package/src/claude/output-styles/coding-level-2-mid.md +146 -0
  85. package/src/claude/output-styles/coding-level-3-senior.md +148 -0
  86. package/src/claude/output-styles/coding-level-4-lead.md +159 -0
  87. package/src/claude/output-styles/coding-level-5-god.md +91 -0
  88. package/src/claude/references/debugger/core-philosophy.md +5 -3
  89. package/src/claude/references/debugger/frontend-verification.md +2 -2
  90. package/src/claude/references/debugger/log-ci-analysis.md +13 -1
  91. package/src/claude/references/debugger/parallel-agent-hydration.md +19 -34
  92. package/src/claude/references/debugger/performance-diagnostics.md +2 -2
  93. package/src/claude/references/debugger/root-cause-tracing.md +37 -6
  94. package/src/claude/references/debugger/side-effect-gate.md +3 -1
  95. package/src/claude/references/debugger/verification-protocol.md +13 -12
  96. package/src/claude/rules/orchestrator.md +7 -1
  97. package/src/claude/rules/process-management.md +39 -0
  98. package/src/claude/rules/review-audit-self-decision.md +48 -0
  99. package/src/claude/rules/skill-domain-routing.md +26 -24
  100. package/src/claude/rules/skill-workflow-routing.md +22 -14
  101. package/src/claude/rules/state-sync.md +7 -1
  102. package/src/claude/rules/workflow.md +5 -3
  103. package/src/claude/runtime.json +1 -0
  104. package/src/claude/runtime.schema.json +205 -0
  105. package/src/claude/scripts/generate-skill-catalog.cjs +156 -122
  106. package/src/claude/scripts/provenance.cjs +29 -9
  107. package/src/claude/scripts/spec-receipt.cjs +65 -4
  108. package/src/claude/scripts/workflow-policy.cjs +1 -1
  109. package/src/claude/settings/settings.json +16 -0
  110. package/src/claude/skills/agent-browser/SKILL.md +1 -1
  111. package/src/claude/skills/ai-multimodal/SKILL.md +1 -1
  112. package/src/claude/skills/brainstorm/SKILL.md +193 -172
  113. package/src/claude/skills/brainstorm/references/question-framework.md +105 -167
  114. package/src/claude/skills/chrome-devtools/SKILL.md +1 -1
  115. package/src/claude/skills/code-review/SKILL.md +43 -25
  116. package/src/claude/skills/code-review/references/spec-compliance-review.md +3 -4
  117. package/src/claude/skills/code-review/references/verification-gate.md +1 -1
  118. package/src/claude/skills/debug/SKILL.md +48 -19
  119. package/src/claude/skills/delegate/SKILL.md +1 -1
  120. package/src/claude/skills/develop/SKILL.md +92 -65
  121. package/src/claude/skills/develop/references/parallel-waves.md +36 -63
  122. package/src/claude/skills/develop/references/quality-gate.md +31 -4
  123. package/src/claude/skills/develop/references/subagent-patterns.md +21 -7
  124. package/src/claude/skills/docs/SKILL.md +42 -23
  125. package/src/claude/skills/docs/references/init-workflow.md +4 -4
  126. package/src/claude/skills/docs/references/reconstruct-workflow.md +6 -6
  127. package/src/claude/skills/docs/references/standard-docs-workflow.md +6 -2
  128. package/src/claude/skills/docs/references/summarize-workflow.md +2 -2
  129. package/src/claude/skills/docs/references/update-workflow.md +9 -7
  130. package/src/claude/skills/docs/templates/requirements-as-is.md +1 -1
  131. package/src/claude/skills/docx/SKILL.md +1 -1
  132. package/src/claude/skills/git/SKILL.md +1 -1
  133. package/src/claude/skills/git/references/commit-protocols.md +1 -1
  134. package/src/claude/skills/git/references/finish-branch.md +1 -1
  135. package/src/claude/skills/hotfix/SKILL.md +159 -170
  136. package/src/claude/skills/hotfix/references/diagnosis-protocol.md +14 -9
  137. package/src/claude/skills/hotfix/references/parallel-patterns.md +27 -13
  138. package/src/claude/skills/hotfix/references/prevention-gate.md +5 -0
  139. package/src/claude/skills/hotfix/references/review-cycle.md +21 -15
  140. package/src/claude/skills/hotfix/references/workflow-specialized.md +53 -21
  141. package/src/claude/skills/inspect/SKILL.md +55 -46
  142. package/src/claude/skills/inspect/references/internal-inspection.md +21 -5
  143. package/src/claude/skills/loop/SKILL.md +114 -0
  144. package/src/claude/skills/loop/references/bounded-loop-protocol.md +104 -0
  145. package/src/claude/skills/loop/references/metric-and-guard-contract.md +76 -0
  146. package/src/claude/skills/pdf/SKILL.md +1 -1
  147. package/src/claude/skills/pptx/SKILL.md +1 -1
  148. package/src/claude/skills/question/SKILL.md +16 -13
  149. package/src/claude/skills/research/SKILL.md +70 -43
  150. package/src/claude/skills/route/SKILL.md +94 -0
  151. package/src/claude/skills/route/references/agent-timing.md +46 -0
  152. package/src/claude/skills/route/references/chaining-patterns.md +53 -0
  153. package/src/claude/skills/route/references/task-taxonomy.md +48 -0
  154. package/src/claude/skills/specs/SKILL.md +51 -71
  155. package/src/claude/skills/specs/references/review.md +11 -8
  156. package/src/claude/skills/specs/references/templates.md +34 -18
  157. package/src/claude/skills/specs/templates/requirements-init.md +1 -1
  158. package/src/claude/skills/specs/templates/research.md +2 -2
  159. package/src/claude/skills/sync/SKILL.md +6 -6
  160. package/src/claude/skills/sync/references/sync-protocols.md +1 -1
  161. package/src/claude/skills/test/SKILL.md +120 -120
  162. package/src/claude/skills/test/references/execution-strategy.md +208 -361
  163. package/src/claude/skills/test/references/failure-triage.md +55 -121
  164. package/src/claude/skills/test/references/test-memory.md +20 -34
  165. package/src/claude/skills/ui-ux-pro-max/SKILL.md +1 -1
  166. package/src/claude/skills/web-testing/SKILL.md +1 -1
  167. package/src/claude/skills/xlsx/SKILL.md +1 -1
  168. package/src/claude/status.cjs +135 -33
  169. package/src/codex/AGENTS.md +14 -4
  170. package/src/codex/hooks/docs-sync.cjs +8 -3
  171. package/src/codex/hooks/lib/hook-context.cjs +18 -4
  172. package/src/codex/hooks/rules.cjs +29 -1
  173. package/src/codex/hooks/secret-output-guardrail.cjs +30 -0
  174. package/src/codex/hooks/spec-gate.cjs +3 -8
  175. package/src/codex/hooks/spec-state.cjs +3 -2
  176. package/src/codex/hooks.json +5 -0
  177. package/src/codex/rules/state-sync.md +7 -1
  178. package/src/codex/runtime.json +2 -0
  179. package/src/common/.env.example +1 -1
  180. package/src/omp/extensions/cafekit-bridge.mjs +233 -0
  181. package/src/omp/hooks/privacy-block.cjs +250 -0
  182. package/src/omp/runtime.json +33 -0
  183. package/bin/lib/rtk-run.js +0 -28
  184. package/bin/phases/setup-rtk.js +0 -159
  185. package/src/claude/skills/backend-development/SKILL.md +0 -101
  186. package/src/claude/skills/backend-development/references/backend-api-design.md +0 -495
  187. package/src/claude/skills/backend-development/references/backend-architecture.md +0 -454
  188. package/src/claude/skills/backend-development/references/backend-authentication.md +0 -338
  189. package/src/claude/skills/backend-development/references/backend-code-quality.md +0 -659
  190. package/src/claude/skills/backend-development/references/backend-debugging.md +0 -904
  191. package/src/claude/skills/backend-development/references/backend-devops.md +0 -491
  192. package/src/claude/skills/backend-development/references/backend-mindset.md +0 -387
  193. package/src/claude/skills/backend-development/references/backend-performance.md +0 -397
  194. package/src/claude/skills/backend-development/references/backend-security.md +0 -342
  195. package/src/claude/skills/backend-development/references/backend-technologies.md +0 -256
  196. package/src/claude/skills/backend-development/references/backend-testing.md +0 -429
  197. package/src/claude/skills/devops/.env.example +0 -76
  198. package/src/claude/skills/devops/SKILL.md +0 -102
  199. package/src/claude/skills/devops/references/browser-rendering.md +0 -305
  200. package/src/claude/skills/devops/references/cloudflare-d1-kv.md +0 -123
  201. package/src/claude/skills/devops/references/cloudflare-platform.md +0 -271
  202. package/src/claude/skills/devops/references/cloudflare-r2-storage.md +0 -280
  203. package/src/claude/skills/devops/references/cloudflare-workers-advanced.md +0 -312
  204. package/src/claude/skills/devops/references/cloudflare-workers-apis.md +0 -309
  205. package/src/claude/skills/devops/references/cloudflare-workers-basics.md +0 -418
  206. package/src/claude/skills/devops/references/docker-basics.md +0 -297
  207. package/src/claude/skills/devops/references/docker-compose.md +0 -292
  208. package/src/claude/skills/devops/references/gcloud-platform.md +0 -297
  209. package/src/claude/skills/devops/references/gcloud-services.md +0 -304
  210. package/src/claude/skills/devops/references/kubernetes-basics.md +0 -95
  211. package/src/claude/skills/devops/references/kubernetes-helm-advanced.md +0 -70
  212. package/src/claude/skills/devops/references/kubernetes-helm.md +0 -81
  213. package/src/claude/skills/devops/references/kubernetes-kubectl.md +0 -74
  214. package/src/claude/skills/devops/references/kubernetes-security-advanced.md +0 -94
  215. package/src/claude/skills/devops/references/kubernetes-security.md +0 -89
  216. package/src/claude/skills/devops/references/kubernetes-troubleshooting-advanced.md +0 -74
  217. package/src/claude/skills/devops/references/kubernetes-troubleshooting.md +0 -49
  218. package/src/claude/skills/devops/references/kubernetes-workflows-advanced.md +0 -75
  219. package/src/claude/skills/devops/references/kubernetes-workflows.md +0 -76
  220. package/src/claude/skills/devops/scripts/cloudflare_deploy.py +0 -269
  221. package/src/claude/skills/devops/scripts/docker_optimize.py +0 -332
  222. package/src/claude/skills/devops/scripts/requirements.txt +0 -20
  223. package/src/claude/skills/devops/scripts/tests/requirements.txt +0 -3
  224. package/src/claude/skills/devops/scripts/tests/test_cloudflare_deploy.py +0 -285
  225. package/src/claude/skills/devops/scripts/tests/test_docker_optimize.py +0 -436
  226. package/src/claude/skills/frontend-design/SKILL.md +0 -135
  227. package/src/claude/skills/frontend-design/references/ai-multimodal-overview.md +0 -165
  228. package/src/claude/skills/frontend-design/references/analysis-best-practices.md +0 -80
  229. package/src/claude/skills/frontend-design/references/analysis-prompts.md +0 -141
  230. package/src/claude/skills/frontend-design/references/analysis-techniques.md +0 -118
  231. package/src/claude/skills/frontend-design/references/animejs.md +0 -396
  232. package/src/claude/skills/frontend-design/references/anti-slop-rules.md +0 -103
  233. package/src/claude/skills/frontend-design/references/asset-generation.md +0 -337
  234. package/src/claude/skills/frontend-design/references/bento-motion-engine.md +0 -142
  235. package/src/claude/skills/frontend-design/references/design-extraction-overview.md +0 -71
  236. package/src/claude/skills/frontend-design/references/extraction-best-practices.md +0 -141
  237. package/src/claude/skills/frontend-design/references/extraction-output-templates.md +0 -162
  238. package/src/claude/skills/frontend-design/references/extraction-prompts.md +0 -127
  239. package/src/claude/skills/frontend-design/references/magicui-components.md +0 -129
  240. package/src/claude/skills/frontend-design/references/performance-guardrails.md +0 -169
  241. package/src/claude/skills/frontend-design/references/premium-design-patterns.md +0 -93
  242. package/src/claude/skills/frontend-design/references/redesign-audit-checklist.md +0 -114
  243. package/src/claude/skills/frontend-design/references/technical-accessibility.md +0 -119
  244. package/src/claude/skills/frontend-design/references/technical-best-practices.md +0 -97
  245. package/src/claude/skills/frontend-design/references/technical-optimization.md +0 -44
  246. package/src/claude/skills/frontend-design/references/technical-overview.md +0 -90
  247. package/src/claude/skills/frontend-design/references/technical-workflows.md +0 -150
  248. package/src/claude/skills/frontend-design/references/visual-analysis-overview.md +0 -95
  249. package/src/claude/skills/frontend-design/references/workflow-3d.md +0 -102
  250. package/src/claude/skills/frontend-design/references/workflow-describe.md +0 -87
  251. package/src/claude/skills/frontend-design/references/workflow-immersive.md +0 -87
  252. package/src/claude/skills/frontend-design/references/workflow-quick.md +0 -57
  253. package/src/claude/skills/frontend-design/references/workflow-screenshot.md +0 -63
  254. package/src/claude/skills/frontend-design/references/workflow-video.md +0 -74
  255. package/src/claude/skills/frontend-development/SKILL.md +0 -406
  256. package/src/claude/skills/frontend-development/resources/common-patterns.md +0 -331
  257. package/src/claude/skills/frontend-development/resources/complete-examples.md +0 -872
  258. package/src/claude/skills/frontend-development/resources/component-patterns.md +0 -502
  259. package/src/claude/skills/frontend-development/resources/data-fetching.md +0 -767
  260. package/src/claude/skills/frontend-development/resources/file-organization.md +0 -502
  261. package/src/claude/skills/frontend-development/resources/loading-and-error-states.md +0 -501
  262. package/src/claude/skills/frontend-development/resources/performance.md +0 -406
  263. package/src/claude/skills/frontend-development/resources/routing-guide.md +0 -364
  264. package/src/claude/skills/frontend-development/resources/styling-guide.md +0 -428
  265. package/src/claude/skills/frontend-development/resources/typescript-standards.md +0 -418
  266. package/src/claude/skills/mobile-development/SKILL.md +0 -218
  267. package/src/claude/skills/mobile-development/references/mobile-android.md +0 -604
  268. package/src/claude/skills/mobile-development/references/mobile-best-practices.md +0 -544
  269. package/src/claude/skills/mobile-development/references/mobile-debugging.md +0 -1089
  270. package/src/claude/skills/mobile-development/references/mobile-frameworks.md +0 -465
  271. package/src/claude/skills/mobile-development/references/mobile-ios.md +0 -496
  272. package/src/claude/skills/mobile-development/references/mobile-mindset.md +0 -542
  273. package/src/claude/skills/react-best-practices/AGENTS.md +0 -2249
  274. package/src/claude/skills/react-best-practices/README.md +0 -123
  275. package/src/claude/skills/react-best-practices/SKILL.md +0 -128
  276. package/src/claude/skills/react-best-practices/metadata.json +0 -15
  277. package/src/claude/skills/react-best-practices/rules/_sections.md +0 -46
  278. package/src/claude/skills/react-best-practices/rules/_template.md +0 -28
  279. package/src/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  280. package/src/claude/skills/react-best-practices/rules/advanced-use-latest.md +0 -49
  281. package/src/claude/skills/react-best-practices/rules/async-api-routes.md +0 -38
  282. package/src/claude/skills/react-best-practices/rules/async-defer-await.md +0 -80
  283. package/src/claude/skills/react-best-practices/rules/async-dependencies.md +0 -36
  284. package/src/claude/skills/react-best-practices/rules/async-parallel.md +0 -28
  285. package/src/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
  286. package/src/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
  287. package/src/claude/skills/react-best-practices/rules/bundle-conditional.md +0 -31
  288. package/src/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
  289. package/src/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  290. package/src/claude/skills/react-best-practices/rules/bundle-preload.md +0 -50
  291. package/src/claude/skills/react-best-practices/rules/client-event-listeners.md +0 -74
  292. package/src/claude/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
  293. package/src/claude/skills/react-best-practices/rules/js-batch-dom-css.md +0 -82
  294. package/src/claude/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
  295. package/src/claude/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
  296. package/src/claude/skills/react-best-practices/rules/js-cache-storage.md +0 -70
  297. package/src/claude/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
  298. package/src/claude/skills/react-best-practices/rules/js-early-exit.md +0 -50
  299. package/src/claude/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
  300. package/src/claude/skills/react-best-practices/rules/js-index-maps.md +0 -37
  301. package/src/claude/skills/react-best-practices/rules/js-length-check-first.md +0 -49
  302. package/src/claude/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
  303. package/src/claude/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
  304. package/src/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
  305. package/src/claude/skills/react-best-practices/rules/rendering-activity.md +0 -26
  306. package/src/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  307. package/src/claude/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
  308. package/src/claude/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
  309. package/src/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  310. package/src/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  311. package/src/claude/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
  312. package/src/claude/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
  313. package/src/claude/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
  314. package/src/claude/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
  315. package/src/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
  316. package/src/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  317. package/src/claude/skills/react-best-practices/rules/rerender-memo.md +0 -44
  318. package/src/claude/skills/react-best-practices/rules/rerender-transitions.md +0 -40
  319. package/src/claude/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
  320. package/src/claude/skills/react-best-practices/rules/server-cache-lru.md +0 -41
  321. package/src/claude/skills/react-best-practices/rules/server-cache-react.md +0 -26
  322. package/src/claude/skills/react-best-practices/rules/server-parallel-fetching.md +0 -79
  323. 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