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,170 @@
1
+ # Gotchas & Troubleshooting
2
+
3
+ Common problems → causes → solutions.
4
+
5
+ ## Permission Errors
6
+
7
+ ### 401 Unauthorized
8
+
9
+ **Error:** `"401 Unauthorized"`
10
+ **Cause:** Token missing R2 Data Catalog permissions.
11
+ **Solution:** Use "Admin Read & Write" token (includes catalog + storage permissions). Test with `catalog.list_namespaces()`.
12
+
13
+ ### 403 Forbidden
14
+
15
+ **Error:** `"403 Forbidden"` on data files
16
+ **Cause:** Token lacks storage permissions.
17
+ **Solution:** Token needs both R2 Data Catalog + R2 Storage Bucket Item permissions.
18
+
19
+ ### Token Rotation Issues
20
+
21
+ **Error:** New token fails after rotation.
22
+ **Solution:** Create new token → test in staging → update prod → monitor 24h → revoke old.
23
+
24
+ ## Catalog URI Issues
25
+
26
+ ### 404 Not Found
27
+
28
+ **Error:** `"404 Catalog not found"`
29
+ **Cause:** Catalog not enabled or wrong URI.
30
+ **Solution:** Run `wrangler r2 bucket catalog enable <bucket>`. URI must be HTTPS with `/iceberg/` and case-sensitive bucket name.
31
+
32
+ ### Wrong Warehouse
33
+
34
+ **Error:** Cannot create/load tables.
35
+ **Cause:** Warehouse ≠ bucket name.
36
+ **Solution:** Set `warehouse="bucket-name"` to match bucket exactly.
37
+
38
+ ## Table and Schema Issues
39
+
40
+ ### Table/Namespace Already Exists
41
+
42
+ **Error:** `"TableAlreadyExistsError"`
43
+ **Solution:** Use try/except to load existing or check first.
44
+
45
+ ### Namespace Not Found
46
+
47
+ **Error:** Cannot create table.
48
+ **Solution:** Create namespace first: `catalog.create_namespace("ns")`
49
+
50
+ ### Schema Evolution Errors
51
+
52
+ **Error:** `"422 Validation"` on schema update.
53
+ **Cause:** Incompatible change (required field, type shrink).
54
+ **Solution:** Only add nullable columns, compatible type widening (int→long, float→double).
55
+
56
+ ## Data and Query Issues
57
+
58
+ ### Empty Scan Results
59
+
60
+ **Error:** Scan returns no data.
61
+ **Cause:** Incorrect filter or partition column.
62
+ **Solution:** Test without filter first: `table.scan().to_pandas()`. Verify partition column names.
63
+
64
+ ### Slow Queries
65
+
66
+ **Error:** Performance degrades over time.
67
+ **Cause:** Too many small files.
68
+ **Solution:** Check file count, compact if >1000 or avg <10MB. See [api.md](api.md#compaction).
69
+
70
+ ### Type Mismatch
71
+
72
+ **Error:** `"Cannot cast"` on append.
73
+ **Cause:** PyArrow types don't match Iceberg schema.
74
+ **Solution:** Cast to int64 (Iceberg default), not int32. Check `table.schema()`.
75
+
76
+ ## Compaction Issues
77
+
78
+ ### Compaction Issues
79
+
80
+ **Problem:** File count unchanged or compaction takes hours.
81
+ **Cause:** Target size too large, or table too big for PyIceberg.
82
+ **Solution:** Only compact if avg <50MB. For >1TB tables, use Spark. Run during low-traffic periods.
83
+
84
+ ## Maintenance Issues
85
+
86
+ ### Snapshot/Orphan Issues
87
+
88
+ **Problem:** Expiration fails or orphan cleanup deletes active data.
89
+ **Cause:** Too aggressive retention or wrong order.
90
+ **Solution:** Always expire snapshots first with `retain_last=10`, then cleanup orphans with 3+ day threshold.
91
+
92
+ ## Concurrency Issues
93
+
94
+ ### Concurrent Write Conflicts
95
+
96
+ **Problem:** `CommitFailedException` with multiple writers.
97
+ **Cause:** Optimistic locking - simultaneous commits.
98
+ **Solution:** Add retry with exponential backoff (see [patterns.md](patterns.md#pattern-6-concurrent-writes-with-retry)).
99
+
100
+ ### Stale Metadata
101
+
102
+ **Problem:** Old schema/data after external update.
103
+ **Cause:** Cached metadata.
104
+ **Solution:** Reload table: `table = catalog.load_table(("ns", "table"))`
105
+
106
+ ## Performance Optimization
107
+
108
+ ### Performance Tips
109
+
110
+ **Scans:** Use `row_filter` and `selected_fields` to reduce data scanned.
111
+ **Partitions:** 100-1000 optimal. Avoid high cardinality (millions) or low (<10).
112
+ **Files:** Keep 100-500MB avg. Compact if <10MB or >10k files.
113
+
114
+ ## Limits
115
+
116
+ | Resource | Recommended | Impact if Exceeded |
117
+ | ---------------- | ----------- | ------------------- |
118
+ | Tables/namespace | <10k | Slow list ops |
119
+ | Files/table | <100k | Slow query planning |
120
+ | Partitions/table | 100-1k | Metadata overhead |
121
+ | Snapshots/table | Expire >7d | Metadata bloat |
122
+
123
+ ## Common Error Messages Reference
124
+
125
+ | Error Message | Likely Cause | Fix |
126
+ | ----------------------------- | -------------------------------- | ------------------------------------------- |
127
+ | `401 Unauthorized` | Missing/invalid token | Check token has catalog+storage permissions |
128
+ | `403 Forbidden` | Token lacks storage permissions | Add R2 Storage Bucket Item permission |
129
+ | `404 Not Found` | Catalog not enabled or wrong URI | Run `wrangler r2 bucket catalog enable` |
130
+ | `409 Conflict` | Table/namespace already exists | Use try/except or load existing |
131
+ | `422 Unprocessable Entity` | Schema validation failed | Check type compatibility, required fields |
132
+ | `CommitFailedException` | Concurrent write conflict | Add retry logic with backoff |
133
+ | `NamespaceAlreadyExistsError` | Namespace exists | Use try/except or load existing |
134
+ | `NoSuchTableError` | Table doesn't exist | Check namespace+table name, create first |
135
+ | `TypeError: Cannot cast` | PyArrow type mismatch | Cast data to match Iceberg schema |
136
+
137
+ ## Debugging Checklist
138
+
139
+ When things go wrong, check in order:
140
+
141
+ 1. ✅ **Catalog enabled:** `npx wrangler r2 bucket catalog status <bucket>`
142
+ 2. ✅ **Token permissions:** Both R2 Data Catalog + R2 Storage in dashboard
143
+ 3. ✅ **Connection test:** `catalog.list_namespaces()` succeeds
144
+ 4. ✅ **URI format:** HTTPS, includes `/iceberg/`, correct bucket name
145
+ 5. ✅ **Warehouse name:** Matches bucket name exactly
146
+ 6. ✅ **Namespace exists:** Create before `create_table()`
147
+ 7. ✅ **Enable debug logging:** `logging.basicConfig(level=logging.DEBUG)`
148
+ 8. ✅ **PyIceberg version:** `pip install --upgrade pyiceberg` (≥0.5.0)
149
+ 9. ✅ **File health:** Compact if >1000 files or avg <10MB
150
+ 10. ✅ **Snapshot count:** Expire if >100 snapshots
151
+
152
+ ## Enable Debug Logging
153
+
154
+ ```python
155
+ import logging
156
+ logging.basicConfig(level=logging.DEBUG)
157
+ # Now operations show HTTP requests/responses
158
+ ```
159
+
160
+ ## Resources
161
+
162
+ - [Cloudflare Community](https://community.cloudflare.com/c/developers/workers/40)
163
+ - [Cloudflare Discord](https://discord.cloudflare.com) - #r2 channel
164
+ - [PyIceberg GitHub](https://github.com/apache/iceberg-python/issues)
165
+ - [Apache Iceberg Slack](https://iceberg.apache.org/community/)
166
+
167
+ ## Next Steps
168
+
169
+ - [patterns.md](patterns.md) - Working examples
170
+ - [api.md](api.md) - API reference
@@ -0,0 +1,191 @@
1
+ # Common Patterns
2
+
3
+ Practical patterns for R2 Data Catalog with PyIceberg.
4
+
5
+ ## PyIceberg Connection
6
+
7
+ ```python
8
+ import os
9
+ from pyiceberg.catalog.rest import RestCatalog
10
+ from pyiceberg.exceptions import NamespaceAlreadyExistsError
11
+
12
+ catalog = RestCatalog(
13
+ name="r2_catalog",
14
+ warehouse=os.getenv("R2_WAREHOUSE"), # bucket name
15
+ uri=os.getenv("R2_CATALOG_URI"), # catalog endpoint
16
+ token=os.getenv("R2_TOKEN"), # API token
17
+ )
18
+
19
+ # Create namespace (idempotent)
20
+ try:
21
+ catalog.create_namespace("default")
22
+ except NamespaceAlreadyExistsError:
23
+ pass
24
+ ```
25
+
26
+ ## Pattern 1: Log Analytics Pipeline
27
+
28
+ Ingest logs incrementally, query by time/level.
29
+
30
+ ```python
31
+ import pyarrow as pa
32
+ from datetime import datetime
33
+ from pyiceberg.schema import Schema
34
+ from pyiceberg.types import NestedField, TimestampType, StringType, IntegerType
35
+ from pyiceberg.partitioning import PartitionSpec, PartitionField
36
+ from pyiceberg.transforms import DayTransform
37
+
38
+ # Create partitioned table (once)
39
+ schema = Schema(
40
+ NestedField(1, "timestamp", TimestampType(), required=True),
41
+ NestedField(2, "level", StringType(), required=True),
42
+ NestedField(3, "service", StringType(), required=True),
43
+ NestedField(4, "message", StringType(), required=False),
44
+ )
45
+
46
+ partition_spec = PartitionSpec(
47
+ PartitionField(source_id=1, field_id=1000, transform=DayTransform(), name="day")
48
+ )
49
+
50
+ catalog.create_namespace("logs")
51
+ table = catalog.create_table(("logs", "app_logs"), schema=schema, partition_spec=partition_spec)
52
+
53
+ # Append logs (incremental)
54
+ data = pa.table({
55
+ "timestamp": [datetime(2026, 1, 27, 10, 30, 0)],
56
+ "level": ["ERROR"],
57
+ "service": ["auth-service"],
58
+ "message": ["Failed login"],
59
+ })
60
+ table.append(data)
61
+
62
+ # Query by time + level (leverages partitioning)
63
+ scan = table.scan(row_filter="level = 'ERROR' AND day = '2026-01-27'")
64
+ errors = scan.to_pandas()
65
+ ```
66
+
67
+ ## Pattern 2: Time-Travel Queries
68
+
69
+ ```python
70
+ from datetime import datetime, timedelta
71
+
72
+ table = catalog.load_table(("logs", "app_logs"))
73
+
74
+ # Query specific snapshot
75
+ snapshot_id = table.current_snapshot().snapshot_id
76
+ data = table.scan(snapshot_id=snapshot_id).to_pandas()
77
+
78
+ # Query as of timestamp (yesterday)
79
+ yesterday_ms = int((datetime.now() - timedelta(days=1)).timestamp() * 1000)
80
+ data = table.scan(as_of_timestamp=yesterday_ms).to_pandas()
81
+ ```
82
+
83
+ ## Pattern 3: Schema Evolution
84
+
85
+ ```python
86
+ from pyiceberg.types import StringType
87
+
88
+ table = catalog.load_table(("users", "profiles"))
89
+
90
+ with table.update_schema() as update:
91
+ update.add_column("email", StringType(), required=False)
92
+ update.rename_column("name", "full_name")
93
+ # Old readers ignore new columns, new readers see nulls for old data
94
+ ```
95
+
96
+ ## Pattern 4: Partitioned Tables
97
+
98
+ ```python
99
+ from pyiceberg.partitioning import PartitionSpec, PartitionField
100
+ from pyiceberg.transforms import DayTransform, IdentityTransform
101
+
102
+ # Partition by day + country
103
+ partition_spec = PartitionSpec(
104
+ PartitionField(source_id=1, field_id=1000, transform=DayTransform(), name="day"),
105
+ PartitionField(source_id=2, field_id=1001, transform=IdentityTransform(), name="country"),
106
+ )
107
+ table = catalog.create_table(("events", "user_events"), schema=schema, partition_spec=partition_spec)
108
+
109
+ # Queries prune partitions automatically
110
+ scan = table.scan(row_filter="country = 'US' AND day = '2026-01-27'")
111
+ ```
112
+
113
+ ## Pattern 5: Table Maintenance
114
+
115
+ ```python
116
+ from datetime import datetime, timedelta
117
+
118
+ table = catalog.load_table(("logs", "app_logs"))
119
+
120
+ # Compact → expire → cleanup (in order)
121
+ table.rewrite_data_files(target_file_size_bytes=128 * 1024 * 1024)
122
+ seven_days_ms = int((datetime.now() - timedelta(days=7)).timestamp() * 1000)
123
+ table.expire_snapshots(older_than=seven_days_ms, retain_last=10)
124
+ three_days_ms = int((datetime.now() - timedelta(days=3)).timestamp() * 1000)
125
+ table.delete_orphan_files(older_than=three_days_ms)
126
+ ```
127
+
128
+ See [api.md](api.md#table-maintenance) for detailed parameters.
129
+
130
+ ## Pattern 6: Concurrent Writes with Retry
131
+
132
+ ```python
133
+ from pyiceberg.exceptions import CommitFailedException
134
+ import time
135
+
136
+ def append_with_retry(table, data, max_retries=3):
137
+ for attempt in range(max_retries):
138
+ try:
139
+ table.append(data)
140
+ return
141
+ except CommitFailedException:
142
+ if attempt == max_retries - 1:
143
+ raise
144
+ time.sleep(2 ** attempt)
145
+ ```
146
+
147
+ ## Pattern 7: Upsert Simulation
148
+
149
+ ```python
150
+ import pandas as pd
151
+ import pyarrow as pa
152
+
153
+ # Read → merge → overwrite (not atomic, use Spark MERGE INTO for production)
154
+ existing = table.scan().to_pandas()
155
+ new_data = pd.DataFrame({"id": [1, 3], "value": [100, 300]})
156
+ merged = pd.concat([existing, new_data]).drop_duplicates(subset=["id"], keep="last")
157
+ table.overwrite(pa.Table.from_pandas(merged))
158
+ ```
159
+
160
+ ## Pattern 8: DuckDB Integration
161
+
162
+ ```python
163
+ import duckdb
164
+
165
+ arrow_table = table.scan().to_arrow()
166
+ con = duckdb.connect()
167
+ con.register("logs", arrow_table)
168
+ result = con.execute("SELECT level, COUNT(*) FROM logs GROUP BY level").fetchdf()
169
+ ```
170
+
171
+ ## Pattern 9: Monitor Table Health
172
+
173
+ ```python
174
+ files = table.scan().plan_files()
175
+ avg_mb = sum(f.file_size_in_bytes for f in files) / len(files) / (1024**2)
176
+ print(f"Files: {len(files)}, Avg: {avg_mb:.1f}MB, Snapshots: {len(table.snapshots())}")
177
+
178
+ if avg_mb < 10 or len(files) > 1000:
179
+ print("⚠️ Needs compaction")
180
+ ```
181
+
182
+ ## Best Practices
183
+
184
+ | Area | Guideline |
185
+ | ---------------- | ------------------------------------------------------------------------------ |
186
+ | **Partitioning** | Use day/hour for time-series; 100-1000 partitions; avoid high cardinality |
187
+ | **File sizes** | Target 128-512MB; compact when avg <10MB or >10k files |
188
+ | **Schema** | Add columns as nullable (`required=False`); batch changes |
189
+ | **Maintenance** | Compact high-write daily/weekly; expire snapshots 7-30d; cleanup orphans after |
190
+ | **Concurrency** | Reads automatic; writes to different partitions safe; retry same partition |
191
+ | **Performance** | Filter on partitions; select only needed columns; batch appends 100MB+ |
@@ -0,0 +1,138 @@
1
+ # Cloudflare R2 SQL Skill Reference
2
+
3
+ Expert guidance for Cloudflare R2 SQL - serverless distributed query engine for Apache Iceberg tables.
4
+
5
+ ## Reading Order
6
+
7
+ **New to R2 SQL?** Start here:
8
+
9
+ 1. Read "What is R2 SQL?" and "When to Use" below
10
+ 2. [configuration.md](configuration.md) - Enable catalog, create tokens
11
+ 3. [patterns.md](patterns.md) - Wrangler CLI and integration examples
12
+ 4. [api.md](api.md) - SQL syntax and query reference
13
+ 5. [gotchas.md](gotchas.md) - Limitations and troubleshooting
14
+
15
+ **Quick reference?** Jump to:
16
+
17
+ - [Run a query via Wrangler](patterns.md#wrangler-cli-query)
18
+ - [SQL syntax reference](api.md#sql-syntax)
19
+ - [ORDER BY limitations](gotchas.md#order-by-limitations)
20
+
21
+ ## What is R2 SQL?
22
+
23
+ R2 SQL is Cloudflare's **serverless distributed analytics query engine** for querying Apache Iceberg tables in R2 Data Catalog. Features:
24
+
25
+ - **Serverless** - No clusters to manage, no infrastructure
26
+ - **Distributed** - Leverages Cloudflare's global network for parallel execution
27
+ - **SQL interface** - Familiar SQL syntax for analytics queries
28
+ - **Zero egress fees** - Query from any cloud/region without data transfer costs
29
+ - **Open beta** - Free during beta (standard R2 storage costs apply)
30
+
31
+ ### What is Apache Iceberg?
32
+
33
+ Open table format for large-scale analytics datasets in object storage:
34
+
35
+ - **ACID transactions** - Safe concurrent reads/writes
36
+ - **Metadata optimization** - Fast queries without full table scans
37
+ - **Schema evolution** - Add/rename/drop columns without rewrites
38
+ - **Partitioning** - Organize data for efficient pruning
39
+
40
+ ## When to Use
41
+
42
+ **Use R2 SQL for:**
43
+
44
+ - **Log analytics** - Query application/system logs with WHERE filters and aggregations
45
+ - **BI dashboards** - Generate reports from large analytical datasets
46
+ - **Fraud detection** - Analyze transaction patterns with GROUP BY/HAVING
47
+ - **Multi-cloud analytics** - Query data from any cloud without egress fees
48
+ - **Ad-hoc exploration** - Run SQL queries on Iceberg tables via Wrangler CLI
49
+
50
+ **Don't use R2 SQL for:**
51
+
52
+ - **Workers/Pages runtime** - R2 SQL has no Workers binding, use HTTP API from external systems
53
+ - **Real-time queries (<100ms)** - Optimized for analytical batch queries, not OLTP
54
+ - **Complex joins/CTEs** - Limited SQL feature set (no JOINs, subqueries, CTEs currently)
55
+ - **Small datasets (<1GB)** - Setup overhead not justified
56
+
57
+ ## Decision Tree: Need to Query R2 Data?
58
+
59
+ ```
60
+ Do you need to query structured data in R2?
61
+ ├─ YES, data is in Iceberg tables
62
+ │ ├─ Need SQL interface? → Use R2 SQL (this reference)
63
+ │ ├─ Need Python API? → See r2-data-catalog reference (PyIceberg)
64
+ │ └─ Need other engine? → See r2-data-catalog reference (Spark, Trino, etc.)
65
+
66
+ ├─ YES, but not in Iceberg format
67
+ │ ├─ Streaming data? → Use Pipelines to write to Data Catalog, then R2 SQL
68
+ │ └─ Static files? → Use PyIceberg to create Iceberg tables, then R2 SQL
69
+
70
+ └─ NO, just need object storage → Use R2 reference (not R2 SQL)
71
+ ```
72
+
73
+ ## Architecture Overview
74
+
75
+ **Query Planner:**
76
+
77
+ - Top-down metadata investigation with multi-layer pruning
78
+ - Partition-level, column-level, and row-group pruning
79
+ - Streaming pipeline - execution starts before planning completes
80
+ - Early termination with LIMIT - stops when result complete
81
+
82
+ **Query Execution:**
83
+
84
+ - Coordinator distributes work to workers across Cloudflare network
85
+ - Workers run Apache DataFusion for parallel query execution
86
+ - Parquet column pruning - reads only required columns
87
+ - Ranged reads from R2 for efficiency
88
+
89
+ **Aggregation Strategies:**
90
+
91
+ - Scatter-gather - simple aggregations (SUM, COUNT, AVG)
92
+ - Shuffling - ORDER BY/HAVING on aggregates via hash partitioning
93
+
94
+ ## Quick Start
95
+
96
+ ```bash
97
+ # 1. Enable R2 Data Catalog on bucket
98
+ npx wrangler r2 bucket catalog enable my-bucket
99
+
100
+ # 2. Create API token (Admin Read & Write)
101
+ # Dashboard: R2 → Manage API tokens → Create API token
102
+
103
+ # 3. Set environment variable
104
+ export WRANGLER_R2_SQL_AUTH_TOKEN=<your-token>
105
+
106
+ # 4. Run query
107
+ npx wrangler r2 sql query "my-bucket" "SELECT * FROM default.my_table LIMIT 10"
108
+ ```
109
+
110
+ ## Important Limitations
111
+
112
+ **CRITICAL: No Workers Binding**
113
+
114
+ - R2 SQL cannot be called directly from Workers/Pages code
115
+ - For programmatic access, use HTTP API from external systems
116
+ - Or query via PyIceberg, Spark, etc. (see r2-data-catalog reference)
117
+
118
+ **SQL Feature Set:**
119
+
120
+ - No JOINs, CTEs, subqueries, window functions
121
+ - ORDER BY supports aggregation columns (not just partition keys)
122
+ - LIMIT max 10,000 (default 500)
123
+ - See [gotchas.md](gotchas.md) for complete limitations
124
+
125
+ ## In This Reference
126
+
127
+ - **[configuration.md](configuration.md)** - Enable catalog, create API tokens
128
+ - **[api.md](api.md)** - SQL syntax, functions, operators, data types
129
+ - **[patterns.md](patterns.md)** - Wrangler CLI, HTTP API, Pipelines, PyIceberg
130
+ - **[gotchas.md](gotchas.md)** - Limitations, troubleshooting, performance tips
131
+
132
+ ## See Also
133
+
134
+ - [r2-data-catalog](../r2-data-catalog/) - PyIceberg, REST API, external engines
135
+ - [pipelines](../pipelines/) - Streaming ingestion to Iceberg tables
136
+ - [r2](../r2/) - R2 object storage fundamentals
137
+ - [Cloudflare R2 SQL Docs](https://developers.cloudflare.com/r2-sql/)
138
+ - [R2 SQL Deep Dive Blog](https://blog.cloudflare.com/r2-sql-deep-dive/)