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,205 @@
1
+ # Binding Patterns and Best Practices
2
+
3
+ ## Service Binding Patterns
4
+
5
+ ### RPC via Service Bindings
6
+
7
+ ```typescript
8
+ // auth-worker
9
+ export default {
10
+ async fetch(request: Request, env: Env) {
11
+ const token = request.headers.get('Authorization')
12
+ return new Response(JSON.stringify({ valid: await validateToken(token) }))
13
+ },
14
+ }
15
+
16
+ // api-worker
17
+ const response = await env.AUTH_SERVICE.fetch(
18
+ new Request('https://fake-host/validate', {
19
+ headers: { Authorization: token },
20
+ })
21
+ )
22
+ ```
23
+
24
+ **Why RPC?** Zero latency (same datacenter), no DNS, free, type-safe.
25
+
26
+ **HTTP vs Service:**
27
+
28
+ ```typescript
29
+ // ❌ HTTP (slow, paid, cross-region latency)
30
+ await fetch('https://auth-worker.example.com/validate')
31
+
32
+ // ✅ Service binding (fast, free, same isolate)
33
+ await env.AUTH_SERVICE.fetch(new Request('https://fake-host/validate'))
34
+ ```
35
+
36
+ **URL doesn't matter:** Service bindings ignore hostname/protocol, routing happens via binding name.
37
+
38
+ ### Typed Service RPC
39
+
40
+ ```typescript
41
+ // shared-types.ts
42
+ export interface AuthRequest {
43
+ token: string
44
+ }
45
+ export interface AuthResponse {
46
+ valid: boolean
47
+ userId?: string
48
+ }
49
+
50
+ // auth-worker
51
+ export default {
52
+ async fetch(request: Request): Promise<Response> {
53
+ const body: AuthRequest = await request.json()
54
+ const response: AuthResponse = { valid: true, userId: '123' }
55
+ return Response.json(response)
56
+ },
57
+ }
58
+
59
+ // api-worker
60
+ const response = await env.AUTH_SERVICE.fetch(
61
+ new Request('https://fake/validate', {
62
+ method: 'POST',
63
+ body: JSON.stringify({ token } satisfies AuthRequest),
64
+ })
65
+ )
66
+ const data: AuthResponse = await response.json()
67
+ ```
68
+
69
+ ## Secrets Management
70
+
71
+ ```bash
72
+ # Set secret
73
+ npx wrangler secret put API_KEY
74
+ cat api-key.txt | npx wrangler secret put API_KEY
75
+ npx wrangler secret put API_KEY --env staging
76
+ ```
77
+
78
+ ```typescript
79
+ // Use secret
80
+ const response = await fetch('https://api.example.com', {
81
+ headers: { Authorization: `Bearer ${env.API_KEY}` },
82
+ })
83
+ ```
84
+
85
+ **Never commit secrets:**
86
+
87
+ ```jsonc
88
+ // ❌ NEVER
89
+ { "vars": { "API_KEY": "sk_live_abc123" } }
90
+ ```
91
+
92
+ ## Testing with Mock Bindings
93
+
94
+ ### Vitest Mock
95
+
96
+ ```typescript
97
+ import { vi } from 'vitest'
98
+
99
+ const mockKV: KVNamespace = {
100
+ get: vi.fn(async (key) => (key === 'test' ? 'value' : null)),
101
+ put: vi.fn(async () => {}),
102
+ delete: vi.fn(async () => {}),
103
+ list: vi.fn(async () => ({ keys: [], list_complete: true, cursor: '' })),
104
+ getWithMetadata: vi.fn(),
105
+ } as unknown as KVNamespace
106
+
107
+ const mockEnv: Env = { MY_KV: mockKV }
108
+ const mockCtx: ExecutionContext = {
109
+ waitUntil: vi.fn(),
110
+ passThroughOnException: vi.fn(),
111
+ }
112
+
113
+ const response = await worker.fetch(new Request('http://localhost/test'), mockEnv, mockCtx)
114
+ ```
115
+
116
+ ## Binding Access Patterns
117
+
118
+ ### Lazy Access
119
+
120
+ ```typescript
121
+ // ✅ Access only when needed
122
+ if (url.pathname === '/cached') {
123
+ const cached = await env.MY_KV.get('data')
124
+ if (cached) return new Response(cached)
125
+ }
126
+ ```
127
+
128
+ ### Parallel Access
129
+
130
+ ```typescript
131
+ // ✅ Parallelize independent calls
132
+ const [user, config, cache] = await Promise.all([
133
+ env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first(),
134
+ env.MY_KV.get('config'),
135
+ env.CACHE.get('data'),
136
+ ])
137
+ ```
138
+
139
+ ## Storage Selection
140
+
141
+ ### KV: CDN-Backed Reads
142
+
143
+ ```typescript
144
+ const config = await env.MY_KV.get('app-config', { type: 'json' })
145
+ ```
146
+
147
+ **Use when:** Read-heavy, <25MB, global distribution, eventual consistency OK
148
+ **Latency:** <10ms reads (cached), writes eventually consistent (60s)
149
+
150
+ ### D1: Relational Queries
151
+
152
+ ```typescript
153
+ const results = await env.DB.prepare(
154
+ `
155
+ SELECT u.name, COUNT(o.id) FROM users u
156
+ LEFT JOIN orders o ON u.id = o.user_id GROUP BY u.id
157
+ `
158
+ ).all()
159
+ ```
160
+
161
+ **Use when:** Relational data, JOINs, ACID transactions
162
+ **Limits:** 10GB database size, 100k rows per query
163
+
164
+ ### R2: Large Objects
165
+
166
+ ```typescript
167
+ const object = await env.MY_BUCKET.get('large-file.zip')
168
+ return new Response(object.body)
169
+ ```
170
+
171
+ **Use when:** Files >25MB, S3-compatible API needed
172
+ **Limits:** 5TB per object, unlimited storage
173
+
174
+ ### Durable Objects: Coordination
175
+
176
+ ```typescript
177
+ const id = env.COUNTER.idFromName('global')
178
+ const stub = env.COUNTER.get(id)
179
+ await stub.fetch(new Request('https://fake/increment'))
180
+ ```
181
+
182
+ **Use when:** Strong consistency, real-time coordination, WebSocket state
183
+ **Guarantees:** Single-threaded execution, transactional storage
184
+
185
+ ## Anti-Patterns
186
+
187
+ **❌ Hardcoding credentials:** `const apiKey = 'sk_live_abc123'`
188
+ **✅** `npx wrangler secret put API_KEY`
189
+
190
+ **❌ Using REST API:** `fetch('https://api.cloudflare.com/.../kv/...')`
191
+ **✅** `env.MY_KV.get('key')`
192
+
193
+ **❌ Polling storage:** `setInterval(() => env.KV.get('config'), 1000)`
194
+ **✅** Use Durable Objects for real-time state
195
+
196
+ **❌ Large data in vars:** `{ "vars": { "HUGE_CONFIG": "..." } }` (5KB max)
197
+ **✅** `env.MY_KV.put('config', data)`
198
+
199
+ **❌ Caching env globally:** `const apiKey = env.API_KEY` outside fetch()
200
+ **✅** Access `env.API_KEY` per-request inside fetch()
201
+
202
+ ## See Also
203
+
204
+ - [Service Bindings Docs](https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/)
205
+ - [Miniflare Testing](https://miniflare.dev/)
@@ -0,0 +1,95 @@
1
+ # Cloudflare Bot Management
2
+
3
+ Enterprise-grade bot detection, protection, and mitigation using ML/heuristics, bot scores, JavaScript detections, and verified bot handling.
4
+
5
+ ## Overview
6
+
7
+ Bot Management provides multi-tier protection:
8
+
9
+ - **Free (Bot Fight Mode)**: Auto-blocks definite bots, no config
10
+ - **Pro/Business (Super Bot Fight Mode)**: Configurable actions, static resource protection, analytics groupings
11
+ - **Enterprise (Bot Management)**: Granular 1-99 scores, WAF integration, JA3/JA4 fingerprinting, Workers API, Advanced Analytics
12
+
13
+ ## Quick Start
14
+
15
+ ```txt
16
+ # Dashboard: Security > Bots
17
+ # Enterprise: Deploy rule template
18
+ (cf.bot_management.score eq 1 and not cf.bot_management.verified_bot) → Block
19
+ (cf.bot_management.score le 29 and not cf.bot_management.verified_bot) → Managed Challenge
20
+ ```
21
+
22
+ ## What Do You Need?
23
+
24
+ ```txt
25
+ ├─ Initial setup → configuration.md
26
+ │ ├─ Free tier → "Bot Fight Mode"
27
+ │ ├─ Pro/Business → "Super Bot Fight Mode"
28
+ │ └─ Enterprise → "Bot Management for Enterprise"
29
+ ├─ Workers API integration → api.md
30
+ ├─ WAF rules → patterns.md
31
+ ├─ Debugging → gotchas.md
32
+ └─ Analytics → api.md#bot-analytics
33
+ ```
34
+
35
+ ## Reading Order
36
+
37
+ | Task | Files to Read |
38
+ | --------------------- | ------------------------- |
39
+ | Enable bot protection | README → configuration.md |
40
+ | Workers bot detection | README → api.md |
41
+ | WAF rule templates | README → patterns.md |
42
+ | Debug bot issues | gotchas.md |
43
+ | Advanced analytics | api.md#bot-analytics |
44
+
45
+ ## Core Concepts
46
+
47
+ **Bot Scores**: 1-99 (1 = definitely automated, 99 = definitely human). Threshold: <30 indicates bot traffic. Enterprise gets granular 1-99; Pro/Business get groupings only.
48
+
49
+ **Detection Engines**: Heuristics (known fingerprints, assigns score=1), ML (majority of detections, supervised learning on billions of requests), Anomaly Detection (optional, baseline traffic analysis), JavaScript Detections (headless browser detection).
50
+
51
+ **Verified Bots**: Allowlisted good bots (search engines, AI crawlers) verified via reverse DNS or Web Bot Auth. Access via `cf.bot_management.verified_bot` or `cf.verified_bot_category`.
52
+
53
+ ## Platform Limits
54
+
55
+ | Plan | Bot Scores | JA3/JA4 | Custom Rules | Analytics Retention |
56
+ | ------------ | -------------------- | ------- | ------------ | -------------------------- |
57
+ | Free | No (auto-block only) | No | 5 | N/A (no analytics) |
58
+ | Pro/Business | Groupings only | No | 20/100 | 30 days (72h at a time) |
59
+ | Enterprise | 1-99 granular | Yes | 1,000+ | 30 days (1 week at a time) |
60
+
61
+ ## Basic Patterns
62
+
63
+ ```typescript
64
+ // Workers: Check bot score
65
+ export default {
66
+ async fetch(request: Request): Promise<Response> {
67
+ const botScore = request.cf?.botManagement?.score
68
+ if (botScore && botScore < 30 && !request.cf?.botManagement?.verifiedBot) {
69
+ return new Response('Bot detected', { status: 403 })
70
+ }
71
+ return fetch(request)
72
+ },
73
+ }
74
+ ```
75
+
76
+ ```txt
77
+ # WAF: Block definite bots
78
+ (cf.bot_management.score eq 1 and not cf.bot_management.verified_bot)
79
+
80
+ # WAF: Protect sensitive endpoints
81
+ (cf.bot_management.score lt 50 and http.request.uri.path in {"/login" "/checkout"} and not cf.bot_management.verified_bot)
82
+ ```
83
+
84
+ ## In This Reference
85
+
86
+ - [configuration.md](./configuration.md) - Product tiers, WAF rule setup, JavaScript Detections, ML auto-updates
87
+ - [api.md](./api.md) - Workers BotManagement interface, WAF fields, JA4 Signals
88
+ - [patterns.md](./patterns.md) - E-commerce, API protection, mobile app allowlisting, SEO-friendly handling
89
+ - [gotchas.md](./gotchas.md) - False positives/negatives, score=0 issues, JSD limitations, CSP requirements
90
+
91
+ ## See Also
92
+
93
+ - [waf](../waf/) - WAF custom rules for bot enforcement
94
+ - [workers](../workers/) - Workers request.cf.botManagement API
95
+ - [api-shield](../api-shield/) - API-specific bot protection
@@ -0,0 +1,175 @@
1
+ # Bot Management API
2
+
3
+ ## Workers: BotManagement Interface
4
+
5
+ ```typescript
6
+ interface BotManagement {
7
+ score: number // 1-99 (Enterprise), 0 if not computed
8
+ verifiedBot: boolean // Is verified bot
9
+ staticResource: boolean // Serves static resource
10
+ ja3Hash: string // JA3 fingerprint (Enterprise, HTTPS only)
11
+ ja4: string // JA4 fingerprint (Enterprise, HTTPS only)
12
+ jsDetection?: {
13
+ passed: boolean // Passed JS detection (if enabled)
14
+ }
15
+ detectionIds: number[] // Heuristic detection IDs
16
+ corporateProxy?: boolean // From corporate proxy (Enterprise)
17
+ }
18
+
19
+ // DEPRECATED: Use botManagement.score instead
20
+ // request.cf.clientTrustScore (legacy, duplicate of botManagement.score)
21
+
22
+ // Access via request.cf
23
+ import type { IncomingRequestCfProperties } from '@cloudflare/workers-types'
24
+
25
+ export default {
26
+ async fetch(request: Request): Promise<Response> {
27
+ const cf = request.cf as IncomingRequestCfProperties | undefined
28
+ const botMgmt = cf?.botManagement
29
+
30
+ if (!botMgmt) return fetch(request)
31
+ if (botMgmt.verifiedBot) return fetch(request) // Allow verified bots
32
+ if (botMgmt.score === 1) return new Response('Blocked', { status: 403 })
33
+ if (botMgmt.score < 30) return new Response('Challenge required', { status: 429 })
34
+
35
+ return fetch(request)
36
+ },
37
+ }
38
+ ```
39
+
40
+ ## WAF Fields Reference
41
+
42
+ ```txt
43
+ # Score fields
44
+ cf.bot_management.score # 0-99 (0 = not computed)
45
+ cf.bot_management.verified_bot # boolean
46
+ cf.bot_management.static_resource # boolean
47
+ cf.bot_management.ja3_hash # string (Enterprise)
48
+ cf.bot_management.ja4 # string (Enterprise)
49
+ cf.bot_management.detection_ids # array
50
+ cf.bot_management.js_detection.passed # boolean
51
+ cf.bot_management.corporate_proxy # boolean (Enterprise)
52
+ cf.verified_bot_category # string
53
+
54
+ # Workers equivalent
55
+ request.cf.botManagement.score
56
+ request.cf.botManagement.verifiedBot
57
+ request.cf.botManagement.ja3Hash
58
+ request.cf.botManagement.ja4
59
+ request.cf.botManagement.jsDetection.passed
60
+ request.cf.verifiedBotCategory
61
+ ```
62
+
63
+ ## JA4 Signals (Enterprise)
64
+
65
+ ```typescript
66
+ import type { IncomingRequestCfProperties } from '@cloudflare/workers-types'
67
+
68
+ interface JA4Signals {
69
+ // Ratios (0.0-1.0)
70
+ heuristic_ratio_1h?: number // Fraction flagged by heuristics
71
+ browser_ratio_1h?: number // Fraction from real browsers
72
+ cache_ratio_1h?: number // Fraction hitting cache
73
+ h2h3_ratio_1h?: number // Fraction using HTTP/2 or HTTP/3
74
+ // Ranks (relative position in distribution)
75
+ uas_rank_1h?: number // User-Agent diversity rank
76
+ paths_rank_1h?: number // Path diversity rank
77
+ reqs_rank_1h?: number // Request volume rank
78
+ ips_rank_1h?: number // IP diversity rank
79
+ // Quantiles (0.0-1.0, percentile in distribution)
80
+ reqs_quantile_1h?: number // Request volume quantile
81
+ ips_quantile_1h?: number // IP count quantile
82
+ }
83
+
84
+ export default {
85
+ async fetch(request: Request): Promise<Response> {
86
+ const cf = request.cf as IncomingRequestCfProperties | undefined
87
+ const ja4Signals = cf?.ja4Signals as JA4Signals | undefined
88
+
89
+ if (!ja4Signals) return fetch(request) // Not available for HTTP or Worker routing
90
+
91
+ // Check for anomalous behavior
92
+ // High heuristic_ratio or low browser_ratio = suspicious
93
+ const heuristicRatio = ja4Signals.heuristic_ratio_1h ?? 0
94
+ const browserRatio = ja4Signals.browser_ratio_1h ?? 0
95
+
96
+ if (heuristicRatio > 0.5 || browserRatio < 0.3) {
97
+ return new Response('Suspicious traffic', { status: 403 })
98
+ }
99
+
100
+ return fetch(request)
101
+ },
102
+ }
103
+ ```
104
+
105
+ ## Common Patterns
106
+
107
+ See [patterns.md](./patterns.md) for Workers examples: mobile app allowlisting, corporate proxy exemption, datacenter detection, conditional delay, and more.
108
+
109
+ ## Bot Analytics
110
+
111
+ ### Access Locations
112
+
113
+ - Dashboard: Security > Bots (old) or Security > Analytics > Bot analysis (new)
114
+ - GraphQL API for programmatic access
115
+ - Security Events & Security Analytics
116
+ - Logpush/Logpull
117
+
118
+ ### Available Data
119
+
120
+ - **Enterprise BM**: Bot scores (1-99), bot score source, distribution
121
+ - **Pro/Business**: Bot groupings (automated, likely automated, likely human)
122
+ - Top attributes: IPs, paths, user agents, countries
123
+ - Detection sources: Heuristics, ML, AD, JSD
124
+ - Verified bot categories
125
+
126
+ ### Time Ranges
127
+
128
+ - **Enterprise BM**: Up to 1 week at a time, 30 days history
129
+ - **Pro/Business**: Up to 72 hours at a time, 30 days history
130
+ - Real-time in most cases, adaptive sampling (1-10% depending on volume)
131
+
132
+ ## Logpush Fields
133
+
134
+ ```txt
135
+ BotScore # 1-99 or 0 if not computed
136
+ BotScoreSrc # Detection engine (ML, Heuristics, etc.)
137
+ BotTags # Classification tags
138
+ BotDetectionIDs # Heuristic detection IDs
139
+ ```
140
+
141
+ **BotScoreSrc values:**
142
+
143
+ - `"Heuristics"` - Known fingerprint
144
+ - `"Machine Learning"` - ML model
145
+ - `"Anomaly Detection"` - Baseline anomaly
146
+ - `"JS Detection"` - JavaScript check
147
+ - `"Cloudflare Service"` - Zero Trust
148
+ - `"Not Computed"` - Score = 0
149
+
150
+ Access via Logpush (stream to cloud storage/SIEM), Logpull (API to fetch logs), or GraphQL API (query analytics data).
151
+
152
+ ## Testing with Miniflare
153
+
154
+ Miniflare provides mock botManagement data for local development:
155
+
156
+ **Default values:**
157
+
158
+ - `score: 99` (human)
159
+ - `verifiedBot: false`
160
+ - `corporateProxy: false`
161
+ - `ja3Hash: "25b4882c2bcb50cd6b469ff28c596742"`
162
+ - `staticResource: false`
163
+ - `detectionIds: []`
164
+
165
+ **Override in tests:**
166
+
167
+ ```typescript
168
+ import { getPlatformProxy } from 'wrangler'
169
+
170
+ const { cf, dispose } = await getPlatformProxy()
171
+ // cf.botManagement is frozen mock object
172
+ expect(cf.botManagement.score).toBe(99)
173
+ ```
174
+
175
+ For custom test data, mock request.cf in your test setup.
@@ -0,0 +1,175 @@
1
+ # Bot Management Configuration
2
+
3
+ ## Product Tiers
4
+
5
+ **Note:** Dashboard paths differ between old and new UI:
6
+
7
+ - **New:** Security > Settings > Filter "Bot traffic"
8
+ - **Old:** Security > Bots
9
+
10
+ Both UIs access same settings.
11
+
12
+ ### Bot Score Groupings (Pro/Business)
13
+
14
+ Pro/Business users see bot score groupings instead of granular 1-99 scores:
15
+
16
+ | Score | Grouping | Meaning |
17
+ | ----- | ---------------- | ------------------------------ |
18
+ | 0 | Not computed | Bot Management didn't run |
19
+ | 1 | Automated | Definite bot (heuristic match) |
20
+ | 2-29 | Likely automated | Probably bot (ML detection) |
21
+ | 30-99 | Likely human | Probably human |
22
+ | N/A | Verified bot | Allowlisted good bot |
23
+
24
+ Enterprise plans get granular 1-99 scores for custom thresholds.
25
+
26
+ ### Bot Fight Mode (Free)
27
+
28
+ - Auto-blocks definite bots (score=1), excludes verified bots by default
29
+ - JavaScript Detections always enabled, no configuration options
30
+
31
+ ### Super Bot Fight Mode (Pro/Business)
32
+
33
+ ```txt
34
+ Dashboard: Security > Bots > Configure
35
+ - Definitely automated: Block/Challenge
36
+ - Likely automated: Challenge/Allow
37
+ - Verified bots: Allow (recommended)
38
+ - Static resource protection: ON (may block mail clients)
39
+ - JavaScript Detections: Optional
40
+ ```
41
+
42
+ ### Bot Management for Enterprise
43
+
44
+ ```txt
45
+ Dashboard: Security > Bots > Configure > Auto-updates: ON (recommended)
46
+
47
+ # Template 1: Block definite bots
48
+ (cf.bot_management.score eq 1 and not cf.bot_management.verified_bot and not cf.bot_management.static_resource)
49
+ Action: Block
50
+
51
+ # Template 2: Challenge likely bots
52
+ (cf.bot_management.score ge 2 and cf.bot_management.score le 29 and not cf.bot_management.verified_bot and not cf.bot_management.static_resource)
53
+ Action: Managed Challenge
54
+ ```
55
+
56
+ ## JavaScript Detections Setup
57
+
58
+ ### Enable via Dashboard
59
+
60
+ ```txt
61
+ Security > Bots > Configure Bot Management > JS Detections: ON
62
+
63
+ Update CSP: script-src 'self' /cdn-cgi/challenge-platform/;
64
+ ```
65
+
66
+ ### Manual JS Injection (API)
67
+
68
+ ```html
69
+ <script>
70
+ function jsdOnload() {
71
+ window.cloudflare.jsd.executeOnce({
72
+ callback: function (result) {
73
+ console.log('JSD:', result)
74
+ },
75
+ })
76
+ }
77
+ </script>
78
+ <script src="/cdn-cgi/challenge-platform/scripts/jsd/api.js?onload=jsdOnload" async></script>
79
+ ```
80
+
81
+ **Use API for**: Selective deployment on specific pages
82
+ **Don't combine**: Zone-wide toggle + manual injection
83
+
84
+ ### WAF Rules for JSD
85
+
86
+ ```txt
87
+ # NEVER use on first page visit (needs HTML page first)
88
+ (not cf.bot_management.js_detection.passed and http.request.uri.path eq "/api/user/create" and http.request.method eq "POST" and not cf.bot_management.verified_bot)
89
+ Action: Managed Challenge (always use Managed Challenge, not Block)
90
+ ```
91
+
92
+ ### Limitations
93
+
94
+ - First request won't have JSD data (needs HTML page first)
95
+ - Strips ETags from HTML responses
96
+ - Not supported with CSP via `<meta>` tags
97
+ - Websocket endpoints not supported
98
+ - Native mobile apps won't pass
99
+ - cf_clearance cookie: 15-minute lifespan, max 4096 bytes
100
+
101
+ ## \_\_cf_bm Cookie
102
+
103
+ Cloudflare sets `__cf_bm` cookie to smooth bot scores across user sessions:
104
+
105
+ - **Purpose:** Reduces false positives from score volatility
106
+ - **Scope:** Per-domain, HTTP-only
107
+ - **Lifespan:** Session duration
108
+ - **Privacy:** No PII—only session classification
109
+ - **Automatic:** No configuration required
110
+
111
+ Bot scores for repeat visitors consider session history via this cookie.
112
+
113
+ ## Static Resource Protection
114
+
115
+ **File Extensions**: ico, jpg, png, jpeg, gif, css, js, tif, tiff, bmp, pict, webp, svg, svgz, class, jar, txt, csv, doc, docx, xls, xlsx, pdf, ps, pls, ppt, pptx, ttf, otf, woff, woff2, eot, eps, ejs, swf, torrent, midi, mid, m3u8, m4a, mp3, ogg, ts
116
+ **Plus**: `/.well-known/` path (all files)
117
+
118
+ ```txt
119
+ # Exclude static resources from bot rules
120
+ (cf.bot_management.score lt 30 and not cf.bot_management.static_resource)
121
+ ```
122
+
123
+ **WARNING**: May block mail clients fetching static images
124
+
125
+ ## JA3/JA4 Fingerprinting (Enterprise)
126
+
127
+ ```txt
128
+ # Block specific attack fingerprint
129
+ (cf.bot_management.ja3_hash eq "8b8e3d5e3e8b3d5e")
130
+
131
+ # Allow mobile app by fingerprint
132
+ (cf.bot_management.ja4 eq "your_mobile_app_fingerprint")
133
+ ```
134
+
135
+ Only available for HTTPS/TLS traffic. Missing for Worker-routed traffic or HTTP requests.
136
+
137
+ ## Verified Bot Categories
138
+
139
+ ```txt
140
+ # Allow search engines only
141
+ (cf.verified_bot_category eq "Search Engine Crawler")
142
+
143
+ # Block AI crawlers
144
+ (cf.verified_bot_category eq "AI Crawler")
145
+ Action: Block
146
+
147
+ # Or use dashboard: Security > Settings > Bot Management > Block AI Bots
148
+ ```
149
+
150
+ | Category | String Value | Example |
151
+ | ----------------------- | ---------------------------- | ------------------------------ |
152
+ | AI Crawler | `AI Crawler` | GPTBot, Claude-Web |
153
+ | AI Assistant | `AI Assistant` | Perplexity-User, DuckAssistBot |
154
+ | AI Search | `AI Search` | OAI-SearchBot |
155
+ | Accessibility | `Accessibility` | Accessible Web Bot |
156
+ | Academic Research | `Academic Research` | Library of Congress |
157
+ | Advertising & Marketing | `Advertising & Marketing` | Google Adsbot |
158
+ | Aggregator | `Aggregator` | Pinterest, Indeed |
159
+ | Archiver | `Archiver` | Internet Archive, CommonCrawl |
160
+ | Feed Fetcher | `Feed Fetcher` | RSS/Podcast updaters |
161
+ | Monitoring & Analytics | `Monitoring & Analytics` | Uptime monitors |
162
+ | Page Preview | `Page Preview` | Facebook/Slack link preview |
163
+ | SEO | `Search Engine Optimization` | Google Lighthouse |
164
+ | Security | `Security` | Vulnerability scanners |
165
+ | Social Media Marketing | `Social Media Marketing` | Brandwatch |
166
+ | Webhooks | `Webhooks` | Payment processors |
167
+ | Other | `Other` | Uncategorized bots |
168
+
169
+ ## Best Practices
170
+
171
+ - **ML Auto-Updates**: Enable on Enterprise for latest models
172
+ - **Start with Managed Challenge**: Test before blocking
173
+ - **Always exclude verified bots**: Use `not cf.bot_management.verified_bot`
174
+ - **Exempt corporate proxies**: For B2B traffic via `cf.bot_management.corporate_proxy`
175
+ - **Use static resource exception**: Improves performance, reduces overhead