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,185 @@
1
+ # Workerd Configuration
2
+
3
+ ## Basic Structure
4
+ ```capnp
5
+ using Workerd = import "/workerd/workerd.capnp";
6
+
7
+ const config :Workerd.Config = (
8
+ services = [(name = "main", worker = .mainWorker)],
9
+ sockets = [(name = "http", address = "*:8080", http = (), service = "main")]
10
+ );
11
+
12
+ const mainWorker :Workerd.Worker = (
13
+ modules = [(name = "index.js", esModule = embed "src/index.js")],
14
+ compatibilityDate = "2024-01-15",
15
+ bindings = [...]
16
+ );
17
+ ```
18
+
19
+ ## Services
20
+ **Worker**: Run JS/Wasm code
21
+ ```capnp
22
+ (name = "api", worker = (
23
+ modules = [(name = "index.js", esModule = embed "index.js")],
24
+ compatibilityDate = "2024-01-15",
25
+ bindings = [...]
26
+ ))
27
+ ```
28
+
29
+ **Network**: Internet access
30
+ ```capnp
31
+ (name = "internet", network = (allow = ["public"], tlsOptions = (trustBrowserCas = true)))
32
+ ```
33
+
34
+ **External**: Reverse proxy
35
+ ```capnp
36
+ (name = "backend", external = (address = "api.com:443", http = (style = tls)))
37
+ ```
38
+
39
+ **Disk**: Static files
40
+ ```capnp
41
+ (name = "assets", disk = (path = "/var/www", writable = false))
42
+ ```
43
+
44
+ ## Sockets
45
+ ```capnp
46
+ # HTTP
47
+ (name = "http", address = "*:8080", http = (), service = "main")
48
+
49
+ # HTTPS
50
+ (name = "https", address = "*:443",
51
+ https = (options = (), tlsOptions = (
52
+ keypair = (privateKey = embed "key.pem", certificateChain = embed "cert.pem")
53
+ )),
54
+ service = "main"
55
+ )
56
+
57
+ # Unix socket
58
+ (name = "app", address = "unix:/tmp/app.sock", http = (), service = "main")
59
+ ```
60
+
61
+ ## Worker Formats
62
+ **ES Modules** (recommended):
63
+ ```capnp
64
+ modules = [
65
+ (name = "index.js", esModule = embed "src/index.js"),
66
+ (name = "wasm.wasm", wasm = embed "build/module.wasm"),
67
+ (name = "data.json", json = embed "data.json"),
68
+ ]
69
+ ```
70
+
71
+ **Service Worker**:
72
+ ```capnp
73
+ serviceWorkerScript = embed "worker.js"
74
+ ```
75
+
76
+ **CommonJS**:
77
+ ```capnp
78
+ (name = "legacy.js", commonJsModule = embed "legacy.js", namedExports = ["foo"])
79
+ ```
80
+
81
+ ## Bindings
82
+ Bindings expose resources to workers. ES modules: `env.BINDING`, Service workers: globals.
83
+
84
+ ### Primitive Types
85
+ ```capnp
86
+ (name = "API_KEY", text = "secret") # String
87
+ (name = "CONFIG", json = '{"key":"val"}') # Parsed JSON
88
+ (name = "DATA", data = embed "data.bin") # ArrayBuffer
89
+ (name = "DATABASE_URL", fromEnvironment = "DB_URL") # System env var
90
+ ```
91
+
92
+ ### Service Binding
93
+ ```capnp
94
+ (name = "AUTH", service = "auth-worker") # Basic
95
+ (name = "API", service = (
96
+ name = "backend",
97
+ entrypoint = "adminApi", # Named export
98
+ props = (json = '{"role":"admin"}') # ctx.props
99
+ ))
100
+ ```
101
+
102
+ ### Storage
103
+ ```capnp
104
+ (name = "CACHE", kvNamespace = "kv-service") # KV
105
+ (name = "STORAGE", r2Bucket = "r2-service") # R2
106
+ (name = "ROOMS", durableObjectNamespace = (
107
+ serviceName = "room-service",
108
+ className = "Room"
109
+ ))
110
+ (name = "FAST", memoryCache = (
111
+ id = "cache-id",
112
+ limits = (maxKeys = 1000, maxValueSize = 1048576)
113
+ ))
114
+ ```
115
+
116
+ ### Other
117
+ ```capnp
118
+ (name = "TASKS", queue = "queue-service") # Queue
119
+ (name = "ANALYTICS", analyticsEngine = "analytics") # Analytics
120
+ (name = "LOADER", workerLoader = (id = "dynamic")) # Dynamic workers
121
+ (name = "KEY", cryptoKey = (
122
+ format = raw,
123
+ algorithm = (name = "HMAC", hash = "SHA-256"),
124
+ keyData = embed "key.bin",
125
+ usages = [sign, verify],
126
+ extractable = false
127
+ ))
128
+ (name = "TRACED", wrapped = ( # Middleware
129
+ moduleName = "tracing",
130
+ entrypoint = "makeTracer",
131
+ innerBindings = [(name = "backend", service = "backend")]
132
+ ))
133
+ ```
134
+
135
+ ## Compatibility
136
+ ```capnp
137
+ compatibilityDate = "2024-01-15" # Always set!
138
+ compatibilityFlags = ["nodejs_compat", "streams_enable_constructors"]
139
+ ```
140
+
141
+ Version = max compat date. Update carefully after testing.
142
+
143
+ ## Parameter Bindings (Inheritance)
144
+ ```capnp
145
+ const base :Workerd.Worker = (
146
+ modules = [...],
147
+ compatibilityDate = "2024-01-15",
148
+ bindings = [
149
+ (name = "API_URL", parameter = (type = text)),
150
+ (name = "DB", parameter = (type = service)),
151
+ ]
152
+ );
153
+
154
+ const derived :Workerd.Worker = (
155
+ inherit = "base-service",
156
+ bindings = [
157
+ (name = "API_URL", text = "https://api.com"),
158
+ (name = "DB", service = "postgres"),
159
+ ]
160
+ );
161
+ ```
162
+
163
+ ## Durable Objects Config
164
+ ```capnp
165
+ const worker :Workerd.Worker = (
166
+ modules = [...],
167
+ compatibilityDate = "2024-01-15",
168
+ bindings = [(name = "ROOMS", durableObjectNamespace = "Room")],
169
+ durableObjectNamespaces = [(className = "Room", uniqueKey = "v1")],
170
+ durableObjectStorage = (localDisk = "/var/do")
171
+ );
172
+ ```
173
+
174
+ ## Logging & Debugging
175
+ ```capnp
176
+ logging = (
177
+ structuredLogging = true,
178
+ stdoutPrefix = "OUT: ",
179
+ stderrPrefix = "ERR: "
180
+ )
181
+
182
+ v8Flags = ["--expose-gc", "--max-old-space-size=2048"] # Use at own risk
183
+ ```
184
+
185
+ See [patterns.md](./patterns.md) for multi-service examples, [gotchas.md](./gotchas.md) for config errors.
@@ -0,0 +1,203 @@
1
+ # Workerd Gotchas
2
+
3
+ ## Configuration Errors
4
+
5
+ ### Missing Compat Date
6
+ ❌ **Wrong**:
7
+ ```capnp
8
+ const worker :Workerd.Worker = (
9
+ serviceWorkerScript = embed "worker.js"
10
+ )
11
+ ```
12
+
13
+ ✅ **Correct**:
14
+ ```capnp
15
+ const worker :Workerd.Worker = (
16
+ serviceWorkerScript = embed "worker.js",
17
+ compatibilityDate = "2024-01-15" # Always set!
18
+ )
19
+ ```
20
+
21
+ ### Wrong Binding Type
22
+ ❌ **Wrong** - text returns string:
23
+ ```capnp
24
+ (name = "CONFIG", text = '{"key":"value"}') # String, not parsed
25
+ ```
26
+
27
+ ✅ **Correct** - json returns object:
28
+ ```capnp
29
+ (name = "CONFIG", json = '{"key":"value"}') # Parsed object
30
+ ```
31
+
32
+ ### Service vs Namespace
33
+ ❌ **Wrong** - just a Fetcher:
34
+ ```capnp
35
+ (name = "ROOM", service = "room-service")
36
+ ```
37
+
38
+ ✅ **Correct** - Durable Object namespace:
39
+ ```capnp
40
+ (name = "ROOM", durableObjectNamespace = "Room")
41
+ ```
42
+
43
+ ### Module Name Mismatch
44
+ ❌ **Wrong** - import fails:
45
+ ```capnp
46
+ modules = [(name = "src/index.js", esModule = embed "src/index.js")]
47
+ ```
48
+
49
+ ✅ **Correct** - use simple names:
50
+ ```capnp
51
+ modules = [(name = "index.js", esModule = embed "src/index.js")]
52
+ ```
53
+
54
+ ## Network Access
55
+
56
+ ### No Global Outbound
57
+ ❌ **Wrong** - may fail without config:
58
+ ```javascript
59
+ await fetch("https://api.example.com")
60
+ ```
61
+
62
+ ✅ **Correct** - configure network service:
63
+ ```capnp
64
+ services = [
65
+ (name = "internet", network = (allow = ["public"])),
66
+ (name = "worker", worker = (
67
+ ...,
68
+ bindings = [(name = "API", service = "internet")]
69
+ ))
70
+ ]
71
+ ```
72
+
73
+ Or use external service:
74
+ ```capnp
75
+ bindings = [
76
+ (name = "API", service = (
77
+ name = "api-backend",
78
+ external = (address = "api.com:443", http = (style = tls))
79
+ ))
80
+ ]
81
+ ```
82
+
83
+ ## Debugging Issues
84
+
85
+ ### Worker Not Responding
86
+ Check:
87
+ 1. Socket config: `address = "*:8080"`, service name matches
88
+ 2. Worker has `fetch()` handler
89
+ 3. Port available
90
+ 4. Service name in socket matches service definition
91
+
92
+ ### Binding Not Found
93
+ Check:
94
+ 1. Binding name in config matches code (`env.BINDING` or global)
95
+ 2. Service exists in config
96
+ 3. ES module vs service worker syntax (env vs global)
97
+
98
+ ### Module Not Found
99
+ Check:
100
+ 1. Module name in config matches import path
101
+ 2. `embed` path correct
102
+ 3. ES module syntax valid (no CommonJS in `.mjs`)
103
+
104
+ ### Compatibility Errors
105
+ Check:
106
+ 1. `compatibilityDate` set
107
+ 2. API available on that date ([docs](https://developers.cloudflare.com/workers/configuration/compatibility-dates/))
108
+ 3. Required flags enabled (`compatibilityFlags`)
109
+
110
+ ## Performance Issues
111
+
112
+ ### High Memory Usage
113
+ Try:
114
+ 1. V8 flags: `v8Flags = ["--max-old-space-size=2048"]`
115
+ 2. Reduce cache limits: `memoryCache.limits.maxTotalValueSize`
116
+ 3. Profile with `--verbose` logging
117
+
118
+ ### Slow Startup
119
+ Try:
120
+ 1. Compile binary: `workerd compile config.capnp name -o binary`
121
+ 2. Check module count (many imports slow startup)
122
+ 3. Review compatibility flags (some have perf impact)
123
+
124
+ ### Request Timeouts
125
+ Check:
126
+ 1. External service connectivity
127
+ 2. Network service DNS resolution
128
+ 3. TLS handshake issues (`tlsOptions`)
129
+
130
+ ## Build Issues
131
+
132
+ ### Cap'n Proto Errors
133
+ - Install Cap'n Proto tools: `brew install capnp` / `apt install capnproto`
134
+ - Check schema import path: `using Workerd = import "/workerd/workerd.capnp";`
135
+ - Validate with: `capnp compile -I. config.capnp`
136
+
137
+ ### Embed Path Issues
138
+ - Paths relative to config file location
139
+ - Use absolute paths if needed: `embed "/full/path/file.js"`
140
+ - Check file exists before running
141
+
142
+ ### V8 Flags Warning
143
+ **Warning**: V8 flags (`v8Flags`) can break everything. Use only if necessary and test thoroughly. Not supported in production Cloudflare Workers.
144
+
145
+ ## Security Gotchas
146
+
147
+ ### Hardcoded Secrets
148
+ ❌ **Never** hardcode:
149
+ ```capnp
150
+ (name = "API_KEY", text = "sk-1234567890")
151
+ ```
152
+
153
+ ✅ **Use env vars**:
154
+ ```capnp
155
+ (name = "API_KEY", fromEnvironment = "API_KEY")
156
+ ```
157
+
158
+ ### Overly Broad Network Access
159
+ ❌ **Too permissive**:
160
+ ```capnp
161
+ network = (allow = ["*"]) # Everything
162
+ ```
163
+
164
+ ✅ **Restrictive**:
165
+ ```capnp
166
+ network = (allow = ["public"], deny = ["local"])
167
+ ```
168
+
169
+ ### Extractable Keys
170
+ ❌ **Extractable keys risky**:
171
+ ```capnp
172
+ cryptoKey = (extractable = true, ...)
173
+ ```
174
+
175
+ ✅ **Non-extractable**:
176
+ ```capnp
177
+ cryptoKey = (extractable = false, ...)
178
+ ```
179
+
180
+ ## Compatibility Changes
181
+
182
+ ### Breaking Change Migration
183
+ When updating `compatibilityDate`:
184
+ 1. Review [compatibility dates docs](https://developers.cloudflare.com/workers/configuration/compatibility-dates/)
185
+ 2. Check flags enabled between old/new date
186
+ 3. Test locally with new date
187
+ 4. Update code for breaking changes
188
+ 5. Deploy with new date
189
+
190
+ ### Version Mismatch
191
+ Workerd version = max compat date supported. If `compatibilityDate = "2025-01-01"` but workerd is v1.20241201.0, it fails. Update workerd binary.
192
+
193
+ ## Troubleshooting Steps
194
+
195
+ 1. **Enable verbose logging**: `workerd serve config.capnp --verbose`
196
+ 2. **Check logs**: Look for error messages, stack traces
197
+ 3. **Validate config**: `capnp compile -I. config.capnp`
198
+ 4. **Test bindings**: Log `Object.keys(env)` to verify
199
+ 5. **Check versions**: Workerd version vs compat date
200
+ 6. **Isolate issue**: Minimal repro config
201
+ 7. **Review schema**: [workerd.capnp](https://github.com/cloudflare/workerd/blob/main/src/workerd/server/workerd.capnp)
202
+
203
+ See [configuration.md](./configuration.md) for config details, [patterns.md](./patterns.md) for working examples, [api.md](./api.md) for runtime APIs.
@@ -0,0 +1,216 @@
1
+ # Workerd Patterns
2
+
3
+ ## Multi-Service Architecture
4
+ ```capnp
5
+ const config :Workerd.Config = (
6
+ services = [
7
+ (name = "frontend", worker = (
8
+ modules = [(name = "index.js", esModule = embed "frontend/index.js")],
9
+ compatibilityDate = "2024-01-15",
10
+ bindings = [(name = "API", service = "api")]
11
+ )),
12
+
13
+ (name = "api", worker = (
14
+ modules = [(name = "index.js", esModule = embed "api/index.js")],
15
+ compatibilityDate = "2024-01-15",
16
+ bindings = [
17
+ (name = "DB", service = "postgres"),
18
+ (name = "CACHE", kvNamespace = "kv"),
19
+ ]
20
+ )),
21
+
22
+ (name = "postgres", external = (address = "db.internal:5432", http = ())),
23
+ (name = "kv", disk = (path = "/var/kv", writable = true)),
24
+ ],
25
+
26
+ sockets = [(name = "http", address = "*:8080", http = (), service = "frontend")]
27
+ );
28
+ ```
29
+
30
+ ## Durable Objects
31
+ ```capnp
32
+ const config :Workerd.Config = (
33
+ services = [
34
+ (name = "app", worker = (
35
+ modules = [
36
+ (name = "index.js", esModule = embed "index.js"),
37
+ (name = "room.js", esModule = embed "room.js"),
38
+ ],
39
+ compatibilityDate = "2024-01-15",
40
+ bindings = [(name = "ROOMS", durableObjectNamespace = "Room")],
41
+ durableObjectNamespaces = [(className = "Room", uniqueKey = "v1")],
42
+ durableObjectStorage = (localDisk = "/var/do")
43
+ ))
44
+ ],
45
+ sockets = [(name = "http", address = "*:8080", http = (), service = "app")]
46
+ );
47
+ ```
48
+
49
+ ## Dev vs Prod Configs
50
+ ```capnp
51
+ const devWorker :Workerd.Worker = (
52
+ modules = [(name = "index.js", esModule = embed "src/index.js")],
53
+ compatibilityDate = "2024-01-15",
54
+ bindings = [
55
+ (name = "API_URL", text = "http://localhost:3000"),
56
+ (name = "DEBUG", text = "true"),
57
+ ]
58
+ );
59
+
60
+ const prodWorker :Workerd.Worker = (
61
+ inherit = "dev-service",
62
+ bindings = [
63
+ (name = "API_URL", text = "https://api.prod.com"),
64
+ (name = "DEBUG", text = "false"),
65
+ ]
66
+ );
67
+ ```
68
+
69
+ ## HTTP Reverse Proxy
70
+ ```capnp
71
+ const config :Workerd.Config = (
72
+ services = [
73
+ (name = "proxy", worker = (
74
+ serviceWorkerScript = embed "proxy.js",
75
+ compatibilityDate = "2024-01-15",
76
+ bindings = [(name = "BACKEND", service = "backend")]
77
+ )),
78
+ (name = "backend", external = (address = "internal:8080", http = ()))
79
+ ],
80
+ sockets = [(name = "http", address = "*:80", http = (), service = "proxy")]
81
+ );
82
+ ```
83
+
84
+ ## Local Development
85
+
86
+ ### Using Wrangler
87
+ ```bash
88
+ export MINIFLARE_WORKERD_PATH="/path/to/workerd"
89
+ wrangler dev
90
+ ```
91
+
92
+ ### Direct Workerd
93
+ ```bash
94
+ workerd serve config.capnp --socket-addr http=*:3000 --verbose
95
+ ```
96
+
97
+ ### Environment Variables
98
+ ```capnp
99
+ bindings = [
100
+ (name = "DATABASE_URL", fromEnvironment = "DATABASE_URL"),
101
+ (name = "API_KEY", fromEnvironment = "API_KEY"),
102
+ ]
103
+ ```
104
+
105
+ ```bash
106
+ export DATABASE_URL="postgres://..."
107
+ export API_KEY="secret"
108
+ workerd serve config.capnp
109
+ ```
110
+
111
+ ## Testing
112
+
113
+ ### Test Config
114
+ ```capnp
115
+ const testWorker :Workerd.Worker = (
116
+ modules = [
117
+ (name = "index.js", esModule = embed "src/index.js"),
118
+ (name = "test.js", esModule = embed "tests/test.js"),
119
+ ],
120
+ compatibilityDate = "2024-01-15"
121
+ );
122
+ ```
123
+
124
+ ```bash
125
+ workerd test config.capnp
126
+ workerd test config.capnp --test-only=test.js
127
+ ```
128
+
129
+ ## Production Deployment
130
+
131
+ ### Systemd
132
+ ```ini
133
+ # /etc/systemd/system/workerd.service
134
+ [Unit]
135
+ Description=workerd runtime
136
+ After=network-online.target
137
+ Requires=workerd.socket
138
+
139
+ [Service]
140
+ Type=exec
141
+ ExecStart=/usr/bin/workerd serve /etc/workerd/config.capnp --socket-fd http=3
142
+ Restart=always
143
+ User=nobody
144
+ NoNewPrivileges=true
145
+
146
+ [Install]
147
+ WantedBy=multi-user.target
148
+ ```
149
+
150
+ ```ini
151
+ # /etc/systemd/system/workerd.socket
152
+ [Socket]
153
+ ListenStream=0.0.0.0:80
154
+
155
+ [Install]
156
+ WantedBy=sockets.target
157
+ ```
158
+
159
+ ### Docker
160
+ ```dockerfile
161
+ FROM debian:bookworm-slim
162
+ RUN apt-get update && apt-get install -y ca-certificates
163
+ COPY workerd /usr/local/bin/
164
+ COPY config.capnp /etc/workerd/
165
+ COPY src/ /etc/workerd/src/
166
+ EXPOSE 8080
167
+ CMD ["workerd", "serve", "/etc/workerd/config.capnp"]
168
+ ```
169
+
170
+ ### Compiled Binary
171
+ ```bash
172
+ workerd compile config.capnp myConfig -o production-server
173
+ ./production-server
174
+ ```
175
+
176
+ ## Best Practices
177
+
178
+ 1. **Use ES modules** over service worker syntax
179
+ 2. **Explicit bindings** - no global namespace assumptions
180
+ 3. **Type safety** - define `Env` interfaces
181
+ 4. **Service isolation** - split concerns
182
+ 5. **Pin compat date** in production after testing
183
+ 6. **Use ctx.waitUntil()** for background tasks
184
+ 7. **Handle errors gracefully** with try/catch
185
+ 8. **Configure resource limits** on caches/storage
186
+
187
+ ## Error Handling Pattern
188
+ ```javascript
189
+ export default {
190
+ async fetch(request, env, ctx) {
191
+ try {
192
+ return await handleRequest(request, env);
193
+ } catch (error) {
194
+ console.error("Request failed", error);
195
+ return new Response("Internal Error", {status: 500});
196
+ }
197
+ }
198
+ };
199
+ ```
200
+
201
+ ## Logging Pattern
202
+ ```javascript
203
+ export default {
204
+ async fetch(request, env, ctx) {
205
+ console.log("Request", {method: request.method, url: request.url});
206
+
207
+ ctx.waitUntil(
208
+ logToAnalytics(request, env)
209
+ );
210
+
211
+ return new Response("OK");
212
+ }
213
+ };
214
+ ```
215
+
216
+ See [configuration.md](./configuration.md) for config syntax, [api.md](./api.md) for runtime APIs, [gotchas.md](./gotchas.md) for common errors.
@@ -0,0 +1,96 @@
1
+ # Cloudflare Workers
2
+
3
+ Expert guidance for building, deploying, and optimizing Cloudflare Workers applications.
4
+
5
+ ## Overview
6
+
7
+ Cloudflare Workers run on V8 isolates (NOT containers/VMs):
8
+ - Extremely fast cold starts (< 1ms)
9
+ - Global deployment across 300+ locations
10
+ - Web standards compliant (fetch, URL, Headers, Request, Response)
11
+ - Support JS/TS, Python, Rust, and WebAssembly
12
+
13
+ **Key principle**: Workers use web platform APIs wherever possible for portability.
14
+
15
+ ## Module Worker Pattern (Recommended)
16
+
17
+ ```typescript
18
+ export default {
19
+ async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
20
+ return new Response('Hello World!');
21
+ },
22
+ };
23
+ ```
24
+
25
+ **Handler parameters**:
26
+ - `request`: Incoming HTTP request (standard Request object)
27
+ - `env`: Environment bindings (KV, D1, R2, secrets, vars)
28
+ - `ctx`: Execution context (`waitUntil`, `passThroughOnException`)
29
+
30
+ ## Essential Commands
31
+
32
+ ```bash
33
+ npx wrangler dev # Local dev
34
+ npx wrangler dev --remote # Remote dev (actual resources)
35
+ npx wrangler deploy # Production
36
+ npx wrangler deploy --env staging # Specific environment
37
+ npx wrangler tail # Stream logs
38
+ npx wrangler secret put API_KEY # Set secret
39
+ ```
40
+
41
+ ## When to Use Workers
42
+
43
+ - API endpoints at the edge
44
+ - Request/response transformation
45
+ - Authentication/authorization layers
46
+ - Static asset optimization
47
+ - A/B testing and feature flags
48
+ - Rate limiting and security
49
+ - Proxy/routing logic
50
+ - WebSocket applications
51
+
52
+ ## Quick Start
53
+
54
+ ```bash
55
+ npm create cloudflare@latest my-worker -- --type hello-world
56
+ cd my-worker
57
+ npx wrangler dev
58
+ ```
59
+
60
+ ## Handler Signatures
61
+
62
+ ```typescript
63
+ // HTTP requests
64
+ async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response>
65
+
66
+ // Cron triggers
67
+ async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext): Promise<void>
68
+
69
+ // Queue consumer
70
+ async queue(batch: MessageBatch, env: Env, ctx: ExecutionContext): Promise<void>
71
+
72
+ // Tail consumer
73
+ async tail(events: TraceItem[], env: Env, ctx: ExecutionContext): Promise<void>
74
+ ```
75
+
76
+ ## Resources
77
+
78
+ **Docs**: https://developers.cloudflare.com/workers/
79
+ **Examples**: https://developers.cloudflare.com/workers/examples/
80
+ **Runtime APIs**: https://developers.cloudflare.com/workers/runtime-apis/
81
+
82
+ ## In This Reference
83
+
84
+ - [Configuration](./configuration.md) - wrangler.jsonc setup, bindings, environments
85
+ - [API](./api.md) - Runtime APIs, bindings, execution context
86
+ - [Patterns](./patterns.md) - Common workflows, testing, optimization
87
+ - [Gotchas](./gotchas.md) - Common issues, limits, troubleshooting
88
+
89
+ ## See Also
90
+
91
+ - [KV](../kv/README.md) - Key-value storage
92
+ - [D1](../d1/README.md) - SQL database
93
+ - [R2](../r2/README.md) - Object storage
94
+ - [Durable Objects](../durable-objects/README.md) - Stateful coordination
95
+ - [Queues](../queues/README.md) - Message queues
96
+ - [Wrangler](../wrangler/README.md) - CLI tool reference