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,197 @@
1
+ # Terraform Configuration Reference
2
+
3
+ Complete resource configurations for Cloudflare infrastructure.
4
+
5
+ ## Zone & DNS
6
+
7
+ ```hcl
8
+ # Zone + settings
9
+ resource "cloudflare_zone" "example" { account = { id = var.account_id }; name = "example.com"; type = "full" }
10
+ resource "cloudflare_zone_settings_override" "example" {
11
+ zone_id = cloudflare_zone.example.id
12
+ settings { ssl = "strict"; always_use_https = "on"; min_tls_version = "1.2"; tls_1_3 = "on"; http3 = "on" }
13
+ }
14
+
15
+ # DNS records (A, CNAME, MX, TXT)
16
+ resource "cloudflare_dns_record" "www" {
17
+ zone_id = cloudflare_zone.example.id; name = "www"; content = "192.0.2.1"; type = "A"; proxied = true
18
+ }
19
+ resource "cloudflare_dns_record" "mx" {
20
+ for_each = { "10" = "mail1.example.com", "20" = "mail2.example.com" }
21
+ zone_id = cloudflare_zone.example.id; name = "@"; content = each.value; type = "MX"; priority = each.key
22
+ }
23
+ ```
24
+
25
+ ## Workers
26
+
27
+ ### Simple Pattern (Legacy - Still Works)
28
+
29
+ ```hcl
30
+ resource "cloudflare_workers_script" "api" {
31
+ account_id = var.account_id; name = "api-worker"; content = file("worker.js")
32
+ module = true; compatibility_date = "2025-01-01"
33
+ kv_namespace_binding { name = "KV"; namespace_id = cloudflare_workers_kv_namespace.cache.id }
34
+ r2_bucket_binding { name = "BUCKET"; bucket_name = cloudflare_r2_bucket.assets.name }
35
+ d1_database_binding { name = "DB"; database_id = cloudflare_d1_database.app.id }
36
+ secret_text_binding { name = "SECRET"; text = var.secret }
37
+ }
38
+ ```
39
+
40
+ ### Gradual Rollouts (Recommended for Production)
41
+
42
+ ```hcl
43
+ resource "cloudflare_worker" "api" { account_id = var.account_id; name = "api-worker" }
44
+ resource "cloudflare_worker_version" "api_v1" {
45
+ account_id = var.account_id; worker_name = cloudflare_worker.api.name
46
+ content = file("worker.js"); content_sha256 = filesha256("worker.js")
47
+ compatibility_date = "2025-01-01"
48
+ bindings {
49
+ kv_namespace { name = "KV"; namespace_id = cloudflare_workers_kv_namespace.cache.id }
50
+ r2_bucket { name = "BUCKET"; bucket_name = cloudflare_r2_bucket.assets.name }
51
+ }
52
+ }
53
+ resource "cloudflare_workers_deployment" "api" {
54
+ account_id = var.account_id; worker_name = cloudflare_worker.api.name
55
+ versions { version_id = cloudflare_worker_version.api_v1.id; percentage = 100 }
56
+ }
57
+ ```
58
+
59
+ ### Worker Binding Types (v5)
60
+
61
+ | Binding | Attribute | Example |
62
+ |---------|-----------|---------|
63
+ | KV | `kv_namespace_binding` | `{ name = "KV", namespace_id = "..." }` |
64
+ | R2 | `r2_bucket_binding` | `{ name = "BUCKET", bucket_name = "..." }` |
65
+ | D1 | `d1_database_binding` | `{ name = "DB", database_id = "..." }` |
66
+ | Service | `service_binding` | `{ name = "AUTH", service = "auth-worker" }` |
67
+ | Secret | `secret_text_binding` | `{ name = "API_KEY", text = "..." }` |
68
+ | Queue | `queue_binding` | `{ name = "QUEUE", queue_name = "..." }` |
69
+ | Vectorize | `vectorize_binding` | `{ name = "INDEX", index_name = "..." }` |
70
+ | Hyperdrive | `hyperdrive_binding` | `{ name = "DB", id = "..." }` |
71
+ | AI | `ai_binding` | `{ name = "AI" }` |
72
+ | Browser | `browser_binding` | `{ name = "BROWSER" }` |
73
+ | Analytics | `analytics_engine_binding` | `{ name = "ANALYTICS", dataset = "..." }` |
74
+ | mTLS | `mtls_certificate_binding` | `{ name = "CERT", certificate_id = "..." }` |
75
+
76
+ ### Routes & Triggers
77
+
78
+ ```hcl
79
+ resource "cloudflare_worker_route" "api" {
80
+ zone_id = cloudflare_zone.example.id; pattern = "api.example.com/*"
81
+ script_name = cloudflare_workers_script.api.name
82
+ }
83
+ resource "cloudflare_worker_cron_trigger" "task" {
84
+ account_id = var.account_id; script_name = cloudflare_workers_script.api.name
85
+ schedules = ["*/5 * * * *"]
86
+ }
87
+ ```
88
+
89
+ ## Storage (KV, R2, D1)
90
+
91
+ ```hcl
92
+ # KV
93
+ resource "cloudflare_workers_kv_namespace" "cache" { account_id = var.account_id; title = "cache" }
94
+ resource "cloudflare_workers_kv" "config" {
95
+ account_id = var.account_id; namespace_id = cloudflare_workers_kv_namespace.cache.id
96
+ key_name = "config"; value = jsonencode({ version = "1.0" })
97
+ }
98
+
99
+ # R2
100
+ resource "cloudflare_r2_bucket" "assets" { account_id = var.account_id; name = "assets"; location = "WNAM" }
101
+
102
+ # D1 (migrations via wrangler) & Queues
103
+ resource "cloudflare_d1_database" "app" { account_id = var.account_id; name = "app-db" }
104
+ resource "cloudflare_queue" "events" { account_id = var.account_id; name = "events-queue" }
105
+ ```
106
+
107
+ ## Pages
108
+
109
+ ```hcl
110
+ resource "cloudflare_pages_project" "site" {
111
+ account_id = var.account_id; name = "site"; production_branch = "main"
112
+ deployment_configs {
113
+ production {
114
+ compatibility_date = "2025-01-01"
115
+ environment_variables = { NODE_ENV = "production" }
116
+ kv_namespaces = { KV = cloudflare_workers_kv_namespace.cache.id }
117
+ d1_databases = { DB = cloudflare_d1_database.app.id }
118
+ }
119
+ }
120
+ build_config { build_command = "npm run build"; destination_dir = "dist" }
121
+ source { type = "github"; config { owner = "org"; repo_name = "site"; production_branch = "main" }}
122
+ }
123
+
124
+ resource "cloudflare_pages_domain" "custom" {
125
+ account_id = var.account_id; project_name = cloudflare_pages_project.site.name; domain = "site.example.com"
126
+ }
127
+ ```
128
+
129
+ ## Rulesets (WAF, Redirects, Cache)
130
+
131
+ ```hcl
132
+ # WAF
133
+ resource "cloudflare_ruleset" "waf" {
134
+ zone_id = cloudflare_zone.example.id; name = "WAF"; kind = "zone"; phase = "http_request_firewall_custom"
135
+ rules { action = "block"; enabled = true; expression = "(cf.client.bot) and not (cf.verified_bot)" }
136
+ }
137
+
138
+ # Redirects
139
+ resource "cloudflare_ruleset" "redirects" {
140
+ zone_id = cloudflare_zone.example.id; name = "Redirects"; kind = "zone"; phase = "http_request_dynamic_redirect"
141
+ rules {
142
+ action = "redirect"; enabled = true; expression = "(http.request.uri.path eq \"/old\")"
143
+ action_parameters { from_value { status_code = 301; target_url { value = "https://example.com/new" }}}
144
+ }
145
+ }
146
+
147
+ # Cache rules
148
+ resource "cloudflare_ruleset" "cache" {
149
+ zone_id = cloudflare_zone.example.id; name = "Cache"; kind = "zone"; phase = "http_request_cache_settings"
150
+ rules {
151
+ action = "set_cache_settings"; enabled = true; expression = "(http.request.uri.path matches \"\\.(jpg|png|css|js)$\")"
152
+ action_parameters { cache = true; edge_ttl { mode = "override_origin"; default = 86400 }}
153
+ }
154
+ }
155
+ ```
156
+
157
+ ## Load Balancers
158
+
159
+ ```hcl
160
+ resource "cloudflare_load_balancer_monitor" "http" {
161
+ account_id = var.account_id; type = "http"; path = "/health"; interval = 60; timeout = 5
162
+ }
163
+ resource "cloudflare_load_balancer_pool" "api" {
164
+ account_id = var.account_id; name = "api-pool"; monitor = cloudflare_load_balancer_monitor.http.id
165
+ origins { name = "api-1"; address = "192.0.2.1" }
166
+ origins { name = "api-2"; address = "192.0.2.2" }
167
+ }
168
+ resource "cloudflare_load_balancer" "api" {
169
+ zone_id = cloudflare_zone.example.id; name = "api.example.com"
170
+ default_pool_ids = [cloudflare_load_balancer_pool.api.id]; steering_policy = "geo"
171
+ }
172
+ ```
173
+
174
+ ## Access (Zero Trust)
175
+
176
+ ```hcl
177
+ resource "cloudflare_access_application" "admin" {
178
+ account_id = var.account_id; name = "Admin"; domain = "admin.example.com"; type = "self_hosted"
179
+ session_duration = "24h"; allowed_idps = [cloudflare_access_identity_provider.github.id]
180
+ }
181
+ resource "cloudflare_access_policy" "allow" {
182
+ account_id = var.account_id; application_id = cloudflare_access_application.admin.id
183
+ name = "Allow"; decision = "allow"; precedence = 1
184
+ include { email = ["admin@example.com"] }
185
+ }
186
+ resource "cloudflare_access_identity_provider" "github" {
187
+ account_id = var.account_id; name = "GitHub"; type = "github"
188
+ config { client_id = var.github_id; client_secret = var.github_secret }
189
+ }
190
+ ```
191
+
192
+ ## See Also
193
+
194
+ - [README](./README.md) - Provider setup
195
+ - [API](./api.md) - Data sources
196
+ - [Patterns](./patterns.md) - Use cases
197
+ - [Troubleshooting](./gotchas.md) - Issues
@@ -0,0 +1,150 @@
1
+ # Terraform Troubleshooting & Best Practices
2
+
3
+ Common issues, security considerations, and best practices.
4
+
5
+ ## State Drift Issues
6
+
7
+ Some resources have known state drift. Add lifecycle blocks to prevent perpetual diffs:
8
+
9
+ | Resource | Drift Attributes | Workaround |
10
+ |----------|------------------|------------|
11
+ | `cloudflare_pages_project` | `deployment_configs.*` | `ignore_changes = [deployment_configs]` |
12
+ | `cloudflare_workers_script` | secrets returned as REDACTED | `ignore_changes = [secret_text_binding]` |
13
+ | `cloudflare_load_balancer` | `adaptive_routing`, `random_steering` | `ignore_changes = [adaptive_routing, random_steering]` |
14
+ | `cloudflare_workers_kv` | special chars in keys (< 5.16.0) | Upgrade to 5.16.0+ |
15
+
16
+ ```hcl
17
+ # Example: Ignore secret drift
18
+ resource "cloudflare_workers_script" "api" {
19
+ account_id = var.account_id
20
+ name = "api-worker"
21
+ content = file("worker.js")
22
+ secret_text_binding { name = "API_KEY"; text = var.api_key }
23
+
24
+ lifecycle {
25
+ ignore_changes = [secret_text_binding]
26
+ }
27
+ }
28
+ ```
29
+
30
+ ## v5 Breaking Changes
31
+
32
+ Provider v5 is current (auto-generated from OpenAPI). v4→v5 has breaking changes:
33
+
34
+ **Resource Renames:**
35
+
36
+ | v4 Resource | v5 Resource | Notes |
37
+ |-------------|-------------|-------|
38
+ | `cloudflare_record` | `cloudflare_dns_record` | |
39
+ | `cloudflare_worker_script` | `cloudflare_workers_script` | Note: plural |
40
+ | `cloudflare_worker_*` | `cloudflare_workers_*` | All worker resources |
41
+ | `cloudflare_access_*` | `cloudflare_zero_trust_*` | Access → Zero Trust |
42
+
43
+ **Attribute Changes:**
44
+
45
+ | v4 Attribute | v5 Attribute | Resources |
46
+ |--------------|--------------|-----------|
47
+ | `zone` | `name` | zone |
48
+ | `account_id` | `account.id` | zone (object syntax) |
49
+ | `key` | `key_name` | KV |
50
+ | `location_hint` | `location` | R2 |
51
+
52
+ **State Migration:**
53
+
54
+ ```bash
55
+ # Rename resources in state after v5 upgrade
56
+ terraform state mv cloudflare_record.example cloudflare_dns_record.example
57
+ terraform state mv cloudflare_worker_script.api cloudflare_workers_script.api
58
+ ```
59
+
60
+ ## Resource-Specific Gotchas
61
+
62
+ ### R2 Location Case Sensitivity
63
+
64
+ **Problem:** Terraform creates R2 bucket but fails on subsequent applies
65
+ **Cause:** Location must be UPPERCASE
66
+ **Solution:** Use `WNAM`, `ENAM`, `WEUR`, `EEUR`, `APAC` (not `wnam`, `enam`, etc.)
67
+
68
+ ```hcl
69
+ resource "cloudflare_r2_bucket" "assets" {
70
+ account_id = var.account_id
71
+ name = "assets"
72
+ location = "WNAM" # UPPERCASE required
73
+ }
74
+ ```
75
+
76
+ ### KV Special Characters (< 5.16.0)
77
+
78
+ **Problem:** Keys with `+`, `#`, `%` cause encoding issues
79
+ **Cause:** URL encoding bug in provider < 5.16.0
80
+ **Solution:** Upgrade to 5.16.0+ or avoid special chars in keys
81
+
82
+ ### D1 Migrations
83
+
84
+ **Problem:** Terraform creates database but schema is empty
85
+ **Cause:** Terraform only creates D1 resource, not schema
86
+ **Solution:** Run migrations via wrangler after Terraform apply
87
+
88
+ ```bash
89
+ # After terraform apply
90
+ wrangler d1 migrations apply <db-name>
91
+ ```
92
+
93
+ ### Worker Script Size Limit
94
+
95
+ **Problem:** Worker deployment fails with "script too large"
96
+ **Cause:** Worker script + dependencies exceed 10 MB limit
97
+ **Solution:** Use code splitting, external dependencies, or minification
98
+
99
+ ### Pages Project Drift
100
+
101
+ **Problem:** Pages project shows perpetual diff on `deployment_configs`
102
+ **Cause:** Cloudflare API adds default values not in Terraform state
103
+ **Solution:** Add lifecycle ignore block (see State Drift table above)
104
+
105
+ ## Common Errors
106
+
107
+ ### "Error: couldn't find resource"
108
+
109
+ **Cause:** Resource was deleted outside Terraform
110
+ **Solution:** Import resource back into state with `terraform import cloudflare_zone.example <zone-id>` or remove from state with `terraform state rm cloudflare_zone.example`
111
+
112
+ ### "409 Conflict on worker deployment"
113
+
114
+ **Cause:** Worker being deployed by both Terraform and wrangler simultaneously
115
+ **Solution:** Choose one deployment method; if using Terraform, remove wrangler deployments
116
+
117
+ ### "DNS record already exists"
118
+
119
+ **Cause:** Existing DNS record not imported into Terraform state
120
+ **Solution:** Find record ID in Cloudflare dashboard and import with `terraform import cloudflare_dns_record.example <zone-id>/<record-id>`
121
+
122
+ ### "Invalid provider configuration"
123
+
124
+ **Cause:** API token missing, invalid, or lacking required permissions
125
+ **Solution:** Set `CLOUDFLARE_API_TOKEN` environment variable or check token permissions in dashboard
126
+
127
+ ### "State locking errors"
128
+
129
+ **Cause:** Multiple concurrent Terraform runs or stale lock from crashed process
130
+ **Solution:** Remove stale lock with `terraform force-unlock <lock-id>` (use with caution)
131
+
132
+ ## Limits
133
+
134
+ | Resource | Limit | Notes |
135
+ |----------|-------|-------|
136
+ | API token rate limit | Varies by plan | Use `api_client_logging = true` to debug
137
+ | Worker script size | 10 MB | Includes all dependencies
138
+ | KV keys per namespace | Unlimited | Pay per operation
139
+ | R2 storage | Unlimited | Pay per GB
140
+ | D1 databases | 50,000 per account | Free tier: 10
141
+ | Pages projects | 500 per account | 100 for free accounts
142
+ | DNS records | 3,500 per zone | Free plan
143
+
144
+ ## See Also
145
+
146
+ - [README](./README.md) - Provider setup
147
+ - [Configuration](./configuration.md) - Resources
148
+ - [API](./api.md) - Data sources
149
+ - [Patterns](./patterns.md) - Use cases
150
+ - Provider docs: https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs
@@ -0,0 +1,174 @@
1
+ # Terraform Patterns & Use Cases
2
+
3
+ Architecture patterns, multi-environment setups, and real-world use cases.
4
+
5
+ ## Recommended Directory Structure
6
+
7
+ ```
8
+ terraform/
9
+ ├── environments/
10
+ │ ├── production/
11
+ │ │ ├── main.tf
12
+ │ │ └── terraform.tfvars
13
+ │ └── staging/
14
+ │ ├── main.tf
15
+ │ └── terraform.tfvars
16
+ ├── modules/
17
+ │ ├── zone/
18
+ │ ├── worker/
19
+ │ └── dns/
20
+ └── shared/ # Shared resources across envs
21
+ └── main.tf
22
+ ```
23
+
24
+ **Note:** Cloudflare recommends avoiding modules for provider resources due to v5 auto-generation complexity. Prefer environment directories + shared state instead.
25
+
26
+ ## Multi-Environment Setup
27
+
28
+ ```hcl
29
+ # Directory: environments/{production,staging}/main.tf + modules/{zone,worker,pages}
30
+ module "zone" {
31
+ source = "../../modules/zone"; account_id = var.account_id; zone_name = "example.com"; environment = "production"
32
+ }
33
+ module "api_worker" {
34
+ source = "../../modules/worker"; account_id = var.account_id; zone_id = module.zone.zone_id
35
+ name = "api-worker-prod"; script = file("../../workers/api.js"); environment = "production"
36
+ }
37
+ ```
38
+
39
+ ## R2 State Backend
40
+
41
+ ```hcl
42
+ terraform {
43
+ backend "s3" {
44
+ bucket = "terraform-state"
45
+ key = "cloudflare.tfstate"
46
+ region = "auto"
47
+ endpoints = { s3 = "https://<account_id>.r2.cloudflarestorage.com" }
48
+ skip_credentials_validation = true
49
+ skip_region_validation = true
50
+ skip_requesting_account_id = true
51
+ skip_metadata_api_check = true
52
+ skip_s3_checksum = true
53
+ }
54
+ }
55
+ ```
56
+
57
+ ## Worker with All Bindings
58
+
59
+ ```hcl
60
+ locals { worker_name = "full-stack-worker" }
61
+ resource "cloudflare_workers_kv_namespace" "app" { account_id = var.account_id; title = "${local.worker_name}-kv" }
62
+ resource "cloudflare_r2_bucket" "app" { account_id = var.account_id; name = "${local.worker_name}-bucket" }
63
+ resource "cloudflare_d1_database" "app" { account_id = var.account_id; name = "${local.worker_name}-db" }
64
+
65
+ resource "cloudflare_worker_script" "app" {
66
+ account_id = var.account_id; name = local.worker_name; content = file("worker.js"); module = true
67
+ compatibility_date = "2025-01-01"
68
+ kv_namespace_binding { name = "KV"; namespace_id = cloudflare_workers_kv_namespace.app.id }
69
+ r2_bucket_binding { name = "BUCKET"; bucket_name = cloudflare_r2_bucket.app.name }
70
+ d1_database_binding { name = "DB"; database_id = cloudflare_d1_database.app.id }
71
+ secret_text_binding { name = "API_KEY"; text = var.api_key }
72
+ }
73
+ ```
74
+
75
+ ## Wrangler Integration
76
+
77
+ **CRITICAL**: Wrangler and Terraform must NOT manage same resources.
78
+
79
+ **Terraform**: Zones, DNS, security rules, Access, load balancers, worker deployments (CI/CD), KV/R2/D1 resource creation
80
+ **Wrangler**: Local dev (`wrangler dev`), manual deploys, D1 migrations, KV bulk ops, log streaming (`wrangler tail`)
81
+
82
+ ### CI/CD Pattern
83
+
84
+ ```hcl
85
+ # Terraform creates infrastructure
86
+ resource "cloudflare_workers_kv_namespace" "app" { account_id = var.account_id; title = "app-kv" }
87
+ resource "cloudflare_d1_database" "app" { account_id = var.account_id; name = "app-db" }
88
+ output "kv_namespace_id" { value = cloudflare_workers_kv_namespace.app.id }
89
+ output "d1_database_id" { value = cloudflare_d1_database.app.id }
90
+ ```
91
+
92
+ ```yaml
93
+ # GitHub Actions: terraform apply → envsubst wrangler.jsonc.template → wrangler deploy
94
+ - run: terraform apply -auto-approve
95
+ - run: |
96
+ export KV_NAMESPACE_ID=$(terraform output -raw kv_namespace_id)
97
+ envsubst < wrangler.jsonc.template > wrangler.jsonc
98
+ - run: wrangler deploy
99
+ ```
100
+
101
+ ## Use Cases
102
+
103
+ ### Static Site + API Worker
104
+
105
+ ```hcl
106
+ resource "cloudflare_pages_project" "frontend" {
107
+ account_id = var.account_id; name = "frontend"; production_branch = "main"
108
+ build_config { build_command = "npm run build"; destination_dir = "dist" }
109
+ }
110
+ resource "cloudflare_worker_script" "api" {
111
+ account_id = var.account_id; name = "api"; content = file("api-worker.js")
112
+ d1_database_binding { name = "DB"; database_id = cloudflare_d1_database.api_db.id }
113
+ }
114
+ resource "cloudflare_dns_record" "frontend" {
115
+ zone_id = cloudflare_zone.main.id; name = "app"; content = cloudflare_pages_project.frontend.subdomain; type = "CNAME"; proxied = true
116
+ }
117
+ resource "cloudflare_worker_route" "api" {
118
+ zone_id = cloudflare_zone.main.id; pattern = "api.example.com/*"; script_name = cloudflare_worker_script.api.name
119
+ }
120
+ ```
121
+
122
+ ### Multi-Region Load Balancing
123
+
124
+ ```hcl
125
+ resource "cloudflare_load_balancer_pool" "us" {
126
+ account_id = var.account_id; name = "us-pool"; monitor = cloudflare_load_balancer_monitor.http.id
127
+ origins { name = "us-east"; address = var.us_east_ip }
128
+ }
129
+ resource "cloudflare_load_balancer_pool" "eu" {
130
+ account_id = var.account_id; name = "eu-pool"; monitor = cloudflare_load_balancer_monitor.http.id
131
+ origins { name = "eu-west"; address = var.eu_west_ip }
132
+ }
133
+ resource "cloudflare_load_balancer" "global" {
134
+ zone_id = cloudflare_zone.main.id; name = "api.example.com"; steering_policy = "geo"
135
+ default_pool_ids = [cloudflare_load_balancer_pool.us.id]
136
+ region_pools { region = "WNAM"; pool_ids = [cloudflare_load_balancer_pool.us.id] }
137
+ region_pools { region = "WEU"; pool_ids = [cloudflare_load_balancer_pool.eu.id] }
138
+ }
139
+ ```
140
+
141
+ ### Secure Admin with Access
142
+
143
+ ```hcl
144
+ resource "cloudflare_pages_project" "admin" { account_id = var.account_id; name = "admin"; production_branch = "main" }
145
+ resource "cloudflare_access_application" "admin" {
146
+ account_id = var.account_id; name = "Admin"; domain = "admin.example.com"; type = "self_hosted"; session_duration = "24h"
147
+ allowed_idps = [cloudflare_access_identity_provider.google.id]
148
+ }
149
+ resource "cloudflare_access_policy" "allow" {
150
+ account_id = var.account_id; application_id = cloudflare_access_application.admin.id
151
+ name = "Allow admins"; decision = "allow"; precedence = 1; include { email = var.admin_emails }
152
+ }
153
+ ```
154
+
155
+ ### Reusable Module
156
+
157
+ ```hcl
158
+ # modules/cloudflare-zone/main.tf
159
+ variable "account_id" { type = string }; variable "domain" { type = string }; variable "ssl_mode" { default = "strict" }
160
+ resource "cloudflare_zone" "main" { account = { id = var.account_id }; name = var.domain }
161
+ resource "cloudflare_zone_settings_override" "main" {
162
+ zone_id = cloudflare_zone.main.id; settings { ssl = var.ssl_mode; always_use_https = "on" }
163
+ }
164
+ output "zone_id" { value = cloudflare_zone.main.id }
165
+
166
+ # Usage: module "prod" { source = "./modules/cloudflare-zone"; account_id = var.account_id; domain = "example.com" }
167
+ ```
168
+
169
+ ## See Also
170
+
171
+ - [README](./README.md) - Provider setup
172
+ - [Configuration Reference](./configuration.md) - All resource types
173
+ - [API Reference](./api.md) - Data sources
174
+ - [Troubleshooting](./gotchas.md) - Best practices, common issues
@@ -0,0 +1,129 @@
1
+ # Cloudflare Tunnel
2
+
3
+ Secure outbound-only connections between infrastructure and Cloudflare's global network.
4
+
5
+ ## Overview
6
+
7
+ Cloudflare Tunnel (formerly Argo Tunnel) enables:
8
+ - **Outbound-only connections** - No inbound ports or firewall changes
9
+ - **Public hostname routing** - Expose local services to internet
10
+ - **Private network access** - Connect internal networks via WARP
11
+ - **Zero Trust integration** - Built-in access policies
12
+
13
+ **Architecture**: Tunnel (persistent object) → Replica (`cloudflared` process) → Origin services
14
+
15
+ **Terminology:**
16
+ - **Tunnel**: Named persistent object with UUID
17
+ - **Replica**: Individual `cloudflared` process connected to tunnel
18
+ - **Config Source**: Where ingress rules stored (local file vs Cloudflare dashboard)
19
+ - **Connector**: Legacy term for replica
20
+
21
+ ## Quick Start
22
+
23
+ ### Local Config
24
+ ```bash
25
+ # Install cloudflared
26
+ brew install cloudflared # macOS
27
+
28
+ # Authenticate
29
+ cloudflared tunnel login
30
+
31
+ # Create tunnel
32
+ cloudflared tunnel create my-tunnel
33
+
34
+ # Route DNS
35
+ cloudflared tunnel route dns my-tunnel app.example.com
36
+
37
+ # Run tunnel
38
+ cloudflared tunnel run my-tunnel
39
+ ```
40
+
41
+ ### Dashboard Config (Recommended)
42
+ 1. **Zero Trust** > **Networks** > **Tunnels** > **Create**
43
+ 2. Name tunnel, copy token
44
+ 3. Configure routes in dashboard
45
+ 4. Run: `cloudflared tunnel --no-autoupdate run --token <TOKEN>`
46
+
47
+ ## Decision Tree
48
+
49
+ **Choose config source:**
50
+ ```
51
+ Need centralized config updates?
52
+ ├─ Yes → Token-based (dashboard config)
53
+ └─ No → Local config file
54
+
55
+ Multiple environments (dev/staging/prod)?
56
+ ├─ Yes → Local config (version controlled)
57
+ └─ No → Either works
58
+
59
+ Need firewall approval?
60
+ └─ See networking.md first
61
+ ```
62
+
63
+ ## Core Commands
64
+
65
+ ```bash
66
+ # Tunnel lifecycle
67
+ cloudflared tunnel create <name>
68
+ cloudflared tunnel list
69
+ cloudflared tunnel info <name>
70
+ cloudflared tunnel delete <name>
71
+
72
+ # DNS routing
73
+ cloudflared tunnel route dns <tunnel> <hostname>
74
+ cloudflared tunnel route list
75
+
76
+ # Private network
77
+ cloudflared tunnel route ip add 10.0.0.0/8 <tunnel>
78
+
79
+ # Run tunnel
80
+ cloudflared tunnel run <name>
81
+ ```
82
+
83
+ ## Configuration Example
84
+
85
+ ```yaml
86
+ # ~/.cloudflared/config.yml
87
+ tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
88
+ credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json
89
+
90
+ ingress:
91
+ - hostname: app.example.com
92
+ service: http://localhost:8000
93
+ - hostname: api.example.com
94
+ service: https://localhost:8443
95
+ originRequest:
96
+ noTLSVerify: true
97
+ - service: http_status:404
98
+ ```
99
+
100
+ ## Reading Order
101
+
102
+ **New to Cloudflare Tunnel:**
103
+ 1. This README (overview, quick start)
104
+ 2. [networking.md](./networking.md) - Firewall rules, connectivity pre-checks
105
+ 3. [configuration.md](./configuration.md) - Config file options, ingress rules
106
+ 4. [patterns.md](./patterns.md) - Docker, Kubernetes, production deployment
107
+ 5. [gotchas.md](./gotchas.md) - Troubleshooting, best practices
108
+
109
+ **Enterprise deployment:**
110
+ 1. [networking.md](./networking.md) - Corporate firewall requirements
111
+ 2. [gotchas.md](./gotchas.md) - HA setup, security best practices
112
+ 3. [patterns.md](./patterns.md) - Kubernetes, rolling updates
113
+
114
+ **Programmatic control:**
115
+ 1. [api.md](./api.md) - REST API, TypeScript SDK
116
+
117
+ ## In This Reference
118
+
119
+ - [networking.md](./networking.md) - Firewall rules, ports, connectivity pre-checks
120
+ - [configuration.md](./configuration.md) - Config file options, ingress rules, TLS settings
121
+ - [api.md](./api.md) - REST API, TypeScript SDK, token-based tunnels
122
+ - [patterns.md](./patterns.md) - Docker, Kubernetes, Terraform, HA, use cases
123
+ - [gotchas.md](./gotchas.md) - Troubleshooting, limitations, best practices
124
+
125
+ ## See Also
126
+
127
+ - [workers](../workers/) - Workers with Tunnel integration
128
+ - [access](../access/) - Zero Trust access policies
129
+ - [warp](../warp/) - WARP client for private networks