memory-journal-mcp 7.7.1 → 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-6LPTBIB6.js → chunk-MWNLAEHR.js} +309 -4332
  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 +6 -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,116 @@
1
+ # Bot Management Gotchas
2
+
3
+ ## Common Errors
4
+
5
+ ### "Bot Score = 0"
6
+
7
+ **Cause:** Bot Management didn't run (internal Cloudflare request, Worker routing to zone (Orange-to-Orange), or request handled before BM (Redirect Rules, etc.))
8
+ **Solution:** Check request flow and ensure Bot Management runs in request lifecycle
9
+
10
+ ### "JavaScript Detections Not Working"
11
+
12
+ **Cause:** `js_detection.passed` always false or undefined due to: CSP headers don't allow `/cdn-cgi/challenge-platform/`, using on first page visit (needs HTML page first), ad blockers or disabled JS, JSD not enabled in dashboard, or using Block action (must use Managed Challenge)
13
+ **Solution:** Add CSP header `Content-Security-Policy: script-src 'self' /cdn-cgi/challenge-platform/;` and ensure JSD is enabled with Managed Challenge action
14
+
15
+ ### "False Positives (Legitimate Users Blocked)"
16
+
17
+ **Cause:** Bot detection incorrectly flagging legitimate users
18
+ **Solution:** Check Bot Analytics for affected IPs/paths, identify detection source (ML, Heuristics, etc.), create exception rule like `(cf.bot_management.score lt 30 and http.request.uri.path eq "/problematic-path")` with Action: Skip (Bot Management), or allowlist by IP/ASN/country
19
+
20
+ ### "False Negatives (Bots Not Caught)"
21
+
22
+ **Cause:** Bots bypassing detection
23
+ **Solution:** Lower score threshold (30 → 50), enable JavaScript Detections, add JA3/JA4 fingerprinting rules, or use rate limiting as fallback
24
+
25
+ ### "Verified Bot Blocked"
26
+
27
+ **Cause:** Search engine bot blocked by WAF Managed Rules (not just Bot Management)
28
+ **Solution:** Create WAF exception for specific rule ID and verify bot via reverse DNS
29
+
30
+ ### "Yandex Bot Blocked During IP Update"
31
+
32
+ **Cause:** Yandex updates bot IPs; new IPs unrecognized for 48h during propagation
33
+ **Solution:**
34
+
35
+ 1. Check Security Events for specific WAF rule ID blocking Yandex
36
+ 2. Create WAF exception:
37
+ ```txt
38
+ (http.user_agent contains "YandexBot" and ip.src in {<yandex-ip-range>})
39
+ Action: Skip (WAF Managed Ruleset)
40
+ ```
41
+ 3. Monitor Bot Analytics for 48h
42
+ 4. Remove exception after propagation completes
43
+
44
+ Issue resolves automatically after 48h. Contact Cloudflare Support if persists.
45
+
46
+ ### "JA3/JA4 Missing"
47
+
48
+ **Cause:** Non-HTTPS traffic, Worker routing traffic, Orange-to-Orange traffic via Worker, or Bot Management skipped
49
+ **Solution:** JA3/JA4 only available for HTTPS/TLS traffic; check request routing
50
+
51
+ **JA3/JA4 Not User-Unique:** Same browser/library version = same fingerprint
52
+
53
+ - Don't use for user identification
54
+ - Use for client profiling only
55
+ - Fingerprints change with browser updates
56
+
57
+ ## Bot Verification Methods
58
+
59
+ Cloudflare verifies bots via:
60
+
61
+ 1. **Reverse DNS (IP validation):** Traditional method—bot IP resolves to expected domain
62
+ 2. **Web Bot Auth:** Modern cryptographic verification—faster propagation
63
+
64
+ When `verifiedBot=true`, bot passed at least one method.
65
+
66
+ **Inactive verified bots:** IPs removed after 24h of no traffic.
67
+
68
+ ## Detection Engine Behavior
69
+
70
+ | Engine | Score | Timing | Plan | Notes |
71
+ | --------------------- | ---------- | -------------- | ---------- | ------------------------------- |
72
+ | Heuristics | Always 1 | Immediate | All | Known fingerprints—overrides ML |
73
+ | ML | 1-99 | Immediate | All | Majority of detections |
74
+ | Anomaly Detection | Influences | After baseline | Enterprise | Optional, baseline analysis |
75
+ | JavaScript Detections | Pass/fail | After JS | Pro+ | Headless browser detection |
76
+ | Cloudflare Service | N/A | N/A | Enterprise | Zero Trust internal source |
77
+
78
+ **Priority:** Heuristics > ML—if heuristic matches, score=1 regardless of ML.
79
+
80
+ ## Limits
81
+
82
+ | Limit | Value | Notes |
83
+ | ----------------------------- | ----------------------------------------- | ------------------------------------------- |
84
+ | Bot Score = 0 | Means not computed | Not score = 100 |
85
+ | First request JSD data | May not be available | JSD data appears on subsequent requests |
86
+ | Score accuracy | Not 100% guaranteed | False positives/negatives possible |
87
+ | JSD on first HTML page visit | Not supported | Requires subsequent page load |
88
+ | JSD requirements | JavaScript-enabled browser | Won't work with JS disabled or ad blockers |
89
+ | JSD ETag stripping | Strips ETags from HTML responses | May affect caching behavior |
90
+ | JSD CSP compatibility | Requires specific CSP | Not compatible with some CSP configurations |
91
+ | JSD meta CSP tags | Not supported | Must use HTTP headers |
92
+ | JSD WebSocket support | Not supported | WebSocket endpoints won't work with JSD |
93
+ | JSD mobile app support | Native apps won't pass | Only works in browsers |
94
+ | JA3/JA4 traffic type | HTTPS/TLS only | Not available for non-HTTPS traffic |
95
+ | JA3/JA4 Worker routing | Missing for Worker-routed traffic | Check request routing |
96
+ | JA3/JA4 uniqueness | Not unique per user | Shared by clients with same browser/library |
97
+ | JA3/JA4 stability | Can change with updates | Browser/library updates affect fingerprints |
98
+ | WAF custom rules (Free) | 5 | Varies by plan |
99
+ | WAF custom rules (Pro) | 20 | Varies by plan |
100
+ | WAF custom rules (Business) | 100 | Varies by plan |
101
+ | WAF custom rules (Enterprise) | 1,000+ | Varies by plan |
102
+ | Workers CPU time | Varies by plan | Applies to bot logic |
103
+ | Bot Analytics sampling | 1-10% adaptive | High-volume zones sampled more aggressively |
104
+ | Bot Analytics history | 30 days max | Historical data retention limit |
105
+ | CSP requirements for JSD | Must allow `/cdn-cgi/challenge-platform/` | Required for JSD to function |
106
+
107
+ ### Plan Restrictions
108
+
109
+ | Feature | Free | Pro/Business | Enterprise |
110
+ | ------------------------- | ------- | ------------ | ---------- |
111
+ | Granular scores (1-99) | No | No | Yes |
112
+ | JA3/JA4 | No | No | Yes |
113
+ | Anomaly Detection | No | No | Yes |
114
+ | Corporate Proxy detection | No | No | Yes |
115
+ | Verified bot categories | Limited | Limited | Full |
116
+ | Custom WAF rules | 5 | 20/100 | 1,000+ |
@@ -0,0 +1,181 @@
1
+ # Bot Management Patterns
2
+
3
+ ## E-commerce Protection
4
+
5
+ ```txt
6
+ # High security for checkout
7
+ (cf.bot_management.score lt 50 and http.request.uri.path in {"/checkout" "/cart/add"} and not cf.bot_management.verified_bot and not cf.bot_management.corporate_proxy)
8
+ Action: Managed Challenge
9
+ ```
10
+
11
+ ## API Protection
12
+
13
+ ```txt
14
+ # Protect API with JS detection + score
15
+ (http.request.uri.path matches "^/api/" and (cf.bot_management.score lt 30 or not cf.bot_management.js_detection.passed) and not cf.bot_management.verified_bot)
16
+ Action: Block
17
+ ```
18
+
19
+ ## SEO-Friendly Bot Handling
20
+
21
+ ```txt
22
+ # Allow search engine crawlers
23
+ (cf.bot_management.score lt 30 and not cf.verified_bot_category in {"Search Engine Crawler"})
24
+ Action: Managed Challenge
25
+ ```
26
+
27
+ ## Block AI Scrapers
28
+
29
+ ```txt
30
+ # Block training crawlers only (allow AI assistants/search)
31
+ (cf.verified_bot_category eq "AI Crawler")
32
+ Action: Block
33
+
34
+ # Block all AI-related bots (training + assistants + search)
35
+ (cf.verified_bot_category in {"AI Crawler" "AI Assistant" "AI Search"})
36
+ Action: Block
37
+
38
+ # Allow AI Search, block AI Crawler and AI Assistant
39
+ (cf.verified_bot_category in {"AI Crawler" "AI Assistant"})
40
+ Action: Block
41
+
42
+ # Or use dashboard: Security > Settings > Bot Management > Block AI Bots
43
+ ```
44
+
45
+ ## Rate Limiting by Bot Score
46
+
47
+ ```txt
48
+ # Stricter limits for suspicious traffic
49
+ (cf.bot_management.score lt 50)
50
+ Rate: 10 requests per 10 seconds
51
+
52
+ (cf.bot_management.score ge 50)
53
+ Rate: 100 requests per 10 seconds
54
+ ```
55
+
56
+ ## Mobile App Allowlisting
57
+
58
+ ```txt
59
+ # Identify mobile app by JA3/JA4
60
+ (cf.bot_management.ja4 in {"fingerprint1" "fingerprint2"})
61
+ Action: Skip (all remaining rules)
62
+ ```
63
+
64
+ ## Datacenter Detection
65
+
66
+ ```typescript
67
+ import type { IncomingRequestCfProperties } from '@cloudflare/workers-types'
68
+
69
+ // Low score + not corporate proxy = likely datacenter bot
70
+ export default {
71
+ async fetch(request: Request): Promise<Response> {
72
+ const cf = request.cf as IncomingRequestCfProperties | undefined
73
+ const botMgmt = cf?.botManagement
74
+
75
+ if (botMgmt?.score && botMgmt.score < 30 && !botMgmt.corporateProxy && !botMgmt.verifiedBot) {
76
+ return new Response('Datacenter traffic blocked', { status: 403 })
77
+ }
78
+
79
+ return fetch(request)
80
+ },
81
+ }
82
+ ```
83
+
84
+ ## Conditional Delay (Tarpit)
85
+
86
+ ```typescript
87
+ import type { IncomingRequestCfProperties } from '@cloudflare/workers-types'
88
+
89
+ // Add delay proportional to bot suspicion
90
+ export default {
91
+ async fetch(request: Request): Promise<Response> {
92
+ const cf = request.cf as IncomingRequestCfProperties | undefined
93
+ const botMgmt = cf?.botManagement
94
+
95
+ if (botMgmt?.score && botMgmt.score < 50 && !botMgmt.verifiedBot) {
96
+ // Delay: 0-2 seconds for scores 50-0
97
+ const delayMs = Math.max(0, (50 - botMgmt.score) * 40)
98
+ await new Promise((r) => setTimeout(r, delayMs))
99
+ }
100
+
101
+ return fetch(request)
102
+ },
103
+ }
104
+ ```
105
+
106
+ ## Layered Defense
107
+
108
+ ```txt
109
+ 1. Bot Management (score-based)
110
+ 2. JavaScript Detections (for JS-capable clients)
111
+ 3. Rate Limiting (fallback protection)
112
+ 4. WAF Managed Rules (OWASP, etc.)
113
+ ```
114
+
115
+ ## Progressive Enhancement
116
+
117
+ ```txt
118
+ Public content: High threshold (score < 10)
119
+ Authenticated: Medium threshold (score < 30)
120
+ Sensitive: Low threshold (score < 50) + JSD
121
+ ```
122
+
123
+ ## Zero Trust for Bots
124
+
125
+ ```txt
126
+ 1. Default deny (all scores < 30)
127
+ 2. Allowlist verified bots
128
+ 3. Allowlist mobile apps (JA3/JA4)
129
+ 4. Allowlist corporate proxies
130
+ 5. Allowlist static resources
131
+ ```
132
+
133
+ ## Workers: Score + JS Detection
134
+
135
+ ```typescript
136
+ import type { IncomingRequestCfProperties } from '@cloudflare/workers-types'
137
+
138
+ export default {
139
+ async fetch(request: Request): Promise<Response> {
140
+ const cf = request.cf as IncomingRequestCfProperties | undefined
141
+ const botMgmt = cf?.botManagement
142
+ const url = new URL(request.url)
143
+
144
+ if (botMgmt?.staticResource) return fetch(request) // Skip static
145
+
146
+ // API endpoints: require JS detection + good score
147
+ if (url.pathname.startsWith('/api/')) {
148
+ const jsDetectionPassed = botMgmt?.jsDetection?.passed ?? false
149
+ const score = botMgmt?.score ?? 100
150
+
151
+ if (!jsDetectionPassed || score < 30) {
152
+ return new Response('Unauthorized', { status: 401 })
153
+ }
154
+ }
155
+
156
+ return fetch(request)
157
+ },
158
+ }
159
+ ```
160
+
161
+ ## Rate Limiting by JWT Claim + Bot Score
162
+
163
+ ```txt
164
+ # Enterprise: Combine bot score with JWT validation
165
+ Rate limiting > Custom rules
166
+ - Field: lookup_json_string(http.request.jwt.claims["{config_id}"][0], "sub")
167
+ - Matches: user ID claim
168
+ - Additional condition: cf.bot_management.score lt 50
169
+ ```
170
+
171
+ ## WAF Integration Points
172
+
173
+ - **WAF Custom Rules**: Primary enforcement mechanism
174
+ - **Rate Limiting Rules**: Bot score as dimension, stricter limits for low scores
175
+ - **Transform Rules**: Pass score to origin via custom header
176
+ - **Workers**: Programmatic bot logic, custom scoring algorithms
177
+ - **Page Rules / Configuration Rules**: Zone-level overrides, path-specific settings
178
+
179
+ ## See Also
180
+
181
+ - [gotchas.md](./gotchas.md) - Common errors, false positives/negatives, limitations
@@ -0,0 +1,84 @@
1
+ # Cloudflare Browser Rendering Skill Reference
2
+
3
+ **Description**: Expert knowledge for Cloudflare Browser Rendering - control headless Chrome on Cloudflare's global network for browser automation, screenshots, PDFs, web scraping, testing, and content generation.
4
+
5
+ **When to use**: Any task involving Cloudflare Browser Rendering including: taking screenshots, generating PDFs, web scraping, browser automation, testing web applications, extracting structured data, capturing page metrics, or automating browser interactions.
6
+
7
+ ## Decision Tree
8
+
9
+ ### REST API vs Workers Bindings
10
+
11
+ **Use REST API when:**
12
+
13
+ - One-off, stateless tasks (screenshot, PDF, content fetch)
14
+ - No Workers infrastructure yet
15
+ - Simple integrations from external services
16
+ - Need quick prototyping without deployment
17
+
18
+ **Use Workers Bindings when:**
19
+
20
+ - Complex browser automation workflows
21
+ - Need session reuse for performance
22
+ - Multiple page interactions per request
23
+ - Custom scripting and logic required
24
+ - Building production applications
25
+
26
+ ### Puppeteer vs Playwright
27
+
28
+ | Feature | Puppeteer | Playwright |
29
+ | -------------- | ---------------------------- | ------------------------- |
30
+ | API Style | Chrome DevTools Protocol | High-level abstractions |
31
+ | Selectors | CSS, XPath | CSS, text, role, test-id |
32
+ | Best for | Advanced control, CDP access | Quick automation, testing |
33
+ | Learning curve | Steeper | Gentler |
34
+
35
+ **Use Puppeteer:** Need CDP protocol access, Chrome-specific features, migration from existing Puppeteer code
36
+ **Use Playwright:** Modern selector APIs, cross-browser patterns, faster development
37
+
38
+ ## Tier Limits Summary
39
+
40
+ | Limit | Free Tier | Paid Tier |
41
+ | ------------------- | ---------- | ----------- |
42
+ | Daily browser time | 10 minutes | Unlimited\* |
43
+ | Concurrent sessions | 3 | 30 |
44
+ | Requests per minute | 6 | 180 |
45
+
46
+ \*Subject to fair-use policy. See [gotchas.md](gotchas.md) for details.
47
+
48
+ ## Reading Order
49
+
50
+ **New to Browser Rendering:**
51
+
52
+ 1. [configuration.md](configuration.md) - Setup and deployment
53
+ 2. [patterns.md](patterns.md) - Common use cases with examples
54
+ 3. [api.md](api.md) - API reference
55
+ 4. [gotchas.md](gotchas.md) - Avoid common pitfalls
56
+
57
+ **Specific task:**
58
+
59
+ - **Setup/deployment** → [configuration.md](configuration.md)
60
+ - **API reference/endpoints** → [api.md](api.md)
61
+ - **Example code/patterns** → [patterns.md](patterns.md)
62
+ - **Debugging/troubleshooting** → [gotchas.md](gotchas.md)
63
+
64
+ **REST API users:**
65
+
66
+ - Start with [api.md](api.md) REST API section
67
+ - Check [gotchas.md](gotchas.md) for rate limits
68
+
69
+ **Workers users:**
70
+
71
+ - Start with [configuration.md](configuration.md)
72
+ - Review [patterns.md](patterns.md) for session management
73
+ - Reference [api.md](api.md) for Workers Bindings
74
+
75
+ ## In This Reference
76
+
77
+ - **[configuration.md](configuration.md)** - Setup, deployment, wrangler config, compatibility
78
+ - **[api.md](api.md)** - REST API endpoints + Workers Bindings (Puppeteer/Playwright)
79
+ - **[patterns.md](patterns.md)** - Common patterns, use cases, real examples
80
+ - **[gotchas.md](gotchas.md)** - Troubleshooting, best practices, tier limits, common errors
81
+
82
+ ## See Also
83
+
84
+ - [Cloudflare Docs](https://developers.cloudflare.com/browser-rendering/)
@@ -0,0 +1,108 @@
1
+ # Browser Rendering API
2
+
3
+ ## REST API
4
+
5
+ **Base:** `https://api.cloudflare.com/client/v4/accounts/{accountId}/browser-rendering`
6
+ **Auth:** `Authorization: Bearer <token>` (Browser Rendering - Edit permission)
7
+
8
+ ### Endpoints
9
+
10
+ | Endpoint | Description | Key Options |
11
+ | ------------- | ------------------------ | ------------------------------------------- |
12
+ | `/content` | Get rendered HTML | `url`, `waitUntil` |
13
+ | `/screenshot` | Capture image | `screenshotOptions: {type, fullPage, clip}` |
14
+ | `/pdf` | Generate PDF | `pdfOptions: {format, landscape, margin}` |
15
+ | `/snapshot` | HTML + inlined resources | `url` |
16
+ | `/scrape` | Extract by selectors | `selectors: ["h1", ".price"]` |
17
+ | `/json` | AI-structured extraction | `schema: {name: "string", price: "number"}` |
18
+ | `/links` | Get all links | `url` |
19
+ | `/markdown` | Convert to markdown | `url` |
20
+
21
+ ```bash
22
+ curl -X POST '.../browser-rendering/screenshot' \
23
+ -H "Authorization: Bearer $TOKEN" \
24
+ -d '{"url":"https://example.com","screenshotOptions":{"fullPage":true}}'
25
+ ```
26
+
27
+ ## Workers Binding
28
+
29
+ ```jsonc
30
+ // wrangler.jsonc
31
+ { "browser": { "binding": "MYBROWSER" } }
32
+ ```
33
+
34
+ ## Puppeteer
35
+
36
+ ```typescript
37
+ import puppeteer from '@cloudflare/puppeteer'
38
+
39
+ const browser = await puppeteer.launch(env.MYBROWSER, { keep_alive: 600000 })
40
+ const page = await browser.newPage()
41
+ await page.goto('https://example.com', { waitUntil: 'networkidle0' })
42
+
43
+ // Content
44
+ const html = await page.content()
45
+ const title = await page.title()
46
+
47
+ // Screenshot/PDF
48
+ await page.screenshot({ fullPage: true, type: 'png' })
49
+ await page.pdf({ format: 'A4', printBackground: true })
50
+
51
+ // Interaction
52
+ await page.click('#button')
53
+ await page.type('#input', 'text')
54
+ await page.evaluate(() => document.querySelector('h1')?.textContent)
55
+
56
+ // Session management
57
+ const sessions = await puppeteer.sessions(env.MYBROWSER)
58
+ const limits = await puppeteer.limits(env.MYBROWSER)
59
+
60
+ await browser.close()
61
+ ```
62
+
63
+ ## Playwright
64
+
65
+ ```typescript
66
+ import { launch, connect } from '@cloudflare/playwright'
67
+
68
+ const browser = await launch(env.MYBROWSER, { keep_alive: 600000 })
69
+ const page = await browser.newPage()
70
+
71
+ await page.goto('https://example.com', { waitUntil: 'networkidle' })
72
+
73
+ // Modern selectors
74
+ await page.locator('.button').click()
75
+ await page.getByText('Submit').click()
76
+ await page.getByTestId('search').fill('query')
77
+
78
+ // Context for isolation
79
+ const context = await browser.newContext({
80
+ viewport: { width: 1920, height: 1080 },
81
+ userAgent: 'custom',
82
+ })
83
+
84
+ await browser.close()
85
+ ```
86
+
87
+ ## Session Management
88
+
89
+ ```typescript
90
+ // List sessions
91
+ await puppeteer.sessions(env.MYBROWSER)
92
+
93
+ // Connect to existing
94
+ await puppeteer.connect(env.MYBROWSER, sessionId)
95
+
96
+ // Check limits
97
+ await puppeteer.limits(env.MYBROWSER)
98
+ // { remaining: ms, total: ms, concurrent: n }
99
+ ```
100
+
101
+ ## Key Options
102
+
103
+ | Option | Values |
104
+ | ----------------- | ---------------------------------------------------------- |
105
+ | `waitUntil` | `load`, `domcontentloaded`, `networkidle0`, `networkidle2` |
106
+ | `keep_alive` | Max 600000ms (10 min) |
107
+ | `screenshot.type` | `png`, `jpeg` |
108
+ | `pdf.format` | `A4`, `Letter`, `Legal` |
@@ -0,0 +1,78 @@
1
+ # Configuration & Setup
2
+
3
+ ## Installation
4
+
5
+ ```bash
6
+ npm install @cloudflare/puppeteer # or @cloudflare/playwright
7
+ ```
8
+
9
+ **Use Cloudflare packages** - standard `puppeteer`/`playwright` won't work in Workers.
10
+
11
+ ## wrangler.json
12
+
13
+ ```json
14
+ {
15
+ "name": "browser-worker",
16
+ "main": "src/index.ts",
17
+ "compatibility_date": "2025-01-01",
18
+ "compatibility_flags": ["nodejs_compat"],
19
+ "browser": {
20
+ "binding": "MYBROWSER"
21
+ }
22
+ }
23
+ ```
24
+
25
+ **Required:** `nodejs_compat` flag and `browser.binding`.
26
+
27
+ ## TypeScript
28
+
29
+ ```typescript
30
+ interface Env {
31
+ MYBROWSER: Fetcher
32
+ }
33
+
34
+ export default {
35
+ async fetch(request: Request, env: Env): Promise<Response> {
36
+ // ...
37
+ },
38
+ } satisfies ExportedHandler<Env>
39
+ ```
40
+
41
+ ## Development
42
+
43
+ ```bash
44
+ wrangler dev --remote # --remote required for browser binding
45
+ ```
46
+
47
+ **Local mode does NOT support Browser Rendering** - must use `--remote`.
48
+
49
+ ## REST API
50
+
51
+ No wrangler config needed. Get API token with "Browser Rendering - Edit" permission.
52
+
53
+ ```bash
54
+ curl -X POST \
55
+ 'https://api.cloudflare.com/client/v4/accounts/{accountId}/browser-rendering/screenshot' \
56
+ -H 'Authorization: Bearer TOKEN' \
57
+ -d '{"url": "https://example.com"}' --output screenshot.png
58
+ ```
59
+
60
+ ## Requirements
61
+
62
+ | Requirement | Value |
63
+ | --------------------- | --------------------------------- |
64
+ | Node.js compatibility | `nodejs_compat` flag |
65
+ | Compatibility date | 2023-03-01+ |
66
+ | Module format | ES modules only |
67
+ | Browser | Chromium 119+ (no Firefox/Safari) |
68
+
69
+ **Not supported:** WebGL, WebRTC, extensions, `file://` protocol, Service Worker syntax.
70
+
71
+ ## Troubleshooting
72
+
73
+ | Error | Solution |
74
+ | --------------------------------- | ----------------------------------- |
75
+ | `MYBROWSER is undefined` | Use `wrangler dev --remote` |
76
+ | `nodejs_compat not enabled` | Add to `compatibility_flags` |
77
+ | `Module not found` | `npm install @cloudflare/puppeteer` |
78
+ | `Browser Rendering not available` | Enable in dashboard |
@@ -0,0 +1,91 @@
1
+ # Browser Rendering Gotchas
2
+
3
+ ## Tier Limits
4
+
5
+ | Limit | Free | Paid |
6
+ | ------------------- | ---------- | ----------- |
7
+ | Daily browser time | 10 min | Unlimited\* |
8
+ | Concurrent sessions | 3 | 30 |
9
+ | Requests/minute | 6 | 180 |
10
+ | Session keep-alive | 10 min max | 10 min max |
11
+
12
+ \*Subject to fair-use policy.
13
+
14
+ **Check quota:**
15
+
16
+ ```typescript
17
+ const limits = await puppeteer.limits(env.MYBROWSER)
18
+ // { remaining: 540000, total: 600000, concurrent: 2 }
19
+ ```
20
+
21
+ ## Always Close Browsers
22
+
23
+ ```typescript
24
+ const browser = await puppeteer.launch(env.MYBROWSER)
25
+ try {
26
+ const page = await browser.newPage()
27
+ await page.goto('https://example.com')
28
+ return new Response(await page.content())
29
+ } finally {
30
+ await browser.close() // ALWAYS in finally
31
+ }
32
+ ```
33
+
34
+ **Workers vs REST:** REST auto-closes after timeout. Workers must call `close()` or session stays open until `keep_alive` expires.
35
+
36
+ ## Optimize Concurrency
37
+
38
+ ```typescript
39
+ // ❌ 3 sessions (hits free tier limit)
40
+ const browser1 = await puppeteer.launch(env.MYBROWSER)
41
+ const browser2 = await puppeteer.launch(env.MYBROWSER)
42
+
43
+ // ✅ 1 session, multiple pages
44
+ const browser = await puppeteer.launch(env.MYBROWSER)
45
+ const page1 = await browser.newPage()
46
+ const page2 = await browser.newPage()
47
+ ```
48
+
49
+ ## Common Errors
50
+
51
+ | Error | Cause | Fix |
52
+ | ----------------------------- | --------------------------------------- | --------------------------------------------- |
53
+ | Session limit exceeded | Too many concurrent | Close unused browsers, use pages not browsers |
54
+ | Page navigation timeout | Slow page or `networkidle` on busy page | Increase timeout, use `waitUntil: "load"` |
55
+ | Session not found | Expired session | Catch error, launch new session |
56
+ | Evaluation failed | DOM element missing | Use `?.` optional chaining |
57
+ | Protocol error: Target closed | Page closed during operation | Await all ops before closing |
58
+
59
+ ## page.evaluate() Gotchas
60
+
61
+ ```typescript
62
+ // ❌ Outer scope not available
63
+ const selector = 'h1'
64
+ await page.evaluate(() => document.querySelector(selector))
65
+
66
+ // ✅ Pass as argument
67
+ await page.evaluate((sel) => document.querySelector(sel)?.textContent, selector)
68
+ ```
69
+
70
+ ## Performance
71
+
72
+ **waitUntil options (fastest to slowest):**
73
+
74
+ 1. `domcontentloaded` - DOM ready
75
+ 2. `load` - load event (default)
76
+ 3. `networkidle0` - no network for 500ms
77
+
78
+ **Block unnecessary resources:**
79
+
80
+ ```typescript
81
+ await page.setRequestInterception(true)
82
+ page.on('request', (req) => {
83
+ if (['image', 'stylesheet', 'font'].includes(req.resourceType())) {
84
+ req.abort()
85
+ } else {
86
+ req.continue()
87
+ }
88
+ })
89
+ ```
90
+
91
+ **Session reuse:** Cold start ~1-2s, warm connect ~100-200ms. Store sessionId in KV for reuse.