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,157 @@
1
+ # Cloudflare R2 Data Catalog Skill Reference
2
+
3
+ Expert guidance for Cloudflare R2 Data Catalog - Apache Iceberg catalog built into R2 buckets.
4
+
5
+ ## Reading Order
6
+
7
+ **New to R2 Data Catalog?** Start here:
8
+
9
+ 1. Read "What is R2 Data Catalog?" and "When to Use" below
10
+ 2. [configuration.md](configuration.md) - Enable catalog, create tokens
11
+ 3. [patterns.md](patterns.md) - PyIceberg setup and common patterns
12
+ 4. [api.md](api.md) - REST API reference as needed
13
+ 5. [gotchas.md](gotchas.md) - Troubleshooting when issues arise
14
+
15
+ **Quick reference?** Jump to:
16
+
17
+ - [Enable catalog on bucket](configuration.md#enable-catalog-on-bucket)
18
+ - [PyIceberg connection pattern](patterns.md#pyiceberg-connection-pattern)
19
+ - [Permission errors](gotchas.md#permission-errors)
20
+
21
+ ## What is R2 Data Catalog?
22
+
23
+ R2 Data Catalog is a **managed Apache Iceberg REST catalog** built directly into R2 buckets. It provides:
24
+
25
+ - **Apache Iceberg tables** - ACID transactions, schema evolution, time-travel queries
26
+ - **Zero-egress costs** - Query from any cloud/region without data transfer fees
27
+ - **Standard REST API** - Works with Spark, PyIceberg, Snowflake, Trino, DuckDB
28
+ - **No infrastructure** - Fully managed, no catalog servers to run
29
+ - **Public beta** - Available to all R2 subscribers, no extra cost beyond R2 storage
30
+
31
+ ### What is Apache Iceberg?
32
+
33
+ Open table format for analytics datasets in object storage. Features:
34
+
35
+ - **ACID transactions** - Safe concurrent reads/writes
36
+ - **Metadata optimization** - Fast queries without full scans
37
+ - **Schema evolution** - Add/rename/delete columns without rewrites
38
+ - **Time-travel** - Query historical snapshots
39
+ - **Partitioning** - Organize data for efficient queries
40
+
41
+ ## When to Use
42
+
43
+ **Use R2 Data Catalog for:**
44
+
45
+ - **Log analytics** - Store and query application/system logs
46
+ - **Data lakes/warehouses** - Analytical datasets queried by multiple engines
47
+ - **BI pipelines** - Aggregate data for dashboards and reports
48
+ - **Multi-cloud analytics** - Share data across clouds without egress fees
49
+ - **Time-series data** - Event streams, metrics, sensor data
50
+
51
+ **Don't use for:**
52
+
53
+ - **Transactional workloads** - Use D1 or external database instead
54
+ - **Sub-second latency** - Iceberg optimized for batch/analytical queries
55
+ - **Small datasets (<1GB)** - Setup overhead not worth it
56
+ - **Unstructured data** - Store files directly in R2, not as Iceberg tables
57
+
58
+ ## Architecture
59
+
60
+ ```
61
+ ┌─────────────────────────────────────────────────┐
62
+ │ Query Engines │
63
+ │ (PyIceberg, Spark, Trino, Snowflake, DuckDB) │
64
+ └────────────────┬────────────────────────────────┘
65
+
66
+ │ REST API (OAuth2 token)
67
+
68
+ ┌─────────────────────────────────────────────────┐
69
+ │ R2 Data Catalog (Managed Iceberg REST Catalog)│
70
+ │ • Namespace/table metadata │
71
+ │ • Transaction coordination │
72
+ │ • Snapshot management │
73
+ └────────────────┬────────────────────────────────┘
74
+
75
+ │ Vended credentials
76
+
77
+ ┌─────────────────────────────────────────────────┐
78
+ │ R2 Bucket Storage │
79
+ │ • Parquet data files │
80
+ │ • Metadata files │
81
+ │ • Manifest files │
82
+ └─────────────────────────────────────────────────┘
83
+ ```
84
+
85
+ **Key concepts:**
86
+
87
+ - **Catalog URI** - REST endpoint for catalog operations (e.g., `https://<account-id>.r2.cloudflarestorage.com/iceberg/<bucket>`)
88
+ - **Warehouse** - Logical grouping of tables (typically same as bucket name)
89
+ - **Namespace** - Schema/database containing tables (e.g., `logs`, `analytics`)
90
+ - **Table** - Iceberg table with schema, data files, snapshots
91
+ - **Vended credentials** - Temporary S3 credentials catalog provides for data access
92
+
93
+ ## Limits
94
+
95
+ | Resource | Limit | Notes |
96
+ | ---------------------- | ---------------------- | --------------------------------- |
97
+ | Namespaces per catalog | No hard limit | Organize tables logically |
98
+ | Tables per namespace | <10,000 recommended | Performance degrades beyond this |
99
+ | Files per table | <100,000 recommended | Run compaction regularly |
100
+ | Snapshots per table | Configurable retention | Expire >7 days old |
101
+ | Partitions per table | 100-1,000 optimal | Too many = slow metadata ops |
102
+ | Table size | Same as R2 bucket | 10GB-10TB+ common |
103
+ | API rate limits | Standard R2 API limits | Shared with R2 storage operations |
104
+ | Target file size | 128-512 MB | After compaction |
105
+
106
+ ## Current Status
107
+
108
+ **Public Beta** (as of Jan 2026)
109
+
110
+ - Available to all R2 subscribers
111
+ - No extra cost beyond standard R2 storage/operations
112
+ - Production-ready, but breaking changes possible
113
+ - Supports: namespaces, tables, snapshots, compaction, time-travel, table maintenance
114
+
115
+ ## Decision Tree: Is R2 Data Catalog Right For You?
116
+
117
+ ```
118
+ Start → Need analytics on object storage data?
119
+
120
+ ├─ No → Use R2 directly for object storage
121
+
122
+ └─ Yes → Dataset >1GB with structured schema?
123
+
124
+ ├─ No → Too small, use R2 + ad-hoc queries
125
+
126
+ └─ Yes → Need ACID transactions or schema evolution?
127
+
128
+ ├─ No → Consider simpler solutions (Parquet on R2)
129
+
130
+ └─ Yes → Need multi-cloud/multi-tool access?
131
+
132
+ ├─ No → D1 or external DB may be simpler
133
+
134
+ └─ Yes → ✅ Use R2 Data Catalog
135
+ ```
136
+
137
+ **Quick check:** If you answer "yes" to all:
138
+
139
+ - Dataset >1GB and growing
140
+ - Structured/tabular data (logs, events, metrics)
141
+ - Multiple query tools or cloud environments
142
+ - Need versioning, schema changes, or concurrent access
143
+
144
+ → R2 Data Catalog is a good fit.
145
+
146
+ ## In This Reference
147
+
148
+ - **[configuration.md](configuration.md)** - Enable catalog, create API tokens, connect clients
149
+ - **[api.md](api.md)** - REST endpoints, operations, maintenance
150
+ - **[patterns.md](patterns.md)** - PyIceberg examples, common use cases
151
+ - **[gotchas.md](gotchas.md)** - Troubleshooting, best practices, limitations
152
+
153
+ ## See Also
154
+
155
+ - [Cloudflare R2 Data Catalog Docs](https://developers.cloudflare.com/r2/data-catalog/)
156
+ - [Apache Iceberg Docs](https://iceberg.apache.org/)
157
+ - [PyIceberg Docs](https://py.iceberg.apache.org/)
@@ -0,0 +1,199 @@
1
+ # API Reference
2
+
3
+ R2 Data Catalog exposes standard [Apache Iceberg REST Catalog API](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml).
4
+
5
+ ## Quick Reference
6
+
7
+ **Most common operations:**
8
+
9
+ | Task | PyIceberg Code |
10
+ | ---------------- | ----------------------------------------------------------------- |
11
+ | Connect | `RestCatalog(name="r2", warehouse=bucket, uri=uri, token=token)` |
12
+ | List namespaces | `catalog.list_namespaces()` |
13
+ | Create namespace | `catalog.create_namespace("logs")` |
14
+ | Create table | `catalog.create_table(("ns", "table"), schema=schema)` |
15
+ | Load table | `catalog.load_table(("ns", "table"))` |
16
+ | Append data | `table.append(pyarrow_table)` |
17
+ | Query data | `table.scan().to_pandas()` |
18
+ | Compact files | `table.rewrite_data_files(target_file_size_bytes=128*1024*1024)` |
19
+ | Expire snapshots | `table.expire_snapshots(older_than=timestamp_ms, retain_last=10)` |
20
+
21
+ ## REST Endpoints
22
+
23
+ Base: `https://<account-id>.r2.cloudflarestorage.com/iceberg/<bucket-name>`
24
+
25
+ | Operation | Method | Path |
26
+ | ---------------- | ------ | ------------------------------------ |
27
+ | Catalog config | GET | `/v1/config` |
28
+ | List namespaces | GET | `/v1/namespaces` |
29
+ | Create namespace | POST | `/v1/namespaces` |
30
+ | Delete namespace | DELETE | `/v1/namespaces/{ns}` |
31
+ | List tables | GET | `/v1/namespaces/{ns}/tables` |
32
+ | Create table | POST | `/v1/namespaces/{ns}/tables` |
33
+ | Load table | GET | `/v1/namespaces/{ns}/tables/{table}` |
34
+ | Update table | POST | `/v1/namespaces/{ns}/tables/{table}` |
35
+ | Delete table | DELETE | `/v1/namespaces/{ns}/tables/{table}` |
36
+ | Rename table | POST | `/v1/tables/rename` |
37
+
38
+ **Authentication:** Bearer token in header: `Authorization: Bearer <token>`
39
+
40
+ ## PyIceberg Client API
41
+
42
+ Most users use PyIceberg, not raw REST.
43
+
44
+ ### Connection
45
+
46
+ ```python
47
+ from pyiceberg.catalog.rest import RestCatalog
48
+
49
+ catalog = RestCatalog(
50
+ name="my_catalog",
51
+ warehouse="<bucket-name>",
52
+ uri="<catalog-uri>",
53
+ token="<api-token>",
54
+ )
55
+ ```
56
+
57
+ ### Namespace Operations
58
+
59
+ ```python
60
+ from pyiceberg.exceptions import NamespaceAlreadyExistsError
61
+
62
+ namespaces = catalog.list_namespaces() # [('default',), ('logs',)]
63
+ catalog.create_namespace("logs", properties={"owner": "team"})
64
+ catalog.drop_namespace("logs") # Must be empty
65
+ ```
66
+
67
+ ### Table Operations
68
+
69
+ ```python
70
+ from pyiceberg.schema import Schema
71
+ from pyiceberg.types import NestedField, StringType, IntegerType
72
+
73
+ schema = Schema(
74
+ NestedField(1, "id", IntegerType(), required=True),
75
+ NestedField(2, "name", StringType(), required=False),
76
+ )
77
+ table = catalog.create_table(("logs", "app_logs"), schema=schema)
78
+ tables = catalog.list_tables("logs")
79
+ table = catalog.load_table(("logs", "app_logs"))
80
+ catalog.rename_table(("logs", "old"), ("logs", "new"))
81
+ ```
82
+
83
+ ### Data Operations
84
+
85
+ ```python
86
+ import pyarrow as pa
87
+
88
+ data = pa.table({"id": [1, 2], "name": ["Alice", "Bob"]})
89
+ table.append(data)
90
+ table.overwrite(data)
91
+
92
+ # Read with filters
93
+ scan = table.scan(row_filter="id > 100", selected_fields=["id", "name"])
94
+ df = scan.to_pandas()
95
+ ```
96
+
97
+ ### Schema Evolution
98
+
99
+ ```python
100
+ from pyiceberg.types import IntegerType, LongType
101
+
102
+ with table.update_schema() as update:
103
+ update.add_column("user_id", IntegerType(), doc="User ID")
104
+ update.rename_column("msg", "message")
105
+ update.delete_column("old_field")
106
+ update.update_column("id", field_type=LongType()) # int→long only
107
+ ```
108
+
109
+ ### Time-Travel
110
+
111
+ ```python
112
+ from datetime import datetime, timedelta
113
+
114
+ # Query specific snapshot or timestamp
115
+ scan = table.scan(snapshot_id=table.snapshots()[-2].snapshot_id)
116
+ yesterday_ms = int((datetime.now() - timedelta(days=1)).timestamp() * 1000)
117
+ scan = table.scan(as_of_timestamp=yesterday_ms)
118
+ ```
119
+
120
+ ### Partitioning
121
+
122
+ ```python
123
+ from pyiceberg.partitioning import PartitionSpec, PartitionField
124
+ from pyiceberg.transforms import DayTransform
125
+ from pyiceberg.types import TimestampType
126
+
127
+ partition_spec = PartitionSpec(
128
+ PartitionField(source_id=1, field_id=1000, transform=DayTransform(), name="day")
129
+ )
130
+ table = catalog.create_table(("events", "actions"), schema=schema, partition_spec=partition_spec)
131
+ scan = table.scan(row_filter="day = '2026-01-27'") # Prunes partitions
132
+ ```
133
+
134
+ ## Table Maintenance
135
+
136
+ ### Compaction
137
+
138
+ ```python
139
+ files = table.scan().plan_files()
140
+ avg_mb = sum(f.file_size_in_bytes for f in files) / len(files) / (1024**2)
141
+ print(f"Files: {len(files)}, Avg: {avg_mb:.1f} MB")
142
+
143
+ table.rewrite_data_files(target_file_size_bytes=128 * 1024 * 1024)
144
+ ```
145
+
146
+ **When:** Avg <10MB or >1000 files. **Frequency:** High-write daily, medium weekly.
147
+
148
+ ### Snapshot Expiration
149
+
150
+ ```python
151
+ from datetime import datetime, timedelta
152
+
153
+ seven_days_ms = int((datetime.now() - timedelta(days=7)).timestamp() * 1000)
154
+ table.expire_snapshots(older_than=seven_days_ms, retain_last=10)
155
+ ```
156
+
157
+ **Retention:** Production 7-30d, dev 1-7d, audit 90+d.
158
+
159
+ ### Orphan Cleanup
160
+
161
+ ```python
162
+ three_days_ms = int((datetime.now() - timedelta(days=3)).timestamp() * 1000)
163
+ table.delete_orphan_files(older_than=three_days_ms)
164
+ ```
165
+
166
+ ⚠️ Always expire snapshots first, use 3+ day threshold, run during low traffic.
167
+
168
+ ### Full Maintenance
169
+
170
+ ```python
171
+ # Compact → Expire → Cleanup (in order)
172
+ if len(table.scan().plan_files()) > 1000:
173
+ table.rewrite_data_files(target_file_size_bytes=128 * 1024 * 1024)
174
+ seven_days_ms = int((datetime.now() - timedelta(days=7)).timestamp() * 1000)
175
+ table.expire_snapshots(older_than=seven_days_ms, retain_last=10)
176
+ three_days_ms = int((datetime.now() - timedelta(days=3)).timestamp() * 1000)
177
+ table.delete_orphan_files(older_than=three_days_ms)
178
+ ```
179
+
180
+ ## Metadata Inspection
181
+
182
+ ```python
183
+ table = catalog.load_table(("logs", "app_logs"))
184
+ print(table.schema())
185
+ print(table.current_snapshot())
186
+ print(table.properties)
187
+ print(f"Files: {len(table.scan().plan_files())}")
188
+ ```
189
+
190
+ ## Error Codes
191
+
192
+ | Code | Meaning | Common Causes |
193
+ | ---- | ------------ | -------------------------------------------- |
194
+ | 401 | Unauthorized | Invalid/missing token |
195
+ | 404 | Not Found | Catalog not enabled, namespace/table missing |
196
+ | 409 | Conflict | Already exists, concurrent update |
197
+ | 422 | Validation | Invalid schema, incompatible type |
198
+
199
+ See [gotchas.md](gotchas.md) for detailed troubleshooting.
@@ -0,0 +1,205 @@
1
+ # Configuration
2
+
3
+ How to enable R2 Data Catalog and configure authentication.
4
+
5
+ ## Prerequisites
6
+
7
+ - Cloudflare account with [R2 subscription](https://developers.cloudflare.com/r2/pricing/)
8
+ - R2 bucket created
9
+ - Access to Cloudflare dashboard or Wrangler CLI
10
+
11
+ ## Enable Catalog on Bucket
12
+
13
+ Choose one method:
14
+
15
+ ### Via Wrangler (Recommended)
16
+
17
+ ```bash
18
+ npx wrangler r2 bucket catalog enable <BUCKET_NAME>
19
+ ```
20
+
21
+ **Output:**
22
+
23
+ ```
24
+ ✅ Data Catalog enabled for bucket 'my-bucket'
25
+ Catalog URI: https://<account-id>.r2.cloudflarestorage.com/iceberg/my-bucket
26
+ Warehouse: my-bucket
27
+ ```
28
+
29
+ ### Via Dashboard
30
+
31
+ 1. Navigate to **R2** → Select your bucket → **Settings** tab
32
+ 2. Scroll to "R2 Data Catalog" section → Click **Enable**
33
+ 3. Note the **Catalog URI** and **Warehouse name** shown
34
+
35
+ **Result:**
36
+
37
+ - Catalog URI: `https://<account-id>.r2.cloudflarestorage.com/iceberg/<bucket-name>`
38
+ - Warehouse: `<bucket-name>` (same as bucket name)
39
+
40
+ ### Via API (Programmatic)
41
+
42
+ ```bash
43
+ curl -X POST \
44
+ "https://api.cloudflare.com/client/v4/accounts/<account-id>/r2/buckets/<bucket>/catalog" \
45
+ -H "Authorization: Bearer <api-token>" \
46
+ -H "Content-Type: application/json"
47
+ ```
48
+
49
+ **Response:**
50
+
51
+ ```json
52
+ {
53
+ "result": {
54
+ "catalog_uri": "https://<account-id>.r2.cloudflarestorage.com/iceberg/<bucket>",
55
+ "warehouse": "<bucket>"
56
+ },
57
+ "success": true
58
+ }
59
+ ```
60
+
61
+ ## Check Catalog Status
62
+
63
+ ```bash
64
+ npx wrangler r2 bucket catalog status <BUCKET_NAME>
65
+ ```
66
+
67
+ **Output:**
68
+
69
+ ```
70
+ Catalog Status: enabled
71
+ Catalog URI: https://<account-id>.r2.cloudflarestorage.com/iceberg/my-bucket
72
+ Warehouse: my-bucket
73
+ ```
74
+
75
+ ## Disable Catalog (If Needed)
76
+
77
+ ```bash
78
+ npx wrangler r2 bucket catalog disable <BUCKET_NAME>
79
+ ```
80
+
81
+ ⚠️ **Warning:** Disabling does NOT delete tables/data. Files remain in bucket. Metadata becomes inaccessible until re-enabled.
82
+
83
+ ## API Token Creation
84
+
85
+ R2 Data Catalog requires API token with **both** R2 Storage + R2 Data Catalog permissions.
86
+
87
+ ### Dashboard Method (Recommended)
88
+
89
+ 1. Go to **R2** → **Manage R2 API Tokens** → **Create API Token**
90
+ 2. Select permission level:
91
+ - **Admin Read & Write** - Full catalog + storage access (read/write)
92
+ - **Admin Read only** - Read-only access (for query engines)
93
+ 3. Copy token value immediately (shown only once)
94
+
95
+ **Permission groups included:**
96
+
97
+ - `Workers R2 Data Catalog Write` (or Read)
98
+ - `Workers R2 Storage Bucket Item Write` (or Read)
99
+
100
+ ### API Method (Programmatic)
101
+
102
+ Use Cloudflare API to create tokens programmatically. Required permissions:
103
+
104
+ - `Workers R2 Data Catalog Write` (or Read)
105
+ - `Workers R2 Storage Bucket Item Write` (or Read)
106
+
107
+ ## Client Configuration
108
+
109
+ ### PyIceberg
110
+
111
+ ```python
112
+ from pyiceberg.catalog.rest import RestCatalog
113
+
114
+ catalog = RestCatalog(
115
+ name="my_catalog",
116
+ warehouse="<bucket-name>", # Same as bucket name
117
+ uri="<catalog-uri>", # From enable command
118
+ token="<api-token>", # From token creation
119
+ )
120
+ ```
121
+
122
+ **Full example with credentials:**
123
+
124
+ ```python
125
+ import os
126
+ from pyiceberg.catalog.rest import RestCatalog
127
+
128
+ # Store credentials in environment variables
129
+ WAREHOUSE = os.getenv("R2_WAREHOUSE") # e.g., "my-bucket"
130
+ CATALOG_URI = os.getenv("R2_CATALOG_URI") # e.g., "https://abc123.r2.cloudflarestorage.com/iceberg/my-bucket"
131
+ TOKEN = os.getenv("R2_TOKEN") # API token
132
+
133
+ catalog = RestCatalog(
134
+ name="r2_catalog",
135
+ warehouse=WAREHOUSE,
136
+ uri=CATALOG_URI,
137
+ token=TOKEN,
138
+ )
139
+
140
+ # Test connection
141
+ print(catalog.list_namespaces())
142
+ ```
143
+
144
+ ### Spark / Trino / DuckDB
145
+
146
+ See [patterns.md](patterns.md) for integration examples with other query engines.
147
+
148
+ ## Connection String Format
149
+
150
+ For quick reference:
151
+
152
+ ```
153
+ Catalog URI: https://<account-id>.r2.cloudflarestorage.com/iceberg/<bucket>
154
+ Warehouse: <bucket-name>
155
+ Token: <r2-api-token>
156
+ ```
157
+
158
+ **Where to find values:**
159
+
160
+ | Value | Source |
161
+ | -------------- | ----------------------------------------------- |
162
+ | `<account-id>` | Dashboard URL or `wrangler whoami` |
163
+ | `<bucket>` | R2 bucket name |
164
+ | Catalog URI | Output from `wrangler r2 bucket catalog enable` |
165
+ | Token | R2 API Token creation page |
166
+
167
+ ## Security Best Practices
168
+
169
+ 1. **Store tokens securely** - Use environment variables or secret managers, never hardcode
170
+ 2. **Use least privilege** - Read-only tokens for query engines, write tokens only where needed
171
+ 3. **Rotate tokens regularly** - Create new tokens, test, then revoke old ones
172
+ 4. **One token per application** - Easier to track and revoke if compromised
173
+ 5. **Monitor token usage** - Check R2 analytics for unexpected patterns
174
+ 6. **Bucket-scoped tokens** - Create tokens per bucket, not account-wide
175
+
176
+ ## Environment Variables Pattern
177
+
178
+ ```bash
179
+ # .env (never commit)
180
+ R2_CATALOG_URI=https://<account-id>.r2.cloudflarestorage.com/iceberg/<bucket>
181
+ R2_WAREHOUSE=<bucket-name>
182
+ R2_TOKEN=<api-token>
183
+ ```
184
+
185
+ ```python
186
+ import os
187
+ from pyiceberg.catalog.rest import RestCatalog
188
+
189
+ catalog = RestCatalog(
190
+ name="r2",
191
+ uri=os.getenv("R2_CATALOG_URI"),
192
+ warehouse=os.getenv("R2_WAREHOUSE"),
193
+ token=os.getenv("R2_TOKEN"),
194
+ )
195
+ ```
196
+
197
+ ## Troubleshooting
198
+
199
+ | Problem | Solution |
200
+ | ----------------------- | -------------------------------------------------- |
201
+ | 404 "catalog not found" | Run `wrangler r2 bucket catalog enable <bucket>` |
202
+ | 401 "unauthorized" | Check token has both Catalog + Storage permissions |
203
+ | 403 on data files | Token needs both permission groups |
204
+
205
+ See [gotchas.md](gotchas.md) for detailed troubleshooting.