opencodekit 0.15.4 → 0.15.6

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 (326) hide show
  1. package/dist/index.js +2 -2
  2. package/dist/template/.opencode/agent/explore.md +13 -12
  3. package/dist/template/.opencode/command/cloudflare.md +70 -0
  4. package/dist/template/.opencode/memory/observations/2026-01-19-learning-oh-my-opencode-slim-vs-opencodekit-templ.md +27 -0
  5. package/dist/template/.opencode/package.json +1 -1
  6. package/dist/template/.opencode/plugin/sessions.ts +38 -4
  7. package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
  8. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  9. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  10. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  11. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  12. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  13. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  14. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  15. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  16. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  17. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  18. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  19. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  20. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  21. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  22. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  23. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  24. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  25. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  26. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  27. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  28. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  29. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  30. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  31. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  32. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  33. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  34. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  35. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  36. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  37. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  38. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  39. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  40. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  41. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  42. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  43. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  44. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  45. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  46. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  47. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  48. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  49. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  50. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  51. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  52. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  53. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  54. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  55. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  56. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  57. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  58. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  59. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  60. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  61. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  62. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  63. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  64. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  65. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  66. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  67. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  68. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  69. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  70. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  71. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  72. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  73. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  74. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  75. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  76. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  77. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  78. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  79. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  80. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  81. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  82. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  83. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  84. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  85. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  86. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  87. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  88. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  89. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  90. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  91. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  92. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  93. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  94. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  95. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  96. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  97. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  98. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  99. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  100. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  101. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  102. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  103. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  104. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  105. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  106. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  107. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  108. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  109. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  110. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  111. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  112. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  113. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  114. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  115. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  116. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  117. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  118. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  119. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  120. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  121. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  122. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  123. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  124. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  125. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  126. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  127. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  128. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  129. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  130. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  131. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  132. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  133. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  134. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  135. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  136. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  137. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  138. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  139. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  140. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  141. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  142. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  143. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  144. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  145. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  146. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  147. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  148. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  149. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  150. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  151. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  152. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  153. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  154. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  155. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  156. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  157. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  158. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  159. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  160. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  261. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  262. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  263. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  264. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  265. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  266. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
  267. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  268. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  269. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  270. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  271. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  272. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  273. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  274. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  275. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  276. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  277. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  278. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  279. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  280. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  281. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  282. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  283. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  284. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  285. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  286. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  287. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  288. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  289. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  290. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  291. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  292. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  293. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  294. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  295. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  296. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  297. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  298. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  299. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  300. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  301. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  302. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  303. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  304. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  305. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  306. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  307. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  308. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  309. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  310. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  311. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  312. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  313. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  314. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  315. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  316. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  317. package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
  318. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  319. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
  320. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  321. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
  322. package/dist/template/.opencode/tool/memory-read.ts +64 -44
  323. package/dist/template/.opencode/tool/memory-search.ts +9 -2
  324. package/dist/template/.opencode/tool/memory-update.ts +59 -47
  325. package/dist/template/.opencode/tool/observation.ts +16 -2
  326. package/package.json +1 -1
@@ -0,0 +1,264 @@
1
+ # Cloudflare C3 (create-cloudflare) Skill
2
+
3
+ Expert guidance for using C3, the official CLI tool for scaffolding Cloudflare projects.
4
+
5
+ ## What is C3?
6
+
7
+ C3 (`create-cloudflare`) is Cloudflare's CLI for project initialization. Creates Workers, Pages, and full-stack applications with templates, TypeScript, and instant deployment.
8
+
9
+ ## Installation & Usage
10
+
11
+ ```bash
12
+ # NPM
13
+ npm create cloudflare@latest
14
+
15
+ # Yarn
16
+ yarn create cloudflare
17
+
18
+ # PNPM
19
+ pnpm create cloudflare@latest
20
+
21
+ # With project name
22
+ npm create cloudflare@latest my-app
23
+
24
+ # With template
25
+ npm create cloudflare@latest -- --template=cloudflare/templates/workers-template
26
+ ```
27
+
28
+ ## Common Templates
29
+
30
+ ### Workers
31
+
32
+ ```bash
33
+ # Basic Worker
34
+ npm create cloudflare@latest -- --template=worker
35
+
36
+ # TypeScript Worker
37
+ npm create cloudflare@latest -- --template=worker-typescript
38
+
39
+ # Durable Objects
40
+ npm create cloudflare@latest -- --template=hello-world-do-template
41
+ ```
42
+
43
+ ### Full-Stack Apps
44
+
45
+ ```bash
46
+ # Next.js
47
+ npm create cloudflare@latest -- --template=next-starter-template
48
+
49
+ # React Router
50
+ npm create cloudflare@latest -- --template=react-router-starter-template
51
+
52
+ # Remix
53
+ npm create cloudflare@latest -- --template=remix-starter-template
54
+
55
+ # Astro
56
+ npm create cloudflare@latest -- --template=astro-blog-starter-template
57
+ ```
58
+
59
+ ### Database & Storage
60
+
61
+ ```bash
62
+ # D1 SQLite
63
+ npm create cloudflare@latest -- --template=d1-template
64
+
65
+ # R2 Explorer
66
+ npm create cloudflare@latest -- --template=r2-explorer-template
67
+
68
+ # Postgres + Hyperdrive
69
+ npm create cloudflare@latest -- --template=postgres-hyperdrive-template
70
+ ```
71
+
72
+ ### AI & ML
73
+
74
+ ```bash
75
+ # Workers AI Chat
76
+ npm create cloudflare@latest -- --template=llm-chat-app-template
77
+
78
+ # Text-to-Image
79
+ npm create cloudflare@latest -- --template=text-to-image-template
80
+ ```
81
+
82
+ ### Real-time & Multiplayer
83
+
84
+ ```bash
85
+ # Chat with Durable Objects
86
+ npm create cloudflare@latest -- --template=durable-chat-template
87
+
88
+ # Multiplayer Globe
89
+ npm create cloudflare@latest -- --template=multiplayer-globe-template
90
+ ```
91
+
92
+ ## Interactive Mode
93
+
94
+ ```bash
95
+ npm create cloudflare@latest my-app
96
+ ```
97
+
98
+ C3 prompts for:
99
+ 1. Application type (Website/API/scheduled worker/etc.)
100
+ 2. Framework choice (if applicable)
101
+ 3. TypeScript preference
102
+ 4. Git initialization
103
+ 5. Deployment option
104
+
105
+ ## Non-Interactive Mode
106
+
107
+ ```bash
108
+ npm create cloudflare@latest my-worker \
109
+ --type=web-app \
110
+ --framework=next \
111
+ --ts \
112
+ --git \
113
+ --deploy
114
+ ```
115
+
116
+ ### Flags
117
+
118
+ - `--type` - Application type: `web-app`, `hello-world`, `pre-existing`, `remote-template`
119
+ - `--framework` - Framework: `next`, `remix`, `astro`, `react-router`, `solid`, `svelte`, etc.
120
+ - `--template` - GitHub template URL or path
121
+ - `--ts` / `--no-ts` - TypeScript
122
+ - `--git` / `--no-git` - Initialize git repo
123
+ - `--deploy` / `--no-deploy` - Deploy after creation
124
+ - `--open` - Open in browser after deploy
125
+ - `--existing-script` - Path to existing Worker script
126
+
127
+ ## CI/CD Usage
128
+
129
+ ```yaml
130
+ # GitHub Actions
131
+ - name: Create Cloudflare Project
132
+ run: |
133
+ npm create cloudflare@latest my-app -- \
134
+ --type=web-app \
135
+ --framework=next \
136
+ --ts \
137
+ --no-git \
138
+ --no-deploy
139
+ ```
140
+
141
+ ## Custom Templates
142
+
143
+ ```bash
144
+ # From GitHub repo
145
+ npm create cloudflare@latest -- --template=user/repo
146
+
147
+ # From local path
148
+ npm create cloudflare@latest -- --template=../my-template
149
+
150
+ # From Cloudflare official templates
151
+ npm create cloudflare@latest -- --template=cloudflare/templates/workers-template
152
+ ```
153
+
154
+ ## Project Structure Created
155
+
156
+ ```
157
+ my-app/
158
+ ├── src/
159
+ │ └── index.ts # Worker entry point
160
+ ├── wrangler.toml # Configuration
161
+ ├── package.json
162
+ ├── tsconfig.json
163
+ └── README.md
164
+ ```
165
+
166
+ ## Post-Creation
167
+
168
+ ```bash
169
+ cd my-app
170
+
171
+ # Local development
172
+ npm run dev
173
+
174
+ # Deploy
175
+ npm run deploy
176
+
177
+ # Type check
178
+ npm run cf-typegen
179
+ ```
180
+
181
+ ## wrangler.toml Configuration
182
+
183
+ C3 generates:
184
+
185
+ ```toml
186
+ name = "my-app"
187
+ main = "src/index.ts"
188
+ compatibility_date = "2024-01-01"
189
+
190
+ # Bindings added based on template
191
+ [[kv_namespaces]]
192
+ binding = "MY_KV"
193
+ id = "..."
194
+
195
+ [[d1_databases]]
196
+ binding = "DB"
197
+ database_id = "..."
198
+ ```
199
+
200
+ ## Best Practices
201
+
202
+ 1. **Use latest C3:** `npm create cloudflare@latest`
203
+ 2. **Choose TypeScript** for type safety
204
+ 3. **Enable git** for version control
205
+ 4. **Review generated wrangler.toml** before first deploy
206
+ 5. **Update dependencies** post-creation: `npm update`
207
+
208
+ ## Common Workflows
209
+
210
+ ### Quick Worker
211
+
212
+ ```bash
213
+ npm create cloudflare@latest my-worker -- --type=hello-world --ts --deploy
214
+ ```
215
+
216
+ ### Full-Stack App with D1
217
+
218
+ ```bash
219
+ npm create cloudflare@latest my-app -- \
220
+ --template=react-router-starter-template \
221
+ --ts \
222
+ --git
223
+ cd my-app
224
+ npx wrangler d1 create my-db
225
+ # Add to wrangler.toml, then:
226
+ npm run deploy
227
+ ```
228
+
229
+ ### Convert Existing Project
230
+
231
+ ```bash
232
+ cd existing-project
233
+ npm create cloudflare@latest . -- --existing-script=./dist/index.js
234
+ ```
235
+
236
+ ## Troubleshooting
237
+
238
+ ### `npm create cloudflare failed`
239
+
240
+ - Ensure Node.js 16.13+
241
+ - Clear npm cache: `npm cache clean --force`
242
+ - Try with `npx`: `npx create-cloudflare@latest`
243
+
244
+ ### Template not found
245
+
246
+ - Verify template name/path
247
+ - Check network connection
248
+ - Use full GitHub URL: `https://github.com/user/repo`
249
+
250
+ ### Deployment fails
251
+
252
+ - Check Cloudflare account authentication: `wrangler login`
253
+ - Verify `wrangler.toml` configuration
254
+ - Check for naming conflicts in dashboard
255
+
256
+ ## Reference
257
+
258
+ - [C3 GitHub](https://github.com/cloudflare/workers-sdk/tree/main/packages/create-cloudflare)
259
+ - [Templates Repository](https://github.com/cloudflare/templates)
260
+ - [Workers Docs](https://developers.cloudflare.com/workers/)
261
+
262
+ ---
263
+
264
+ This skill focuses exclusively on C3 CLI tool usage. For Workers development, see `cloudflare-workers` skill.
@@ -0,0 +1,93 @@
1
+ # Cloudflare Cache Reserve
2
+
3
+ **Persistent cache storage built on R2 for long-term content retention**
4
+
5
+ ## Overview
6
+
7
+ Cache Reserve is Cloudflare's persistent, large-scale cache storage layer built on R2. It acts as the ultimate upper-tier cache, storing cacheable content for extended periods (30+ days) to maximize cache hits, reduce origin egress fees, and shield origins from repeated requests for long-tail content.
8
+
9
+ ## Core Concepts
10
+
11
+ ### What is Cache Reserve?
12
+
13
+ - **Persistent storage layer**: Built on R2, sits above tiered cache hierarchy
14
+ - **Long-term retention**: 30-day default retention, extended on each access
15
+ - **Automatic operation**: Works seamlessly with existing CDN, no code changes required
16
+ - **Origin shielding**: Dramatically reduces origin egress by serving cached content longer
17
+ - **Usage-based pricing**: Pay only for storage + read/write operations
18
+
19
+ ### Cache Hierarchy
20
+
21
+ ```
22
+ Visitor Request
23
+
24
+ Lower-Tier Cache (closest to visitor)
25
+ ↓ (on miss)
26
+ Upper-Tier Cache (closest to origin)
27
+ ↓ (on miss)
28
+ Cache Reserve (R2 persistent storage)
29
+ ↓ (on miss)
30
+ Origin Server
31
+ ```
32
+
33
+ ### How It Works
34
+
35
+ 1. **On cache miss**: Content fetched from origin �� written to Cache Reserve + edge caches simultaneously
36
+ 2. **On edge eviction**: Content may be evicted from edge cache but remains in Cache Reserve
37
+ 3. **On subsequent request**: If edge cache misses but Cache Reserve hits → content restored to edge caches
38
+ 4. **Retention**: Assets remain in Cache Reserve for 30 days since last access (configurable via TTL)
39
+
40
+ ## Asset Eligibility
41
+
42
+ Cache Reserve only stores assets meeting **ALL** criteria:
43
+
44
+ - Cacheable per Cloudflare's standard rules
45
+ - Minimum 10-hour TTL (36000 seconds)
46
+ - `Content-Length` header present
47
+ - Original files only (not transformed images)
48
+
49
+ ### Not Eligible
50
+
51
+ - Assets with TTL < 10 hours
52
+ - Responses without `Content-Length` header
53
+ - Image transformation variants (original images are eligible)
54
+ - Responses with `Set-Cookie` headers
55
+ - Responses with `Vary: *` header
56
+ - Assets from R2 public buckets on same zone
57
+ - O2O (Orange-to-Orange) setup requests
58
+
59
+ ## Quick Start
60
+
61
+ ```bash
62
+ # Enable via Dashboard
63
+ https://dash.cloudflare.com/caching/cache-reserve
64
+ # Click "Enable Storage Sync" or "Purchase" button
65
+ ```
66
+
67
+ **Prerequisites:**
68
+ - Paid Cache Reserve plan required
69
+ - Tiered Cache strongly recommended
70
+
71
+ ## Essential Commands
72
+
73
+ ```bash
74
+ # Check Cache Reserve status
75
+ curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/cache_reserve" \
76
+ -H "Authorization: Bearer $API_TOKEN"
77
+
78
+ # Enable Cache Reserve
79
+ curl -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/cache_reserve" \
80
+ -H "Authorization: Bearer $API_TOKEN" \
81
+ -H "Content-Type: application/json" \
82
+ -d '{"value": "on"}'
83
+
84
+ # Check asset cache status
85
+ curl -I https://example.com/asset.jpg | grep -i cache
86
+ ```
87
+
88
+ ## See Also
89
+
90
+ - [Configuration](./configuration.md) - Setup, API, and Cache Rules
91
+ - [API Reference](./api.md) - Purging, monitoring, and management APIs
92
+ - [Patterns](./patterns.md) - Best practices and architecture patterns
93
+ - [Gotchas](./gotchas.md) - Common issues, troubleshooting, limits
@@ -0,0 +1,176 @@
1
+ # Cache Reserve API
2
+
3
+ ## Workers Integration
4
+
5
+ Cache Reserve works automatically with Workers Cache API, but requires specific patterns:
6
+
7
+ ### Standard Fetch (Recommended)
8
+
9
+ ```typescript
10
+ // Cache Reserve works automatically via standard fetch
11
+ export default {
12
+ async fetch(request: Request, env: Env): Promise<Response> {
13
+ // Standard fetch uses Cache Reserve automatically
14
+ return await fetch(request);
15
+ }
16
+ };
17
+ ```
18
+
19
+ ### Cache API Limitations
20
+
21
+ **IMPORTANT**: `cache.put()` is **NOT compatible** with Cache Reserve or Tiered Cache.
22
+
23
+ ```typescript
24
+ // ❌ WRONG: cache.put() bypasses Cache Reserve
25
+ const cache = caches.default;
26
+ let response = await cache.match(request);
27
+ if (!response) {
28
+ response = await fetch(request);
29
+ await cache.put(request, response.clone()); // Bypasses Cache Reserve!
30
+ }
31
+
32
+ // ✅ CORRECT: Use standard fetch for Cache Reserve compatibility
33
+ return await fetch(request);
34
+
35
+ // ✅ CORRECT: Use Cache API only for custom cache namespaces
36
+ const customCache = await caches.open('my-custom-cache');
37
+ let response = await customCache.match(request);
38
+ if (!response) {
39
+ response = await fetch(request);
40
+ await customCache.put(request, response.clone()); // Custom cache OK
41
+ }
42
+ ```
43
+
44
+ ## Purging and Cache Management
45
+
46
+ ### Purge by URL (Instant)
47
+
48
+ ```typescript
49
+ // Purge specific URL from Cache Reserve immediately
50
+ const purgeCacheReserveByURL = async (
51
+ zoneId: string,
52
+ apiToken: string,
53
+ urls: string[]
54
+ ) => {
55
+ const response = await fetch(
56
+ `https://api.cloudflare.com/client/v4/zones/${zoneId}/purge_cache`,
57
+ {
58
+ method: 'POST',
59
+ headers: {
60
+ 'Authorization': `Bearer ${apiToken}`,
61
+ 'Content-Type': 'application/json',
62
+ },
63
+ body: JSON.stringify({ files: urls })
64
+ }
65
+ );
66
+ return await response.json();
67
+ };
68
+
69
+ // Example usage
70
+ await purgeCacheReserveByURL('zone123', 'token456', [
71
+ 'https://example.com/image.jpg',
72
+ 'https://example.com/video.mp4'
73
+ ]);
74
+ ```
75
+
76
+ ### Purge by Tag/Host/Prefix (Revalidation)
77
+
78
+ ```typescript
79
+ // Purge by cache tag - forces revalidation, not immediate removal
80
+ const purgeCacheReserveByTag = async (
81
+ zoneId: string,
82
+ apiToken: string,
83
+ tags: string[]
84
+ ) => {
85
+ const response = await fetch(
86
+ `https://api.cloudflare.com/client/v4/zones/${zoneId}/purge_cache`,
87
+ {
88
+ method: 'POST',
89
+ headers: {
90
+ 'Authorization': `Bearer ${apiToken}`,
91
+ 'Content-Type': 'application/json',
92
+ },
93
+ body: JSON.stringify({ tags })
94
+ }
95
+ );
96
+ return await response.json();
97
+ };
98
+
99
+ // Note: Assets remain in Cache Reserve but will revalidate on next request
100
+ // Storage costs continue until retention TTL expires
101
+ ```
102
+
103
+ **Important purge behavior differences:**
104
+
105
+ - **Purge by URL**: Immediately removes from Cache Reserve + edge cache
106
+ - **Purge by tag/host/prefix**: Forces revalidation but assets remain in storage
107
+ - **Storage costs**: Continue for tag/host/prefix purges until TTL expiry
108
+
109
+ ### Clear All Cache Reserve Data
110
+
111
+ ```typescript
112
+ // Clear ALL Cache Reserve data (requires Cache Reserve to be OFF)
113
+ const clearAllCacheReserve = async (zoneId: string, apiToken: string) => {
114
+ // Step 1: Verify Cache Reserve is off
115
+ const statusResponse = await fetch(
116
+ `https://api.cloudflare.com/client/v4/zones/${zoneId}/cache/cache_reserve`,
117
+ { method: 'GET', headers: { 'Authorization': `Bearer ${apiToken}` } }
118
+ );
119
+ const status = await statusResponse.json();
120
+
121
+ if (status.result.value !== 'off') {
122
+ throw new Error('Cache Reserve must be OFF before clearing data');
123
+ }
124
+
125
+ // Step 2: Clear Cache Reserve data
126
+ const clearResponse = await fetch(
127
+ `https://api.cloudflare.com/client/v4/zones/${zoneId}/cache/cache_reserve_clear`,
128
+ { method: 'POST', headers: { 'Authorization': `Bearer ${apiToken}` } }
129
+ );
130
+ return await clearResponse.json();
131
+ };
132
+
133
+ // Check clear status
134
+ const getClearStatus = async (zoneId: string, apiToken: string) => {
135
+ const response = await fetch(
136
+ `https://api.cloudflare.com/client/v4/zones/${zoneId}/cache/cache_reserve_clear`,
137
+ { method: 'GET', headers: { 'Authorization': `Bearer ${apiToken}` } }
138
+ );
139
+ return await response.json();
140
+ // Returns: { state: "In-progress" | "Completed", start_ts: "..." }
141
+ };
142
+ ```
143
+
144
+ **Clear process:**
145
+ 1. Disable Cache Reserve (`value: 'off'`)
146
+ 2. Call cache_reserve_clear endpoint
147
+ 3. Deletion takes up to 24 hours
148
+ 4. Re-enable Cache Reserve when ready
149
+
150
+ ## Monitoring and Analytics
151
+
152
+ ```typescript
153
+ // Dashboard: egress savings, requests served (hits/misses), storage, operations (A/B)
154
+ // Logpush field: CacheReserveUsed (boolean) - filter for Cache Reserve hits
155
+
156
+ // Query Cache Reserve hits
157
+ const query = `
158
+ SELECT ClientRequestHost, COUNT(*) as requests, SUM(EdgeResponseBytes) as bytes
159
+ FROM http_requests WHERE CacheReserveUsed = true
160
+ GROUP BY ClientRequestHost ORDER BY requests DESC
161
+ `;
162
+ ```
163
+
164
+ ## Pricing
165
+
166
+ ```typescript
167
+ // Storage: $0.015/GB-month | Class A (writes): $4.50/M | Class B (reads): $0.36/M
168
+ // Cache miss: 1A + 1B | Cache hit: 1B | Assets >1GB: proportionally more ops
169
+ ```
170
+
171
+ ## See Also
172
+
173
+ - [README](./README.md) - Overview and core concepts
174
+ - [Configuration](./configuration.md) - Setup and Cache Rules
175
+ - [Patterns](./patterns.md) - Best practices and optimization
176
+ - [Gotchas](./gotchas.md) - Common issues and troubleshooting
@@ -0,0 +1,164 @@
1
+ # Cache Reserve Configuration
2
+
3
+ ## Dashboard Setup
4
+
5
+ **Minimum steps to enable:**
6
+
7
+ ```bash
8
+ # Navigate to dashboard
9
+ https://dash.cloudflare.com/caching/cache-reserve
10
+
11
+ # Click "Enable Storage Sync" or "Purchase" button
12
+ ```
13
+
14
+ **Prerequisites:**
15
+ - Paid Cache Reserve plan required
16
+ - Tiered Cache strongly recommended (Cache Reserve checks for this)
17
+
18
+ ## API Configuration
19
+
20
+ ```typescript
21
+ // Enable Cache Reserve
22
+ const enableCacheReserve = async (zoneId: string, apiToken: string) => {
23
+ const response = await fetch(
24
+ `https://api.cloudflare.com/client/v4/zones/${zoneId}/cache/cache_reserve`,
25
+ {
26
+ method: 'PATCH',
27
+ headers: {
28
+ 'Authorization': `Bearer ${apiToken}`,
29
+ 'Content-Type': 'application/json',
30
+ },
31
+ body: JSON.stringify({ value: 'on' })
32
+ }
33
+ );
34
+ return await response.json();
35
+ };
36
+
37
+ // Check Cache Reserve status
38
+ const getCacheReserveStatus = async (zoneId: string, apiToken: string) => {
39
+ const response = await fetch(
40
+ `https://api.cloudflare.com/client/v4/zones/${zoneId}/cache/cache_reserve`,
41
+ {
42
+ method: 'GET',
43
+ headers: { 'Authorization': `Bearer ${apiToken}` }
44
+ }
45
+ );
46
+ return await response.json();
47
+ };
48
+ ```
49
+
50
+ ### Required API Token Permissions
51
+
52
+ - `Zone Settings Read`
53
+ - `Zone Settings Write`
54
+ - `Zone Read`
55
+ - `Zone Write`
56
+
57
+ ## Cache Rules Integration
58
+
59
+ Control Cache Reserve eligibility via Cache Rules:
60
+
61
+ ```typescript
62
+ // Enable Cache Reserve for static assets with long TTL
63
+ const staticAssetRule = {
64
+ action: 'set_cache_settings',
65
+ action_parameters: {
66
+ cache_reserve: {
67
+ eligible: true,
68
+ minimum_file_ttl: 86400 // 24 hours
69
+ },
70
+ edge_ttl: {
71
+ mode: 'override_origin',
72
+ default: 86400
73
+ },
74
+ cache: true
75
+ },
76
+ expression: '(http.request.uri.path matches "\\.(jpg|jpeg|png|gif|webp|pdf|zip)$")'
77
+ };
78
+
79
+ // Disable Cache Reserve for frequently updated content
80
+ const dynamicContentRule = {
81
+ action: 'set_cache_settings',
82
+ action_parameters: {
83
+ cache_reserve: { eligible: false }
84
+ },
85
+ expression: '(http.request.uri.path matches "^/api/")'
86
+ };
87
+
88
+ // Cache Reserve for specific origin with minimum 12-hour TTL
89
+ const specificOriginRule = {
90
+ action: 'set_cache_settings',
91
+ action_parameters: {
92
+ cache_reserve: {
93
+ eligible: true,
94
+ minimum_file_ttl: 43200 // 12 hours
95
+ },
96
+ edge_ttl: { mode: 'override_origin', default: 43200 },
97
+ cache: true
98
+ },
99
+ expression: '(http.host eq "cdn.example.com")'
100
+ };
101
+ ```
102
+
103
+ ### Creating Rules via API
104
+
105
+ ```typescript
106
+ const createCacheRule = async (
107
+ zoneId: string,
108
+ apiToken: string,
109
+ rule: CacheRuleWithReserve
110
+ ) => {
111
+ const response = await fetch(
112
+ `https://api.cloudflare.com/client/v4/zones/${zoneId}/rulesets/phases/http_request_cache_settings/entrypoint`,
113
+ {
114
+ method: 'PUT',
115
+ headers: {
116
+ 'Authorization': `Bearer ${apiToken}`,
117
+ 'Content-Type': 'application/json',
118
+ },
119
+ body: JSON.stringify({ rules: [rule] })
120
+ }
121
+ );
122
+ return await response.json();
123
+ };
124
+ ```
125
+
126
+ ## Wrangler Integration
127
+
128
+ Cache Reserve works automatically with Workers deployed via Wrangler. No special configuration needed.
129
+
130
+ ```jsonc
131
+ // wrangler.jsonc
132
+ {
133
+ "name": "cache-reserve-worker",
134
+ "main": "src/index.ts",
135
+ "compatibility_date": "2025-01-11", // Use current date for new projects
136
+
137
+ // Cache Reserve works automatically with standard routes
138
+ "routes": [
139
+ { "pattern": "example.com/*", "zone_name": "example.com" }
140
+ ]
141
+ // No special Cache Reserve configuration needed
142
+ // Enable via Dashboard or API
143
+ }
144
+ ```
145
+
146
+ ### Development and Testing
147
+
148
+ ```bash
149
+ # Local development (Cache Reserve not active locally)
150
+ npx wrangler dev
151
+
152
+ # Deploy to production (Cache Reserve active if enabled for zone)
153
+ npx wrangler deploy
154
+
155
+ # View logs (including cache behavior)
156
+ npx wrangler tail
157
+ ```
158
+
159
+ ## See Also
160
+
161
+ - [README](./README.md) - Overview and core concepts
162
+ - [API Reference](./api.md) - Purging and monitoring APIs
163
+ - [Patterns](./patterns.md) - Best practices and optimization
164
+ - [Gotchas](./gotchas.md) - Common issues and troubleshooting