pi-cloudflare 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +67 -0
  3. package/bin/setup.mjs +103 -0
  4. package/dist/auth-flow.d.ts +15 -0
  5. package/dist/auth-flow.d.ts.map +1 -0
  6. package/dist/auth-flow.js +90 -0
  7. package/dist/auth-flow.js.map +1 -0
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +47 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/config.d.ts +13 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/index.d.ts +24 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +109 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/oauth.d.ts +44 -0
  21. package/dist/oauth.d.ts.map +1 -0
  22. package/dist/oauth.js +135 -0
  23. package/dist/oauth.js.map +1 -0
  24. package/dist/proxy.d.ts +29 -0
  25. package/dist/proxy.d.ts.map +1 -0
  26. package/dist/proxy.js +39 -0
  27. package/dist/proxy.js.map +1 -0
  28. package/dist/servers.d.ts +19 -0
  29. package/dist/servers.d.ts.map +1 -0
  30. package/dist/servers.js +40 -0
  31. package/dist/servers.js.map +1 -0
  32. package/dist/token-store.d.ts +23 -0
  33. package/dist/token-store.d.ts.map +1 -0
  34. package/dist/token-store.js +47 -0
  35. package/dist/token-store.js.map +1 -0
  36. package/package.json +67 -0
  37. package/skills/agents-sdk/SKILL.md +221 -0
  38. package/skills/agents-sdk/references/browse-the-web.md +63 -0
  39. package/skills/agents-sdk/references/callable.md +92 -0
  40. package/skills/agents-sdk/references/client-sdk.md +110 -0
  41. package/skills/agents-sdk/references/codemode.md +110 -0
  42. package/skills/agents-sdk/references/configuration.md +72 -0
  43. package/skills/agents-sdk/references/durable-execution.md +51 -0
  44. package/skills/agents-sdk/references/email.md +146 -0
  45. package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
  46. package/skills/agents-sdk/references/mcp.md +188 -0
  47. package/skills/agents-sdk/references/observability.md +44 -0
  48. package/skills/agents-sdk/references/queue-retries.md +79 -0
  49. package/skills/agents-sdk/references/routing.md +75 -0
  50. package/skills/agents-sdk/references/server-driven-messages.md +63 -0
  51. package/skills/agents-sdk/references/state-scheduling.md +171 -0
  52. package/skills/agents-sdk/references/streaming-chat.md +198 -0
  53. package/skills/agents-sdk/references/think.md +112 -0
  54. package/skills/agents-sdk/references/voice.md +68 -0
  55. package/skills/agents-sdk/references/webhooks-push.md +86 -0
  56. package/skills/agents-sdk/references/workflows.md +132 -0
  57. package/skills/cloudflare/SKILL.md +248 -0
  58. package/skills/cloudflare/references/agents-sdk/README.md +89 -0
  59. package/skills/cloudflare/references/agents-sdk/api.md +190 -0
  60. package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
  61. package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
  62. package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
  63. package/skills/cloudflare/references/ai-gateway/README.md +175 -0
  64. package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
  65. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
  66. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  67. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
  68. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
  69. package/skills/cloudflare/references/ai-search/README.md +138 -0
  70. package/skills/cloudflare/references/ai-search/api.md +87 -0
  71. package/skills/cloudflare/references/ai-search/configuration.md +88 -0
  72. package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
  73. package/skills/cloudflare/references/ai-search/patterns.md +85 -0
  74. package/skills/cloudflare/references/analytics-engine/README.md +94 -0
  75. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  76. package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
  77. package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
  78. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  79. package/skills/cloudflare/references/api/README.md +66 -0
  80. package/skills/cloudflare/references/api/api.md +204 -0
  81. package/skills/cloudflare/references/api/configuration.md +160 -0
  82. package/skills/cloudflare/references/api/gotchas.md +225 -0
  83. package/skills/cloudflare/references/api/patterns.md +204 -0
  84. package/skills/cloudflare/references/api-shield/README.md +44 -0
  85. package/skills/cloudflare/references/api-shield/api.md +141 -0
  86. package/skills/cloudflare/references/api-shield/configuration.md +192 -0
  87. package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
  88. package/skills/cloudflare/references/api-shield/patterns.md +180 -0
  89. package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
  90. package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
  91. package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
  92. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
  93. package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
  94. package/skills/cloudflare/references/artifacts/README.md +79 -0
  95. package/skills/cloudflare/references/artifacts/api.md +128 -0
  96. package/skills/cloudflare/references/artifacts/configuration.md +92 -0
  97. package/skills/cloudflare/references/bindings/README.md +122 -0
  98. package/skills/cloudflare/references/bindings/api.md +203 -0
  99. package/skills/cloudflare/references/bindings/configuration.md +188 -0
  100. package/skills/cloudflare/references/bindings/gotchas.md +208 -0
  101. package/skills/cloudflare/references/bindings/patterns.md +200 -0
  102. package/skills/cloudflare/references/bot-management/README.md +94 -0
  103. package/skills/cloudflare/references/bot-management/api.md +169 -0
  104. package/skills/cloudflare/references/bot-management/configuration.md +163 -0
  105. package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
  106. package/skills/cloudflare/references/bot-management/patterns.md +182 -0
  107. package/skills/cloudflare/references/browser-rendering/README.md +78 -0
  108. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  109. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  110. package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
  111. package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
  112. package/skills/cloudflare/references/c3/README.md +111 -0
  113. package/skills/cloudflare/references/c3/api.md +71 -0
  114. package/skills/cloudflare/references/c3/configuration.md +81 -0
  115. package/skills/cloudflare/references/c3/gotchas.md +92 -0
  116. package/skills/cloudflare/references/c3/patterns.md +82 -0
  117. package/skills/cloudflare/references/cache-reserve/README.md +147 -0
  118. package/skills/cloudflare/references/cache-reserve/api.md +194 -0
  119. package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
  120. package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
  121. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  122. package/skills/cloudflare/references/containers/README.md +85 -0
  123. package/skills/cloudflare/references/containers/api.md +187 -0
  124. package/skills/cloudflare/references/containers/configuration.md +188 -0
  125. package/skills/cloudflare/references/containers/gotchas.md +178 -0
  126. package/skills/cloudflare/references/containers/patterns.md +202 -0
  127. package/skills/cloudflare/references/cron-triggers/README.md +99 -0
  128. package/skills/cloudflare/references/cron-triggers/api.md +196 -0
  129. package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
  130. package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
  131. package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
  132. package/skills/cloudflare/references/d1/README.md +133 -0
  133. package/skills/cloudflare/references/d1/api.md +196 -0
  134. package/skills/cloudflare/references/d1/configuration.md +191 -0
  135. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  136. package/skills/cloudflare/references/d1/patterns.md +189 -0
  137. package/skills/cloudflare/references/ddos/README.md +41 -0
  138. package/skills/cloudflare/references/ddos/api.md +164 -0
  139. package/skills/cloudflare/references/ddos/configuration.md +93 -0
  140. package/skills/cloudflare/references/ddos/gotchas.md +107 -0
  141. package/skills/cloudflare/references/ddos/patterns.md +174 -0
  142. package/skills/cloudflare/references/do-storage/README.md +75 -0
  143. package/skills/cloudflare/references/do-storage/api.md +102 -0
  144. package/skills/cloudflare/references/do-storage/configuration.md +112 -0
  145. package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
  146. package/skills/cloudflare/references/do-storage/patterns.md +194 -0
  147. package/skills/cloudflare/references/do-storage/testing.md +183 -0
  148. package/skills/cloudflare/references/durable-objects/README.md +185 -0
  149. package/skills/cloudflare/references/durable-objects/api.md +187 -0
  150. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  151. package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
  152. package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
  153. package/skills/cloudflare/references/email-routing/README.md +89 -0
  154. package/skills/cloudflare/references/email-routing/api.md +195 -0
  155. package/skills/cloudflare/references/email-routing/configuration.md +186 -0
  156. package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
  157. package/skills/cloudflare/references/email-routing/patterns.md +229 -0
  158. package/skills/cloudflare/references/email-workers/README.md +151 -0
  159. package/skills/cloudflare/references/email-workers/api.md +237 -0
  160. package/skills/cloudflare/references/email-workers/configuration.md +112 -0
  161. package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
  162. package/skills/cloudflare/references/email-workers/patterns.md +102 -0
  163. package/skills/cloudflare/references/flagship/README.md +59 -0
  164. package/skills/cloudflare/references/flagship/api.md +390 -0
  165. package/skills/cloudflare/references/flagship/configuration.md +202 -0
  166. package/skills/cloudflare/references/flagship/gotchas.md +178 -0
  167. package/skills/cloudflare/references/flagship/patterns.md +469 -0
  168. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  169. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  170. package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
  171. package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
  172. package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
  173. package/skills/cloudflare/references/hyperdrive/README.md +82 -0
  174. package/skills/cloudflare/references/hyperdrive/api.md +143 -0
  175. package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
  176. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  177. package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
  178. package/skills/cloudflare/references/images/README.md +61 -0
  179. package/skills/cloudflare/references/images/api.md +96 -0
  180. package/skills/cloudflare/references/images/configuration.md +211 -0
  181. package/skills/cloudflare/references/images/gotchas.md +99 -0
  182. package/skills/cloudflare/references/images/patterns.md +115 -0
  183. package/skills/cloudflare/references/kv/README.md +89 -0
  184. package/skills/cloudflare/references/kv/api.md +160 -0
  185. package/skills/cloudflare/references/kv/configuration.md +144 -0
  186. package/skills/cloudflare/references/kv/gotchas.md +131 -0
  187. package/skills/cloudflare/references/kv/patterns.md +196 -0
  188. package/skills/cloudflare/references/miniflare/README.md +105 -0
  189. package/skills/cloudflare/references/miniflare/api.md +187 -0
  190. package/skills/cloudflare/references/miniflare/configuration.md +173 -0
  191. package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
  192. package/skills/cloudflare/references/miniflare/patterns.md +181 -0
  193. package/skills/cloudflare/references/network-interconnect/README.md +99 -0
  194. package/skills/cloudflare/references/network-interconnect/api.md +199 -0
  195. package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
  196. package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
  197. package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
  198. package/skills/cloudflare/references/observability/README.md +88 -0
  199. package/skills/cloudflare/references/observability/api.md +164 -0
  200. package/skills/cloudflare/references/observability/configuration.md +169 -0
  201. package/skills/cloudflare/references/observability/gotchas.md +115 -0
  202. package/skills/cloudflare/references/observability/patterns.md +105 -0
  203. package/skills/cloudflare/references/pages/README.md +88 -0
  204. package/skills/cloudflare/references/pages/api.md +204 -0
  205. package/skills/cloudflare/references/pages/configuration.md +201 -0
  206. package/skills/cloudflare/references/pages/gotchas.md +203 -0
  207. package/skills/cloudflare/references/pages/patterns.md +204 -0
  208. package/skills/cloudflare/references/pages-functions/README.md +98 -0
  209. package/skills/cloudflare/references/pages-functions/api.md +143 -0
  210. package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
  211. package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
  212. package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
  213. package/skills/cloudflare/references/pipelines/README.md +90 -0
  214. package/skills/cloudflare/references/pipelines/api.md +124 -0
  215. package/skills/cloudflare/references/pipelines/configuration.md +155 -0
  216. package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
  217. package/skills/cloudflare/references/pipelines/patterns.md +130 -0
  218. package/skills/cloudflare/references/pulumi/README.md +100 -0
  219. package/skills/cloudflare/references/pulumi/api.md +200 -0
  220. package/skills/cloudflare/references/pulumi/configuration.md +198 -0
  221. package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
  222. package/skills/cloudflare/references/pulumi/patterns.md +191 -0
  223. package/skills/cloudflare/references/queues/README.md +96 -0
  224. package/skills/cloudflare/references/queues/api.md +206 -0
  225. package/skills/cloudflare/references/queues/configuration.md +144 -0
  226. package/skills/cloudflare/references/queues/gotchas.md +206 -0
  227. package/skills/cloudflare/references/queues/patterns.md +220 -0
  228. package/skills/cloudflare/references/r2/README.md +95 -0
  229. package/skills/cloudflare/references/r2/api.md +200 -0
  230. package/skills/cloudflare/references/r2/configuration.md +165 -0
  231. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  232. package/skills/cloudflare/references/r2/patterns.md +193 -0
  233. package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
  234. package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
  235. package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
  236. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
  237. package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
  238. package/skills/cloudflare/references/r2-sql/README.md +64 -0
  239. package/skills/cloudflare/references/r2-sql/api.md +121 -0
  240. package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
  241. package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
  242. package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
  243. package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
  244. package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
  245. package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
  246. package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
  247. package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
  248. package/skills/cloudflare/references/realtimekit/README.md +113 -0
  249. package/skills/cloudflare/references/realtimekit/api.md +212 -0
  250. package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
  251. package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
  252. package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
  253. package/skills/cloudflare/references/sandbox/README.md +96 -0
  254. package/skills/cloudflare/references/sandbox/api.md +198 -0
  255. package/skills/cloudflare/references/sandbox/configuration.md +143 -0
  256. package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
  257. package/skills/cloudflare/references/sandbox/patterns.md +201 -0
  258. package/skills/cloudflare/references/secrets-store/README.md +74 -0
  259. package/skills/cloudflare/references/secrets-store/api.md +200 -0
  260. package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
  261. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  262. package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
  263. package/skills/cloudflare/references/smart-placement/README.md +138 -0
  264. package/skills/cloudflare/references/smart-placement/api.md +183 -0
  265. package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
  266. package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
  267. package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
  268. package/skills/cloudflare/references/snippets/README.md +68 -0
  269. package/skills/cloudflare/references/snippets/api.md +198 -0
  270. package/skills/cloudflare/references/snippets/configuration.md +227 -0
  271. package/skills/cloudflare/references/snippets/gotchas.md +86 -0
  272. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  273. package/skills/cloudflare/references/spectrum/README.md +52 -0
  274. package/skills/cloudflare/references/spectrum/api.md +181 -0
  275. package/skills/cloudflare/references/spectrum/configuration.md +194 -0
  276. package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
  277. package/skills/cloudflare/references/spectrum/patterns.md +196 -0
  278. package/skills/cloudflare/references/static-assets/README.md +65 -0
  279. package/skills/cloudflare/references/static-assets/api.md +199 -0
  280. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  281. package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
  282. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  283. package/skills/cloudflare/references/stream/README.md +114 -0
  284. package/skills/cloudflare/references/stream/api-live.md +195 -0
  285. package/skills/cloudflare/references/stream/api.md +199 -0
  286. package/skills/cloudflare/references/stream/configuration.md +141 -0
  287. package/skills/cloudflare/references/stream/gotchas.md +130 -0
  288. package/skills/cloudflare/references/stream/patterns.md +184 -0
  289. package/skills/cloudflare/references/tail-workers/README.md +89 -0
  290. package/skills/cloudflare/references/tail-workers/api.md +200 -0
  291. package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
  292. package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
  293. package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
  294. package/skills/cloudflare/references/terraform/README.md +102 -0
  295. package/skills/cloudflare/references/terraform/api.md +178 -0
  296. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  297. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  298. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  299. package/skills/cloudflare/references/tunnel/README.md +129 -0
  300. package/skills/cloudflare/references/tunnel/api.md +193 -0
  301. package/skills/cloudflare/references/tunnel/configuration.md +157 -0
  302. package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
  303. package/skills/cloudflare/references/tunnel/networking.md +168 -0
  304. package/skills/cloudflare/references/tunnel/patterns.md +192 -0
  305. package/skills/cloudflare/references/turn/README.md +82 -0
  306. package/skills/cloudflare/references/turn/api.md +239 -0
  307. package/skills/cloudflare/references/turn/configuration.md +179 -0
  308. package/skills/cloudflare/references/turn/gotchas.md +231 -0
  309. package/skills/cloudflare/references/turn/patterns.md +213 -0
  310. package/skills/cloudflare/references/turnstile/README.md +99 -0
  311. package/skills/cloudflare/references/turnstile/api.md +240 -0
  312. package/skills/cloudflare/references/turnstile/configuration.md +222 -0
  313. package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
  314. package/skills/cloudflare/references/turnstile/patterns.md +193 -0
  315. package/skills/cloudflare/references/vectorize/README.md +133 -0
  316. package/skills/cloudflare/references/vectorize/api.md +88 -0
  317. package/skills/cloudflare/references/vectorize/configuration.md +88 -0
  318. package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
  319. package/skills/cloudflare/references/vectorize/patterns.md +90 -0
  320. package/skills/cloudflare/references/waf/README.md +113 -0
  321. package/skills/cloudflare/references/waf/api.md +202 -0
  322. package/skills/cloudflare/references/waf/configuration.md +203 -0
  323. package/skills/cloudflare/references/waf/gotchas.md +204 -0
  324. package/skills/cloudflare/references/waf/patterns.md +197 -0
  325. package/skills/cloudflare/references/web-analytics/README.md +141 -0
  326. package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
  327. package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
  328. package/skills/cloudflare/references/web-analytics/integration.md +60 -0
  329. package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
  330. package/skills/cloudflare/references/workerd/README.md +78 -0
  331. package/skills/cloudflare/references/workerd/api.md +185 -0
  332. package/skills/cloudflare/references/workerd/configuration.md +183 -0
  333. package/skills/cloudflare/references/workerd/gotchas.md +139 -0
  334. package/skills/cloudflare/references/workerd/patterns.md +192 -0
  335. package/skills/cloudflare/references/workers/README.md +108 -0
  336. package/skills/cloudflare/references/workers/api.md +195 -0
  337. package/skills/cloudflare/references/workers/configuration.md +185 -0
  338. package/skills/cloudflare/references/workers/frameworks.md +197 -0
  339. package/skills/cloudflare/references/workers/gotchas.md +137 -0
  340. package/skills/cloudflare/references/workers/patterns.md +198 -0
  341. package/skills/cloudflare/references/workers-ai/README.md +197 -0
  342. package/skills/cloudflare/references/workers-ai/api.md +112 -0
  343. package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
  344. package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
  345. package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
  346. package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
  347. package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
  348. package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
  349. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  350. package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
  351. package/skills/cloudflare/references/workers-playground/README.md +127 -0
  352. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  353. package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
  354. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  355. package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
  356. package/skills/cloudflare/references/workers-vpc/README.md +127 -0
  357. package/skills/cloudflare/references/workers-vpc/api.md +202 -0
  358. package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
  359. package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
  360. package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
  361. package/skills/cloudflare/references/workflows/README.md +77 -0
  362. package/skills/cloudflare/references/workflows/api.md +218 -0
  363. package/skills/cloudflare/references/workflows/configuration.md +152 -0
  364. package/skills/cloudflare/references/workflows/gotchas.md +90 -0
  365. package/skills/cloudflare/references/workflows/patterns.md +175 -0
  366. package/skills/cloudflare/references/wrangler/README.md +135 -0
  367. package/skills/cloudflare/references/wrangler/api.md +188 -0
  368. package/skills/cloudflare/references/wrangler/configuration.md +197 -0
  369. package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
  370. package/skills/cloudflare/references/wrangler/patterns.md +209 -0
  371. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  372. package/skills/cloudflare/references/zaraz/README.md +111 -0
  373. package/skills/cloudflare/references/zaraz/api.md +112 -0
  374. package/skills/cloudflare/references/zaraz/configuration.md +90 -0
  375. package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
  376. package/skills/cloudflare/references/zaraz/patterns.md +74 -0
  377. package/skills/cloudflare-email-service/SKILL.md +103 -0
  378. package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
  379. package/skills/cloudflare-email-service/references/deliverability.md +285 -0
  380. package/skills/cloudflare-email-service/references/rest-api.md +184 -0
  381. package/skills/cloudflare-email-service/references/routing.md +199 -0
  382. package/skills/cloudflare-email-service/references/sending.md +252 -0
  383. package/skills/cloudflare-one/SKILL.md +176 -0
  384. package/skills/cloudflare-one-migrations/SKILL.md +110 -0
  385. package/skills/durable-objects/SKILL.md +186 -0
  386. package/skills/durable-objects/references/rules.md +295 -0
  387. package/skills/durable-objects/references/testing.md +264 -0
  388. package/skills/durable-objects/references/workers.md +346 -0
  389. package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
  390. package/skills/sandbox-next/SKILL.md +91 -0
  391. package/skills/sandbox-next/references/api-quick-ref.md +94 -0
  392. package/skills/sandbox-next/references/examples.md +15 -0
  393. package/skills/sandbox-stable/SKILL.md +110 -0
  394. package/skills/turnstile-spin/README.md +51 -0
  395. package/skills/turnstile-spin/SKILL.md +330 -0
  396. package/skills/turnstile-spin/references/astro.md +199 -0
  397. package/skills/turnstile-spin/references/hugo.md +114 -0
  398. package/skills/turnstile-spin/references/nextjs-app.md +261 -0
  399. package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
  400. package/skills/turnstile-spin/references/sveltekit.md +191 -0
  401. package/skills/turnstile-spin/references/vanilla-html.md +157 -0
  402. package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
  403. package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
  404. package/skills/turnstile-spin/scripts/validate.sh +137 -0
  405. package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
  406. package/skills/turnstile-spin/tests/validation.md +62 -0
  407. package/skills/workers-best-practices/SKILL.md +127 -0
  408. package/skills/workers-best-practices/references/review.md +174 -0
  409. package/skills/workers-best-practices/references/rules.md +467 -0
  410. package/skills/wrangler/SKILL.md +922 -0
@@ -0,0 +1,194 @@
1
+ # Gotchas & Best Practices
2
+
3
+ ## Common Errors
4
+
5
+ ### "Container running indefinitely"
6
+
7
+ **Cause:** `keepAlive: true` without calling `destroy()`
8
+ **Solution:** Always call `destroy()` when done with keepAlive containers
9
+
10
+ ```typescript
11
+ const sandbox = getSandbox(env.Sandbox, 'temp', { keepAlive: true });
12
+ try {
13
+ const result = await sandbox.exec('python script.py');
14
+ return result.stdout;
15
+ } finally {
16
+ await sandbox.destroy(); // REQUIRED to free resources
17
+ }
18
+ ```
19
+
20
+ ### "CONTAINER_NOT_READY"
21
+
22
+ **Cause:** Container still provisioning (first request or after sleep)
23
+ **Solution:** Retry after 2-3s
24
+
25
+ ```typescript
26
+ async function execWithRetry(sandbox, cmd) {
27
+ for (let i = 0; i < 3; i++) {
28
+ try {
29
+ return await sandbox.exec(cmd);
30
+ } catch (e) {
31
+ if (e.code === 'CONTAINER_NOT_READY') {
32
+ await new Promise(r => setTimeout(r, 2000));
33
+ continue;
34
+ }
35
+ throw e;
36
+ }
37
+ }
38
+ }
39
+ ```
40
+
41
+ ### "Connection refused: container port not found"
42
+
43
+ **Cause:** Missing `EXPOSE` directive in Dockerfile
44
+ **Solution:** Add `EXPOSE <port>` to Dockerfile (only needed for `wrangler dev`, production auto-exposes)
45
+
46
+ ### "Preview URLs not working"
47
+
48
+ **Cause:** Custom domain not configured, wildcard DNS missing, `normalizeId` not set, or `proxyToSandbox()` not called
49
+ **Solution:** Check:
50
+ 1. Custom domain configured? (not `.workers.dev`)
51
+ 2. Wildcard DNS set up? (`*.domain.com → worker.domain.com`)
52
+ 3. `normalizeId: true` in getSandbox?
53
+ 4. `proxyToSandbox()` called first in fetch?
54
+
55
+ ### "Slow first request"
56
+
57
+ **Cause:** Cold start (container provisioning)
58
+ **Solution:**
59
+ - Use `sleepAfter` instead of creating new sandboxes
60
+ - Pre-warm with cron triggers
61
+ - Set `keepAlive: true` for critical sandboxes
62
+
63
+ ### "File not persisting"
64
+
65
+ **Cause:** Files in `/tmp` or other ephemeral paths
66
+ **Solution:** Use `/workspace` for persistent files
67
+
68
+ ### "Bucket mounting doesn't work locally"
69
+
70
+ **Cause:** Bucket mounting requires FUSE, not available in `wrangler dev`
71
+ **Solution:** Test bucket mounting in production only. Use mock data locally.
72
+
73
+ ### "Different normalizeId = different sandbox"
74
+
75
+ **Cause:** Changing `normalizeId` option changes Durable Object ID
76
+ **Solution:** Set `normalizeId` consistently. `normalizeId: true` lowercases the ID.
77
+
78
+ ```typescript
79
+ // These create DIFFERENT sandboxes:
80
+ getSandbox(env.Sandbox, 'MyApp'); // DO ID: hash('MyApp')
81
+ getSandbox(env.Sandbox, 'MyApp', { normalizeId: true }); // DO ID: hash('myapp')
82
+ ```
83
+
84
+ ### "Code context variables disappeared"
85
+
86
+ **Cause:** Container restart clears code context state
87
+ **Solution:** Code contexts are ephemeral. Recreate context after container sleep/wake.
88
+
89
+ ## Performance Optimization
90
+
91
+ ### Sandbox ID Strategy
92
+
93
+ ```typescript
94
+ // ❌ BAD: New sandbox every time (slow)
95
+ const sandbox = getSandbox(env.Sandbox, `user-${Date.now()}`);
96
+
97
+ // ✅ GOOD: Reuse per user
98
+ const sandbox = getSandbox(env.Sandbox, `user-${userId}`);
99
+ ```
100
+
101
+ ### Sleep & Traffic Config
102
+
103
+ ```typescript
104
+ // Cost-optimized
105
+ getSandbox(env.Sandbox, 'id', { sleepAfter: '30m', keepAlive: false });
106
+
107
+ // Always-on (requires destroy())
108
+ getSandbox(env.Sandbox, 'id', { keepAlive: true });
109
+ ```
110
+
111
+ ```jsonc
112
+ // High traffic: increase max_instances
113
+ { "containers": [{ "class_name": "Sandbox", "max_instances": 50 }] }
114
+ ```
115
+
116
+ ## Security Best Practices
117
+
118
+ ### Sandbox Isolation
119
+ - Each sandbox = isolated container (filesystem, network, processes)
120
+ - Use unique sandbox IDs per tenant for multi-tenant apps
121
+ - Sandboxes cannot communicate directly
122
+
123
+ ### Input Validation
124
+
125
+ ```typescript
126
+ // ❌ DANGEROUS: Command injection
127
+ const result = await sandbox.exec(`python3 -c "${userCode}"`);
128
+
129
+ // ✅ SAFE: Write to file, execute file
130
+ await sandbox.writeFile('/workspace/user_code.py', userCode);
131
+ const result = await sandbox.exec('python3 /workspace/user_code.py');
132
+ ```
133
+
134
+ ### Resource Limits
135
+
136
+ ```typescript
137
+ // Timeout long-running commands
138
+ const result = await sandbox.exec('python3 script.py', {
139
+ timeout: 30000 // 30 seconds
140
+ });
141
+ ```
142
+
143
+ ### Secrets Management
144
+
145
+ ```typescript
146
+ // ❌ NEVER hardcode secrets
147
+ const token = 'ghp_abc123';
148
+
149
+ // ✅ Use environment secrets
150
+ const token = env.GITHUB_TOKEN;
151
+
152
+ // Pass to sandbox via exec env
153
+ const result = await sandbox.exec('git clone ...', {
154
+ env: { GIT_TOKEN: token }
155
+ });
156
+ ```
157
+
158
+ ### Preview URL Security
159
+ Preview URLs include auto-generated tokens:
160
+ ```
161
+ https://8080-sandbox-abc123def456.yourdomain.com
162
+ ```
163
+ Token changes on each expose operation, preventing unauthorized access.
164
+
165
+ ## Limits
166
+
167
+ | Resource | Lite | Standard | Heavy |
168
+ |----------|------|----------|-------|
169
+ | RAM | 256MB | 512MB | 1GB |
170
+ | vCPU | 0.5 | 1 | 2 |
171
+
172
+ | Operation | Default Timeout | Override |
173
+ |-----------|----------------|----------|
174
+ | Container provisioning | 30s | `SANDBOX_INSTANCE_TIMEOUT_MS` |
175
+ | Port readiness | 90s | `SANDBOX_PORT_TIMEOUT_MS` |
176
+ | exec() | None (no default) | `timeout` option |
177
+ | sleepAfter | 10m | `sleepAfter` option |
178
+
179
+ **Performance**:
180
+ - **First deploy**: 2-3 min for container build
181
+ - **Cold start**: 2-3s when waking from sleep
182
+ - **Bucket mounting**: Production only (FUSE not in dev)
183
+
184
+ ## Production Guide
185
+
186
+ See: https://developers.cloudflare.com/sandbox/guides/production-deployment/
187
+
188
+ ## Resources
189
+
190
+ - [Official Docs](https://developers.cloudflare.com/sandbox/)
191
+ - [API Reference](https://developers.cloudflare.com/sandbox/api/)
192
+ - [Examples](https://github.com/cloudflare/sandbox-sdk/tree/main/examples)
193
+ - [npm Package](https://www.npmjs.com/package/@cloudflare/sandbox)
194
+ - [Discord Support](https://discord.cloudflare.com)
@@ -0,0 +1,201 @@
1
+ # Common Patterns
2
+
3
+ ## AI Code Execution with Code Context
4
+
5
+ ```typescript
6
+ export default {
7
+ async fetch(request: Request, env: Env): Promise<Response> {
8
+ const { code, variables } = await request.json();
9
+ const sandbox = getSandbox(env.Sandbox, 'ai-agent');
10
+
11
+ // Create context with persistent variables
12
+ const ctx = await sandbox.createCodeContext({
13
+ language: 'python',
14
+ variables: variables || {}
15
+ });
16
+
17
+ // Execute with rich outputs (text, images, HTML)
18
+ const result = await sandbox.runCode(code, { context: ctx });
19
+
20
+ return Response.json({
21
+ results: result.results, // RichOutput[] (text, html, png, json, etc.)
22
+ error: result.error,
23
+ success: !result.error
24
+ });
25
+ }
26
+ };
27
+ ```
28
+
29
+ ## Interactive Dev Environment
30
+
31
+ ```typescript
32
+ export default {
33
+ async fetch(request: Request, env: Env): Promise<Response> {
34
+ const proxyResponse = await proxyToSandbox(request, env);
35
+ if (proxyResponse) return proxyResponse;
36
+
37
+ const sandbox = getSandbox(env.Sandbox, 'ide', { normalizeId: true });
38
+
39
+ if (request.url.endsWith('/start')) {
40
+ await sandbox.exec('curl -fsSL https://code-server.dev/install.sh | sh');
41
+ await sandbox.startProcess('code-server --bind-addr 0.0.0.0:8080', {
42
+ processId: 'vscode'
43
+ });
44
+
45
+ const exposed = await sandbox.exposePort(8080);
46
+ return Response.json({ url: exposed.url });
47
+ }
48
+
49
+ return new Response('Try /start');
50
+ }
51
+ };
52
+ ```
53
+
54
+ ## WebSocket Real-Time Service
55
+
56
+ ```typescript
57
+ export default {
58
+ async fetch(request: Request, env: Env): Promise<Response> {
59
+ const proxyResponse = await proxyToSandbox(request, env);
60
+ if (proxyResponse) return proxyResponse;
61
+
62
+ if (request.headers.get('Upgrade')?.toLowerCase() === 'websocket') {
63
+ const sandbox = getSandbox(env.Sandbox, 'realtime-service');
64
+ return await sandbox.wsConnect(request, 8080);
65
+ }
66
+
67
+ // Non-WebSocket: expose preview URL
68
+ const sandbox = getSandbox(env.Sandbox, 'realtime-service');
69
+ const { url } = await sandbox.exposePort(8080, {
70
+ hostname: new URL(request.url).hostname
71
+ });
72
+ return Response.json({ wsUrl: url.replace('https', 'wss') });
73
+ }
74
+ };
75
+ ```
76
+
77
+ **Dockerfile**:
78
+ ```dockerfile
79
+ FROM docker.io/cloudflare/sandbox:0.7.0
80
+ RUN npm install -g ws
81
+ EXPOSE 8080
82
+ ```
83
+
84
+ ## Process Readiness Pattern
85
+
86
+ ```typescript
87
+ export default {
88
+ async fetch(request: Request, env: Env): Promise<Response> {
89
+ const sandbox = getSandbox(env.Sandbox, 'app-server');
90
+
91
+ // Start server
92
+ const process = await sandbox.startProcess(
93
+ 'node server.js',
94
+ { processId: 'server' }
95
+ );
96
+
97
+ // Wait for server to be ready
98
+ await process.waitForPort(8080); // Wait for port listening
99
+
100
+ // Now safe to expose
101
+ const { url } = await sandbox.exposePort(8080);
102
+ return Response.json({ url });
103
+ }
104
+ };
105
+ ```
106
+
107
+ ## Persistent Data with Bucket Mounting
108
+
109
+ ```typescript
110
+ export default {
111
+ async fetch(request: Request, env: Env): Promise<Response> {
112
+ const sandbox = getSandbox(env.Sandbox, 'data-processor');
113
+
114
+ // Mount R2 bucket (production only)
115
+ await sandbox.mountBucket(env.DATA_BUCKET, '/data', {
116
+ readOnly: false
117
+ });
118
+
119
+ // Process files in bucket
120
+ const result = await sandbox.exec('python3 /workspace/process.py', {
121
+ env: { DATA_DIR: '/data/input' }
122
+ });
123
+
124
+ // Results written to /data/output are persisted in R2
125
+ return Response.json({ success: result.success });
126
+ }
127
+ };
128
+ ```
129
+
130
+ ## CI/CD Pipeline
131
+
132
+ ```typescript
133
+ export default {
134
+ async fetch(request: Request, env: Env): Promise<Response> {
135
+ const { repo, branch } = await request.json();
136
+ const sandbox = getSandbox(env.Sandbox, `ci-${repo}-${Date.now()}`);
137
+
138
+ await sandbox.exec(`git clone -b ${branch} ${repo} /workspace/repo`);
139
+
140
+ const install = await sandbox.exec('npm install', {
141
+ cwd: '/workspace/repo',
142
+ stream: true,
143
+ onOutput: (stream, data) => console.log(data)
144
+ });
145
+
146
+ if (!install.success) {
147
+ return Response.json({ success: false, error: 'Install failed' });
148
+ }
149
+
150
+ const test = await sandbox.exec('npm test', { cwd: '/workspace/repo' });
151
+
152
+ return Response.json({
153
+ success: test.success,
154
+ output: test.stdout,
155
+ exitCode: test.exitCode
156
+ });
157
+ }
158
+ };
159
+ ```
160
+
161
+
162
+
163
+
164
+
165
+ ## Multi-Tenant Pattern
166
+
167
+ ```typescript
168
+ export default {
169
+ async fetch(request: Request, env: Env): Promise<Response> {
170
+ const userId = request.headers.get('X-User-ID');
171
+ const sandbox = getSandbox(env.Sandbox, 'multi-tenant');
172
+
173
+ // Each user gets isolated session
174
+ let session;
175
+ try {
176
+ session = await sandbox.getSession(userId);
177
+ } catch {
178
+ session = await sandbox.createSession({
179
+ id: userId,
180
+ cwd: `/workspace/users/${userId}`,
181
+ env: { USER_ID: userId }
182
+ });
183
+ }
184
+
185
+ const code = await request.text();
186
+ const result = await session.exec(`python3 -c "${code}"`);
187
+
188
+ return Response.json({ output: result.stdout });
189
+ }
190
+ };
191
+ ```
192
+
193
+ ## Git Operations
194
+
195
+ ```typescript
196
+ // Clone repo
197
+ await sandbox.exec('git clone https://github.com/user/repo.git /workspace/repo');
198
+
199
+ // Authenticated (use env secrets)
200
+ await sandbox.exec(`git clone https://${env.GITHUB_TOKEN}@github.com/user/repo.git`);
201
+ ```
@@ -0,0 +1,74 @@
1
+ # Cloudflare Secrets Store
2
+
3
+ Account-level encrypted secret management for Workers and AI Gateway.
4
+
5
+ ## Overview
6
+
7
+ **Secrets Store**: Centralized, account-level secrets, reusable across Workers
8
+ **Worker Secrets**: Per-Worker secrets (`wrangler secret put`)
9
+
10
+ ### Architecture
11
+
12
+ - **Store**: Container (1/account in beta)
13
+ - **Secret**: String ≤1024 bytes
14
+ - **Scopes**: Permission boundaries controlling access
15
+ - `workers`: For Workers runtime access
16
+ - `ai-gateway`: For AI Gateway access
17
+ - Secrets must have correct scope for binding to work
18
+ - **Bindings**: Connect secrets via `env` object
19
+
20
+ **Regional Availability**: Global except China Network (unavailable)
21
+
22
+ ### Access Control
23
+
24
+ - **Super Admin**: Full access
25
+ - **Admin**: Create/edit/delete secrets, view metadata
26
+ - **Deployer**: View metadata + bindings
27
+ - **Reporter**: View metadata only
28
+
29
+ API Token permissions: `Account Secrets Store Edit/Read`
30
+
31
+ ### Limits (Beta)
32
+
33
+ - 100 secrets/account
34
+ - 1 store/account
35
+ - 1024 bytes max/secret
36
+ - Production secrets count toward limit
37
+
38
+ ## When to Use
39
+
40
+ **Use Secrets Store when:**
41
+ - Multiple Workers share same credential
42
+ - Centralized management needed
43
+ - Compliance requires audit trail
44
+ - Team collaboration on secrets
45
+
46
+ **Use Worker Secrets when:**
47
+ - Secret unique to one Worker
48
+ - Simple single-Worker project
49
+ - No cross-Worker sharing needed
50
+
51
+ ## In This Reference
52
+
53
+ ### Reading Order by Task
54
+
55
+ | Task | Start Here | Then Read |
56
+ |------|------------|-----------|
57
+ | Quick overview | README.md | - |
58
+ | First-time setup | README.md → configuration.md | api.md |
59
+ | Add secret to Worker | configuration.md | api.md |
60
+ | Implement access pattern | api.md | patterns.md |
61
+ | Debug errors | gotchas.md | api.md |
62
+ | Secret rotation | patterns.md | configuration.md |
63
+ | Best practices | gotchas.md | patterns.md |
64
+
65
+ ### Files
66
+
67
+ - [configuration.md](./configuration.md) - Wrangler commands, binding config
68
+ - [api.md](./api.md) - Binding API, get/put/delete operations
69
+ - [patterns.md](./patterns.md) - Rotation, encryption, access control
70
+ - [gotchas.md](./gotchas.md) - Security issues, limits, best practices
71
+
72
+ ## See Also
73
+ - [workers](../workers/) - Worker bindings integration
74
+ - [wrangler](../wrangler/) - CLI secret management commands
@@ -0,0 +1,200 @@
1
+ # API Reference
2
+
3
+ ## Binding API
4
+
5
+ ### Basic Access
6
+
7
+ **CRITICAL**: Async `.get()` required - secrets NOT directly available.
8
+
9
+ **`.get()` throws on error** - does NOT return null. Always use try/catch.
10
+
11
+ ```typescript
12
+ interface Env {
13
+ API_KEY: { get(): Promise<string> };
14
+ }
15
+
16
+ export default {
17
+ async fetch(request: Request, env: Env): Promise<Response> {
18
+ const apiKey = await env.API_KEY.get();
19
+ return fetch("https://api.example.com", {
20
+ headers: { "Authorization": `Bearer ${apiKey}` }
21
+ });
22
+ }
23
+ }
24
+ ```
25
+
26
+ ### Error Handling
27
+
28
+ ```typescript
29
+ export default {
30
+ async fetch(request: Request, env: Env): Promise<Response> {
31
+ try {
32
+ const apiKey = await env.API_KEY.get();
33
+ return fetch("https://api.example.com", {
34
+ headers: { "Authorization": `Bearer ${apiKey}` }
35
+ });
36
+ } catch (error) {
37
+ console.error("Secret access failed:", error);
38
+ return new Response("Configuration error", { status: 500 });
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ ### Multiple Secrets & Patterns
45
+
46
+ ```typescript
47
+ // Parallel fetch
48
+ const [stripeKey, sendgridKey] = await Promise.all([
49
+ env.STRIPE_KEY.get(),
50
+ env.SENDGRID_KEY.get()
51
+ ]);
52
+
53
+ // ❌ Missing .get()
54
+ const key = env.API_KEY;
55
+
56
+ // ❌ Module-level cache
57
+ const CACHED_KEY = await env.API_KEY.get(); // Fails
58
+
59
+ // ✅ Request-scope cache
60
+ const key = await env.API_KEY.get(); // OK - reuse within request
61
+ ```
62
+
63
+ ## REST API
64
+
65
+ Base: `https://api.cloudflare.com/client/v4`
66
+
67
+ ### Auth
68
+
69
+ ```bash
70
+ curl -H "Authorization: Bearer $CF_TOKEN" \
71
+ https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/secrets_store/stores
72
+ ```
73
+
74
+ ### Store Operations
75
+
76
+ ```bash
77
+ # List
78
+ GET /accounts/{account_id}/secrets_store/stores
79
+
80
+ # Create
81
+ POST /accounts/{account_id}/secrets_store/stores
82
+ {"name": "my-store"}
83
+
84
+ # Delete
85
+ DELETE /accounts/{account_id}/secrets_store/stores/{store_id}
86
+ ```
87
+
88
+ ### Secret Operations
89
+
90
+ ```bash
91
+ # List
92
+ GET /accounts/{account_id}/secrets_store/stores/{store_id}/secrets
93
+
94
+ # Create (single)
95
+ POST /accounts/{account_id}/secrets_store/stores/{store_id}/secrets
96
+ {
97
+ "name": "my_secret",
98
+ "value": "secret_value",
99
+ "scopes": ["workers"],
100
+ "comment": "Optional"
101
+ }
102
+
103
+ # Create (batch)
104
+ POST /accounts/{account_id}/secrets_store/stores/{store_id}/secrets
105
+ [
106
+ {"name": "secret_one", "value": "val1", "scopes": ["workers"]},
107
+ {"name": "secret_two", "value": "val2", "scopes": ["workers", "ai-gateway"]}
108
+ ]
109
+
110
+ # Get metadata
111
+ GET /accounts/{account_id}/secrets_store/stores/{store_id}/secrets/{secret_id}
112
+
113
+ # Update
114
+ PATCH /accounts/{account_id}/secrets_store/stores/{store_id}/secrets/{secret_id}
115
+ {"value": "new_value", "comment": "Updated"}
116
+
117
+ # Delete (single)
118
+ DELETE /accounts/{account_id}/secrets_store/stores/{store_id}/secrets/{secret_id}
119
+
120
+ # Delete (batch)
121
+ DELETE /accounts/{account_id}/secrets_store/stores/{store_id}/secrets
122
+ {"secret_ids": ["id-1", "id-2"]}
123
+
124
+ # Duplicate
125
+ POST /accounts/{account_id}/secrets_store/stores/{store_id}/secrets/{secret_id}/duplicate
126
+ {"name": "new_name"}
127
+
128
+ # Quota
129
+ GET /accounts/{account_id}/secrets_store/quota
130
+ ```
131
+
132
+ ### Responses
133
+
134
+ Success:
135
+ ```json
136
+ {
137
+ "success": true,
138
+ "result": {
139
+ "id": "secret-id-123",
140
+ "name": "my_secret",
141
+ "created": "2025-01-11T12:00:00Z",
142
+ "scopes": ["workers"]
143
+ }
144
+ }
145
+ ```
146
+
147
+ Error:
148
+ ```json
149
+ {
150
+ "success": false,
151
+ "errors": [{"code": 10000, "message": "Name exists"}]
152
+ }
153
+ ```
154
+
155
+ ## TypeScript Helpers
156
+
157
+ Official types available via `@cloudflare/workers-types`:
158
+
159
+ ```typescript
160
+ import type { SecretsStoreSecret } from "@cloudflare/workers-types";
161
+
162
+ interface Env {
163
+ STRIPE_API_KEY: SecretsStoreSecret;
164
+ DATABASE_URL: SecretsStoreSecret;
165
+ WORKER_SECRET: string; // Regular Worker secret (direct access)
166
+ }
167
+ ```
168
+
169
+ Custom helper type:
170
+
171
+ ```typescript
172
+ interface SecretsStoreBinding {
173
+ get(): Promise<string>;
174
+ }
175
+
176
+ // Fallback helper
177
+ async function getSecretWithFallback(
178
+ primary: SecretsStoreBinding,
179
+ fallback?: SecretsStoreBinding
180
+ ): Promise<string> {
181
+ try {
182
+ return await primary.get();
183
+ } catch (error) {
184
+ if (fallback) return await fallback.get();
185
+ throw error;
186
+ }
187
+ }
188
+
189
+ // Batch helper
190
+ async function getAllSecrets(
191
+ secrets: Record<string, SecretsStoreBinding>
192
+ ): Promise<Record<string, string>> {
193
+ const entries = await Promise.all(
194
+ Object.entries(secrets).map(async ([k, v]) => [k, await v.get()])
195
+ );
196
+ return Object.fromEntries(entries);
197
+ }
198
+ ```
199
+
200
+ See: [configuration.md](./configuration.md), [patterns.md](./patterns.md), [gotchas.md](./gotchas.md)