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,220 @@
1
+ # DDoS Protection Patterns
2
+
3
+ ## Allowlist Trusted IPs
4
+
5
+ ```typescript
6
+ const config = {
7
+ description: 'Allowlist trusted IPs',
8
+ rules: [
9
+ {
10
+ expression: 'ip.src in { 203.0.113.0/24 192.0.2.1 }',
11
+ action: 'execute',
12
+ action_parameters: {
13
+ id: managedRulesetId,
14
+ overrides: { sensitivity_level: 'eoff' },
15
+ },
16
+ },
17
+ ],
18
+ }
19
+
20
+ await client.accounts.rulesets.phases.entrypoint.update('ddos_l7', {
21
+ account_id: accountId,
22
+ ...config,
23
+ })
24
+ ```
25
+
26
+ ## Route-specific Sensitivity
27
+
28
+ ```typescript
29
+ const config = {
30
+ description: 'Route-specific protection',
31
+ rules: [
32
+ {
33
+ expression: 'not http.request.uri.path matches "^/api/"',
34
+ action: 'execute',
35
+ action_parameters: {
36
+ id: managedRulesetId,
37
+ overrides: { sensitivity_level: 'default', action: 'block' },
38
+ },
39
+ },
40
+ {
41
+ expression: 'http.request.uri.path matches "^/api/"',
42
+ action: 'execute',
43
+ action_parameters: {
44
+ id: managedRulesetId,
45
+ overrides: { sensitivity_level: 'low', action: 'managed_challenge' },
46
+ },
47
+ },
48
+ ],
49
+ }
50
+ ```
51
+
52
+ ## Progressive Enhancement
53
+
54
+ ```typescript
55
+ enum ProtectionLevel {
56
+ MONITORING = 'monitoring',
57
+ LOW = 'low',
58
+ MEDIUM = 'medium',
59
+ HIGH = 'high',
60
+ }
61
+
62
+ const levelConfig = {
63
+ [ProtectionLevel.MONITORING]: { action: 'log', sensitivity: 'eoff' },
64
+ [ProtectionLevel.LOW]: { action: 'managed_challenge', sensitivity: 'low' },
65
+ [ProtectionLevel.MEDIUM]: { action: 'managed_challenge', sensitivity: 'medium' },
66
+ [ProtectionLevel.HIGH]: { action: 'block', sensitivity: 'default' },
67
+ } as const
68
+
69
+ async function setProtectionLevel(
70
+ zoneId: string,
71
+ level: ProtectionLevel,
72
+ rulesetId: string,
73
+ client: Cloudflare
74
+ ) {
75
+ const settings = levelConfig[level]
76
+ return client.zones.rulesets.phases.entrypoint.update('ddos_l7', {
77
+ zone_id: zoneId,
78
+ rules: [
79
+ {
80
+ expression: 'true',
81
+ action: 'execute',
82
+ action_parameters: {
83
+ id: rulesetId,
84
+ overrides: { action: settings.action, sensitivity_level: settings.sensitivity },
85
+ },
86
+ },
87
+ ],
88
+ })
89
+ }
90
+ ```
91
+
92
+ ## Dynamic Response to Attacks
93
+
94
+ ```typescript
95
+ interface Env {
96
+ CLOUDFLARE_API_TOKEN: string
97
+ ZONE_ID: string
98
+ KV: KVNamespace
99
+ }
100
+
101
+ export default {
102
+ async fetch(request: Request, env: Env): Promise<Response> {
103
+ if (request.url.includes('/attack-detected')) {
104
+ const attackData = await request.json()
105
+ await env.KV.put(`attack:${Date.now()}`, JSON.stringify(attackData), { expirationTtl: 86400 })
106
+ const recentAttacks = await getRecentAttacks(env.KV)
107
+ if (recentAttacks.length > 5) {
108
+ await setProtectionLevel(env.ZONE_ID, ProtectionLevel.HIGH, managedRulesetId, client)
109
+ return new Response('Protection increased')
110
+ }
111
+ }
112
+ return new Response('OK')
113
+ },
114
+ async scheduled(event: ScheduledEvent, env: Env): Promise<void> {
115
+ const recentAttacks = await getRecentAttacks(env.KV)
116
+ if (recentAttacks.length === 0)
117
+ await setProtectionLevel(env.ZONE_ID, ProtectionLevel.MEDIUM, managedRulesetId, client)
118
+ },
119
+ }
120
+ ```
121
+
122
+ ## Multi-rule Tiered Protection (Enterprise Advanced)
123
+
124
+ ```typescript
125
+ const config = {
126
+ description: 'Multi-tier DDoS protection',
127
+ rules: [
128
+ {
129
+ expression: 'not ip.src in $known_ips and not cf.bot_management.score gt 30',
130
+ action: 'execute',
131
+ action_parameters: {
132
+ id: managedRulesetId,
133
+ overrides: { sensitivity_level: 'default', action: 'block' },
134
+ },
135
+ },
136
+ {
137
+ expression: 'cf.bot_management.verified_bot',
138
+ action: 'execute',
139
+ action_parameters: {
140
+ id: managedRulesetId,
141
+ overrides: { sensitivity_level: 'medium', action: 'managed_challenge' },
142
+ },
143
+ },
144
+ {
145
+ expression: 'ip.src in $trusted_ips',
146
+ action: 'execute',
147
+ action_parameters: { id: managedRulesetId, overrides: { sensitivity_level: 'low' } },
148
+ },
149
+ ],
150
+ }
151
+ ```
152
+
153
+ ## Defense in Depth
154
+
155
+ Layered security stack: DDoS + WAF + Rate Limiting + Bot Management.
156
+
157
+ ```typescript
158
+ // Layer 1: DDoS (volumetric attacks)
159
+ await client.zones.rulesets.phases.entrypoint.update('ddos_l7', {
160
+ zone_id: zoneId,
161
+ rules: [
162
+ {
163
+ expression: 'true',
164
+ action: 'execute',
165
+ action_parameters: { id: ddosRulesetId, overrides: { sensitivity_level: 'medium' } },
166
+ },
167
+ ],
168
+ })
169
+
170
+ // Layer 2: WAF (exploit protection)
171
+ await client.zones.rulesets.phases.entrypoint.update('http_request_firewall_managed', {
172
+ zone_id: zoneId,
173
+ rules: [{ expression: 'true', action: 'execute', action_parameters: { id: wafRulesetId } }],
174
+ })
175
+
176
+ // Layer 3: Rate Limiting (abuse prevention)
177
+ await client.zones.rulesets.phases.entrypoint.update('http_ratelimit', {
178
+ zone_id: zoneId,
179
+ rules: [
180
+ {
181
+ expression: 'http.request.uri.path eq "/api/login"',
182
+ action: 'block',
183
+ ratelimit: { characteristics: ['ip.src'], period: 60, requests_per_period: 5 },
184
+ },
185
+ ],
186
+ })
187
+
188
+ // Layer 4: Bot Management (automation detection)
189
+ await client.zones.rulesets.phases.entrypoint.update('http_request_sbfm', {
190
+ zone_id: zoneId,
191
+ rules: [{ expression: 'cf.bot_management.score lt 30', action: 'managed_challenge' }],
192
+ })
193
+ ```
194
+
195
+ ## Cache Strategy for DDoS Mitigation
196
+
197
+ Exclude query strings from cache key to counter randomized query parameter attacks.
198
+
199
+ ```typescript
200
+ const cacheRule = {
201
+ expression: 'http.request.uri.path matches "^/api/"',
202
+ action: 'set_cache_settings',
203
+ action_parameters: {
204
+ cache: true,
205
+ cache_key: {
206
+ ignore_query_strings_order: true,
207
+ custom_key: { query_string: { exclude: { all: true } } },
208
+ },
209
+ },
210
+ }
211
+
212
+ await client.zones.rulesets.phases.entrypoint.update('http_request_cache_settings', {
213
+ zone_id: zoneId,
214
+ rules: [cacheRule],
215
+ })
216
+ ```
217
+
218
+ **Rationale**: Attackers randomize query strings (`?random=123456`) to bypass cache. Excluding query params ensures cache hits absorb attack traffic.
219
+
220
+ See [configuration.md](./configuration.md) for rule structure details.
@@ -0,0 +1,95 @@
1
+ ## Quick Decision Trees
2
+
3
+ ### "I need to run code"
4
+
5
+ ```
6
+ Need to run code?
7
+ ├─ Serverless functions at the edge → workers/
8
+ ├─ Full-stack web app with Git deploys → pages/
9
+ ├─ Stateful coordination/real-time → durable-objects/
10
+ ├─ Long-running multi-step jobs → workflows/
11
+ ├─ Run containers → containers/
12
+ ├─ Multi-tenant (customers deploy code) → workers-for-platforms/
13
+ ├─ Scheduled tasks (cron) → cron-triggers/
14
+ ├─ Lightweight edge logic (modify HTTP) → snippets/
15
+ ├─ Process Worker execution events (logs/observability) → tail-workers/
16
+ └─ Optimize latency to backend infrastructure → smart-placement/
17
+ ```
18
+
19
+ ### "I need to store data"
20
+
21
+ ```
22
+ Need storage?
23
+ ├─ Key-value (config, sessions, cache) → kv/
24
+ ├─ Relational SQL → d1/ (SQLite) or hyperdrive/ (existing Postgres/MySQL)
25
+ ├─ Object/file storage (S3-compatible) → r2/
26
+ ├─ Message queue (async processing) → queues/
27
+ ├─ Vector embeddings (AI/semantic search) → vectorize/
28
+ ├─ Strongly-consistent per-entity state → durable-objects/ (DO storage)
29
+ ├─ Secrets management → secrets-store/
30
+ ├─ Streaming ETL to R2 → pipelines/
31
+ └─ Persistent cache (long-term retention) → cache-reserve/
32
+ ```
33
+
34
+ ### "I need AI/ML"
35
+
36
+ ```
37
+ Need AI?
38
+ ├─ Run inference (LLMs, embeddings, images) → workers-ai/
39
+ ├─ Vector database for RAG/search → vectorize/
40
+ ├─ Build stateful AI agents → agents-sdk/
41
+ ├─ Gateway for any AI provider (caching, routing) → ai-gateway/
42
+ └─ AI-powered search widget → ai-search/
43
+ ```
44
+
45
+ ### "I need networking/connectivity"
46
+
47
+ ```
48
+ Need networking?
49
+ ├─ Expose local service to internet → tunnel/
50
+ ├─ TCP/UDP proxy (non-HTTP) → spectrum/
51
+ ├─ WebRTC TURN server → turn/
52
+ ├─ Private network connectivity → network-interconnect/
53
+ ├─ Optimize routing → argo-smart-routing/
54
+ ├─ Optimize latency to backend (not user) → smart-placement/
55
+ └─ Real-time video/audio → realtimekit/ or realtime-sfu/
56
+ ```
57
+
58
+ ### "I need security"
59
+
60
+ ```
61
+ Need security?
62
+ ├─ Web Application Firewall → waf/
63
+ ├─ DDoS protection → ddos/
64
+ ├─ Bot detection/management → bot-management/
65
+ ├─ API protection → api-shield/
66
+ ├─ CAPTCHA alternative → turnstile/
67
+ └─ Credential leak detection → waf/ (managed ruleset)
68
+ ```
69
+
70
+ ### "I need media/content"
71
+
72
+ ```
73
+ Need media?
74
+ ├─ Image optimization/transformation → images/
75
+ ├─ Video streaming/encoding → stream/
76
+ ├─ Browser automation/screenshots → browser-rendering/
77
+ └─ Third-party script management → zaraz/
78
+ ```
79
+
80
+ ### "I need analytics/metrics data"
81
+
82
+ ```
83
+ Need analytics?
84
+ ├─ Query across all Cloudflare products (HTTP, Workers, DNS, etc.) → graphql-api/
85
+ ├─ Custom high-cardinality metrics from Workers → analytics-engine/
86
+ ├─ Client-side (RUM) performance data → web-analytics/
87
+ ├─ Workers Logs and real-time debugging → observability/
88
+ └─ Raw logs (Logpush to external tools) → Cloudflare docs
89
+ ```
90
+
91
+ ### "I need infrastructure-as-code"
92
+
93
+ ```
94
+ Need IaC? → pulumi/ (Pulumi), terraform/ (Terraform), or api/ (REST API)
95
+ ```
@@ -0,0 +1,79 @@
1
+ # Cloudflare Durable Objects Storage
2
+
3
+ Persistent storage API for Durable Objects with SQLite and KV backends, PITR, and automatic concurrency control.
4
+
5
+ ## Overview
6
+
7
+ DO Storage provides:
8
+
9
+ - SQLite-backed (recommended) or KV-backed
10
+ - SQL API + synchronous/async KV APIs
11
+ - Automatic input/output gates (race-free)
12
+ - 30-day point-in-time recovery (PITR)
13
+ - Transactions and alarms
14
+
15
+ **Use cases:** Stateful coordination, real-time collaboration, counters, sessions, rate limiters
16
+
17
+ **Billing:** Charged by request, GB-month storage, and rowsRead/rowsWritten for SQL operations
18
+
19
+ ## Quick Start
20
+
21
+ ```typescript
22
+ export class Counter extends DurableObject {
23
+ sql: SqlStorage
24
+
25
+ constructor(ctx: DurableObjectState, env: Env) {
26
+ super(ctx, env)
27
+ this.sql = ctx.storage.sql
28
+ this.sql.exec('CREATE TABLE IF NOT EXISTS data(key TEXT PRIMARY KEY, value INTEGER)')
29
+ }
30
+
31
+ async increment(): Promise<number> {
32
+ const result = this.sql
33
+ .exec(
34
+ 'INSERT INTO data VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = value + 1 RETURNING value',
35
+ 'counter',
36
+ 1
37
+ )
38
+ .one()
39
+ return result?.value || 1
40
+ }
41
+ }
42
+ ```
43
+
44
+ ## Storage Backends
45
+
46
+ | Backend | Create Method | APIs | PITR |
47
+ | -------------------- | -------------------- | ------------------------ | ---- |
48
+ | SQLite (recommended) | `new_sqlite_classes` | SQL + sync KV + async KV | ✅ |
49
+ | KV (legacy) | `new_classes` | async KV only | ❌ |
50
+
51
+ ## Core APIs
52
+
53
+ - **SQL API** (`ctx.storage.sql`): Full SQLite with extensions (FTS5, JSON, math)
54
+ - **Sync KV** (`ctx.storage.kv`): Synchronous key-value (SQLite only)
55
+ - **Async KV** (`ctx.storage`): Asynchronous key-value (both backends)
56
+ - **Transactions** (`transactionSync()`, `transaction()`)
57
+ - **PITR** (`getBookmarkForTime()`, `onNextSessionRestoreBookmark()`)
58
+ - **Alarms** (`setAlarm()`, `alarm()` handler)
59
+
60
+ ## Reading Order
61
+
62
+ **New to DO storage:** configuration.md → api.md → patterns.md → gotchas.md
63
+ **Building features:** patterns.md → api.md → gotchas.md
64
+ **Debugging issues:** gotchas.md → api.md
65
+ **Writing tests:** testing.md
66
+
67
+ ## In This Reference
68
+
69
+ - [configuration.md](./configuration.md) - wrangler.jsonc migrations, SQLite vs KV setup, RPC binding
70
+ - [api.md](./api.md) - SQL exec/cursors, KV methods, storage options, transactions, alarms, PITR
71
+ - [patterns.md](./patterns.md) - Schema migrations, caching, rate limiting, batch processing, parent-child coordination
72
+ - [gotchas.md](./gotchas.md) - Concurrency gates, INTEGER precision, transaction rules, SQL limits
73
+ - [testing.md](./testing.md) - vitest-pool-workers setup, testing DOs with SQL/alarms/PITR
74
+
75
+ ## See Also
76
+
77
+ - [durable-objects](../durable-objects/) - DO fundamentals and coordination patterns
78
+ - [workers](../workers/) - Worker runtime for DO stubs
79
+ - [d1](../d1/) - Shared database alternative to per-DO storage
@@ -0,0 +1,107 @@
1
+ # DO Storage API Reference
2
+
3
+ ## SQL API
4
+
5
+ ```typescript
6
+ const cursor = this.sql.exec('SELECT * FROM users WHERE email = ?', email)
7
+ for (let row of cursor) {
8
+ } // Objects: { id, name, email }
9
+ cursor.toArray()
10
+ cursor.one() // Single row (throws if != 1)
11
+ for (let row of cursor.raw()) {
12
+ } // Arrays: [1, "Alice", "..."]
13
+
14
+ // Manual iteration
15
+ const iter = cursor[Symbol.iterator]()
16
+ const first = iter.next() // { value: {...}, done: false }
17
+
18
+ cursor.columnNames // ["id", "name", "email"]
19
+ cursor.rowsRead
20
+ cursor.rowsWritten // Billing
21
+
22
+ type User = { id: number; name: string; email: string }
23
+ const user = this.sql.exec<User>('...', userId).one()
24
+ ```
25
+
26
+ ## Sync KV API (SQLite only)
27
+
28
+ ```typescript
29
+ this.ctx.storage.kv.get('counter') // undefined if missing
30
+ this.ctx.storage.kv.put('counter', 42)
31
+ this.ctx.storage.kv.put('user', { name: 'Alice', age: 30 })
32
+ this.ctx.storage.kv.delete('counter') // true if existed
33
+
34
+ for (let [key, value] of this.ctx.storage.kv.list()) {
35
+ }
36
+
37
+ // List options: start, prefix, reverse, limit
38
+ this.ctx.storage.kv.list({ start: 'user:', prefix: 'user:', reverse: true, limit: 100 })
39
+ ```
40
+
41
+ ## Async KV API (Both backends)
42
+
43
+ ```typescript
44
+ await this.ctx.storage.get('key') // Single
45
+ await this.ctx.storage.get(['key1', 'key2']) // Multiple (max 128)
46
+ await this.ctx.storage.put('key', value) // Single
47
+ await this.ctx.storage.put({ key1: 'v1', key2: { nested: true } }) // Multiple (max 128)
48
+ await this.ctx.storage.delete('key')
49
+ await this.ctx.storage.delete(['key1', 'key2'])
50
+ await this.ctx.storage.list({ prefix: 'user:', limit: 100 })
51
+
52
+ // Options: allowConcurrency, noCache, allowUnconfirmed
53
+ await this.ctx.storage.get('key', { allowConcurrency: true, noCache: true })
54
+ await this.ctx.storage.put('key', value, { allowUnconfirmed: true, noCache: true })
55
+ ```
56
+
57
+ ### Storage Options
58
+
59
+ | Option | Methods | Effect | Use Case |
60
+ | ------------------ | -------------- | ------------------------------------------------------------- | ---------------------------------------------------------------- |
61
+ | `allowConcurrency` | get, list | Skip input gate; allow concurrent requests during read | Read-heavy metrics that don't need strict consistency |
62
+ | `noCache` | get, put, list | Skip in-memory cache; always read from disk | Rarely-accessed data or testing storage directly |
63
+ | `allowUnconfirmed` | put, delete | Return before write confirms (still protected by output gate) | Non-critical writes where latency matters more than confirmation |
64
+
65
+ ## Transactions
66
+
67
+ ```typescript
68
+ // Sync (SQL/sync KV only)
69
+ this.ctx.storage.transactionSync(() => {
70
+ this.sql.exec('UPDATE accounts SET balance = balance - ? WHERE id = ?', 100, 1)
71
+ this.sql.exec('UPDATE accounts SET balance = balance + ? WHERE id = ?', 100, 2)
72
+ return 'result'
73
+ })
74
+
75
+ // Async
76
+ await this.ctx.storage.transaction(async () => {
77
+ const value = await this.ctx.storage.get('counter')
78
+ await this.ctx.storage.put('counter', value + 1)
79
+ if (value > 100) this.ctx.storage.rollback() // Explicit rollback
80
+ })
81
+ ```
82
+
83
+ ## Point-in-Time Recovery
84
+
85
+ ```typescript
86
+ await this.ctx.storage.getCurrentBookmark()
87
+ await this.ctx.storage.getBookmarkForTime(Date.now() - 2 * 24 * 60 * 60 * 1000)
88
+ await this.ctx.storage.onNextSessionRestoreBookmark(bookmark)
89
+ this.ctx.abort() // Restart to apply; bookmarks lexically comparable (earlier < later)
90
+ ```
91
+
92
+ ## Alarms
93
+
94
+ ```typescript
95
+ await this.ctx.storage.setAlarm(Date.now() + 60000); // Timestamp or Date
96
+ await this.ctx.storage.getAlarm();
97
+ await this.ctx.storage.deleteAlarm();
98
+
99
+ async alarm() { await this.doScheduledWork(); }
100
+ ```
101
+
102
+ ## Misc
103
+
104
+ ```typescript
105
+ await this.ctx.storage.deleteAll() // Atomic for SQLite; alarm NOT included
106
+ this.ctx.storage.sql.databaseSize // Bytes
107
+ ```
@@ -0,0 +1,114 @@
1
+ # DO Storage Configuration
2
+
3
+ ## SQLite-backed (Recommended)
4
+
5
+ **wrangler.jsonc:**
6
+
7
+ ```jsonc
8
+ {
9
+ "migrations": [
10
+ {
11
+ "tag": "v1",
12
+ "new_sqlite_classes": ["Counter", "Session", "RateLimiter"],
13
+ },
14
+ ],
15
+ }
16
+ ```
17
+
18
+ **Migration lifecycle:** Migrations run once per deployment. Existing DO instances get new storage backend on next invocation. Renaming/removing classes requires `renamed_classes` or `deleted_classes` entries.
19
+
20
+ ## KV-backed (Legacy)
21
+
22
+ **wrangler.jsonc:**
23
+
24
+ ```jsonc
25
+ {
26
+ "migrations": [
27
+ {
28
+ "tag": "v1",
29
+ "new_classes": ["OldCounter"],
30
+ },
31
+ ],
32
+ }
33
+ ```
34
+
35
+ ## TypeScript Setup
36
+
37
+ ```typescript
38
+ export class MyDurableObject extends DurableObject {
39
+ sql: SqlStorage
40
+
41
+ constructor(ctx: DurableObjectState, env: Env) {
42
+ super(ctx, env)
43
+ this.sql = ctx.storage.sql
44
+
45
+ // Initialize schema
46
+ this.sql.exec(`
47
+ CREATE TABLE IF NOT EXISTS users(
48
+ id INTEGER PRIMARY KEY,
49
+ name TEXT NOT NULL,
50
+ email TEXT UNIQUE
51
+ );
52
+ `)
53
+ }
54
+ }
55
+
56
+ // Binding
57
+ interface Env {
58
+ MY_DO: DurableObjectNamespace
59
+ }
60
+
61
+ export default {
62
+ async fetch(request: Request, env: Env): Promise<Response> {
63
+ const id = env.MY_DO.idFromName('singleton')
64
+ const stub = env.MY_DO.get(id)
65
+
66
+ // Modern RPC: call methods directly (recommended)
67
+ const result = await stub.someMethod()
68
+ return Response.json(result)
69
+
70
+ // Legacy: forward request (still works)
71
+ // return stub.fetch(request);
72
+ },
73
+ }
74
+ ```
75
+
76
+ ## CPU Limits
77
+
78
+ ```jsonc
79
+ {
80
+ "limits": {
81
+ "cpu_ms": 300000, // 5 minutes (default 30s)
82
+ },
83
+ }
84
+ ```
85
+
86
+ ## Location Control
87
+
88
+ ```typescript
89
+ // Jurisdiction (GDPR/FedRAMP)
90
+ const euNamespace = env.MY_DO.jurisdiction('eu')
91
+ const id = euNamespace.newUniqueId()
92
+ const stub = euNamespace.get(id)
93
+
94
+ // Location hint (best effort)
95
+ const stub = env.MY_DO.get(id, { locationHint: 'enam' })
96
+ // Hints: wnam, enam, sam, weur, eeur, apac, oc, afr, me
97
+ ```
98
+
99
+ ## Initialization
100
+
101
+ ```typescript
102
+ export class Counter extends DurableObject {
103
+ value: number
104
+
105
+ constructor(ctx: DurableObjectState, env: Env) {
106
+ super(ctx, env)
107
+
108
+ // Block concurrent requests during init
109
+ ctx.blockConcurrencyWhile(async () => {
110
+ this.value = (await ctx.storage.get('value')) || 0
111
+ })
112
+ }
113
+ }
114
+ ```