pi-cloudflare 0.1.0

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 (410) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +67 -0
  3. package/bin/setup.mjs +103 -0
  4. package/dist/auth-flow.d.ts +15 -0
  5. package/dist/auth-flow.d.ts.map +1 -0
  6. package/dist/auth-flow.js +90 -0
  7. package/dist/auth-flow.js.map +1 -0
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +47 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/config.d.ts +13 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/index.d.ts +24 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +109 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/oauth.d.ts +44 -0
  21. package/dist/oauth.d.ts.map +1 -0
  22. package/dist/oauth.js +135 -0
  23. package/dist/oauth.js.map +1 -0
  24. package/dist/proxy.d.ts +29 -0
  25. package/dist/proxy.d.ts.map +1 -0
  26. package/dist/proxy.js +39 -0
  27. package/dist/proxy.js.map +1 -0
  28. package/dist/servers.d.ts +19 -0
  29. package/dist/servers.d.ts.map +1 -0
  30. package/dist/servers.js +40 -0
  31. package/dist/servers.js.map +1 -0
  32. package/dist/token-store.d.ts +23 -0
  33. package/dist/token-store.d.ts.map +1 -0
  34. package/dist/token-store.js +47 -0
  35. package/dist/token-store.js.map +1 -0
  36. package/package.json +67 -0
  37. package/skills/agents-sdk/SKILL.md +221 -0
  38. package/skills/agents-sdk/references/browse-the-web.md +63 -0
  39. package/skills/agents-sdk/references/callable.md +92 -0
  40. package/skills/agents-sdk/references/client-sdk.md +110 -0
  41. package/skills/agents-sdk/references/codemode.md +110 -0
  42. package/skills/agents-sdk/references/configuration.md +72 -0
  43. package/skills/agents-sdk/references/durable-execution.md +51 -0
  44. package/skills/agents-sdk/references/email.md +146 -0
  45. package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
  46. package/skills/agents-sdk/references/mcp.md +188 -0
  47. package/skills/agents-sdk/references/observability.md +44 -0
  48. package/skills/agents-sdk/references/queue-retries.md +79 -0
  49. package/skills/agents-sdk/references/routing.md +75 -0
  50. package/skills/agents-sdk/references/server-driven-messages.md +63 -0
  51. package/skills/agents-sdk/references/state-scheduling.md +171 -0
  52. package/skills/agents-sdk/references/streaming-chat.md +198 -0
  53. package/skills/agents-sdk/references/think.md +112 -0
  54. package/skills/agents-sdk/references/voice.md +68 -0
  55. package/skills/agents-sdk/references/webhooks-push.md +86 -0
  56. package/skills/agents-sdk/references/workflows.md +132 -0
  57. package/skills/cloudflare/SKILL.md +248 -0
  58. package/skills/cloudflare/references/agents-sdk/README.md +89 -0
  59. package/skills/cloudflare/references/agents-sdk/api.md +190 -0
  60. package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
  61. package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
  62. package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
  63. package/skills/cloudflare/references/ai-gateway/README.md +175 -0
  64. package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
  65. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
  66. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  67. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
  68. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
  69. package/skills/cloudflare/references/ai-search/README.md +138 -0
  70. package/skills/cloudflare/references/ai-search/api.md +87 -0
  71. package/skills/cloudflare/references/ai-search/configuration.md +88 -0
  72. package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
  73. package/skills/cloudflare/references/ai-search/patterns.md +85 -0
  74. package/skills/cloudflare/references/analytics-engine/README.md +94 -0
  75. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  76. package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
  77. package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
  78. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  79. package/skills/cloudflare/references/api/README.md +66 -0
  80. package/skills/cloudflare/references/api/api.md +204 -0
  81. package/skills/cloudflare/references/api/configuration.md +160 -0
  82. package/skills/cloudflare/references/api/gotchas.md +225 -0
  83. package/skills/cloudflare/references/api/patterns.md +204 -0
  84. package/skills/cloudflare/references/api-shield/README.md +44 -0
  85. package/skills/cloudflare/references/api-shield/api.md +141 -0
  86. package/skills/cloudflare/references/api-shield/configuration.md +192 -0
  87. package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
  88. package/skills/cloudflare/references/api-shield/patterns.md +180 -0
  89. package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
  90. package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
  91. package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
  92. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
  93. package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
  94. package/skills/cloudflare/references/artifacts/README.md +79 -0
  95. package/skills/cloudflare/references/artifacts/api.md +128 -0
  96. package/skills/cloudflare/references/artifacts/configuration.md +92 -0
  97. package/skills/cloudflare/references/bindings/README.md +122 -0
  98. package/skills/cloudflare/references/bindings/api.md +203 -0
  99. package/skills/cloudflare/references/bindings/configuration.md +188 -0
  100. package/skills/cloudflare/references/bindings/gotchas.md +208 -0
  101. package/skills/cloudflare/references/bindings/patterns.md +200 -0
  102. package/skills/cloudflare/references/bot-management/README.md +94 -0
  103. package/skills/cloudflare/references/bot-management/api.md +169 -0
  104. package/skills/cloudflare/references/bot-management/configuration.md +163 -0
  105. package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
  106. package/skills/cloudflare/references/bot-management/patterns.md +182 -0
  107. package/skills/cloudflare/references/browser-rendering/README.md +78 -0
  108. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  109. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  110. package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
  111. package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
  112. package/skills/cloudflare/references/c3/README.md +111 -0
  113. package/skills/cloudflare/references/c3/api.md +71 -0
  114. package/skills/cloudflare/references/c3/configuration.md +81 -0
  115. package/skills/cloudflare/references/c3/gotchas.md +92 -0
  116. package/skills/cloudflare/references/c3/patterns.md +82 -0
  117. package/skills/cloudflare/references/cache-reserve/README.md +147 -0
  118. package/skills/cloudflare/references/cache-reserve/api.md +194 -0
  119. package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
  120. package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
  121. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  122. package/skills/cloudflare/references/containers/README.md +85 -0
  123. package/skills/cloudflare/references/containers/api.md +187 -0
  124. package/skills/cloudflare/references/containers/configuration.md +188 -0
  125. package/skills/cloudflare/references/containers/gotchas.md +178 -0
  126. package/skills/cloudflare/references/containers/patterns.md +202 -0
  127. package/skills/cloudflare/references/cron-triggers/README.md +99 -0
  128. package/skills/cloudflare/references/cron-triggers/api.md +196 -0
  129. package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
  130. package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
  131. package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
  132. package/skills/cloudflare/references/d1/README.md +133 -0
  133. package/skills/cloudflare/references/d1/api.md +196 -0
  134. package/skills/cloudflare/references/d1/configuration.md +191 -0
  135. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  136. package/skills/cloudflare/references/d1/patterns.md +189 -0
  137. package/skills/cloudflare/references/ddos/README.md +41 -0
  138. package/skills/cloudflare/references/ddos/api.md +164 -0
  139. package/skills/cloudflare/references/ddos/configuration.md +93 -0
  140. package/skills/cloudflare/references/ddos/gotchas.md +107 -0
  141. package/skills/cloudflare/references/ddos/patterns.md +174 -0
  142. package/skills/cloudflare/references/do-storage/README.md +75 -0
  143. package/skills/cloudflare/references/do-storage/api.md +102 -0
  144. package/skills/cloudflare/references/do-storage/configuration.md +112 -0
  145. package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
  146. package/skills/cloudflare/references/do-storage/patterns.md +194 -0
  147. package/skills/cloudflare/references/do-storage/testing.md +183 -0
  148. package/skills/cloudflare/references/durable-objects/README.md +185 -0
  149. package/skills/cloudflare/references/durable-objects/api.md +187 -0
  150. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  151. package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
  152. package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
  153. package/skills/cloudflare/references/email-routing/README.md +89 -0
  154. package/skills/cloudflare/references/email-routing/api.md +195 -0
  155. package/skills/cloudflare/references/email-routing/configuration.md +186 -0
  156. package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
  157. package/skills/cloudflare/references/email-routing/patterns.md +229 -0
  158. package/skills/cloudflare/references/email-workers/README.md +151 -0
  159. package/skills/cloudflare/references/email-workers/api.md +237 -0
  160. package/skills/cloudflare/references/email-workers/configuration.md +112 -0
  161. package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
  162. package/skills/cloudflare/references/email-workers/patterns.md +102 -0
  163. package/skills/cloudflare/references/flagship/README.md +59 -0
  164. package/skills/cloudflare/references/flagship/api.md +390 -0
  165. package/skills/cloudflare/references/flagship/configuration.md +202 -0
  166. package/skills/cloudflare/references/flagship/gotchas.md +178 -0
  167. package/skills/cloudflare/references/flagship/patterns.md +469 -0
  168. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  169. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  170. package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
  171. package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
  172. package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
  173. package/skills/cloudflare/references/hyperdrive/README.md +82 -0
  174. package/skills/cloudflare/references/hyperdrive/api.md +143 -0
  175. package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
  176. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  177. package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
  178. package/skills/cloudflare/references/images/README.md +61 -0
  179. package/skills/cloudflare/references/images/api.md +96 -0
  180. package/skills/cloudflare/references/images/configuration.md +211 -0
  181. package/skills/cloudflare/references/images/gotchas.md +99 -0
  182. package/skills/cloudflare/references/images/patterns.md +115 -0
  183. package/skills/cloudflare/references/kv/README.md +89 -0
  184. package/skills/cloudflare/references/kv/api.md +160 -0
  185. package/skills/cloudflare/references/kv/configuration.md +144 -0
  186. package/skills/cloudflare/references/kv/gotchas.md +131 -0
  187. package/skills/cloudflare/references/kv/patterns.md +196 -0
  188. package/skills/cloudflare/references/miniflare/README.md +105 -0
  189. package/skills/cloudflare/references/miniflare/api.md +187 -0
  190. package/skills/cloudflare/references/miniflare/configuration.md +173 -0
  191. package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
  192. package/skills/cloudflare/references/miniflare/patterns.md +181 -0
  193. package/skills/cloudflare/references/network-interconnect/README.md +99 -0
  194. package/skills/cloudflare/references/network-interconnect/api.md +199 -0
  195. package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
  196. package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
  197. package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
  198. package/skills/cloudflare/references/observability/README.md +88 -0
  199. package/skills/cloudflare/references/observability/api.md +164 -0
  200. package/skills/cloudflare/references/observability/configuration.md +169 -0
  201. package/skills/cloudflare/references/observability/gotchas.md +115 -0
  202. package/skills/cloudflare/references/observability/patterns.md +105 -0
  203. package/skills/cloudflare/references/pages/README.md +88 -0
  204. package/skills/cloudflare/references/pages/api.md +204 -0
  205. package/skills/cloudflare/references/pages/configuration.md +201 -0
  206. package/skills/cloudflare/references/pages/gotchas.md +203 -0
  207. package/skills/cloudflare/references/pages/patterns.md +204 -0
  208. package/skills/cloudflare/references/pages-functions/README.md +98 -0
  209. package/skills/cloudflare/references/pages-functions/api.md +143 -0
  210. package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
  211. package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
  212. package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
  213. package/skills/cloudflare/references/pipelines/README.md +90 -0
  214. package/skills/cloudflare/references/pipelines/api.md +124 -0
  215. package/skills/cloudflare/references/pipelines/configuration.md +155 -0
  216. package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
  217. package/skills/cloudflare/references/pipelines/patterns.md +130 -0
  218. package/skills/cloudflare/references/pulumi/README.md +100 -0
  219. package/skills/cloudflare/references/pulumi/api.md +200 -0
  220. package/skills/cloudflare/references/pulumi/configuration.md +198 -0
  221. package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
  222. package/skills/cloudflare/references/pulumi/patterns.md +191 -0
  223. package/skills/cloudflare/references/queues/README.md +96 -0
  224. package/skills/cloudflare/references/queues/api.md +206 -0
  225. package/skills/cloudflare/references/queues/configuration.md +144 -0
  226. package/skills/cloudflare/references/queues/gotchas.md +206 -0
  227. package/skills/cloudflare/references/queues/patterns.md +220 -0
  228. package/skills/cloudflare/references/r2/README.md +95 -0
  229. package/skills/cloudflare/references/r2/api.md +200 -0
  230. package/skills/cloudflare/references/r2/configuration.md +165 -0
  231. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  232. package/skills/cloudflare/references/r2/patterns.md +193 -0
  233. package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
  234. package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
  235. package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
  236. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
  237. package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
  238. package/skills/cloudflare/references/r2-sql/README.md +64 -0
  239. package/skills/cloudflare/references/r2-sql/api.md +121 -0
  240. package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
  241. package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
  242. package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
  243. package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
  244. package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
  245. package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
  246. package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
  247. package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
  248. package/skills/cloudflare/references/realtimekit/README.md +113 -0
  249. package/skills/cloudflare/references/realtimekit/api.md +212 -0
  250. package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
  251. package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
  252. package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
  253. package/skills/cloudflare/references/sandbox/README.md +96 -0
  254. package/skills/cloudflare/references/sandbox/api.md +198 -0
  255. package/skills/cloudflare/references/sandbox/configuration.md +143 -0
  256. package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
  257. package/skills/cloudflare/references/sandbox/patterns.md +201 -0
  258. package/skills/cloudflare/references/secrets-store/README.md +74 -0
  259. package/skills/cloudflare/references/secrets-store/api.md +200 -0
  260. package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
  261. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  262. package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
  263. package/skills/cloudflare/references/smart-placement/README.md +138 -0
  264. package/skills/cloudflare/references/smart-placement/api.md +183 -0
  265. package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
  266. package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
  267. package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
  268. package/skills/cloudflare/references/snippets/README.md +68 -0
  269. package/skills/cloudflare/references/snippets/api.md +198 -0
  270. package/skills/cloudflare/references/snippets/configuration.md +227 -0
  271. package/skills/cloudflare/references/snippets/gotchas.md +86 -0
  272. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  273. package/skills/cloudflare/references/spectrum/README.md +52 -0
  274. package/skills/cloudflare/references/spectrum/api.md +181 -0
  275. package/skills/cloudflare/references/spectrum/configuration.md +194 -0
  276. package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
  277. package/skills/cloudflare/references/spectrum/patterns.md +196 -0
  278. package/skills/cloudflare/references/static-assets/README.md +65 -0
  279. package/skills/cloudflare/references/static-assets/api.md +199 -0
  280. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  281. package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
  282. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  283. package/skills/cloudflare/references/stream/README.md +114 -0
  284. package/skills/cloudflare/references/stream/api-live.md +195 -0
  285. package/skills/cloudflare/references/stream/api.md +199 -0
  286. package/skills/cloudflare/references/stream/configuration.md +141 -0
  287. package/skills/cloudflare/references/stream/gotchas.md +130 -0
  288. package/skills/cloudflare/references/stream/patterns.md +184 -0
  289. package/skills/cloudflare/references/tail-workers/README.md +89 -0
  290. package/skills/cloudflare/references/tail-workers/api.md +200 -0
  291. package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
  292. package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
  293. package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
  294. package/skills/cloudflare/references/terraform/README.md +102 -0
  295. package/skills/cloudflare/references/terraform/api.md +178 -0
  296. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  297. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  298. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  299. package/skills/cloudflare/references/tunnel/README.md +129 -0
  300. package/skills/cloudflare/references/tunnel/api.md +193 -0
  301. package/skills/cloudflare/references/tunnel/configuration.md +157 -0
  302. package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
  303. package/skills/cloudflare/references/tunnel/networking.md +168 -0
  304. package/skills/cloudflare/references/tunnel/patterns.md +192 -0
  305. package/skills/cloudflare/references/turn/README.md +82 -0
  306. package/skills/cloudflare/references/turn/api.md +239 -0
  307. package/skills/cloudflare/references/turn/configuration.md +179 -0
  308. package/skills/cloudflare/references/turn/gotchas.md +231 -0
  309. package/skills/cloudflare/references/turn/patterns.md +213 -0
  310. package/skills/cloudflare/references/turnstile/README.md +99 -0
  311. package/skills/cloudflare/references/turnstile/api.md +240 -0
  312. package/skills/cloudflare/references/turnstile/configuration.md +222 -0
  313. package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
  314. package/skills/cloudflare/references/turnstile/patterns.md +193 -0
  315. package/skills/cloudflare/references/vectorize/README.md +133 -0
  316. package/skills/cloudflare/references/vectorize/api.md +88 -0
  317. package/skills/cloudflare/references/vectorize/configuration.md +88 -0
  318. package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
  319. package/skills/cloudflare/references/vectorize/patterns.md +90 -0
  320. package/skills/cloudflare/references/waf/README.md +113 -0
  321. package/skills/cloudflare/references/waf/api.md +202 -0
  322. package/skills/cloudflare/references/waf/configuration.md +203 -0
  323. package/skills/cloudflare/references/waf/gotchas.md +204 -0
  324. package/skills/cloudflare/references/waf/patterns.md +197 -0
  325. package/skills/cloudflare/references/web-analytics/README.md +141 -0
  326. package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
  327. package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
  328. package/skills/cloudflare/references/web-analytics/integration.md +60 -0
  329. package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
  330. package/skills/cloudflare/references/workerd/README.md +78 -0
  331. package/skills/cloudflare/references/workerd/api.md +185 -0
  332. package/skills/cloudflare/references/workerd/configuration.md +183 -0
  333. package/skills/cloudflare/references/workerd/gotchas.md +139 -0
  334. package/skills/cloudflare/references/workerd/patterns.md +192 -0
  335. package/skills/cloudflare/references/workers/README.md +108 -0
  336. package/skills/cloudflare/references/workers/api.md +195 -0
  337. package/skills/cloudflare/references/workers/configuration.md +185 -0
  338. package/skills/cloudflare/references/workers/frameworks.md +197 -0
  339. package/skills/cloudflare/references/workers/gotchas.md +137 -0
  340. package/skills/cloudflare/references/workers/patterns.md +198 -0
  341. package/skills/cloudflare/references/workers-ai/README.md +197 -0
  342. package/skills/cloudflare/references/workers-ai/api.md +112 -0
  343. package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
  344. package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
  345. package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
  346. package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
  347. package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
  348. package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
  349. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  350. package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
  351. package/skills/cloudflare/references/workers-playground/README.md +127 -0
  352. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  353. package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
  354. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  355. package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
  356. package/skills/cloudflare/references/workers-vpc/README.md +127 -0
  357. package/skills/cloudflare/references/workers-vpc/api.md +202 -0
  358. package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
  359. package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
  360. package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
  361. package/skills/cloudflare/references/workflows/README.md +77 -0
  362. package/skills/cloudflare/references/workflows/api.md +218 -0
  363. package/skills/cloudflare/references/workflows/configuration.md +152 -0
  364. package/skills/cloudflare/references/workflows/gotchas.md +90 -0
  365. package/skills/cloudflare/references/workflows/patterns.md +175 -0
  366. package/skills/cloudflare/references/wrangler/README.md +135 -0
  367. package/skills/cloudflare/references/wrangler/api.md +188 -0
  368. package/skills/cloudflare/references/wrangler/configuration.md +197 -0
  369. package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
  370. package/skills/cloudflare/references/wrangler/patterns.md +209 -0
  371. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  372. package/skills/cloudflare/references/zaraz/README.md +111 -0
  373. package/skills/cloudflare/references/zaraz/api.md +112 -0
  374. package/skills/cloudflare/references/zaraz/configuration.md +90 -0
  375. package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
  376. package/skills/cloudflare/references/zaraz/patterns.md +74 -0
  377. package/skills/cloudflare-email-service/SKILL.md +103 -0
  378. package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
  379. package/skills/cloudflare-email-service/references/deliverability.md +285 -0
  380. package/skills/cloudflare-email-service/references/rest-api.md +184 -0
  381. package/skills/cloudflare-email-service/references/routing.md +199 -0
  382. package/skills/cloudflare-email-service/references/sending.md +252 -0
  383. package/skills/cloudflare-one/SKILL.md +176 -0
  384. package/skills/cloudflare-one-migrations/SKILL.md +110 -0
  385. package/skills/durable-objects/SKILL.md +186 -0
  386. package/skills/durable-objects/references/rules.md +295 -0
  387. package/skills/durable-objects/references/testing.md +264 -0
  388. package/skills/durable-objects/references/workers.md +346 -0
  389. package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
  390. package/skills/sandbox-next/SKILL.md +91 -0
  391. package/skills/sandbox-next/references/api-quick-ref.md +94 -0
  392. package/skills/sandbox-next/references/examples.md +15 -0
  393. package/skills/sandbox-stable/SKILL.md +110 -0
  394. package/skills/turnstile-spin/README.md +51 -0
  395. package/skills/turnstile-spin/SKILL.md +330 -0
  396. package/skills/turnstile-spin/references/astro.md +199 -0
  397. package/skills/turnstile-spin/references/hugo.md +114 -0
  398. package/skills/turnstile-spin/references/nextjs-app.md +261 -0
  399. package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
  400. package/skills/turnstile-spin/references/sveltekit.md +191 -0
  401. package/skills/turnstile-spin/references/vanilla-html.md +157 -0
  402. package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
  403. package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
  404. package/skills/turnstile-spin/scripts/validate.sh +137 -0
  405. package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
  406. package/skills/turnstile-spin/tests/validation.md +62 -0
  407. package/skills/workers-best-practices/SKILL.md +127 -0
  408. package/skills/workers-best-practices/references/review.md +174 -0
  409. package/skills/workers-best-practices/references/rules.md +467 -0
  410. package/skills/wrangler/SKILL.md +922 -0
@@ -0,0 +1,86 @@
1
+ # Gotchas & Best Practices
2
+
3
+ ## Common Errors
4
+
5
+ ### 1000: "Snippet execution failed"
6
+ Runtime error or syntax error. Wrap code in try/catch:
7
+ ```javascript
8
+ try { return await fetch(request); }
9
+ catch (error) { return new Response(`Error: ${error.message}`, { status: 500 }); }
10
+ ```
11
+
12
+ ### 1100: "Exceeded execution limit"
13
+ Code takes >5ms CPU. Simplify logic or move to Workers.
14
+
15
+ ### 1201: "Multiple origin fetches"
16
+ Call `fetch(request)` exactly once:
17
+ ```javascript
18
+ // ❌ Multiple origin fetches
19
+ const r1 = await fetch(request); const r2 = await fetch(request);
20
+ // ✅ Single fetch, reuse response
21
+ const response = await fetch(request);
22
+ ```
23
+
24
+ ### 1202: "Subrequest limit exceeded"
25
+ Pro: 2 subrequests, Business/Enterprise: 5. Reduce fetch calls.
26
+
27
+ ### "Cannot set property on immutable object"
28
+ Clone before modifying:
29
+ ```javascript
30
+ const modifiedRequest = new Request(request);
31
+ modifiedRequest.headers.set("X-Custom", "value");
32
+ ```
33
+
34
+ ### "caches is not defined"
35
+ Cache API NOT available in Snippets. Use Workers.
36
+
37
+ ### "Module not found"
38
+ Snippets don't support `import`. Use inline code or Workers.
39
+
40
+ ## Best Practices
41
+
42
+ ### Performance
43
+ - Keep code <10KB (32KB limit)
44
+ - Optimize for 5ms CPU
45
+ - Clone only when modifying
46
+ - Minimize subrequests
47
+
48
+ ### Security
49
+ - Validate all inputs
50
+ - Use Web Crypto API for hashing
51
+ - Sanitize headers before origin
52
+ - Don't log secrets
53
+
54
+ ### Debugging
55
+ ```javascript
56
+ newResponse.headers.set("X-Debug-Country", request.cf.country);
57
+ ```
58
+ ```bash
59
+ curl -H "X-Test: true" https://example.com -v
60
+ ```
61
+
62
+ ## Available APIs
63
+
64
+ **✅ Available:** `fetch()`, `Request`, `Response`, `Headers`, `URL`, `crypto.subtle`, `crypto.randomUUID()`, `atob()`/`btoa()`, `JSON`
65
+
66
+ **❌ NOT Available:** `caches`, `KV`, `D1`, `R2`, `Durable Objects`, `WebSocket`, `HTMLRewriter`, `import`, Node.js APIs
67
+
68
+ ## Limits
69
+
70
+ | Resource | Limit |
71
+ |----------|-------|
72
+ | Snippet size | 32KB |
73
+ | Execution time | 5ms CPU |
74
+ | Subrequests (Pro/Biz) | 2/5 |
75
+ | Snippets/zone | 20 |
76
+
77
+ ## Performance Benchmarks
78
+
79
+ | Operation | Time |
80
+ |-----------|------|
81
+ | Header set | <0.1ms |
82
+ | URL parsing | <0.2ms |
83
+ | fetch() | 1-3ms |
84
+ | SHA-256 | 0.5-1ms |
85
+
86
+ **Migrate to Workers when:** >5ms needed, >5 subrequests, need storage (KV/D1/R2), need npm packages, >32KB code
@@ -0,0 +1,135 @@
1
+ # Snippets Patterns
2
+
3
+ ## Security Headers
4
+
5
+ ```javascript
6
+ export default {
7
+ async fetch(request) {
8
+ const response = await fetch(request);
9
+ const newResponse = new Response(response.body, response);
10
+ newResponse.headers.set("X-Frame-Options", "DENY");
11
+ newResponse.headers.set("X-Content-Type-Options", "nosniff");
12
+ newResponse.headers.delete("X-Powered-By");
13
+ return newResponse;
14
+ }
15
+ }
16
+ ```
17
+
18
+ **Rule:** `true` (all requests)
19
+
20
+ ## Geo-Based Routing
21
+
22
+ ```javascript
23
+ export default {
24
+ async fetch(request) {
25
+ const country = request.cf.country;
26
+ if (["GB", "DE", "FR"].includes(country)) {
27
+ const url = new URL(request.url);
28
+ url.hostname = url.hostname.replace(".com", ".eu");
29
+ return Response.redirect(url.toString(), 302);
30
+ }
31
+ return fetch(request);
32
+ }
33
+ }
34
+ ```
35
+
36
+ ## A/B Testing
37
+
38
+ ```javascript
39
+ export default {
40
+ async fetch(request) {
41
+ const cookies = request.headers.get("Cookie") || "";
42
+ let variant = cookies.match(/ab_test=([AB])/)?.[1] || (Math.random() < 0.5 ? "A" : "B");
43
+
44
+ const req = new Request(request);
45
+ req.headers.set("X-Variant", variant);
46
+ const response = await fetch(req);
47
+
48
+ if (!cookies.includes("ab_test=")) {
49
+ const newResponse = new Response(response.body, response);
50
+ newResponse.headers.append("Set-Cookie", `ab_test=${variant}; Path=/; Secure`);
51
+ return newResponse;
52
+ }
53
+ return response;
54
+ }
55
+ }
56
+ ```
57
+
58
+ ## Bot Detection
59
+
60
+ ```javascript
61
+ export default {
62
+ async fetch(request) {
63
+ const botScore = request.cf.botManagement?.score;
64
+ if (botScore && botScore < 30) return new Response("Denied", { status: 403 });
65
+ return fetch(request);
66
+ }
67
+ }
68
+ ```
69
+
70
+ **Requires:** Bot Management plan
71
+
72
+ ## API Auth Header Injection
73
+
74
+ ```javascript
75
+ export default {
76
+ async fetch(request) {
77
+ if (new URL(request.url).pathname.startsWith("/api/")) {
78
+ const req = new Request(request);
79
+ req.headers.set("X-Internal-Auth", "secret_token");
80
+ req.headers.delete("Authorization");
81
+ return fetch(req);
82
+ }
83
+ return fetch(request);
84
+ }
85
+ }
86
+ ```
87
+
88
+ ## CORS Headers
89
+
90
+ ```javascript
91
+ export default {
92
+ async fetch(request) {
93
+ if (request.method === "OPTIONS") {
94
+ return new Response(null, {
95
+ status: 204,
96
+ headers: {
97
+ "Access-Control-Allow-Origin": "*",
98
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE",
99
+ "Access-Control-Allow-Headers": "Content-Type, Authorization"
100
+ }
101
+ });
102
+ }
103
+ const response = await fetch(request);
104
+ const newResponse = new Response(response.body, response);
105
+ newResponse.headers.set("Access-Control-Allow-Origin", "*");
106
+ return newResponse;
107
+ }
108
+ }
109
+ ```
110
+
111
+ ## Maintenance Mode
112
+
113
+ ```javascript
114
+ export default {
115
+ async fetch(request) {
116
+ if (request.headers.get("X-Bypass-Token") === "admin") return fetch(request);
117
+ return new Response("<h1>Maintenance</h1>", {
118
+ status: 503,
119
+ headers: { "Content-Type": "text/html", "Retry-After": "3600" }
120
+ });
121
+ }
122
+ }
123
+ ```
124
+
125
+ ## Pattern Selection
126
+
127
+ | Pattern | Complexity | Use Case |
128
+ |---------|-----------|----------|
129
+ | Security Headers | Low | All sites |
130
+ | Geo-Routing | Low | Regional content |
131
+ | A/B Testing | Medium | Experiments |
132
+ | Bot Detection | Medium | Requires Bot Management |
133
+ | API Auth | Low | Backend protection |
134
+ | CORS | Low | API endpoints |
135
+ | Maintenance | Low | Deployments |
@@ -0,0 +1,52 @@
1
+ # Cloudflare Spectrum Skill Reference
2
+
3
+ ## Overview
4
+
5
+ Cloudflare Spectrum provides security and acceleration for ANY TCP or UDP-based application. It's a global Layer 4 (L4) reverse proxy running on Cloudflare's edge nodes that routes MQTT, email, file transfer, version control, games, and more through Cloudflare to mask origins and protect from DDoS attacks.
6
+
7
+ **When to Use Spectrum**: When your protocol isn't HTTP/HTTPS (use Cloudflare proxy for HTTP). Spectrum handles everything else: SSH, gaming, databases, MQTT, SMTP, RDP, custom protocols.
8
+
9
+ ## Plan Capabilities
10
+
11
+ | Capability | Pro/Business | Enterprise |
12
+ |------------|--------------|------------|
13
+ | TCP protocols | Selected ports only | All ports (1-65535) |
14
+ | UDP protocols | Selected ports only | All ports (1-65535) |
15
+ | Port ranges | ❌ | ✅ |
16
+ | Argo Smart Routing | ✅ | ✅ |
17
+ | IP Firewall | ✅ | ✅ |
18
+ | Load balancer origins | ✅ | ✅ |
19
+
20
+ ## Decision Tree
21
+
22
+ **What are you trying to do?**
23
+
24
+ 1. **Create/manage Spectrum app**
25
+ - Via Dashboard → See [Cloudflare Dashboard](https://dash.cloudflare.com)
26
+ - Via API → See [api.md](api.md) - REST endpoints
27
+ - Via SDK → See [api.md](api.md) - TypeScript/Python/Go examples
28
+ - Via IaC → See [configuration.md](configuration.md) - Terraform/Pulumi
29
+
30
+ 2. **Protect specific protocol**
31
+ - SSH → See [patterns.md](patterns.md#1-ssh-server-protection)
32
+ - Gaming (Minecraft, etc) → See [patterns.md](patterns.md#2-game-server)
33
+ - MQTT/IoT → See [patterns.md](patterns.md#3-mqtt-broker)
34
+ - SMTP/Email → See [patterns.md](patterns.md#4-smtp-relay)
35
+ - Database → See [patterns.md](patterns.md#5-database-proxy)
36
+ - RDP → See [patterns.md](patterns.md#6-rdp-remote-desktop)
37
+
38
+ 3. **Choose origin type**
39
+ - Direct IP (single server) → See [configuration.md](configuration.md#direct-ip-origin)
40
+ - CNAME (hostname) → See [configuration.md](configuration.md#cname-origin)
41
+ - Load balancer (HA/failover) → See [configuration.md](configuration.md#load-balancer-origin)
42
+
43
+ ## Reading Order
44
+
45
+ 1. Start with [patterns.md](patterns.md) for your specific protocol
46
+ 2. Then [configuration.md](configuration.md) for your origin type
47
+ 3. Check [gotchas.md](gotchas.md) before going to production
48
+ 4. Use [api.md](api.md) for programmatic access
49
+
50
+ ## See Also
51
+
52
+ - [Cloudflare Docs](https://developers.cloudflare.com/spectrum/)
@@ -0,0 +1,181 @@
1
+ ## REST API Endpoints
2
+
3
+ ```
4
+ GET /zones/{zone_id}/spectrum/apps # List apps
5
+ POST /zones/{zone_id}/spectrum/apps # Create app
6
+ GET /zones/{zone_id}/spectrum/apps/{app_id} # Get app
7
+ PUT /zones/{zone_id}/spectrum/apps/{app_id} # Update app
8
+ DELETE /zones/{zone_id}/spectrum/apps/{app_id} # Delete app
9
+
10
+ GET /zones/{zone_id}/spectrum/analytics/aggregate/current
11
+ GET /zones/{zone_id}/spectrum/analytics/events/bytime
12
+ GET /zones/{zone_id}/spectrum/analytics/events/summary
13
+ ```
14
+
15
+ ## Request/Response Schemas
16
+
17
+ ### CreateSpectrumAppRequest
18
+
19
+ ```typescript
20
+ interface CreateSpectrumAppRequest {
21
+ protocol: string; // "tcp/22", "udp/53"
22
+ dns: {
23
+ type: "CNAME" | "ADDRESS";
24
+ name: string; // "ssh.example.com"
25
+ };
26
+ origin_direct?: string[]; // ["tcp://192.0.2.1:22"]
27
+ origin_dns?: { name: string }; // {"name": "origin.example.com"}
28
+ origin_port?: number | { start: number; end: number };
29
+ proxy_protocol?: "off" | "v1" | "v2" | "simple";
30
+ ip_firewall?: boolean;
31
+ tls?: "off" | "flexible" | "full" | "strict";
32
+ edge_ips?: {
33
+ type: "dynamic" | "static";
34
+ connectivity: "all" | "ipv4" | "ipv6";
35
+ };
36
+ traffic_type?: "direct" | "http" | "https";
37
+ argo_smart_routing?: boolean;
38
+ }
39
+ ```
40
+
41
+ ### SpectrumApp Response
42
+
43
+ ```typescript
44
+ interface SpectrumApp {
45
+ id: string;
46
+ protocol: string;
47
+ dns: { type: string; name: string };
48
+ origin_direct?: string[];
49
+ origin_dns?: { name: string };
50
+ origin_port?: number | { start: number; end: number };
51
+ proxy_protocol: string;
52
+ ip_firewall: boolean;
53
+ tls: string;
54
+ edge_ips: { type: string; connectivity: string; ips?: string[] };
55
+ argo_smart_routing: boolean;
56
+ created_on: string;
57
+ modified_on: string;
58
+ }
59
+ ```
60
+
61
+ ## TypeScript SDK
62
+
63
+ ```typescript
64
+ import Cloudflare from 'cloudflare';
65
+
66
+ const client = new Cloudflare({ apiToken: process.env.CLOUDFLARE_API_TOKEN });
67
+
68
+ // Create
69
+ const app = await client.spectrum.apps.create({
70
+ zone_id: 'your-zone-id',
71
+ protocol: 'tcp/22',
72
+ dns: { type: 'CNAME', name: 'ssh.example.com' },
73
+ origin_direct: ['tcp://192.0.2.1:22'],
74
+ ip_firewall: true,
75
+ tls: 'off',
76
+ });
77
+
78
+ // List
79
+ const apps = await client.spectrum.apps.list({ zone_id: 'your-zone-id' });
80
+
81
+ // Get
82
+ const appDetails = await client.spectrum.apps.get({ zone_id: 'your-zone-id', app_id: app.id });
83
+
84
+ // Update
85
+ await client.spectrum.apps.update({ zone_id: 'your-zone-id', app_id: app.id, tls: 'full' });
86
+
87
+ // Delete
88
+ await client.spectrum.apps.delete({ zone_id: 'your-zone-id', app_id: app.id });
89
+
90
+ // Analytics
91
+ const analytics = await client.spectrum.analytics.aggregate({
92
+ zone_id: 'your-zone-id',
93
+ metrics: ['bytesIngress', 'bytesEgress'],
94
+ since: new Date(Date.now() - 3600000).toISOString(),
95
+ });
96
+ ```
97
+
98
+ ## Python SDK
99
+
100
+ ```python
101
+ from cloudflare import Cloudflare
102
+
103
+ client = Cloudflare(api_token="your-api-token")
104
+
105
+ # Create
106
+ app = client.spectrum.apps.create(
107
+ zone_id="your-zone-id",
108
+ protocol="tcp/22",
109
+ dns={"type": "CNAME", "name": "ssh.example.com"},
110
+ origin_direct=["tcp://192.0.2.1:22"],
111
+ ip_firewall=True,
112
+ tls="off",
113
+ )
114
+
115
+ # List
116
+ apps = client.spectrum.apps.list(zone_id="your-zone-id")
117
+
118
+ # Get
119
+ app_details = client.spectrum.apps.get(zone_id="your-zone-id", app_id=app.id)
120
+
121
+ # Update
122
+ client.spectrum.apps.update(zone_id="your-zone-id", app_id=app.id, tls="full")
123
+
124
+ # Delete
125
+ client.spectrum.apps.delete(zone_id="your-zone-id", app_id=app.id)
126
+
127
+ # Analytics
128
+ analytics = client.spectrum.analytics.aggregate(
129
+ zone_id="your-zone-id",
130
+ metrics=["bytesIngress", "bytesEgress"],
131
+ since=datetime.now() - timedelta(hours=1),
132
+ )
133
+ ```
134
+
135
+ ## Go SDK
136
+
137
+ ```go
138
+ import "github.com/cloudflare/cloudflare-go"
139
+
140
+ api, _ := cloudflare.NewWithAPIToken("your-api-token")
141
+
142
+ // Create
143
+ app, _ := api.CreateSpectrumApplication(ctx, "zone-id", cloudflare.SpectrumApplication{
144
+ Protocol: "tcp/22",
145
+ DNS: cloudflare.SpectrumApplicationDNS{Type: "CNAME", Name: "ssh.example.com"},
146
+ OriginDirect: []string{"tcp://192.0.2.1:22"},
147
+ IPFirewall: true,
148
+ ArgoSmartRouting: true,
149
+ })
150
+
151
+ // List
152
+ apps, _ := api.SpectrumApplications(ctx, "zone-id")
153
+
154
+ // Delete
155
+ _ = api.DeleteSpectrumApplication(ctx, "zone-id", app.ID)
156
+ ```
157
+
158
+ ## Analytics API
159
+
160
+ **Metrics:**
161
+ - `bytesIngress` - Bytes received from clients
162
+ - `bytesEgress` - Bytes sent to clients
163
+ - `count` - Number of connections
164
+ - `duration` - Connection duration (seconds)
165
+
166
+ **Dimensions:**
167
+ - `event` - Connection event type
168
+ - `appID` - Spectrum application ID
169
+ - `coloName` - Datacenter name
170
+ - `ipVersion` - IPv4 or IPv6
171
+
172
+ **Example:**
173
+ ```bash
174
+ curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/spectrum/analytics/aggregate/current?metrics=bytesIngress,bytesEgress,count&dimensions=appID" \
175
+ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
176
+ ```
177
+
178
+ ## See Also
179
+
180
+ - [configuration.md](configuration.md) - Terraform/Pulumi
181
+ - [patterns.md](patterns.md) - Protocol examples
@@ -0,0 +1,194 @@
1
+ ## Origin Types
2
+
3
+ ### Direct IP Origin
4
+
5
+ Use when origin is a single server with static IP.
6
+
7
+ **TypeScript SDK:**
8
+ ```typescript
9
+ const app = await client.spectrum.apps.create({
10
+ zone_id: 'your-zone-id',
11
+ protocol: 'tcp/22',
12
+ dns: { type: 'CNAME', name: 'ssh.example.com' },
13
+ origin_direct: ['tcp://192.0.2.1:22'],
14
+ ip_firewall: true,
15
+ tls: 'off',
16
+ });
17
+ ```
18
+
19
+ **Terraform:**
20
+ ```hcl
21
+ resource "cloudflare_spectrum_application" "ssh" {
22
+ zone_id = var.zone_id
23
+ protocol = "tcp/22"
24
+
25
+ dns {
26
+ type = "CNAME"
27
+ name = "ssh.example.com"
28
+ }
29
+
30
+ origin_direct = ["tcp://192.0.2.1:22"]
31
+ ip_firewall = true
32
+ tls = "off"
33
+ argo_smart_routing = true
34
+ }
35
+ ```
36
+
37
+ ### CNAME Origin
38
+
39
+ Use when origin is a hostname (not static IP). Spectrum resolves DNS dynamically.
40
+
41
+ **TypeScript SDK:**
42
+ ```typescript
43
+ const app = await client.spectrum.apps.create({
44
+ zone_id: 'your-zone-id',
45
+ protocol: 'tcp/3306',
46
+ dns: { type: 'CNAME', name: 'db.example.com' },
47
+ origin_dns: { name: 'db-primary.internal.example.com' },
48
+ origin_port: 3306,
49
+ tls: 'full',
50
+ });
51
+ ```
52
+
53
+ **Terraform:**
54
+ ```hcl
55
+ resource "cloudflare_spectrum_application" "database" {
56
+ zone_id = var.zone_id
57
+ protocol = "tcp/3306"
58
+
59
+ dns {
60
+ type = "CNAME"
61
+ name = "db.example.com"
62
+ }
63
+
64
+ origin_dns {
65
+ name = "db-primary.internal.example.com"
66
+ }
67
+
68
+ origin_port = 3306
69
+ tls = "full"
70
+ argo_smart_routing = true
71
+ }
72
+ ```
73
+
74
+ ### Load Balancer Origin
75
+
76
+ Use for high availability and failover.
77
+
78
+ **Terraform:**
79
+ ```hcl
80
+ resource "cloudflare_load_balancer" "game_lb" {
81
+ zone_id = var.zone_id
82
+ name = "game-lb.example.com"
83
+ default_pool_ids = [cloudflare_load_balancer_pool.game_pool.id]
84
+ }
85
+
86
+ resource "cloudflare_load_balancer_pool" "game_pool" {
87
+ name = "game-primary"
88
+ origins { name = "game-1"; address = "192.0.2.1" }
89
+ monitor = cloudflare_load_balancer_monitor.tcp_monitor.id
90
+ }
91
+
92
+ resource "cloudflare_load_balancer_monitor" "tcp_monitor" {
93
+ type = "tcp"; port = 25565; interval = 60; timeout = 5
94
+ }
95
+
96
+ resource "cloudflare_spectrum_application" "game" {
97
+ zone_id = var.zone_id
98
+ protocol = "tcp/25565"
99
+ dns { type = "CNAME"; name = "game.example.com" }
100
+ origin_dns { name = cloudflare_load_balancer.game_lb.name }
101
+ origin_port = 25565
102
+ }
103
+ ```
104
+
105
+ ## TLS Configuration
106
+
107
+ | Mode | Description | Use Case | Origin Cert |
108
+ |------|-------------|----------|-------------|
109
+ | `off` | No TLS | Non-encrypted (SSH, gaming) | No |
110
+ | `flexible` | TLS client→CF, plain CF→origin | Testing | No |
111
+ | `full` | TLS end-to-end, self-signed OK | Production | Yes (any) |
112
+ | `strict` | Full + valid cert verification | Max security | Yes (CA) |
113
+
114
+ **Example:**
115
+ ```typescript
116
+ const app = await client.spectrum.apps.create({
117
+ zone_id: 'your-zone-id',
118
+ protocol: 'tcp/3306',
119
+ dns: { type: 'CNAME', name: 'db.example.com' },
120
+ origin_direct: ['tcp://192.0.2.1:3306'],
121
+ tls: 'strict', // Validates origin certificate
122
+ });
123
+ ```
124
+
125
+ ## Proxy Protocol
126
+
127
+ Forwards real client IP to origin. Origin must support parsing.
128
+
129
+ | Version | Protocol | Use Case |
130
+ |---------|----------|----------|
131
+ | `off` | - | Origin doesn't need client IP |
132
+ | `v1` | TCP | Most TCP apps (SSH, databases) |
133
+ | `v2` | TCP | High-performance TCP |
134
+ | `simple` | UDP | UDP applications |
135
+
136
+ **Compatibility:**
137
+ - **v1**: HAProxy, nginx, SSH, most databases
138
+ - **v2**: HAProxy 1.5+, nginx 1.11+
139
+ - **simple**: Cloudflare-specific UDP format
140
+
141
+ **Enable:**
142
+ ```typescript
143
+ const app = await client.spectrum.apps.create({
144
+ // ...
145
+ proxy_protocol: 'v1', // Origin must parse PROXY header
146
+ });
147
+ ```
148
+
149
+ **Origin Config (nginx):**
150
+ ```nginx
151
+ stream {
152
+ server {
153
+ listen 22 proxy_protocol;
154
+ proxy_pass backend:22;
155
+ }
156
+ }
157
+ ```
158
+
159
+ ## IP Access Rules
160
+
161
+ Enable `ip_firewall: true` then configure zone-level firewall rules.
162
+
163
+ ```typescript
164
+ const app = await client.spectrum.apps.create({
165
+ // ...
166
+ ip_firewall: true, // Applies zone firewall rules
167
+ });
168
+ ```
169
+
170
+ ## Port Ranges (Enterprise Only)
171
+
172
+ ```hcl
173
+ resource "cloudflare_spectrum_application" "game_cluster" {
174
+ zone_id = var.zone_id
175
+ protocol = "tcp/25565-25575"
176
+
177
+ dns {
178
+ type = "CNAME"
179
+ name = "games.example.com"
180
+ }
181
+
182
+ origin_direct = ["tcp://192.0.2.1"]
183
+
184
+ origin_port {
185
+ start = 25565
186
+ end = 25575
187
+ }
188
+ }
189
+ ```
190
+
191
+ ## See Also
192
+
193
+ - [patterns.md](patterns.md) - Protocol-specific examples
194
+ - [api.md](api.md) - REST/SDK reference