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,213 @@
1
+ # D1 API Reference
2
+
3
+ ## Prepared Statements (Required for Security)
4
+
5
+ ```typescript
6
+ // ❌ NEVER: Direct string interpolation (SQL injection risk)
7
+ const result = await env.DB.prepare(`SELECT * FROM users WHERE id = ${userId}`).all()
8
+
9
+ // ✅ CORRECT: Prepared statements with bind()
10
+ const result = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).all()
11
+
12
+ // Multiple parameters
13
+ const result = await env.DB.prepare('SELECT * FROM users WHERE email = ? AND active = ?')
14
+ .bind(email, true)
15
+ .all()
16
+ ```
17
+
18
+ ## Query Execution Methods
19
+
20
+ ```typescript
21
+ // .all() - Returns all rows
22
+ const { results, success, meta } = await env.DB.prepare('SELECT * FROM users WHERE active = ?')
23
+ .bind(true)
24
+ .all()
25
+ // results: Array of row objects; success: boolean
26
+ // meta: { duration: number, rows_read: number, rows_written: number }
27
+
28
+ // .first() - Returns first row or null
29
+ const user = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first()
30
+
31
+ // .first(columnName) - Returns single column value
32
+ const email = await env.DB.prepare('SELECT email FROM users WHERE id = ?')
33
+ .bind(userId)
34
+ .first('email')
35
+ // Returns string | number | null
36
+
37
+ // .run() - For INSERT/UPDATE/DELETE (no row data returned)
38
+ const result = await env.DB.prepare('UPDATE users SET last_login = ? WHERE id = ?')
39
+ .bind(Date.now(), userId)
40
+ .run()
41
+ // result.meta: { duration, rows_read, rows_written, last_row_id, changes }
42
+
43
+ // .raw() - Returns array of arrays (efficient for large datasets)
44
+ const rawResults = await env.DB.prepare('SELECT id, name FROM users').raw()
45
+ // [[1, 'Alice'], [2, 'Bob']]
46
+ ```
47
+
48
+ ## Batch Operations
49
+
50
+ ```typescript
51
+ // Execute multiple queries in single round trip (atomic transaction)
52
+ const results = await env.DB.batch([
53
+ env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(1),
54
+ env.DB.prepare('SELECT * FROM posts WHERE author_id = ?').bind(1),
55
+ env.DB.prepare('UPDATE users SET last_access = ? WHERE id = ?').bind(Date.now(), 1),
56
+ ])
57
+ // results is array: [result1, result2, result3]
58
+
59
+ // Batch with same prepared statement, different params
60
+ const userIds = [1, 2, 3]
61
+ const stmt = env.DB.prepare('SELECT * FROM users WHERE id = ?')
62
+ const results = await env.DB.batch(userIds.map((id) => stmt.bind(id)))
63
+ ```
64
+
65
+ ## Transactions (via batch)
66
+
67
+ ```typescript
68
+ // D1 executes batch() as atomic transaction - all succeed or all fail
69
+ const results = await env.DB.batch([
70
+ env.DB.prepare('INSERT INTO accounts (id, balance) VALUES (?, ?)').bind(1, 100),
71
+ env.DB.prepare('INSERT INTO accounts (id, balance) VALUES (?, ?)').bind(2, 200),
72
+ env.DB.prepare('UPDATE accounts SET balance = balance - ? WHERE id = ?').bind(50, 1),
73
+ env.DB.prepare('UPDATE accounts SET balance = balance + ? WHERE id = ?').bind(50, 2),
74
+ ])
75
+ ```
76
+
77
+ ## Sessions API (Paid Plans)
78
+
79
+ Long-running sessions for operations exceeding 30s timeout (up to 15 min).
80
+
81
+ ```typescript
82
+ const session = env.DB.withSession({ timeout: 600 }) // 10 min (1-900s)
83
+ try {
84
+ await session.prepare('CREATE INDEX idx_large ON big_table(column)').run()
85
+ await session.prepare('ANALYZE').run()
86
+ } finally {
87
+ session.close() // CRITICAL: always close to prevent leaks
88
+ }
89
+ ```
90
+
91
+ **Use cases**: Migrations, ANALYZE, large index creation, bulk transformations
92
+
93
+ ## Read Replication (Paid Plans)
94
+
95
+ Routes queries to nearest replica for lower latency. Writes always go to primary.
96
+
97
+ ```typescript
98
+ interface Env {
99
+ DB: D1Database // Primary (writes)
100
+ DB_REPLICA: D1Database // Replica (reads)
101
+ }
102
+
103
+ // Reads: use replica
104
+ const user = await env.DB_REPLICA.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first()
105
+
106
+ // Writes: use primary
107
+ await env.DB.prepare('UPDATE users SET last_login = ? WHERE id = ?').bind(Date.now(), userId).run()
108
+
109
+ // Read-after-write: use primary for consistency (replication lag <100ms-2s)
110
+ await env.DB.prepare('INSERT INTO posts (title) VALUES (?)').bind(title).run()
111
+ const post = await env.DB.prepare('SELECT * FROM posts WHERE title = ?').bind(title).first() // Primary
112
+ ```
113
+
114
+ ## Error Handling
115
+
116
+ ```typescript
117
+ async function getUser(userId: number, env: Env): Promise<Response> {
118
+ try {
119
+ const result = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).all()
120
+ if (!result.success) return new Response('Database error', { status: 500 })
121
+ if (result.results.length === 0) return new Response('User not found', { status: 404 })
122
+ return Response.json(result.results[0])
123
+ } catch (error) {
124
+ return new Response('Internal error', { status: 500 })
125
+ }
126
+ }
127
+
128
+ // Constraint violations
129
+ try {
130
+ await env.DB.prepare('INSERT INTO users (email, name) VALUES (?, ?)').bind(email, name).run()
131
+ } catch (error) {
132
+ if (error.message?.includes('UNIQUE constraint failed'))
133
+ return new Response('Email exists', { status: 409 })
134
+ throw error
135
+ }
136
+ ```
137
+
138
+ ## REST API (HTTP) Access
139
+
140
+ Access D1 from external services (non-Worker contexts) using Cloudflare API.
141
+
142
+ ```typescript
143
+ // Single query
144
+ const response = await fetch(
145
+ `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/d1/database/${DATABASE_ID}/query`,
146
+ {
147
+ method: 'POST',
148
+ headers: {
149
+ Authorization: `Bearer ${CLOUDFLARE_API_TOKEN}`,
150
+ 'Content-Type': 'application/json',
151
+ },
152
+ body: JSON.stringify({
153
+ sql: 'SELECT * FROM users WHERE id = ?',
154
+ params: [userId],
155
+ }),
156
+ }
157
+ )
158
+
159
+ const { result, success, errors } = await response.json()
160
+ // result: [{ results: [...], success: true, meta: {...} }]
161
+
162
+ // Batch queries via HTTP
163
+ const response = await fetch(
164
+ `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/d1/database/${DATABASE_ID}/query`,
165
+ {
166
+ method: 'POST',
167
+ headers: {
168
+ Authorization: `Bearer ${CLOUDFLARE_API_TOKEN}`,
169
+ 'Content-Type': 'application/json',
170
+ },
171
+ body: JSON.stringify([
172
+ { sql: 'SELECT * FROM users WHERE id = ?', params: [1] },
173
+ { sql: 'SELECT * FROM posts WHERE author_id = ?', params: [1] },
174
+ ]),
175
+ }
176
+ )
177
+ ```
178
+
179
+ **Use cases**: Server-side scripts, CI/CD migrations, administrative tools, non-Worker integrations
180
+
181
+ ## Testing & Debugging
182
+
183
+ ```typescript
184
+ // Vitest with unstable_dev
185
+ import { unstable_dev } from 'wrangler'
186
+ describe('D1', () => {
187
+ let worker: Awaited<ReturnType<typeof unstable_dev>>
188
+ beforeAll(async () => {
189
+ worker = await unstable_dev('src/index.ts')
190
+ })
191
+ afterAll(async () => {
192
+ await worker.stop()
193
+ })
194
+ it('queries users', async () => {
195
+ expect((await worker.fetch('/users')).status).toBe(200)
196
+ })
197
+ })
198
+
199
+ // Debug query performance
200
+ const result = await env.DB.prepare('SELECT * FROM users').all()
201
+ console.log('Duration:', result.meta.duration, 'ms')
202
+
203
+ // Query plan analysis
204
+ const plan = await env.DB.prepare('EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = ?')
205
+ .bind(email)
206
+ .all()
207
+ ```
208
+
209
+ ```bash
210
+ # Inspect local database
211
+ sqlite3 .wrangler/state/v3/d1/<database-id>.sqlite
212
+ .tables; .schema users; PRAGMA table_info(users);
213
+ ```
@@ -0,0 +1,198 @@
1
+ # D1 Configuration
2
+
3
+ ## wrangler.jsonc Setup
4
+
5
+ ```jsonc
6
+ {
7
+ "name": "your-worker-name",
8
+ "main": "src/index.ts",
9
+ "compatibility_date": "2025-01-01", // Use current date for new projects
10
+ "d1_databases": [
11
+ {
12
+ "binding": "DB", // Env variable name
13
+ "database_name": "your-db-name", // Human-readable name
14
+ "database_id": "your-database-id", // UUID from dashboard/CLI
15
+ "migrations_dir": "migrations", // Optional: default is "migrations"
16
+ },
17
+ // Read replica (paid plans only)
18
+ {
19
+ "binding": "DB_REPLICA",
20
+ "database_name": "your-db-name",
21
+ "database_id": "your-database-id", // Same ID, different binding
22
+ },
23
+ // Multiple databases
24
+ {
25
+ "binding": "ANALYTICS_DB",
26
+ "database_name": "analytics-db",
27
+ "database_id": "yyy-yyy-yyy",
28
+ },
29
+ ],
30
+ }
31
+ ```
32
+
33
+ ## TypeScript Types
34
+
35
+ ```typescript
36
+ interface Env {
37
+ DB: D1Database
38
+ ANALYTICS_DB?: D1Database
39
+ }
40
+
41
+ export default {
42
+ async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
43
+ const result = await env.DB.prepare('SELECT * FROM users').all()
44
+ return Response.json(result.results)
45
+ },
46
+ }
47
+ ```
48
+
49
+ ## Migrations
50
+
51
+ File structure: `migrations/0001_initial_schema.sql`, `0002_add_posts.sql`, etc.
52
+
53
+ ### Example Migration
54
+
55
+ ```sql
56
+ -- migrations/0001_initial_schema.sql
57
+ CREATE TABLE IF NOT EXISTS users (
58
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
59
+ email TEXT UNIQUE NOT NULL,
60
+ name TEXT NOT NULL,
61
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP,
62
+ updated_at TEXT DEFAULT CURRENT_TIMESTAMP
63
+ );
64
+
65
+ CREATE INDEX idx_users_email ON users(email);
66
+
67
+ CREATE TABLE IF NOT EXISTS posts (
68
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
69
+ user_id INTEGER NOT NULL,
70
+ title TEXT NOT NULL,
71
+ content TEXT,
72
+ published BOOLEAN DEFAULT 0,
73
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP,
74
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
75
+ );
76
+
77
+ CREATE INDEX idx_posts_user_id ON posts(user_id);
78
+ CREATE INDEX idx_posts_published ON posts(published);
79
+ ```
80
+
81
+ ### Running Migrations
82
+
83
+ ```bash
84
+ # Create new migration file
85
+ wrangler d1 migrations create <db-name> add_users_table
86
+ # Creates: migrations/0001_add_users_table.sql
87
+
88
+ # Apply migrations
89
+ wrangler d1 migrations apply <db-name> --local # Apply to local DB
90
+ wrangler d1 migrations apply <db-name> --remote # Apply to production DB
91
+
92
+ # List applied migrations
93
+ wrangler d1 migrations list <db-name> --remote
94
+
95
+ # Direct SQL execution (bypasses migration tracking)
96
+ wrangler d1 execute <db-name> --remote --command="SELECT * FROM users"
97
+ wrangler d1 execute <db-name> --local --file=./schema.sql
98
+ ```
99
+
100
+ **Migration tracking**: Wrangler creates `d1_migrations` table automatically to track applied migrations
101
+
102
+ ## Indexing Strategy
103
+
104
+ ```sql
105
+ -- Index frequently queried columns
106
+ CREATE INDEX idx_users_email ON users(email);
107
+
108
+ -- Composite indexes for multi-column queries
109
+ CREATE INDEX idx_posts_user_published ON posts(user_id, published);
110
+
111
+ -- Covering indexes (include queried columns)
112
+ CREATE INDEX idx_users_email_name ON users(email, name);
113
+
114
+ -- Partial indexes for filtered queries
115
+ CREATE INDEX idx_active_users ON users(email) WHERE active = 1;
116
+
117
+ -- Check if query uses index
118
+ EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = ?;
119
+ ```
120
+
121
+ ## Drizzle ORM
122
+
123
+ ```typescript
124
+ // drizzle.config.ts
125
+ export default {
126
+ schema: './src/schema.ts',
127
+ out: './migrations',
128
+ dialect: 'sqlite',
129
+ driver: 'd1-http',
130
+ dbCredentials: {
131
+ accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
132
+ databaseId: process.env.D1_DATABASE_ID!,
133
+ token: process.env.CLOUDFLARE_API_TOKEN!,
134
+ },
135
+ } satisfies Config
136
+
137
+ // schema.ts
138
+ import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'
139
+ export const users = sqliteTable('users', {
140
+ id: integer('id').primaryKey({ autoIncrement: true }),
141
+ email: text('email').notNull().unique(),
142
+ name: text('name').notNull(),
143
+ })
144
+
145
+ // worker.ts
146
+ import { drizzle } from 'drizzle-orm/d1'
147
+ import { users } from './schema'
148
+ export default {
149
+ async fetch(request: Request, env: Env) {
150
+ const db = drizzle(env.DB)
151
+ return Response.json(await db.select().from(users))
152
+ },
153
+ }
154
+ ```
155
+
156
+ ## Import & Export
157
+
158
+ ```bash
159
+ # Export full database (schema + data)
160
+ wrangler d1 export <db-name> --remote --output=./backup.sql
161
+
162
+ # Export data only (no schema)
163
+ wrangler d1 export <db-name> --remote --no-schema --output=./data-only.sql
164
+
165
+ # Export with foreign key constraints preserved
166
+ # (Default: foreign keys are disabled during export for import compatibility)
167
+
168
+ # Import SQL file
169
+ wrangler d1 execute <db-name> --remote --file=./backup.sql
170
+
171
+ # Limitations
172
+ # - BLOB data may not export correctly (use R2 for binary files)
173
+ # - Very large exports (>1GB) may timeout (split into chunks)
174
+ # - Import is NOT atomic (use batch() for transactional imports in Workers)
175
+ ```
176
+
177
+ ## Plan Tiers
178
+
179
+ | Feature | Free | Paid |
180
+ | ------------- | ---------------- | ----------------- |
181
+ | Database size | 500 MB | 10 GB |
182
+ | Batch size | 1,000 statements | 10,000 statements |
183
+ | Time Travel | 7 days | 30 days |
184
+ | Read replicas | ❌ | ✅ |
185
+ | Sessions API | ❌ | ✅ (up to 15 min) |
186
+ | Pricing | Free | $5/mo + usage |
187
+
188
+ **Usage pricing** (paid plans): $0.001 per 1K reads + $1 per 1M writes + $0.75/GB storage/month
189
+
190
+ ## Local Development
191
+
192
+ ```bash
193
+ wrangler dev --persist-to=./.wrangler/state # Persist across restarts
194
+ # Local DB: .wrangler/state/v3/d1/<database-id>.sqlite
195
+ sqlite3 .wrangler/state/v3/d1/<database-id>.sqlite # Inspect
196
+
197
+ # Local dev uses free tier limits by default
198
+ ```
@@ -0,0 +1,98 @@
1
+ # D1 Gotchas & Troubleshooting
2
+
3
+ ## Common Errors
4
+
5
+ ### "SQL Injection Vulnerability"
6
+
7
+ **Cause:** Using string interpolation instead of prepared statements with bind()
8
+ **Solution:** ALWAYS use prepared statements: `env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).all()` instead of string interpolation which allows attackers to inject malicious SQL
9
+
10
+ ### "no such table"
11
+
12
+ **Cause:** Table doesn't exist because migrations haven't been run, or using wrong database binding
13
+ **Solution:** Run migrations using `wrangler d1 migrations apply <db-name> --remote` and verify binding name in wrangler.jsonc matches code
14
+
15
+ ### "UNIQUE constraint failed"
16
+
17
+ **Cause:** Attempting to insert duplicate value in column with UNIQUE constraint
18
+ **Solution:** Catch error and return 409 Conflict status code
19
+
20
+ ### "Query Timeout (30s exceeded)"
21
+
22
+ **Cause:** Query execution exceeds 30 second timeout limit
23
+ **Solution:** Break into smaller queries, add indexes to speed up queries, or reduce dataset size
24
+
25
+ ### "N+1 Query Problem"
26
+
27
+ **Cause:** Making multiple individual queries in a loop instead of single optimized query
28
+ **Solution:** Use JOIN to fetch related data in single query or use `batch()` method for multiple queries
29
+
30
+ ### "Missing Indexes"
31
+
32
+ **Cause:** Queries performing full table scans without indexes
33
+ **Solution:** Use `EXPLAIN QUERY PLAN` to check if index is used, then create index with `CREATE INDEX idx_users_email ON users(email)`
34
+
35
+ ### "Boolean Type Issues"
36
+
37
+ **Cause:** SQLite uses INTEGER (0/1) not native boolean type
38
+ **Solution:** Bind 1 or 0 instead of true/false when working with boolean values
39
+
40
+ ### "Date/Time Type Issues"
41
+
42
+ **Cause:** SQLite doesn't have native DATE/TIME types
43
+ **Solution:** Use TEXT (ISO 8601 format) or INTEGER (unix timestamp) for date/time values
44
+
45
+ ## Plan Tier Limits
46
+
47
+ | Limit | Free Tier | Paid Plans | Notes |
48
+ | ------------------- | ---------------- | ------------------------ | ------------------------------------------ |
49
+ | Database size | 500 MB | 10 GB | Design for multiple DBs per tenant on paid |
50
+ | Row size | 1 MB | 1 MB | Store large files in R2, not D1 |
51
+ | Query timeout | 30s | 30s (900s with sessions) | Use sessions API for migrations |
52
+ | Batch size | 1,000 statements | 10,000 statements | Split large batches accordingly |
53
+ | Time Travel | 7 days | 30 days | Point-in-time recovery window |
54
+ | Read replicas | ❌ Not available | ✅ Available | Paid add-on for lower latency |
55
+ | Sessions API | ❌ Not available | ✅ Up to 15 min | For migrations and heavy operations |
56
+ | Concurrent requests | 10,000/min | Higher | Contact support for custom limits |
57
+
58
+ ## Production Gotchas
59
+
60
+ ### "Batch size exceeded"
61
+
62
+ **Cause:** Attempting to send >1,000 statements on free tier or >10,000 on paid
63
+ **Solution:** Chunk batches: `for (let i = 0; i < stmts.length; i += MAX_BATCH) await env.DB.batch(stmts.slice(i, i + MAX_BATCH))`
64
+
65
+ ### "Session not closed / resource leak"
66
+
67
+ **Cause:** Forgot to call `session.close()` after using sessions API
68
+ **Solution:** Always use try/finally block: `try { await session.prepare(...) } finally { session.close() }`
69
+
70
+ ### "Replication lag causing stale reads"
71
+
72
+ **Cause:** Reading from replica immediately after write - replication lag can be 100ms-2s
73
+ **Solution:** Use primary for read-after-write: `await env.DB.prepare(...)` not `env.DB_REPLICA`
74
+
75
+ ### "Migration applied to local but not remote"
76
+
77
+ **Cause:** Forgot `--remote` flag when applying migrations
78
+ **Solution:** Always run `wrangler d1 migrations apply <db-name> --remote` for production
79
+
80
+ ### "Foreign key constraint failed"
81
+
82
+ **Cause:** Inserting row with FK to non-existent parent, or deleting parent before children
83
+ **Solution:** Enable FK enforcement: `PRAGMA foreign_keys = ON;` and use ON DELETE CASCADE in schema
84
+
85
+ ### "BLOB data corrupted on export"
86
+
87
+ **Cause:** D1 export may not handle BLOB correctly
88
+ **Solution:** Store binary files in R2, only store R2 URLs/keys in D1
89
+
90
+ ### "Database size approaching limit"
91
+
92
+ **Cause:** Storing too much data in single database
93
+ **Solution:** Horizontal scale-out: create per-tenant/per-user databases, archive old data, or upgrade to paid plan
94
+
95
+ ### "Local dev vs production behavior differs"
96
+
97
+ **Cause:** Local uses SQLite file, production uses distributed D1 - different performance/limits
98
+ **Solution:** Always test migrations on remote with `--remote` flag before production rollout