opencodekit 0.15.3 → 0.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/AGENTS.md +209 -77
  3. package/dist/template/.opencode/agent/plan.md +4 -0
  4. package/dist/template/.opencode/command/cloudflare.md +70 -0
  5. package/dist/template/.opencode/package.json +1 -1
  6. package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
  7. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  8. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  9. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  10. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  11. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  12. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  13. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  14. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  15. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  16. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  17. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  18. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  19. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  20. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  21. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  22. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  23. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  24. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  25. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  26. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  27. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  28. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  29. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  30. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  31. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  32. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  33. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  34. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  35. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  36. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  37. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  38. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  39. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  40. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  41. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  42. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  43. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  44. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  45. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  46. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  47. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  48. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  49. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  50. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  51. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  52. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  53. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  54. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  55. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  56. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  57. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  58. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  59. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  60. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  61. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  62. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  63. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  64. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  65. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  66. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  67. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  68. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  69. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  70. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  71. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  72. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  73. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  74. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  75. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  76. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  77. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  78. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  79. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  80. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  81. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  82. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  83. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  84. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  85. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  86. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  87. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  88. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  89. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  90. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  91. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  92. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  93. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  94. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  95. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  96. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  97. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  98. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  99. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  100. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  101. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  102. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  103. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  104. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  105. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  106. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  107. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  108. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  109. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  110. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  111. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  112. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  113. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  114. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  115. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  116. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  117. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  118. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  119. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  120. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  121. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  122. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  123. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  124. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  125. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  126. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  127. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  128. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  129. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  130. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  131. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  132. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  133. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  134. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  135. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  136. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  137. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  138. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  139. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  140. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  141. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  142. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  143. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  144. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  145. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  146. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  147. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  148. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  149. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  150. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  151. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  152. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  153. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  154. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  155. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  156. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  157. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  158. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  159. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  160. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  261. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  262. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  263. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  264. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  265. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
  266. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  267. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  268. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  269. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  270. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  271. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  272. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  273. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  274. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  275. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  276. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  277. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  278. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  279. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  280. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  281. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  282. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  283. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  284. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  285. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  286. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  287. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  288. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  289. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  290. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  291. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  292. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  293. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  294. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  295. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  296. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  297. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  298. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  299. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  300. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  301. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  302. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  303. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  304. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  305. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  306. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  307. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  308. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  309. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  310. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  311. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  312. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  313. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  314. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  315. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  316. package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
  317. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  318. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
  319. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  320. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
  321. package/package.json +1 -1
@@ -0,0 +1,127 @@
1
+ # Stream Configuration
2
+
3
+ Setup, environment variables, and wrangler configuration.
4
+
5
+ ## Environment Variables
6
+
7
+ ```bash
8
+ # Required
9
+ CF_ACCOUNT_ID=your-account-id
10
+ CF_API_TOKEN=your-api-token
11
+
12
+ # For signed URLs (high volume)
13
+ STREAM_KEY_ID=your-key-id
14
+ STREAM_JWK=base64-encoded-jwk
15
+
16
+ # For webhooks
17
+ WEBHOOK_SECRET=your-webhook-secret
18
+
19
+ # Customer subdomain (from dashboard)
20
+ STREAM_CUSTOMER_CODE=your-customer-code
21
+ ```
22
+
23
+ ## Wrangler Configuration
24
+
25
+ ```jsonc
26
+ {
27
+ "name": "stream-worker",
28
+ "main": "src/index.ts",
29
+ "compatibility_date": "2025-01-01", // Use current date for new projects
30
+ "vars": {
31
+ "CF_ACCOUNT_ID": "your-account-id"
32
+ }
33
+ // Store secrets: wrangler secret put CF_API_TOKEN
34
+ // wrangler secret put STREAM_KEY_ID
35
+ // wrangler secret put STREAM_JWK
36
+ // wrangler secret put WEBHOOK_SECRET
37
+ }
38
+ ```
39
+
40
+ ## Signing Keys (High Volume)
41
+
42
+ Create once for self-signing tokens (thousands of daily users).
43
+
44
+ **Create key**
45
+ ```bash
46
+ curl -X POST \
47
+ "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/keys" \
48
+ -H "Authorization: Bearer <API_TOKEN>"
49
+
50
+ # Save `id` and `jwk` (base64) from response
51
+ ```
52
+
53
+ **Store in secrets**
54
+ ```bash
55
+ wrangler secret put STREAM_KEY_ID
56
+ wrangler secret put STREAM_JWK
57
+ ```
58
+
59
+ ## Webhooks
60
+
61
+ **Setup webhook URL**
62
+ ```bash
63
+ curl -X PUT \
64
+ "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/webhook" \
65
+ -H "Authorization: Bearer <API_TOKEN>" \
66
+ -H "Content-Type: application/json" \
67
+ -d '{"notificationUrl": "https://your-worker.workers.dev/webhook"}'
68
+
69
+ # Save the returned `secret` for signature verification
70
+ ```
71
+
72
+ **Store secret**
73
+ ```bash
74
+ wrangler secret put WEBHOOK_SECRET
75
+ ```
76
+
77
+ ## Direct Upload / Live / Watermark Config
78
+
79
+ ```typescript
80
+ // Direct upload
81
+ const uploadConfig = {
82
+ maxDurationSeconds: 3600,
83
+ expiry: new Date(Date.now() + 3600000).toISOString(),
84
+ requireSignedURLs: true,
85
+ allowedOrigins: ['https://yourdomain.com'],
86
+ meta: { creator: 'user-123' }
87
+ };
88
+
89
+ // Live input
90
+ const liveConfig = {
91
+ recording: { mode: 'automatic', timeoutSeconds: 30 },
92
+ deleteRecordingAfterDays: 30
93
+ };
94
+
95
+ // Watermark
96
+ const watermark = {
97
+ name: 'Logo', opacity: 0.7, padding: 20,
98
+ position: 'lowerRight', scale: 0.15
99
+ };
100
+ ```
101
+
102
+ ## Access Rules & Player Config
103
+
104
+ ```typescript
105
+ // Access rules: allow US/CA, block CN/RU, or IP allowlist
106
+ const geoRestrict = [
107
+ { type: 'ip.geoip.country', action: 'allow', country: ['US', 'CA'] },
108
+ { type: 'any', action: 'block' }
109
+ ];
110
+
111
+ // Player params for iframe
112
+ const playerParams = new URLSearchParams({
113
+ autoplay: 'true', muted: 'true', preload: 'auto', defaultTextTrack: 'en'
114
+ });
115
+ ```
116
+
117
+ ## In This Reference
118
+
119
+ - [README.md](./README.md) - Overview and quick start
120
+ - [api.md](./api.md) - Upload, playback, live streaming APIs
121
+ - [patterns.md](./patterns.md) - Full-stack flows, best practices
122
+ - [gotchas.md](./gotchas.md) - Error codes, troubleshooting
123
+
124
+ ## See Also
125
+
126
+ - [wrangler](../wrangler/) - Wrangler CLI and configuration
127
+ - [workers](../workers/) - Deploy Stream APIs in Workers
@@ -0,0 +1,131 @@
1
+ # Stream Gotchas
2
+
3
+ Common issues, troubleshooting, and limits.
4
+
5
+ ## Common Errors
6
+
7
+ ### ERR_NON_VIDEO
8
+ **Cause**: Uploaded file is not a valid video format
9
+
10
+ **Solution**: Ensure file is in supported format (MP4, MKV, MOV, AVI, FLV, MPEG-2 TS/PS, MXF, LXF, GXF, 3GP, WebM, MPG, QuickTime)
11
+
12
+ ### ERR_DURATION_EXCEED_CONSTRAINT
13
+ **Cause**: Video duration exceeds `maxDurationSeconds` constraint
14
+
15
+ **Solution**: Increase `maxDurationSeconds` in direct upload config or trim video before upload
16
+
17
+ ### ERR_FETCH_ORIGIN_ERROR
18
+ **Cause**: Failed to download video from URL (upload from URL)
19
+
20
+ **Solution**: Ensure URL is publicly accessible, uses HTTPS, and video file is available
21
+
22
+ ### ERR_MALFORMED_VIDEO
23
+ **Cause**: Video file is corrupted or improperly encoded
24
+
25
+ **Solution**: Re-encode video using FFmpeg or check source file integrity
26
+
27
+ ### ERR_DURATION_TOO_SHORT
28
+ **Cause**: Video must be at least 0.1 seconds long
29
+
30
+ **Solution**: Ensure video has valid duration (not a single frame)
31
+
32
+ ## Troubleshooting
33
+
34
+ ### Video stuck in "inprogress" state
35
+ - **Cause**: Processing large/complex video
36
+ - **Solution**: Wait up to 5 minutes for processing; use webhooks instead of polling
37
+
38
+ ### Signed URL returns 403
39
+ - **Cause**: Token expired or invalid signature
40
+ - **Solution**: Check expiration timestamp, verify JWK is correct, ensure clock sync
41
+
42
+ ### Live stream not connecting
43
+ - **Cause**: Invalid RTMPS URL or stream key
44
+ - **Solution**: Use exact URL/key from API, ensure firewall allows outbound 443
45
+
46
+ ### Webhook signature verification fails
47
+ - **Cause**: Incorrect secret or timestamp window
48
+ - **Solution**: Use exact secret from webhook setup, allow 5-minute timestamp drift
49
+
50
+ ### Video uploads but isn't visible
51
+ - **Cause**: `requireSignedURLs` enabled without providing token
52
+ - **Solution**: Generate signed token or set `requireSignedURLs: false` for public videos
53
+
54
+ ### Player shows infinite loading
55
+ - **Cause**: CORS issue with allowedOrigins
56
+ - **Solution**: Add your domain to `allowedOrigins` array
57
+
58
+ ## Limits
59
+
60
+ | Resource | Limit |
61
+ |----------|-------|
62
+ | Max file size | 30 GB |
63
+ | Max frame rate | 60 fps (recommended) |
64
+ | Max duration per direct upload | Configurable via `maxDurationSeconds` |
65
+ | Token generation (API endpoint) | 1,000/day recommended (use signing keys for higher) |
66
+ | Live input outputs (simulcast) | 5 per live input |
67
+ | Webhook retry attempts | 5 (exponential backoff) |
68
+ | Webhook timeout | 30 seconds |
69
+ | Caption file size | 5 MB |
70
+ | Watermark image size | 2 MB |
71
+ | Metadata keys per video | Unlimited |
72
+ | Search results per page | Max 1,000 |
73
+
74
+ ## Performance Issues
75
+
76
+ ### Upload is slow
77
+ - **Cause**: Large file size or network constraints
78
+ - **Solution**: Use TUS resumable upload, compress video before upload, check bandwidth
79
+
80
+ ### Playback buffering
81
+ - **Cause**: Network congestion or low bandwidth
82
+ - **Solution**: Use ABR (adaptive bitrate) with HLS/DASH, reduce max bitrate
83
+
84
+ ### High processing time
85
+ - **Cause**: Complex video codec, high resolution
86
+ - **Solution**: Pre-encode with H.264 (most efficient), reduce resolution
87
+
88
+ ## Type Safety
89
+
90
+ ```typescript
91
+ // Error response type
92
+ interface StreamError {
93
+ success: false;
94
+ errors: Array<{
95
+ code: number;
96
+ message: string;
97
+ }>;
98
+ }
99
+
100
+ // Handle errors
101
+ async function uploadWithErrorHandling(url: string, file: File) {
102
+ const formData = new FormData();
103
+ formData.append('file', file);
104
+ const response = await fetch(url, { method: 'POST', body: formData });
105
+ const result = await response.json();
106
+
107
+ if (!result.success) {
108
+ throw new Error(result.errors[0]?.message || 'Upload failed');
109
+ }
110
+ return result;
111
+ }
112
+ ```
113
+
114
+ ## Security Gotchas
115
+
116
+ 1. **Never expose API token in frontend** - Use direct creator uploads
117
+ 2. **Always verify webhook signatures** - Prevent spoofed notifications
118
+ 3. **Set appropriate token expiration** - Short-lived for security
119
+ 4. **Use requireSignedURLs for private content** - Prevent unauthorized access
120
+ 5. **Whitelist allowedOrigins** - Prevent hotlinking/embedding on unauthorized sites
121
+
122
+ ## In This Reference
123
+
124
+ - [README.md](./README.md) - Overview and quick start
125
+ - [configuration.md](./configuration.md) - Setup and config
126
+ - [api.md](./api.md) - Upload, playback, live streaming APIs
127
+ - [patterns.md](./patterns.md) - Full-stack flows, best practices
128
+
129
+ ## See Also
130
+
131
+ - [workers](../workers/) - Deploy Stream APIs securely
@@ -0,0 +1,152 @@
1
+ # Stream Patterns
2
+
3
+ Common workflows, full-stack flows, and best practices.
4
+
5
+ ## Full-Stack Upload Flow
6
+
7
+ **Backend API (Next.js route)**
8
+ ```typescript
9
+ // app/api/upload-url/route.ts
10
+ export async function POST(req: Request) {
11
+ const { userId, videoName } = await req.json();
12
+
13
+ const response = await fetch(
14
+ `https://api.cloudflare.com/client/v4/accounts/${process.env.CF_ACCOUNT_ID}/stream/direct_upload`,
15
+ {
16
+ method: 'POST',
17
+ headers: {
18
+ 'Authorization': `Bearer ${process.env.CF_API_TOKEN}`,
19
+ 'Content-Type': 'application/json'
20
+ },
21
+ body: JSON.stringify({
22
+ maxDurationSeconds: 3600,
23
+ requireSignedURLs: true,
24
+ meta: { creator: userId, name: videoName }
25
+ })
26
+ }
27
+ );
28
+ const data = await response.json();
29
+ return Response.json({ uploadURL: data.result.uploadURL, uid: data.result.uid });
30
+ }
31
+ ```
32
+
33
+ **Frontend component**
34
+ ```tsx
35
+ 'use client';
36
+ import { useState } from 'react';
37
+
38
+ export function VideoUploader() {
39
+ const [uploading, setUploading] = useState(false);
40
+ const [progress, setProgress] = useState(0);
41
+
42
+ async function handleUpload(file: File) {
43
+ setUploading(true);
44
+ const { uploadURL, uid } = await fetch('/api/upload-url', {
45
+ method: 'POST',
46
+ headers: { 'Content-Type': 'application/json' },
47
+ body: JSON.stringify({ videoName: file.name })
48
+ }).then(r => r.json());
49
+
50
+ const formData = new FormData();
51
+ formData.append('file', file);
52
+
53
+ const xhr = new XMLHttpRequest();
54
+ xhr.upload.addEventListener('progress', (e) => {
55
+ if (e.lengthComputable) setProgress((e.loaded / e.total) * 100);
56
+ });
57
+ xhr.addEventListener('load', () => {
58
+ setUploading(false);
59
+ window.location.href = `/videos/${uid}`;
60
+ });
61
+ xhr.open('POST', uploadURL);
62
+ xhr.send(formData);
63
+ }
64
+
65
+ return (
66
+ <div>
67
+ <input type="file" accept="video/*"
68
+ onChange={(e) => e.target.files?.[0] && handleUpload(e.target.files[0])}
69
+ disabled={uploading} />
70
+ {uploading && <progress value={progress} max={100} />}
71
+ </div>
72
+ );
73
+ }
74
+ ```
75
+
76
+ ## Video State Management
77
+
78
+ ```typescript
79
+ interface VideoState {
80
+ uid: string;
81
+ readyToStream: boolean;
82
+ status: { state: 'queued' | 'inprogress' | 'ready' | 'error'; pctComplete?: string };
83
+ }
84
+
85
+ async function waitForVideoReady(
86
+ accountId: string, videoId: string, apiToken: string,
87
+ maxAttempts = 60, intervalMs = 5000
88
+ ): Promise<VideoState> {
89
+ for (let i = 0; i < maxAttempts; i++) {
90
+ const response = await fetch(
91
+ `https://api.cloudflare.com/client/v4/accounts/${accountId}/stream/${videoId}`,
92
+ { headers: { 'Authorization': `Bearer ${apiToken}` } }
93
+ );
94
+ const { result } = await response.json();
95
+ if (result.readyToStream || result.status.state === 'error') return result;
96
+ await new Promise(resolve => setTimeout(resolve, intervalMs));
97
+ }
98
+ throw new Error('Video processing timeout');
99
+ }
100
+ ```
101
+
102
+ ## Webhook Handler (Workers)
103
+
104
+ ```typescript
105
+ export default {
106
+ async fetch(request: Request, env: Env): Promise<Response> {
107
+ const signature = request.headers.get('Webhook-Signature');
108
+ if (!signature) return new Response('No signature', { status: 401 });
109
+
110
+ const body = await request.text();
111
+ // Verify HMAC-SHA256: parse time/sig1, check 5min window, compare signature
112
+ const isValid = await verifySignature(signature, body, env.WEBHOOK_SECRET);
113
+ if (!isValid) return new Response('Invalid', { status: 401 });
114
+
115
+ const payload = JSON.parse(body);
116
+ if (payload.readyToStream) console.log(`Video ${payload.uid} ready`);
117
+ return new Response('OK');
118
+ }
119
+ };
120
+ // Full verifySignature impl in gotchas.md
121
+ ```
122
+
123
+ ## Live Streaming Setup
124
+
125
+ **OBS**: Server `rtmps://live.cloudflare.com:443/live/`, Stream Key from API
126
+
127
+ **FFmpeg**: `ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 3000k -c:a aac -f flv rtmps://live.cloudflare.com:443/live/<KEY>`
128
+
129
+ ## Best Practices
130
+
131
+ 1. **Use Direct Creator Uploads** - Avoid proxying video through servers
132
+ 2. **Enable requireSignedURLs** - Control access to private content
133
+ 3. **Use signing keys for high volume** - Self-sign tokens instead of API calls
134
+ 4. **Set allowedOrigins** - Prevent hotlinking
135
+ 5. **Use webhooks over polling** - Efficient status updates
136
+ 6. **Cache video metadata** - Reduce API calls
137
+ 7. **Set maxDurationSeconds** - Prevent abuse on direct uploads
138
+ 8. **Use creator metadata** - Enable per-user filtering/analytics
139
+ 9. **Enable recordings for live** - Automatic VOD after stream ends
140
+ 10. **Monitor with GraphQL analytics** - Track views, watch time, geo
141
+
142
+ ## In This Reference
143
+
144
+ - [README.md](./README.md) - Overview and quick start
145
+ - [configuration.md](./configuration.md) - Setup and config
146
+ - [api.md](./api.md) - Upload, playback, live streaming APIs
147
+ - [gotchas.md](./gotchas.md) - Error codes, troubleshooting
148
+
149
+ ## See Also
150
+
151
+ - [workers](../workers/) - Deploy Stream APIs in Workers
152
+ - [pages](../pages/) - Integrate Stream with Pages