memory-journal-mcp 7.7.0 → 8.0.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 (531) hide show
  1. package/README.md +126 -56
  2. package/dist/chunk-6OHRCNYW.js +3231 -0
  3. package/dist/chunk-JFMITANR.js +5168 -0
  4. package/dist/{chunk-QCQPAF4I.js → chunk-MWNLAEHR.js} +301 -4321
  5. package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
  6. package/dist/cli.js +21 -3
  7. package/dist/index.d.ts +16 -13
  8. package/dist/index.js +4 -2
  9. package/dist/resources-IJVKDFGS.js +2 -0
  10. package/dist/tools-44DGXE3V.js +2 -0
  11. package/dist/worker-script.js +201 -20
  12. package/package.json +7 -4
  13. package/skills/README.md +62 -25
  14. package/skills/adversarial-performance/SKILL.md +139 -0
  15. package/skills/adversarial-performance/references/audit-categories.md +462 -0
  16. package/skills/adversarial-performance/references/copilot-performance-prompts.md +44 -0
  17. package/skills/adversarial-performance/references/copilot-usage.md +16 -0
  18. package/skills/adversarial-performance/references/feedback-loop.md +177 -0
  19. package/skills/adversarial-performance/references/multi-pass-performance-protocol.md +398 -0
  20. package/skills/adversarial-planner/SKILL.md +23 -54
  21. package/skills/adversarial-planner/references/copilot-integration.md +25 -40
  22. package/skills/adversarial-planner/references/copilot-usage.md +16 -0
  23. package/skills/adversarial-planner/references/multi-pass-protocol.md +4 -0
  24. package/skills/adversarial-security/SKILL.md +149 -0
  25. package/skills/adversarial-security/references/adversarial-base-protocol.md +44 -0
  26. package/skills/adversarial-security/references/audit-categories.md +723 -0
  27. package/skills/adversarial-security/references/copilot-security-prompts.md +142 -0
  28. package/skills/adversarial-security/references/copilot-usage.md +16 -0
  29. package/skills/adversarial-security/references/feedback-loop.md +206 -0
  30. package/skills/adversarial-security/references/journal-opt-out.md +7 -0
  31. package/skills/adversarial-security/references/multi-pass-security-protocol.md +403 -0
  32. package/skills/adversarial-skill-audit/SKILL.md +118 -0
  33. package/skills/adversarial-skill-audit/references/audit-categories.md +308 -0
  34. package/skills/adversarial-skill-audit/references/copilot-skill-prompts.md +68 -0
  35. package/skills/adversarial-skill-audit/references/copilot-usage.md +16 -0
  36. package/skills/adversarial-skill-audit/references/feedback-loop.md +155 -0
  37. package/skills/adversarial-skill-audit/references/multi-pass-skill-protocol.md +367 -0
  38. package/skills/adversarial-skill-audit/scripts/check-skills.ps1 +48 -0
  39. package/skills/adversarial-skill-audit/scripts/run-copilot.ps1 +52 -0
  40. package/skills/adversarial-workflow-audit/SKILL.md +82 -0
  41. package/skills/adversarial-workflow-audit/references/audit-categories.md +28 -0
  42. package/skills/adversarial-workflow-audit/references/copilot-usage.md +16 -0
  43. package/skills/adversarial-workflow-audit/scripts/check-workflows.ps1 +24 -0
  44. package/skills/agents-sdk/SKILL.md +220 -0
  45. package/skills/agents-sdk/references/callable.md +92 -0
  46. package/skills/agents-sdk/references/codemode.md +209 -0
  47. package/skills/agents-sdk/references/email.md +144 -0
  48. package/skills/agents-sdk/references/mcp/SKILL.md +65 -0
  49. package/skills/agents-sdk/references/mcp/code-mode-reference.md +245 -0
  50. package/skills/agents-sdk/references/mcp/oauth-reference.md +359 -0
  51. package/skills/agents-sdk/references/mcp/references/architecture-reference.md +208 -0
  52. package/skills/agents-sdk/references/mcp/references/cloudflare-quickstart.md +156 -0
  53. package/skills/agents-sdk/references/mcp/references/error-handling.md +343 -0
  54. package/skills/agents-sdk/references/mcp/references/http-security.md +164 -0
  55. package/skills/agents-sdk/references/mcp/references/implementation-guide.md +507 -0
  56. package/skills/agents-sdk/references/mcp/references/testing-reference.md +171 -0
  57. package/skills/agents-sdk/references/mcp.md +157 -0
  58. package/skills/agents-sdk/references/state-scheduling.md +164 -0
  59. package/skills/agents-sdk/references/streaming-chat.md +168 -0
  60. package/skills/agents-sdk/references/workflows.md +136 -0
  61. package/skills/auth-identity/SKILL.md +48 -0
  62. package/skills/autonomous-dev/SKILL.md +46 -23
  63. package/skills/autonomous-dev/references/workflow_orchestration.md +22 -0
  64. package/skills/aws/SKILL.md +39 -0
  65. package/skills/azure/SKILL.md +38 -0
  66. package/skills/bin/sync.js +7 -1
  67. package/skills/biome/SKILL.md +59 -0
  68. package/skills/bun/SKILL.md +8 -2
  69. package/skills/cloudflare/SKILL.md +37 -0
  70. package/skills/cloudflare/references/agents-sdk/README.md +95 -0
  71. package/skills/cloudflare/references/agents-sdk/api.md +195 -0
  72. package/skills/cloudflare/references/agents-sdk/configuration.md +178 -0
  73. package/skills/cloudflare/references/agents-sdk/gotchas.md +173 -0
  74. package/skills/cloudflare/references/agents-sdk/patterns.md +215 -0
  75. package/skills/cloudflare/references/ai-gateway/README.md +176 -0
  76. package/skills/cloudflare/references/ai-gateway/configuration.md +117 -0
  77. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +88 -0
  78. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  79. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +110 -0
  80. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +90 -0
  81. package/skills/cloudflare/references/ai-search/README.md +145 -0
  82. package/skills/cloudflare/references/ai-search/api.md +87 -0
  83. package/skills/cloudflare/references/ai-search/configuration.md +91 -0
  84. package/skills/cloudflare/references/ai-search/gotchas.md +92 -0
  85. package/skills/cloudflare/references/ai-search/patterns.md +87 -0
  86. package/skills/cloudflare/references/analytics-engine/README.md +96 -0
  87. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  88. package/skills/cloudflare/references/analytics-engine/configuration.md +107 -0
  89. package/skills/cloudflare/references/analytics-engine/gotchas.md +87 -0
  90. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  91. package/skills/cloudflare/references/api/README.md +66 -0
  92. package/skills/cloudflare/references/api/api.md +205 -0
  93. package/skills/cloudflare/references/api/configuration.md +158 -0
  94. package/skills/cloudflare/references/api/gotchas.md +231 -0
  95. package/skills/cloudflare/references/api/patterns.md +208 -0
  96. package/skills/cloudflare/references/api-shield/README.md +44 -0
  97. package/skills/cloudflare/references/api-shield/api.md +153 -0
  98. package/skills/cloudflare/references/api-shield/configuration.md +210 -0
  99. package/skills/cloudflare/references/api-shield/gotchas.md +132 -0
  100. package/skills/cloudflare/references/api-shield/patterns.md +185 -0
  101. package/skills/cloudflare/references/argo-smart-routing/README.md +96 -0
  102. package/skills/cloudflare/references/argo-smart-routing/api.md +253 -0
  103. package/skills/cloudflare/references/argo-smart-routing/configuration.md +205 -0
  104. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +115 -0
  105. package/skills/cloudflare/references/argo-smart-routing/patterns.md +107 -0
  106. package/skills/cloudflare/references/bindings/README.md +127 -0
  107. package/skills/cloudflare/references/bindings/api.md +214 -0
  108. package/skills/cloudflare/references/bindings/configuration.md +200 -0
  109. package/skills/cloudflare/references/bindings/gotchas.md +210 -0
  110. package/skills/cloudflare/references/bindings/patterns.md +205 -0
  111. package/skills/cloudflare/references/bot-management/README.md +95 -0
  112. package/skills/cloudflare/references/bot-management/api.md +175 -0
  113. package/skills/cloudflare/references/bot-management/configuration.md +175 -0
  114. package/skills/cloudflare/references/bot-management/gotchas.md +116 -0
  115. package/skills/cloudflare/references/bot-management/patterns.md +181 -0
  116. package/skills/cloudflare/references/browser-rendering/README.md +84 -0
  117. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  118. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  119. package/skills/cloudflare/references/browser-rendering/gotchas.md +91 -0
  120. package/skills/cloudflare/references/browser-rendering/patterns.md +93 -0
  121. package/skills/cloudflare/references/c3/README.md +111 -0
  122. package/skills/cloudflare/references/c3/api.md +71 -0
  123. package/skills/cloudflare/references/c3/configuration.md +85 -0
  124. package/skills/cloudflare/references/c3/gotchas.md +97 -0
  125. package/skills/cloudflare/references/c3/patterns.md +84 -0
  126. package/skills/cloudflare/references/cache-reserve/README.md +150 -0
  127. package/skills/cloudflare/references/cache-reserve/api.md +184 -0
  128. package/skills/cloudflare/references/cache-reserve/configuration.md +170 -0
  129. package/skills/cloudflare/references/cache-reserve/gotchas.md +136 -0
  130. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  131. package/skills/cloudflare/references/containers/README.md +87 -0
  132. package/skills/cloudflare/references/containers/api.md +197 -0
  133. package/skills/cloudflare/references/containers/configuration.md +191 -0
  134. package/skills/cloudflare/references/containers/gotchas.md +182 -0
  135. package/skills/cloudflare/references/containers/patterns.md +204 -0
  136. package/skills/cloudflare/references/cron-triggers/README.md +101 -0
  137. package/skills/cloudflare/references/cron-triggers/api.md +224 -0
  138. package/skills/cloudflare/references/cron-triggers/configuration.md +190 -0
  139. package/skills/cloudflare/references/cron-triggers/gotchas.md +207 -0
  140. package/skills/cloudflare/references/cron-triggers/patterns.md +274 -0
  141. package/skills/cloudflare/references/d1/README.md +137 -0
  142. package/skills/cloudflare/references/d1/api.md +213 -0
  143. package/skills/cloudflare/references/d1/configuration.md +198 -0
  144. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  145. package/skills/cloudflare/references/d1/patterns.md +240 -0
  146. package/skills/cloudflare/references/ddos/README.md +42 -0
  147. package/skills/cloudflare/references/ddos/api.md +158 -0
  148. package/skills/cloudflare/references/ddos/configuration.md +94 -0
  149. package/skills/cloudflare/references/ddos/gotchas.md +114 -0
  150. package/skills/cloudflare/references/ddos/patterns.md +220 -0
  151. package/skills/cloudflare/references/decision-trees.md +95 -0
  152. package/skills/cloudflare/references/do-storage/README.md +79 -0
  153. package/skills/cloudflare/references/do-storage/api.md +107 -0
  154. package/skills/cloudflare/references/do-storage/configuration.md +114 -0
  155. package/skills/cloudflare/references/do-storage/gotchas.md +153 -0
  156. package/skills/cloudflare/references/do-storage/patterns.md +210 -0
  157. package/skills/cloudflare/references/do-storage/testing.md +186 -0
  158. package/skills/cloudflare/references/durable-objects/README.md +194 -0
  159. package/skills/cloudflare/references/durable-objects/api.md +205 -0
  160. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  161. package/skills/cloudflare/references/durable-objects/gotchas.md +200 -0
  162. package/skills/cloudflare/references/durable-objects/patterns.md +205 -0
  163. package/skills/cloudflare/references/email-routing/README.md +89 -0
  164. package/skills/cloudflare/references/email-routing/api.md +192 -0
  165. package/skills/cloudflare/references/email-routing/configuration.md +187 -0
  166. package/skills/cloudflare/references/email-routing/gotchas.md +203 -0
  167. package/skills/cloudflare/references/email-routing/patterns.md +241 -0
  168. package/skills/cloudflare/references/email-workers/README.md +153 -0
  169. package/skills/cloudflare/references/email-workers/api.md +227 -0
  170. package/skills/cloudflare/references/email-workers/configuration.md +115 -0
  171. package/skills/cloudflare/references/email-workers/gotchas.md +133 -0
  172. package/skills/cloudflare/references/email-workers/patterns.md +108 -0
  173. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  174. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  175. package/skills/cloudflare/references/graphql-api/configuration.md +151 -0
  176. package/skills/cloudflare/references/graphql-api/gotchas.md +111 -0
  177. package/skills/cloudflare/references/graphql-api/patterns.md +276 -0
  178. package/skills/cloudflare/references/hyperdrive/README.md +84 -0
  179. package/skills/cloudflare/references/hyperdrive/api.md +149 -0
  180. package/skills/cloudflare/references/hyperdrive/configuration.md +166 -0
  181. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  182. package/skills/cloudflare/references/hyperdrive/patterns.md +203 -0
  183. package/skills/cloudflare/references/images/README.md +65 -0
  184. package/skills/cloudflare/references/images/api.md +101 -0
  185. package/skills/cloudflare/references/images/configuration.md +206 -0
  186. package/skills/cloudflare/references/images/gotchas.md +106 -0
  187. package/skills/cloudflare/references/images/patterns.md +126 -0
  188. package/skills/cloudflare/references/kv/README.md +90 -0
  189. package/skills/cloudflare/references/kv/api.md +163 -0
  190. package/skills/cloudflare/references/kv/configuration.md +148 -0
  191. package/skills/cloudflare/references/kv/gotchas.md +133 -0
  192. package/skills/cloudflare/references/kv/patterns.md +195 -0
  193. package/skills/cloudflare/references/miniflare/README.md +113 -0
  194. package/skills/cloudflare/references/miniflare/api.md +204 -0
  195. package/skills/cloudflare/references/miniflare/configuration.md +174 -0
  196. package/skills/cloudflare/references/miniflare/gotchas.md +179 -0
  197. package/skills/cloudflare/references/miniflare/patterns.md +187 -0
  198. package/skills/cloudflare/references/network-interconnect/README.md +104 -0
  199. package/skills/cloudflare/references/network-interconnect/api.md +220 -0
  200. package/skills/cloudflare/references/network-interconnect/configuration.md +123 -0
  201. package/skills/cloudflare/references/network-interconnect/gotchas.md +175 -0
  202. package/skills/cloudflare/references/network-interconnect/patterns.md +174 -0
  203. package/skills/cloudflare/references/observability/README.md +93 -0
  204. package/skills/cloudflare/references/observability/api.md +168 -0
  205. package/skills/cloudflare/references/observability/configuration.md +178 -0
  206. package/skills/cloudflare/references/observability/gotchas.md +125 -0
  207. package/skills/cloudflare/references/observability/patterns.md +105 -0
  208. package/skills/cloudflare/references/pages/README.md +92 -0
  209. package/skills/cloudflare/references/pages/api.md +205 -0
  210. package/skills/cloudflare/references/pages/configuration.md +216 -0
  211. package/skills/cloudflare/references/pages/gotchas.md +218 -0
  212. package/skills/cloudflare/references/pages/patterns.md +215 -0
  213. package/skills/cloudflare/references/pages-functions/README.md +104 -0
  214. package/skills/cloudflare/references/pages-functions/api.md +159 -0
  215. package/skills/cloudflare/references/pages-functions/configuration.md +130 -0
  216. package/skills/cloudflare/references/pages-functions/gotchas.md +102 -0
  217. package/skills/cloudflare/references/pages-functions/patterns.md +148 -0
  218. package/skills/cloudflare/references/pipelines/README.md +109 -0
  219. package/skills/cloudflare/references/pipelines/api.md +214 -0
  220. package/skills/cloudflare/references/pipelines/configuration.md +98 -0
  221. package/skills/cloudflare/references/pipelines/gotchas.md +84 -0
  222. package/skills/cloudflare/references/pipelines/patterns.md +87 -0
  223. package/skills/cloudflare/references/product-index.md +112 -0
  224. package/skills/cloudflare/references/pulumi/README.md +113 -0
  225. package/skills/cloudflare/references/pulumi/api.md +230 -0
  226. package/skills/cloudflare/references/pulumi/configuration.md +213 -0
  227. package/skills/cloudflare/references/pulumi/gotchas.md +205 -0
  228. package/skills/cloudflare/references/pulumi/patterns.md +260 -0
  229. package/skills/cloudflare/references/queues/README.md +99 -0
  230. package/skills/cloudflare/references/queues/api.md +211 -0
  231. package/skills/cloudflare/references/queues/configuration.md +151 -0
  232. package/skills/cloudflare/references/queues/gotchas.md +210 -0
  233. package/skills/cloudflare/references/queues/patterns.md +220 -0
  234. package/skills/cloudflare/references/r2/README.md +97 -0
  235. package/skills/cloudflare/references/r2/api.md +235 -0
  236. package/skills/cloudflare/references/r2/configuration.md +176 -0
  237. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  238. package/skills/cloudflare/references/r2/patterns.md +203 -0
  239. package/skills/cloudflare/references/r2-data-catalog/README.md +157 -0
  240. package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
  241. package/skills/cloudflare/references/r2-data-catalog/configuration.md +205 -0
  242. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
  243. package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
  244. package/skills/cloudflare/references/r2-sql/README.md +138 -0
  245. package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
  246. package/skills/cloudflare/references/r2-sql/api.md +159 -0
  247. package/skills/cloudflare/references/r2-sql/configuration.md +152 -0
  248. package/skills/cloudflare/references/r2-sql/gotchas.md +228 -0
  249. package/skills/cloudflare/references/r2-sql/patterns.md +230 -0
  250. package/skills/cloudflare/references/realtime-sfu/README.md +66 -0
  251. package/skills/cloudflare/references/realtime-sfu/api.md +164 -0
  252. package/skills/cloudflare/references/realtime-sfu/configuration.md +141 -0
  253. package/skills/cloudflare/references/realtime-sfu/gotchas.md +138 -0
  254. package/skills/cloudflare/references/realtime-sfu/patterns.md +187 -0
  255. package/skills/cloudflare/references/realtimekit/README.md +118 -0
  256. package/skills/cloudflare/references/realtimekit/api.md +234 -0
  257. package/skills/cloudflare/references/realtimekit/configuration.md +226 -0
  258. package/skills/cloudflare/references/realtimekit/gotchas.md +206 -0
  259. package/skills/cloudflare/references/realtimekit/patterns.md +240 -0
  260. package/skills/cloudflare/references/sandbox/README.md +104 -0
  261. package/skills/cloudflare/references/sandbox/api.md +200 -0
  262. package/skills/cloudflare/references/sandbox/configuration.md +154 -0
  263. package/skills/cloudflare/references/sandbox/gotchas.md +201 -0
  264. package/skills/cloudflare/references/sandbox/patterns.md +195 -0
  265. package/skills/cloudflare/references/secrets-store/README.md +77 -0
  266. package/skills/cloudflare/references/secrets-store/api.md +199 -0
  267. package/skills/cloudflare/references/secrets-store/configuration.md +187 -0
  268. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  269. package/skills/cloudflare/references/secrets-store/patterns.md +218 -0
  270. package/skills/cloudflare/references/smart-placement/README.md +143 -0
  271. package/skills/cloudflare/references/smart-placement/api.md +192 -0
  272. package/skills/cloudflare/references/smart-placement/configuration.md +202 -0
  273. package/skills/cloudflare/references/smart-placement/gotchas.md +180 -0
  274. package/skills/cloudflare/references/smart-placement/patterns.md +190 -0
  275. package/skills/cloudflare/references/snippets/README.md +74 -0
  276. package/skills/cloudflare/references/snippets/api.md +214 -0
  277. package/skills/cloudflare/references/snippets/configuration.md +239 -0
  278. package/skills/cloudflare/references/snippets/gotchas.md +104 -0
  279. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  280. package/skills/cloudflare/references/spectrum/README.md +52 -0
  281. package/skills/cloudflare/references/spectrum/api.md +184 -0
  282. package/skills/cloudflare/references/spectrum/configuration.md +203 -0
  283. package/skills/cloudflare/references/spectrum/gotchas.md +155 -0
  284. package/skills/cloudflare/references/spectrum/patterns.md +206 -0
  285. package/skills/cloudflare/references/static-assets/README.md +65 -0
  286. package/skills/cloudflare/references/static-assets/api.md +201 -0
  287. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  288. package/skills/cloudflare/references/static-assets/gotchas.md +164 -0
  289. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  290. package/skills/cloudflare/references/stream/README.md +123 -0
  291. package/skills/cloudflare/references/stream/api-live.md +202 -0
  292. package/skills/cloudflare/references/stream/api.md +206 -0
  293. package/skills/cloudflare/references/stream/configuration.md +151 -0
  294. package/skills/cloudflare/references/stream/gotchas.md +139 -0
  295. package/skills/cloudflare/references/stream/patterns.md +217 -0
  296. package/skills/cloudflare/references/tail-workers/README.md +92 -0
  297. package/skills/cloudflare/references/tail-workers/api.md +203 -0
  298. package/skills/cloudflare/references/tail-workers/configuration.md +178 -0
  299. package/skills/cloudflare/references/tail-workers/gotchas.md +206 -0
  300. package/skills/cloudflare/references/tail-workers/patterns.md +190 -0
  301. package/skills/cloudflare/references/terraform/README.md +100 -0
  302. package/skills/cloudflare/references/terraform/api.md +178 -0
  303. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  304. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  305. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  306. package/skills/cloudflare/references/tunnel/README.md +137 -0
  307. package/skills/cloudflare/references/tunnel/api.md +205 -0
  308. package/skills/cloudflare/references/tunnel/configuration.md +163 -0
  309. package/skills/cloudflare/references/tunnel/gotchas.md +159 -0
  310. package/skills/cloudflare/references/tunnel/networking.md +174 -0
  311. package/skills/cloudflare/references/tunnel/patterns.md +199 -0
  312. package/skills/cloudflare/references/turn/README.md +86 -0
  313. package/skills/cloudflare/references/turn/api.md +236 -0
  314. package/skills/cloudflare/references/turn/configuration.md +181 -0
  315. package/skills/cloudflare/references/turn/gotchas.md +236 -0
  316. package/skills/cloudflare/references/turn/patterns.md +228 -0
  317. package/skills/cloudflare/references/turnstile/README.md +102 -0
  318. package/skills/cloudflare/references/turnstile/api.md +253 -0
  319. package/skills/cloudflare/references/turnstile/configuration.md +242 -0
  320. package/skills/cloudflare/references/turnstile/gotchas.md +253 -0
  321. package/skills/cloudflare/references/turnstile/patterns.md +195 -0
  322. package/skills/cloudflare/references/vectorize/README.md +133 -0
  323. package/skills/cloudflare/references/vectorize/api.md +89 -0
  324. package/skills/cloudflare/references/vectorize/configuration.md +91 -0
  325. package/skills/cloudflare/references/vectorize/gotchas.md +83 -0
  326. package/skills/cloudflare/references/vectorize/patterns.md +92 -0
  327. package/skills/cloudflare/references/waf/README.md +125 -0
  328. package/skills/cloudflare/references/waf/api.md +203 -0
  329. package/skills/cloudflare/references/waf/configuration.md +215 -0
  330. package/skills/cloudflare/references/waf/gotchas.md +208 -0
  331. package/skills/cloudflare/references/waf/patterns.md +236 -0
  332. package/skills/cloudflare/references/web-analytics/README.md +149 -0
  333. package/skills/cloudflare/references/web-analytics/configuration.md +81 -0
  334. package/skills/cloudflare/references/web-analytics/gotchas.md +86 -0
  335. package/skills/cloudflare/references/web-analytics/integration.md +63 -0
  336. package/skills/cloudflare/references/web-analytics/patterns.md +98 -0
  337. package/skills/cloudflare/references/workerd/README.md +85 -0
  338. package/skills/cloudflare/references/workerd/api.md +219 -0
  339. package/skills/cloudflare/references/workerd/configuration.md +200 -0
  340. package/skills/cloudflare/references/workerd/gotchas.md +151 -0
  341. package/skills/cloudflare/references/workerd/patterns.md +205 -0
  342. package/skills/cloudflare/references/workers/README.md +110 -0
  343. package/skills/cloudflare/references/workers/api.md +197 -0
  344. package/skills/cloudflare/references/workers/configuration.md +184 -0
  345. package/skills/cloudflare/references/workers/frameworks.md +200 -0
  346. package/skills/cloudflare/references/workers/gotchas.md +145 -0
  347. package/skills/cloudflare/references/workers/patterns.md +220 -0
  348. package/skills/cloudflare/references/workers-ai/README.md +206 -0
  349. package/skills/cloudflare/references/workers-ai/api.md +115 -0
  350. package/skills/cloudflare/references/workers-ai/configuration.md +98 -0
  351. package/skills/cloudflare/references/workers-ai/gotchas.md +130 -0
  352. package/skills/cloudflare/references/workers-ai/patterns.md +122 -0
  353. package/skills/cloudflare/references/workers-for-platforms/README.md +95 -0
  354. package/skills/cloudflare/references/workers-for-platforms/api.md +212 -0
  355. package/skills/cloudflare/references/workers-for-platforms/configuration.md +178 -0
  356. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  357. package/skills/cloudflare/references/workers-for-platforms/patterns.md +210 -0
  358. package/skills/cloudflare/references/workers-playground/README.md +131 -0
  359. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  360. package/skills/cloudflare/references/workers-playground/configuration.md +169 -0
  361. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  362. package/skills/cloudflare/references/workers-playground/patterns.md +134 -0
  363. package/skills/cloudflare/references/workers-vpc/README.md +130 -0
  364. package/skills/cloudflare/references/workers-vpc/api.md +196 -0
  365. package/skills/cloudflare/references/workers-vpc/configuration.md +151 -0
  366. package/skills/cloudflare/references/workers-vpc/gotchas.md +171 -0
  367. package/skills/cloudflare/references/workers-vpc/patterns.md +235 -0
  368. package/skills/cloudflare/references/workflows/README.md +72 -0
  369. package/skills/cloudflare/references/workflows/api.md +237 -0
  370. package/skills/cloudflare/references/workflows/configuration.md +158 -0
  371. package/skills/cloudflare/references/workflows/gotchas.md +97 -0
  372. package/skills/cloudflare/references/workflows/patterns.md +245 -0
  373. package/skills/cloudflare/references/wrangler/README.md +143 -0
  374. package/skills/cloudflare/references/wrangler/api.md +188 -0
  375. package/skills/cloudflare/references/wrangler/configuration.md +198 -0
  376. package/skills/cloudflare/references/wrangler/gotchas.md +212 -0
  377. package/skills/cloudflare/references/wrangler/patterns.md +211 -0
  378. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
  379. package/skills/cloudflare/references/zaraz/README.md +114 -0
  380. package/skills/cloudflare/references/zaraz/api.md +118 -0
  381. package/skills/cloudflare/references/zaraz/configuration.md +94 -0
  382. package/skills/cloudflare/references/zaraz/gotchas.md +88 -0
  383. package/skills/cloudflare/references/zaraz/patterns.md +77 -0
  384. package/skills/docker/SKILL.md +7 -101
  385. package/skills/docker/references/advanced-examples.md +71 -0
  386. package/skills/docker/references/templates.md +34 -0
  387. package/skills/docs-marketer/SKILL.md +178 -0
  388. package/skills/docs-marketer/references/audit-categories.md +328 -0
  389. package/skills/docs-marketer/references/copilot-docs-prompts.md +88 -0
  390. package/skills/docs-marketer/references/copilot-usage.md +16 -0
  391. package/skills/docs-marketer/references/feedback-loop.md +155 -0
  392. package/skills/docs-marketer/references/multi-pass-docs-protocol.md +410 -0
  393. package/skills/drizzle-orm/SKILL.md +82 -0
  394. package/skills/durable-objects/SKILL.md +167 -0
  395. package/skills/durable-objects/references/advanced_features.md +29 -0
  396. package/skills/durable-objects/references/rules.md +300 -0
  397. package/skills/durable-objects/references/testing.md +261 -0
  398. package/skills/durable-objects/references/workers.md +336 -0
  399. package/skills/gcp/SKILL.md +37 -0
  400. package/skills/github-actions/SKILL.md +5 -58
  401. package/skills/github-actions/references/templates.md +65 -0
  402. package/skills/github-commander/SKILL.md +13 -21
  403. package/skills/github-commander/workflows/copilot-audit.md +12 -12
  404. package/skills/github-copilot-cli/SKILL.md +21 -26
  405. package/skills/github-repo-setup/SKILL.md +136 -0
  406. package/skills/github-repo-setup/references/community-standards.md +136 -0
  407. package/skills/github-repo-setup/references/github-automation.md +490 -0
  408. package/skills/github-repo-setup/references/inline-templates.md +205 -0
  409. package/skills/github-repo-setup/references/project-config.md +320 -0
  410. package/skills/gitlab/SKILL.md +7 -2
  411. package/skills/gitlab/package-lock.json +389 -389
  412. package/skills/golang/SKILL.md +8 -1
  413. package/skills/graphql/SKILL.md +30 -0
  414. package/skills/hono/SKILL.md +82 -0
  415. package/skills/journal-optimizer/SKILL.md +206 -0
  416. package/skills/journal-optimizer/references/optimizer-scripts.md +169 -0
  417. package/skills/llm-app-engineering/SKILL.md +18 -0
  418. package/skills/monorepo/SKILL.md +56 -0
  419. package/skills/multi-agent-orchestration/SKILL.md +14 -0
  420. package/skills/mysql/SKILL.md +6 -2
  421. package/skills/next-best-practices/SKILL.md +86 -0
  422. package/skills/next-best-practices/references/cache-components-examples.md +234 -0
  423. package/skills/next-best-practices/references/cache-components.md +210 -0
  424. package/skills/next-best-practices/references/upgrade-decision-tree.md +33 -0
  425. package/skills/next-best-practices/references/upgrade.md +43 -0
  426. package/skills/next-cache-components/SKILL.md +441 -0
  427. package/skills/next-upgrade/SKILL.md +43 -0
  428. package/skills/next-upgrade/references/decision-tree.md +33 -0
  429. package/skills/nodejs/SKILL.md +46 -0
  430. package/skills/opentelemetry/SKILL.md +62 -0
  431. package/skills/package.json +39 -4
  432. package/skills/playwright-standard/SKILL.md +6 -11
  433. package/skills/playwright-standard/references/locators.md +7 -0
  434. package/skills/postgres/SKILL.md +6 -1
  435. package/skills/python/SKILL.md +8 -70
  436. package/skills/python/references/advanced-patterns.md +37 -0
  437. package/skills/python/references/config-templates.md +48 -0
  438. package/skills/rag-pipelines/SKILL.md +14 -0
  439. package/skills/redis/SKILL.md +31 -0
  440. package/skills/render/SKILL.md +35 -0
  441. package/skills/rust/SKILL.md +15 -25
  442. package/skills/rust/references/borrow-checker.md +13 -0
  443. package/skills/rust/references/ecosystem.md +11 -0
  444. package/skills/sandbox-sdk/SKILL.md +186 -0
  445. package/skills/sandbox-sdk/references/api-quick-ref.md +113 -0
  446. package/skills/sandbox-sdk/references/examples.md +52 -0
  447. package/skills/shadcn-ui/SKILL.md +22 -57
  448. package/skills/skill-builder/SKILL.md +23 -424
  449. package/skills/skill-builder/references/tutorial.md +457 -0
  450. package/skills/sqlite/SKILL.md +16 -5
  451. package/skills/table.md +59 -0
  452. package/skills/tailwind-css/SKILL.md +11 -60
  453. package/skills/tailwind-css/references/component-patterns.md +52 -0
  454. package/skills/trpc/SKILL.md +56 -0
  455. package/skills/typescript/SKILL.md +30 -433
  456. package/skills/typescript/references/tutorial.md +453 -0
  457. package/skills/vercel-ai-sdk/SKILL.md +48 -0
  458. package/skills/vitest-standard/SKILL.md +5 -11
  459. package/skills/vitest-standard/references/assertions.md +11 -0
  460. package/skills/web-perf/SKILL.md +207 -0
  461. package/skills/workers-best-practices/SKILL.md +120 -0
  462. package/skills/workers-best-practices/references/anti-patterns.md +18 -0
  463. package/skills/workers-best-practices/references/review.md +174 -0
  464. package/skills/workers-best-practices/references/rules.md +485 -0
  465. package/skills/wrangler/SKILL.md +43 -0
  466. package/skills/wrangler/references/cli-commands.md +861 -0
  467. package/skills/zod/SKILL.md +48 -0
  468. package/dist/tools-P4VGG4FH.js +0 -1
  469. package/skills/react-best-practices/AGENTS.md +0 -2883
  470. package/skills/react-best-practices/SKILL.md +0 -138
  471. /package/skills/{react-best-practices → next-best-practices}/README.md +0 -0
  472. /package/skills/{react-best-practices → next-best-practices}/metadata.json +0 -0
  473. /package/skills/{react-best-practices → next-best-practices}/rules/_sections.md +0 -0
  474. /package/skills/{react-best-practices → next-best-practices}/rules/_template.md +0 -0
  475. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-event-handler-refs.md +0 -0
  476. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-init-once.md +0 -0
  477. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-use-latest.md +0 -0
  478. /package/skills/{react-best-practices → next-best-practices}/rules/async-api-routes.md +0 -0
  479. /package/skills/{react-best-practices → next-best-practices}/rules/async-defer-await.md +0 -0
  480. /package/skills/{react-best-practices → next-best-practices}/rules/async-dependencies.md +0 -0
  481. /package/skills/{react-best-practices → next-best-practices}/rules/async-parallel.md +0 -0
  482. /package/skills/{react-best-practices → next-best-practices}/rules/async-suspense-boundaries.md +0 -0
  483. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-barrel-imports.md +0 -0
  484. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-conditional.md +0 -0
  485. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-defer-third-party.md +0 -0
  486. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-dynamic-imports.md +0 -0
  487. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-preload.md +0 -0
  488. /package/skills/{react-best-practices → next-best-practices}/rules/client-event-listeners.md +0 -0
  489. /package/skills/{react-best-practices → next-best-practices}/rules/client-localstorage-schema.md +0 -0
  490. /package/skills/{react-best-practices → next-best-practices}/rules/client-passive-event-listeners.md +0 -0
  491. /package/skills/{react-best-practices → next-best-practices}/rules/client-swr-dedup.md +0 -0
  492. /package/skills/{react-best-practices → next-best-practices}/rules/js-batch-dom-css.md +0 -0
  493. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-function-results.md +0 -0
  494. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-property-access.md +0 -0
  495. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-storage.md +0 -0
  496. /package/skills/{react-best-practices → next-best-practices}/rules/js-combine-iterations.md +0 -0
  497. /package/skills/{react-best-practices → next-best-practices}/rules/js-early-exit.md +0 -0
  498. /package/skills/{react-best-practices → next-best-practices}/rules/js-hoist-regexp.md +0 -0
  499. /package/skills/{react-best-practices → next-best-practices}/rules/js-index-maps.md +0 -0
  500. /package/skills/{react-best-practices → next-best-practices}/rules/js-length-check-first.md +0 -0
  501. /package/skills/{react-best-practices → next-best-practices}/rules/js-min-max-loop.md +0 -0
  502. /package/skills/{react-best-practices → next-best-practices}/rules/js-set-map-lookups.md +0 -0
  503. /package/skills/{react-best-practices → next-best-practices}/rules/js-tosorted-immutable.md +0 -0
  504. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-activity.md +0 -0
  505. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
  506. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-conditional-render.md +0 -0
  507. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-content-visibility.md +0 -0
  508. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hoist-jsx.md +0 -0
  509. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
  510. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-suppress-warning.md +0 -0
  511. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-svg-precision.md +0 -0
  512. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-usetransition-loading.md +0 -0
  513. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-defer-reads.md +0 -0
  514. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-dependencies.md +0 -0
  515. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state-no-effect.md +0 -0
  516. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state.md +0 -0
  517. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-functional-setstate.md +0 -0
  518. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-lazy-state-init.md +0 -0
  519. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo-with-default-value.md +0 -0
  520. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo.md +0 -0
  521. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-move-effect-to-event.md +0 -0
  522. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-simple-expression-in-memo.md +0 -0
  523. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-transitions.md +0 -0
  524. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-use-ref-transient-values.md +0 -0
  525. /package/skills/{react-best-practices → next-best-practices}/rules/server-after-nonblocking.md +0 -0
  526. /package/skills/{react-best-practices → next-best-practices}/rules/server-auth-actions.md +0 -0
  527. /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-lru.md +0 -0
  528. /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-react.md +0 -0
  529. /package/skills/{react-best-practices → next-best-practices}/rules/server-dedup-props.md +0 -0
  530. /package/skills/{react-best-practices → next-best-practices}/rules/server-parallel-fetching.md +0 -0
  531. /package/skills/{react-best-practices → next-best-practices}/rules/server-serialization.md +0 -0
@@ -0,0 +1,202 @@
1
+ # Smart Placement Configuration
2
+
3
+ ## wrangler.jsonc Setup
4
+
5
+ ```jsonc
6
+ {
7
+ "$schema": "./node_modules/wrangler/config-schema.json",
8
+ "placement": {
9
+ "mode": "smart",
10
+ },
11
+ }
12
+ ```
13
+
14
+ ## Placement Mode Values
15
+
16
+ | Mode | Behavior |
17
+ | ------------- | ------------------------------------------------------------------------- |
18
+ | `"smart"` | Enable Smart Placement - automatic optimization based on traffic analysis |
19
+ | `"off"` | Explicitly disable Smart Placement - always run at edge closest to user |
20
+ | Not specified | Default behavior - run at edge closest to user (same as `"off"`) |
21
+
22
+ **Note:** Smart Placement vs Explicit Placement are separate features. Smart Placement (`mode: "smart"`) uses automatic analysis. For manual placement control, see explicit placement options (`region`, `host`, `hostname` fields - not covered in this reference).
23
+
24
+ ## Frontend + Backend Split Configuration
25
+
26
+ ### Frontend Worker (No Smart Placement)
27
+
28
+ ```jsonc
29
+ // frontend-worker/wrangler.jsonc
30
+ {
31
+ "name": "frontend",
32
+ "main": "frontend-worker.ts",
33
+ // No "placement" - runs at edge
34
+ "services": [
35
+ {
36
+ "binding": "BACKEND",
37
+ "service": "backend-api",
38
+ },
39
+ ],
40
+ }
41
+ ```
42
+
43
+ ### Backend Worker (Smart Placement Enabled)
44
+
45
+ ```jsonc
46
+ // backend-api/wrangler.jsonc
47
+ {
48
+ "name": "backend-api",
49
+ "main": "backend-worker.ts",
50
+ "placement": {
51
+ "mode": "smart",
52
+ },
53
+ "d1_databases": [
54
+ {
55
+ "binding": "DATABASE",
56
+ "database_id": "xxx",
57
+ },
58
+ ],
59
+ }
60
+ ```
61
+
62
+ ## Requirements & Limitations
63
+
64
+ ### Requirements
65
+
66
+ - **Wrangler version:** 2.20.0+
67
+ - **Analysis time:** Up to 15 minutes
68
+ - **Traffic requirements:** Consistent multi-location traffic
69
+ - **Workers plan:** All plans (Free, Paid, Enterprise)
70
+
71
+ ### What Smart Placement Affects
72
+
73
+ **CRITICAL LIMITATION - Smart Placement ONLY Affects `fetch` Handlers:**
74
+
75
+ Smart Placement is fundamentally limited to Workers with default `fetch` handlers. This is a key architectural constraint.
76
+
77
+ - ✅ **Affects:** `fetch` event handlers ONLY (the default export's fetch method)
78
+ - ❌ **Does NOT affect:**
79
+ - RPC methods (Service Bindings with `WorkerEntrypoint` - see example below)
80
+ - Named entrypoints (exports other than `default`)
81
+ - Workers without `fetch` handlers
82
+ - Queue consumers, scheduled handlers, or other event types
83
+
84
+ **Example - Smart Placement ONLY affects `fetch`:**
85
+
86
+ ```typescript
87
+ // ✅ Smart Placement affects this:
88
+ export default {
89
+ async fetch(request: Request, env: Env): Promise<Response> {
90
+ // This runs close to backend when Smart Placement enabled
91
+ const data = await env.DATABASE.prepare('SELECT * FROM users').all()
92
+ return Response.json(data)
93
+ },
94
+ }
95
+
96
+ // ❌ Smart Placement DOES NOT affect these:
97
+ export class MyRPC extends WorkerEntrypoint {
98
+ async myMethod() {
99
+ // This ALWAYS runs at edge, Smart Placement has NO EFFECT
100
+ const data = await this.env.DATABASE.prepare('SELECT * FROM users').all()
101
+ return data
102
+ }
103
+ }
104
+
105
+ export async function scheduled(event: ScheduledEvent, env: Env) {
106
+ // NOT affected by Smart Placement
107
+ }
108
+ ```
109
+
110
+ **Consequence:** If your backend logic uses RPC methods (`WorkerEntrypoint`), Smart Placement cannot optimize those calls. You must use fetch-based patterns for Smart Placement to work.
111
+
112
+ **Solution:** Convert RPC methods to fetch endpoints, or use a wrapper Worker with `fetch` handler that calls your backend RPC (though this adds latency).
113
+
114
+ ### Baseline Traffic
115
+
116
+ Smart Placement automatically routes 1% of requests WITHOUT optimization as baseline for performance comparison.
117
+
118
+ ### Validation Rules
119
+
120
+ **Mutually exclusive fields:**
121
+
122
+ - `mode` cannot be used with explicit placement fields (`region`, `host`, `hostname`)
123
+ - Choose either Smart Placement OR explicit placement, not both
124
+
125
+ ```jsonc
126
+ // ✅ Valid - Smart Placement
127
+ { "placement": { "mode": "smart" } }
128
+
129
+ // ✅ Valid - Explicit Placement (different feature)
130
+ { "placement": { "region": "us-east1" } }
131
+
132
+ // ❌ Invalid - Cannot combine
133
+ { "placement": { "mode": "smart", "region": "us-east1" } }
134
+ ```
135
+
136
+ ## Dashboard Configuration
137
+
138
+ **Workers & Pages** → Select Worker → **Settings** → **General** → **Placement: Smart** → Wait 15min → Check **Metrics**
139
+
140
+ ## TypeScript Types
141
+
142
+ ```typescript
143
+ interface Env {
144
+ BACKEND: Fetcher
145
+ DATABASE: D1Database
146
+ }
147
+
148
+ export default {
149
+ async fetch(request: Request, env: Env): Promise<Response> {
150
+ const data = await env.DATABASE.prepare('SELECT * FROM table').all()
151
+ return Response.json(data)
152
+ },
153
+ } satisfies ExportedHandler<Env>
154
+ ```
155
+
156
+ ## Cloudflare Pages/Assets Warning
157
+
158
+ **CRITICAL PERFORMANCE ISSUE:** Enabling Smart Placement with `assets.run_worker_first = true` in Pages projects **severely degrades asset serving performance**. This is one of the most common misconfigurations.
159
+
160
+ **Why this is bad:**
161
+
162
+ - Smart Placement routes ALL requests (including static assets) away from edge to remote locations
163
+ - Static assets (HTML, CSS, JS, images) should ALWAYS be served from edge closest to user
164
+ - Result: 2-5x slower asset loading times, poor user experience
165
+
166
+ **Problem:** Smart Placement routes asset requests away from edge, but static assets should always be served from edge closest to user.
167
+
168
+ **Solutions (in order of preference):**
169
+
170
+ 1. **Recommended:** Split into separate Workers (frontend at edge + backend with Smart Placement)
171
+ 2. Set `"mode": "off"` to explicitly disable Smart Placement for Pages/Assets Workers
172
+ 3. Use `assets.run_worker_first = false` (serves assets first, bypasses Worker for static content)
173
+
174
+ ```jsonc
175
+ // ❌ BAD - Degrades asset performance by 2-5x
176
+ {
177
+ "name": "pages-app",
178
+ "placement": { "mode": "smart" },
179
+ "assets": { "run_worker_first": true }
180
+ }
181
+
182
+ // ✅ GOOD - Frontend at edge, backend optimized
183
+ // frontend-worker/wrangler.jsonc
184
+ {
185
+ "name": "frontend",
186
+ "assets": { "run_worker_first": true }
187
+ // No placement - runs at edge
188
+ }
189
+
190
+ // backend-worker/wrangler.jsonc
191
+ {
192
+ "name": "backend-api",
193
+ "placement": { "mode": "smart" },
194
+ "d1_databases": [{ "binding": "DB", "database_id": "xxx" }]
195
+ }
196
+ ```
197
+
198
+ **Key takeaway:** Never enable Smart Placement on Workers that serve static assets with `run_worker_first = true`.
199
+
200
+ ## Local Development
201
+
202
+ Smart Placement does NOT work in `wrangler dev` (local only). Test by deploying: `wrangler deploy --env staging`
@@ -0,0 +1,180 @@
1
+ # Smart Placement Gotchas
2
+
3
+ ## Common Errors
4
+
5
+ ### "INSUFFICIENT_INVOCATIONS"
6
+
7
+ **Cause:** Not enough traffic for Smart Placement to analyze
8
+ **Solution:**
9
+
10
+ - Ensure Worker receives consistent global traffic
11
+ - Wait longer (analysis takes up to 15 minutes)
12
+ - Send test traffic from multiple global locations
13
+ - Check Worker has fetch event handler
14
+
15
+ ### "UNSUPPORTED_APPLICATION"
16
+
17
+ **Cause:** Smart Placement made Worker slower rather than faster
18
+ **Reasons:**
19
+
20
+ - Worker doesn't make backend calls (runs faster at edge)
21
+ - Backend calls are cached (network latency to user more important)
22
+ - Backend service has good global distribution
23
+ - Worker serves static assets or Pages content
24
+
25
+ **Solutions:**
26
+
27
+ - Disable Smart Placement: `{ "placement": { "mode": "off" } }`
28
+ - Review whether Worker actually benefits from Smart Placement
29
+ - Consider caching strategy to reduce backend calls
30
+ - For Pages/Assets Workers, use separate backend Worker with Smart Placement
31
+
32
+ ### "No request duration metrics"
33
+
34
+ **Cause:** Smart Placement not enabled, insufficient time passed, insufficient traffic, or analysis incomplete
35
+ **Solution:**
36
+
37
+ - Ensure Smart Placement enabled in config
38
+ - Wait 15+ minutes after deployment
39
+ - Verify Worker has sufficient traffic
40
+ - Check `placement_status` is `SUCCESS`
41
+
42
+ ### "cf-placement header missing"
43
+
44
+ **Cause:** Smart Placement not enabled, beta feature removed, or Worker not analyzed yet
45
+ **Solution:** Verify Smart Placement enabled, wait for analysis (15min), check if beta feature still available
46
+
47
+ ## Pages/Assets + Smart Placement Performance Degradation
48
+
49
+ **Problem:** Static assets load 2-5x slower when Smart Placement enabled with `run_worker_first = true`.
50
+
51
+ **Cause:** Smart Placement routes ALL requests (including static assets like HTML, CSS, JS, images) to remote locations. Static content should ALWAYS be served from edge closest to user.
52
+
53
+ **Solution:** Split into separate Workers OR disable Smart Placement:
54
+
55
+ ```jsonc
56
+ // ❌ BAD - Assets routed away from user
57
+ {
58
+ "name": "pages-app",
59
+ "placement": { "mode": "smart" },
60
+ "assets": { "run_worker_first": true }
61
+ }
62
+
63
+ // ✅ GOOD - Assets at edge, API optimized
64
+ // frontend/wrangler.jsonc
65
+ {
66
+ "name": "frontend",
67
+ "assets": { "run_worker_first": true }
68
+ // No placement field - stays at edge
69
+ }
70
+
71
+ // backend/wrangler.jsonc
72
+ {
73
+ "name": "backend-api",
74
+ "placement": { "mode": "smart" }
75
+ }
76
+ ```
77
+
78
+ This is one of the most common and impactful Smart Placement misconfigurations.
79
+
80
+ ## Monolithic Full-Stack Worker
81
+
82
+ **Problem:** Frontend and backend logic in single Worker with Smart Placement enabled.
83
+
84
+ **Cause:** Smart Placement optimizes for backend latency but increases user-facing response time.
85
+
86
+ **Solution:** Split into two Workers:
87
+
88
+ ```jsonc
89
+ // frontend/wrangler.jsonc
90
+ {
91
+ "name": "frontend",
92
+ "placement": { "mode": "off" }, // Explicit: stay at edge
93
+ "services": [{ "binding": "BACKEND", "service": "backend-api" }]
94
+ }
95
+
96
+ // backend/wrangler.jsonc
97
+ {
98
+ "name": "backend-api",
99
+ "placement": { "mode": "smart" },
100
+ "d1_databases": [{ "binding": "DB", "database_id": "xxx" }]
101
+ }
102
+ ```
103
+
104
+ ## Local Development Confusion
105
+
106
+ **Issue:** Smart Placement doesn't work in `wrangler dev`.
107
+
108
+ **Explanation:** Smart Placement only activates in production deployments, not local development.
109
+
110
+ **Solution:** Test Smart Placement in staging environment: `wrangler deploy --env staging`
111
+
112
+ ## Baseline Traffic & Analysis Time
113
+
114
+ **Note:** Smart Placement routes 1% of requests WITHOUT optimization for comparison (expected).
115
+
116
+ **Analysis time:** Up to 15 minutes. During analysis, Worker runs at edge. Monitor `placement_status`.
117
+
118
+ ## RPC Methods Not Affected (Critical Limitation)
119
+
120
+ **Problem:** Enabled Smart Placement on backend but RPC calls still slow.
121
+
122
+ **Cause:** Smart Placement ONLY affects `fetch` handlers. RPC methods (Service Bindings with `WorkerEntrypoint`) are NEVER affected.
123
+
124
+ **Why:** RPC bypasses `fetch` handler - Smart Placement can only route `fetch` requests.
125
+
126
+ **Solution:** Convert to fetch-based Service Bindings:
127
+
128
+ ```typescript
129
+ // ❌ RPC - Smart Placement has NO EFFECT
130
+ export class BackendRPC extends WorkerEntrypoint {
131
+ async getData() {
132
+ // ALWAYS runs at edge
133
+ return await this.env.DATABASE.prepare('SELECT * FROM table').all()
134
+ }
135
+ }
136
+
137
+ // ✅ Fetch - Smart Placement WORKS
138
+ export default {
139
+ async fetch(request: Request, env: Env): Promise<Response> {
140
+ // Runs close to DATABASE when Smart Placement enabled
141
+ const data = await env.DATABASE.prepare('SELECT * FROM table').all()
142
+ return Response.json(data)
143
+ },
144
+ }
145
+ ```
146
+
147
+ ## Requirements
148
+
149
+ - **Wrangler 2.20.0+** required
150
+ - **Consistent multi-region traffic** needed for analysis
151
+ - **Only affects fetch handlers** - RPC methods and named entrypoints not affected
152
+
153
+ ## Limits
154
+
155
+ | Resource/Limit | Value | Notes |
156
+ | -------------------- | ---------------- | --------------------------- |
157
+ | Analysis time | Up to 15 minutes | After enabling |
158
+ | Baseline traffic | 1% | Routed without optimization |
159
+ | Min Wrangler version | 2.20.0+ | Required |
160
+ | Traffic requirement | Multi-region | Consistent needed |
161
+
162
+ ## Disabling Smart Placement
163
+
164
+ ```jsonc
165
+ { "placement": { "mode": "off" } } // Explicit disable
166
+ // OR remove "placement" field entirely (same effect)
167
+ ```
168
+
169
+ Both behaviors identical - Worker runs at edge closest to user.
170
+
171
+ ## When NOT to Use Smart Placement
172
+
173
+ - Workers serving only static content or cached responses
174
+ - Workers without significant backend communication
175
+ - Pure edge logic (auth checks, redirects, simple transformations)
176
+ - Workers without fetch event handlers
177
+ - Pages/Assets Workers with `run_worker_first = true`
178
+ - Workers using RPC methods instead of fetch handlers
179
+
180
+ These scenarios won't benefit and may perform worse with Smart Placement.
@@ -0,0 +1,190 @@
1
+ # Smart Placement Patterns
2
+
3
+ ## Backend Worker with Database Access
4
+
5
+ ```typescript
6
+ export default {
7
+ async fetch(request: Request, env: Env): Promise<Response> {
8
+ const user = await env.DATABASE.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first()
9
+ const orders = await env.DATABASE.prepare('SELECT * FROM orders WHERE user_id = ?')
10
+ .bind(userId)
11
+ .all()
12
+ return Response.json({ user, orders })
13
+ },
14
+ }
15
+ ```
16
+
17
+ ```jsonc
18
+ {
19
+ "placement": { "mode": "smart" },
20
+ "d1_databases": [{ "binding": "DATABASE", "database_id": "xxx" }],
21
+ }
22
+ ```
23
+
24
+ ## Frontend + Backend Split (Service Bindings)
25
+
26
+ **Frontend:** Runs at edge for fast user response
27
+ **Backend:** Smart Placement runs close to database
28
+
29
+ ```typescript
30
+ // Frontend Worker - routes requests to backend
31
+ interface Env {
32
+ BACKEND: Fetcher // Service Binding to backend Worker
33
+ }
34
+
35
+ export default {
36
+ async fetch(request: Request, env: Env): Promise<Response> {
37
+ if (new URL(request.url).pathname.startsWith('/api/')) {
38
+ return env.BACKEND.fetch(request) // Forward to backend
39
+ }
40
+ return new Response('Frontend content')
41
+ },
42
+ }
43
+
44
+ // Backend Worker - database operations
45
+ interface BackendEnv {
46
+ DATABASE: D1Database
47
+ }
48
+
49
+ export default {
50
+ async fetch(request: Request, env: BackendEnv): Promise<Response> {
51
+ const data = await env.DATABASE.prepare('SELECT * FROM table').all()
52
+ return Response.json(data)
53
+ },
54
+ }
55
+ ```
56
+
57
+ **CRITICAL:** Use fetch-based Service Bindings (shown above). If using RPC with `WorkerEntrypoint`, Smart Placement will NOT optimize those method calls - only `fetch` handlers are affected.
58
+
59
+ **RPC vs Fetch - CRITICAL:** Smart Placement ONLY works with fetch-based bindings, NOT RPC.
60
+
61
+ ```typescript
62
+ // ❌ RPC - Smart Placement has NO EFFECT on backend RPC methods
63
+ export class BackendRPC extends WorkerEntrypoint {
64
+ async getData() {
65
+ // ALWAYS runs at edge, Smart Placement ignored
66
+ return await this.env.DATABASE.prepare('SELECT * FROM table').all()
67
+ }
68
+ }
69
+
70
+ // ✅ Fetch - Smart Placement WORKS
71
+ export default {
72
+ async fetch(request: Request, env: Env): Promise<Response> {
73
+ // Runs close to DATABASE when Smart Placement enabled
74
+ const data = await env.DATABASE.prepare('SELECT * FROM table').all()
75
+ return Response.json(data)
76
+ },
77
+ }
78
+ ```
79
+
80
+ ## External API Integration
81
+
82
+ ```typescript
83
+ export default {
84
+ async fetch(request: Request, env: Env): Promise<Response> {
85
+ const apiUrl = 'https://api.partner.com'
86
+ const headers = { Authorization: `Bearer ${env.API_KEY}` }
87
+
88
+ const [profile, transactions] = await Promise.all([
89
+ fetch(`${apiUrl}/profile`, { headers }),
90
+ fetch(`${apiUrl}/transactions`, { headers }),
91
+ ])
92
+
93
+ return Response.json({
94
+ profile: await profile.json(),
95
+ transactions: await transactions.json(),
96
+ })
97
+ },
98
+ }
99
+ ```
100
+
101
+ ## SSR / API Gateway Pattern
102
+
103
+ ```typescript
104
+ // Frontend (edge) - auth/routing close to user
105
+ export default {
106
+ async fetch(request: Request, env: Env) {
107
+ if (!request.headers.get('Authorization')) {
108
+ return new Response('Unauthorized', { status: 401 })
109
+ }
110
+ const data = await env.BACKEND.fetch(request)
111
+ return new Response(renderPage(await data.json()), {
112
+ headers: { 'Content-Type': 'text/html' },
113
+ })
114
+ },
115
+ }
116
+
117
+ // Backend (Smart Placement) - DB operations close to data
118
+ export default {
119
+ async fetch(request: Request, env: Env) {
120
+ const data = await env.DATABASE.prepare('SELECT * FROM pages WHERE id = ?').bind(pageId).first()
121
+ return Response.json(data)
122
+ },
123
+ }
124
+ ```
125
+
126
+ ## Durable Objects with Smart Placement
127
+
128
+ **Key principle:** Smart Placement does NOT control WHERE Durable Objects run. DOs always run in their designated region (based on jurisdiction or smart location hints).
129
+
130
+ **What Smart Placement DOES affect:** The location of the coordinator Worker's `fetch` handler that makes calls to multiple DOs.
131
+
132
+ **Pattern:** Enable Smart Placement on coordinator Worker that aggregates data from multiple DOs:
133
+
134
+ ```typescript
135
+ // Worker with Smart Placement - aggregates data from multiple DOs
136
+ export default {
137
+ async fetch(request: Request, env: Env): Promise<Response> {
138
+ const userId = new URL(request.url).searchParams.get('user')
139
+
140
+ // Get DO stubs
141
+ const userDO = env.USER_DO.get(env.USER_DO.idFromName(userId))
142
+ const analyticsID = env.ANALYTICS_DO.idFromName(`analytics-${userId}`)
143
+ const analyticsDO = env.ANALYTICS_DO.get(analyticsID)
144
+
145
+ // Fetch from multiple DOs
146
+ const [userData, analyticsData] = await Promise.all([
147
+ userDO.fetch(new Request('https://do/profile')),
148
+ analyticsDO.fetch(new Request('https://do/stats')),
149
+ ])
150
+
151
+ return Response.json({
152
+ user: await userData.json(),
153
+ analytics: await analyticsData.json(),
154
+ })
155
+ },
156
+ }
157
+ ```
158
+
159
+ ```jsonc
160
+ // wrangler.jsonc
161
+ {
162
+ "placement": { "mode": "smart" },
163
+ "durable_objects": {
164
+ "bindings": [
165
+ { "name": "USER_DO", "class_name": "UserDO" },
166
+ { "name": "ANALYTICS_DO", "class_name": "AnalyticsDO" },
167
+ ],
168
+ },
169
+ }
170
+ ```
171
+
172
+ **When this helps:**
173
+
174
+ - Worker's `fetch` handler runs closer to DO regions, reducing network latency for multiple DO calls
175
+ - Most beneficial when DOs are geographically concentrated or in specific jurisdictions
176
+ - Helps when coordinator makes many sequential or parallel DO calls
177
+
178
+ **When this DOESN'T help:**
179
+
180
+ - DOs are globally distributed (no single optimal Worker location)
181
+ - Worker only calls a single DO
182
+ - DO calls are infrequent or cached
183
+
184
+ ## Best Practices
185
+
186
+ - Split full-stack apps: frontend at edge, backend with Smart Placement
187
+ - Use fetch-based Service Bindings (not RPC)
188
+ - Enable for backend logic: APIs, data aggregation, DB operations
189
+ - Don't enable for: static content, edge logic, RPC methods, Pages with `run_worker_first`
190
+ - Wait 15+ min for analysis, verify `placement_status = SUCCESS`
@@ -0,0 +1,74 @@
1
+ # Cloudflare Snippets Skill Reference
2
+
3
+ ## Description
4
+
5
+ Expert guidance for **Cloudflare Snippets ONLY** - a lightweight JavaScript-based edge logic platform for modifying HTTP requests and responses. Snippets run as part of the Ruleset Engine and are included at no additional cost on paid plans (Pro, Business, Enterprise).
6
+
7
+ ## What Are Snippets?
8
+
9
+ Snippets are JavaScript functions executed at the edge as part of Cloudflare's Ruleset Engine. Key characteristics:
10
+
11
+ - **Execution time**: 5ms CPU limit per request
12
+ - **Size limit**: 32KB per snippet
13
+ - **Runtime**: V8 isolate (subset of Workers APIs)
14
+ - **Subrequests**: 2-5 fetch calls depending on plan
15
+ - **Cost**: Included with Pro/Business/Enterprise plans
16
+
17
+ ## Snippets vs Workers Decision Matrix
18
+
19
+ | Factor | Choose Snippets If... | Choose Workers If... |
20
+ | ------------------ | ------------------------------------- | ----------------------------------------------- |
21
+ | **Complexity** | Simple request/response modifications | Complex business logic, routing, middleware |
22
+ | **Execution time** | <5ms sufficient | Need >5ms or variable time |
23
+ | **Subrequests** | 2-5 fetch calls sufficient | Need >5 subrequests or complex orchestration |
24
+ | **Code size** | <32KB sufficient | Need >32KB or npm dependencies |
25
+ | **Cost** | Want zero additional cost | Can afford $5/mo + usage |
26
+ | **APIs** | Need basic fetch, headers, URL | Need KV, D1, R2, Durable Objects, cron triggers |
27
+ | **Deployment** | Need rule-based triggers | Want custom routing logic |
28
+
29
+ **Rule of thumb**: Use Snippets for modifications, Workers for applications.
30
+
31
+ ## Execution Model
32
+
33
+ 1. Request arrives at Cloudflare edge
34
+ 2. Ruleset Engine evaluates snippet rules (filter expressions)
35
+ 3. If rule matches, snippet executes within 5ms limit
36
+ 4. Modified request/response continues through pipeline
37
+ 5. Response returned to client
38
+
39
+ Snippets execute synchronously in the request path - performance is critical.
40
+
41
+ ## Reading Order
42
+
43
+ 1. **[configuration.md](configuration.md)** - Start here: setup, deployment methods (Dashboard/API/Terraform)
44
+ 2. **[api.md](api.md)** - Core APIs: Request, Response, headers, `request.cf` properties
45
+ 3. **[patterns.md](patterns.md)** - Real-world examples: geo-routing, A/B tests, security headers
46
+ 4. **[gotchas.md](gotchas.md)** - Troubleshooting: common errors, performance tips, API limitations
47
+
48
+ ## In This Reference
49
+
50
+ - **[configuration.md](configuration.md)** - Setup, deployment, configuration
51
+ - **[api.md](api.md)** - API endpoints, methods, interfaces
52
+ - **[patterns.md](patterns.md)** - Common patterns, use cases, examples
53
+ - **[gotchas.md](gotchas.md)** - Troubleshooting, best practices, limitations
54
+
55
+ ## Quick Start
56
+
57
+ ```javascript
58
+ // Snippet: Add security headers
59
+ export default {
60
+ async fetch(request) {
61
+ const response = await fetch(request)
62
+ const newResponse = new Response(response.body, response)
63
+ newResponse.headers.set('X-Frame-Options', 'DENY')
64
+ newResponse.headers.set('X-Content-Type-Options', 'nosniff')
65
+ return newResponse
66
+ },
67
+ }
68
+ ```
69
+
70
+ Deploy via Dashboard (Rules → Snippets) or API/Terraform. See configuration.md for details.
71
+
72
+ ## See Also
73
+
74
+ - [Cloudflare Docs](https://developers.cloudflare.com/rules/snippets/)