opencodekit 0.15.3 → 0.15.5

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 (321) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/AGENTS.md +209 -77
  3. package/dist/template/.opencode/agent/plan.md +4 -0
  4. package/dist/template/.opencode/command/cloudflare.md +70 -0
  5. package/dist/template/.opencode/package.json +1 -1
  6. package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
  7. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  8. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  9. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  10. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  11. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  12. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  13. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  14. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  15. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  16. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  17. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  18. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  19. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  20. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  21. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  22. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  23. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  24. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  25. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  26. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  27. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  28. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  29. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  30. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  31. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  32. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  33. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  34. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  35. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  36. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  37. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  38. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  39. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  40. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  41. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  42. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  43. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  44. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  45. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  46. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  47. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  48. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  49. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  50. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  51. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  52. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  53. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  54. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  55. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  56. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  57. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  58. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  59. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  60. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  61. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  62. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  63. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  64. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  65. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  66. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  67. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  68. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  69. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  70. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  71. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  72. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  73. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  74. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  75. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  76. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  77. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  78. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  79. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  80. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  81. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  82. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  83. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  84. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  85. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  86. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  87. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  88. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  89. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  90. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  91. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  92. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  93. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  94. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  95. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  96. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  97. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  98. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  99. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  100. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  101. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  102. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  103. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  104. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  105. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  106. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  107. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  108. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  109. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  110. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  111. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  112. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  113. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  114. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  115. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  116. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  117. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  118. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  119. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  120. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  121. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  122. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  123. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  124. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  125. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  126. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  127. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  128. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  129. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  130. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  131. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  132. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  133. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  134. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  135. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  136. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  137. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  138. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  139. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  140. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  141. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  142. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  143. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  144. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  145. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  146. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  147. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  148. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  149. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  150. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  151. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  152. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  153. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  154. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  155. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  156. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  157. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  158. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  159. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  160. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  261. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  262. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  263. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  264. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  265. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
  266. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  267. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  268. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  269. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  270. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  271. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  272. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  273. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  274. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  275. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  276. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  277. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  278. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  279. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  280. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  281. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  282. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  283. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  284. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  285. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  286. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  287. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  288. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  289. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  290. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  291. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  292. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  293. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  294. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  295. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  296. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  297. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  298. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  299. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  300. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  301. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  302. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  303. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  304. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  305. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  306. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  307. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  308. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  309. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  310. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  311. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  312. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  313. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  314. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  315. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  316. package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
  317. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  318. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
  319. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  320. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
  321. package/package.json +1 -1
@@ -0,0 +1,233 @@
1
+ ---
2
+ name: cloudflare
3
+ description: Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task.
4
+ references:
5
+ - workers
6
+ - pages
7
+ - d1
8
+ - durable-objects
9
+ - workers-ai
10
+ ---
11
+
12
+ # Cloudflare Platform Skill
13
+
14
+ Consolidated skill for building on the Cloudflare platform. Use decision trees below to find the right product, then load detailed references.
15
+
16
+ ## How to Use This Skill
17
+
18
+ ### Reference File Structure
19
+
20
+ Each product in `./references/<product>/` contains a `README.md` as the entry point, which may be structured in one of two ways:
21
+
22
+ **Multi-file format (5 files):**
23
+ | File | Purpose | When to Read |
24
+ |------|---------|--------------|
25
+ | `README.md` | Overview, when to use, getting started | **Always read first** |
26
+ | `api.md` | Runtime API, types, method signatures | Writing code |
27
+ | `configuration.md` | wrangler.toml, bindings, setup | Configuring a project |
28
+ | `patterns.md` | Common patterns, best practices | Implementation guidance |
29
+ | `gotchas.md` | Pitfalls, limitations, edge cases | Debugging, avoiding mistakes |
30
+
31
+ **Single-file format:** All information consolidated in `README.md`.
32
+
33
+ ### Reading Order
34
+
35
+ 1. Start with `README.md`
36
+ 2. Then read additional files relevant to your task (if multi-file format):
37
+ - Building feature → `api.md` + `patterns.md`
38
+ - Setting up project → `configuration.md`
39
+ - Troubleshooting → `gotchas.md`
40
+
41
+ ### Example Paths
42
+
43
+ ```
44
+ ./references/workflows/README.md # Start here for Workflows
45
+ ./references/workflows/api.md # Workflow class, step methods
46
+ ./references/durable-objects/gotchas.md # DO limitations
47
+ ./references/workers-ai/README.md # Single-file - all Workers AI docs
48
+ ```
49
+
50
+ ## Quick Decision Trees
51
+
52
+ ### "I need to run code"
53
+
54
+ ```
55
+ Need to run code?
56
+ ├─ Serverless functions at the edge → workers/
57
+ ├─ Full-stack web app with Git deploys → pages/
58
+ ├─ Stateful coordination/real-time → durable-objects/
59
+ ├─ Long-running multi-step jobs → workflows/
60
+ ├─ Run containers → containers/
61
+ ├─ Multi-tenant (customers deploy code) → workers-for-platforms/
62
+ └─ Scheduled tasks (cron) → cron-triggers/
63
+ ```
64
+
65
+ ### "I need to store data"
66
+
67
+ ```
68
+ Need storage?
69
+ ├─ Key-value (config, sessions, cache) → kv/
70
+ ├─ Relational SQL → d1/ (SQLite) or hyperdrive/ (existing Postgres/MySQL)
71
+ ├─ Object/file storage (S3-compatible) → r2/
72
+ ├─ Message queue (async processing) → queues/
73
+ ├─ Vector embeddings (AI/semantic search) → vectorize/
74
+ ├─ Strongly-consistent per-entity state → durable-objects/ (DO storage)
75
+ ├─ Secrets management → secrets-store/
76
+ └─ Streaming ETL to R2 → pipelines/
77
+ ```
78
+
79
+ ### "I need AI/ML"
80
+
81
+ ```
82
+ Need AI?
83
+ ├─ Run inference (LLMs, embeddings, images) → workers-ai/
84
+ ├─ Vector database for RAG/search → vectorize/
85
+ ├─ Build stateful AI agents → agents-sdk/
86
+ ├─ Gateway for any AI provider (caching, routing) → ai-gateway/
87
+ └─ AI-powered search widget → ai-search/
88
+ ```
89
+
90
+ ### "I need networking/connectivity"
91
+
92
+ ```
93
+ Need networking?
94
+ ├─ Expose local service to internet → tunnel/
95
+ ├─ TCP/UDP proxy (non-HTTP) → spectrum/
96
+ ├─ WebRTC TURN server → turn/
97
+ ├─ Private network connectivity → network-interconnect/
98
+ ├─ Optimize routing → argo-smart-routing/
99
+ └─ Real-time video/audio → realtimekit/ or realtime-sfu/
100
+ ```
101
+
102
+ ### "I need security"
103
+
104
+ ```
105
+ Need security?
106
+ ├─ Web Application Firewall → waf/
107
+ ├─ DDoS protection → ddos/
108
+ ├─ Bot detection/management → bot-management/
109
+ ├─ API protection → api-shield/
110
+ ├─ CAPTCHA alternative → turnstile/
111
+ └─ Credential leak detection → waf/ (managed ruleset)
112
+ ```
113
+
114
+ ### "I need media/content"
115
+
116
+ ```
117
+ Need media?
118
+ ├─ Image optimization/transformation → images/
119
+ ├─ Video streaming/encoding → stream/
120
+ ├─ Browser automation/screenshots → browser-rendering/
121
+ └─ Third-party script management → zaraz/
122
+ ```
123
+
124
+ ### "I need infrastructure-as-code"
125
+
126
+ ```
127
+ Need IaC?
128
+ ├─ Pulumi → pulumi/
129
+ ├─ Terraform → terraform/
130
+ └─ Direct API → api/
131
+ ```
132
+
133
+ ## Product Index
134
+
135
+ ### Compute & Runtime
136
+ | Product | Entry File |
137
+ |---------|------------|
138
+ | Workers | `./references/workers/README.md` |
139
+ | Pages | `./references/pages/README.md` |
140
+ | Pages Functions | `./references/pages-functions/README.md` |
141
+ | Durable Objects | `./references/durable-objects/README.md` |
142
+ | Workflows | `./references/workflows/README.md` |
143
+ | Containers | `./references/containers/README.md` |
144
+ | Workers for Platforms | `./references/workers-for-platforms/README.md` |
145
+ | Cron Triggers | `./references/cron-triggers/README.md` |
146
+ | Tail Workers | `./references/tail-workers/README.md` |
147
+ | Snippets | `./references/snippets/README.md` |
148
+ | Smart Placement | `./references/smart-placement/README.md` |
149
+
150
+ ### Storage & Data
151
+ | Product | Entry File |
152
+ |---------|------------|
153
+ | KV | `./references/kv/README.md` |
154
+ | D1 | `./references/d1/README.md` |
155
+ | R2 | `./references/r2/README.md` |
156
+ | Queues | `./references/queues/README.md` |
157
+ | Hyperdrive | `./references/hyperdrive/README.md` |
158
+ | DO Storage | `./references/do-storage/README.md` |
159
+ | Secrets Store | `./references/secrets-store/README.md` |
160
+ | Pipelines | `./references/pipelines/README.md` |
161
+ | R2 Data Catalog | `./references/r2-data-catalog/README.md` |
162
+ | R2 SQL | `./references/r2-sql/README.md` |
163
+
164
+ ### AI & Machine Learning
165
+ | Product | Entry File |
166
+ |---------|------------|
167
+ | Workers AI | `./references/workers-ai/README.md` |
168
+ | Vectorize | `./references/vectorize/README.md` |
169
+ | Agents SDK | `./references/agents-sdk/README.md` |
170
+ | AI Gateway | `./references/ai-gateway/README.md` |
171
+ | AI Search | `./references/ai-search/README.md` |
172
+
173
+ ### Networking & Connectivity
174
+ | Product | Entry File |
175
+ |---------|------------|
176
+ | Tunnel | `./references/tunnel/README.md` |
177
+ | Spectrum | `./references/spectrum/README.md` |
178
+ | TURN | `./references/turn/README.md` |
179
+ | Network Interconnect | `./references/network-interconnect/README.md` |
180
+ | Argo Smart Routing | `./references/argo-smart-routing/README.md` |
181
+ | Workers VPC | `./references/workers-vpc/README.md` |
182
+
183
+ ### Security
184
+ | Product | Entry File |
185
+ |---------|------------|
186
+ | WAF | `./references/waf/README.md` |
187
+ | DDoS Protection | `./references/ddos/README.md` |
188
+ | Bot Management | `./references/bot-management/README.md` |
189
+ | API Shield | `./references/api-shield/README.md` |
190
+ | Turnstile | `./references/turnstile/README.md` |
191
+
192
+ ### Media & Content
193
+ | Product | Entry File |
194
+ |---------|------------|
195
+ | Images | `./references/images/README.md` |
196
+ | Stream | `./references/stream/README.md` |
197
+ | Browser Rendering | `./references/browser-rendering/README.md` |
198
+ | Zaraz | `./references/zaraz/README.md` |
199
+
200
+ ### Real-Time Communication
201
+ | Product | Entry File |
202
+ |---------|------------|
203
+ | RealtimeKit | `./references/realtimekit/README.md` |
204
+ | Realtime SFU | `./references/realtime-sfu/README.md` |
205
+
206
+ ### Developer Tools
207
+ | Product | Entry File |
208
+ |---------|------------|
209
+ | Wrangler | `./references/wrangler/README.md` |
210
+ | Miniflare | `./references/miniflare/README.md` |
211
+ | C3 | `./references/c3/README.md` |
212
+ | Observability | `./references/observability/README.md` |
213
+ | Analytics Engine | `./references/analytics-engine/README.md` |
214
+ | Web Analytics | `./references/web-analytics/README.md` |
215
+ | Sandbox | `./references/sandbox/README.md` |
216
+ | Workerd | `./references/workerd/README.md` |
217
+ | Workers Playground | `./references/workers-playground/README.md` |
218
+
219
+ ### Infrastructure as Code
220
+ | Product | Entry File |
221
+ |---------|------------|
222
+ | Pulumi | `./references/pulumi/README.md` |
223
+ | Terraform | `./references/terraform/README.md` |
224
+ | API | `./references/api/README.md` |
225
+
226
+ ### Other Services
227
+ | Product | Entry File |
228
+ |---------|------------|
229
+ | Email Routing | `./references/email-routing/README.md` |
230
+ | Email Workers | `./references/email-workers/README.md` |
231
+ | Static Assets | `./references/static-assets/README.md` |
232
+ | Bindings | `./references/bindings/README.md` |
233
+ | Cache Reserve | `./references/cache-reserve/README.md` |
@@ -0,0 +1,35 @@
1
+ # Cloudflare Agents SDK
2
+
3
+ Cloudflare Agents SDK enables building AI-powered agents on Durable Objects with state, WebSockets, SQL, scheduling, and AI integration.
4
+
5
+ ## Core Value
6
+ Build stateful, globally distributed AI agents with persistent memory, real-time connections, scheduled tasks, and async workflows.
7
+
8
+ ## When to Use
9
+ - Persistent state + memory required
10
+ - Real-time WebSocket connections
11
+ - Long-running workflows (minutes/hours)
12
+ - Chat interfaces with AI models
13
+ - Scheduled/recurring tasks with state
14
+ - DB queries with agent state
15
+
16
+ ## Quick Start
17
+ ```typescript
18
+ import { Agent } from "agents";
19
+
20
+ export class MyAgent extends Agent<Env> {
21
+ onStart() {
22
+ this.sql`CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY)`;
23
+ }
24
+
25
+ async onRequest(request: Request) {
26
+ return Response.json({ state: this.state });
27
+ }
28
+ }
29
+ ```
30
+
31
+ ## See Also
32
+ - durable-objects - Agent infrastructure
33
+ - d1 - External database integration
34
+ - workers-ai - AI model integration
35
+ - vectorize - Vector search for RAG patterns
@@ -0,0 +1,100 @@
1
+ # API Reference
2
+
3
+ ## Lifecycle
4
+
5
+ **onStart()** - Init/hibernation restart:
6
+ ```ts
7
+ onStart() {
8
+ this.sql`CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY, name TEXT)`;
9
+ if (!this.state.initialized) this.setState({initialized: true, messages: []});
10
+ }
11
+ ```
12
+
13
+ **onRequest(req)** - HTTP:
14
+ ```ts
15
+ async onRequest(req: Request) {
16
+ const {pathname} = new URL(req.url);
17
+ if (pathname === "/users") return Response.json(this.sql<{id,name}>`SELECT * FROM users`);
18
+ return new Response("Not found", {status: 404});
19
+ }
20
+ ```
21
+
22
+ **onConnect(conn, ctx)** - WebSocket:
23
+ ```ts
24
+ async onConnect(conn: Connection, ctx: ConnectionContext) {
25
+ conn.accept();
26
+ conn.setState({userId: ctx.request.headers.get("X-User-ID")});
27
+ conn.send(JSON.stringify({type: "connected", state: this.state}));
28
+ }
29
+ ```
30
+
31
+ **onMessage(conn, msg)** - WS messages:
32
+ ```ts
33
+ async onMessage(conn: Connection, msg: WSMessage) {
34
+ const m = JSON.parse(msg as string);
35
+ if (m.type === "chat") {
36
+ this.setState({messages: [...this.state.messages, m]});
37
+ this.connections.forEach(c => c.send(JSON.stringify(m)));
38
+ }
39
+ }
40
+ ```
41
+
42
+ **onEmail(email)** - Email routing:
43
+ ```ts
44
+ async onEmail(email: AgentEmail) {
45
+ const text = await email.text();
46
+ this.sql`INSERT INTO emails (from_addr,subject,body) VALUES (${email.from},${email.headers.get("subject")},${text})`;
47
+ }
48
+ ```
49
+
50
+ ## State
51
+
52
+ ```ts
53
+ this.setState({count: 42, users: []}); // Auto-syncs
54
+ this.setState({...this.state, count: this.state.count + 1});
55
+ const s = this.state;
56
+ ```
57
+
58
+ ## SQL
59
+
60
+ ```ts
61
+ this.sql`CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY, name TEXT)`;
62
+ this.sql`INSERT INTO users (id,name) VALUES (${userId},${name})`;
63
+ const users = this.sql<{id,name}>`SELECT * FROM users`;
64
+ const user = this.sql<{name}>`SELECT name FROM users WHERE id = ${userId}`; // Prevents injection
65
+ ```
66
+
67
+ ## Scheduling
68
+
69
+ ```ts
70
+ await this.schedule(new Date("2026-12-25T00:00:00Z"), "sendGreeting", {msg:"Hi"}); // Time
71
+ await this.schedule(60, "checkStatus", {}); // Delay (sec)
72
+ await this.schedule("0 0 * * *", "dailyCleanup", {}); // Cron
73
+ await this.schedule("*/5 * * * *", "syncData", {}); // Every 5min
74
+ const schedules = await this.getSchedules();
75
+ await this.cancelSchedule(scheduleId);
76
+ ```
77
+
78
+ ## Connections
79
+
80
+ ```ts
81
+ this.connections.forEach(c => c.send(JSON.stringify(msg))); // Broadcast
82
+ conn.send(JSON.stringify({type:"update",data})); // Specific
83
+ conn.close(1000, "Goodbye");
84
+ conn.setState({userId:"123",role:"admin"});
85
+ const uid = conn.state.userId;
86
+ ```
87
+
88
+ ## AI
89
+
90
+ ```ts
91
+ const r = await this.env.AI.run("@cf/meta/llama-3.1-8b-instruct", {prompt});
92
+
93
+ const stream = await client.chat.completions.create({
94
+ model: "gpt-4", messages: [{role:"user",content:prompt}], stream: true
95
+ });
96
+ for await (const chunk of stream) {
97
+ const content = chunk.choices[0]?.delta?.content;
98
+ if (content) conn.send(JSON.stringify({type:"chunk",content}));
99
+ }
100
+ ```
@@ -0,0 +1,99 @@
1
+ # Configuration
2
+
3
+ ## Wrangler Setup
4
+
5
+ ```toml
6
+ name = "my-agents-app"
7
+
8
+ [[durable_objects.bindings]]
9
+ name = "MyAgent"
10
+ class_name = "MyAgent"
11
+
12
+ [[migrations]]
13
+ tag = "v1"
14
+ new_sqlite_classes = ["MyAgent"]
15
+
16
+ [ai]
17
+ binding = "AI"
18
+ ```
19
+
20
+ ```jsonc
21
+ {
22
+ "durable_objects": {
23
+ "bindings": [
24
+ {"name": "MyAgent", "class_name": "MyAgent"}
25
+ ]
26
+ },
27
+ "migrations": [
28
+ {"tag": "v1", "new_sqlite_classes": ["MyAgent"]}
29
+ ],
30
+ "ai": {
31
+ "binding": "AI"
32
+ }
33
+ }
34
+ ```
35
+
36
+ ## Environment Bindings
37
+
38
+ ```typescript
39
+ interface Env {
40
+ AI?: Ai; // Workers AI
41
+ MyAgent?: DurableObjectNamespace<MyAgent>;
42
+ DB?: D1Database; // D1 database
43
+ KV?: KVNamespace; // KV storage
44
+ R2?: R2Bucket; // R2 bucket
45
+ OPENAI_API_KEY?: string; // Secrets
46
+ QUEUE?: Queue; // Queues
47
+ }
48
+ ```
49
+
50
+ ## Deployment
51
+
52
+ ```bash
53
+ # Local dev
54
+ npx wrangler dev
55
+
56
+ # Deploy production
57
+ npx wrangler deploy
58
+
59
+ # Set secrets
60
+ npx wrangler secret put OPENAI_API_KEY
61
+ ```
62
+
63
+ ## Agent Routing
64
+
65
+ ```typescript
66
+ export default {
67
+ async fetch(request: Request, env: Env) {
68
+ const id = env.MyAgent.idFromName("user-123");
69
+ const stub = env.MyAgent.get(id);
70
+ return stub.fetch(request);
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## Email Routing
76
+
77
+ Configure email routing in dashboard to deliver emails to agent:
78
+
79
+ ```
80
+ Destination: Workers with Durable Objects
81
+ Worker: my-agents-app
82
+ ```
83
+
84
+ ## AI Gateway (Optional)
85
+
86
+ ```typescript
87
+ // Enable caching/routing through AI Gateway
88
+ const response = await this.env.AI.run(
89
+ "@cf/meta/llama-3.1-8b-instruct",
90
+ { prompt },
91
+ {
92
+ gateway: {
93
+ id: "my-gateway-id",
94
+ skipCache: false,
95
+ cacheTtl: 3600
96
+ }
97
+ }
98
+ );
99
+ ```
@@ -0,0 +1,59 @@
1
+ # Gotchas & Best Practices
2
+
3
+ ## State
4
+ DO: `setState()` (auto-syncs), serializable, limit size | DON'T: Mutate directly, large objects (SQL), functions/circular
5
+ ```ts
6
+ // ❌ this.state.count++ | ✅ this.setState({...this.state, count: this.state.count + 1})
7
+ ```
8
+
9
+ ## SQL
10
+ DO: Parameterized, create in `onStart()`, types | DON'T: Direct interpolation, assume exists
11
+ ```ts
12
+ // ❌ this.sql`...WHERE id = '${userId}'` | ✅ this.sql`...WHERE id = ${userId}`
13
+ ```
14
+
15
+ ## WebSocket
16
+ DO: `conn.accept()`, errors, cleanup | DON'T: Forget accept (timeout), assume persist, sensitive in state
17
+ ```ts
18
+ async onConnect(conn: Connection, ctx: ConnectionContext) { conn.accept(); conn.setState({userId: "123"}); }
19
+ ```
20
+
21
+ ## Scheduling
22
+ 1000 tasks/agent, 1min min, persist. Clean old, descriptive names, handle failures
23
+ ```ts
24
+ async checkSchedules() { if ((await this.getSchedules()).length > 800) console.warn("Near limit!"); }
25
+ ```
26
+
27
+ ## AI
28
+ Optimize: AI Gateway cache, rate limit, stream | Error: try/catch, fallback, quota/timeout
29
+ ```ts
30
+ try { return await this.env.AI.run(model, {prompt}); } catch (e) { return {error: "Unavailable"}; }
31
+ ```
32
+
33
+ ## Perf
34
+ State: Batch `setState()`, low-freq, SQL for large | Conns: Limit broadcast, selective, backpressure
35
+
36
+ ## Debug
37
+ `npx wrangler dev` (local), `npx wrangler tail` (remote)
38
+ Issues: "Agent not found" (DO binding), State not sync (`setState()`), Timeout (`conn.accept()`), SQL (create in `onStart()`)
39
+
40
+ ## Security
41
+ DO: Validate, sanitize, auth WS, env secrets | DON'T: Trust headers, expose sensitive, unauth
42
+ ```ts
43
+ async onConnect(conn: Connection, ctx: ConnectionContext) {
44
+ const token = ctx.request.headers.get("Authorization");
45
+ if (!await this.validateToken(token)) { conn.close(4001, "Unauthorized"); return; }
46
+ conn.accept();
47
+ }
48
+ ```
49
+
50
+ ## Limits
51
+ CPU: 30s/req, Mem: 128MB/inst, Storage: SQL shares DO quota, Conns: no limit (watch mem), Schedules: 1000/agent
52
+
53
+ ## Migration
54
+ `new_sqlite_classes`, test staging, no downgrade w/SQL, careful state
55
+ ```toml
56
+ [[migrations]]
57
+ tag = "v1"
58
+ new_sqlite_classes = ["MyAgent"]
59
+ ```
@@ -0,0 +1,89 @@
1
+ # Patterns & Use Cases
2
+
3
+ ## Chat
4
+
5
+ ```ts
6
+ export class ChatAgent extends Agent<Env, ChatState> {
7
+ initialState = {messages: [], participants: []};
8
+ async onConnect(conn: Connection, ctx: ConnectionContext) {
9
+ conn.accept();
10
+ const userId = ctx.request.headers.get("X-User-ID");
11
+ conn.setState({userId});
12
+ this.setState({...this.state, participants: [...this.state.participants, userId]});
13
+ conn.send(JSON.stringify({type: "history", messages: this.state.messages}));
14
+ }
15
+ async onMessage(conn: Connection, msg: WSMessage) {
16
+ const m = JSON.parse(msg as string);
17
+ if (m.type === "chat")
18
+ this.setState({...this.state, messages: [...this.state.messages, {userId: conn.state.userId, text: m.text, timestamp: Date.now()}]});
19
+ }
20
+ }
21
+ ```
22
+
23
+ ## AI w/Tools
24
+
25
+ ```ts
26
+ import {tool} from "ai"; import {z} from "zod";
27
+ const weatherTool = tool({description: "Get weather", inputSchema: z.object({city: z.string()}), execute: async ({city}) => `Weather: ${city} Sunny 72°F`});
28
+ export class AIAgent extends Agent<Env> {
29
+ tools = {getWeather: weatherTool};
30
+ async onMessage(conn: Connection, msg: WSMessage) {
31
+ const m = JSON.parse(msg as string);
32
+ conn.send(JSON.stringify({response: await this.env.AI.run("@cf/meta/llama-3.1-8b-instruct", {prompt: m.prompt, tools: this.tools})}));
33
+ }
34
+ }
35
+ ```
36
+
37
+ ## Streaming
38
+
39
+ ```ts
40
+ import {OpenAI} from "openai";
41
+ export class StreamingAgent extends Agent<Env> {
42
+ async onMessage(conn: Connection, msg: WSMessage) {
43
+ const m = JSON.parse(msg as string);
44
+ const stream = await new OpenAI({apiKey: this.env.OPENAI_API_KEY}).chat.completions.create({model: "gpt-4", messages: [{role: "user", content: m.prompt}], stream: true});
45
+ for await (const chunk of stream) { const c = chunk.choices[0]?.delta?.content || ""; if (c) conn.send(JSON.stringify({type: "chunk", content: c})); }
46
+ conn.send(JSON.stringify({type: "done"}));
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## Cron/Scheduled
52
+
53
+ ```ts
54
+ export class TaskAgent extends Agent<Env> {
55
+ onStart() { this.schedule("0 0 * * *", "dailyCleanup", {}); this.schedule("0 * * * *", "syncData", {}); }
56
+ async dailyCleanup() { this.sql`DELETE FROM logs WHERE created_at < ${Date.now() - 86400000}`; }
57
+ async syncData() { const data = await (await fetch(this.env.API_URL)).json(); this.sql`INSERT INTO cache (data,updated_at) VALUES (${JSON.stringify(data)},${Date.now()})`; }
58
+ }
59
+ ```
60
+
61
+ ## Email+AI
62
+
63
+ ```ts
64
+ export class EmailAgent extends Agent<Env> {
65
+ async onEmail(email: AgentEmail) {
66
+ const [text, from, subject] = [await email.text(), email.from, email.headers.get("subject")];
67
+ this.sql`INSERT INTO emails (from_addr,subject,body,received_at) VALUES (${from},${subject},${text},${Date.now()})`;
68
+ const r = await this.env.AI.run("@cf/meta/llama-3.1-8b-instruct", {prompt: `Summarize: ${text}`});
69
+ this.setState({...this.state, lastEmail: {from, subject, summary: r}});
70
+ this.connections.forEach(c => c.send(JSON.stringify({type: "new_email", from, subject})));
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## Game
76
+
77
+ ```ts
78
+ export class GameAgent extends Agent<Env, GameState> {
79
+ initialState = {players: [], score: 0, round: 1};
80
+ async onConnect(conn: Connection, ctx: ConnectionContext) {
81
+ conn.accept(); const playerId = ctx.request.headers.get("X-Player-ID"); conn.setState({playerId});
82
+ this.setState({...this.state, players: [...this.state.players, {id: playerId, score: 0}]});
83
+ }
84
+ async onMessage(conn: Connection, msg: WSMessage) {
85
+ const m = JSON.parse(msg as string);
86
+ if (m.type === "move") this.setState({...this.state, players: this.state.players.map(p => p.id === conn.state.playerId ? {...p, score: p.score + m.points} : p)});
87
+ }
88
+ }
89
+ ```