opencodekit 0.15.3 → 0.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/AGENTS.md +209 -77
  3. package/dist/template/.opencode/agent/plan.md +4 -0
  4. package/dist/template/.opencode/command/cloudflare.md +70 -0
  5. package/dist/template/.opencode/package.json +1 -1
  6. package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
  7. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  8. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  9. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  10. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  11. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  12. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  13. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  14. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  15. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  16. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  17. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  18. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  19. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  20. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  21. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  22. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  23. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  24. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  25. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  26. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  27. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  28. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  29. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  30. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  31. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  32. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  33. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  34. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  35. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  36. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  37. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  38. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  39. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  40. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  41. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  42. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  43. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  44. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  45. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  46. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  47. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  48. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  49. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  50. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  51. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  52. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  53. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  54. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  55. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  56. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  57. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  58. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  59. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  60. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  61. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  62. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  63. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  64. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  65. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  66. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  67. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  68. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  69. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  70. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  71. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  72. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  73. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  74. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  75. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  76. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  77. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  78. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  79. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  80. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  81. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  82. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  83. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  84. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  85. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  86. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  87. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  88. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  89. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  90. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  91. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  92. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  93. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  94. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  95. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  96. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  97. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  98. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  99. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  100. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  101. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  102. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  103. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  104. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  105. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  106. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  107. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  108. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  109. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  110. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  111. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  112. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  113. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  114. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  115. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  116. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  117. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  118. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  119. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  120. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  121. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  122. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  123. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  124. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  125. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  126. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  127. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  128. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  129. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  130. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  131. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  132. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  133. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  134. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  135. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  136. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  137. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  138. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  139. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  140. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  141. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  142. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  143. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  144. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  145. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  146. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  147. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  148. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  149. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  150. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  151. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  152. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  153. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  154. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  155. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  156. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  157. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  158. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  159. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  160. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  261. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  262. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  263. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  264. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  265. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
  266. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  267. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  268. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  269. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  270. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  271. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  272. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  273. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  274. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  275. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  276. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  277. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  278. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  279. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  280. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  281. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  282. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  283. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  284. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  285. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  286. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  287. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  288. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  289. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  290. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  291. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  292. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  293. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  294. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  295. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  296. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  297. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  298. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  299. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  300. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  301. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  302. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  303. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  304. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  305. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  306. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  307. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  308. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  309. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  310. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  311. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  312. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  313. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  314. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  315. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  316. package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
  317. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  318. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
  319. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  320. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
  321. package/package.json +1 -1
@@ -0,0 +1,159 @@
1
+ # Terraform Data Sources Reference
2
+
3
+ Query existing Cloudflare resources to reference in your configurations.
4
+
5
+ ## Zone Data Sources
6
+
7
+ ```hcl
8
+ # Get zone by name
9
+ data "cloudflare_zone" "example" {
10
+ name = "example.com"
11
+ }
12
+
13
+ # Use in resources
14
+ resource "cloudflare_dns_record" "www" {
15
+ zone_id = data.cloudflare_zone.example.id
16
+ name = "www"
17
+ # ...
18
+ }
19
+ ```
20
+
21
+ ## Account Data Sources
22
+
23
+ ```hcl
24
+ # List all accounts
25
+ data "cloudflare_accounts" "main" {
26
+ name = "My Account"
27
+ }
28
+
29
+ # Use account ID
30
+ resource "cloudflare_worker_script" "api" {
31
+ account_id = data.cloudflare_accounts.main.accounts[0].id
32
+ # ...
33
+ }
34
+ ```
35
+
36
+ ## Worker Data Sources
37
+
38
+ ```hcl
39
+ # Get existing worker script
40
+ data "cloudflare_worker_script" "existing" {
41
+ account_id = var.account_id
42
+ name = "existing-worker"
43
+ }
44
+
45
+ # Reference in service bindings
46
+ resource "cloudflare_worker_script" "consumer" {
47
+ service_binding {
48
+ name = "UPSTREAM"
49
+ service = data.cloudflare_worker_script.existing.name
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## KV Data Sources
55
+
56
+ ```hcl
57
+ # Get KV namespace
58
+ data "cloudflare_workers_kv_namespace" "existing" {
59
+ account_id = var.account_id
60
+ namespace_id = "abc123"
61
+ }
62
+
63
+ # Use in worker binding
64
+ resource "cloudflare_worker_script" "api" {
65
+ kv_namespace_binding {
66
+ name = "KV"
67
+ namespace_id = data.cloudflare_workers_kv_namespace.existing.id
68
+ }
69
+ }
70
+ ```
71
+
72
+ ## IP Ranges Data Source
73
+
74
+ ```hcl
75
+ # Get Cloudflare IP ranges (for firewall rules)
76
+ data "cloudflare_ip_ranges" "cloudflare" {}
77
+
78
+ output "ipv4_cidrs" {
79
+ value = data.cloudflare_ip_ranges.cloudflare.ipv4_cidr_blocks
80
+ }
81
+
82
+ output "ipv6_cidrs" {
83
+ value = data.cloudflare_ip_ranges.cloudflare.ipv6_cidr_blocks
84
+ }
85
+
86
+ # Use in security group rules (AWS example)
87
+ resource "aws_security_group_rule" "allow_cloudflare" {
88
+ type = "ingress"
89
+ from_port = 443
90
+ to_port = 443
91
+ protocol = "tcp"
92
+ cidr_blocks = data.cloudflare_ip_ranges.cloudflare.ipv4_cidr_blocks
93
+ security_group_id = aws_security_group.web.id
94
+ }
95
+ ```
96
+
97
+ ## Common Patterns
98
+
99
+ ### Import Existing Resources
100
+
101
+ ```bash
102
+ # Find zone ID in dashboard
103
+ terraform import cloudflare_zone.example <zone-id>
104
+
105
+ # Import DNS record
106
+ terraform import cloudflare_dns_record.example <zone-id>/<record-id>
107
+
108
+ # Import worker script
109
+ terraform import cloudflare_worker_script.api <account-id>/<script-name>
110
+
111
+ # Import KV namespace
112
+ terraform import cloudflare_workers_kv_namespace.cache <account-id>/<namespace-id>
113
+ ```
114
+
115
+ ### Reference Across Modules
116
+
117
+ ```hcl
118
+ # modules/worker/main.tf
119
+ data "cloudflare_zone" "main" {
120
+ name = var.domain
121
+ }
122
+
123
+ resource "cloudflare_worker_route" "api" {
124
+ zone_id = data.cloudflare_zone.main.id
125
+ pattern = "api.${var.domain}/*"
126
+ script_name = cloudflare_worker_script.api.name
127
+ }
128
+ ```
129
+
130
+ ### Output Important Values
131
+
132
+ ```hcl
133
+ output "zone_id" {
134
+ value = cloudflare_zone.main.id
135
+ description = "Zone ID for DNS management"
136
+ }
137
+
138
+ output "worker_url" {
139
+ value = "https://${cloudflare_worker_domain.api.hostname}"
140
+ description = "Worker API endpoint"
141
+ }
142
+
143
+ output "kv_namespace_id" {
144
+ value = cloudflare_workers_kv_namespace.app.id
145
+ sensitive = false
146
+ }
147
+
148
+ output "name_servers" {
149
+ value = cloudflare_zone.main.name_servers
150
+ description = "Name servers for domain registration"
151
+ }
152
+ ```
153
+
154
+ ## See Also
155
+
156
+ - [README](./README.md) - Provider setup
157
+ - [Configuration Reference](./configuration.md) - All resource types
158
+ - [Patterns](./patterns.md) - Architecture patterns
159
+ - [Troubleshooting](./gotchas.md) - Common issues
@@ -0,0 +1,156 @@
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
+ ```hcl
28
+ # Worker with bindings
29
+ resource "cloudflare_worker_script" "api" {
30
+ account_id = var.account_id; name = "api-worker"; content = file("worker.js"); module = true
31
+ compatibility_date = "2025-01-01"
32
+ kv_namespace_binding { name = "KV"; namespace_id = cloudflare_workers_kv_namespace.cache.id }
33
+ r2_bucket_binding { name = "BUCKET"; bucket_name = cloudflare_r2_bucket.assets.name }
34
+ d1_database_binding { name = "DB"; database_id = cloudflare_d1_database.app.id }
35
+ service_binding { name = "AUTH"; service = "auth-worker" }
36
+ secret_text_binding { name = "SECRET"; text = var.secret }
37
+ }
38
+
39
+ # Routes & domains
40
+ resource "cloudflare_worker_route" "api" {
41
+ zone_id = cloudflare_zone.example.id; pattern = "api.example.com/*"; script_name = cloudflare_worker_script.api.name
42
+ }
43
+ resource "cloudflare_worker_cron_trigger" "task" {
44
+ account_id = var.account_id; script_name = cloudflare_worker_script.api.name
45
+ schedules = ["*/5 * * * *"] # Every 5min
46
+ }
47
+ ```
48
+
49
+ ## Storage (KV, R2, D1)
50
+
51
+ ```hcl
52
+ # KV
53
+ resource "cloudflare_workers_kv_namespace" "cache" { account_id = var.account_id; title = "cache" }
54
+ resource "cloudflare_workers_kv" "config" {
55
+ account_id = var.account_id; namespace_id = cloudflare_workers_kv_namespace.cache.id
56
+ key_name = "config"; value = jsonencode({ version = "1.0" })
57
+ }
58
+
59
+ # R2
60
+ resource "cloudflare_r2_bucket" "assets" { account_id = var.account_id; name = "assets"; location = "WNAM" }
61
+
62
+ # D1 (schema migrations via wrangler)
63
+ resource "cloudflare_d1_database" "app" { account_id = var.account_id; name = "app-db" }
64
+ ```
65
+
66
+ ## Pages
67
+
68
+ ```hcl
69
+ resource "cloudflare_pages_project" "site" {
70
+ account_id = var.account_id; name = "site"; production_branch = "main"
71
+ deployment_configs {
72
+ production {
73
+ compatibility_date = "2025-01-01"
74
+ environment_variables = { NODE_ENV = "production" }
75
+ kv_namespaces = { KV = cloudflare_workers_kv_namespace.cache.id }
76
+ d1_databases = { DB = cloudflare_d1_database.app.id }
77
+ }
78
+ }
79
+ build_config { build_command = "npm run build"; destination_dir = "dist" }
80
+ source { type = "github"; config { owner = "org"; repo_name = "site"; production_branch = "main" }}
81
+ }
82
+
83
+ resource "cloudflare_pages_domain" "custom" {
84
+ account_id = var.account_id; project_name = cloudflare_pages_project.site.name; domain = "site.example.com"
85
+ }
86
+ ```
87
+
88
+ ## Rulesets (WAF, Redirects, Cache)
89
+
90
+ ```hcl
91
+ # WAF
92
+ resource "cloudflare_ruleset" "waf" {
93
+ zone_id = cloudflare_zone.example.id; name = "WAF"; kind = "zone"; phase = "http_request_firewall_custom"
94
+ rules { action = "block"; enabled = true; expression = "(cf.client.bot) and not (cf.verified_bot)" }
95
+ }
96
+
97
+ # Redirects
98
+ resource "cloudflare_ruleset" "redirects" {
99
+ zone_id = cloudflare_zone.example.id; name = "Redirects"; kind = "zone"; phase = "http_request_dynamic_redirect"
100
+ rules {
101
+ action = "redirect"; enabled = true; expression = "(http.request.uri.path eq \"/old\")"
102
+ action_parameters { from_value { status_code = 301; target_url { value = "https://example.com/new" }}}
103
+ }
104
+ }
105
+
106
+ # Cache rules
107
+ resource "cloudflare_ruleset" "cache" {
108
+ zone_id = cloudflare_zone.example.id; name = "Cache"; kind = "zone"; phase = "http_request_cache_settings"
109
+ rules {
110
+ action = "set_cache_settings"; enabled = true; expression = "(http.request.uri.path matches \"\\.(jpg|png|css|js)$\")"
111
+ action_parameters { cache = true; edge_ttl { mode = "override_origin"; default = 86400 }}
112
+ }
113
+ }
114
+ ```
115
+
116
+ ## Load Balancers
117
+
118
+ ```hcl
119
+ resource "cloudflare_load_balancer_monitor" "http" {
120
+ account_id = var.account_id; type = "http"; path = "/health"; interval = 60; timeout = 5
121
+ }
122
+ resource "cloudflare_load_balancer_pool" "api" {
123
+ account_id = var.account_id; name = "api-pool"; monitor = cloudflare_load_balancer_monitor.http.id
124
+ origins { name = "api-1"; address = "192.0.2.1" }
125
+ origins { name = "api-2"; address = "192.0.2.2" }
126
+ }
127
+ resource "cloudflare_load_balancer" "api" {
128
+ zone_id = cloudflare_zone.example.id; name = "api.example.com"
129
+ default_pool_ids = [cloudflare_load_balancer_pool.api.id]; steering_policy = "geo"
130
+ }
131
+ ```
132
+
133
+ ## Access (Zero Trust)
134
+
135
+ ```hcl
136
+ resource "cloudflare_access_application" "admin" {
137
+ account_id = var.account_id; name = "Admin"; domain = "admin.example.com"; type = "self_hosted"
138
+ session_duration = "24h"; allowed_idps = [cloudflare_access_identity_provider.github.id]
139
+ }
140
+ resource "cloudflare_access_policy" "allow" {
141
+ account_id = var.account_id; application_id = cloudflare_access_application.admin.id
142
+ name = "Allow"; decision = "allow"; precedence = 1
143
+ include { email = ["admin@example.com"] }
144
+ }
145
+ resource "cloudflare_access_identity_provider" "github" {
146
+ account_id = var.account_id; name = "GitHub"; type = "github"
147
+ config { client_id = var.github_id; client_secret = var.github_secret }
148
+ }
149
+ ```
150
+
151
+ ## See Also
152
+
153
+ - [README](./README.md) - Provider setup
154
+ - [API](./api.md) - Data sources
155
+ - [Patterns](./patterns.md) - Use cases
156
+ - [Troubleshooting](./gotchas.md) - Issues
@@ -0,0 +1,207 @@
1
+ # Terraform Troubleshooting & Best Practices
2
+
3
+ Common issues, security considerations, and best practices.
4
+
5
+ ## Common Errors
6
+
7
+ ### "Error: couldn't find resource"
8
+
9
+ **Cause**: Resource deleted outside Terraform
10
+ **Solution**:
11
+ ```bash
12
+ terraform import cloudflare_zone.example <zone-id>
13
+ # Or remove from state:
14
+ terraform state rm cloudflare_zone.example
15
+ ```
16
+
17
+ ### "409 Conflict" on worker deployment
18
+
19
+ **Cause**: Worker deployed by both Terraform and wrangler
20
+ **Solution**: Choose one deployment method. If using Terraform, remove wrangler deployments.
21
+
22
+ ### DNS record already exists
23
+
24
+ **Cause**: Existing record not imported into Terraform
25
+ **Solution**:
26
+ ```bash
27
+ # Find record ID in Cloudflare dashboard
28
+ terraform import cloudflare_dns_record.example <zone-id>/<record-id>
29
+ ```
30
+
31
+ ### "Invalid provider configuration"
32
+
33
+ **Cause**: API token missing or invalid
34
+ **Solution**:
35
+ ```bash
36
+ export CLOUDFLARE_API_TOKEN="your-token"
37
+ # Or check token permissions in dashboard
38
+ ```
39
+
40
+ ### State locking errors
41
+
42
+ **Cause**: Multiple Terraform runs or stale lock
43
+ **Solution**:
44
+ ```bash
45
+ # Remove stale lock (with caution!)
46
+ terraform force-unlock <lock-id>
47
+ ```
48
+
49
+ ## Best Practices
50
+
51
+ ### 1. Resource Naming
52
+
53
+ ```hcl
54
+ # Good: Consistent naming with environment
55
+ locals { env_prefix = "${var.environment}-${var.project_name}" }
56
+
57
+ resource "cloudflare_worker_script" "api" { name = "${local.env_prefix}-api" }
58
+ resource "cloudflare_workers_kv_namespace" "cache" { title = "${local.env_prefix}-cache" }
59
+ ```
60
+
61
+ ### 2. Output Important Values
62
+
63
+ ```hcl
64
+ output "zone_id" { value = cloudflare_zone.main.id; description = "Zone ID for DNS management" }
65
+ output "worker_url" { value = "https://${cloudflare_worker_domain.api.hostname}"; description = "Worker API endpoint" }
66
+ output "kv_namespace_id" { value = cloudflare_workers_kv_namespace.app.id; sensitive = false }
67
+ ```
68
+
69
+ ### 3. Use Data Sources for Existing Resources
70
+
71
+ ```hcl
72
+ # Reference existing zone
73
+ data "cloudflare_zone" "main" { name = var.domain }
74
+
75
+ # Reference existing account
76
+ data "cloudflare_accounts" "main" { name = var.account_name }
77
+
78
+ # Use in resources
79
+ resource "cloudflare_worker_route" "api" {
80
+ zone_id = data.cloudflare_zone.main.id
81
+ # ...
82
+ }
83
+ ```
84
+
85
+ ### 4. Separate Secrets from Code
86
+
87
+ ```hcl
88
+ # variables.tf
89
+ variable "cloudflare_api_token" {
90
+ type = string; sensitive = true; description = "Cloudflare API token"
91
+ }
92
+
93
+ # terraform.tfvars (gitignored)
94
+ cloudflare_api_token = "actual-token-here"
95
+
96
+ # Or use environment variables
97
+ # export TF_VAR_cloudflare_api_token="actual-token-here"
98
+ ```
99
+
100
+ ### 5. Use Separate Directories per Environment (RECOMMENDED)
101
+
102
+ ```
103
+ environments/
104
+ production/ # Separate state, separate vars
105
+ staging/
106
+ development/
107
+ ```
108
+
109
+ Better than workspaces for isolation and clarity.
110
+
111
+ ### 6. Version Control State Locking
112
+
113
+ ```hcl
114
+ # S3 backend with DynamoDB locking
115
+ terraform {
116
+ backend "s3" {
117
+ bucket = "terraform-state"; key = "cloudflare/terraform.tfstate"; region = "us-east-1"
118
+ dynamodb_table = "terraform-locks"; encrypt = true
119
+ }
120
+ }
121
+ ```
122
+
123
+ ## Security Considerations
124
+
125
+ 1. **Never commit secrets**: Use variables + environment vars or secret management tools
126
+ 2. **Scope API tokens**: Create tokens with minimal required permissions
127
+ 3. **Enable state encryption**: Use encrypted S3 backend or Terraform Cloud
128
+ 4. **Use separate tokens per environment**: Different tokens for prod/staging
129
+ 5. **Rotate tokens regularly**: Update tokens in CI/CD systems
130
+ 6. **Review terraform plans**: Always review before applying
131
+ 7. **Use Access for sensitive applications**: Don't expose admin panels publicly
132
+
133
+ ## Common Commands Reference
134
+
135
+ ```bash
136
+ terraform init # Initialize provider
137
+ terraform plan # Plan changes
138
+ terraform apply # Apply changes
139
+ terraform apply -auto-approve # Apply without confirmation
140
+ terraform destroy # Destroy resources
141
+ terraform import cloudflare_zone.example <zone-id> # Import existing
142
+ terraform show # Show current state
143
+ terraform state list # List resources in state
144
+ terraform state rm cloudflare_zone.example # Remove from state (no destroy)
145
+ terraform refresh # Refresh state from infrastructure
146
+ terraform fmt -recursive # Format code
147
+ terraform validate # Validate configuration
148
+ terraform output # Show outputs
149
+ terraform output zone_id # Show specific output
150
+ ```
151
+
152
+ ## Workspace Management
153
+
154
+ ```bash
155
+ # Create workspace
156
+ terraform workspace new production
157
+
158
+ # List workspaces
159
+ terraform workspace list
160
+
161
+ # Switch workspace
162
+ terraform workspace select staging
163
+
164
+ # Note: Separate directories recommended over workspaces for production
165
+ ```
166
+
167
+ ## State Management
168
+
169
+ ```bash
170
+ # List state resources
171
+ terraform state list
172
+
173
+ # Show resource details
174
+ terraform state show cloudflare_zone.example
175
+
176
+ # Move resource in state
177
+ terraform state mv cloudflare_zone.old cloudflare_zone.new
178
+
179
+ # Remove from state (no destroy)
180
+ terraform state rm cloudflare_zone.example
181
+
182
+ # Pull state to local file
183
+ terraform state pull > terraform.tfstate.backup
184
+
185
+ # Push state from local file
186
+ terraform state push terraform.tfstate
187
+ ```
188
+
189
+ ## Limits
190
+
191
+ | Resource | Limit | Notes |
192
+ |----------|-------|-------|
193
+ | API token rate limit | Varies by plan | Use `api_client_logging = true` to debug
194
+ | Worker script size | 10 MB | Includes all dependencies
195
+ | KV keys per namespace | Unlimited | Pay per operation
196
+ | R2 storage | Unlimited | Pay per GB
197
+ | D1 databases | 50,000 per account | Free tier: 10
198
+ | Pages projects | 500 per account | 100 for free accounts
199
+ | DNS records | 3,500 per zone | Free plan
200
+
201
+ ## See Also
202
+
203
+ - [README](./README.md) - Provider setup
204
+ - [Configuration](./configuration.md) - Resources
205
+ - [API](./api.md) - Data sources
206
+ - [Patterns](./patterns.md) - Use cases
207
+ - Provider docs: https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs
@@ -0,0 +1,135 @@
1
+ # Terraform Patterns & Use Cases
2
+
3
+ Architecture patterns, multi-environment setups, and real-world use cases.
4
+
5
+ ## Multi-Environment Setup
6
+
7
+ ```hcl
8
+ # Directory: environments/{production,staging}/main.tf + modules/{zone,worker,pages}
9
+ module "zone" {
10
+ source = "../../modules/zone"; account_id = var.account_id; zone_name = "example.com"; environment = "production"
11
+ }
12
+ module "api_worker" {
13
+ source = "../../modules/worker"; account_id = var.account_id; zone_id = module.zone.zone_id
14
+ name = "api-worker-prod"; script = file("../../workers/api.js"); environment = "production"
15
+ }
16
+ ```
17
+
18
+ ## Worker with All Bindings
19
+
20
+ ```hcl
21
+ locals { worker_name = "full-stack-worker" }
22
+ resource "cloudflare_workers_kv_namespace" "app" { account_id = var.account_id; title = "${local.worker_name}-kv" }
23
+ resource "cloudflare_r2_bucket" "app" { account_id = var.account_id; name = "${local.worker_name}-bucket" }
24
+ resource "cloudflare_d1_database" "app" { account_id = var.account_id; name = "${local.worker_name}-db" }
25
+
26
+ resource "cloudflare_worker_script" "app" {
27
+ account_id = var.account_id; name = local.worker_name; content = file("worker.js"); module = true
28
+ compatibility_date = "2025-01-01"
29
+ kv_namespace_binding { name = "KV"; namespace_id = cloudflare_workers_kv_namespace.app.id }
30
+ r2_bucket_binding { name = "BUCKET"; bucket_name = cloudflare_r2_bucket.app.name }
31
+ d1_database_binding { name = "DB"; database_id = cloudflare_d1_database.app.id }
32
+ secret_text_binding { name = "API_KEY"; text = var.api_key }
33
+ }
34
+ ```
35
+
36
+ ## Wrangler Integration
37
+
38
+ **CRITICAL**: Wrangler and Terraform must NOT manage same resources.
39
+
40
+ **Terraform**: Zones, DNS, security rules, Access, load balancers, worker deployments (CI/CD), KV/R2/D1 resource creation
41
+ **Wrangler**: Local dev (`wrangler dev`), manual deploys, D1 migrations, KV bulk ops, log streaming (`wrangler tail`)
42
+
43
+ ### CI/CD Pattern
44
+
45
+ ```hcl
46
+ # Terraform creates infrastructure
47
+ resource "cloudflare_workers_kv_namespace" "app" { account_id = var.account_id; title = "app-kv" }
48
+ resource "cloudflare_d1_database" "app" { account_id = var.account_id; name = "app-db" }
49
+ output "kv_namespace_id" { value = cloudflare_workers_kv_namespace.app.id }
50
+ output "d1_database_id" { value = cloudflare_d1_database.app.id }
51
+ ```
52
+
53
+ ```yaml
54
+ # GitHub Actions: terraform apply → envsubst wrangler.jsonc.template → wrangler deploy
55
+ - run: terraform apply -auto-approve
56
+ - run: |
57
+ export KV_NAMESPACE_ID=$(terraform output -raw kv_namespace_id)
58
+ envsubst < wrangler.jsonc.template > wrangler.jsonc
59
+ - run: wrangler deploy
60
+ ```
61
+
62
+ ## Use Cases
63
+
64
+ ### Static Site + API Worker
65
+
66
+ ```hcl
67
+ resource "cloudflare_pages_project" "frontend" {
68
+ account_id = var.account_id; name = "frontend"; production_branch = "main"
69
+ build_config { build_command = "npm run build"; destination_dir = "dist" }
70
+ }
71
+ resource "cloudflare_worker_script" "api" {
72
+ account_id = var.account_id; name = "api"; content = file("api-worker.js")
73
+ d1_database_binding { name = "DB"; database_id = cloudflare_d1_database.api_db.id }
74
+ }
75
+ resource "cloudflare_dns_record" "frontend" {
76
+ zone_id = cloudflare_zone.main.id; name = "app"; content = cloudflare_pages_project.frontend.subdomain; type = "CNAME"; proxied = true
77
+ }
78
+ resource "cloudflare_worker_route" "api" {
79
+ zone_id = cloudflare_zone.main.id; pattern = "api.example.com/*"; script_name = cloudflare_worker_script.api.name
80
+ }
81
+ ```
82
+
83
+ ### Multi-Region Load Balancing
84
+
85
+ ```hcl
86
+ resource "cloudflare_load_balancer_pool" "us" {
87
+ account_id = var.account_id; name = "us-pool"; monitor = cloudflare_load_balancer_monitor.http.id
88
+ origins { name = "us-east"; address = var.us_east_ip }
89
+ }
90
+ resource "cloudflare_load_balancer_pool" "eu" {
91
+ account_id = var.account_id; name = "eu-pool"; monitor = cloudflare_load_balancer_monitor.http.id
92
+ origins { name = "eu-west"; address = var.eu_west_ip }
93
+ }
94
+ resource "cloudflare_load_balancer" "global" {
95
+ zone_id = cloudflare_zone.main.id; name = "api.example.com"; steering_policy = "geo"
96
+ default_pool_ids = [cloudflare_load_balancer_pool.us.id]
97
+ region_pools { region = "WNAM"; pool_ids = [cloudflare_load_balancer_pool.us.id] }
98
+ region_pools { region = "WEU"; pool_ids = [cloudflare_load_balancer_pool.eu.id] }
99
+ }
100
+ ```
101
+
102
+ ### Secure Admin with Access
103
+
104
+ ```hcl
105
+ resource "cloudflare_pages_project" "admin" { account_id = var.account_id; name = "admin"; production_branch = "main" }
106
+ resource "cloudflare_access_application" "admin" {
107
+ account_id = var.account_id; name = "Admin"; domain = "admin.example.com"; type = "self_hosted"; session_duration = "24h"
108
+ allowed_idps = [cloudflare_access_identity_provider.google.id]
109
+ }
110
+ resource "cloudflare_access_policy" "allow" {
111
+ account_id = var.account_id; application_id = cloudflare_access_application.admin.id
112
+ name = "Allow admins"; decision = "allow"; precedence = 1; include { email = var.admin_emails }
113
+ }
114
+ ```
115
+
116
+ ### Reusable Module
117
+
118
+ ```hcl
119
+ # modules/cloudflare-zone/main.tf
120
+ variable "account_id" { type = string }; variable "domain" { type = string }; variable "ssl_mode" { default = "strict" }
121
+ resource "cloudflare_zone" "main" { account = { id = var.account_id }; name = var.domain }
122
+ resource "cloudflare_zone_settings_override" "main" {
123
+ zone_id = cloudflare_zone.main.id; settings { ssl = var.ssl_mode; always_use_https = "on" }
124
+ }
125
+ output "zone_id" { value = cloudflare_zone.main.id }
126
+
127
+ # Usage: module "prod" { source = "./modules/cloudflare-zone"; account_id = var.account_id; domain = "example.com" }
128
+ ```
129
+
130
+ ## See Also
131
+
132
+ - [README](./README.md) - Provider setup
133
+ - [Configuration Reference](./configuration.md) - All resource types
134
+ - [API Reference](./api.md) - Data sources
135
+ - [Troubleshooting](./gotchas.md) - Best practices, common issues