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,206 @@
1
+ # Configuration
2
+
3
+ ## Wrangler Integration
4
+
5
+ ### Workers Binding Setup
6
+
7
+ Add to `wrangler.toml`:
8
+
9
+ ```toml
10
+ name = "my-image-worker"
11
+ main = "src/index.ts"
12
+ compatibility_date = "2024-01-01"
13
+
14
+ [images]
15
+ binding = "IMAGES"
16
+ ```
17
+
18
+ Access in Worker:
19
+
20
+ ```typescript
21
+ interface Env {
22
+ IMAGES: ImageBinding
23
+ }
24
+
25
+ export default {
26
+ async fetch(request: Request, env: Env): Promise<Response> {
27
+ return await env.IMAGES.input(imageBuffer).transform({ width: 800 }).output().response()
28
+ },
29
+ }
30
+ ```
31
+
32
+ ### Upload via Script
33
+
34
+ Wrangler doesn't have built-in Images commands, use REST API:
35
+
36
+ ```typescript
37
+ // scripts/upload-image.ts
38
+ import fs from 'fs'
39
+ import FormData from 'form-data'
40
+
41
+ async function uploadImage(filePath: string) {
42
+ const accountId = process.env.CLOUDFLARE_ACCOUNT_ID!
43
+ const apiToken = process.env.CLOUDFLARE_API_TOKEN!
44
+
45
+ const formData = new FormData()
46
+ formData.append('file', fs.createReadStream(filePath))
47
+
48
+ const response = await fetch(
49
+ `https://api.cloudflare.com/client/v4/accounts/${accountId}/images/v1`,
50
+ {
51
+ method: 'POST',
52
+ headers: {
53
+ Authorization: `Bearer ${apiToken}`,
54
+ },
55
+ body: formData,
56
+ }
57
+ )
58
+
59
+ const result = await response.json()
60
+ console.log('Uploaded:', result)
61
+ }
62
+
63
+ uploadImage('./photo.jpg')
64
+ ```
65
+
66
+ ### Environment Variables
67
+
68
+ Store account hash for URL construction:
69
+
70
+ ```toml
71
+ [vars]
72
+ IMAGES_ACCOUNT_HASH = "your-account-hash"
73
+ ACCOUNT_ID = "your-account-id"
74
+ ```
75
+
76
+ Access in Worker:
77
+
78
+ ```typescript
79
+ const imageUrl = `https://imagedelivery.net/${env.IMAGES_ACCOUNT_HASH}/${imageId}/public`
80
+ ```
81
+
82
+ ## Variants Configuration
83
+
84
+ Variants are named presets for transformations.
85
+
86
+ ### Create Variant (Dashboard)
87
+
88
+ 1. Navigate to Images → Variants
89
+ 2. Click "Create Variant"
90
+ 3. Set name (e.g., `thumbnail`)
91
+ 4. Configure: `width=200,height=200,fit=cover`
92
+
93
+ ### Create Variant (API)
94
+
95
+ ```bash
96
+ curl -X POST \
97
+ https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1/variants \
98
+ -H "Authorization: Bearer {api_token}" \
99
+ -H "Content-Type: application/json" \
100
+ -d '{
101
+ "id": "thumbnail",
102
+ "options": {
103
+ "width": 200,
104
+ "height": 200,
105
+ "fit": "cover"
106
+ },
107
+ "neverRequireSignedURLs": true
108
+ }'
109
+ ```
110
+
111
+ ### Use Variant
112
+
113
+ ```
114
+ https://imagedelivery.net/{account_hash}/{image_id}/thumbnail
115
+ ```
116
+
117
+ ### Common Variant Presets
118
+
119
+ ```json
120
+ {
121
+ "thumbnail": {
122
+ "width": 200,
123
+ "height": 200,
124
+ "fit": "cover"
125
+ },
126
+ "avatar": {
127
+ "width": 128,
128
+ "height": 128,
129
+ "fit": "cover",
130
+ "gravity": "face"
131
+ },
132
+ "hero": {
133
+ "width": 1920,
134
+ "height": 1080,
135
+ "fit": "cover",
136
+ "quality": 90
137
+ },
138
+ "mobile": {
139
+ "width": 640,
140
+ "fit": "scale-down",
141
+ "quality": 80,
142
+ "format": "avif"
143
+ }
144
+ }
145
+ ```
146
+
147
+ ## Authentication
148
+
149
+ ### API Token (Recommended)
150
+
151
+ Generate at: Dashboard → My Profile → API Tokens
152
+
153
+ Required permissions:
154
+
155
+ - Account → Cloudflare Images → Edit
156
+
157
+ ```bash
158
+ curl -H "Authorization: Bearer {api_token}" \
159
+ https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1
160
+ ```
161
+
162
+ ### API Key (Legacy)
163
+
164
+ ```bash
165
+ curl -H "X-Auth-Email: {email}" \
166
+ -H "X-Auth-Key: {api_key}" \
167
+ https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1
168
+ ```
169
+
170
+ ## Signed URLs
171
+
172
+ For private images, enable signed URLs:
173
+
174
+ ```bash
175
+ # Upload with signed URLs required
176
+ curl -X POST \
177
+ https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1 \
178
+ -H "Authorization: Bearer {api_token}" \
179
+ -F file=@private.jpg \
180
+ -F requireSignedURLs=true
181
+ ```
182
+
183
+ Generate signed URL:
184
+
185
+ ```typescript
186
+ import { createHmac } from 'crypto'
187
+
188
+ function signUrl(imageId: string, variant: string, expiry: number, key: string): string {
189
+ const path = `/${imageId}/${variant}`
190
+ const toSign = `${path}${expiry}`
191
+ const signature = createHmac('sha256', key).update(toSign).digest('hex')
192
+
193
+ return `https://imagedelivery.net/{hash}${path}?exp=${expiry}&sig=${signature}`
194
+ }
195
+
196
+ // Sign URL valid for 1 hour
197
+ const signedUrl = signUrl('image-id', 'public', Date.now() + 3600, env.SIGNING_KEY)
198
+ ```
199
+
200
+ ## Local Development
201
+
202
+ ```bash
203
+ npx wrangler dev --remote
204
+ ```
205
+
206
+ Must use `--remote` for Images binding access.
@@ -0,0 +1,106 @@
1
+ # Gotchas & Best Practices
2
+
3
+ ## Fit Modes
4
+
5
+ | Mode | Best For | Behavior |
6
+ | ------------ | ----------------------- | ------------------------------------- |
7
+ | `cover` | Hero images, thumbnails | Fills space, crops excess |
8
+ | `contain` | Product images, artwork | Preserves full image, may add padding |
9
+ | `scale-down` | User uploads | Never enlarges |
10
+ | `crop` | Precise crops | Uses gravity |
11
+ | `pad` | Fixed aspect ratio | Adds background |
12
+
13
+ ## Format Selection
14
+
15
+ ```typescript
16
+ format: 'auto' // Recommended - negotiates best format
17
+ ```
18
+
19
+ **Support:** AVIF (Chrome 85+, Firefox 93+, Safari 16.4+), WebP (Chrome 23+, Firefox 65+, Safari 14+)
20
+
21
+ ## Quality Settings
22
+
23
+ | Use Case | Quality |
24
+ | ------------ | ------------ |
25
+ | Thumbnails | 75-80 |
26
+ | Standard | 85 (default) |
27
+ | High-quality | 90-95 |
28
+
29
+ ## Common Errors
30
+
31
+ ### 5403: "Image transformation failed"
32
+
33
+ - Verify `width`/`height` ≤ 12000
34
+ - Check `quality` 1-100, `dpr` 1-3
35
+ - Don't combine incompatible options
36
+
37
+ ### 9413: "Rate limit exceeded"
38
+
39
+ Implement caching and exponential backoff:
40
+
41
+ ```typescript
42
+ for (let i = 0; i < 3; i++) {
43
+ try { return await env.IMAGES.input(buffer).transform({...}).output(); }
44
+ catch { await new Promise(r => setTimeout(r, 2 ** i * 1000)); }
45
+ }
46
+ ```
47
+
48
+ ### 5401: "Image too large"
49
+
50
+ Pre-process images before upload (max 100MB, 12000×12000px)
51
+
52
+ ### 5400: "Invalid image format"
53
+
54
+ Supported: JPEG, PNG, GIF, WebP, AVIF, SVG
55
+
56
+ ### 401/403: "Unauthorized"
57
+
58
+ Verify API token has `Cloudflare Images → Edit` permission
59
+
60
+ ## Limits
61
+
62
+ | Resource | Limit |
63
+ | -------------- | ------------- |
64
+ | Max input size | 100MB |
65
+ | Max dimensions | 12000×12000px |
66
+ | Quality range | 1-100 |
67
+ | DPR range | 1-3 |
68
+ | API rate limit | ~1200 req/min |
69
+
70
+ ## AVIF Gotchas
71
+
72
+ - **Slower encoding**: First request may have higher latency
73
+ - **Browser detection**:
74
+
75
+ ```typescript
76
+ const format = /image\/avif/.test(request.headers.get('Accept') || '') ? 'avif' : 'webp'
77
+ ```
78
+
79
+ ## Anti-Patterns
80
+
81
+ ```typescript
82
+ // ❌ No caching - transforms every request
83
+ return env.IMAGES.input(buffer).transform({...}).output().response();
84
+
85
+ // ❌ cover without both dimensions
86
+ transform({ width: 800, fit: 'cover' })
87
+
88
+ // ✅ Always set both for cover
89
+ transform({ width: 800, height: 600, fit: 'cover' })
90
+
91
+ // ❌ Exposes API token to client
92
+ // ✅ Use Direct Creator Upload (patterns.md)
93
+ ```
94
+
95
+ ## Debugging
96
+
97
+ ```typescript
98
+ // Check response headers
99
+ console.log('Content-Type:', response.headers.get('Content-Type'))
100
+
101
+ // Test with curl
102
+ // curl -I "https://imagedelivery.net/{hash}/{id}/width=800,format=avif"
103
+
104
+ // Monitor logs
105
+ // npx wrangler tail
106
+ ```
@@ -0,0 +1,126 @@
1
+ # Common Patterns
2
+
3
+ ## URL Transform Options
4
+
5
+ ```
6
+ width=<PX> height=<PX> fit=scale-down|contain|cover|crop|pad
7
+ quality=85 format=auto|webp|avif|jpeg|png dpr=2
8
+ gravity=auto|face|left|right|top|bottom sharpen=2 blur=10
9
+ rotate=90|180|270 background=white metadata=none|copyright|keep
10
+ ```
11
+
12
+ ## Responsive Images (srcset)
13
+
14
+ ```html
15
+ <img
16
+ src="https://imagedelivery.net/{hash}/{id}/width=800"
17
+ srcset=".../{id}/width=400 400w, .../{id}/width=800 800w, .../{id}/width=1200 1200w"
18
+ sizes="(max-width: 600px) 400px, 800px"
19
+ />
20
+ ```
21
+
22
+ ## Format Negotiation
23
+
24
+ ```typescript
25
+ async fetch(request: Request, env: Env): Promise<Response> {
26
+ const accept = request.headers.get('Accept') || '';
27
+ const format = /image\/avif/.test(accept) ? 'avif' : /image\/webp/.test(accept) ? 'webp' : 'jpeg';
28
+ return env.IMAGES.input(buffer).transform({ format, quality: 85 }).output().response();
29
+ }
30
+ ```
31
+
32
+ ## Direct Creator Upload
33
+
34
+ ```typescript
35
+ // Backend: Generate upload URL
36
+ const response = await fetch(
37
+ `https://api.cloudflare.com/client/v4/accounts/${env.ACCOUNT_ID}/images/v2/direct_upload`,
38
+ {
39
+ method: 'POST',
40
+ headers: { Authorization: `Bearer ${env.API_TOKEN}` },
41
+ body: JSON.stringify({ requireSignedURLs: false, metadata: { userId } }),
42
+ }
43
+ )
44
+
45
+ // Frontend: Upload to returned uploadURL
46
+ const formData = new FormData()
47
+ formData.append('file', file)
48
+ await fetch(result.uploadURL, { method: 'POST', body: formData })
49
+ // Use: https://imagedelivery.net/{hash}/${result.id}/public
50
+ ```
51
+
52
+ ## Transform & Store to R2
53
+
54
+ ```typescript
55
+ async fetch(request: Request, env: Env): Promise<Response> {
56
+ const file = (await request.formData()).get('image') as File;
57
+ const transformed = await env.IMAGES
58
+ .input(await file.arrayBuffer())
59
+ .transform({ width: 800, format: 'avif', quality: 80 })
60
+ .output();
61
+ await env.R2.put(`images/${Date.now()}.avif`, transformed.response().body);
62
+ return Response.json({ success: true });
63
+ }
64
+ ```
65
+
66
+ ## Watermarking
67
+
68
+ ```typescript
69
+ const watermark = await env.ASSETS.fetch(new URL('/watermark.png', request.url))
70
+ const result = await env.IMAGES.input(await image.arrayBuffer())
71
+ .draw(env.IMAGES.input(watermark.body).transform({ width: 100 }), {
72
+ bottom: 20,
73
+ right: 20,
74
+ opacity: 0.7,
75
+ })
76
+ .transform({ format: 'avif' })
77
+ .output()
78
+ return result.response()
79
+ ```
80
+
81
+ ## Device-Based Transforms
82
+
83
+ ```typescript
84
+ const ua = request.headers.get('User-Agent') || ''
85
+ const isMobile = /Mobile|Android|iPhone/i.test(ua)
86
+ return env.IMAGES.input(buffer)
87
+ .transform({ width: isMobile ? 400 : 1200, quality: isMobile ? 75 : 85, format: 'avif' })
88
+ .output()
89
+ .response()
90
+ ```
91
+
92
+ ## Caching Strategy
93
+
94
+ ```typescript
95
+ async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
96
+ const cache = caches.default;
97
+ let response = await cache.match(request);
98
+ if (!response) {
99
+ response = await env.IMAGES.input(buffer).transform({ width: 800, format: 'avif' }).output().response();
100
+ response = new Response(response.body, { headers: { ...response.headers, 'Cache-Control': 'public, max-age=86400' } });
101
+ ctx.waitUntil(cache.put(request, response.clone()));
102
+ }
103
+ return response;
104
+ }
105
+ ```
106
+
107
+ ## Batch Processing
108
+
109
+ ```typescript
110
+ const results = await Promise.all(
111
+ images.map((buffer) =>
112
+ env.IMAGES.input(buffer).transform({ width: 800, fit: 'cover', format: 'avif' }).output()
113
+ )
114
+ )
115
+ ```
116
+
117
+ ## Error Handling
118
+
119
+ ```typescript
120
+ try {
121
+ return (await env.IMAGES.input(buffer).transform({ width: 800 }).output()).response()
122
+ } catch (error) {
123
+ console.error('Transform failed:', error)
124
+ return new Response('Image processing failed', { status: 500 })
125
+ }
126
+ ```
@@ -0,0 +1,90 @@
1
+ # Cloudflare Workers KV
2
+
3
+ Globally-distributed, eventually-consistent key-value store optimized for high read volume and low latency.
4
+
5
+ ## Overview
6
+
7
+ KV provides:
8
+
9
+ - Eventual consistency (60s global propagation)
10
+ - Read-optimized performance
11
+ - 25 MiB value limit per key
12
+ - Auto-replication to Cloudflare edge
13
+ - Metadata support (1024 bytes)
14
+
15
+ **Use cases:** Config storage, user sessions, feature flags, caching, A/B testing
16
+
17
+ ## When to Use KV
18
+
19
+ | Need | Recommendation |
20
+ | --------------------------- | ---------------------------------------- |
21
+ | Strong consistency | → [Durable Objects](../durable-objects/) |
22
+ | SQL queries | → [D1](../d1/) |
23
+ | Object storage (files) | → [R2](../r2/) |
24
+ | High read, low write volume | → KV ✅ |
25
+ | Sub-10ms global reads | → KV ✅ |
26
+
27
+ **Quick comparison:**
28
+
29
+ | Feature | KV | D1 | Durable Objects |
30
+ | ------------ | ------------- | --------------- | --------------- |
31
+ | Consistency | Eventual | Strong | Strong |
32
+ | Read latency | <10ms | ~50ms | <1ms |
33
+ | Write limit | 1/s per key | Unlimited | Unlimited |
34
+ | Use case | Config, cache | Relational data | Coordination |
35
+
36
+ ## Quick Start
37
+
38
+ ```bash
39
+ wrangler kv namespace create MY_NAMESPACE
40
+ # Add binding to wrangler.jsonc
41
+ ```
42
+
43
+ ```typescript
44
+ // Write
45
+ await env.MY_KV.put('key', 'value', { expirationTtl: 300 })
46
+
47
+ // Read
48
+ const value = await env.MY_KV.get('key')
49
+ const json = await env.MY_KV.get<Config>('config', 'json')
50
+ ```
51
+
52
+ ## Core Operations
53
+
54
+ | Method | Purpose | Returns |
55
+ | --------------------------- | ---------------- | ---------------------------------- |
56
+ | `get(key, type?)` | Single read | `string \| null` |
57
+ | `get(keys, type?)` | Bulk read (≤100) | `Map<string, T \| null>` |
58
+ | `put(key, value, options?)` | Write | `Promise<void>` |
59
+ | `delete(key)` | Delete | `Promise<void>` |
60
+ | `list(options?)` | List keys | `{ keys, list_complete, cursor? }` |
61
+ | `getWithMetadata(key)` | Get + metadata | `{ value, metadata }` |
62
+
63
+ ## Consistency Model
64
+
65
+ - **Write visibility:** Immediate in same location, ≤60s globally
66
+ - **Read path:** Eventually consistent
67
+ - **Write rate:** 1 write/second per key (429 on exceed)
68
+
69
+ ## Reading Order
70
+
71
+ | Task | Files to Read |
72
+ | ------------------ | ------------------------------------------------ |
73
+ | Quick start | README → configuration.md |
74
+ | Implement feature | README → api.md → patterns.md |
75
+ | Debug issues | gotchas.md → api.md |
76
+ | Batch operations | api.md (bulk section) → patterns.md |
77
+ | Performance tuning | gotchas.md (performance) → patterns.md (caching) |
78
+
79
+ ## In This Reference
80
+
81
+ - [configuration.md](./configuration.md) - wrangler.jsonc setup, namespace creation, TypeScript types
82
+ - [api.md](./api.md) - KV methods, bulk operations, cacheTtl, content types
83
+ - [patterns.md](./patterns.md) - Caching, sessions, rate limiting, A/B testing
84
+ - [gotchas.md](./gotchas.md) - Eventual consistency, concurrent writes, value limits
85
+
86
+ ## See Also
87
+
88
+ - [workers](../workers/) - Worker runtime for KV access
89
+ - [d1](../d1/) - Use D1 for strong consistency needs
90
+ - [durable-objects](../durable-objects/) - Strongly consistent alternative
@@ -0,0 +1,163 @@
1
+ # KV API Reference
2
+
3
+ ## Read Operations
4
+
5
+ ```typescript
6
+ // Single key (string)
7
+ const value = await env.MY_KV.get('user:123')
8
+
9
+ // JSON type (auto-parsed)
10
+ const config = await env.MY_KV.get<AppConfig>('config', 'json')
11
+
12
+ // ArrayBuffer for binary
13
+ const buffer = await env.MY_KV.get('image', 'arrayBuffer')
14
+
15
+ // Stream for large values
16
+ const stream = await env.MY_KV.get('large-file', 'stream')
17
+
18
+ // With cache TTL (min 60s)
19
+ const value = await env.MY_KV.get('key', { type: 'text', cacheTtl: 300 })
20
+
21
+ // Bulk get (max 100 keys, counts as 1 operation)
22
+ const keys = ['user:1', 'user:2', 'user:3', 'missing:key']
23
+ const results = await env.MY_KV.get(keys)
24
+ // Returns Map<string, string | null>
25
+
26
+ console.log(results.get('user:1')) // "John" (if exists)
27
+ console.log(results.get('missing:key')) // null
28
+
29
+ // Process results with null handling
30
+ for (const [key, value] of results) {
31
+ if (value !== null) {
32
+ // Handle found keys
33
+ console.log(`${key}: ${value}`)
34
+ }
35
+ }
36
+
37
+ // TypeScript with generics (type-safe JSON parsing)
38
+ interface UserProfile {
39
+ name: string
40
+ email: string
41
+ }
42
+ const profile = await env.USERS.get<UserProfile>('user:123', 'json')
43
+ // profile is typed as UserProfile | null
44
+ if (profile) {
45
+ console.log(profile.name) // Type-safe access
46
+ }
47
+
48
+ // Bulk get with type
49
+ const configs = await env.MY_KV.get<Config>(['config:app', 'config:feature'], 'json')
50
+ // Map<string, Config | null>
51
+ ```
52
+
53
+ ## Write Operations
54
+
55
+ ```typescript
56
+ // Basic put
57
+ await env.MY_KV.put('key', 'value')
58
+ await env.MY_KV.put('config', JSON.stringify({ theme: 'dark' }))
59
+
60
+ // With expiration (UNIX timestamp)
61
+ await env.MY_KV.put('session', token, {
62
+ expiration: Math.floor(Date.now() / 1000) + 3600,
63
+ })
64
+
65
+ // With TTL (seconds from now, min 60)
66
+ await env.MY_KV.put('cache', data, { expirationTtl: 300 })
67
+
68
+ // With metadata (max 1024 bytes)
69
+ await env.MY_KV.put('user:profile', userData, {
70
+ metadata: { version: 2, lastUpdated: Date.now() },
71
+ })
72
+
73
+ // Combined
74
+ await env.MY_KV.put('temp', value, {
75
+ expirationTtl: 3600,
76
+ metadata: { temporary: true },
77
+ })
78
+ ```
79
+
80
+ ## Get with Metadata
81
+
82
+ ```typescript
83
+ // Single key
84
+ const result = await env.MY_KV.getWithMetadata('user:profile')
85
+ // { value: string | null, metadata: any | null }
86
+
87
+ if (result.value && result.metadata) {
88
+ const { version, lastUpdated } = result.metadata
89
+ }
90
+
91
+ // Multiple keys (bulk)
92
+ const keys = ['key1', 'key2', 'key3']
93
+ const results = await env.MY_KV.getWithMetadata(keys)
94
+ // Returns Map<string, { value, metadata, cacheStatus? }>
95
+
96
+ for (const [key, result] of results) {
97
+ if (result.value) {
98
+ console.log(`${key}: ${result.value}`)
99
+ console.log(`Metadata: ${JSON.stringify(result.metadata)}`)
100
+ // cacheStatus field indicates cache hit/miss (when available)
101
+ }
102
+ }
103
+
104
+ // With type
105
+ const result = await env.MY_KV.getWithMetadata<UserData>('user:123', 'json')
106
+ // result: { value: UserData | null, metadata: any | null, cacheStatus?: string }
107
+ ```
108
+
109
+ ## Delete Operations
110
+
111
+ ```typescript
112
+ await env.MY_KV.delete('key') // Always succeeds (even if key missing)
113
+ ```
114
+
115
+ ## List Operations
116
+
117
+ ```typescript
118
+ // List all
119
+ const keys = await env.MY_KV.list()
120
+ // { keys: [...], list_complete: boolean, cursor?: string }
121
+
122
+ // With prefix
123
+ const userKeys = await env.MY_KV.list({ prefix: 'user:' })
124
+
125
+ // Pagination
126
+ let cursor: string | undefined
127
+ let allKeys = []
128
+ do {
129
+ const result = await env.MY_KV.list({ cursor, limit: 1000 })
130
+ allKeys.push(...result.keys)
131
+ cursor = result.cursor
132
+ } while (!result.list_complete)
133
+ ```
134
+
135
+ ## Performance Considerations
136
+
137
+ ### Type Selection
138
+
139
+ | Type | Use Case | Performance |
140
+ | ------------- | ------------------------ | ------------------------ |
141
+ | `stream` | Large values (>1MB) | Fastest - no buffering |
142
+ | `arrayBuffer` | Binary data | Fast - single allocation |
143
+ | `text` | String values | Medium |
144
+ | `json` | Objects (parse overhead) | Slowest - parsing cost |
145
+
146
+ ### Parallel Reads
147
+
148
+ ```typescript
149
+ // Efficient parallel reads with Promise.all()
150
+ const [user, settings, cache] = await Promise.all([
151
+ env.USERS.get('user:123', 'json'),
152
+ env.SETTINGS.get('config:app', 'json'),
153
+ env.CACHE.get('data:latest'),
154
+ ])
155
+ ```
156
+
157
+ ## Error Handling
158
+
159
+ - **Missing keys:** Return `null` (not an error)
160
+ - **Rate limit (429):** Retry with exponential backoff (see gotchas.md)
161
+ - **Response too large (413):** Values >25MB fail with 413 error
162
+
163
+ See [gotchas.md](./gotchas.md) for detailed error patterns and solutions.