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,240 @@
1
+ # D1 Patterns & Best Practices
2
+
3
+ ## Pagination
4
+
5
+ ```typescript
6
+ async function getUsers({ page, pageSize }: { page: number; pageSize: number }, env: Env) {
7
+ const offset = (page - 1) * pageSize
8
+ const [countResult, dataResult] = await env.DB.batch([
9
+ env.DB.prepare('SELECT COUNT(*) as total FROM users'),
10
+ env.DB.prepare('SELECT * FROM users ORDER BY created_at DESC LIMIT ? OFFSET ?').bind(
11
+ pageSize,
12
+ offset
13
+ ),
14
+ ])
15
+ return {
16
+ data: dataResult.results,
17
+ total: countResult.results[0].total,
18
+ page,
19
+ pageSize,
20
+ totalPages: Math.ceil(countResult.results[0].total / pageSize),
21
+ }
22
+ }
23
+ ```
24
+
25
+ ## Conditional Queries
26
+
27
+ ```typescript
28
+ async function searchUsers(filters: { name?: string; email?: string; active?: boolean }, env: Env) {
29
+ const conditions: string[] = [],
30
+ params: (string | number | boolean | null)[] = []
31
+ if (filters.name) {
32
+ conditions.push('name LIKE ?')
33
+ params.push(`%${filters.name}%`)
34
+ }
35
+ if (filters.email) {
36
+ conditions.push('email = ?')
37
+ params.push(filters.email)
38
+ }
39
+ if (filters.active !== undefined) {
40
+ conditions.push('active = ?')
41
+ params.push(filters.active ? 1 : 0)
42
+ }
43
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : ''
44
+ return await env.DB.prepare(`SELECT * FROM users ${whereClause}`)
45
+ .bind(...params)
46
+ .all()
47
+ }
48
+ ```
49
+
50
+ ## Bulk Insert
51
+
52
+ ```typescript
53
+ async function bulkInsertUsers(users: Array<{ name: string; email: string }>, env: Env) {
54
+ const stmt = env.DB.prepare('INSERT INTO users (name, email) VALUES (?, ?)')
55
+ const batch = users.map((user) => stmt.bind(user.name, user.email))
56
+ return await env.DB.batch(batch)
57
+ }
58
+ ```
59
+
60
+ ## Caching with KV
61
+
62
+ ```typescript
63
+ async function getCachedUser(userId: number, env: { DB: D1Database; CACHE: KVNamespace }) {
64
+ const cacheKey = `user:${userId}`
65
+ const cached = await env.CACHE?.get(cacheKey, 'json')
66
+ if (cached) return cached
67
+ const user = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first()
68
+ if (user) await env.CACHE?.put(cacheKey, JSON.stringify(user), { expirationTtl: 300 })
69
+ return user
70
+ }
71
+ ```
72
+
73
+ ## Query Optimization
74
+
75
+ ```typescript
76
+ // ✅ Use indexes in WHERE clauses
77
+ const users = await env.DB.prepare('SELECT * FROM users WHERE email = ?').bind(email).all()
78
+
79
+ // ✅ Limit result sets
80
+ const recentPosts = await env.DB.prepare(
81
+ 'SELECT * FROM posts ORDER BY created_at DESC LIMIT 100'
82
+ ).all()
83
+
84
+ // ✅ Use batch() for multiple independent queries
85
+ const [user, posts, comments] = await env.DB.batch([
86
+ env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId),
87
+ env.DB.prepare('SELECT * FROM posts WHERE user_id = ?').bind(userId),
88
+ env.DB.prepare('SELECT * FROM comments WHERE user_id = ?').bind(userId),
89
+ ])
90
+
91
+ // ❌ Avoid N+1 queries
92
+ for (const post of posts) {
93
+ const author = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(post.user_id).first() // Bad: multiple round trips
94
+ }
95
+
96
+ // ✅ Use JOINs instead
97
+ const postsWithAuthors = await env.DB.prepare(
98
+ `
99
+ SELECT posts.*, users.name as author_name
100
+ FROM posts
101
+ JOIN users ON posts.user_id = users.id
102
+ `
103
+ ).all()
104
+ ```
105
+
106
+ ## Multi-Tenant SaaS
107
+
108
+ ```typescript
109
+ // Each tenant gets own database
110
+ export default {
111
+ async fetch(request: Request, env: { [key: `TENANT_${string}`]: D1Database }) {
112
+ const tenantId = request.headers.get('X-Tenant-ID')
113
+ const data = await env[`TENANT_${tenantId}`].prepare('SELECT * FROM records').all()
114
+ return Response.json(data.results)
115
+ },
116
+ }
117
+ ```
118
+
119
+ ## Session Storage
120
+
121
+ ```typescript
122
+ async function createSession(userId: number, token: string, env: Env) {
123
+ const expiresAt = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString()
124
+ return await env.DB.prepare('INSERT INTO sessions (user_id, token, expires_at) VALUES (?, ?, ?)')
125
+ .bind(userId, token, expiresAt)
126
+ .run()
127
+ }
128
+
129
+ async function validateSession(token: string, env: Env) {
130
+ return await env.DB.prepare(
131
+ 'SELECT s.*, u.email FROM sessions s JOIN users u ON s.user_id = u.id WHERE s.token = ? AND s.expires_at > CURRENT_TIMESTAMP'
132
+ )
133
+ .bind(token)
134
+ .first()
135
+ }
136
+ ```
137
+
138
+ ## Analytics/Events
139
+
140
+ ```typescript
141
+ async function logEvent(event: { type: string; userId?: number; metadata: object }, env: Env) {
142
+ return await env.DB.prepare('INSERT INTO events (type, user_id, metadata) VALUES (?, ?, ?)')
143
+ .bind(event.type, event.userId || null, JSON.stringify(event.metadata))
144
+ .run()
145
+ }
146
+
147
+ async function getEventStats(startDate: string, endDate: string, env: Env) {
148
+ return await env.DB.prepare(
149
+ 'SELECT type, COUNT(*) as count FROM events WHERE timestamp BETWEEN ? AND ? GROUP BY type ORDER BY count DESC'
150
+ )
151
+ .bind(startDate, endDate)
152
+ .all()
153
+ }
154
+ ```
155
+
156
+ ## Read Replication Pattern (Paid Plans)
157
+
158
+ ```typescript
159
+ interface Env {
160
+ DB: D1Database
161
+ DB_REPLICA: D1Database
162
+ }
163
+
164
+ export default {
165
+ async fetch(request: Request, env: Env) {
166
+ if (request.method === 'GET') {
167
+ // Reads: use replica for lower latency
168
+ const users = await env.DB_REPLICA.prepare('SELECT * FROM users WHERE active = 1').all()
169
+ return Response.json(users.results)
170
+ }
171
+
172
+ if (request.method === 'POST') {
173
+ const { name, email } = await request.json()
174
+ const result = await env.DB.prepare('INSERT INTO users (name, email) VALUES (?, ?)')
175
+ .bind(name, email)
176
+ .run()
177
+
178
+ // Read-after-write: use primary for consistency (replication lag <100ms-2s)
179
+ const user = await env.DB.prepare('SELECT * FROM users WHERE id = ?')
180
+ .bind(result.meta.last_row_id)
181
+ .first()
182
+ return Response.json(user, { status: 201 })
183
+ }
184
+ },
185
+ }
186
+ ```
187
+
188
+ **Use replicas for**: Analytics dashboards, search results, public queries (eventual consistency OK)
189
+ **Use primary for**: Read-after-write, financial transactions, authentication (consistency required)
190
+
191
+ ## Sessions API Pattern (Paid Plans)
192
+
193
+ ```typescript
194
+ // Migration with long-running session (up to 15 min)
195
+ async function runMigration(env: Env) {
196
+ const session = env.DB.withSession({ timeout: 600 }) // 10 min
197
+ try {
198
+ await session.prepare('CREATE INDEX idx_users_email ON users(email)').run()
199
+ await session.prepare('CREATE INDEX idx_posts_user ON posts(user_id)').run()
200
+ await session.prepare('ANALYZE').run()
201
+ } finally {
202
+ session.close() // Always close to prevent leaks
203
+ }
204
+ }
205
+
206
+ // Bulk transformation with batching
207
+ async function transformLargeDataset(env: Env) {
208
+ const session = env.DB.withSession({ timeout: 900 }) // 15 min max
209
+ try {
210
+ const BATCH_SIZE = 1000
211
+ let offset = 0
212
+ while (true) {
213
+ const rows = await session
214
+ .prepare('SELECT id, data FROM legacy LIMIT ? OFFSET ?')
215
+ .bind(BATCH_SIZE, offset)
216
+ .all()
217
+ if (rows.results.length === 0) break
218
+ const updates = rows.results.map((row) =>
219
+ session
220
+ .prepare('UPDATE legacy SET new_data = ? WHERE id = ?')
221
+ .bind(transform(row.data), row.id)
222
+ )
223
+ await session.batch(updates)
224
+ offset += BATCH_SIZE
225
+ }
226
+ } finally {
227
+ session.close()
228
+ }
229
+ }
230
+ ```
231
+
232
+ ## Time Travel & Backups
233
+
234
+ ```bash
235
+ wrangler d1 time-travel restore <db-name> --timestamp="2024-01-15T14:30:00Z" # Point-in-time
236
+ wrangler d1 time-travel info <db-name> # List restore points (7 days free, 30 days paid)
237
+ wrangler d1 export <db-name> --remote --output=./backup.sql # Full export
238
+ wrangler d1 export <db-name> --remote --no-schema --output=./data.sql # Data only
239
+ wrangler d1 execute <db-name> --remote --file=./backup.sql # Import
240
+ ```
@@ -0,0 +1,42 @@
1
+ # Cloudflare DDoS Protection
2
+
3
+ Autonomous, always-on protection against DDoS attacks across L3/4 and L7.
4
+
5
+ ## Protection Types
6
+
7
+ - **HTTP DDoS (L7)**: Protects HTTP/HTTPS traffic, phase `ddos_l7`, zone/account level
8
+ - **Network DDoS (L3/4)**: UDP/SYN/DNS floods, phase `ddos_l4`, account level only
9
+ - **Adaptive DDoS**: Learns 7-day baseline, detects deviations, 4 profile types (Origins, User-Agents, Locations, Protocols)
10
+
11
+ ## Plan Availability
12
+
13
+ | Feature | Free | Pro | Business | Enterprise | Enterprise Advanced |
14
+ | ------------------- | ----- | ----- | -------- | ---------- | ------------------- |
15
+ | HTTP DDoS (L7) | ✓ | ✓ | ✓ | ✓ | ✓ |
16
+ | Network DDoS (L3/4) | ✓ | ✓ | ✓ | ✓ | ✓ |
17
+ | Override rules | 1 | 1 | 1 | 1 | 10 |
18
+ | Custom expressions | ✗ | ✗ | ✗ | ✗ | ✓ |
19
+ | Log action | ✗ | ✗ | ✗ | ✗ | ✓ |
20
+ | Adaptive DDoS | ✗ | ✗ | ✗ | ✓ | ✓ |
21
+ | Alert filters | Basic | Basic | Basic | Advanced | Advanced |
22
+
23
+ ## Actions & Sensitivity
24
+
25
+ - **Actions**: `block`, `managed_challenge`, `challenge`, `log` (Enterprise Advanced only)
26
+ - **Sensitivity**: `default` (high), `medium`, `low`, `eoff` (essentially off)
27
+ - **Override**: By category/tag or individual rule ID
28
+ - **Scope**: Zone-level overrides take precedence over account-level
29
+
30
+ ## Reading Order
31
+
32
+ | File | Purpose | Start Here If... |
33
+ | -------------------------------------- | --------------------------------------------------------- | ----------------------------------------------------------- |
34
+ | [configuration.md](./configuration.md) | Dashboard setup, rule structure, adaptive profiles | You're setting up DDoS protection for the first time |
35
+ | [api.md](./api.md) | API endpoints, SDK usage, ruleset ID discovery | You're automating configuration or need programmatic access |
36
+ | [patterns.md](./patterns.md) | Protection strategies, defense-in-depth, dynamic response | You need implementation patterns or layered security |
37
+ | [gotchas.md](./gotchas.md) | False positives, tuning, error handling | You're troubleshooting or optimizing existing protection |
38
+
39
+ ## See Also
40
+
41
+ - [waf](../waf/) - Application-layer security rules
42
+ - [bot-management](../bot-management/) - Bot detection and mitigation
@@ -0,0 +1,158 @@
1
+ # DDoS API
2
+
3
+ ## Endpoints
4
+
5
+ ### HTTP DDoS (L7)
6
+
7
+ ```typescript
8
+ // Zone-level
9
+ PUT / zones / { zoneId } / rulesets / phases / ddos_l7 / entrypoint
10
+ GET / zones / { zoneId } / rulesets / phases / ddos_l7 / entrypoint
11
+
12
+ // Account-level (Enterprise Advanced)
13
+ PUT / accounts / { accountId } / rulesets / phases / ddos_l7 / entrypoint
14
+ GET / accounts / { accountId } / rulesets / phases / ddos_l7 / entrypoint
15
+ ```
16
+
17
+ ### Network DDoS (L3/4)
18
+
19
+ ```typescript
20
+ // Account-level only
21
+ PUT / accounts / { accountId } / rulesets / phases / ddos_l4 / entrypoint
22
+ GET / accounts / { accountId } / rulesets / phases / ddos_l4 / entrypoint
23
+ ```
24
+
25
+ ## TypeScript SDK
26
+
27
+ **SDK Version**: Requires `cloudflare` >= 3.0.0 for ruleset phase methods.
28
+
29
+ ```typescript
30
+ import Cloudflare from 'cloudflare'
31
+
32
+ const client = new Cloudflare({ apiToken: process.env.CLOUDFLARE_API_TOKEN })
33
+
34
+ // STEP 1: Discover managed ruleset ID (required for overrides)
35
+ const allRulesets = await client.rulesets.list({ zone_id: zoneId })
36
+ const ddosRuleset = allRulesets.result.find((r) => r.kind === 'managed' && r.phase === 'ddos_l7')
37
+ if (!ddosRuleset) throw new Error('DDoS managed ruleset not found')
38
+ const managedRulesetId = ddosRuleset.id
39
+
40
+ // STEP 2: Get current HTTP DDoS configuration
41
+ const entrypointRuleset = await client.zones.rulesets.phases.entrypoint.get('ddos_l7', {
42
+ zone_id: zoneId,
43
+ })
44
+
45
+ // STEP 3: Update HTTP DDoS ruleset with overrides
46
+ await client.zones.rulesets.phases.entrypoint.update('ddos_l7', {
47
+ zone_id: zoneId,
48
+ rules: [
49
+ {
50
+ action: 'execute',
51
+ expression: 'true',
52
+ action_parameters: {
53
+ id: managedRulesetId, // From discovery step
54
+ overrides: {
55
+ sensitivity_level: 'medium',
56
+ action: 'managed_challenge',
57
+ },
58
+ },
59
+ },
60
+ ],
61
+ })
62
+
63
+ // Network DDoS (account level, L3/4)
64
+ const l4Rulesets = await client.rulesets.list({ account_id: accountId })
65
+ const l4DdosRuleset = l4Rulesets.result.find((r) => r.kind === 'managed' && r.phase === 'ddos_l4')
66
+ const l4Ruleset = await client.accounts.rulesets.phases.entrypoint.get('ddos_l4', {
67
+ account_id: accountId,
68
+ })
69
+ ```
70
+
71
+ ## Alert Configuration
72
+
73
+ ```typescript
74
+ interface DDoSAlertConfig {
75
+ name: string
76
+ enabled: boolean
77
+ alert_type:
78
+ | 'http_ddos_attack_alert'
79
+ | 'layer_3_4_ddos_attack_alert'
80
+ | 'advanced_http_ddos_attack_alert'
81
+ | 'advanced_layer_3_4_ddos_attack_alert'
82
+ filters?: {
83
+ zones?: string[]
84
+ hostnames?: string[]
85
+ requests_per_second?: number
86
+ packets_per_second?: number
87
+ megabits_per_second?: number
88
+ ip_prefixes?: string[] // CIDR
89
+ ip_addresses?: string[]
90
+ protocols?: string[]
91
+ }
92
+ mechanisms: {
93
+ email?: Array<{ id: string }>
94
+ webhooks?: Array<{ id: string }>
95
+ pagerduty?: Array<{ id: string }>
96
+ }
97
+ }
98
+
99
+ // Create alert
100
+ await fetch(`https://api.cloudflare.com/client/v4/accounts/${accountId}/alerting/v3/policies`, {
101
+ method: 'POST',
102
+ headers: {
103
+ Authorization: `Bearer ${apiToken}`,
104
+ 'Content-Type': 'application/json',
105
+ },
106
+ body: JSON.stringify(alertConfig),
107
+ })
108
+ ```
109
+
110
+ ## Typed Override Examples
111
+
112
+ ```typescript
113
+ // Override by category
114
+ interface CategoryOverride {
115
+ action: 'execute'
116
+ expression: string
117
+ action_parameters: {
118
+ id: string
119
+ overrides: {
120
+ categories?: Array<{
121
+ category: 'http-flood' | 'http-anomaly' | 'udp-flood' | 'syn-flood'
122
+ sensitivity_level?: 'default' | 'medium' | 'low' | 'eoff'
123
+ action?: 'block' | 'managed_challenge' | 'challenge' | 'log'
124
+ }>
125
+ }
126
+ }
127
+ }
128
+
129
+ // Override by rule ID
130
+ interface RuleOverride {
131
+ action: 'execute'
132
+ expression: string
133
+ action_parameters: {
134
+ id: string
135
+ overrides: {
136
+ rules?: Array<{
137
+ id: string
138
+ action?: 'block' | 'managed_challenge' | 'challenge' | 'log'
139
+ sensitivity_level?: 'default' | 'medium' | 'low' | 'eoff'
140
+ }>
141
+ }
142
+ }
143
+ }
144
+
145
+ // Example: Override specific adaptive rule
146
+ const adaptiveOverride: RuleOverride = {
147
+ action: 'execute',
148
+ expression: 'true',
149
+ action_parameters: {
150
+ id: managedRulesetId,
151
+ overrides: {
152
+ rules: [{ id: '...adaptive-origins-rule-id...', sensitivity_level: 'low' }],
153
+ },
154
+ },
155
+ }
156
+ ```
157
+
158
+ See [patterns.md](./patterns.md) for complete implementation patterns.
@@ -0,0 +1,94 @@
1
+ # DDoS Configuration
2
+
3
+ ## Dashboard Setup
4
+
5
+ 1. Navigate to Security > DDoS
6
+ 2. Select HTTP DDoS or Network-layer DDoS
7
+ 3. Configure sensitivity & action per ruleset/category/rule
8
+ 4. Apply overrides with optional expressions (Enterprise Advanced)
9
+ 5. Enable Adaptive DDoS toggle (Enterprise/Enterprise Advanced, requires 7 days traffic history)
10
+
11
+ ## Rule Structure
12
+
13
+ ```typescript
14
+ interface DDoSOverride {
15
+ description: string
16
+ rules: Array<{
17
+ action: 'execute'
18
+ expression: string // Custom expression (Enterprise Advanced) or "true" for all
19
+ action_parameters: {
20
+ id: string // Managed ruleset ID (discover via api.md)
21
+ overrides: {
22
+ sensitivity_level?: 'default' | 'medium' | 'low' | 'eoff'
23
+ action?: 'block' | 'managed_challenge' | 'challenge' | 'log' // log = Enterprise Advanced only
24
+ categories?: Array<{
25
+ category: string // e.g., "http-flood", "udp-flood"
26
+ sensitivity_level?: string
27
+ }>
28
+ rules?: Array<{
29
+ id: string
30
+ action?: string
31
+ sensitivity_level?: string
32
+ }>
33
+ }
34
+ }
35
+ }>
36
+ }
37
+ ```
38
+
39
+ ## Expression Availability
40
+
41
+ | Plan | Custom Expressions | Example |
42
+ | ------------------- | ------------------ | -------------------------------------------------------- |
43
+ | Free/Pro/Business | ✗ | Use `"true"` only |
44
+ | Enterprise | ✗ | Use `"true"` only |
45
+ | Enterprise Advanced | ✓ | `ip.src in {...}`, `http.request.uri.path matches "..."` |
46
+
47
+ ## Sensitivity Mapping
48
+
49
+ | UI | API | Threshold |
50
+ | --------------- | --------- | ------------------ |
51
+ | High | `default` | Most aggressive |
52
+ | Medium | `medium` | Balanced |
53
+ | Low | `low` | Less aggressive |
54
+ | Essentially Off | `eoff` | Minimal mitigation |
55
+
56
+ ## Common Categories
57
+
58
+ - `http-flood`, `http-anomaly` (L7)
59
+ - `udp-flood`, `syn-flood`, `dns-flood` (L3/4)
60
+
61
+ ## Override Precedence
62
+
63
+ Multiple override layers apply in this order (higher precedence wins):
64
+
65
+ ```
66
+ Zone-level > Account-level
67
+ Individual Rule > Category > Global sensitivity/action
68
+ ```
69
+
70
+ **Example**: Zone rule for `/api/*` overrides account-level global settings.
71
+
72
+ ## Adaptive DDoS Profiles
73
+
74
+ **Availability**: Enterprise, Enterprise Advanced
75
+ **Learning period**: 7 days of traffic history required
76
+
77
+ | Profile Type | Description | Detects |
78
+ | --------------- | ------------------------------------ | --------------------------------------- |
79
+ | **Origins** | Traffic patterns per origin server | Anomalous requests to specific origins |
80
+ | **User-Agents** | Traffic patterns per User-Agent | Malicious/anomalous user agent strings |
81
+ | **Locations** | Traffic patterns per geo-location | Attacks from specific countries/regions |
82
+ | **Protocols** | Traffic patterns per protocol (L3/4) | Protocol-specific flood attacks |
83
+
84
+ Configure by targeting specific adaptive rule IDs via API (see api.md#typed-override-examples).
85
+
86
+ ## Alerting
87
+
88
+ Configure via Notifications:
89
+
90
+ - Alert types: `http_ddos_attack_alert`, `layer_3_4_ddos_attack_alert`, `advanced_*` variants
91
+ - Filters: zones, hostnames, RPS/PPS/Mbps thresholds, IPs, protocols
92
+ - Mechanisms: email, webhooks, PagerDuty
93
+
94
+ See [api.md](./api.md#alert-configuration) for API examples.
@@ -0,0 +1,114 @@
1
+ # DDoS Gotchas
2
+
3
+ ## Common Errors
4
+
5
+ ### "False positives blocking legitimate traffic"
6
+
7
+ **Cause**: Sensitivity too high, wrong action, or missing exceptions
8
+ **Solution**:
9
+
10
+ 1. Lower sensitivity for specific rule/category
11
+ 2. Use `log` action first to validate (Enterprise Advanced)
12
+ 3. Add exception with custom expression (e.g., allowlist IPs)
13
+ 4. Query flagged requests via GraphQL Analytics API to identify patterns
14
+
15
+ ### "Attacks getting through"
16
+
17
+ **Cause**: Sensitivity too low or wrong action
18
+ **Solution**: Increase to `default` sensitivity and use `block` action:
19
+
20
+ ```typescript
21
+ const config = {
22
+ rules: [
23
+ {
24
+ expression: 'true',
25
+ action: 'execute',
26
+ action_parameters: {
27
+ id: managedRulesetId,
28
+ overrides: { sensitivity_level: 'default', action: 'block' },
29
+ },
30
+ },
31
+ ],
32
+ }
33
+ ```
34
+
35
+ ### "Adaptive rules not working"
36
+
37
+ **Cause**: Insufficient traffic history (needs 7 days)
38
+ **Solution**: Wait for baseline to establish, check dashboard for adaptive rule status
39
+
40
+ ### "Zone override ignored"
41
+
42
+ **Cause**: Account overrides conflict with zone overrides
43
+ **Solution**: Configure at zone level OR remove zone overrides to use account-level
44
+
45
+ ### "Log action not available"
46
+
47
+ **Cause**: Not on Enterprise Advanced DDoS plan
48
+ **Solution**: Use `managed_challenge` with low sensitivity for testing
49
+
50
+ ### "Rule limit exceeded"
51
+
52
+ **Cause**: Too many override rules (Free/Pro/Business: 1, Enterprise Advanced: 10)
53
+ **Solution**: Combine conditions in single expression using `and`/`or`
54
+
55
+ ### "Cannot override rule"
56
+
57
+ **Cause**: Rule is read-only
58
+ **Solution**: Check API response for read-only indicator, use different rule
59
+
60
+ ### "Cannot disable DDoS protection"
61
+
62
+ **Cause**: DDoS managed rulesets cannot be fully disabled (always-on protection)
63
+ **Solution**: Set `sensitivity_level: "eoff"` for minimal mitigation
64
+
65
+ ### "Expression not allowed"
66
+
67
+ **Cause**: Custom expressions require Enterprise Advanced plan
68
+ **Solution**: Use `expression: "true"` for all traffic, or upgrade plan
69
+
70
+ ### "Managed ruleset not found"
71
+
72
+ **Cause**: Zone/account doesn't have DDoS managed ruleset, or incorrect phase
73
+ **Solution**: Verify ruleset exists via `client.rulesets.list()`, check phase name (`ddos_l7` or `ddos_l4`)
74
+
75
+ ## API Error Codes
76
+
77
+ | Error Code | Message | Cause | Solution |
78
+ | ---------- | ------------------------- | -------------------------------- | --------------------------------------------------- |
79
+ | 10000 | Authentication error | Invalid/missing API token | Check token has DDoS permissions |
80
+ | 81000 | Ruleset validation failed | Invalid rule structure | Verify `action_parameters.id` is managed ruleset ID |
81
+ | 81020 | Expression not allowed | Custom expressions on wrong plan | Use `"true"` or upgrade to Enterprise Advanced |
82
+ | 81021 | Rule limit exceeded | Too many override rules | Reduce rules or upgrade (Enterprise Advanced: 10) |
83
+ | 81022 | Invalid sensitivity level | Wrong sensitivity value | Use: `default`, `medium`, `low`, `eoff` |
84
+ | 81023 | Invalid action | Wrong action for plan | Enterprise Advanced only: `log` action |
85
+
86
+ ## Limits
87
+
88
+ | Resource/Limit | Free/Pro/Business | Enterprise | Enterprise Advanced |
89
+ | ------------------------ | ----------------- | ---------- | ------------------- |
90
+ | Override rules per zone | 1 | 1 | 10 |
91
+ | Custom expressions | ✗ | ✗ | ✓ |
92
+ | Log action | ✗ | ✗ | ✓ |
93
+ | Adaptive DDoS | ✗ | ✓ | ✓ |
94
+ | Traffic history required | - | 7 days | 7 days |
95
+
96
+ ## Tuning Strategy
97
+
98
+ 1. Start with `log` action + `medium` sensitivity
99
+ 2. Monitor for 24-48 hours
100
+ 3. Identify false positives, add exceptions
101
+ 4. Gradually increase to `default` sensitivity
102
+ 5. Change action from `log` → `managed_challenge` → `block`
103
+ 6. Document all adjustments
104
+
105
+ ## Best Practices
106
+
107
+ - Test during low-traffic periods
108
+ - Use zone-level for per-site tuning
109
+ - Reference IP lists for easier management
110
+ - Set appropriate alert thresholds (avoid noise)
111
+ - Combine with WAF for layered defense
112
+ - Avoid over-tuning (keep config simple)
113
+
114
+ See [patterns.md](./patterns.md) for progressive rollout examples.