memory-journal-mcp 7.7.0 → 8.0.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 (531) hide show
  1. package/README.md +126 -56
  2. package/dist/chunk-6OHRCNYW.js +3231 -0
  3. package/dist/chunk-JFMITANR.js +5168 -0
  4. package/dist/{chunk-QCQPAF4I.js → chunk-MWNLAEHR.js} +301 -4321
  5. package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
  6. package/dist/cli.js +21 -3
  7. package/dist/index.d.ts +16 -13
  8. package/dist/index.js +4 -2
  9. package/dist/resources-IJVKDFGS.js +2 -0
  10. package/dist/tools-44DGXE3V.js +2 -0
  11. package/dist/worker-script.js +201 -20
  12. package/package.json +7 -4
  13. package/skills/README.md +62 -25
  14. package/skills/adversarial-performance/SKILL.md +139 -0
  15. package/skills/adversarial-performance/references/audit-categories.md +462 -0
  16. package/skills/adversarial-performance/references/copilot-performance-prompts.md +44 -0
  17. package/skills/adversarial-performance/references/copilot-usage.md +16 -0
  18. package/skills/adversarial-performance/references/feedback-loop.md +177 -0
  19. package/skills/adversarial-performance/references/multi-pass-performance-protocol.md +398 -0
  20. package/skills/adversarial-planner/SKILL.md +23 -54
  21. package/skills/adversarial-planner/references/copilot-integration.md +25 -40
  22. package/skills/adversarial-planner/references/copilot-usage.md +16 -0
  23. package/skills/adversarial-planner/references/multi-pass-protocol.md +4 -0
  24. package/skills/adversarial-security/SKILL.md +149 -0
  25. package/skills/adversarial-security/references/adversarial-base-protocol.md +44 -0
  26. package/skills/adversarial-security/references/audit-categories.md +723 -0
  27. package/skills/adversarial-security/references/copilot-security-prompts.md +142 -0
  28. package/skills/adversarial-security/references/copilot-usage.md +16 -0
  29. package/skills/adversarial-security/references/feedback-loop.md +206 -0
  30. package/skills/adversarial-security/references/journal-opt-out.md +7 -0
  31. package/skills/adversarial-security/references/multi-pass-security-protocol.md +403 -0
  32. package/skills/adversarial-skill-audit/SKILL.md +118 -0
  33. package/skills/adversarial-skill-audit/references/audit-categories.md +308 -0
  34. package/skills/adversarial-skill-audit/references/copilot-skill-prompts.md +68 -0
  35. package/skills/adversarial-skill-audit/references/copilot-usage.md +16 -0
  36. package/skills/adversarial-skill-audit/references/feedback-loop.md +155 -0
  37. package/skills/adversarial-skill-audit/references/multi-pass-skill-protocol.md +367 -0
  38. package/skills/adversarial-skill-audit/scripts/check-skills.ps1 +48 -0
  39. package/skills/adversarial-skill-audit/scripts/run-copilot.ps1 +52 -0
  40. package/skills/adversarial-workflow-audit/SKILL.md +82 -0
  41. package/skills/adversarial-workflow-audit/references/audit-categories.md +28 -0
  42. package/skills/adversarial-workflow-audit/references/copilot-usage.md +16 -0
  43. package/skills/adversarial-workflow-audit/scripts/check-workflows.ps1 +24 -0
  44. package/skills/agents-sdk/SKILL.md +220 -0
  45. package/skills/agents-sdk/references/callable.md +92 -0
  46. package/skills/agents-sdk/references/codemode.md +209 -0
  47. package/skills/agents-sdk/references/email.md +144 -0
  48. package/skills/agents-sdk/references/mcp/SKILL.md +65 -0
  49. package/skills/agents-sdk/references/mcp/code-mode-reference.md +245 -0
  50. package/skills/agents-sdk/references/mcp/oauth-reference.md +359 -0
  51. package/skills/agents-sdk/references/mcp/references/architecture-reference.md +208 -0
  52. package/skills/agents-sdk/references/mcp/references/cloudflare-quickstart.md +156 -0
  53. package/skills/agents-sdk/references/mcp/references/error-handling.md +343 -0
  54. package/skills/agents-sdk/references/mcp/references/http-security.md +164 -0
  55. package/skills/agents-sdk/references/mcp/references/implementation-guide.md +507 -0
  56. package/skills/agents-sdk/references/mcp/references/testing-reference.md +171 -0
  57. package/skills/agents-sdk/references/mcp.md +157 -0
  58. package/skills/agents-sdk/references/state-scheduling.md +164 -0
  59. package/skills/agents-sdk/references/streaming-chat.md +168 -0
  60. package/skills/agents-sdk/references/workflows.md +136 -0
  61. package/skills/auth-identity/SKILL.md +48 -0
  62. package/skills/autonomous-dev/SKILL.md +46 -23
  63. package/skills/autonomous-dev/references/workflow_orchestration.md +22 -0
  64. package/skills/aws/SKILL.md +39 -0
  65. package/skills/azure/SKILL.md +38 -0
  66. package/skills/bin/sync.js +7 -1
  67. package/skills/biome/SKILL.md +59 -0
  68. package/skills/bun/SKILL.md +8 -2
  69. package/skills/cloudflare/SKILL.md +37 -0
  70. package/skills/cloudflare/references/agents-sdk/README.md +95 -0
  71. package/skills/cloudflare/references/agents-sdk/api.md +195 -0
  72. package/skills/cloudflare/references/agents-sdk/configuration.md +178 -0
  73. package/skills/cloudflare/references/agents-sdk/gotchas.md +173 -0
  74. package/skills/cloudflare/references/agents-sdk/patterns.md +215 -0
  75. package/skills/cloudflare/references/ai-gateway/README.md +176 -0
  76. package/skills/cloudflare/references/ai-gateway/configuration.md +117 -0
  77. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +88 -0
  78. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  79. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +110 -0
  80. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +90 -0
  81. package/skills/cloudflare/references/ai-search/README.md +145 -0
  82. package/skills/cloudflare/references/ai-search/api.md +87 -0
  83. package/skills/cloudflare/references/ai-search/configuration.md +91 -0
  84. package/skills/cloudflare/references/ai-search/gotchas.md +92 -0
  85. package/skills/cloudflare/references/ai-search/patterns.md +87 -0
  86. package/skills/cloudflare/references/analytics-engine/README.md +96 -0
  87. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  88. package/skills/cloudflare/references/analytics-engine/configuration.md +107 -0
  89. package/skills/cloudflare/references/analytics-engine/gotchas.md +87 -0
  90. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  91. package/skills/cloudflare/references/api/README.md +66 -0
  92. package/skills/cloudflare/references/api/api.md +205 -0
  93. package/skills/cloudflare/references/api/configuration.md +158 -0
  94. package/skills/cloudflare/references/api/gotchas.md +231 -0
  95. package/skills/cloudflare/references/api/patterns.md +208 -0
  96. package/skills/cloudflare/references/api-shield/README.md +44 -0
  97. package/skills/cloudflare/references/api-shield/api.md +153 -0
  98. package/skills/cloudflare/references/api-shield/configuration.md +210 -0
  99. package/skills/cloudflare/references/api-shield/gotchas.md +132 -0
  100. package/skills/cloudflare/references/api-shield/patterns.md +185 -0
  101. package/skills/cloudflare/references/argo-smart-routing/README.md +96 -0
  102. package/skills/cloudflare/references/argo-smart-routing/api.md +253 -0
  103. package/skills/cloudflare/references/argo-smart-routing/configuration.md +205 -0
  104. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +115 -0
  105. package/skills/cloudflare/references/argo-smart-routing/patterns.md +107 -0
  106. package/skills/cloudflare/references/bindings/README.md +127 -0
  107. package/skills/cloudflare/references/bindings/api.md +214 -0
  108. package/skills/cloudflare/references/bindings/configuration.md +200 -0
  109. package/skills/cloudflare/references/bindings/gotchas.md +210 -0
  110. package/skills/cloudflare/references/bindings/patterns.md +205 -0
  111. package/skills/cloudflare/references/bot-management/README.md +95 -0
  112. package/skills/cloudflare/references/bot-management/api.md +175 -0
  113. package/skills/cloudflare/references/bot-management/configuration.md +175 -0
  114. package/skills/cloudflare/references/bot-management/gotchas.md +116 -0
  115. package/skills/cloudflare/references/bot-management/patterns.md +181 -0
  116. package/skills/cloudflare/references/browser-rendering/README.md +84 -0
  117. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  118. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  119. package/skills/cloudflare/references/browser-rendering/gotchas.md +91 -0
  120. package/skills/cloudflare/references/browser-rendering/patterns.md +93 -0
  121. package/skills/cloudflare/references/c3/README.md +111 -0
  122. package/skills/cloudflare/references/c3/api.md +71 -0
  123. package/skills/cloudflare/references/c3/configuration.md +85 -0
  124. package/skills/cloudflare/references/c3/gotchas.md +97 -0
  125. package/skills/cloudflare/references/c3/patterns.md +84 -0
  126. package/skills/cloudflare/references/cache-reserve/README.md +150 -0
  127. package/skills/cloudflare/references/cache-reserve/api.md +184 -0
  128. package/skills/cloudflare/references/cache-reserve/configuration.md +170 -0
  129. package/skills/cloudflare/references/cache-reserve/gotchas.md +136 -0
  130. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  131. package/skills/cloudflare/references/containers/README.md +87 -0
  132. package/skills/cloudflare/references/containers/api.md +197 -0
  133. package/skills/cloudflare/references/containers/configuration.md +191 -0
  134. package/skills/cloudflare/references/containers/gotchas.md +182 -0
  135. package/skills/cloudflare/references/containers/patterns.md +204 -0
  136. package/skills/cloudflare/references/cron-triggers/README.md +101 -0
  137. package/skills/cloudflare/references/cron-triggers/api.md +224 -0
  138. package/skills/cloudflare/references/cron-triggers/configuration.md +190 -0
  139. package/skills/cloudflare/references/cron-triggers/gotchas.md +207 -0
  140. package/skills/cloudflare/references/cron-triggers/patterns.md +274 -0
  141. package/skills/cloudflare/references/d1/README.md +137 -0
  142. package/skills/cloudflare/references/d1/api.md +213 -0
  143. package/skills/cloudflare/references/d1/configuration.md +198 -0
  144. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  145. package/skills/cloudflare/references/d1/patterns.md +240 -0
  146. package/skills/cloudflare/references/ddos/README.md +42 -0
  147. package/skills/cloudflare/references/ddos/api.md +158 -0
  148. package/skills/cloudflare/references/ddos/configuration.md +94 -0
  149. package/skills/cloudflare/references/ddos/gotchas.md +114 -0
  150. package/skills/cloudflare/references/ddos/patterns.md +220 -0
  151. package/skills/cloudflare/references/decision-trees.md +95 -0
  152. package/skills/cloudflare/references/do-storage/README.md +79 -0
  153. package/skills/cloudflare/references/do-storage/api.md +107 -0
  154. package/skills/cloudflare/references/do-storage/configuration.md +114 -0
  155. package/skills/cloudflare/references/do-storage/gotchas.md +153 -0
  156. package/skills/cloudflare/references/do-storage/patterns.md +210 -0
  157. package/skills/cloudflare/references/do-storage/testing.md +186 -0
  158. package/skills/cloudflare/references/durable-objects/README.md +194 -0
  159. package/skills/cloudflare/references/durable-objects/api.md +205 -0
  160. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  161. package/skills/cloudflare/references/durable-objects/gotchas.md +200 -0
  162. package/skills/cloudflare/references/durable-objects/patterns.md +205 -0
  163. package/skills/cloudflare/references/email-routing/README.md +89 -0
  164. package/skills/cloudflare/references/email-routing/api.md +192 -0
  165. package/skills/cloudflare/references/email-routing/configuration.md +187 -0
  166. package/skills/cloudflare/references/email-routing/gotchas.md +203 -0
  167. package/skills/cloudflare/references/email-routing/patterns.md +241 -0
  168. package/skills/cloudflare/references/email-workers/README.md +153 -0
  169. package/skills/cloudflare/references/email-workers/api.md +227 -0
  170. package/skills/cloudflare/references/email-workers/configuration.md +115 -0
  171. package/skills/cloudflare/references/email-workers/gotchas.md +133 -0
  172. package/skills/cloudflare/references/email-workers/patterns.md +108 -0
  173. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  174. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  175. package/skills/cloudflare/references/graphql-api/configuration.md +151 -0
  176. package/skills/cloudflare/references/graphql-api/gotchas.md +111 -0
  177. package/skills/cloudflare/references/graphql-api/patterns.md +276 -0
  178. package/skills/cloudflare/references/hyperdrive/README.md +84 -0
  179. package/skills/cloudflare/references/hyperdrive/api.md +149 -0
  180. package/skills/cloudflare/references/hyperdrive/configuration.md +166 -0
  181. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  182. package/skills/cloudflare/references/hyperdrive/patterns.md +203 -0
  183. package/skills/cloudflare/references/images/README.md +65 -0
  184. package/skills/cloudflare/references/images/api.md +101 -0
  185. package/skills/cloudflare/references/images/configuration.md +206 -0
  186. package/skills/cloudflare/references/images/gotchas.md +106 -0
  187. package/skills/cloudflare/references/images/patterns.md +126 -0
  188. package/skills/cloudflare/references/kv/README.md +90 -0
  189. package/skills/cloudflare/references/kv/api.md +163 -0
  190. package/skills/cloudflare/references/kv/configuration.md +148 -0
  191. package/skills/cloudflare/references/kv/gotchas.md +133 -0
  192. package/skills/cloudflare/references/kv/patterns.md +195 -0
  193. package/skills/cloudflare/references/miniflare/README.md +113 -0
  194. package/skills/cloudflare/references/miniflare/api.md +204 -0
  195. package/skills/cloudflare/references/miniflare/configuration.md +174 -0
  196. package/skills/cloudflare/references/miniflare/gotchas.md +179 -0
  197. package/skills/cloudflare/references/miniflare/patterns.md +187 -0
  198. package/skills/cloudflare/references/network-interconnect/README.md +104 -0
  199. package/skills/cloudflare/references/network-interconnect/api.md +220 -0
  200. package/skills/cloudflare/references/network-interconnect/configuration.md +123 -0
  201. package/skills/cloudflare/references/network-interconnect/gotchas.md +175 -0
  202. package/skills/cloudflare/references/network-interconnect/patterns.md +174 -0
  203. package/skills/cloudflare/references/observability/README.md +93 -0
  204. package/skills/cloudflare/references/observability/api.md +168 -0
  205. package/skills/cloudflare/references/observability/configuration.md +178 -0
  206. package/skills/cloudflare/references/observability/gotchas.md +125 -0
  207. package/skills/cloudflare/references/observability/patterns.md +105 -0
  208. package/skills/cloudflare/references/pages/README.md +92 -0
  209. package/skills/cloudflare/references/pages/api.md +205 -0
  210. package/skills/cloudflare/references/pages/configuration.md +216 -0
  211. package/skills/cloudflare/references/pages/gotchas.md +218 -0
  212. package/skills/cloudflare/references/pages/patterns.md +215 -0
  213. package/skills/cloudflare/references/pages-functions/README.md +104 -0
  214. package/skills/cloudflare/references/pages-functions/api.md +159 -0
  215. package/skills/cloudflare/references/pages-functions/configuration.md +130 -0
  216. package/skills/cloudflare/references/pages-functions/gotchas.md +102 -0
  217. package/skills/cloudflare/references/pages-functions/patterns.md +148 -0
  218. package/skills/cloudflare/references/pipelines/README.md +109 -0
  219. package/skills/cloudflare/references/pipelines/api.md +214 -0
  220. package/skills/cloudflare/references/pipelines/configuration.md +98 -0
  221. package/skills/cloudflare/references/pipelines/gotchas.md +84 -0
  222. package/skills/cloudflare/references/pipelines/patterns.md +87 -0
  223. package/skills/cloudflare/references/product-index.md +112 -0
  224. package/skills/cloudflare/references/pulumi/README.md +113 -0
  225. package/skills/cloudflare/references/pulumi/api.md +230 -0
  226. package/skills/cloudflare/references/pulumi/configuration.md +213 -0
  227. package/skills/cloudflare/references/pulumi/gotchas.md +205 -0
  228. package/skills/cloudflare/references/pulumi/patterns.md +260 -0
  229. package/skills/cloudflare/references/queues/README.md +99 -0
  230. package/skills/cloudflare/references/queues/api.md +211 -0
  231. package/skills/cloudflare/references/queues/configuration.md +151 -0
  232. package/skills/cloudflare/references/queues/gotchas.md +210 -0
  233. package/skills/cloudflare/references/queues/patterns.md +220 -0
  234. package/skills/cloudflare/references/r2/README.md +97 -0
  235. package/skills/cloudflare/references/r2/api.md +235 -0
  236. package/skills/cloudflare/references/r2/configuration.md +176 -0
  237. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  238. package/skills/cloudflare/references/r2/patterns.md +203 -0
  239. package/skills/cloudflare/references/r2-data-catalog/README.md +157 -0
  240. package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
  241. package/skills/cloudflare/references/r2-data-catalog/configuration.md +205 -0
  242. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
  243. package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
  244. package/skills/cloudflare/references/r2-sql/README.md +138 -0
  245. package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
  246. package/skills/cloudflare/references/r2-sql/api.md +159 -0
  247. package/skills/cloudflare/references/r2-sql/configuration.md +152 -0
  248. package/skills/cloudflare/references/r2-sql/gotchas.md +228 -0
  249. package/skills/cloudflare/references/r2-sql/patterns.md +230 -0
  250. package/skills/cloudflare/references/realtime-sfu/README.md +66 -0
  251. package/skills/cloudflare/references/realtime-sfu/api.md +164 -0
  252. package/skills/cloudflare/references/realtime-sfu/configuration.md +141 -0
  253. package/skills/cloudflare/references/realtime-sfu/gotchas.md +138 -0
  254. package/skills/cloudflare/references/realtime-sfu/patterns.md +187 -0
  255. package/skills/cloudflare/references/realtimekit/README.md +118 -0
  256. package/skills/cloudflare/references/realtimekit/api.md +234 -0
  257. package/skills/cloudflare/references/realtimekit/configuration.md +226 -0
  258. package/skills/cloudflare/references/realtimekit/gotchas.md +206 -0
  259. package/skills/cloudflare/references/realtimekit/patterns.md +240 -0
  260. package/skills/cloudflare/references/sandbox/README.md +104 -0
  261. package/skills/cloudflare/references/sandbox/api.md +200 -0
  262. package/skills/cloudflare/references/sandbox/configuration.md +154 -0
  263. package/skills/cloudflare/references/sandbox/gotchas.md +201 -0
  264. package/skills/cloudflare/references/sandbox/patterns.md +195 -0
  265. package/skills/cloudflare/references/secrets-store/README.md +77 -0
  266. package/skills/cloudflare/references/secrets-store/api.md +199 -0
  267. package/skills/cloudflare/references/secrets-store/configuration.md +187 -0
  268. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  269. package/skills/cloudflare/references/secrets-store/patterns.md +218 -0
  270. package/skills/cloudflare/references/smart-placement/README.md +143 -0
  271. package/skills/cloudflare/references/smart-placement/api.md +192 -0
  272. package/skills/cloudflare/references/smart-placement/configuration.md +202 -0
  273. package/skills/cloudflare/references/smart-placement/gotchas.md +180 -0
  274. package/skills/cloudflare/references/smart-placement/patterns.md +190 -0
  275. package/skills/cloudflare/references/snippets/README.md +74 -0
  276. package/skills/cloudflare/references/snippets/api.md +214 -0
  277. package/skills/cloudflare/references/snippets/configuration.md +239 -0
  278. package/skills/cloudflare/references/snippets/gotchas.md +104 -0
  279. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  280. package/skills/cloudflare/references/spectrum/README.md +52 -0
  281. package/skills/cloudflare/references/spectrum/api.md +184 -0
  282. package/skills/cloudflare/references/spectrum/configuration.md +203 -0
  283. package/skills/cloudflare/references/spectrum/gotchas.md +155 -0
  284. package/skills/cloudflare/references/spectrum/patterns.md +206 -0
  285. package/skills/cloudflare/references/static-assets/README.md +65 -0
  286. package/skills/cloudflare/references/static-assets/api.md +201 -0
  287. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  288. package/skills/cloudflare/references/static-assets/gotchas.md +164 -0
  289. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  290. package/skills/cloudflare/references/stream/README.md +123 -0
  291. package/skills/cloudflare/references/stream/api-live.md +202 -0
  292. package/skills/cloudflare/references/stream/api.md +206 -0
  293. package/skills/cloudflare/references/stream/configuration.md +151 -0
  294. package/skills/cloudflare/references/stream/gotchas.md +139 -0
  295. package/skills/cloudflare/references/stream/patterns.md +217 -0
  296. package/skills/cloudflare/references/tail-workers/README.md +92 -0
  297. package/skills/cloudflare/references/tail-workers/api.md +203 -0
  298. package/skills/cloudflare/references/tail-workers/configuration.md +178 -0
  299. package/skills/cloudflare/references/tail-workers/gotchas.md +206 -0
  300. package/skills/cloudflare/references/tail-workers/patterns.md +190 -0
  301. package/skills/cloudflare/references/terraform/README.md +100 -0
  302. package/skills/cloudflare/references/terraform/api.md +178 -0
  303. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  304. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  305. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  306. package/skills/cloudflare/references/tunnel/README.md +137 -0
  307. package/skills/cloudflare/references/tunnel/api.md +205 -0
  308. package/skills/cloudflare/references/tunnel/configuration.md +163 -0
  309. package/skills/cloudflare/references/tunnel/gotchas.md +159 -0
  310. package/skills/cloudflare/references/tunnel/networking.md +174 -0
  311. package/skills/cloudflare/references/tunnel/patterns.md +199 -0
  312. package/skills/cloudflare/references/turn/README.md +86 -0
  313. package/skills/cloudflare/references/turn/api.md +236 -0
  314. package/skills/cloudflare/references/turn/configuration.md +181 -0
  315. package/skills/cloudflare/references/turn/gotchas.md +236 -0
  316. package/skills/cloudflare/references/turn/patterns.md +228 -0
  317. package/skills/cloudflare/references/turnstile/README.md +102 -0
  318. package/skills/cloudflare/references/turnstile/api.md +253 -0
  319. package/skills/cloudflare/references/turnstile/configuration.md +242 -0
  320. package/skills/cloudflare/references/turnstile/gotchas.md +253 -0
  321. package/skills/cloudflare/references/turnstile/patterns.md +195 -0
  322. package/skills/cloudflare/references/vectorize/README.md +133 -0
  323. package/skills/cloudflare/references/vectorize/api.md +89 -0
  324. package/skills/cloudflare/references/vectorize/configuration.md +91 -0
  325. package/skills/cloudflare/references/vectorize/gotchas.md +83 -0
  326. package/skills/cloudflare/references/vectorize/patterns.md +92 -0
  327. package/skills/cloudflare/references/waf/README.md +125 -0
  328. package/skills/cloudflare/references/waf/api.md +203 -0
  329. package/skills/cloudflare/references/waf/configuration.md +215 -0
  330. package/skills/cloudflare/references/waf/gotchas.md +208 -0
  331. package/skills/cloudflare/references/waf/patterns.md +236 -0
  332. package/skills/cloudflare/references/web-analytics/README.md +149 -0
  333. package/skills/cloudflare/references/web-analytics/configuration.md +81 -0
  334. package/skills/cloudflare/references/web-analytics/gotchas.md +86 -0
  335. package/skills/cloudflare/references/web-analytics/integration.md +63 -0
  336. package/skills/cloudflare/references/web-analytics/patterns.md +98 -0
  337. package/skills/cloudflare/references/workerd/README.md +85 -0
  338. package/skills/cloudflare/references/workerd/api.md +219 -0
  339. package/skills/cloudflare/references/workerd/configuration.md +200 -0
  340. package/skills/cloudflare/references/workerd/gotchas.md +151 -0
  341. package/skills/cloudflare/references/workerd/patterns.md +205 -0
  342. package/skills/cloudflare/references/workers/README.md +110 -0
  343. package/skills/cloudflare/references/workers/api.md +197 -0
  344. package/skills/cloudflare/references/workers/configuration.md +184 -0
  345. package/skills/cloudflare/references/workers/frameworks.md +200 -0
  346. package/skills/cloudflare/references/workers/gotchas.md +145 -0
  347. package/skills/cloudflare/references/workers/patterns.md +220 -0
  348. package/skills/cloudflare/references/workers-ai/README.md +206 -0
  349. package/skills/cloudflare/references/workers-ai/api.md +115 -0
  350. package/skills/cloudflare/references/workers-ai/configuration.md +98 -0
  351. package/skills/cloudflare/references/workers-ai/gotchas.md +130 -0
  352. package/skills/cloudflare/references/workers-ai/patterns.md +122 -0
  353. package/skills/cloudflare/references/workers-for-platforms/README.md +95 -0
  354. package/skills/cloudflare/references/workers-for-platforms/api.md +212 -0
  355. package/skills/cloudflare/references/workers-for-platforms/configuration.md +178 -0
  356. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  357. package/skills/cloudflare/references/workers-for-platforms/patterns.md +210 -0
  358. package/skills/cloudflare/references/workers-playground/README.md +131 -0
  359. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  360. package/skills/cloudflare/references/workers-playground/configuration.md +169 -0
  361. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  362. package/skills/cloudflare/references/workers-playground/patterns.md +134 -0
  363. package/skills/cloudflare/references/workers-vpc/README.md +130 -0
  364. package/skills/cloudflare/references/workers-vpc/api.md +196 -0
  365. package/skills/cloudflare/references/workers-vpc/configuration.md +151 -0
  366. package/skills/cloudflare/references/workers-vpc/gotchas.md +171 -0
  367. package/skills/cloudflare/references/workers-vpc/patterns.md +235 -0
  368. package/skills/cloudflare/references/workflows/README.md +72 -0
  369. package/skills/cloudflare/references/workflows/api.md +237 -0
  370. package/skills/cloudflare/references/workflows/configuration.md +158 -0
  371. package/skills/cloudflare/references/workflows/gotchas.md +97 -0
  372. package/skills/cloudflare/references/workflows/patterns.md +245 -0
  373. package/skills/cloudflare/references/wrangler/README.md +143 -0
  374. package/skills/cloudflare/references/wrangler/api.md +188 -0
  375. package/skills/cloudflare/references/wrangler/configuration.md +198 -0
  376. package/skills/cloudflare/references/wrangler/gotchas.md +212 -0
  377. package/skills/cloudflare/references/wrangler/patterns.md +211 -0
  378. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
  379. package/skills/cloudflare/references/zaraz/README.md +114 -0
  380. package/skills/cloudflare/references/zaraz/api.md +118 -0
  381. package/skills/cloudflare/references/zaraz/configuration.md +94 -0
  382. package/skills/cloudflare/references/zaraz/gotchas.md +88 -0
  383. package/skills/cloudflare/references/zaraz/patterns.md +77 -0
  384. package/skills/docker/SKILL.md +7 -101
  385. package/skills/docker/references/advanced-examples.md +71 -0
  386. package/skills/docker/references/templates.md +34 -0
  387. package/skills/docs-marketer/SKILL.md +178 -0
  388. package/skills/docs-marketer/references/audit-categories.md +328 -0
  389. package/skills/docs-marketer/references/copilot-docs-prompts.md +88 -0
  390. package/skills/docs-marketer/references/copilot-usage.md +16 -0
  391. package/skills/docs-marketer/references/feedback-loop.md +155 -0
  392. package/skills/docs-marketer/references/multi-pass-docs-protocol.md +410 -0
  393. package/skills/drizzle-orm/SKILL.md +82 -0
  394. package/skills/durable-objects/SKILL.md +167 -0
  395. package/skills/durable-objects/references/advanced_features.md +29 -0
  396. package/skills/durable-objects/references/rules.md +300 -0
  397. package/skills/durable-objects/references/testing.md +261 -0
  398. package/skills/durable-objects/references/workers.md +336 -0
  399. package/skills/gcp/SKILL.md +37 -0
  400. package/skills/github-actions/SKILL.md +5 -58
  401. package/skills/github-actions/references/templates.md +65 -0
  402. package/skills/github-commander/SKILL.md +13 -21
  403. package/skills/github-commander/workflows/copilot-audit.md +12 -12
  404. package/skills/github-copilot-cli/SKILL.md +21 -26
  405. package/skills/github-repo-setup/SKILL.md +136 -0
  406. package/skills/github-repo-setup/references/community-standards.md +136 -0
  407. package/skills/github-repo-setup/references/github-automation.md +490 -0
  408. package/skills/github-repo-setup/references/inline-templates.md +205 -0
  409. package/skills/github-repo-setup/references/project-config.md +320 -0
  410. package/skills/gitlab/SKILL.md +7 -2
  411. package/skills/gitlab/package-lock.json +389 -389
  412. package/skills/golang/SKILL.md +8 -1
  413. package/skills/graphql/SKILL.md +30 -0
  414. package/skills/hono/SKILL.md +82 -0
  415. package/skills/journal-optimizer/SKILL.md +206 -0
  416. package/skills/journal-optimizer/references/optimizer-scripts.md +169 -0
  417. package/skills/llm-app-engineering/SKILL.md +18 -0
  418. package/skills/monorepo/SKILL.md +56 -0
  419. package/skills/multi-agent-orchestration/SKILL.md +14 -0
  420. package/skills/mysql/SKILL.md +6 -2
  421. package/skills/next-best-practices/SKILL.md +86 -0
  422. package/skills/next-best-practices/references/cache-components-examples.md +234 -0
  423. package/skills/next-best-practices/references/cache-components.md +210 -0
  424. package/skills/next-best-practices/references/upgrade-decision-tree.md +33 -0
  425. package/skills/next-best-practices/references/upgrade.md +43 -0
  426. package/skills/next-cache-components/SKILL.md +441 -0
  427. package/skills/next-upgrade/SKILL.md +43 -0
  428. package/skills/next-upgrade/references/decision-tree.md +33 -0
  429. package/skills/nodejs/SKILL.md +46 -0
  430. package/skills/opentelemetry/SKILL.md +62 -0
  431. package/skills/package.json +39 -4
  432. package/skills/playwright-standard/SKILL.md +6 -11
  433. package/skills/playwright-standard/references/locators.md +7 -0
  434. package/skills/postgres/SKILL.md +6 -1
  435. package/skills/python/SKILL.md +8 -70
  436. package/skills/python/references/advanced-patterns.md +37 -0
  437. package/skills/python/references/config-templates.md +48 -0
  438. package/skills/rag-pipelines/SKILL.md +14 -0
  439. package/skills/redis/SKILL.md +31 -0
  440. package/skills/render/SKILL.md +35 -0
  441. package/skills/rust/SKILL.md +15 -25
  442. package/skills/rust/references/borrow-checker.md +13 -0
  443. package/skills/rust/references/ecosystem.md +11 -0
  444. package/skills/sandbox-sdk/SKILL.md +186 -0
  445. package/skills/sandbox-sdk/references/api-quick-ref.md +113 -0
  446. package/skills/sandbox-sdk/references/examples.md +52 -0
  447. package/skills/shadcn-ui/SKILL.md +22 -57
  448. package/skills/skill-builder/SKILL.md +23 -424
  449. package/skills/skill-builder/references/tutorial.md +457 -0
  450. package/skills/sqlite/SKILL.md +16 -5
  451. package/skills/table.md +59 -0
  452. package/skills/tailwind-css/SKILL.md +11 -60
  453. package/skills/tailwind-css/references/component-patterns.md +52 -0
  454. package/skills/trpc/SKILL.md +56 -0
  455. package/skills/typescript/SKILL.md +30 -433
  456. package/skills/typescript/references/tutorial.md +453 -0
  457. package/skills/vercel-ai-sdk/SKILL.md +48 -0
  458. package/skills/vitest-standard/SKILL.md +5 -11
  459. package/skills/vitest-standard/references/assertions.md +11 -0
  460. package/skills/web-perf/SKILL.md +207 -0
  461. package/skills/workers-best-practices/SKILL.md +120 -0
  462. package/skills/workers-best-practices/references/anti-patterns.md +18 -0
  463. package/skills/workers-best-practices/references/review.md +174 -0
  464. package/skills/workers-best-practices/references/rules.md +485 -0
  465. package/skills/wrangler/SKILL.md +43 -0
  466. package/skills/wrangler/references/cli-commands.md +861 -0
  467. package/skills/zod/SKILL.md +48 -0
  468. package/dist/tools-P4VGG4FH.js +0 -1
  469. package/skills/react-best-practices/AGENTS.md +0 -2883
  470. package/skills/react-best-practices/SKILL.md +0 -138
  471. /package/skills/{react-best-practices → next-best-practices}/README.md +0 -0
  472. /package/skills/{react-best-practices → next-best-practices}/metadata.json +0 -0
  473. /package/skills/{react-best-practices → next-best-practices}/rules/_sections.md +0 -0
  474. /package/skills/{react-best-practices → next-best-practices}/rules/_template.md +0 -0
  475. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-event-handler-refs.md +0 -0
  476. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-init-once.md +0 -0
  477. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-use-latest.md +0 -0
  478. /package/skills/{react-best-practices → next-best-practices}/rules/async-api-routes.md +0 -0
  479. /package/skills/{react-best-practices → next-best-practices}/rules/async-defer-await.md +0 -0
  480. /package/skills/{react-best-practices → next-best-practices}/rules/async-dependencies.md +0 -0
  481. /package/skills/{react-best-practices → next-best-practices}/rules/async-parallel.md +0 -0
  482. /package/skills/{react-best-practices → next-best-practices}/rules/async-suspense-boundaries.md +0 -0
  483. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-barrel-imports.md +0 -0
  484. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-conditional.md +0 -0
  485. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-defer-third-party.md +0 -0
  486. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-dynamic-imports.md +0 -0
  487. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-preload.md +0 -0
  488. /package/skills/{react-best-practices → next-best-practices}/rules/client-event-listeners.md +0 -0
  489. /package/skills/{react-best-practices → next-best-practices}/rules/client-localstorage-schema.md +0 -0
  490. /package/skills/{react-best-practices → next-best-practices}/rules/client-passive-event-listeners.md +0 -0
  491. /package/skills/{react-best-practices → next-best-practices}/rules/client-swr-dedup.md +0 -0
  492. /package/skills/{react-best-practices → next-best-practices}/rules/js-batch-dom-css.md +0 -0
  493. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-function-results.md +0 -0
  494. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-property-access.md +0 -0
  495. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-storage.md +0 -0
  496. /package/skills/{react-best-practices → next-best-practices}/rules/js-combine-iterations.md +0 -0
  497. /package/skills/{react-best-practices → next-best-practices}/rules/js-early-exit.md +0 -0
  498. /package/skills/{react-best-practices → next-best-practices}/rules/js-hoist-regexp.md +0 -0
  499. /package/skills/{react-best-practices → next-best-practices}/rules/js-index-maps.md +0 -0
  500. /package/skills/{react-best-practices → next-best-practices}/rules/js-length-check-first.md +0 -0
  501. /package/skills/{react-best-practices → next-best-practices}/rules/js-min-max-loop.md +0 -0
  502. /package/skills/{react-best-practices → next-best-practices}/rules/js-set-map-lookups.md +0 -0
  503. /package/skills/{react-best-practices → next-best-practices}/rules/js-tosorted-immutable.md +0 -0
  504. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-activity.md +0 -0
  505. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
  506. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-conditional-render.md +0 -0
  507. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-content-visibility.md +0 -0
  508. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hoist-jsx.md +0 -0
  509. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
  510. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-suppress-warning.md +0 -0
  511. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-svg-precision.md +0 -0
  512. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-usetransition-loading.md +0 -0
  513. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-defer-reads.md +0 -0
  514. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-dependencies.md +0 -0
  515. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state-no-effect.md +0 -0
  516. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state.md +0 -0
  517. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-functional-setstate.md +0 -0
  518. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-lazy-state-init.md +0 -0
  519. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo-with-default-value.md +0 -0
  520. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo.md +0 -0
  521. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-move-effect-to-event.md +0 -0
  522. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-simple-expression-in-memo.md +0 -0
  523. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-transitions.md +0 -0
  524. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-use-ref-transient-values.md +0 -0
  525. /package/skills/{react-best-practices → next-best-practices}/rules/server-after-nonblocking.md +0 -0
  526. /package/skills/{react-best-practices → next-best-practices}/rules/server-auth-actions.md +0 -0
  527. /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-lru.md +0 -0
  528. /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-react.md +0 -0
  529. /package/skills/{react-best-practices → next-best-practices}/rules/server-dedup-props.md +0 -0
  530. /package/skills/{react-best-practices → next-best-practices}/rules/server-parallel-fetching.md +0 -0
  531. /package/skills/{react-best-practices → next-best-practices}/rules/server-serialization.md +0 -0
@@ -0,0 +1,220 @@
1
+ # Queues Patterns & Best Practices
2
+
3
+ ## Async Task Processing
4
+
5
+ ```typescript
6
+ // Producer: Accept request, queue work
7
+ export default {
8
+ async fetch(request: Request, env: Env): Promise<Response> {
9
+ const { userId, reportType } = await request.json()
10
+ await env.REPORT_QUEUE.send({ userId, reportType, requestedAt: Date.now() })
11
+ return Response.json({ message: 'Report queued', status: 'pending' })
12
+ },
13
+ }
14
+
15
+ // Consumer: Process reports
16
+ export default {
17
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
18
+ for (const msg of batch.messages) {
19
+ const { userId, reportType } = msg.body
20
+ const report = await generateReport(userId, reportType, env)
21
+ await env.REPORTS_BUCKET.put(`${userId}/${reportType}.pdf`, report)
22
+ msg.ack()
23
+ }
24
+ },
25
+ }
26
+ ```
27
+
28
+ ## Buffering API Calls
29
+
30
+ ```typescript
31
+ // Producer: Queue log entries
32
+ ctx.waitUntil(env.LOGS_QUEUE.send({
33
+ method: request.method,
34
+ url: request.url,
35
+ timestamp: Date.now()
36
+ }));
37
+
38
+ // Consumer: Batch write to external API
39
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
40
+ const logs = batch.messages.map(m => m.body);
41
+ await fetch(env.LOG_ENDPOINT, { method: 'POST', body: JSON.stringify({ logs }) });
42
+ batch.ackAll();
43
+ }
44
+ ```
45
+
46
+ ## Rate Limiting Upstream
47
+
48
+ ```typescript
49
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
50
+ for (const msg of batch.messages) {
51
+ try {
52
+ await callRateLimitedAPI(msg.body);
53
+ msg.ack();
54
+ } catch (error) {
55
+ if (error.status === 429) {
56
+ const retryAfter = parseInt(error.headers.get('Retry-After') || '60');
57
+ msg.retry({ delaySeconds: retryAfter });
58
+ } else throw error;
59
+ }
60
+ }
61
+ }
62
+ ```
63
+
64
+ ## Event-Driven Workflows
65
+
66
+ ```typescript
67
+ // R2 event → Queue → Worker
68
+ export default {
69
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
70
+ for (const msg of batch.messages) {
71
+ const event = msg.body
72
+ if (event.action === 'PutObject') {
73
+ await processNewFile(event.object.key, env)
74
+ } else if (event.action === 'DeleteObject') {
75
+ await cleanupReferences(event.object.key, env)
76
+ }
77
+ msg.ack()
78
+ }
79
+ },
80
+ }
81
+ ```
82
+
83
+ ## Dead Letter Queue Pattern
84
+
85
+ ```typescript
86
+ // Main queue: After max_retries, goes to DLQ automatically
87
+ export default {
88
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
89
+ for (const msg of batch.messages) {
90
+ try {
91
+ await riskyOperation(msg.body)
92
+ msg.ack()
93
+ } catch (error) {
94
+ console.error(`Failed after ${msg.attempts} attempts:`, error)
95
+ }
96
+ }
97
+ },
98
+ }
99
+
100
+ // DLQ consumer: Log and store failed messages
101
+ export default {
102
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
103
+ for (const msg of batch.messages) {
104
+ await env.FAILED_KV.put(msg.id, JSON.stringify(msg.body))
105
+ msg.ack()
106
+ }
107
+ },
108
+ }
109
+ ```
110
+
111
+ ## Priority Queues
112
+
113
+ High priority: `max_batch_size: 5, max_batch_timeout: 1`. Low priority: `max_batch_size: 100, max_batch_timeout: 30`.
114
+
115
+ ## Delayed Job Processing
116
+
117
+ ```typescript
118
+ await env.EMAIL_QUEUE.send({ to, template, userId }, { delaySeconds: 3600 })
119
+ ```
120
+
121
+ ## Fan-out Pattern
122
+
123
+ ```typescript
124
+ async fetch(request: Request, env: Env): Promise<Response> {
125
+ const event = await request.json();
126
+
127
+ // Send to multiple queues for parallel processing
128
+ await Promise.all([
129
+ env.ANALYTICS_QUEUE.send(event),
130
+ env.NOTIFICATIONS_QUEUE.send(event),
131
+ env.AUDIT_LOG_QUEUE.send(event)
132
+ ]);
133
+
134
+ return Response.json({ status: 'processed' });
135
+ }
136
+ ```
137
+
138
+ ## Idempotency Pattern
139
+
140
+ ```typescript
141
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
142
+ for (const msg of batch.messages) {
143
+ // Check if already processed
144
+ const processed = await env.PROCESSED_KV.get(msg.id);
145
+ if (processed) {
146
+ msg.ack();
147
+ continue;
148
+ }
149
+
150
+ await processMessage(msg.body);
151
+ await env.PROCESSED_KV.put(msg.id, '1', { expirationTtl: 86400 });
152
+ msg.ack();
153
+ }
154
+ }
155
+ ```
156
+
157
+ ## Integration: D1 Batch Writes
158
+
159
+ ```typescript
160
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
161
+ // Collect all inserts for single D1 batch
162
+ const statements = batch.messages.map(msg =>
163
+ env.DB.prepare('INSERT INTO events (id, data, created) VALUES (?, ?, ?)')
164
+ .bind(msg.id, JSON.stringify(msg.body), Date.now())
165
+ );
166
+
167
+ try {
168
+ await env.DB.batch(statements);
169
+ batch.ackAll();
170
+ } catch (error) {
171
+ console.error('D1 batch failed:', error);
172
+ batch.retryAll({ delaySeconds: 60 });
173
+ }
174
+ }
175
+ ```
176
+
177
+ ## Integration: Workflows
178
+
179
+ ```typescript
180
+ // Queue triggers Workflow for long-running tasks
181
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
182
+ for (const msg of batch.messages) {
183
+ try {
184
+ const instance = await env.MY_WORKFLOW.create({
185
+ id: msg.id,
186
+ params: msg.body
187
+ });
188
+ console.log('Workflow started:', instance.id);
189
+ msg.ack();
190
+ } catch (error) {
191
+ msg.retry({ delaySeconds: 30 });
192
+ }
193
+ }
194
+ }
195
+ ```
196
+
197
+ ## Integration: Durable Objects
198
+
199
+ ```typescript
200
+ // Queue distributes work to Durable Objects by ID
201
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
202
+ for (const msg of batch.messages) {
203
+ const { userId, action } = msg.body;
204
+
205
+ // Route to user-specific DO
206
+ const id = env.USER_DO.idFromName(userId);
207
+ const stub = env.USER_DO.get(id);
208
+
209
+ try {
210
+ await stub.fetch(new Request('https://do/process', {
211
+ method: 'POST',
212
+ body: JSON.stringify({ action, messageId: msg.id })
213
+ }));
214
+ msg.ack();
215
+ } catch (error) {
216
+ msg.retry({ delaySeconds: 60 });
217
+ }
218
+ }
219
+ }
220
+ ```
@@ -0,0 +1,97 @@
1
+ # Cloudflare R2 Object Storage
2
+
3
+ S3-compatible object storage with zero egress fees, optimized for large file storage and delivery.
4
+
5
+ ## Overview
6
+
7
+ R2 provides:
8
+
9
+ - S3-compatible API (Workers API + S3 REST)
10
+ - Zero egress fees globally
11
+ - Strong consistency for writes/deletes
12
+ - Storage classes (Standard/Infrequent Access)
13
+ - SSE-C encryption support
14
+
15
+ **Use cases:** Media storage, backups, static assets, user uploads, data lakes
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ wrangler r2 bucket create my-bucket --location=enam
21
+ wrangler r2 object put my-bucket/file.txt --file=./local.txt
22
+ ```
23
+
24
+ ```typescript
25
+ // Upload
26
+ await env.MY_BUCKET.put(key, data, {
27
+ httpMetadata: { contentType: 'image/jpeg' },
28
+ })
29
+
30
+ // Download
31
+ const object = await env.MY_BUCKET.get(key)
32
+ if (object) return new Response(object.body)
33
+ ```
34
+
35
+ ## Core Operations
36
+
37
+ | Method | Purpose | Returns |
38
+ | --------------------------- | ----------------- | ---------------------------------- |
39
+ | `put(key, value, options?)` | Upload object | `R2Object \| null` |
40
+ | `get(key, options?)` | Download object | `R2ObjectBody \| R2Object \| null` |
41
+ | `head(key)` | Get metadata only | `R2Object \| null` |
42
+ | `delete(keys)` | Delete object(s) | `Promise<void>` |
43
+ | `list(options?)` | List objects | `R2Objects` |
44
+
45
+ ## Storage Classes
46
+
47
+ - **Standard**: Frequent access, low latency reads
48
+ - **InfrequentAccess**: 30-day minimum storage, retrieval fees, lower storage cost
49
+
50
+ ## Event Notifications
51
+
52
+ R2 integrates with Cloudflare Queues for reactive workflows:
53
+
54
+ ```typescript
55
+ // wrangler.jsonc
56
+ {
57
+ "event_notifications": [{
58
+ "queue": "r2-notifications",
59
+ "actions": ["PutObject", "DeleteObject"]
60
+ }]
61
+ }
62
+
63
+ // Consumer
64
+ async queue(batch: MessageBatch, env: Env) {
65
+ for (const message of batch.messages) {
66
+ const event = message.body; // { action, bucket, object, timestamps }
67
+ if (event.action === 'PutObject') {
68
+ // Process upload: thumbnail generation, virus scan, etc.
69
+ }
70
+ }
71
+ }
72
+ ```
73
+
74
+ ## Reading Order
75
+
76
+ **First-time users:** README → configuration.md → api.md → patterns.md
77
+ **Specific tasks:**
78
+
79
+ - Setup: configuration.md
80
+ - Client uploads: patterns.md (presigned URLs)
81
+ - Public static site: patterns.md (public access + custom domain)
82
+ - Processing uploads: README (event notifications) + queues reference
83
+ - Debugging: gotchas.md
84
+
85
+ ## In This Reference
86
+
87
+ - [configuration.md](./configuration.md) - Bindings, S3 SDK, CORS, lifecycles, token scopes
88
+ - [api.md](./api.md) - Workers API, multipart, conditional requests, presigned URLs
89
+ - [patterns.md](./patterns.md) - Streaming, caching, client uploads, public buckets
90
+ - [gotchas.md](./gotchas.md) - List truncation, etag format, stream length, S3 SDK region
91
+
92
+ ## See Also
93
+
94
+ - [workers](../workers/) - Worker runtime and fetch handlers
95
+ - [kv](../kv/) - Metadata storage for R2 objects
96
+ - [d1](../d1/) - Store R2 URLs in relational database
97
+ - [queues](../queues/) - Process R2 uploads asynchronously
@@ -0,0 +1,235 @@
1
+ # R2 API Reference
2
+
3
+ ## PUT (Upload)
4
+
5
+ ```typescript
6
+ // Basic
7
+ await env.MY_BUCKET.put(key, value)
8
+
9
+ // With metadata
10
+ await env.MY_BUCKET.put(key, value, {
11
+ httpMetadata: {
12
+ contentType: 'image/jpeg',
13
+ contentDisposition: 'attachment; filename="photo.jpg"',
14
+ cacheControl: 'max-age=3600',
15
+ },
16
+ customMetadata: { userId: '123', version: '2' },
17
+ storageClass: 'Standard', // or 'InfrequentAccess'
18
+ sha256: arrayBufferOrHex, // Integrity check
19
+ ssecKey: arrayBuffer32bytes, // SSE-C encryption
20
+ })
21
+
22
+ // Value types: ReadableStream | ArrayBuffer | string | Blob
23
+ ```
24
+
25
+ ## GET (Download)
26
+
27
+ ```typescript
28
+ const object = await env.MY_BUCKET.get(key)
29
+ if (!object) return new Response('Not found', { status: 404 })
30
+
31
+ // Body: arrayBuffer(), text(), json(), blob(), body (ReadableStream)
32
+
33
+ // Ranged reads
34
+ const object = await env.MY_BUCKET.get(key, { range: { offset: 0, length: 1024 } })
35
+
36
+ // Conditional GET
37
+ const object = await env.MY_BUCKET.get(key, { onlyIf: { etagMatches: '"abc123"' } })
38
+ ```
39
+
40
+ ## HEAD (Metadata Only)
41
+
42
+ ```typescript
43
+ const object = await env.MY_BUCKET.head(key) // Returns R2Object without body
44
+ ```
45
+
46
+ ## DELETE
47
+
48
+ ```typescript
49
+ await env.MY_BUCKET.delete(key)
50
+ await env.MY_BUCKET.delete([key1, key2, key3]) // Batch (max 1000)
51
+ ```
52
+
53
+ ## LIST
54
+
55
+ ```typescript
56
+ const listed = await env.MY_BUCKET.list({
57
+ limit: 1000,
58
+ prefix: 'photos/',
59
+ cursor: cursorFromPrevious,
60
+ delimiter: '/',
61
+ include: ['httpMetadata', 'customMetadata'],
62
+ })
63
+
64
+ // Pagination (always use truncated flag)
65
+ while (listed.truncated) {
66
+ const next = await env.MY_BUCKET.list({ cursor: listed.cursor })
67
+ listed.objects.push(...next.objects)
68
+ listed.truncated = next.truncated
69
+ listed.cursor = next.cursor
70
+ }
71
+ ```
72
+
73
+ ## Multipart Uploads
74
+
75
+ ```typescript
76
+ const multipart = await env.MY_BUCKET.createMultipartUpload(key, {
77
+ httpMetadata: { contentType: 'video/mp4' },
78
+ })
79
+
80
+ const uploadedParts: R2UploadedPart[] = []
81
+ for (let i = 0; i < partCount; i++) {
82
+ const part = await multipart.uploadPart(i + 1, partData)
83
+ uploadedParts.push(part)
84
+ }
85
+
86
+ const object = await multipart.complete(uploadedParts)
87
+ // OR: await multipart.abort();
88
+
89
+ // Resume
90
+ const multipart = env.MY_BUCKET.resumeMultipartUpload(key, uploadId)
91
+ ```
92
+
93
+ ## Presigned URLs (S3 SDK)
94
+
95
+ ```typescript
96
+ import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'
97
+ import { getSignedUrl } from '@aws-sdk/s3-request-presigner'
98
+
99
+ const s3 = new S3Client({
100
+ region: 'auto',
101
+ endpoint: `https://${accountId}.r2.cloudflarestorage.com`,
102
+ credentials: { accessKeyId: env.R2_ACCESS_KEY_ID, secretAccessKey: env.R2_SECRET_ACCESS_KEY },
103
+ })
104
+
105
+ const uploadUrl = await getSignedUrl(s3, new PutObjectCommand({ Bucket: 'my-bucket', Key: key }), {
106
+ expiresIn: 3600,
107
+ })
108
+ return Response.json({ uploadUrl })
109
+ ```
110
+
111
+ ## TypeScript Interfaces
112
+
113
+ ```typescript
114
+ interface R2Bucket {
115
+ head(key: string): Promise<R2Object | null>
116
+ get(key: string, options?: R2GetOptions): Promise<R2ObjectBody | null>
117
+ put(
118
+ key: string,
119
+ value: ReadableStream | ArrayBuffer | string | Blob,
120
+ options?: R2PutOptions
121
+ ): Promise<R2Object | null>
122
+ delete(keys: string | string[]): Promise<void>
123
+ list(options?: R2ListOptions): Promise<R2Objects>
124
+ createMultipartUpload(key: string, options?: R2MultipartOptions): Promise<R2MultipartUpload>
125
+ resumeMultipartUpload(key: string, uploadId: string): R2MultipartUpload
126
+ }
127
+
128
+ interface R2Object {
129
+ key: string
130
+ version: string
131
+ size: number
132
+ etag: string
133
+ httpEtag: string // httpEtag is quoted, use for headers
134
+ uploaded: Date
135
+ httpMetadata?: R2HTTPMetadata
136
+ customMetadata?: Record<string, string>
137
+ storageClass: 'Standard' | 'InfrequentAccess'
138
+ checksums: R2Checksums
139
+ writeHttpMetadata(headers: Headers): void
140
+ }
141
+
142
+ interface R2ObjectBody extends R2Object {
143
+ body: ReadableStream
144
+ bodyUsed: boolean
145
+ arrayBuffer(): Promise<ArrayBuffer>
146
+ text(): Promise<string>
147
+ json<T>(): Promise<T>
148
+ blob(): Promise<Blob>
149
+ }
150
+
151
+ interface R2HTTPMetadata {
152
+ contentType?: string
153
+ contentDisposition?: string
154
+ contentEncoding?: string
155
+ contentLanguage?: string
156
+ cacheControl?: string
157
+ cacheExpiry?: Date
158
+ }
159
+
160
+ interface R2PutOptions {
161
+ httpMetadata?: R2HTTPMetadata | Headers
162
+ customMetadata?: Record<string, string>
163
+ sha256?: ArrayBuffer | string // Only ONE checksum allowed
164
+ storageClass?: 'Standard' | 'InfrequentAccess'
165
+ ssecKey?: ArrayBuffer
166
+ }
167
+
168
+ interface R2GetOptions {
169
+ onlyIf?: R2Conditional | Headers
170
+ range?: R2Range | Headers
171
+ ssecKey?: ArrayBuffer
172
+ }
173
+
174
+ interface R2ListOptions {
175
+ limit?: number
176
+ prefix?: string
177
+ cursor?: string
178
+ delimiter?: string
179
+ startAfter?: string
180
+ include?: ('httpMetadata' | 'customMetadata')[]
181
+ }
182
+
183
+ interface R2Objects {
184
+ objects: R2Object[]
185
+ truncated: boolean
186
+ cursor?: string
187
+ delimitedPrefixes: string[]
188
+ }
189
+
190
+ interface R2Conditional {
191
+ etagMatches?: string
192
+ etagDoesNotMatch?: string
193
+ uploadedBefore?: Date
194
+ uploadedAfter?: Date
195
+ }
196
+
197
+ interface R2Range {
198
+ offset?: number
199
+ length?: number
200
+ suffix?: number
201
+ }
202
+
203
+ interface R2Checksums {
204
+ md5?: ArrayBuffer
205
+ sha1?: ArrayBuffer
206
+ sha256?: ArrayBuffer
207
+ sha384?: ArrayBuffer
208
+ sha512?: ArrayBuffer
209
+ }
210
+
211
+ interface R2MultipartUpload {
212
+ key: string
213
+ uploadId: string
214
+ uploadPart(
215
+ partNumber: number,
216
+ value: ReadableStream | ArrayBuffer | string | Blob
217
+ ): Promise<R2UploadedPart>
218
+ abort(): Promise<void>
219
+ complete(uploadedParts: R2UploadedPart[]): Promise<R2Object>
220
+ }
221
+
222
+ interface R2UploadedPart {
223
+ partNumber: number
224
+ etag: string
225
+ }
226
+ ```
227
+
228
+ ## CLI Operations
229
+
230
+ ```bash
231
+ wrangler r2 object put my-bucket/file.txt --file=./local.txt
232
+ wrangler r2 object get my-bucket/file.txt --file=./download.txt
233
+ wrangler r2 object delete my-bucket/file.txt
234
+ wrangler r2 object list my-bucket --prefix=photos/
235
+ ```