opencodekit 0.15.4 → 0.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/command/cloudflare.md +70 -0
  3. package/dist/template/.opencode/package.json +1 -1
  4. package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
  5. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  6. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  7. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  8. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  9. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  10. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  11. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  12. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  13. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  14. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  15. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  16. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  17. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  18. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  19. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  20. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  21. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  22. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  23. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  24. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  25. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  26. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  27. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  28. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  29. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  30. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  31. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  32. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  33. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  34. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  35. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  36. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  37. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  38. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  39. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  40. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  41. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  42. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  43. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  44. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  45. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  46. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  47. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  48. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  49. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  50. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  51. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  52. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  53. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  54. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  55. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  56. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  57. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  58. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  59. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  60. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  61. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  62. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  63. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  64. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  65. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  66. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  67. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  68. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  69. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  70. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  71. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  72. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  73. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  74. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  75. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  76. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  77. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  78. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  79. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  80. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  81. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  82. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  83. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  84. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  85. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  86. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  87. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  88. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  89. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  90. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  91. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  92. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  93. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  94. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  95. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  96. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  97. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  98. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  99. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  100. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  101. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  102. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  103. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  104. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  105. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  106. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  107. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  108. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  109. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  110. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  111. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  112. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  113. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  114. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  115. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  116. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  117. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  118. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  119. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  120. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  121. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  122. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  123. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  124. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  125. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  126. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  127. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  128. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  129. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  130. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  131. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  132. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  133. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  134. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  135. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  136. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  137. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  138. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  139. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  140. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  141. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  142. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  143. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  144. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  145. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  146. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  147. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  148. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  149. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  150. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  151. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  152. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  153. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  154. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  155. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  156. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  157. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  158. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  159. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  160. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  261. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  262. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  263. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
  264. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  265. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  266. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  267. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  268. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  269. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  270. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  271. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  272. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  273. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  274. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  275. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  276. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  277. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  278. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  279. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  280. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  281. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  282. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  283. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  284. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  285. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  286. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  287. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  288. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  289. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  290. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  291. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  292. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  293. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  294. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  295. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  296. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  297. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  298. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  299. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  300. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  301. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  302. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  303. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  304. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  305. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  306. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  307. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  308. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  309. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  310. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  311. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  312. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  313. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  314. package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
  315. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  316. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
  317. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  318. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
  319. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ # Configuration & Deployment
2
+
3
+ ## Wrangler Setup
4
+
5
+ ```toml
6
+ name = "my-calls-app"
7
+ main = "src/index.ts"
8
+ compatibility_date = "2024-01-01"
9
+
10
+ [vars]
11
+ CALLS_APP_ID = "your-app-id"
12
+ MAX_WEBCAM_BITRATE = "1200000"
13
+ MAX_WEBCAM_FRAMERATE = "24"
14
+ MAX_WEBCAM_QUALITY_LEVEL = "1080"
15
+
16
+ # Set secret: wrangler secret put CALLS_APP_SECRET
17
+
18
+ [[durable_objects.bindings]]
19
+ name = "ROOM"
20
+ class_name = "Room"
21
+ ```
22
+
23
+ ## Deploy
24
+
25
+ ```bash
26
+ wrangler login
27
+ wrangler secret put CALLS_APP_SECRET
28
+ wrangler deploy
29
+ ```
30
+
31
+ ## Environment Variables
32
+
33
+ **Required:**
34
+ - `CALLS_APP_ID`: From dashboard
35
+ - `CALLS_APP_SECRET`: From dashboard (secret)
36
+
37
+ **Optional:**
38
+ - `MAX_WEBCAM_BITRATE` (default: 1200000)
39
+ - `MAX_WEBCAM_FRAMERATE` (default: 24)
40
+ - `MAX_WEBCAM_QUALITY_LEVEL` (default: 1080)
41
+ - `TURN_SERVICE_ID`: TURN service
42
+ - `TURN_SERVICE_TOKEN`: TURN auth (secret)
43
+
44
+ ## TURN Configuration
45
+
46
+ ```javascript
47
+ const pc = new RTCPeerConnection({
48
+ iceServers: [
49
+ { urls: 'stun:stun.cloudflare.com:3478' },
50
+ {
51
+ urls: [
52
+ 'turn:turn.cloudflare.com:3478?transport=udp',
53
+ 'turn:turn.cloudflare.com:3478?transport=tcp',
54
+ 'turns:turn.cloudflare.com:5349?transport=tcp'
55
+ ],
56
+ username: turnUsername,
57
+ credential: turnCredential
58
+ }
59
+ ]
60
+ });
61
+ ```
62
+
63
+ **Ports:** 3478 (UDP/TCP), 53 (UDP), 80 (TCP), 443 (TLS), 5349 (TLS)
@@ -0,0 +1,75 @@
1
+ # Gotchas & Troubleshooting
2
+
3
+ ## Common Issues
4
+
5
+ **Slow connect (~1.8s):** First STUN delayed (consensus forming), normal, subsequent faster
6
+ **USE-CANDIDATE delay (Chrome):** CF detects DTLS ClientHello early to compensate
7
+
8
+ **No media flow checklist:**
9
+ 1. SDP exchange done? 2. `pc.connectionState === 'connected'`? 3. Tracks added before offer? 4. Browser perms? 5. `chrome://webrtc-internals`
10
+
11
+ **Track not RX checklist:**
12
+ 1. Published OK? 2. Track ID shared? 3. Session IDs match? 4. `pc.ontrack` before answer? 5. Renegotiation done?
13
+
14
+ ## Debug
15
+
16
+ `chrome://webrtc-internals`: ICE pairs, DTLS, media stats, bandwidth
17
+
18
+ Logging:
19
+ ```ts
20
+ pc.addEventListener('icecandidateerror', (e) => console.error('ICE err:', e));
21
+ pc.addEventListener('connectionstatechange', () => console.log('Conn:', pc.connectionState));
22
+ pc.addEventListener('iceconnectionstatechange', () => console.log('ICE:', pc.iceConnectionState));
23
+ ```
24
+
25
+ Quality:
26
+ ```ts
27
+ setInterval(async () => {
28
+ const stats = await pc.getStats();
29
+ stats.forEach(r => {
30
+ if (r.type === 'inbound-rtp' && r.kind === 'video')
31
+ console.log('Loss:', r.packetsLost, 'Jitter:', r.jitter, 'Bytes:', r.bytesReceived);
32
+ });
33
+ }, 1000);
34
+ ```
35
+
36
+ ## Security
37
+
38
+ ❌ Never expose App Secret client-side (use backend env vars, Wrangler secrets)
39
+ Track IDs = capabilities, authz required:
40
+ ```ts
41
+ app.post('/api/sessions/:sid/tracks', async (req, res) => {
42
+ for (const t of req.body.tracks)
43
+ if (!await canAccessTrack(req.user.id, t.trackName)) return res.status(403).json({error: 'Unauth'});
44
+ // CF API call
45
+ });
46
+ ```
47
+ Validate session ownership, timeouts, cleanup abandoned
48
+
49
+ ## Pricing & Limits
50
+
51
+ Free: 1TB/mo egress. Paid: $0.05/GB. Inbound free. TURN free w/SFU. No participant/track limits (client bandwidth/CPU bound). Optimize: bitrates, simulcast, adaptive, cleanup
52
+
53
+ ## vs Traditional SFUs
54
+
55
+ | Aspect | Traditional | Cloudflare |
56
+ |--------|------------|------------|
57
+ | Deploy | Single region | 310+ DCs |
58
+ | Route | Manual | Anycast |
59
+ | SDK | Often required | Pure WebRTC |
60
+ | Arch | Rooms | Sessions/tracks |
61
+ | Scale | Vertical/horiz | Auto global |
62
+ | TURN | Separate | Integrated |
63
+ | State | Centralized | Distributed |
64
+
65
+ ## Quick Ref
66
+
67
+ ```bash
68
+ POST /v1/apps/{appId}/sessions/new # Create
69
+ POST .../sessions/{sid}/tracks/new # Pub: {sessionDescription, tracks: [{location:'local',trackName}]}
70
+ POST .../sessions/{sid}/tracks/new # Sub: {tracks:[{location:'remote',trackName,sessionId}]}
71
+ PUT .../sessions/{sid}/renegotiate # Renegotiate
72
+ PUT .../sessions/{sid}/tracks/close # Close
73
+ ```
74
+
75
+ CF SFU: unopinionated, full WebRTC control, max flexibility, needs fundamentals
@@ -0,0 +1,102 @@
1
+ # Patterns & Use Cases
2
+
3
+ ## Architecture
4
+
5
+ ```
6
+ Client (WebRTC) <---> CF Edge <---> Backend (HTTP)
7
+ |
8
+ CF Backbone (310+ DCs)
9
+ |
10
+ Other Edges <---> Other Clients
11
+ ```
12
+
13
+ Anycast: Last-mile <50ms (95%), no region select, NACK shield, distributed consensus
14
+
15
+ Cascading trees auto-scale to millions:
16
+ ```
17
+ Publisher -> Edge A -> Edge B -> Sub1
18
+ \-> Edge C -> Sub2,3
19
+ ```
20
+
21
+ ## Use Cases
22
+
23
+ **1:1:** A creates session+publishes, B creates+subscribes to A+publishes, A subscribes to B
24
+ **N:N:** All create session+publish, backend broadcasts track IDs, all subscribe to others
25
+ **1:N:** Publisher creates+publishes, viewers each create+subscribe (no fan-out limit)
26
+ **Breakout:** Same PeerConnection! Backend closes/adds tracks, no recreation
27
+
28
+ ## Backend
29
+
30
+ Express:
31
+ ```js
32
+ app.post('/api/new-session', async (req, res) => {
33
+ const r = await fetch(`${CALLS_API}/apps/${process.env.CALLS_APP_ID}/sessions/new`,
34
+ {method: 'POST', headers: {'Authorization': `Bearer ${process.env.CALLS_APP_SECRET}`}});
35
+ res.json(await r.json());
36
+ });
37
+ ```
38
+
39
+ Workers:
40
+ ```ts
41
+ export default {
42
+ async fetch(req: Request, env: Env) {
43
+ return fetch(`https://rtc.live/v1/apps/${env.CALLS_APP_ID}/sessions/new`,
44
+ {method: 'POST', headers: {'Authorization': `Bearer ${env.CALLS_APP_SECRET}`}});
45
+ }
46
+ };
47
+ ```
48
+
49
+ DO Presence:
50
+ ```ts
51
+ export class Room {
52
+ sessions = new Map(); // sessionId -> {userId, tracks: [{trackName, kind}]}
53
+
54
+ async fetch(req: Request) {
55
+ const {pathname} = new URL(req.url);
56
+ if (pathname === '/join') {
57
+ const {sessionId, userId} = await req.json();
58
+ this.sessions.set(sessionId, {userId, tracks: []});
59
+ const existingTracks = Array.from(this.sessions.entries())
60
+ .filter(([id]) => id !== sessionId)
61
+ .flatMap(([id, data]) => data.tracks.map(t => ({...t, sessionId: id})));
62
+ return Response.json({existingTracks});
63
+ }
64
+ if (pathname === '/publish') {
65
+ const {sessionId, tracks} = await req.json();
66
+ this.sessions.get(sessionId)?.tracks.push(...tracks); // Notify others via WS
67
+ return new Response('OK');
68
+ }
69
+ }
70
+ }
71
+ ```
72
+
73
+ ## Advanced
74
+
75
+ Bandwidth mgmt:
76
+ ```ts
77
+ const s = pc.getSenders().find(s => s.track?.kind === 'video');
78
+ const p = s.getParameters();
79
+ if (!p.encodings) p.encodings = [{}];
80
+ p.encodings[0].maxBitrate = 1200000; p.encodings[0].maxFramerate = 24;
81
+ await s.setParameters(p);
82
+ ```
83
+
84
+ Simulcast (CF auto-forwards best layer):
85
+ ```ts
86
+ pc.addTransceiver('video', {direction: 'sendonly', sendEncodings: [
87
+ {rid: 'high', maxBitrate: 1200000},
88
+ {rid: 'med', maxBitrate: 600000, scaleResolutionDownBy: 2},
89
+ {rid: 'low', maxBitrate: 200000, scaleResolutionDownBy: 4}
90
+ ]});
91
+ ```
92
+
93
+ DataChannel:
94
+ ```ts
95
+ const dc = pc.createDataChannel('chat', {ordered: true, maxRetransmits: 3});
96
+ dc.onopen = () => dc.send(JSON.stringify({type: 'chat', text: 'Hi'}));
97
+ dc.onmessage = (e) => console.log('RX:', JSON.parse(e.data));
98
+ ```
99
+
100
+ Integrations: R2 for recording `env.R2_BUCKET.put(...)`, Queues for analytics
101
+
102
+ Perf: 100-250ms connect, ~50ms latency (95%), 200-400ms glass-to-glass, no participant limit (client: 10-50 tracks)
@@ -0,0 +1,81 @@
1
+ # Cloudflare RealtimeKit
2
+
3
+ Expert guidance for building real-time video and audio applications using **Cloudflare RealtimeKit** - a comprehensive SDK suite for adding customizable live video and voice to web or mobile applications.
4
+
5
+ ## Overview
6
+
7
+ RealtimeKit is Cloudflare's SDK suite built on Realtime SFU, abstracting WebRTC complexity with fast integration, pre-built UI components, global performance (300+ cities), and production features (recording, transcription, chat, polls).
8
+
9
+ **Use cases**: Team meetings, webinars, social video, audio calls, interactive plugins
10
+
11
+ ## Core Concepts
12
+
13
+ - **App**: Workspace grouping meetings, participants, presets, recordings. Use separate Apps for staging/production
14
+ - **Meeting**: Re-usable virtual room. Each join creates new **Session**
15
+ - **Session**: Live meeting instance. Created on first join, ends after last leave
16
+ - **Participant**: User added via REST API. Returns `authToken` for client SDK. **Do not reuse tokens**
17
+ - **Preset**: Reusable permission/UI template (permissions, meeting type, theme). Applied at participant creation
18
+ - **Peer ID** (`id`): Unique per session, changes on rejoin
19
+ - **Participant ID** (`userId`): Persistent across sessions
20
+
21
+ ## Quick Start
22
+
23
+ ### 1. Create App & Meeting (Backend)
24
+
25
+ ```bash
26
+ # Create app
27
+ curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/apps' \
28
+ -H 'Authorization: Bearer <api_token>' \
29
+ -d '{"name": "My RealtimeKit App"}'
30
+
31
+ # Create meeting
32
+ curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/<app_id>/meetings' \
33
+ -H 'Authorization: Bearer <api_token>' \
34
+ -d '{"title": "Team Standup"}'
35
+
36
+ # Add participant
37
+ curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/<app_id>/meetings/<meeting_id>/participants' \
38
+ -H 'Authorization: Bearer <api_token>' \
39
+ -d '{"name": "Alice", "preset_name": "host"}'
40
+ # Returns: { authToken }
41
+ ```
42
+
43
+ ### 2. Client Integration
44
+
45
+ **React**:
46
+ ```tsx
47
+ import { RtkMeeting } from '@cloudflare/realtimekit-react-ui';
48
+
49
+ function App() {
50
+ return <RtkMeeting authToken="<participant_auth_token>" onLeave={() => {}} />;
51
+ }
52
+ ```
53
+
54
+ **Core SDK**:
55
+ ```typescript
56
+ import RealtimeKitClient from '@cloudflare/realtimekit';
57
+
58
+ const meeting = new RealtimeKitClient({ authToken: '<token>', video: true, audio: true });
59
+ await meeting.join();
60
+ ```
61
+
62
+ ## In This Reference
63
+
64
+ - [Configuration](./configuration.md) - Setup, installation, wrangler config
65
+ - [API](./api.md) - Meeting object, REST API, SDK methods
66
+ - [Patterns](./patterns.md) - Common workflows, code examples
67
+ - [Gotchas](./gotchas.md) - Common issues, troubleshooting
68
+
69
+ ## See Also
70
+
71
+ - [Workers](../workers/) - Backend integration
72
+ - [D1](../d1/) - Meeting metadata storage
73
+ - [R2](../r2/) - Recording storage
74
+ - [KV](../kv/) - Session management
75
+
76
+ ## Reference Links
77
+
78
+ - **Official Docs**: https://developers.cloudflare.com/realtime/realtimekit/
79
+ - **API Reference**: https://developers.cloudflare.com/api/resources/realtime_kit/
80
+ - **Examples**: https://github.com/cloudflare/realtimekit-web-examples
81
+ - **Dashboard**: https://dash.cloudflare.com/?to=/:account/realtime/kit
@@ -0,0 +1,164 @@
1
+ # RealtimeKit API Reference
2
+
3
+ Complete API reference for Meeting object, REST endpoints, and SDK methods.
4
+
5
+ ## Meeting Object API
6
+
7
+ ### `meeting.self` - Local Participant
8
+
9
+ ```typescript
10
+ // Properties: id, userId, name, audioEnabled, videoEnabled, screenShareEnabled, audioTrack, videoTrack, screenShareTracks, roomJoined, roomState
11
+ // Methods
12
+ await meeting.self.enableAudio() / disableAudio() / enableVideo() / disableVideo() / enableScreenShare() / disableScreenShare()
13
+ await meeting.self.setName("Name") // Before join only
14
+ await meeting.self.setDevice(device)
15
+ const devices = await meeting.self.getAllDevices() / getAudioDevices() / getVideoDevices() / getSpeakerDevices()
16
+ // Events: 'roomJoined', 'audioUpdate', 'videoUpdate', 'screenShareUpdate', 'deviceUpdate', 'deviceListUpdate'
17
+ meeting.self.on('roomJoined', () => {})
18
+ meeting.self.on('audioUpdate', ({ audioEnabled, audioTrack }) => {})
19
+ ```
20
+
21
+ ### `meeting.participants` - Remote Participants
22
+
23
+ **Collections**:
24
+ ```typescript
25
+ meeting.participants.joined / active / waitlisted / pinned // Maps
26
+ const participants = meeting.participants.joined.toArray()
27
+ const count = meeting.participants.joined.size()
28
+ const p = meeting.participants.joined.get('peer-id')
29
+ ```
30
+
31
+ **Participant Properties**:
32
+ ```typescript
33
+ participant.id / userId / name
34
+ participant.audioEnabled / videoEnabled / screenShareEnabled
35
+ participant.audioTrack / videoTrack / screenShareTracks
36
+ ```
37
+
38
+ **Events**:
39
+ ```typescript
40
+ meeting.participants.joined.on('participantJoined', (participant) => {})
41
+ meeting.participants.joined.on('participantLeft', (participant) => {})
42
+ ```
43
+
44
+ ### `meeting.meta` - Metadata
45
+ ```typescript
46
+ meeting.meta.meetingId / meetingTitle / meetingStartedTimestamp
47
+ ```
48
+
49
+ ### `meeting.chat` - Chat
50
+ ```typescript
51
+ meeting.chat.messages // Array
52
+ await meeting.chat.sendTextMessage("Hello") / sendImageMessage(file)
53
+ meeting.chat.on('chatUpdate', ({ message, messages }) => {})
54
+ ```
55
+
56
+ ### `meeting.polls` - Polling
57
+ ```typescript
58
+ meeting.polls.items // Array
59
+ await meeting.polls.create(question, options, anonymous, hideVotes)
60
+ await meeting.polls.vote(pollId, optionIndex)
61
+ ```
62
+
63
+ ### `meeting.plugins` - Collaborative Apps
64
+ ```typescript
65
+ meeting.plugins.all // Array
66
+ await meeting.plugins.activate(pluginId) / deactivate()
67
+ ```
68
+
69
+ ### `meeting.ai` - AI Features
70
+ ```typescript
71
+ meeting.ai.transcripts // Live transcriptions (when enabled in Preset)
72
+ ```
73
+
74
+ ### Core Methods
75
+ ```typescript
76
+ await meeting.join() // Emits 'roomJoined' on meeting.self
77
+ await meeting.leave()
78
+ ```
79
+
80
+ ## REST API
81
+
82
+ Base: `https://api.cloudflare.com/client/v4/accounts/{account_id}/realtime/kit/{app_id}`
83
+
84
+ ### Meetings
85
+ ```bash
86
+ GET /meetings # List all
87
+ GET /meetings/{meeting_id} # Get details
88
+ POST /meetings # Create: {"title": "..."}
89
+ PATCH /meetings/{meeting_id} # Update: {"title": "...", "record_on_start": true}
90
+ ```
91
+
92
+ ### Participants
93
+ ```bash
94
+ GET /meetings/{meeting_id}/participants # List all
95
+ GET /meetings/{meeting_id}/participants/{participant_id} # Get details
96
+ POST /meetings/{meeting_id}/participants # Add: {"name": "...", "preset_name": "...", "custom_participant_id": "..."}
97
+ PATCH /meetings/{meeting_id}/participants/{participant_id} # Update: {"name": "...", "preset_name": "..."}
98
+ DELETE /meetings/{meeting_id}/participants/{participant_id} # Delete
99
+ POST /meetings/{meeting_id}/participants/{participant_id}/token # Refresh token
100
+ ```
101
+
102
+ ### Active Session
103
+ ```bash
104
+ GET /meetings/{meeting_id}/active-session # Get active session
105
+ POST /meetings/{meeting_id}/active-session/kick # Kick users: {"user_ids": ["id1", "id2"]}
106
+ POST /meetings/{meeting_id}/active-session/kick-all # Kick all
107
+ POST /meetings/{meeting_id}/active-session/poll # Create poll: {"question": "...", "options": [...], "anonymous": false}
108
+ ```
109
+
110
+ ### Recording
111
+ ```bash
112
+ GET /recordings?meeting_id={meeting_id} # List recordings
113
+ GET /recordings/active-recording/{meeting_id} # Get active recording
114
+ POST /recordings # Start: {"meeting_id": "...", "type": "composite"} (or "track")
115
+ PUT /recordings/{recording_id} # Control: {"action": "pause"} (or "resume", "stop")
116
+ POST /recordings/track # Track recording: {"meeting_id": "...", "layers": [...]}
117
+ ```
118
+
119
+ ### Livestreaming
120
+ ```bash
121
+ GET /livestreams?exclude_meetings=false # List all
122
+ GET /livestreams/{livestream_id} # Get details
123
+ POST /meetings/{meeting_id}/livestreams # Start for meeting
124
+ POST /meetings/{meeting_id}/active-livestream/stop # Stop
125
+ POST /livestreams # Create independent: returns {ingest_server, stream_key, playback_url}
126
+ ```
127
+
128
+ ### Sessions & Analytics
129
+ ```bash
130
+ GET /sessions # List all
131
+ GET /sessions/{session_id} # Get details
132
+ GET /sessions/{session_id}/participants # List participants
133
+ GET /sessions/{session_id}/participants/{participant_id} # Call stats
134
+ GET /sessions/{session_id}/chat # Download chat CSV
135
+ GET /sessions/{session_id}/transcript # Download transcript CSV
136
+ GET /sessions/{session_id}/summary # Get summary
137
+ POST /sessions/{session_id}/summary # Generate summary
138
+ GET /analytics/daywise?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD # Day-wise analytics
139
+ GET /analytics/livestreams/overall # Livestream analytics
140
+ ```
141
+
142
+ ### Webhooks
143
+ ```bash
144
+ GET /webhooks # List all
145
+ POST /webhooks # Create: {"url": "https://...", "events": ["session.started", "session.ended"]}
146
+ PATCH /webhooks/{webhook_id} # Update
147
+ DELETE /webhooks/{webhook_id} # Delete
148
+ ```
149
+
150
+ ## Session Lifecycle
151
+
152
+ ```
153
+ Initialization → Join Intent → [Waitlist?] → Meeting Screen (Stage) → Ended
154
+ ↓ Approved
155
+ [Rejected → Ended]
156
+ ```
157
+
158
+ UI Kit handles state transitions automatically.
159
+
160
+ ## See Also
161
+
162
+ - [Configuration](./configuration.md) - Setup and installation
163
+ - [Patterns](./patterns.md) - Usage examples
164
+ - [README](./README.md) - Overview and quick start
@@ -0,0 +1,147 @@
1
+ # RealtimeKit Configuration
2
+
3
+ Configuration guide for RealtimeKit setup, client SDKs, and wrangler integration.
4
+
5
+ ## Installation
6
+
7
+ ### React
8
+ ```bash
9
+ npm install @cloudflare/realtimekit @cloudflare/realtimekit-react-ui
10
+ ```
11
+
12
+ ### Angular
13
+ ```bash
14
+ npm install @cloudflare/realtimekit @cloudflare/realtimekit-angular-ui
15
+ ```
16
+
17
+ ### Web Components/HTML
18
+ ```bash
19
+ npm install @cloudflare/realtimekit @cloudflare/realtimekit-ui
20
+ ```
21
+
22
+ ## Client SDK Configuration
23
+
24
+ ### React UI Kit
25
+ ```tsx
26
+ import { RtkMeeting } from '@cloudflare/realtimekit-react-ui';
27
+ <RtkMeeting authToken="<token>" onLeave={() => {}} />
28
+ ```
29
+
30
+ ### Angular UI Kit
31
+ ```typescript
32
+ @Component({ template: `<rtk-meeting [authToken]="authToken" (rtkLeave)="onLeave($event)"></rtk-meeting>` })
33
+ export class AppComponent { authToken = '<token>'; onLeave() {} }
34
+ ```
35
+
36
+ ### Web Components
37
+ ```html
38
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit-ui/dist/realtimekit-ui/realtimekit-ui.esm.js"></script>
39
+ <rtk-meeting id="meeting"></rtk-meeting>
40
+ <script>
41
+ document.getElementById('meeting').authToken = '<token>';
42
+ </script>
43
+ ```
44
+
45
+ ### Core SDK Configuration
46
+ ```typescript
47
+ import RealtimeKitClient from '@cloudflare/realtimekit';
48
+
49
+ const meeting = new RealtimeKitClient({
50
+ authToken: '<token>',
51
+ video: true, audio: true, autoSwitchAudioDevice: true,
52
+ mediaConfiguration: {
53
+ video: { width: { ideal: 1280 }, height: { ideal: 720 }, frameRate: { ideal: 30 } },
54
+ audio: { echoCancellation: true, noiseSuppression: true, autoGainControl: true },
55
+ screenshare: { width: { max: 1920 }, height: { max: 1080 }, frameRate: { ideal: 15 } }
56
+ }
57
+ });
58
+ await meeting.join();
59
+ ```
60
+
61
+ ## Backend Setup
62
+
63
+ ### Create App & Credentials
64
+
65
+ **Dashboard**: https://dash.cloudflare.com/?to=/:account/realtime/kit
66
+
67
+ **API**:
68
+ ```bash
69
+ curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/apps' \
70
+ -H 'Content-Type: application/json' \
71
+ -H 'Authorization: Bearer <api_token>' \
72
+ -d '{"name": "My RealtimeKit App"}'
73
+ ```
74
+
75
+ **Required Permissions**: API token with **Realtime / Realtime Admin** permissions
76
+
77
+ ### Create Presets
78
+
79
+ ```bash
80
+ curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/<app_id>/presets' \
81
+ -H 'Authorization: Bearer <api_token>' \
82
+ -d '{
83
+ "name": "host",
84
+ "permissions": {
85
+ "canShareAudio": true,
86
+ "canShareVideo": true,
87
+ "canRecord": true,
88
+ "canLivestream": true,
89
+ "canStartStopRecording": true
90
+ }
91
+ }'
92
+ ```
93
+
94
+ ## Wrangler Configuration
95
+
96
+ ### Basic Configuration
97
+ ```jsonc
98
+ // wrangler.jsonc
99
+ {
100
+ "name": "realtimekit-app",
101
+ "main": "src/index.ts",
102
+ "compatibility_date": "2025-01-01", // Use current date
103
+ "vars": {
104
+ "CLOUDFLARE_ACCOUNT_ID": "abc123",
105
+ "REALTIMEKIT_APP_ID": "xyz789"
106
+ }
107
+ // Secrets: wrangler secret put CLOUDFLARE_API_TOKEN
108
+ }
109
+ ```
110
+
111
+ ### With Database & Storage
112
+ ```jsonc
113
+ {
114
+ "d1_databases": [{ "binding": "DB", "database_name": "meetings", "database_id": "d1-id" }],
115
+ "r2_buckets": [{ "binding": "RECORDINGS", "bucket_name": "recordings" }],
116
+ "kv_namespaces": [{ "binding": "SESSIONS", "id": "kv-id" }]
117
+ }
118
+ ```
119
+
120
+ ### Multi-Environment
121
+ ```bash
122
+ # Deploy to environments
123
+ wrangler deploy --env staging
124
+ wrangler deploy --env production
125
+ ```
126
+
127
+ ## TURN Service Configuration
128
+
129
+ RealtimeKit can use Cloudflare's TURN service for connectivity through restrictive networks:
130
+
131
+ ```jsonc
132
+ // wrangler.jsonc
133
+ {
134
+ "vars": {
135
+ "TURN_SERVICE_ID": "your_turn_service_id"
136
+ }
137
+ // Set secret: wrangler secret put TURN_SERVICE_TOKEN
138
+ }
139
+ ```
140
+
141
+ TURN automatically configured when enabled in account - no client-side changes needed.
142
+
143
+ ## See Also
144
+
145
+ - [API](./api.md) - Meeting APIs, REST endpoints
146
+ - [Patterns](./patterns.md) - Backend integration examples
147
+ - [README](./README.md) - Overview and quick start