opencodekit 0.15.4 → 0.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/command/cloudflare.md +70 -0
  3. package/dist/template/.opencode/package.json +1 -1
  4. package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
  5. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  6. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  7. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  8. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  9. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  10. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  11. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  12. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  13. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  14. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  15. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  16. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  17. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  18. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  19. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  20. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  21. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  22. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  23. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  24. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  25. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  26. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  27. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  28. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  29. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  30. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  31. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  32. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  33. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  34. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  35. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  36. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  37. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  38. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  39. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  40. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  41. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  42. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  43. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  44. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  45. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  46. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  47. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  48. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  49. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  50. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  51. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  52. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  53. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  54. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  55. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  56. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  57. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  58. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  59. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  60. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  61. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  62. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  63. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  64. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  65. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  66. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  67. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  68. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  69. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  70. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  71. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  72. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  73. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  74. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  75. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  76. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  77. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  78. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  79. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  80. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  81. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  82. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  83. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  84. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  85. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  86. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  87. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  88. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  89. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  90. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  91. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  92. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  93. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  94. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  95. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  96. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  97. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  98. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  99. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  100. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  101. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  102. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  103. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  104. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  105. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  106. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  107. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  108. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  109. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  110. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  111. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  112. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  113. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  114. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  115. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  116. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  117. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  118. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  119. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  120. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  121. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  122. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  123. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  124. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  125. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  126. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  127. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  128. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  129. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  130. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  131. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  132. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  133. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  134. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  135. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  136. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  137. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  138. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  139. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  140. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  141. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  142. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  143. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  144. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  145. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  146. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  147. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  148. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  149. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  150. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  151. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  152. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  153. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  154. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  155. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  156. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  157. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  158. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  159. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  160. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  261. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  262. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  263. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
  264. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  265. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  266. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  267. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  268. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  269. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  270. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  271. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  272. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  273. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  274. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  275. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  276. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  277. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  278. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  279. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  280. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  281. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  282. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  283. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  284. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  285. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  286. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  287. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  288. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  289. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  290. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  291. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  292. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  293. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  294. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  295. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  296. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  297. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  298. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  299. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  300. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  301. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  302. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  303. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  304. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  305. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  306. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  307. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  308. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  309. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  310. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  311. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  312. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  313. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  314. package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
  315. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  316. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
  317. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  318. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
  319. package/package.json +1 -1
@@ -0,0 +1,38 @@
1
+ ## REST API
2
+
3
+ **Base URL:** `https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/autorag/rags/{AUTORAG_NAME}`
4
+
5
+ **Note:** API endpoints still use `autorag` naming; functionality identical to AI Search
6
+
7
+ ### Authentication
8
+
9
+ Create API token with permissions:
10
+ - `AI Search - Read`
11
+ - `AI Search Edit`
12
+
13
+ ```bash
14
+ curl -H "Authorization: Bearer {API_TOKEN}" \
15
+ -H "Content-Type: application/json"
16
+ ```
17
+
18
+ ### AI Search Endpoint
19
+
20
+ ```bash
21
+ curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/autorag/rags/{AUTORAG_NAME}/ai-search \
22
+ -H "Authorization: Bearer {API_TOKEN}" \
23
+ -H "Content-Type: application/json" \
24
+ -d '{
25
+ "query": "How do I configure caching?",
26
+ "model": "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
27
+ "system_prompt": "You are a technical documentation assistant.",
28
+ "rewrite_query": true,
29
+ "max_num_results": 10,
30
+ "ranking_options": {
31
+ "score_threshold": 0.3
32
+ },
33
+ "reranking": {
34
+ "enabled": true,
35
+ "model": "@cf/baai/bge-reranker-base"
36
+ },
37
+ "stream": false,
38
+ "fil
@@ -0,0 +1,52 @@
1
+ ### Configuration
2
+
3
+ **wrangler.toml:**
4
+ ```toml
5
+ [ai]
6
+ binding = "AI"
7
+ ```
8
+
9
+ **wrangler.jsonc:**
10
+ ```jsonc
11
+ {
12
+ "ai": {
13
+ "binding": "AI"
14
+ }
15
+ }
16
+ ```
17
+
18
+ ### Code Patterns
19
+
20
+ #### AI Search with Generation
21
+ ```typescript
22
+ // Generate AI response with retrieved context
23
+ const answer = await env.AI.autorag("my-autorag").aiSearch({
24
+ query: "How do I configure rate limits?",
25
+ model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
26
+ rewrite_query: true,
27
+ max_num_results: 10,
28
+ ranking_options: {
29
+ score_threshold: 0.3
30
+ },
31
+ reranking: {
32
+ enabled: true,
33
+ model: "@cf/baai/bge-reranker-base"
34
+ },
35
+ stream: true
36
+ });
37
+
38
+ // Response includes: search_query, response, data[], has_more, next_page
39
+ ```
40
+
41
+ #### Search Only (No Generation)
42
+ ```typescript
43
+ // Retrieve relevant chunks without generation
44
+ const results = await env.AI.autorag("my-autorag").search({
45
+ query: "rate limiting configuration",
46
+ rewrite_query: true,
47
+ max_num_results: 5,
48
+ ranking_options: {
49
+ score_threshold: 0.4
50
+ },
51
+ reranking: {
52
+ enab
@@ -0,0 +1,41 @@
1
+ ### Best Practices
2
+ - Keep files under size limits
3
+ - Use supported formats
4
+ - Maintain valid Service API token
5
+ - Clean up outdated content regularly
6
+ - Monitor Vectorize index limits
7
+
8
+ ## Configuration via Dashboard
9
+
10
+ ### 1. Create Instance
11
+ ```
12
+ Dashboard → AI Search → Create
13
+ → Choose data source (R2 bucket or Website)
14
+ → Configure settings
15
+ → Create
16
+ ```
17
+
18
+ ### 2. Monitor Indexing
19
+ ```
20
+ AI Search → Select instance → Overview
21
+ View: indexing status, progress, stats
22
+ ```
23
+
24
+ ### 3. Test Queries
25
+ ```
26
+ AI Search → Select instance → Playground
27
+ → "Search with AI" or "Search"
28
+ → Enter query
29
+ ```
30
+
31
+ ### 4. Get API Token
32
+ ```
33
+ AI Search → Select instance → Use AI Search → API
34
+ → Create API Token
35
+ → Permissions: "AI Search - Read", "AI Search Edit"
36
+ ```
37
+
38
+ ### 5. Connect to Application
39
+ ```
40
+ AI Search → Select instance → Connect
41
+ C
@@ -0,0 +1,45 @@
1
+ ## Common Use Cases
2
+
3
+ 1. **Enterprise search**: Natural language search over company docs
4
+ 2. **Customer support**: AI-powered chat with product documentation
5
+ 3. **Knowledge bases**: Semantic search over technical content
6
+ 4. **Multitenancy SaaS**: Per-tenant data isolation with folder filters
7
+ 5. **Content discovery**: Finding relevant content across large datasets
8
+
9
+ ## Workers Binding (Recommended)
10
+
11
+ ### Configuration
12
+
13
+ **wrangler.toml:**
14
+ ```toml
15
+ [ai]
16
+ binding = "AI"
17
+ ```
18
+
19
+ **wrangler.jsonc:**
20
+ ```jsonc
21
+ {
22
+ "ai": {
23
+ "binding": "AI"
24
+ }
25
+ }
26
+ ```
27
+
28
+ ### Code Patterns
29
+
30
+ #### AI Search with Generation
31
+ ```typescript
32
+ // Generate AI response with retrieved context
33
+ const answer = await env.AI.autorag("my-autorag").aiSearch({
34
+ query: "How do I configure rate limits?",
35
+ model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
36
+ rewrite_query: true,
37
+ max_num_results: 10,
38
+ ranking_options: {
39
+ score_threshold: 0.3
40
+ },
41
+ reranking: {
42
+ enabled: true,
43
+ model: "@cf/baai/bge-reranker-base"
44
+ },
45
+ stream: tr
@@ -0,0 +1,14 @@
1
+ # Cloudflare Workers Analytics Engine Reference
2
+
3
+ Expert guidance for implementing unlimited-cardinality analytics at scale using Cloudflare Workers Analytics Engine. This skill covers ONLY Analytics Engine - NOT the broader Cloudflare platform....
4
+
5
+ ## In This Reference
6
+
7
+ - **[configuration.md](./configuration.md)** - Setup, deployment, configuration
8
+ - **[api.md](./api.md)** - API endpoints, methods, interfaces
9
+ - **[patterns.md](./patterns.md)** - Common patterns, use cases, examples
10
+ - **[gotchas.md](./gotchas.md)** - Troubleshooting, best practices, limitations
11
+
12
+ ## See Also
13
+
14
+ - [Cloudflare Docs](https://developers.cloudflare.com/)
@@ -0,0 +1,27 @@
1
+ #### API Usage Tracking
2
+
3
+ ```typescript
4
+ export default {
5
+ async fetch(request: Request, env: Env): Promise<Response> {
6
+ const url = new URL(request.url);
7
+ const customerId = request.headers.get("X-Customer-Id");
8
+ const startTime = Date.now();
9
+
10
+ // Handle request...
11
+ const response = await handleRequest(request);
12
+ const duration = Date.now() - startTime;
13
+
14
+ // Track API usage
15
+ env.API_USAGE.writeDataPoint({
16
+ blobs: [
17
+ url.pathname, // blob1: endpoint
18
+ request.method, // blob2: HTTP method
19
+ response.status.toString(), // blob3: status code
20
+ request.cf?.colo as string, // blob4: datacenter
21
+ request.cf?.country as string // blob5: country
22
+ ],
23
+ doubles: [
24
+ duration, // double1: latency ms
25
+ 1 // double2: request count (for summing)
26
+ ],
27
+ indexes: [customerId || "anonymous"
@@ -0,0 +1,45 @@
1
+ ## Configuration
2
+
3
+ ### Wrangler Setup
4
+
5
+ **wrangler.toml:**
6
+ ```toml
7
+ [[analytics_engine_datasets]]
8
+ binding = "WEATHER"
9
+ dataset = "weather_data"
10
+ ```
11
+
12
+ **wrangler.jsonc:**
13
+ ```jsonc
14
+ {
15
+ "$schema": "./node_modules/wrangler/config-schema.json",
16
+ "analytics_engine_datasets": [
17
+ {
18
+ "binding": "WEATHER",
19
+ "dataset": "weather_data"
20
+ }
21
+ ]
22
+ }
23
+ ```
24
+
25
+ **Key Points:**
26
+ - Datasets are created automatically on first write - no manual dashboard setup needed
27
+ - `binding` = variable name accessible in Worker env
28
+ - `dataset` = logical table name (like SQL table - rows/columns should have consistent meaning)
29
+ - Multiple datasets can be defined per Worker
30
+
31
+ ### TypeScript Types
32
+
33
+ ```typescript
34
+ interface Env {
35
+ WEATHER: AnalyticsEngineDataset;
36
+ }
37
+
38
+ // The binding exposes this interface
39
+ interface AnalyticsEngineDataset {
40
+ writeDataPoint(data: AnalyticsEngineDataPoint): void;
41
+ }
42
+
43
+ interface AnalyticsEngineDataPoint {
44
+ blobs?: string[]; // Up to 20 strings (dimensions for grouping/filtering)
45
+ doubles?
@@ -0,0 +1,3 @@
1
+ # Gotchas
2
+
3
+ See main documentation.
@@ -0,0 +1,36 @@
1
+ ### Common Use Cases
2
+
3
+ 1. **Custom customer-facing analytics** - Expose analytics dashboards to your users
4
+ 2. **Usage-based billing** - Track per-customer/per-feature usage for metered billing
5
+ 3. **Service health monitoring** - Per-customer/per-user health metrics
6
+ 4. **High-frequency instrumentation** - Add telemetry to hot code paths without performance impact
7
+ 5. **Event tracking** - User actions, API calls, errors, performance metrics
8
+
9
+ ## Configuration
10
+
11
+ ### Wrangler Setup
12
+
13
+ **wrangler.toml:**
14
+ ```toml
15
+ [[analytics_engine_datasets]]
16
+ binding = "WEATHER"
17
+ dataset = "weather_data"
18
+ ```
19
+
20
+ **wrangler.jsonc:**
21
+ ```jsonc
22
+ {
23
+ "$schema": "./node_modules/wrangler/config-schema.json",
24
+ "analytics_engine_datasets": [
25
+ {
26
+ "binding": "WEATHER",
27
+ "dataset": "weather_data"
28
+ }
29
+ ]
30
+ }
31
+ ```
32
+
33
+ **Key Points:**
34
+ - Datasets are created automatically on first write - no manual dashboard setup needed
35
+ - `binding` = variable name accessible in Worker env
36
+ - `dataset` = logical table name (like SQL table - r
@@ -0,0 +1,21 @@
1
+ # Cloudflare API Integration Skill Reference
2
+
3
+ Guide for working with Cloudflare's REST API - covering authentication, SDK usage, common patterns, and API categories.
4
+
5
+ ## When to Use This Skill
6
+
7
+ Use when working with:
8
+ - Cloudflare API authentication and tokens
9
+ - Official Cloudflare SDKs (TypeScript, Python, Go)
10
+ - Zone management, DNS, Workers, o...
11
+
12
+ ## In This Reference
13
+
14
+ - **[configuration.md](./configuration.md)** - Setup, deployment, configuration
15
+ - **[api.md](./api.md)** - API endpoints, methods, interfaces
16
+ - **[patterns.md](./patterns.md)** - Common patterns, use cases, examples
17
+ - **[gotchas.md](./gotchas.md)** - Troubleshooting, best practices, limitations
18
+
19
+ ## See Also
20
+
21
+ - [Cloudflare Docs](https://developers.cloudflare.com/)
@@ -0,0 +1,31 @@
1
+ ### API Token (Recommended)
2
+
3
+ **Create token**: Dashboard → My Profile → API Tokens → Create Token
4
+
5
+ ```bash
6
+ # Environment variable
7
+ export CLOUDFLARE_API_TOKEN='your-token-here'
8
+
9
+ # curl
10
+ curl "https://api.cloudflare.com/client/v4/zones" \
11
+ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
12
+ ```
13
+
14
+ **Token scopes**: Always use minimal permissions
15
+ - Zone-specific vs account-level
16
+ - Read vs edit permissions
17
+ - Time-limited tokens for CI/CD
18
+
19
+ ### API Key (Legacy - Not Recommended)
20
+
21
+ ```bash
22
+ curl "https://api.cloudflare.com/client/v4/zones" \
23
+ --header "X-Auth-Email: user@example.com" \
24
+ --header "X-Auth-Key: $CLOUDFLARE_API_KEY"
25
+ ```
26
+
27
+ **Limitations**:
28
+ - Full account access (insecure)
29
+ - Cannot scope permissions
30
+ - No expiration
31
+ - Use tokens instead
@@ -0,0 +1,20 @@
1
+ ## Wrangler CLI Integration
2
+
3
+ Wrangler uses Cloudflare API internally:
4
+
5
+ ```bash
6
+ # Configure authentication
7
+ wrangler login
8
+ # Or
9
+ export CLOUDFLARE_API_TOKEN='token'
10
+
11
+ # Common commands that use API
12
+ wrangler deploy # Uploads worker via API
13
+ wrangler kv:key put # KV operations
14
+ wrangler r2 bucket create # R2 operations
15
+ wrangler d1 execute # D1 operations
16
+ wrangler pages deploy # Pages operations
17
+
18
+ # Get API configuration
19
+ wrangler whoami # Shows authenticated user
20
+ ```
@@ -0,0 +1,28 @@
1
+ ## Best Practices
2
+
3
+ ### Security
4
+
5
+ - **Never commit tokens**: Use environment variables
6
+ - **Minimal permissions**: Create scoped API tokens
7
+ - **Rotate tokens**: Regularly refresh tokens
8
+ - **Use token expiration**: Set expiry dates
9
+ - **Audit token usage**: Monitor API logs
10
+
11
+ ### Performance
12
+
13
+ - **Batch operations**: Group related API calls
14
+ - **Use pagination wisely**: Don't fetch all data if unnecessary
15
+ - **Cache responses**: Store rarely-changing data locally
16
+ - **Parallel requests**: Use `Promise.all()` for independent operations
17
+ - **Handle rate limits**: Implement exponential backoff
18
+
19
+ ### Code organization
20
+
21
+ ```typescript
22
+ // Create reusable client instance
23
+ export const cfClient = new Cloudflare({
24
+ apiToken: process.env.CLOUDFLARE_API_TOKEN,
25
+ });
26
+
27
+ // Wrap common operations
28
+ export async function
@@ -0,0 +1,47 @@
1
+ ## Common API Categories
2
+
3
+ ### Zone Management
4
+
5
+ ```typescript
6
+ // List zones (with filtering)
7
+ const zones = await client.zones.list({
8
+ account: { id: 'account-id' },
9
+ status: 'active',
10
+ });
11
+
12
+ // Create zone
13
+ const zone = await client.zones.create({
14
+ account: { id: 'account-id' },
15
+ name: 'example.com',
16
+ type: 'full', // or 'partial'
17
+ });
18
+
19
+ // Update zone
20
+ await client.zones.edit('zone-id', {
21
+ paused: false,
22
+ vanity_name_servers: ['ns1.example.com', 'ns2.example.com'],
23
+ });
24
+
25
+ // Delete zone
26
+ await client.zones.delete('zone-id');
27
+ ```
28
+
29
+ ### DNS Management
30
+
31
+ ```typescript
32
+ // Create record
33
+ await client.dns.records.create({
34
+ zone_id: 'zone-id',
35
+ type: 'A' | 'AAAA' | 'CNAME' | 'TXT' | 'MX' | 'SRV',
36
+ name: 'subdomain.example.com',
37
+ content: '192.0.2.1',
38
+ ttl: 1, // 1 = auto, or specific seconds
39
+ proxied: true, // Orange cloud
40
+ priority: 10, // For MX/SRV records
41
+ });
42
+
43
+ // List records (with filtering)
44
+ const records = await client.dns.records.list({
45
+ zone_id: 'zone-id',
46
+ type: 'A',
47
+ name: 'exa
@@ -0,0 +1,20 @@
1
+ # Cloudflare API Shield Reference
2
+
3
+ Expert guidance for API Shield - comprehensive API security suite for discovery, protection, and monitoring.
4
+
5
+ ## In This Reference
6
+
7
+ - **[configuration.md](./configuration.md)** - Setup, session identifiers, rules, token/mTLS configs
8
+ - **[api.md](./api.md)** - Endpoint management, discovery, validation APIs, GraphQL operations
9
+ - **[patterns.md](./patterns.md)** - Common patterns, progressive rollout, OWASP mappings, workflows
10
+ - **[gotchas.md](./gotchas.md)** - Troubleshooting, false positives, performance, best practices
11
+
12
+ ## Quick Start
13
+
14
+ API Shield: Enterprise-grade API security (Discovery, Schema Validation, JWT, mTLS, Sequence Enforcement). Available as Enterprise add-on with preview access.
15
+
16
+ ## See Also
17
+
18
+ - [API Shield Docs](https://developers.cloudflare.com/api-shield/)
19
+ - [API Reference](https://developers.cloudflare.com/api/resources/api_gateway/)
20
+ - [OWASP API Security Top 10](https://owasp.org/www-project-api-security/)
@@ -0,0 +1,78 @@
1
+ # API Reference
2
+
3
+ Base: `/zones/{zone_id}/api_gateway`
4
+
5
+ ## Endpoints
6
+
7
+ ```bash
8
+ GET /operations # List
9
+ GET /operations/{op_id} # Get single
10
+ POST /operations/item # Create: {endpoint,host,method}
11
+ POST /operations # Bulk: {operations:[{endpoint,host,method}]}
12
+ DELETE /operations/{op_id} # Delete
13
+ DELETE /operations # Bulk delete: {operation_ids:[...]}
14
+ ```
15
+
16
+ ## Discovery
17
+
18
+ ```bash
19
+ GET /discovery/operations # List discovered
20
+ PATCH /discovery/operations/{op_id} # Update: {state:"saved"|"ignored"}
21
+ PATCH /discovery/operations # Bulk: {operation_ids:{id:{state}}}
22
+ GET /discovery # OpenAPI export
23
+ ```
24
+
25
+ ## Config
26
+
27
+ ```bash
28
+ GET /configuration # Get session ID config
29
+ PUT /configuration # Update: {auth_id_characteristics:[{name,type:"header"|"cookie"}]}
30
+ ```
31
+
32
+ ## Token Validation
33
+
34
+ ```bash
35
+ GET /token_validation # List
36
+ POST /token_validation # Create: {name,location:{header:"..."},jwks:"..."}
37
+ POST /jwt_validation_rules # Rule: {name,hostname,token_validation_id,action:"block"}
38
+ ```
39
+
40
+ ## Workers
41
+
42
+ API client:
43
+ ```js
44
+ export default {
45
+ async fetch(req, env) {
46
+ const jwt = await generateJWT(env.JWT_SECRET);
47
+ return fetch('https://api.example.com/data', {
48
+ headers: {'Authorization': `Bearer ${jwt}`, 'Content-Type': 'application/json'}
49
+ });
50
+ }
51
+ }
52
+ ```
53
+
54
+ Dynamic JWKS:
55
+ ```js
56
+ export default {
57
+ async scheduled(event, env) {
58
+ const jwks = await (await fetch('https://auth.example.com/.well-known/jwks.json')).json();
59
+ await fetch(`https://api.cloudflare.com/client/v4/zones/${env.ZONE_ID}/api_gateway/token_validation/${env.CONFIG_ID}`, {
60
+ method: 'PATCH',
61
+ headers: {'Authorization': `Bearer ${env.CF_API_TOKEN}`, 'Content-Type': 'application/json'},
62
+ body: JSON.stringify({jwks: JSON.stringify(jwks)})
63
+ });
64
+ }
65
+ }
66
+ ```
67
+
68
+ ## Firewall Fields
69
+
70
+ ```js
71
+ cf.api_gateway.auth_id_present // Session ID present
72
+ cf.api_gateway.request_violates_schema // Schema violation
73
+ cf.api_gateway.fallthrough_triggered // No endpoint match
74
+ cf.api_gateway.jwt_claims_valid // JWT valid
75
+ lookup_json_string(http.request.jwt.claims["{config_id}"][0], "claim_name")
76
+ cf.tls_client_auth.cert_verified // mTLS cert valid
77
+ cf.tls_client_auth.cert_fingerprint_sha256
78
+ ```
@@ -0,0 +1,128 @@
1
+ # Configuration
2
+
3
+ ## Schema Validation Setup
4
+
5
+ **Upload schema (Dashboard):**
6
+ ```
7
+ Security > API Shield > Schema validation > Add validation
8
+ - Upload .yml/.yaml/.json (OpenAPI v3.0)
9
+ - Endpoints auto-added to Endpoint Management
10
+ - Action: Log/Block/None
11
+ ```
12
+
13
+ **Change default action:**
14
+ ```
15
+ Security > API Shield > Settings > Schema validation
16
+ Per-endpoint: Filter → ellipses → Change action
17
+ ```
18
+
19
+ **Fallthrough rule** (catch-all unknown endpoints):
20
+ ```
21
+ Security > API Shield > Settings > Fallthrough > Use Template
22
+ - Select hostnames
23
+ - Create rule with cf.api_gateway.fallthrough_triggered
24
+ ```
25
+
26
+ **Body inspection:** Supports `application/json`, `*/*`, `application/*`. Disable origin MIME sniffing to prevent bypasses.
27
+
28
+ ## JWT Validation
29
+
30
+ **Setup token config:**
31
+ ```
32
+ Security > API Shield > Settings > JWT Settings > Add configuration
33
+ - Name: "Auth0 JWT Config"
34
+ - Location: Header/Cookie + name (e.g., "Authorization")
35
+ - JWKS: Paste public keys from IdP
36
+ ```
37
+
38
+ **Create validation rule:**
39
+ ```
40
+ Security > API Shield > API Rules > Add rule
41
+ - Hostname: api.example.com
42
+ - Deselect endpoints to ignore
43
+ - Token config: Select config
44
+ - Enforce presence: Ignore or Mark as non-compliant
45
+ - Action: Log/Block/Challenge
46
+ ```
47
+
48
+ **Rate limit by JWT claim:**
49
+ ```wirefilter
50
+ lookup_json_string(http.request.jwt.claims["{config_id}"][0], "sub")
51
+ ```
52
+
53
+ **Special cases:**
54
+ - Two JWTs, different IdPs: Create 2 configs, select both, "Validate all"
55
+ - IdP migration: 2 configs + 2 rules, adjust actions per state
56
+ - Bearer prefix: API Shield handles with/without
57
+ - Nested claims: Dot notation `user.email`
58
+
59
+ ## Mutual TLS (mTLS)
60
+
61
+ **Setup:**
62
+ ```
63
+ SSL/TLS > Client Certificates > Create Certificate
64
+ - Generate CF-managed CA (all plans)
65
+ - Upload custom CA (Enterprise, max 5)
66
+ ```
67
+
68
+ **Configure mTLS rule:**
69
+ ```
70
+ Security > API Shield > mTLS
71
+ - Select hostname(s)
72
+ - Choose certificate(s)
73
+ - Action: Block/Log/Challenge
74
+ ```
75
+
76
+ **Test:**
77
+ ```bash
78
+ openssl req -x509 -newkey rsa:4096 -keyout client-key.pem -out client-cert.pem -days 365
79
+ curl https://api.example.com/endpoint --cert client-cert.pem --key client-key.pem
80
+ ```
81
+
82
+ ## Session Identifiers
83
+
84
+ Critical for Sequence Mitigation + analytics. Configure header/cookie that uniquely IDs API users.
85
+
86
+ **Examples:** JWT sub claim, session token, API key, custom user ID header
87
+
88
+ **Configure:**
89
+ ```
90
+ Security > API Shield > Settings > Session Identifiers
91
+ - Type: Header/Cookie
92
+ - Name: "X-User-ID" or "Authorization"
93
+ ```
94
+
95
+ ## Terraform
96
+
97
+ ```hcl
98
+ # Session identifier
99
+ resource "cloudflare_api_shield" "main" {
100
+ zone_id = var.zone_id
101
+ auth_id_characteristics {
102
+ type = "header"
103
+ name = "Authorization"
104
+ }
105
+ }
106
+
107
+ # Add endpoint
108
+ resource "cloudflare_api_shield_operation" "users_get" {
109
+ zone_id = var.zone_id
110
+ method = "GET"
111
+ host = "api.example.com"
112
+ endpoint = "/api/users/{id}"
113
+ }
114
+
115
+ # JWT validation rule
116
+ resource "cloudflare_ruleset" "jwt_validation" {
117
+ zone_id = var.zone_id
118
+ name = "API JWT Validation"
119
+ kind = "zone"
120
+ phase = "http_request_firewall_custom"
121
+
122
+ rules {
123
+ action = "block"
124
+ expression = "(http.host eq \"api.example.com\" and not cf.api_gateway.jwt_claims_valid)"
125
+ description = "Block invalid JWTs"
126
+ }
127
+ }
128
+ ```