pi-cloudflare 0.1.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 (410) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +67 -0
  3. package/bin/setup.mjs +103 -0
  4. package/dist/auth-flow.d.ts +15 -0
  5. package/dist/auth-flow.d.ts.map +1 -0
  6. package/dist/auth-flow.js +90 -0
  7. package/dist/auth-flow.js.map +1 -0
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +47 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/config.d.ts +13 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/index.d.ts +24 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +109 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/oauth.d.ts +44 -0
  21. package/dist/oauth.d.ts.map +1 -0
  22. package/dist/oauth.js +135 -0
  23. package/dist/oauth.js.map +1 -0
  24. package/dist/proxy.d.ts +29 -0
  25. package/dist/proxy.d.ts.map +1 -0
  26. package/dist/proxy.js +39 -0
  27. package/dist/proxy.js.map +1 -0
  28. package/dist/servers.d.ts +19 -0
  29. package/dist/servers.d.ts.map +1 -0
  30. package/dist/servers.js +40 -0
  31. package/dist/servers.js.map +1 -0
  32. package/dist/token-store.d.ts +23 -0
  33. package/dist/token-store.d.ts.map +1 -0
  34. package/dist/token-store.js +47 -0
  35. package/dist/token-store.js.map +1 -0
  36. package/package.json +67 -0
  37. package/skills/agents-sdk/SKILL.md +221 -0
  38. package/skills/agents-sdk/references/browse-the-web.md +63 -0
  39. package/skills/agents-sdk/references/callable.md +92 -0
  40. package/skills/agents-sdk/references/client-sdk.md +110 -0
  41. package/skills/agents-sdk/references/codemode.md +110 -0
  42. package/skills/agents-sdk/references/configuration.md +72 -0
  43. package/skills/agents-sdk/references/durable-execution.md +51 -0
  44. package/skills/agents-sdk/references/email.md +146 -0
  45. package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
  46. package/skills/agents-sdk/references/mcp.md +188 -0
  47. package/skills/agents-sdk/references/observability.md +44 -0
  48. package/skills/agents-sdk/references/queue-retries.md +79 -0
  49. package/skills/agents-sdk/references/routing.md +75 -0
  50. package/skills/agents-sdk/references/server-driven-messages.md +63 -0
  51. package/skills/agents-sdk/references/state-scheduling.md +171 -0
  52. package/skills/agents-sdk/references/streaming-chat.md +198 -0
  53. package/skills/agents-sdk/references/think.md +112 -0
  54. package/skills/agents-sdk/references/voice.md +68 -0
  55. package/skills/agents-sdk/references/webhooks-push.md +86 -0
  56. package/skills/agents-sdk/references/workflows.md +132 -0
  57. package/skills/cloudflare/SKILL.md +248 -0
  58. package/skills/cloudflare/references/agents-sdk/README.md +89 -0
  59. package/skills/cloudflare/references/agents-sdk/api.md +190 -0
  60. package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
  61. package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
  62. package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
  63. package/skills/cloudflare/references/ai-gateway/README.md +175 -0
  64. package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
  65. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
  66. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  67. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
  68. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
  69. package/skills/cloudflare/references/ai-search/README.md +138 -0
  70. package/skills/cloudflare/references/ai-search/api.md +87 -0
  71. package/skills/cloudflare/references/ai-search/configuration.md +88 -0
  72. package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
  73. package/skills/cloudflare/references/ai-search/patterns.md +85 -0
  74. package/skills/cloudflare/references/analytics-engine/README.md +94 -0
  75. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  76. package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
  77. package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
  78. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  79. package/skills/cloudflare/references/api/README.md +66 -0
  80. package/skills/cloudflare/references/api/api.md +204 -0
  81. package/skills/cloudflare/references/api/configuration.md +160 -0
  82. package/skills/cloudflare/references/api/gotchas.md +225 -0
  83. package/skills/cloudflare/references/api/patterns.md +204 -0
  84. package/skills/cloudflare/references/api-shield/README.md +44 -0
  85. package/skills/cloudflare/references/api-shield/api.md +141 -0
  86. package/skills/cloudflare/references/api-shield/configuration.md +192 -0
  87. package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
  88. package/skills/cloudflare/references/api-shield/patterns.md +180 -0
  89. package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
  90. package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
  91. package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
  92. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
  93. package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
  94. package/skills/cloudflare/references/artifacts/README.md +79 -0
  95. package/skills/cloudflare/references/artifacts/api.md +128 -0
  96. package/skills/cloudflare/references/artifacts/configuration.md +92 -0
  97. package/skills/cloudflare/references/bindings/README.md +122 -0
  98. package/skills/cloudflare/references/bindings/api.md +203 -0
  99. package/skills/cloudflare/references/bindings/configuration.md +188 -0
  100. package/skills/cloudflare/references/bindings/gotchas.md +208 -0
  101. package/skills/cloudflare/references/bindings/patterns.md +200 -0
  102. package/skills/cloudflare/references/bot-management/README.md +94 -0
  103. package/skills/cloudflare/references/bot-management/api.md +169 -0
  104. package/skills/cloudflare/references/bot-management/configuration.md +163 -0
  105. package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
  106. package/skills/cloudflare/references/bot-management/patterns.md +182 -0
  107. package/skills/cloudflare/references/browser-rendering/README.md +78 -0
  108. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  109. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  110. package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
  111. package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
  112. package/skills/cloudflare/references/c3/README.md +111 -0
  113. package/skills/cloudflare/references/c3/api.md +71 -0
  114. package/skills/cloudflare/references/c3/configuration.md +81 -0
  115. package/skills/cloudflare/references/c3/gotchas.md +92 -0
  116. package/skills/cloudflare/references/c3/patterns.md +82 -0
  117. package/skills/cloudflare/references/cache-reserve/README.md +147 -0
  118. package/skills/cloudflare/references/cache-reserve/api.md +194 -0
  119. package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
  120. package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
  121. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  122. package/skills/cloudflare/references/containers/README.md +85 -0
  123. package/skills/cloudflare/references/containers/api.md +187 -0
  124. package/skills/cloudflare/references/containers/configuration.md +188 -0
  125. package/skills/cloudflare/references/containers/gotchas.md +178 -0
  126. package/skills/cloudflare/references/containers/patterns.md +202 -0
  127. package/skills/cloudflare/references/cron-triggers/README.md +99 -0
  128. package/skills/cloudflare/references/cron-triggers/api.md +196 -0
  129. package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
  130. package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
  131. package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
  132. package/skills/cloudflare/references/d1/README.md +133 -0
  133. package/skills/cloudflare/references/d1/api.md +196 -0
  134. package/skills/cloudflare/references/d1/configuration.md +191 -0
  135. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  136. package/skills/cloudflare/references/d1/patterns.md +189 -0
  137. package/skills/cloudflare/references/ddos/README.md +41 -0
  138. package/skills/cloudflare/references/ddos/api.md +164 -0
  139. package/skills/cloudflare/references/ddos/configuration.md +93 -0
  140. package/skills/cloudflare/references/ddos/gotchas.md +107 -0
  141. package/skills/cloudflare/references/ddos/patterns.md +174 -0
  142. package/skills/cloudflare/references/do-storage/README.md +75 -0
  143. package/skills/cloudflare/references/do-storage/api.md +102 -0
  144. package/skills/cloudflare/references/do-storage/configuration.md +112 -0
  145. package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
  146. package/skills/cloudflare/references/do-storage/patterns.md +194 -0
  147. package/skills/cloudflare/references/do-storage/testing.md +183 -0
  148. package/skills/cloudflare/references/durable-objects/README.md +185 -0
  149. package/skills/cloudflare/references/durable-objects/api.md +187 -0
  150. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  151. package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
  152. package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
  153. package/skills/cloudflare/references/email-routing/README.md +89 -0
  154. package/skills/cloudflare/references/email-routing/api.md +195 -0
  155. package/skills/cloudflare/references/email-routing/configuration.md +186 -0
  156. package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
  157. package/skills/cloudflare/references/email-routing/patterns.md +229 -0
  158. package/skills/cloudflare/references/email-workers/README.md +151 -0
  159. package/skills/cloudflare/references/email-workers/api.md +237 -0
  160. package/skills/cloudflare/references/email-workers/configuration.md +112 -0
  161. package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
  162. package/skills/cloudflare/references/email-workers/patterns.md +102 -0
  163. package/skills/cloudflare/references/flagship/README.md +59 -0
  164. package/skills/cloudflare/references/flagship/api.md +390 -0
  165. package/skills/cloudflare/references/flagship/configuration.md +202 -0
  166. package/skills/cloudflare/references/flagship/gotchas.md +178 -0
  167. package/skills/cloudflare/references/flagship/patterns.md +469 -0
  168. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  169. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  170. package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
  171. package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
  172. package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
  173. package/skills/cloudflare/references/hyperdrive/README.md +82 -0
  174. package/skills/cloudflare/references/hyperdrive/api.md +143 -0
  175. package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
  176. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  177. package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
  178. package/skills/cloudflare/references/images/README.md +61 -0
  179. package/skills/cloudflare/references/images/api.md +96 -0
  180. package/skills/cloudflare/references/images/configuration.md +211 -0
  181. package/skills/cloudflare/references/images/gotchas.md +99 -0
  182. package/skills/cloudflare/references/images/patterns.md +115 -0
  183. package/skills/cloudflare/references/kv/README.md +89 -0
  184. package/skills/cloudflare/references/kv/api.md +160 -0
  185. package/skills/cloudflare/references/kv/configuration.md +144 -0
  186. package/skills/cloudflare/references/kv/gotchas.md +131 -0
  187. package/skills/cloudflare/references/kv/patterns.md +196 -0
  188. package/skills/cloudflare/references/miniflare/README.md +105 -0
  189. package/skills/cloudflare/references/miniflare/api.md +187 -0
  190. package/skills/cloudflare/references/miniflare/configuration.md +173 -0
  191. package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
  192. package/skills/cloudflare/references/miniflare/patterns.md +181 -0
  193. package/skills/cloudflare/references/network-interconnect/README.md +99 -0
  194. package/skills/cloudflare/references/network-interconnect/api.md +199 -0
  195. package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
  196. package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
  197. package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
  198. package/skills/cloudflare/references/observability/README.md +88 -0
  199. package/skills/cloudflare/references/observability/api.md +164 -0
  200. package/skills/cloudflare/references/observability/configuration.md +169 -0
  201. package/skills/cloudflare/references/observability/gotchas.md +115 -0
  202. package/skills/cloudflare/references/observability/patterns.md +105 -0
  203. package/skills/cloudflare/references/pages/README.md +88 -0
  204. package/skills/cloudflare/references/pages/api.md +204 -0
  205. package/skills/cloudflare/references/pages/configuration.md +201 -0
  206. package/skills/cloudflare/references/pages/gotchas.md +203 -0
  207. package/skills/cloudflare/references/pages/patterns.md +204 -0
  208. package/skills/cloudflare/references/pages-functions/README.md +98 -0
  209. package/skills/cloudflare/references/pages-functions/api.md +143 -0
  210. package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
  211. package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
  212. package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
  213. package/skills/cloudflare/references/pipelines/README.md +90 -0
  214. package/skills/cloudflare/references/pipelines/api.md +124 -0
  215. package/skills/cloudflare/references/pipelines/configuration.md +155 -0
  216. package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
  217. package/skills/cloudflare/references/pipelines/patterns.md +130 -0
  218. package/skills/cloudflare/references/pulumi/README.md +100 -0
  219. package/skills/cloudflare/references/pulumi/api.md +200 -0
  220. package/skills/cloudflare/references/pulumi/configuration.md +198 -0
  221. package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
  222. package/skills/cloudflare/references/pulumi/patterns.md +191 -0
  223. package/skills/cloudflare/references/queues/README.md +96 -0
  224. package/skills/cloudflare/references/queues/api.md +206 -0
  225. package/skills/cloudflare/references/queues/configuration.md +144 -0
  226. package/skills/cloudflare/references/queues/gotchas.md +206 -0
  227. package/skills/cloudflare/references/queues/patterns.md +220 -0
  228. package/skills/cloudflare/references/r2/README.md +95 -0
  229. package/skills/cloudflare/references/r2/api.md +200 -0
  230. package/skills/cloudflare/references/r2/configuration.md +165 -0
  231. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  232. package/skills/cloudflare/references/r2/patterns.md +193 -0
  233. package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
  234. package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
  235. package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
  236. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
  237. package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
  238. package/skills/cloudflare/references/r2-sql/README.md +64 -0
  239. package/skills/cloudflare/references/r2-sql/api.md +121 -0
  240. package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
  241. package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
  242. package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
  243. package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
  244. package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
  245. package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
  246. package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
  247. package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
  248. package/skills/cloudflare/references/realtimekit/README.md +113 -0
  249. package/skills/cloudflare/references/realtimekit/api.md +212 -0
  250. package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
  251. package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
  252. package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
  253. package/skills/cloudflare/references/sandbox/README.md +96 -0
  254. package/skills/cloudflare/references/sandbox/api.md +198 -0
  255. package/skills/cloudflare/references/sandbox/configuration.md +143 -0
  256. package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
  257. package/skills/cloudflare/references/sandbox/patterns.md +201 -0
  258. package/skills/cloudflare/references/secrets-store/README.md +74 -0
  259. package/skills/cloudflare/references/secrets-store/api.md +200 -0
  260. package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
  261. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  262. package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
  263. package/skills/cloudflare/references/smart-placement/README.md +138 -0
  264. package/skills/cloudflare/references/smart-placement/api.md +183 -0
  265. package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
  266. package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
  267. package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
  268. package/skills/cloudflare/references/snippets/README.md +68 -0
  269. package/skills/cloudflare/references/snippets/api.md +198 -0
  270. package/skills/cloudflare/references/snippets/configuration.md +227 -0
  271. package/skills/cloudflare/references/snippets/gotchas.md +86 -0
  272. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  273. package/skills/cloudflare/references/spectrum/README.md +52 -0
  274. package/skills/cloudflare/references/spectrum/api.md +181 -0
  275. package/skills/cloudflare/references/spectrum/configuration.md +194 -0
  276. package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
  277. package/skills/cloudflare/references/spectrum/patterns.md +196 -0
  278. package/skills/cloudflare/references/static-assets/README.md +65 -0
  279. package/skills/cloudflare/references/static-assets/api.md +199 -0
  280. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  281. package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
  282. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  283. package/skills/cloudflare/references/stream/README.md +114 -0
  284. package/skills/cloudflare/references/stream/api-live.md +195 -0
  285. package/skills/cloudflare/references/stream/api.md +199 -0
  286. package/skills/cloudflare/references/stream/configuration.md +141 -0
  287. package/skills/cloudflare/references/stream/gotchas.md +130 -0
  288. package/skills/cloudflare/references/stream/patterns.md +184 -0
  289. package/skills/cloudflare/references/tail-workers/README.md +89 -0
  290. package/skills/cloudflare/references/tail-workers/api.md +200 -0
  291. package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
  292. package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
  293. package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
  294. package/skills/cloudflare/references/terraform/README.md +102 -0
  295. package/skills/cloudflare/references/terraform/api.md +178 -0
  296. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  297. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  298. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  299. package/skills/cloudflare/references/tunnel/README.md +129 -0
  300. package/skills/cloudflare/references/tunnel/api.md +193 -0
  301. package/skills/cloudflare/references/tunnel/configuration.md +157 -0
  302. package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
  303. package/skills/cloudflare/references/tunnel/networking.md +168 -0
  304. package/skills/cloudflare/references/tunnel/patterns.md +192 -0
  305. package/skills/cloudflare/references/turn/README.md +82 -0
  306. package/skills/cloudflare/references/turn/api.md +239 -0
  307. package/skills/cloudflare/references/turn/configuration.md +179 -0
  308. package/skills/cloudflare/references/turn/gotchas.md +231 -0
  309. package/skills/cloudflare/references/turn/patterns.md +213 -0
  310. package/skills/cloudflare/references/turnstile/README.md +99 -0
  311. package/skills/cloudflare/references/turnstile/api.md +240 -0
  312. package/skills/cloudflare/references/turnstile/configuration.md +222 -0
  313. package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
  314. package/skills/cloudflare/references/turnstile/patterns.md +193 -0
  315. package/skills/cloudflare/references/vectorize/README.md +133 -0
  316. package/skills/cloudflare/references/vectorize/api.md +88 -0
  317. package/skills/cloudflare/references/vectorize/configuration.md +88 -0
  318. package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
  319. package/skills/cloudflare/references/vectorize/patterns.md +90 -0
  320. package/skills/cloudflare/references/waf/README.md +113 -0
  321. package/skills/cloudflare/references/waf/api.md +202 -0
  322. package/skills/cloudflare/references/waf/configuration.md +203 -0
  323. package/skills/cloudflare/references/waf/gotchas.md +204 -0
  324. package/skills/cloudflare/references/waf/patterns.md +197 -0
  325. package/skills/cloudflare/references/web-analytics/README.md +141 -0
  326. package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
  327. package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
  328. package/skills/cloudflare/references/web-analytics/integration.md +60 -0
  329. package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
  330. package/skills/cloudflare/references/workerd/README.md +78 -0
  331. package/skills/cloudflare/references/workerd/api.md +185 -0
  332. package/skills/cloudflare/references/workerd/configuration.md +183 -0
  333. package/skills/cloudflare/references/workerd/gotchas.md +139 -0
  334. package/skills/cloudflare/references/workerd/patterns.md +192 -0
  335. package/skills/cloudflare/references/workers/README.md +108 -0
  336. package/skills/cloudflare/references/workers/api.md +195 -0
  337. package/skills/cloudflare/references/workers/configuration.md +185 -0
  338. package/skills/cloudflare/references/workers/frameworks.md +197 -0
  339. package/skills/cloudflare/references/workers/gotchas.md +137 -0
  340. package/skills/cloudflare/references/workers/patterns.md +198 -0
  341. package/skills/cloudflare/references/workers-ai/README.md +197 -0
  342. package/skills/cloudflare/references/workers-ai/api.md +112 -0
  343. package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
  344. package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
  345. package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
  346. package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
  347. package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
  348. package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
  349. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  350. package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
  351. package/skills/cloudflare/references/workers-playground/README.md +127 -0
  352. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  353. package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
  354. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  355. package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
  356. package/skills/cloudflare/references/workers-vpc/README.md +127 -0
  357. package/skills/cloudflare/references/workers-vpc/api.md +202 -0
  358. package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
  359. package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
  360. package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
  361. package/skills/cloudflare/references/workflows/README.md +77 -0
  362. package/skills/cloudflare/references/workflows/api.md +218 -0
  363. package/skills/cloudflare/references/workflows/configuration.md +152 -0
  364. package/skills/cloudflare/references/workflows/gotchas.md +90 -0
  365. package/skills/cloudflare/references/workflows/patterns.md +175 -0
  366. package/skills/cloudflare/references/wrangler/README.md +135 -0
  367. package/skills/cloudflare/references/wrangler/api.md +188 -0
  368. package/skills/cloudflare/references/wrangler/configuration.md +197 -0
  369. package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
  370. package/skills/cloudflare/references/wrangler/patterns.md +209 -0
  371. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  372. package/skills/cloudflare/references/zaraz/README.md +111 -0
  373. package/skills/cloudflare/references/zaraz/api.md +112 -0
  374. package/skills/cloudflare/references/zaraz/configuration.md +90 -0
  375. package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
  376. package/skills/cloudflare/references/zaraz/patterns.md +74 -0
  377. package/skills/cloudflare-email-service/SKILL.md +103 -0
  378. package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
  379. package/skills/cloudflare-email-service/references/deliverability.md +285 -0
  380. package/skills/cloudflare-email-service/references/rest-api.md +184 -0
  381. package/skills/cloudflare-email-service/references/routing.md +199 -0
  382. package/skills/cloudflare-email-service/references/sending.md +252 -0
  383. package/skills/cloudflare-one/SKILL.md +176 -0
  384. package/skills/cloudflare-one-migrations/SKILL.md +110 -0
  385. package/skills/durable-objects/SKILL.md +186 -0
  386. package/skills/durable-objects/references/rules.md +295 -0
  387. package/skills/durable-objects/references/testing.md +264 -0
  388. package/skills/durable-objects/references/workers.md +346 -0
  389. package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
  390. package/skills/sandbox-next/SKILL.md +91 -0
  391. package/skills/sandbox-next/references/api-quick-ref.md +94 -0
  392. package/skills/sandbox-next/references/examples.md +15 -0
  393. package/skills/sandbox-stable/SKILL.md +110 -0
  394. package/skills/turnstile-spin/README.md +51 -0
  395. package/skills/turnstile-spin/SKILL.md +330 -0
  396. package/skills/turnstile-spin/references/astro.md +199 -0
  397. package/skills/turnstile-spin/references/hugo.md +114 -0
  398. package/skills/turnstile-spin/references/nextjs-app.md +261 -0
  399. package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
  400. package/skills/turnstile-spin/references/sveltekit.md +191 -0
  401. package/skills/turnstile-spin/references/vanilla-html.md +157 -0
  402. package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
  403. package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
  404. package/skills/turnstile-spin/scripts/validate.sh +137 -0
  405. package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
  406. package/skills/turnstile-spin/tests/validation.md +62 -0
  407. package/skills/workers-best-practices/SKILL.md +127 -0
  408. package/skills/workers-best-practices/references/review.md +174 -0
  409. package/skills/workers-best-practices/references/rules.md +467 -0
  410. package/skills/wrangler/SKILL.md +922 -0
@@ -0,0 +1,199 @@
1
+ # Cron Triggers Gotchas
2
+
3
+ ## Common Errors
4
+
5
+ ### "Timezone Issues"
6
+
7
+ **Problem:** Cron runs at wrong time relative to local timezone
8
+ **Cause:** All crons execute in UTC, no local timezone support
9
+ **Solution:** Convert local time to UTC manually
10
+
11
+ **Conversion formula:** `utcHour = (localHour - utcOffset + 24) % 24`
12
+
13
+ **Examples:**
14
+ - 9am PST (UTC-8) → `(9 - (-8) + 24) % 24 = 17` → `0 17 * * *`
15
+ - 2am EST (UTC-5) → `(2 - (-5) + 24) % 24 = 7` → `0 7 * * *`
16
+ - 6pm JST (UTC+9) → `(18 - 9 + 24) % 24 = 33 % 24 = 9` → `0 9 * * *`
17
+
18
+ **Daylight Saving Time:** Adjust manually when DST changes, or schedule at times unaffected by DST (e.g., 2am-4am local time usually safe)
19
+
20
+ ### "Cron Not Executing"
21
+
22
+ **Cause:** Missing `scheduled()` export, invalid syntax, propagation delay (<15min), or plan limits
23
+ **Solution:** Verify export exists, validate at crontab.guru, wait 15+ min after deploy, check plan limits
24
+
25
+ ### "Duplicate Executions"
26
+
27
+ **Cause:** At-least-once delivery
28
+ **Solution:** Track execution IDs in KV - see idempotency pattern below
29
+
30
+ ### "Execution Failures"
31
+
32
+ **Cause:** CPU exceeded, unhandled exceptions, network timeouts, binding errors
33
+ **Solution:** Use try-catch, AbortController timeouts, `ctx.waitUntil()` for long ops, or Workflows for heavy tasks
34
+
35
+ ### "Local Testing Not Working"
36
+
37
+ **Problem:** `/__scheduled` endpoint returns 404 or doesn't trigger handler
38
+ **Cause:** Missing `scheduled()` export, wrangler not running, or incorrect endpoint format
39
+ **Solution:**
40
+
41
+ 1. Verify `scheduled()` is exported:
42
+ ```typescript
43
+ export default {
44
+ async scheduled(controller, env, ctx) {
45
+ console.log("Cron triggered");
46
+ },
47
+ };
48
+ ```
49
+
50
+ 2. Start dev server:
51
+ ```bash
52
+ npx wrangler dev
53
+ ```
54
+
55
+ 3. Use correct endpoint format (URL-encode spaces as `+`):
56
+ ```bash
57
+ # Correct
58
+ curl "http://localhost:8787/__scheduled?cron=*/5+*+*+*+*"
59
+
60
+ # Wrong (will fail)
61
+ curl "http://localhost:8787/__scheduled?cron=*/5 * * * *"
62
+ ```
63
+
64
+ 4. Update Wrangler if outdated:
65
+ ```bash
66
+ npm install -g wrangler@latest
67
+ ```
68
+
69
+ ### "waitUntil() Tasks Not Completing"
70
+
71
+ **Problem:** Background tasks in `ctx.waitUntil()` fail silently or don't execute
72
+ **Cause:** Promises rejected without error handling, or handler returns before promise settles
73
+ **Solution:** Always await or handle errors in waitUntil promises:
74
+
75
+ ```typescript
76
+ export default {
77
+ async scheduled(controller, env, ctx) {
78
+ // BAD: Silent failures
79
+ ctx.waitUntil(riskyOperation());
80
+
81
+ // GOOD: Explicit error handling
82
+ ctx.waitUntil(
83
+ riskyOperation().catch(err => {
84
+ console.error("Background task failed:", err);
85
+ return logError(err, env);
86
+ })
87
+ );
88
+ },
89
+ };
90
+ ```
91
+
92
+ ### "Idempotency Issues"
93
+
94
+ **Problem:** At-least-once delivery causes duplicate side effects (double charges, duplicate emails)
95
+ **Cause:** No deduplication mechanism
96
+ **Solution:** Use KV to track execution IDs:
97
+
98
+ ```typescript
99
+ export default {
100
+ async scheduled(controller, env, ctx) {
101
+ const executionId = `${controller.cron}-${controller.scheduledTime}`;
102
+ const existing = await env.EXECUTIONS.get(executionId);
103
+
104
+ if (existing) {
105
+ console.log("Already executed, skipping");
106
+ controller.noRetry();
107
+ return;
108
+ }
109
+
110
+ await env.EXECUTIONS.put(executionId, "1", { expirationTtl: 86400 }); // 24h TTL
111
+ await performIdempotentOperation(env);
112
+ },
113
+ };
114
+ ```
115
+
116
+ ### "Security Concerns"
117
+
118
+ **Problem:** `__scheduled` endpoint exposed in production allows unauthorized cron triggering
119
+ **Cause:** Testing endpoint available in deployed Workers
120
+ **Solution:** Block `__scheduled` in production:
121
+
122
+ ```typescript
123
+ export default {
124
+ async fetch(request, env, ctx) {
125
+ const url = new URL(request.url);
126
+
127
+ // Block __scheduled in production
128
+ if (url.pathname === "/__scheduled" && env.ENVIRONMENT === "production") {
129
+ return new Response("Not Found", { status: 404 });
130
+ }
131
+
132
+ return handleRequest(request, env, ctx);
133
+ },
134
+
135
+ async scheduled(controller, env, ctx) {
136
+ // Your cron logic
137
+ },
138
+ };
139
+ ```
140
+
141
+ **Also:** Use `env.API_KEY` for secrets (never hardcode)
142
+
143
+ **Alternative:** Add middleware to verify request origin:
144
+ ```typescript
145
+ export default {
146
+ async fetch(request, env, ctx) {
147
+ const url = new URL(request.url);
148
+
149
+ if (url.pathname === "/__scheduled") {
150
+ // Check Cloudflare headers to verify internal request
151
+ const cfRay = request.headers.get("cf-ray");
152
+ if (!cfRay && env.ENVIRONMENT === "production") {
153
+ return new Response("Not Found", { status: 404 });
154
+ }
155
+ }
156
+
157
+ return handleRequest(request, env, ctx);
158
+ },
159
+
160
+ async scheduled(controller, env, ctx) {
161
+ // Your cron logic
162
+ },
163
+ };
164
+ ```
165
+
166
+ ## Limits & Quotas
167
+
168
+ | Limit | Free | Paid | Notes |
169
+ |-------|------|------|-------|
170
+ | Triggers per Worker | 3 | Unlimited | Maximum cron schedules per Worker |
171
+ | CPU time | 10ms | 30s (<1hr interval), 15min (≥1hr interval) | May need `ctx.waitUntil()` or Workflows |
172
+ | Execution guarantee | At-least-once | At-least-once | Duplicates possible - use idempotency |
173
+ | Propagation delay | Up to 15 minutes | Up to 15 minutes | Time for changes to take effect globally |
174
+ | Min interval | 1 minute | 1 minute | Cannot schedule more frequently |
175
+ | Cron accuracy | ±1 minute | ±1 minute | Execution may drift slightly |
176
+
177
+ ## Testing Best Practices
178
+
179
+ **Unit tests:**
180
+ - Mock `ScheduledController`, `ExecutionContext`, and bindings
181
+ - Test each cron expression separately
182
+ - Verify `noRetry()` is called when expected
183
+ - Use Vitest with `@cloudflare/vitest-pool-workers` for realistic env
184
+
185
+ **Integration tests:**
186
+ - Test via `/__scheduled` endpoint in dev environment
187
+ - Verify idempotency logic with duplicate `scheduledTime` values
188
+ - Test error handling and retry behavior
189
+
190
+ **Production:** Start with long intervals (`*/30 * * * *`), monitor Cron Events for 24h, set up alerts before reducing interval
191
+
192
+ ## Resources
193
+
194
+ - [Cron Triggers Docs](https://developers.cloudflare.com/workers/configuration/cron-triggers/)
195
+ - [Scheduled Handler API](https://developers.cloudflare.com/workers/runtime-apis/handlers/scheduled/)
196
+ - [Cloudflare Workflows](https://developers.cloudflare.com/workflows/)
197
+ - [Workers Limits](https://developers.cloudflare.com/workers/platform/limits/)
198
+ - [Crontab Guru](https://crontab.guru/) - Validator
199
+ - [Vitest Pool Workers](https://github.com/cloudflare/workers-sdk/tree/main/fixtures/vitest-pool-workers-examples)
@@ -0,0 +1,190 @@
1
+ # Cron Triggers Patterns
2
+
3
+ ## API Data Sync
4
+
5
+ ```typescript
6
+ export default {
7
+ async scheduled(controller, env, ctx) {
8
+ const response = await fetch("https://api.example.com/data", {headers: { "Authorization": `Bearer ${env.API_KEY}` }});
9
+ if (!response.ok) throw new Error(`API error: ${response.status}`);
10
+ ctx.waitUntil(env.MY_KV.put("cached_data", JSON.stringify(await response.json()), {expirationTtl: 3600}));
11
+ },
12
+ };
13
+ ```
14
+
15
+ ## Database Cleanup
16
+
17
+ ```typescript
18
+ export default {
19
+ async scheduled(controller, env, ctx) {
20
+ const result = await env.DB.prepare(`DELETE FROM sessions WHERE expires_at < datetime('now')`).run();
21
+ console.log(`Deleted ${result.meta.changes} expired sessions`);
22
+ ctx.waitUntil(env.DB.prepare("VACUUM").run());
23
+ },
24
+ };
25
+ ```
26
+
27
+ ## Report Generation
28
+
29
+ ```typescript
30
+ export default {
31
+ async scheduled(controller, env, ctx) {
32
+ const startOfWeek = new Date(); startOfWeek.setDate(startOfWeek.getDate() - 7);
33
+ const { results } = await env.DB.prepare(`SELECT date, revenue, orders FROM daily_stats WHERE date >= ? ORDER BY date`).bind(startOfWeek.toISOString()).all();
34
+ const report = {period: "weekly", totalRevenue: results.reduce((sum, d) => sum + d.revenue, 0), totalOrders: results.reduce((sum, d) => sum + d.orders, 0), dailyBreakdown: results};
35
+ const reportKey = `reports/weekly-${Date.now()}.json`;
36
+ await env.REPORTS_BUCKET.put(reportKey, JSON.stringify(report));
37
+ ctx.waitUntil(env.SEND_EMAIL.fetch("https://example.com/send", {method: "POST", body: JSON.stringify({to: "team@example.com", subject: "Weekly Report", reportUrl: `https://reports.example.com/${reportKey}`})}));
38
+ },
39
+ };
40
+ ```
41
+
42
+ ## Health Checks
43
+
44
+ ```typescript
45
+ export default {
46
+ async scheduled(controller, env, ctx) {
47
+ const services = [{name: "API", url: "https://api.example.com/health"}, {name: "CDN", url: "https://cdn.example.com/health"}];
48
+ const checks = await Promise.all(services.map(async (service) => {
49
+ const start = Date.now();
50
+ try {
51
+ const response = await fetch(service.url, { signal: AbortSignal.timeout(5000) });
52
+ return {name: service.name, status: response.ok ? "up" : "down", responseTime: Date.now() - start};
53
+ } catch (error) {
54
+ return {name: service.name, status: "down", responseTime: Date.now() - start, error: error.message};
55
+ }
56
+ }));
57
+ ctx.waitUntil(env.STATUS_KV.put("health_status", JSON.stringify(checks)));
58
+ const failures = checks.filter(c => c.status === "down");
59
+ if (failures.length > 0) ctx.waitUntil(fetch(env.ALERT_WEBHOOK, {method: "POST", body: JSON.stringify({text: `${failures.length} service(s) down: ${failures.map(f => f.name).join(", ")}`})}));
60
+ },
61
+ };
62
+ ```
63
+
64
+ ## Batch Processing (Rate-Limited)
65
+
66
+ ```typescript
67
+ export default {
68
+ async scheduled(controller, env, ctx) {
69
+ const queueData = await env.QUEUE_KV.get("pending_items", "json");
70
+ if (!queueData || queueData.length === 0) return;
71
+ const batch = queueData.slice(0, 100);
72
+ const results = await Promise.allSettled(batch.map(item => fetch("https://api.example.com/process", {method: "POST", headers: {"Authorization": `Bearer ${env.API_KEY}`, "Content-Type": "application/json"}, body: JSON.stringify(item)})));
73
+ console.log(`Processed ${results.filter(r => r.status === "fulfilled").length}/${batch.length} items`);
74
+ ctx.waitUntil(env.QUEUE_KV.put("pending_items", JSON.stringify(queueData.slice(100))));
75
+ },
76
+ };
77
+ ```
78
+
79
+ ## Queue Integration
80
+
81
+ ```typescript
82
+ export default {
83
+ async scheduled(controller, env, ctx) {
84
+ const batch = await env.MY_QUEUE.receive({ batchSize: 100 });
85
+ const results = await Promise.allSettled(batch.messages.map(async (msg) => {
86
+ await processMessage(msg.body, env);
87
+ await msg.ack();
88
+ }));
89
+ console.log(`Processed ${results.filter(r => r.status === "fulfilled").length}/${batch.messages.length}`);
90
+ },
91
+ };
92
+ ```
93
+
94
+ ## Monitoring & Observability
95
+
96
+ ```typescript
97
+ export default {
98
+ async scheduled(controller, env, ctx) {
99
+ const startTime = Date.now();
100
+ const meta = { cron: controller.cron, scheduledTime: controller.scheduledTime };
101
+ console.log("[START]", meta);
102
+ try {
103
+ const result = await performTask(env);
104
+ console.log("[SUCCESS]", { ...meta, duration: Date.now() - startTime, count: result.count });
105
+ ctx.waitUntil(env.METRICS.put(`cron:${controller.scheduledTime}`, JSON.stringify({ ...meta, status: "success" }), { expirationTtl: 2592000 }));
106
+ } catch (error) {
107
+ console.error("[ERROR]", { ...meta, duration: Date.now() - startTime, error: error.message });
108
+ ctx.waitUntil(fetch(env.ALERT_WEBHOOK, { method: "POST", body: JSON.stringify({ text: `Cron failed: ${controller.cron}`, error: error.message }) }));
109
+ throw error;
110
+ }
111
+ },
112
+ };
113
+ ```
114
+
115
+ **View logs:** `npx wrangler tail` or Dashboard → Workers & Pages → Worker → Logs
116
+
117
+ ## Durable Objects Coordination
118
+
119
+ ```typescript
120
+ export default {
121
+ async scheduled(controller, env, ctx) {
122
+ const stub = env.COORDINATOR.get(env.COORDINATOR.idFromName("cron-lock"));
123
+ const acquired = await stub.tryAcquireLock(controller.scheduledTime);
124
+ if (!acquired) {
125
+ controller.noRetry();
126
+ return;
127
+ }
128
+ try {
129
+ await performTask(env);
130
+ } finally {
131
+ await stub.releaseLock();
132
+ }
133
+ },
134
+ };
135
+ ```
136
+
137
+ ## Python Handler
138
+
139
+ ```python
140
+ from workers import WorkerEntrypoint
141
+
142
+ class Default(WorkerEntrypoint):
143
+ async def scheduled(self, controller, env, ctx):
144
+ data = await env.MY_KV.get("key")
145
+ ctx.waitUntil(env.DB.execute("DELETE FROM logs WHERE created_at < datetime('now', '-7 days')"))
146
+ ```
147
+
148
+ ## Testing Patterns
149
+
150
+ **Local testing with /__scheduled:**
151
+ ```bash
152
+ # Start dev server
153
+ npx wrangler dev
154
+
155
+ # Test specific cron
156
+ curl "http://localhost:8787/__scheduled?cron=*/5+*+*+*+*"
157
+
158
+ # Test with specific time
159
+ curl "http://localhost:8787/__scheduled?cron=0+2+*+*+*&scheduledTime=1704067200000"
160
+ ```
161
+
162
+ **Unit tests:**
163
+ ```typescript
164
+ // test/scheduled.test.ts
165
+ import { describe, it, expect, vi } from "vitest";
166
+ import { env } from "cloudflare:test";
167
+ import worker from "../src/index";
168
+
169
+ describe("Scheduled Handler", () => {
170
+ it("executes cron", async () => {
171
+ const controller = { scheduledTime: Date.now(), cron: "*/5 * * * *", type: "scheduled" as const, noRetry: vi.fn() };
172
+ const ctx = { waitUntil: vi.fn(), passThroughOnException: vi.fn() };
173
+ await worker.scheduled(controller, env, ctx);
174
+ expect(await env.MY_KV.get("last_run")).toBeDefined();
175
+ });
176
+
177
+ it("calls noRetry on duplicate", async () => {
178
+ const controller = { scheduledTime: 1704067200000, cron: "0 2 * * *", type: "scheduled" as const, noRetry: vi.fn() };
179
+ await env.EXECUTIONS.put("0 2 * * *-1704067200000", "1");
180
+ await worker.scheduled(controller, env, { waitUntil: vi.fn(), passThroughOnException: vi.fn() });
181
+ expect(controller.noRetry).toHaveBeenCalled();
182
+ });
183
+ });
184
+ ```
185
+
186
+ ## See Also
187
+
188
+ - [README.md](./README.md) - Overview
189
+ - [api.md](./api.md) - Handler implementation
190
+ - [gotchas.md](./gotchas.md) - Troubleshooting
@@ -0,0 +1,133 @@
1
+ # Cloudflare D1 Database
2
+
3
+ Expert guidance for Cloudflare D1, a serverless SQLite database designed for horizontal scale-out across multiple databases.
4
+
5
+ ## Overview
6
+
7
+ D1 is Cloudflare's managed, serverless database with:
8
+ - SQLite SQL semantics and compatibility
9
+ - Built-in disaster recovery via Time Travel (30-day point-in-time recovery)
10
+ - Horizontal scale-out architecture (10 GB per database)
11
+ - Worker and HTTP API access
12
+ - Pricing based on query and storage costs only
13
+
14
+ **Architecture Philosophy**: D1 is optimized for per-user, per-tenant, or per-entity database patterns rather than single large databases.
15
+
16
+ ## Quick Start
17
+
18
+ ```bash
19
+ # Create database
20
+ wrangler d1 create <database-name>
21
+
22
+ # Execute migration
23
+ wrangler d1 migrations apply <db-name> --remote
24
+
25
+ # Local development
26
+ wrangler dev
27
+ ```
28
+
29
+ ## Core Query Methods
30
+
31
+ ```typescript
32
+ // .all() - Returns all rows; .first() - First row or null; .first(col) - Single column value
33
+ // .run() - INSERT/UPDATE/DELETE; .raw() - Array of arrays (efficient)
34
+ const { results, success, meta } = await env.DB.prepare('SELECT * FROM users WHERE active = ?').bind(true).all();
35
+ const user = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first();
36
+ ```
37
+
38
+ ## Batch Operations
39
+
40
+ ```typescript
41
+ // Multiple queries in single round trip (atomic transaction)
42
+ const results = await env.DB.batch([
43
+ env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(1),
44
+ env.DB.prepare('SELECT * FROM posts WHERE author_id = ?').bind(1),
45
+ env.DB.prepare('UPDATE users SET last_access = ? WHERE id = ?').bind(Date.now(), 1)
46
+ ]);
47
+ ```
48
+
49
+ ## Sessions API (Paid Plans)
50
+
51
+ ```typescript
52
+ // Create long-running session for analytics/migrations (up to 15 minutes)
53
+ const session = env.DB.withSession();
54
+ try {
55
+ await session.prepare('CREATE INDEX idx_heavy ON large_table(column)').run();
56
+ await session.prepare('ANALYZE').run();
57
+ } finally {
58
+ session.close(); // Always close to release resources
59
+ }
60
+ ```
61
+
62
+ ## Read Replication (Paid Plans)
63
+
64
+ ```typescript
65
+ // Read from nearest replica for lower latency (automatic failover)
66
+ const user = await env.DB_REPLICA.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first();
67
+
68
+ // Writes always go to primary
69
+ await env.DB.prepare('UPDATE users SET last_login = ? WHERE id = ?').bind(Date.now(), userId).run();
70
+ ```
71
+
72
+ ## Platform Limits
73
+
74
+ | Limit | Free Tier | Paid Plans |
75
+ |-------|-----------|------------|
76
+ | Database size | 500 MB | 10 GB per database |
77
+ | Row size | 1 MB max | 1 MB max |
78
+ | Query timeout | 30 seconds | 30 seconds |
79
+ | Batch size | 1,000 statements | 10,000 statements |
80
+ | Time Travel retention | 7 days | 30 days |
81
+ | Read replicas | Not available | Yes (paid add-on) |
82
+
83
+ **Pricing**: $0.001 per million rows read + $1.00 per million rows written + $0.75/GB storage/month (includes free monthly allowance; no per-database fee)
84
+
85
+ ## CLI Commands
86
+
87
+ ```bash
88
+ # Database management
89
+ wrangler d1 create <db-name>
90
+ wrangler d1 list
91
+ wrangler d1 delete <db-name>
92
+
93
+ # Migrations
94
+ wrangler d1 migrations create <db-name> <migration-name> # Create new migration file
95
+ wrangler d1 migrations apply <db-name> --remote # Apply pending migrations
96
+ wrangler d1 migrations apply <db-name> --local # Apply locally
97
+ wrangler d1 migrations list <db-name> --remote # Show applied migrations
98
+
99
+ # Direct SQL execution
100
+ wrangler d1 execute <db-name> --remote --command="SELECT * FROM users"
101
+ wrangler d1 execute <db-name> --local --file=./schema.sql
102
+
103
+ # Backups & Import/Export
104
+ wrangler d1 export <db-name> --remote --output=./backup.sql # Full export with schema
105
+ wrangler d1 export <db-name> --remote --no-schema --output=./data.sql # Data only
106
+ wrangler d1 time-travel restore <db-name> --timestamp="2024-01-15T14:30:00Z" # Point-in-time recovery
107
+
108
+ # Development
109
+ wrangler dev --persist-to=./.wrangler/state
110
+ ```
111
+
112
+ ## Reading Order
113
+
114
+ **Start here**: Quick Start above → configuration.md (setup) → api.md (queries)
115
+
116
+ **Common tasks**:
117
+ - First time setup: configuration.md → Run migrations
118
+ - Adding queries: api.md → Prepared statements
119
+ - Pagination/caching: patterns.md
120
+ - Production optimization: Read Replication + Sessions API (this file)
121
+ - Debugging: gotchas.md
122
+
123
+ ## In This Reference
124
+
125
+ - [configuration.md](./configuration.md) - wrangler.jsonc setup, migrations, TypeScript types, ORMs, local dev
126
+ - [api.md](./api.md) - Query methods (.all/.first/.run/.raw), batch, sessions, read replicas, error handling
127
+ - [patterns.md](./patterns.md) - Pagination, bulk operations, caching, multi-tenant, sessions, analytics
128
+ - [gotchas.md](./gotchas.md) - SQL injection, limits by plan tier, performance, common errors
129
+
130
+ ## See Also
131
+
132
+ - [workers](../workers/) - Worker runtime and fetch handler patterns
133
+ - [hyperdrive](../hyperdrive/) - Connection pooling for external databases