opencodekit 0.15.4 → 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 (319) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/command/cloudflare.md +70 -0
  3. package/dist/template/.opencode/package.json +1 -1
  4. package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
  5. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  6. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  7. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  8. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  9. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  10. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  11. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  12. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  13. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  14. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  15. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  16. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  17. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  18. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  19. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  20. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  21. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  22. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  23. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  24. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  25. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  26. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  27. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  28. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  29. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  30. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  31. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  32. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  33. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  34. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  35. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  36. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  37. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  38. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  39. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  40. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  41. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  42. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  43. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  44. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  45. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  46. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  47. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  48. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  49. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  50. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  51. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  52. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  53. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  54. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  55. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  56. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  57. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  58. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  59. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  60. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  61. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  62. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  63. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  64. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  65. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  66. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  67. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  68. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  69. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  70. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  71. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  72. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  73. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  74. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  75. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  76. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  77. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  78. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  79. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  80. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  81. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  82. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  83. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  84. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  85. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  86. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  87. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  88. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  89. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  90. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  91. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  92. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  93. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  94. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  95. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  96. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  97. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  98. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  99. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  100. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  101. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  102. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  103. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  104. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  105. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  106. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  107. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  108. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  109. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  110. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  111. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  112. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  113. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  114. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  115. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  116. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  117. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  118. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  119. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  120. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  121. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  122. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  123. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  124. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  125. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  126. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  127. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  128. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  129. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  130. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  131. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  132. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  133. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  134. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  135. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  136. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  137. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  138. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  139. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  140. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  141. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  142. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  143. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  144. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  145. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  146. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  147. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  148. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  149. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  150. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  151. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  152. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  153. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  154. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  155. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  156. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  157. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  158. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  159. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  160. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  261. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  262. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  263. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
  264. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  265. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  266. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  267. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  268. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  269. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  270. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  271. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  272. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  273. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  274. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  275. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  276. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  277. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  278. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  279. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  280. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  281. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  282. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  283. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  284. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  285. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  286. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  287. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  288. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  289. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  290. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  291. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  292. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  293. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  294. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  295. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  296. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  297. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  298. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  299. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  300. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  301. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  302. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  303. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  304. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  305. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  306. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  307. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  308. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  309. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  310. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  311. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  312. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  313. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  314. package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
  315. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  316. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
  317. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  318. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
  319. package/package.json +1 -1
@@ -0,0 +1,137 @@
1
+ # Workers Runtime APIs
2
+
3
+ ## Fetch Handler
4
+
5
+ ```typescript
6
+ export default {
7
+ async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
8
+ const url = new URL(request.url);
9
+ if (request.method === 'POST' && url.pathname === '/api') {
10
+ const body = await request.json();
11
+ return new Response(JSON.stringify({ id: 1 }), {
12
+ headers: { 'Content-Type': 'application/json' }
13
+ });
14
+ }
15
+ return fetch(request); // Subrequest to origin
16
+ },
17
+ };
18
+ ```
19
+
20
+ ## Execution Context
21
+
22
+ ```typescript
23
+ ctx.waitUntil(logAnalytics(request)); // Background work, don't block response
24
+ ctx.passThroughOnException(); // Failover to origin on error
25
+ ```
26
+
27
+ **Never** `await` background operations - use `ctx.waitUntil()`.
28
+
29
+ ## Bindings
30
+
31
+ ```typescript
32
+ // KV
33
+ await env.MY_KV.get('key');
34
+ await env.MY_KV.put('key', 'value', { expirationTtl: 3600 });
35
+
36
+ // R2
37
+ const obj = await env.MY_BUCKET.get('file.txt');
38
+ await env.MY_BUCKET.put('file.txt', 'content');
39
+
40
+ // D1
41
+ const result = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(1).first();
42
+
43
+ // Queues
44
+ await env.MY_QUEUE.send({ timestamp: Date.now() });
45
+
46
+ // Secrets/vars
47
+ const key = env.API_KEY;
48
+ ```
49
+
50
+ ## Cache API
51
+
52
+ ```typescript
53
+ const cache = caches.default;
54
+ let response = await cache.match(request);
55
+
56
+ if (!response) {
57
+ response = await fetch(request);
58
+ response = new Response(response.body, response);
59
+ response.headers.set('Cache-Control', 'max-age=3600');
60
+ ctx.waitUntil(cache.put(request, response.clone())); // Clone before caching
61
+ }
62
+ ```
63
+
64
+ ## HTMLRewriter
65
+
66
+ ```typescript
67
+ return new HTMLRewriter()
68
+ .on('a[href]', {
69
+ element(el) {
70
+ const href = el.getAttribute('href');
71
+ if (href?.startsWith('http://')) {
72
+ el.setAttribute('href', href.replace('http://', 'https://'));
73
+ }
74
+ }
75
+ })
76
+ .transform(response);
77
+ ```
78
+
79
+ **Use cases**: A/B testing, analytics injection, link rewriting
80
+
81
+ ## WebSockets
82
+
83
+ ```typescript
84
+ const [client, server] = Object.values(new WebSocketPair());
85
+
86
+ server.accept();
87
+ server.addEventListener('message', event => {
88
+ server.send(`Echo: ${event.data}`);
89
+ });
90
+
91
+ return new Response(null, { status: 101, webSocket: client });
92
+ ```
93
+
94
+ ## Durable Objects
95
+
96
+ ```typescript
97
+ export class Counter {
98
+ private value = 0;
99
+
100
+ constructor(private state: DurableObjectState) {
101
+ state.blockConcurrencyWhile(async () => {
102
+ this.value = (await state.storage.get('value')) || 0;
103
+ });
104
+ }
105
+
106
+ async fetch(request: Request): Promise<Response> {
107
+ if (new URL(request.url).pathname === '/increment') {
108
+ await this.state.storage.put('value', ++this.value);
109
+ }
110
+ return new Response(String(this.value));
111
+ }
112
+ }
113
+
114
+ // Usage: const stub = env.COUNTER.get(env.COUNTER.idFromName('global'));
115
+ ```
116
+
117
+ **When to use**: Real-time collaboration, rate limiting, strongly consistent state
118
+
119
+ ## Other Handlers
120
+
121
+ ```typescript
122
+ // Cron: async scheduled(event, env, ctx) { ctx.waitUntil(doCleanup(env)); }
123
+ // Queue: async queue(batch) { for (const msg of batch.messages) { await process(msg.body); msg.ack(); } }
124
+ // Tail: async tail(events, env) { for (const e of events) if (e.outcome === 'exception') await log(e); }
125
+ ```
126
+
127
+ ## Service Bindings
128
+
129
+ ```typescript
130
+ return env.SERVICE_B.fetch(request); // Worker-to-worker RPC, zero latency
131
+ ```
132
+
133
+ ## See Also
134
+
135
+ - [Configuration](./configuration.md) - Binding setup
136
+ - [Patterns](./patterns.md) - Common workflows
137
+ - [KV](../kv/README.md), [D1](../d1/README.md), [R2](../r2/README.md), [Durable Objects](../durable-objects/README.md), [Queues](../queues/README.md)
@@ -0,0 +1,147 @@
1
+ # Workers Configuration
2
+
3
+ ## wrangler.jsonc (Recommended)
4
+
5
+ ```jsonc
6
+ {
7
+ "$schema": "./node_modules/wrangler/config-schema.json",
8
+ "name": "my-worker",
9
+ "main": "src/index.ts",
10
+ "compatibility_date": "2025-01-01", // Use current date for new projects
11
+
12
+ // Bindings (non-inheritable)
13
+ "vars": { "ENVIRONMENT": "production" },
14
+ "kv_namespaces": [{ "binding": "MY_KV", "id": "abc123" }],
15
+ "r2_buckets": [{ "binding": "MY_BUCKET", "bucket_name": "my-bucket" }],
16
+ "d1_databases": [{ "binding": "DB", "database_name": "my-db", "database_id": "xyz789" }],
17
+
18
+ // Environments
19
+ "env": {
20
+ "staging": {
21
+ "vars": { "ENVIRONMENT": "staging" },
22
+ "kv_namespaces": [{ "binding": "MY_KV", "id": "staging-id" }]
23
+ }
24
+ }
25
+ }
26
+ ```
27
+
28
+ ## Configuration Rules
29
+
30
+ **Inheritable**: `name`, `main`, `compatibility_date`, `routes`, `workers_dev`
31
+ **Non-inheritable**: All bindings (`vars`, `kv_namespaces`, `r2_buckets`, etc.)
32
+ **Top-level only**: `migrations`, `keep_vars`, `send_metrics`
33
+
34
+ **ALWAYS set `compatibility_date` to current date for new projects**
35
+
36
+ ## Bindings
37
+
38
+ ```jsonc
39
+ {
40
+ // Environment variables - access via env.VAR_NAME
41
+ "vars": { "ENVIRONMENT": "production" },
42
+
43
+ // KV (key-value storage)
44
+ "kv_namespaces": [{ "binding": "MY_KV", "id": "abc123" }],
45
+
46
+ // R2 (object storage)
47
+ "r2_buckets": [{ "binding": "MY_BUCKET", "bucket_name": "my-bucket" }],
48
+
49
+ // D1 (SQL database)
50
+ "d1_databases": [{ "binding": "DB", "database_name": "my-db", "database_id": "xyz789" }],
51
+
52
+ // Durable Objects (stateful coordination)
53
+ "durable_objects": {
54
+ "bindings": [{ "name": "COUNTER", "class_name": "Counter" }]
55
+ },
56
+
57
+ // Queues (message queues)
58
+ "queues": {
59
+ "producers": [{ "binding": "MY_QUEUE", "queue": "my-queue" }],
60
+ "consumers": [{ "queue": "my-queue", "max_batch_size": 10 }]
61
+ },
62
+
63
+ // Service bindings (worker-to-worker RPC)
64
+ "services": [{ "binding": "SERVICE_B", "service": "service-b" }],
65
+
66
+ // Analytics Engine
67
+ "analytics_engine_datasets": [{ "binding": "ANALYTICS" }]
68
+ }
69
+ ```
70
+
71
+ ### Secrets
72
+
73
+ Set via CLI (never in config):
74
+
75
+ ```bash
76
+ npx wrangler secret put API_KEY
77
+ ```
78
+
79
+ Access: `env.API_KEY`
80
+
81
+ ### Automatic Provisioning (Beta)
82
+
83
+ Bindings without IDs are auto-created:
84
+
85
+ ```jsonc
86
+ { "kv_namespaces": [{ "binding": "MY_KV" }] } // ID added on deploy
87
+ ```
88
+
89
+ ## Routes & Triggers
90
+
91
+ ```jsonc
92
+ {
93
+ "routes": [
94
+ { "pattern": "example.com/*", "zone_name": "example.com" }
95
+ ],
96
+ "triggers": {
97
+ "crons": ["0 */6 * * *"] // Every 6 hours
98
+ }
99
+ }
100
+ ```
101
+
102
+ ## TypeScript Setup
103
+
104
+ ```bash
105
+ npm install -D @cloudflare/workers-types
106
+ ```
107
+
108
+ `tsconfig.json`: `{ "compilerOptions": { "target": "ES2022", "lib": ["ES2022"], "types": ["@cloudflare/workers-types"] } }`
109
+
110
+ Define environment interface:
111
+
112
+ ```typescript
113
+ interface Env {
114
+ MY_KV: KVNamespace;
115
+ DB: D1Database;
116
+ API_KEY: string;
117
+ }
118
+ ```
119
+
120
+ ## Advanced Options
121
+
122
+ ```jsonc
123
+ {
124
+ // Auto-locate compute near data sources
125
+ "placement": { "mode": "smart" },
126
+
127
+ // Enable Node.js built-ins
128
+ "compatibility_flags": ["nodejs_compat_v2"],
129
+
130
+ // Observability (10% sampling)
131
+ "observability": { "enabled": true, "head_sampling_rate": 0.1 }
132
+ }
133
+ ```
134
+
135
+ ## Deployment Commands
136
+
137
+ ```bash
138
+ npx wrangler deploy # Production
139
+ npx wrangler deploy --env staging
140
+ npx wrangler deploy --dry-run # Validate only
141
+ ```
142
+
143
+ ## See Also
144
+
145
+ - [API](./api.md) - Runtime APIs and bindings usage
146
+ - [Patterns](./patterns.md) - Deployment strategies
147
+ - [Wrangler](../wrangler/README.md) - CLI reference
@@ -0,0 +1,99 @@
1
+ # Workers Gotchas
2
+
3
+ ## CPU Time Limits
4
+
5
+ **Standard**: 10ms CPU time
6
+ **Unbound**: 30ms CPU time
7
+
8
+ **Solutions**:
9
+ - Use `ctx.waitUntil()` for background work
10
+ - Offload heavy compute to Durable Objects
11
+ - Consider Workers AI for ML workloads
12
+
13
+ ## No Persistent State in Worker
14
+
15
+ Workers are stateless between requests - module-level variables reset unpredictably.
16
+
17
+ **Solution**: Use KV, D1, or Durable Objects for persistent state.
18
+
19
+ ## Response Bodies Are Streams
20
+
21
+ ```typescript
22
+ // ❌ BAD
23
+ const response = await fetch(url);
24
+ await logBody(response.text()); // First read
25
+ return response; // Body already consumed!
26
+
27
+ // ✅ GOOD
28
+ const response = await fetch(url);
29
+ const text = await response.text();
30
+ await logBody(text);
31
+ return new Response(text, response);
32
+ ```
33
+
34
+ ## No Node.js Built-ins (by default)
35
+
36
+ ```typescript
37
+ // ❌ BAD
38
+ import fs from 'fs'; // Not available
39
+
40
+ // ✅ GOOD - use Workers APIs
41
+ const data = await env.MY_BUCKET.get('file.txt');
42
+
43
+ // OR enable Node.js compat
44
+ { "compatibility_flags": ["nodejs_compat_v2"] }
45
+ ```
46
+
47
+ ## Fetch in Global Scope Forbidden
48
+
49
+ ```typescript
50
+ // ❌ BAD
51
+ const config = await fetch('/config.json'); // Error!
52
+
53
+ export default {
54
+ async fetch() { return new Response('OK'); },
55
+ };
56
+
57
+ // ✅ GOOD
58
+ export default {
59
+ async fetch() {
60
+ const config = await fetch('/config.json'); // OK
61
+ return new Response('OK');
62
+ },
63
+ };
64
+ ```
65
+
66
+ ## Limits
67
+
68
+ | Resource | Limit |
69
+ |----------|-------|
70
+ | Request size | 100 MB |
71
+ | Response size | Unlimited (streaming) |
72
+ | CPU time | 10ms (standard) / 30ms (unbound) |
73
+ | Subrequests | 1000 per request |
74
+ | KV reads | 1000 per request |
75
+ | KV write size | 25 MB |
76
+ | Environment size | 5 MB |
77
+
78
+ ## Common Errors
79
+
80
+ ### "Error: Body has already been used"
81
+
82
+ **Cause**: Response body read twice
83
+ **Solution**: Clone response before reading: `response.clone()`
84
+
85
+ ### "Error: Too much CPU time used"
86
+
87
+ **Cause**: Exceeded CPU limit
88
+ **Solution**: Use `ctx.waitUntil()` for background work
89
+
90
+ ### "Error: Subrequest depth limit exceeded"
91
+
92
+ **Cause**: Too many nested subrequests
93
+ **Solution**: Flatten request chain, use service bindings
94
+
95
+ ## See Also
96
+
97
+ - [Patterns](./patterns.md) - Best practices
98
+ - [API](./api.md) - Runtime APIs
99
+ - [Configuration](./configuration.md) - Setup
@@ -0,0 +1,149 @@
1
+ # Workers Patterns
2
+
3
+ ## Error Handling
4
+
5
+ ```typescript
6
+ class HTTPError extends Error {
7
+ constructor(public status: number, message: string) { super(message); }
8
+ }
9
+
10
+ export default {
11
+ async fetch(request: Request, env: Env): Promise<Response> {
12
+ try {
13
+ return await handleRequest(request, env);
14
+ } catch (error) {
15
+ if (error instanceof HTTPError) {
16
+ return new Response(JSON.stringify({ error: error.message }), {
17
+ status: error.status, headers: { 'Content-Type': 'application/json' }
18
+ });
19
+ }
20
+ return new Response('Internal Server Error', { status: 500 });
21
+ }
22
+ },
23
+ };
24
+ ```
25
+
26
+ ## CORS
27
+
28
+ ```typescript
29
+ const corsHeaders = {
30
+ 'Access-Control-Allow-Origin': '*',
31
+ 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
32
+ 'Access-Control-Allow-Headers': 'Content-Type',
33
+ };
34
+
35
+ if (request.method === 'OPTIONS') return new Response(null, { headers: corsHeaders });
36
+ // Add corsHeaders to response
37
+ ```
38
+
39
+ ## Routing
40
+
41
+ ```typescript
42
+ const router = { 'GET /api/users': handleGetUsers, 'POST /api/users': handleCreateUser };
43
+
44
+ const handler = router[`${request.method} ${url.pathname}`];
45
+ return handler ? handler(request, env) : new Response('Not Found', { status: 404 });
46
+ ```
47
+
48
+ **Production**: Use Hono, itty-router, or Worktop
49
+
50
+ ## Performance
51
+
52
+ ```typescript
53
+ // ❌ Sequential
54
+ const user = await fetch('/api/user/1');
55
+ const posts = await fetch('/api/posts?user=1');
56
+
57
+ // ✅ Parallel
58
+ const [user, posts] = await Promise.all([fetch('/api/user/1'), fetch('/api/posts?user=1')]);
59
+ ```
60
+
61
+ ## Streaming
62
+
63
+ ```typescript
64
+ const stream = new ReadableStream({
65
+ async start(controller) {
66
+ for (let i = 0; i < 1000; i++) {
67
+ controller.enqueue(new TextEncoder().encode(`Item ${i}\n`));
68
+ if (i % 100 === 0) await new Promise(r => setTimeout(r, 0));
69
+ }
70
+ controller.close();
71
+ }
72
+ });
73
+ ```
74
+
75
+ ## Transform Streams
76
+
77
+ ```typescript
78
+ response.body.pipeThrough(new TextDecoderStream()).pipeThrough(
79
+ new TransformStream({ transform(chunk, c) { c.enqueue(chunk.toUpperCase()); } })
80
+ ).pipeThrough(new TextEncoderStream());
81
+ ```
82
+
83
+ ## Testing
84
+
85
+ ```typescript
86
+ import { describe, it, expect } from 'vitest';
87
+ import worker from '../src/index';
88
+
89
+ describe('Worker', () => {
90
+ it('returns 200', async () => {
91
+ const req = new Request('http://localhost/');
92
+ const env = { MY_VAR: 'test' };
93
+ const ctx = { waitUntil: () => {}, passThroughOnException: () => {} };
94
+ expect((await worker.fetch(req, env, ctx)).status).toBe(200);
95
+ });
96
+ });
97
+ ```
98
+
99
+ ## Deployment
100
+
101
+ ```bash
102
+ npx wrangler deploy # production
103
+ npx wrangler deploy --env staging
104
+ npx wrangler versions upload --message "Add feature"
105
+ npx wrangler rollback
106
+ ```
107
+
108
+ ## Monitoring
109
+
110
+ ```typescript
111
+ const start = Date.now();
112
+ const response = await handleRequest(request, env);
113
+ ctx.waitUntil(env.ANALYTICS.writeDataPoint({
114
+ doubles: [Date.now() - start], blobs: [request.url, String(response.status)]
115
+ }));
116
+ ```
117
+
118
+ ## Security
119
+
120
+ ```typescript
121
+ // Headers
122
+ const security = {
123
+ 'X-Content-Type-Options': 'nosniff',
124
+ 'X-Frame-Options': 'DENY',
125
+ 'Content-Security-Policy': "default-src 'self'",
126
+ };
127
+
128
+ // Auth
129
+ const auth = request.headers.get('Authorization');
130
+ if (!auth?.startsWith('Bearer ')) return new Response('Unauthorized', { status: 401 });
131
+ ```
132
+
133
+ ## Rate Limiting
134
+
135
+ See [Durable Objects](../durable-objects/README.md) for stateful rate limiting patterns.
136
+
137
+ ## Gradual Rollouts
138
+
139
+ ```typescript
140
+ const hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(userId));
141
+ const bucket = new Uint8Array(hash)[0] % 100;
142
+ if (bucket < rolloutPercent) return newFeature(request);
143
+ ```
144
+
145
+ ## See Also
146
+
147
+ - [API](./api.md) - Runtime APIs
148
+ - [Gotchas](./gotchas.md) - Common issues
149
+ - [Configuration](./configuration.md) - Setup
@@ -0,0 +1,116 @@
1
+ # Cloudflare Workers AI Skill
2
+
3
+ A comprehensive OpenCode skill for working with Cloudflare Workers AI.
4
+
5
+ ## What This Skill Covers
6
+
7
+ This skill focuses **exclusively on Cloudflare Workers AI** - the serverless AI inference platform. It does NOT cover the broader Cloudflare platform (Workers, Pages, CDN, etc.) unless directly related to Workers AI usage.
8
+
9
+ ### Topics Included
10
+
11
+ - **Core Concepts**: Bindings, model invocation patterns, naming conventions
12
+ - **Task-Specific Implementations**: Text generation, embeddings, image generation, speech recognition, translation, etc.
13
+ - **REST API Usage**: Authentication, endpoints, OpenAI compatibility
14
+ - **Wrangler Integration**: Setup, configuration, deployment
15
+ - **Pricing & Limits**: Neurons, rate limits, cost optimization
16
+ - **Common Patterns**: RAG, streaming, batch processing, error handling
17
+ - **AI Gateway**: Caching, rate limiting, analytics integration
18
+ - **Function Calling**: Both traditional and embedded approaches
19
+ - **Model Selection**: Guidelines for choosing the right model
20
+ - **TypeScript Support**: Types, interfaces, best practices
21
+
22
+ ## How to Use This Skill
23
+
24
+ ### Installation
25
+
26
+ 1. Place `README.md` in your OpenCode skills directory
27
+ 2. Load the skill when working on Workers AI projects
28
+
29
+ ### When to Load This Skill
30
+
31
+ Load this skill when:
32
+ - Implementing AI inference in Cloudflare Workers
33
+ - Building RAG systems with Workers AI + Vectorize
34
+ - Optimizing Workers AI costs or performance
35
+ - Debugging Workers AI integration issues
36
+ - Setting up AI Gateway with Workers AI
37
+ - Implementing function calling with LLMs
38
+
39
+ ### Example Usage
40
+
41
+ ```bash
42
+ # In OpenCode CLI
43
+ load-skill cloudflare-workers-ai
44
+
45
+ # Then ask questions like:
46
+ "How do I implement streaming with Workers AI?"
47
+ "What's the best embedding model for semantic search?"
48
+ "Show me how to do RAG with Vectorize"
49
+ "How do I handle rate limits?"
50
+ ```
51
+
52
+ ## Skill Structure
53
+
54
+ The skill is organized into these sections:
55
+
56
+ 1. **Overview** - What Workers AI is and when to use this skill
57
+ 2. **Core Concepts** - Bindings, invocation patterns, model naming
58
+ 3. **Task-Specific Patterns** - Code examples for each AI task type
59
+ 4. **REST API** - Using Workers AI via HTTP endpoints
60
+ 5. **Wrangler CLI** - Setup, config, deployment
61
+ 6. **Pricing & Neurons** - Cost model and optimization
62
+ 7. **Rate Limits** - Per-task and per-model limits
63
+ 8. **RAG Pattern** - Complete retrieval-augmented generation example
64
+ 9. **AI Gateway** - Integration patterns
65
+ 10. **Common Patterns** - Error handling, streaming, batching, etc.
66
+ 11. **Model Selection** - Choosing the right model
67
+ 12. **Debugging** - Monitoring and troubleshooting
68
+ 13. **Common Issues** - Known problems and solutions
69
+ 14. **Pages Integration** - Using Workers AI in Pages Functions
70
+ 15. **Advanced Topics** - LoRA adapters
71
+ 16. **Architecture Patterns** - System design approaches
72
+
73
+ ## Key Features
74
+
75
+ - ✅ **Complete Code Examples**: Every pattern has working code
76
+ - ✅ **TypeScript First**: Proper typing for all examples
77
+ - ✅ **Real-World Patterns**: RAG, streaming, batch processing
78
+ - ✅ **Cost Optimization**: Pricing info and model selection guidance
79
+ - ✅ **Troubleshooting**: Common issues and solutions
80
+ - ✅ **Best Practices**: Error handling, type safety, monitoring
81
+
82
+ ## What's NOT Covered
83
+
84
+ This skill does NOT cover:
85
+ - General Cloudflare Workers programming (use Workers skill)
86
+ - Cloudflare Pages (unless specifically Workers AI integration)
87
+ - Cloudflare CDN, DNS, security features
88
+ - Vectorize (unless in context of Workers AI RAG)
89
+ - D1, KV, R2, Durable Objects (unless AI-specific usage)
90
+
91
+ ## Maintenance
92
+
93
+ To keep this skill up to date:
94
+ - Check official docs: https://developers.cloudflare.com/workers-ai/
95
+ - Monitor model catalog: https://developers.cloudflare.com/workers-ai/models/
96
+ - Track pricing changes: https://developers.cloudflare.com/workers-ai/platform/pricing/
97
+
98
+ ## Contributing
99
+
100
+ Found an issue or want to improve this skill?
101
+ 1. Test changes against official Cloudflare Workers AI docs
102
+ 2. Verify code examples work with latest Wrangler
103
+ 3. Update pricing/limits if changed
104
+ 4. Add new model examples as they're released
105
+
106
+ ## Version History
107
+
108
+ - **v1.0** (2026-01-11): Initial comprehensive skill
109
+ - Full coverage of Workers AI API
110
+ - Code patterns for all task types
111
+ - Pricing, limits, troubleshooting
112
+ - RAG, streaming, function calling examples
113
+
114
+ ## License
115
+
116
+ This skill documentation is provided as-is for use with OpenCode.
@@ -0,0 +1,48 @@
1
+ # Cloudflare Workers for Platforms
2
+
3
+ Multi-tenant platform with isolated customer code execution at scale.
4
+
5
+ ## Use Cases
6
+
7
+ - Multi-tenant SaaS running customer code
8
+ - AI-generated code execution in secure sandboxes
9
+ - Programmable platforms with isolated compute
10
+ - Edge functions/serverless platforms
11
+ - Website builders with static + dynamic content
12
+ - Unlimited app deployment at scale
13
+
14
+ **NOT for general Workers** - only for Workers for Platforms architecture.
15
+
16
+ ## Architecture
17
+
18
+ **4 Components:**
19
+ 1. **Dispatch Namespace** - Container for unlimited customer Workers, automatic isolation, untrusted mode
20
+ 2. **Dynamic Dispatch Worker** - Entry point, routes requests, enforces platform logic (auth, limits, validation)
21
+ 3. **User Workers** - Customer code in isolated sandboxes, API-deployed, optional bindings (KV/D1/R2/DO)
22
+ 4. **Outbound Worker** (optional) - Intercepts external fetch, controls egress, logs subrequests
23
+
24
+ **Request Flow:**
25
+ ```
26
+ Request → Dispatch Worker → Determines user Worker → env.DISPATCHER.get("customer")
27
+ → User Worker executes (Outbound Worker for external fetch) → Response → Dispatch Worker → Client
28
+ ```
29
+
30
+ ## Key Features
31
+
32
+ - Unlimited Workers per namespace (no script limits)
33
+ - Automatic tenant isolation
34
+ - Custom CPU/subrequest limits per customer
35
+ - Hostname routing (subdomains/vanity domains)
36
+ - Egress/ingress control
37
+ - Static assets support
38
+ - Tags for bulk operations
39
+
40
+ ## Quick Start
41
+
42
+ See [configuration.md](./configuration.md), [api.md](./api.md), [patterns.md](./patterns.md), [gotchas.md](./gotchas.md)
43
+
44
+ ## Refs
45
+
46
+ - [Docs](https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/)
47
+ - [Starter Kit](https://github.com/cloudflare/templates/tree/main/worker-publisher-template)
48
+ - [VibeSDK](https://github.com/cloudflare/vibesdk)