@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,491 +0,0 @@
1
- # Backend DevOps Practices
2
-
3
- CI/CD pipelines, containerization, deployment strategies, and monitoring (2025).
4
-
5
- ## Deployment Strategies
6
-
7
- ### Blue-Green Deployment
8
-
9
- **Concept:** Two identical environments (Blue = current, Green = new)
10
-
11
- ```
12
- Production Traffic → Blue (v1.0)
13
- Green (v2.0) ← Deploy & Test
14
-
15
- Switch:
16
- Production Traffic → Green (v2.0)
17
- Blue (v1.0) ← Instant rollback available
18
- ```
19
-
20
- **Pros:**
21
- - Zero downtime
22
- - Instant rollback
23
- - Full environment testing before switch
24
-
25
- **Cons:**
26
- - Requires double infrastructure
27
- - Database migrations complex
28
-
29
- ### Canary Deployment
30
-
31
- **Concept:** Gradual rollout (1% → 5% → 25% → 100%)
32
-
33
- ```bash
34
- # Kubernetes canary deployment
35
- kubectl set image deployment/api api=myapp:v2
36
- kubectl rollout pause deployment/api # Pause at initial replicas
37
-
38
- # Monitor metrics, then continue
39
- kubectl rollout resume deployment/api
40
- ```
41
-
42
- **Pros:**
43
- - Risk mitigation
44
- - Early issue detection
45
- - Real user feedback
46
-
47
- **Cons:**
48
- - Requires monitoring
49
- - Longer deployment time
50
-
51
- ### Feature Flags (Progressive Delivery)
52
-
53
- **Impact:** Fewer deployment failures when combined with canary
54
-
55
- ```typescript
56
- import { LaunchDarkly } from 'launchdarkly-node-server-sdk';
57
-
58
- const client = LaunchDarkly.init(process.env.LD_SDK_KEY);
59
-
60
- // Check feature flag
61
- const showNewCheckout = await client.variation('new-checkout', user, false);
62
-
63
- if (showNewCheckout) {
64
- return newCheckoutFlow(req, res);
65
- } else {
66
- return oldCheckoutFlow(req, res);
67
- }
68
- ```
69
-
70
- **Use Cases:**
71
- - Gradual feature rollout
72
- - A/B testing
73
- - Kill switch for problematic features
74
- - Decouple deployment from release
75
-
76
- ## Containerization with Docker
77
-
78
- ### Multi-Stage Builds (Optimize Image Size)
79
-
80
- ```dockerfile
81
- # Build stage
82
- FROM node:20-alpine AS builder
83
- WORKDIR /app
84
- COPY package*.json ./
85
- RUN npm ci --only=production
86
- COPY . .
87
- RUN npm run build
88
-
89
- # Production stage
90
- FROM node:20-alpine
91
- WORKDIR /app
92
-
93
- # Copy only necessary files
94
- COPY --from=builder /app/dist ./dist
95
- COPY --from=builder /app/node_modules ./node_modules
96
- COPY package.json ./
97
-
98
- # Security: Run as non-root
99
- RUN addgroup -g 1001 -S nodejs && \
100
- adduser -S nodejs -u 1001
101
- USER nodejs
102
-
103
- EXPOSE 3000
104
- CMD ["node", "dist/main.js"]
105
- ```
106
-
107
- **Benefits:**
108
- - Smaller image size
109
- - Faster deployments
110
- - Reduced attack surface
111
-
112
- ### Docker Compose (Local Development)
113
-
114
- ```yaml
115
- version: '3.8'
116
-
117
- services:
118
- api:
119
- build: .
120
- ports:
121
- - "3000:3000"
122
- environment:
123
- - DATABASE_URL=postgresql://postgres:password@db:5432/myapp
124
- - REDIS_URL=redis://redis:6379
125
- depends_on:
126
- - db
127
- - redis
128
-
129
- db:
130
- image: postgres:15-alpine
131
- environment:
132
- - POSTGRES_PASSWORD=password
133
- - POSTGRES_DB=myapp
134
- volumes:
135
- - postgres-data:/var/lib/postgresql/data
136
-
137
- redis:
138
- image: redis:7-alpine
139
- ports:
140
- - "6379:6379"
141
-
142
- volumes:
143
- postgres-data:
144
- ```
145
-
146
- ## Kubernetes Orchestration
147
-
148
- ### Deployment Manifest
149
-
150
- ```yaml
151
- apiVersion: apps/v1
152
- kind: Deployment
153
- version: "1.0.0"
154
- spec:
155
- replicas: 3
156
- selector:
157
- matchLabels:
158
- app: api
159
- template:
160
- metadata:
161
- labels:
162
- app: api
163
- spec:
164
- containers:
165
- - name: api
166
- image: myregistry/api:v1.0.0
167
- ports:
168
- - containerPort: 3000
169
- env:
170
- - name: DATABASE_URL
171
- valueFrom:
172
- secretKeyRef:
173
- name: db-secret
174
- key: url
175
- resources:
176
- requests:
177
- memory: "256Mi"
178
- cpu: "250m"
179
- limits:
180
- memory: "512Mi"
181
- cpu: "500m"
182
- livenessProbe:
183
- httpGet:
184
- path: /health
185
- port: 3000
186
- initialDelaySeconds: 30
187
- periodSeconds: 10
188
- readinessProbe:
189
- httpGet:
190
- path: /ready
191
- port: 3000
192
- initialDelaySeconds: 5
193
- periodSeconds: 5
194
- ```
195
-
196
- ### Horizontal Pod Autoscaling
197
-
198
- ```yaml
199
- apiVersion: autoscaling/v2
200
- kind: HorizontalPodAutoscaler
201
- version: "1.0.0"
202
- spec:
203
- scaleTargetRef:
204
- apiVersion: apps/v1
205
- kind: Deployment
206
- name: api-deployment
207
- minReplicas: 3
208
- maxReplicas: 10
209
- metrics:
210
- - type: Resource
211
- resource:
212
- name: cpu
213
- target:
214
- type: Utilization
215
- averageUtilization: 70
216
- ```
217
-
218
- ## CI/CD Pipelines
219
-
220
- ### GitHub Actions (Modern, Integrated)
221
-
222
- ```yaml
223
- name: CI/CD Pipeline
224
-
225
- on:
226
- push:
227
- branches: [main]
228
- pull_request:
229
- branches: [main]
230
-
231
- jobs:
232
- test:
233
- runs-on: ubuntu-latest
234
- steps:
235
- - uses: actions/checkout@v3
236
-
237
- - name: Setup Node.js
238
- uses: actions/setup-node@v3
239
- with:
240
- node-version: '20'
241
- cache: 'npm'
242
-
243
- - name: Install dependencies
244
- run: npm ci
245
-
246
- - name: Run linter
247
- run: npm run lint
248
-
249
- - name: Run tests
250
- run: npm run test:ci
251
-
252
- - name: Upload coverage
253
- uses: codecov/codecov-action@v3
254
-
255
- security:
256
- runs-on: ubuntu-latest
257
- steps:
258
- - uses: actions/checkout@v3
259
-
260
- - name: Run Snyk scan
261
- uses: snyk/actions/node@master
262
- env:
263
- SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
264
-
265
- - name: Container scan
266
- run: |
267
- docker build -t myapp:${{ github.sha }} .
268
- docker scan myapp:${{ github.sha }}
269
-
270
- deploy:
271
- needs: [test, security]
272
- runs-on: ubuntu-latest
273
- if: github.ref == 'refs/heads/main'
274
- steps:
275
- - uses: actions/checkout@v3
276
-
277
- - name: Build and push Docker image
278
- run: |
279
- echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
280
- docker build -t ghcr.io/${{ github.repository }}:${{ github.sha }} .
281
- docker push ghcr.io/${{ github.repository }}:${{ github.sha }}
282
-
283
- - name: Deploy to Kubernetes
284
- run: |
285
- kubectl set image deployment/api api=ghcr.io/${{ github.repository }}:${{ github.sha }}
286
- kubectl rollout status deployment/api
287
- ```
288
-
289
- ## Monitoring & Observability
290
-
291
- ### Three Pillars of Observability
292
-
293
- **1. Metrics (Prometheus + Grafana)**
294
-
295
- ```typescript
296
- import { Counter, Histogram, register } from 'prom-client';
297
-
298
- // Request counter
299
- const httpRequestTotal = new Counter({
300
- name: 'http_requests_total',
301
- help: 'Total HTTP requests',
302
- labelNames: ['method', 'route', 'status'],
303
- });
304
-
305
- // Response time histogram
306
- const httpRequestDuration = new Histogram({
307
- name: 'http_request_duration_seconds',
308
- help: 'HTTP request duration',
309
- labelNames: ['method', 'route'],
310
- buckets: [0.1, 0.5, 1, 2, 5],
311
- });
312
-
313
- // Middleware to track metrics
314
- app.use((req, res, next) => {
315
- const start = Date.now();
316
-
317
- res.on('finish', () => {
318
- const duration = (Date.now() - start) / 1000;
319
- httpRequestTotal.inc({ method: req.method, route: req.route?.path, status: res.statusCode });
320
- httpRequestDuration.observe({ method: req.method, route: req.route?.path }, duration);
321
- });
322
-
323
- next();
324
- });
325
-
326
- // Metrics endpoint
327
- app.get('/metrics', async (req, res) => {
328
- res.set('Content-Type', register.contentType);
329
- res.end(await register.metrics());
330
- });
331
- ```
332
-
333
- **2. Logs (ELK Stack - Elasticsearch, Logstash, Kibana)**
334
-
335
- ```typescript
336
- import winston from 'winston';
337
- import { ElasticsearchTransport } from 'winston-elasticsearch';
338
-
339
- const logger = winston.createLogger({
340
- level: 'info',
341
- format: winston.format.json(),
342
- transports: [
343
- new winston.transports.Console(),
344
- new ElasticsearchTransport({
345
- level: 'info',
346
- clientOpts: { node: 'http://localhost:9200' },
347
- index: 'logs',
348
- }),
349
- ],
350
- });
351
-
352
- // Structured logging
353
- logger.info('User created', {
354
- userId: user.id,
355
- email: user.email,
356
- ipAddress: req.ip,
357
- userAgent: req.headers['user-agent'],
358
- });
359
- ```
360
-
361
- **3. Traces (Jaeger/OpenTelemetry)**
362
-
363
- ```typescript
364
- import { NodeSDK } from '@opentelemetry/sdk-node';
365
- import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
366
-
367
- const sdk = new NodeSDK({
368
- traceExporter: new JaegerExporter({
369
- endpoint: 'http://localhost:14268/api/traces',
370
- }),
371
- serviceName: 'api-service',
372
- });
373
-
374
- sdk.start();
375
-
376
- // Traces automatically captured for HTTP requests, database queries, etc.
377
- ```
378
-
379
- ### Health Checks
380
-
381
- ```typescript
382
- // Liveness probe - Is the app running?
383
- app.get('/health/liveness', (req, res) => {
384
- res.status(200).json({ status: 'ok', timestamp: Date.now() });
385
- });
386
-
387
- // Readiness probe - Is the app ready to serve traffic?
388
- app.get('/health/readiness', async (req, res) => {
389
- const checks = {
390
- database: await checkDatabase(),
391
- redis: await checkRedis(),
392
- externalAPI: await checkExternalAPI(),
393
- };
394
-
395
- const isReady = Object.values(checks).every(Boolean);
396
- res.status(isReady ? 200 : 503).json({
397
- status: isReady ? 'ready' : 'not ready',
398
- checks,
399
- });
400
- });
401
-
402
- async function checkDatabase() {
403
- try {
404
- await db.query('SELECT 1');
405
- return true;
406
- } catch {
407
- return false;
408
- }
409
- }
410
- ```
411
-
412
- ## Secrets Management
413
-
414
- ### HashiCorp Vault
415
-
416
- ```bash
417
- # Store secret
418
- vault kv put secret/myapp/db password=super-secret
419
-
420
- # Retrieve secret
421
- vault kv get -field=password secret/myapp/db
422
- ```
423
-
424
- ### Kubernetes Secrets
425
-
426
- ```yaml
427
- apiVersion: v1
428
- kind: Secret
429
- version: "1.0.0"
430
- type: Opaque
431
- stringData:
432
- url: postgresql://user:pass@host:5432/db
433
- ---
434
- # Reference in deployment
435
- env:
436
- - name: DATABASE_URL
437
- valueFrom:
438
- secretKeyRef:
439
- name: db-secret
440
- key: url
441
- ```
442
-
443
- ## Infrastructure as Code (Terraform)
444
-
445
- ```hcl
446
- # main.tf
447
- resource "aws_db_instance" "main" {
448
- identifier = "myapp-db"
449
- engine = "postgres"
450
- engine_version = "15.3"
451
- instance_class = "db.t3.micro"
452
- allocated_storage = 20
453
- username = "admin"
454
- password = var.db_password
455
-
456
- backup_retention_period = 7
457
- skip_final_snapshot = false
458
- }
459
-
460
- resource "aws_elasticache_cluster" "redis" {
461
- cluster_id = "myapp-redis"
462
- engine = "redis"
463
- node_type = "cache.t3.micro"
464
- num_cache_nodes = 1
465
- parameter_group_name = "default.redis7"
466
- }
467
- ```
468
-
469
- ## DevOps Checklist
470
-
471
- - [ ] CI/CD pipeline configured (GitHub Actions/GitLab CI/Jenkins)
472
- - [ ] Docker multi-stage builds implemented
473
- - [ ] Kubernetes deployment manifests created
474
- - [ ] Blue-green or canary deployment strategy
475
- - [ ] Feature flags configured (LaunchDarkly/Unleash)
476
- - [ ] Health checks (liveness + readiness probes)
477
- - [ ] Monitoring: Prometheus + Grafana
478
- - [ ] Logging: ELK Stack or similar
479
- - [ ] Distributed tracing: Jaeger/OpenTelemetry
480
- - [ ] Secrets management (Vault/AWS Secrets Manager)
481
- - [ ] Infrastructure as Code (Terraform/CloudFormation)
482
- - [ ] Autoscaling configured
483
- - [ ] Backup and disaster recovery plan
484
-
485
- ## Resources
486
-
487
- - **Kubernetes:** https://kubernetes.io/docs/
488
- - **Docker:** https://docs.docker.com/
489
- - **Prometheus:** https://prometheus.io/docs/
490
- - **OpenTelemetry:** https://opentelemetry.io/docs/
491
- - **Terraform:** https://www.terraform.io/docs/