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,215 @@
1
+ # Configuration
2
+
3
+ ## Prerequisites
4
+
5
+ **API Token**: Create at https://dash.cloudflare.com/profile/api-tokens
6
+
7
+ - Permission: `Zone.WAF Edit` or `Zone.Firewall Services Edit`
8
+ - Zone Resources: Include specific zones or all zones
9
+
10
+ **Zone ID**: Found in dashboard > Overview > API section (right sidebar)
11
+
12
+ ```bash
13
+ # Set environment variables
14
+ export CF_API_TOKEN="your_api_token_here"
15
+ export ZONE_ID="your_zone_id_here"
16
+ ```
17
+
18
+ ## TypeScript SDK Usage
19
+
20
+ ```bash
21
+ npm install cloudflare
22
+ ```
23
+
24
+ ```typescript
25
+ import Cloudflare from 'cloudflare'
26
+
27
+ const client = new Cloudflare({ apiToken: process.env.CF_API_TOKEN })
28
+
29
+ // Custom rules
30
+ await client.rulesets.create({
31
+ zone_id: process.env.ZONE_ID,
32
+ kind: 'zone',
33
+ phase: 'http_request_firewall_custom',
34
+ name: 'Custom WAF',
35
+ rules: [
36
+ { action: 'block', expression: 'cf.waf.score gt 50', enabled: true },
37
+ { action: 'challenge', expression: 'http.request.uri.path eq "/admin"', enabled: true },
38
+ ],
39
+ })
40
+
41
+ // Managed ruleset
42
+ await client.rulesets.create({
43
+ zone_id: process.env.ZONE_ID,
44
+ phase: 'http_request_firewall_managed',
45
+ rules: [
46
+ {
47
+ action: 'execute',
48
+ action_parameters: { id: 'efb7b8c949ac4650a09736fc376e9aee' },
49
+ expression: 'true',
50
+ },
51
+ ],
52
+ })
53
+
54
+ // Rate limiting
55
+ await client.rulesets.create({
56
+ zone_id: process.env.ZONE_ID,
57
+ phase: 'http_ratelimit',
58
+ rules: [
59
+ {
60
+ action: 'block',
61
+ expression: 'http.request.uri.path starts_with "/api"',
62
+ action_parameters: {
63
+ ratelimit: {
64
+ characteristics: ['cf.colo.id', 'ip.src'],
65
+ period: 60,
66
+ requests_per_period: 100,
67
+ mitigation_timeout: 600,
68
+ },
69
+ },
70
+ },
71
+ ],
72
+ })
73
+ ```
74
+
75
+ ## Terraform Configuration
76
+
77
+ ```hcl
78
+ provider "cloudflare" {
79
+ api_token = var.cloudflare_api_token
80
+ }
81
+
82
+ resource "cloudflare_ruleset" "waf_custom" {
83
+ zone_id = var.zone_id
84
+ kind = "zone"
85
+ phase = "http_request_firewall_custom"
86
+
87
+ rules {
88
+ action = "block"
89
+ expression = "cf.waf.score gt 50"
90
+ }
91
+ }
92
+ ```
93
+
94
+ **Managed Ruleset & Rate Limiting**:
95
+
96
+ ```hcl
97
+ resource "cloudflare_ruleset" "waf_managed" {
98
+ zone_id = var.zone_id
99
+ name = "Managed Ruleset"
100
+ kind = "zone"
101
+ phase = "http_request_firewall_managed"
102
+
103
+ rules {
104
+ action = "execute"
105
+ action_parameters {
106
+ id = "efb7b8c949ac4650a09736fc376e9aee"
107
+ overrides {
108
+ rules {
109
+ id = "5de7edfa648c4d6891dc3e7f84534ffa"
110
+ action = "log"
111
+ }
112
+ }
113
+ }
114
+ expression = "true"
115
+ }
116
+ }
117
+
118
+ resource "cloudflare_ruleset" "rate_limiting" {
119
+ zone_id = var.zone_id
120
+ phase = "http_ratelimit"
121
+
122
+ rules {
123
+ action = "block"
124
+ expression = "http.request.uri.path starts_with \"/api\""
125
+ ratelimit {
126
+ characteristics = ["cf.colo.id", "ip.src"]
127
+ period = 60
128
+ requests_per_period = 100
129
+ mitigation_timeout = 600
130
+ }
131
+ }
132
+ }
133
+ ```
134
+
135
+ ## Pulumi Configuration
136
+
137
+ ```typescript
138
+ import * as cloudflare from '@pulumi/cloudflare'
139
+
140
+ const zoneId = 'zone_id'
141
+
142
+ // Custom rules
143
+ const wafCustom = new cloudflare.Ruleset('waf-custom', {
144
+ zoneId,
145
+ phase: 'http_request_firewall_custom',
146
+ rules: [
147
+ { action: 'block', expression: 'cf.waf.score gt 50', enabled: true },
148
+ { action: 'challenge', expression: 'http.request.uri.path eq "/admin"', enabled: true },
149
+ ],
150
+ })
151
+
152
+ // Managed ruleset
153
+ const wafManaged = new cloudflare.Ruleset('waf-managed', {
154
+ zoneId,
155
+ phase: 'http_request_firewall_managed',
156
+ rules: [
157
+ {
158
+ action: 'execute',
159
+ actionParameters: { id: 'efb7b8c949ac4650a09736fc376e9aee' },
160
+ expression: 'true',
161
+ },
162
+ ],
163
+ })
164
+
165
+ // Rate limiting
166
+ const rateLimiting = new cloudflare.Ruleset('rate-limiting', {
167
+ zoneId,
168
+ phase: 'http_ratelimit',
169
+ rules: [
170
+ {
171
+ action: 'block',
172
+ expression: 'http.request.uri.path starts_with "/api"',
173
+ ratelimit: {
174
+ characteristics: ['cf.colo.id', 'ip.src'],
175
+ period: 60,
176
+ requestsPerPeriod: 100,
177
+ mitigationTimeout: 600,
178
+ },
179
+ },
180
+ ],
181
+ })
182
+ ```
183
+
184
+ ## Dashboard Configuration
185
+
186
+ 1. Navigate to: **Security** > **WAF**
187
+ 2. Select tab:
188
+ - **Managed rules** - Deploy/configure managed rulesets
189
+ - **Custom rules** - Create custom rules
190
+ - **Rate limiting rules** - Configure rate limits
191
+ 3. Click **Deploy** or **Create rule**
192
+
193
+ **Testing**: Use Security Events to test expressions before deploying.
194
+
195
+ ## Wrangler Integration
196
+
197
+ WAF configuration is zone-level (not Worker-specific). Configuration methods:
198
+
199
+ - Dashboard UI
200
+ - Cloudflare API via SDK
201
+ - Terraform/Pulumi (IaC)
202
+
203
+ **Workers benefit from WAF automatically** - no Worker code changes needed.
204
+
205
+ **Example: Query WAF API from Worker**:
206
+
207
+ ```typescript
208
+ export default {
209
+ async fetch(request: Request, env: Env): Promise<Response> {
210
+ return fetch(`https://api.cloudflare.com/client/v4/zones/${env.ZONE_ID}/rulesets`, {
211
+ headers: { Authorization: `Bearer ${env.CF_API_TOKEN}` },
212
+ })
213
+ },
214
+ }
215
+ ```
@@ -0,0 +1,208 @@
1
+ # Gotchas & Troubleshooting
2
+
3
+ ## Execution Order
4
+
5
+ **Problem:** Rules execute in unexpected order
6
+ **Cause:** Misunderstanding phase execution
7
+ **Solution:**
8
+
9
+ Phases execute sequentially (can't be changed):
10
+
11
+ 1. `http_request_firewall_custom` - Custom rules
12
+ 2. `http_request_firewall_managed` - Managed rulesets
13
+ 3. `http_ratelimit` - Rate limiting
14
+
15
+ Within phase: top-to-bottom, first match wins (unless `skip`)
16
+
17
+ ```typescript
18
+ // WRONG: Can't mix phase-specific actions
19
+ await client.rulesets.create({
20
+ phase: 'http_request_firewall_custom',
21
+ rules: [
22
+ { action: 'block', expression: 'cf.waf.score gt 50' },
23
+ { action: 'execute', action_parameters: { id: 'managed_id' } }, // WRONG
24
+ ],
25
+ });
26
+
27
+ // CORRECT: Separate rulesets per phase
28
+ await client.rulesets.create({ phase: 'http_request_firewall_custom', rules: [...] });
29
+ await client.rulesets.create({ phase: 'http_request_firewall_managed', rules: [...] });
30
+ ```
31
+
32
+ ## Expression Errors
33
+
34
+ **Problem:** Syntax errors prevent deployment
35
+ **Cause:** Invalid field/operator/syntax
36
+ **Solution:**
37
+
38
+ ```typescript
39
+ // Common mistakes
40
+ 'http.request.path' → 'http.request.uri.path' // Correct field
41
+ 'ip.geoip.country eq US' → 'ip.geoip.country eq "US"' // Quote strings
42
+ 'http.user_agent eq "Mozilla"' → 'lower(http.user_agent) contains "mozilla"' // Case sensitivity
43
+ 'matches ".*[.jpg"' → 'matches ".*\\.jpg$"' // Valid regex
44
+ ```
45
+
46
+ Test expressions in Security Events before deploying.
47
+
48
+ ## Skip Rule Pitfalls
49
+
50
+ **Problem:** Skip rules don't work as expected
51
+ **Cause:** Misunderstanding skip scope
52
+ **Solution:**
53
+
54
+ Skip types:
55
+
56
+ - `ruleset: 'current'` - Skip remaining rules in current ruleset only
57
+ - `phases: ['phase_name']` - Skip entire phases
58
+
59
+ ```typescript
60
+ // WRONG: Trying to skip managed rules from custom phase
61
+ // In http_request_firewall_custom:
62
+ {
63
+ action: 'skip',
64
+ action_parameters: { ruleset: 'current' },
65
+ expression: 'ip.src in {192.0.2.0/24}',
66
+ }
67
+ // This only skips remaining custom rules, not managed rules
68
+
69
+ // CORRECT: Skip specific phases
70
+ {
71
+ action: 'skip',
72
+ action_parameters: {
73
+ phases: ['http_request_firewall_managed', 'http_ratelimit'],
74
+ },
75
+ expression: 'ip.src in {192.0.2.0/24}',
76
+ }
77
+ ```
78
+
79
+ ## Update Replaces All Rules
80
+
81
+ **Problem:** Updating ruleset deletes other rules
82
+ **Cause:** `update()` replaces entire rule list
83
+ **Solution:**
84
+
85
+ ```typescript
86
+ // WRONG: This deletes all existing rules!
87
+ await client.rulesets.update({
88
+ zone_id: 'zone_id',
89
+ ruleset_id: 'ruleset_id',
90
+ rules: [{ action: 'block', expression: 'cf.waf.score gt 50' }],
91
+ })
92
+
93
+ // CORRECT: Get existing rules first
94
+ const ruleset = await client.rulesets.get({ zone_id: 'zone_id', ruleset_id: 'ruleset_id' })
95
+ await client.rulesets.update({
96
+ zone_id: 'zone_id',
97
+ ruleset_id: 'ruleset_id',
98
+ rules: [...ruleset.rules, { action: 'block', expression: 'cf.waf.score gt 50' }],
99
+ })
100
+ ```
101
+
102
+ ## Override Conflicts
103
+
104
+ **Problem:** Managed ruleset overrides don't apply
105
+ **Cause:** Rule ID doesn't exist or category name incorrect
106
+ **Solution:**
107
+
108
+ ```typescript
109
+ // List managed ruleset rules to find IDs
110
+ const ruleset = await client.rulesets.get({
111
+ zone_id: 'zone_id',
112
+ ruleset_id: 'efb7b8c949ac4650a09736fc376e9aee',
113
+ });
114
+ console.log(ruleset.rules.map(r => ({ id: r.id, description: r.description })));
115
+
116
+ // Use correct IDs in overrides
117
+ { action: 'execute', action_parameters: { id: 'efb7b8c949ac4650a09736fc376e9aee',
118
+ overrides: { rules: [{ id: '5de7edfa648c4d6891dc3e7f84534ffa', action: 'log' }] } } }
119
+ ```
120
+
121
+ ## False Positives
122
+
123
+ **Problem:** Legitimate traffic blocked
124
+ **Cause:** Aggressive rules/thresholds
125
+ **Solution:**
126
+
127
+ 1. Start with log mode: `overrides: { action: 'log' }`
128
+ 2. Review Security Events to identify false positives
129
+ 3. Override specific rules: `overrides: { rules: [{ id: 'rule_id', action: 'log' }] }`
130
+
131
+ ## Rate Limiting NAT Issues
132
+
133
+ **Problem:** Users behind NAT hit rate limits too quickly
134
+ **Cause:** Multiple users sharing single IP
135
+ **Solution:**
136
+
137
+ Add more characteristics: User-Agent, session cookie, or authorization header
138
+
139
+ ```typescript
140
+ {
141
+ action: 'block',
142
+ expression: 'http.request.uri.path starts_with "/api"',
143
+ action_parameters: {
144
+ ratelimit: {
145
+ characteristics: ['cf.colo.id', 'ip.src', 'http.request.cookies["session"][0]'],
146
+ period: 60,
147
+ requests_per_period: 100,
148
+ },
149
+ },
150
+ }
151
+ ```
152
+
153
+ ## Performance Issues
154
+
155
+ **Problem:** Increased latency
156
+ **Cause:** Complex expressions, excessive rules
157
+ **Solution:**
158
+
159
+ 1. Skip static assets early: `action: 'skip'` for `\\.(jpg|css|js)$`
160
+ 2. Path-based deployment: Only run managed on `/api` or `/admin`
161
+ 3. Disable unused categories: `{ category: 'wordpress', enabled: false }`
162
+ 4. Prefer string operators over regex: `starts_with` vs `matches`
163
+
164
+ ## Limits & Quotas
165
+
166
+ | Resource | Free | Pro | Business | Enterprise |
167
+ | -------------------------- | ---------- | ---------- | ---------- | ---------- |
168
+ | Custom rules | 5 | 20 | 100 | 1000 |
169
+ | Rate limiting rules | 1 | 10 | 25 | 100 |
170
+ | Rule expression length | 4096 chars | 4096 chars | 4096 chars | 4096 chars |
171
+ | Rules per ruleset | 75 | 75 | 400 | 1000 |
172
+ | Managed rulesets | Yes | Yes | Yes | Yes |
173
+ | Rate limit characteristics | 2 | 3 | 5 | 5 |
174
+
175
+ **Important Notes:**
176
+
177
+ - Rules execute in order; first match wins (except skip rules)
178
+ - Expression evaluation stops at first `false` in AND chains
179
+ - `matches` regex operator is slower than string operators
180
+ - Rate limit counting happens before mitigation
181
+
182
+ ## API Errors
183
+
184
+ **Problem:** API calls fail with cryptic errors
185
+ **Cause:** Invalid parameters or permissions
186
+ **Solution:**
187
+
188
+ ```typescript
189
+ // Error: "Invalid phase" → Use exact phase name
190
+ phase: 'http_request_firewall_custom'
191
+
192
+ // Error: "Ruleset already exists" → Use update() or list first
193
+ const rulesets = await client.rulesets.list({ zone_id, phase: 'http_request_firewall_custom' });
194
+ if (rulesets.result.length > 0) {
195
+ await client.rulesets.update({ zone_id, ruleset_id: rulesets.result[0].id, rules: [...] });
196
+ }
197
+
198
+ // Error: "Action not supported" → Check phase/action compatibility
199
+ // 'execute' only in http_request_firewall_managed
200
+ // Rate limit config only in http_ratelimit phase
201
+
202
+ // Error: "Expression parse error" → Common fixes:
203
+ 'ip.geoip.country eq "US"' // Quote strings
204
+ 'cf.waf.score gt 40' // Use 'gt' not '>'
205
+ 'http.request.uri.path' // Not 'http.request.path'
206
+ ```
207
+
208
+ **Tip**: Test expressions in dashboard Security Events before deploying.
@@ -0,0 +1,236 @@
1
+ # Common Patterns
2
+
3
+ ## Deploy Managed Rulesets
4
+
5
+ ```typescript
6
+ // Deploy Cloudflare Managed Ruleset (default)
7
+ await client.rulesets.create({
8
+ zone_id: 'zone_id',
9
+ kind: 'zone',
10
+ phase: 'http_request_firewall_managed',
11
+ name: 'Cloudflare Managed Ruleset',
12
+ rules: [
13
+ {
14
+ action: 'execute',
15
+ action_parameters: {
16
+ id: 'efb7b8c949ac4650a09736fc376e9aee', // Cloudflare Managed
17
+ // Or: '4814384a9e5d4991b9815dcfc25d2f1f' for OWASP CRS
18
+ // Or: 'c2e184081120413c86c3ab7e14069605' for Exposed Credentials
19
+ },
20
+ expression: 'true', // All requests
21
+ // Or: 'http.request.uri.path starts_with "/api"' for specific paths
22
+ enabled: true,
23
+ },
24
+ ],
25
+ })
26
+ ```
27
+
28
+ ## Override Managed Ruleset
29
+
30
+ ```typescript
31
+ await client.rulesets.create({
32
+ zone_id: 'zone_id',
33
+ phase: 'http_request_firewall_managed',
34
+ rules: [
35
+ {
36
+ action: 'execute',
37
+ action_parameters: {
38
+ id: 'efb7b8c949ac4650a09736fc376e9aee',
39
+ overrides: {
40
+ // Override specific rules
41
+ rules: [
42
+ { id: '5de7edfa648c4d6891dc3e7f84534ffa', action: 'log' },
43
+ { id: '75a0060762034b9dad4e883afc121b4c', enabled: false },
44
+ ],
45
+ // Override categories: wordpress, sqli, xss, rce, etc.
46
+ categories: [
47
+ { category: 'wordpress', enabled: false },
48
+ { category: 'sqli', action: 'log' },
49
+ ],
50
+ },
51
+ },
52
+ expression: 'true',
53
+ },
54
+ ],
55
+ })
56
+ ```
57
+
58
+ ## Custom Rules
59
+
60
+ ```typescript
61
+ await client.rulesets.create({
62
+ zone_id: 'zone_id',
63
+ kind: 'zone',
64
+ phase: 'http_request_firewall_custom',
65
+ name: 'Custom WAF Rules',
66
+ rules: [
67
+ // Attack score-based
68
+ { action: 'block', expression: 'cf.waf.score gt 50', enabled: true },
69
+ { action: 'challenge', expression: 'cf.waf.score gt 20', enabled: true },
70
+
71
+ // Specific attack types
72
+ {
73
+ action: 'block',
74
+ expression: 'cf.waf.score.sqli gt 30 or cf.waf.score.xss gt 30',
75
+ enabled: true,
76
+ },
77
+
78
+ // Geographic blocking
79
+ { action: 'block', expression: 'ip.geoip.country in {"CN" "RU"}', enabled: true },
80
+ ],
81
+ })
82
+ ```
83
+
84
+ ## Rate Limiting
85
+
86
+ ```typescript
87
+ await client.rulesets.create({
88
+ zone_id: 'zone_id',
89
+ kind: 'zone',
90
+ phase: 'http_ratelimit',
91
+ name: 'Rate Limits',
92
+ rules: [
93
+ // Per-IP global limit
94
+ {
95
+ action: 'block',
96
+ expression: 'true',
97
+ action_parameters: {
98
+ ratelimit: {
99
+ characteristics: ['cf.colo.id', 'ip.src'],
100
+ period: 60,
101
+ requests_per_period: 100,
102
+ mitigation_timeout: 600,
103
+ },
104
+ },
105
+ },
106
+
107
+ // Login endpoint (stricter)
108
+ {
109
+ action: 'block',
110
+ expression: 'http.request.uri.path eq "/api/login"',
111
+ action_parameters: {
112
+ ratelimit: {
113
+ characteristics: ['ip.src'],
114
+ period: 60,
115
+ requests_per_period: 5,
116
+ mitigation_timeout: 600,
117
+ },
118
+ },
119
+ },
120
+
121
+ // API writes only (using counting_expression)
122
+ {
123
+ action: 'block',
124
+ expression: 'http.request.uri.path starts_with "/api"',
125
+ action_parameters: {
126
+ ratelimit: {
127
+ characteristics: ['cf.colo.id', 'ip.src'],
128
+ period: 60,
129
+ requests_per_period: 50,
130
+ counting_expression: 'http.request.method ne "GET"',
131
+ },
132
+ },
133
+ },
134
+ ],
135
+ })
136
+ ```
137
+
138
+ ## Skip Rules
139
+
140
+ ```typescript
141
+ await client.rulesets.create({
142
+ zone_id: 'zone_id',
143
+ kind: 'zone',
144
+ phase: 'http_request_firewall_custom',
145
+ name: 'Skip Rules',
146
+ rules: [
147
+ // Skip static assets (current ruleset only)
148
+ {
149
+ action: 'skip',
150
+ action_parameters: { ruleset: 'current' },
151
+ expression: 'http.request.uri.path matches "\\.(jpg|css|js|woff2?)$"',
152
+ },
153
+
154
+ // Skip all WAF phases for trusted IPs
155
+ {
156
+ action: 'skip',
157
+ action_parameters: {
158
+ phases: ['http_request_firewall_managed', 'http_ratelimit'],
159
+ },
160
+ expression: 'ip.src in {192.0.2.0/24}',
161
+ },
162
+ ],
163
+ })
164
+ ```
165
+
166
+ ## Complete Setup Example
167
+
168
+ Combine all three phases for comprehensive protection:
169
+
170
+ ```typescript
171
+ const client = new Cloudflare({ apiToken: process.env.CF_API_TOKEN })
172
+ const zoneId = process.env.ZONE_ID
173
+
174
+ // 1. Custom rules (execute first)
175
+ await client.rulesets.create({
176
+ zone_id: zoneId,
177
+ phase: 'http_request_firewall_custom',
178
+ rules: [
179
+ {
180
+ action: 'skip',
181
+ action_parameters: { phases: ['http_request_firewall_managed', 'http_ratelimit'] },
182
+ expression: 'ip.src in {192.0.2.0/24}',
183
+ },
184
+ { action: 'block', expression: 'cf.waf.score gt 50' },
185
+ { action: 'managed_challenge', expression: 'cf.waf.score gt 20' },
186
+ ],
187
+ })
188
+
189
+ // 2. Managed ruleset (execute second)
190
+ await client.rulesets.create({
191
+ zone_id: zoneId,
192
+ phase: 'http_request_firewall_managed',
193
+ rules: [
194
+ {
195
+ action: 'execute',
196
+ action_parameters: {
197
+ id: 'efb7b8c949ac4650a09736fc376e9aee',
198
+ overrides: { categories: [{ category: 'wordpress', enabled: false }] },
199
+ },
200
+ expression: 'true',
201
+ },
202
+ ],
203
+ })
204
+
205
+ // 3. Rate limiting (execute third)
206
+ await client.rulesets.create({
207
+ zone_id: zoneId,
208
+ phase: 'http_ratelimit',
209
+ rules: [
210
+ {
211
+ action: 'block',
212
+ expression: 'true',
213
+ action_parameters: {
214
+ ratelimit: {
215
+ characteristics: ['cf.colo.id', 'ip.src'],
216
+ period: 60,
217
+ requests_per_period: 100,
218
+ mitigation_timeout: 600,
219
+ },
220
+ },
221
+ },
222
+ {
223
+ action: 'block',
224
+ expression: 'http.request.uri.path eq "/api/login"',
225
+ action_parameters: {
226
+ ratelimit: {
227
+ characteristics: ['ip.src'],
228
+ period: 60,
229
+ requests_per_period: 5,
230
+ mitigation_timeout: 600,
231
+ },
232
+ },
233
+ },
234
+ ],
235
+ })
236
+ ```