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,253 @@
1
+ # Troubleshooting & Gotchas
2
+
3
+ ## Critical Rules
4
+
5
+ ### ❌ Skipping Server-Side Validation
6
+
7
+ **Problem:** Client-only validation is easily bypassed.
8
+
9
+ **Solution:** Always validate on server.
10
+
11
+ ```javascript
12
+ // CORRECT - Server validates token
13
+ app.post('/submit', async (req, res) => {
14
+ const token = req.body['cf-turnstile-response']
15
+ const validation = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
16
+ method: 'POST',
17
+ body: JSON.stringify({ secret: SECRET, response: token }),
18
+ }).then((r) => r.json())
19
+
20
+ if (!validation.success) return res.status(403).json({ error: 'CAPTCHA failed' })
21
+ })
22
+ ```
23
+
24
+ ### ❌ Exposing Secret Key
25
+
26
+ **Problem:** Secret key leaked in client-side code.
27
+
28
+ **Solution:** Server-side validation only. Never send secret to client.
29
+
30
+ ### ❌ Reusing Tokens (Single-Use Rule)
31
+
32
+ **Problem:** Tokens are single-use. Revalidation fails with `timeout-or-duplicate`.
33
+
34
+ **Solution:** Generate new token for each submission. Reset widget on error.
35
+
36
+ ```javascript
37
+ if (!response.ok) window.turnstile.reset(widgetId)
38
+ ```
39
+
40
+ ### ❌ Not Handling Token Expiry
41
+
42
+ **Problem:** Tokens expire after 5 minutes.
43
+
44
+ **Solution:** Handle expiry callback or use auto-refresh.
45
+
46
+ ```javascript
47
+ window.turnstile.render('#container', {
48
+ sitekey: 'YOUR_SITE_KEY',
49
+ 'refresh-expired': 'auto', // or 'manual' with expired-callback
50
+ 'expired-callback': () => window.turnstile.reset(widgetId),
51
+ })
52
+ ```
53
+
54
+ ## Common Errors
55
+
56
+ | Error | Cause | Solution |
57
+ | -------------------------- | ------------------------------------------------- | ----------------------------------------------------------------- |
58
+ | **Widget not rendering** | Incorrect sitekey, CSP blocking, file:// protocol | Check sitekey, add CSP for challenges.cloudflare.com, use http:// |
59
+ | **timeout-or-duplicate** | Token expired (>5min) or reused | Generate fresh token, don't cache >5min |
60
+ | **invalid-input-secret** | Wrong secret key | Verify secret from dashboard, check env vars |
61
+ | **missing-input-response** | Token not sent | Check form field name is 'cf-turnstile-response' |
62
+
63
+ ## Framework Gotchas
64
+
65
+ ### React: Widget Re-mounting
66
+
67
+ **Problem:** Widget re-renders on state change, losing token.
68
+
69
+ **Solution:** Control lifecycle with useRef.
70
+
71
+ ```tsx
72
+ function TurnstileWidget({ onToken }) {
73
+ const containerRef = useRef(null)
74
+ const widgetIdRef = useRef(null)
75
+
76
+ useEffect(() => {
77
+ if (containerRef.current && !widgetIdRef.current) {
78
+ widgetIdRef.current = window.turnstile.render(containerRef.current, {
79
+ sitekey: 'YOUR_SITE_KEY',
80
+ callback: onToken,
81
+ })
82
+ }
83
+ return () => {
84
+ if (widgetIdRef.current) {
85
+ window.turnstile.remove(widgetIdRef.current)
86
+ widgetIdRef.current = null
87
+ }
88
+ }
89
+ }, [])
90
+
91
+ return <div ref={containerRef} />
92
+ }
93
+ ```
94
+
95
+ ### React StrictMode: Double Render
96
+
97
+ **Problem:** Widget renders twice in dev due to StrictMode.
98
+
99
+ **Solution:** Use cleanup function.
100
+
101
+ ```tsx
102
+ useEffect(() => {
103
+ const widgetId = window.turnstile.render('#container', { sitekey })
104
+ return () => window.turnstile.remove(widgetId)
105
+ }, [])
106
+ ```
107
+
108
+ ### Next.js: SSR Hydration
109
+
110
+ **Problem:** `window.turnstile` undefined during SSR.
111
+
112
+ **Solution:** Use `'use client'` or dynamic import with `ssr: false`.
113
+
114
+ ```tsx
115
+ 'use client'
116
+ export default function Turnstile() {
117
+ /* component */
118
+ }
119
+ ```
120
+
121
+ ### SPA: Navigation Without Cleanup
122
+
123
+ **Problem:** Navigating leaves orphaned widgets.
124
+
125
+ **Solution:** Remove widget in cleanup.
126
+
127
+ ```javascript
128
+ // Vue
129
+ onBeforeUnmount(() => window.turnstile.remove(widgetId))
130
+
131
+ // React
132
+ useEffect(() => () => window.turnstile.remove(widgetId), [])
133
+ ```
134
+
135
+ ## Network & Security
136
+
137
+ ### CSP Blocking
138
+
139
+ **Problem:** Content Security Policy blocks script/iframe.
140
+
141
+ **Solution:** Add CSP directives.
142
+
143
+ ```html
144
+ <meta
145
+ http-equiv="Content-Security-Policy"
146
+ content="script-src 'self' https://challenges.cloudflare.com;
147
+ frame-src https://challenges.cloudflare.com;"
148
+ />
149
+ ```
150
+
151
+ ### IP Address Forwarding
152
+
153
+ **Problem:** Server receives proxy IP instead of client IP.
154
+
155
+ **Solution:** Use correct header.
156
+
157
+ ```javascript
158
+ // Cloudflare Workers
159
+ const ip = request.headers.get('CF-Connecting-IP')
160
+
161
+ // Behind proxy
162
+ const ip = request.headers.get('X-Forwarded-For')?.split(',')[0]
163
+ ```
164
+
165
+ ### CORS (Siteverify)
166
+
167
+ **Problem:** CORS error calling siteverify from browser.
168
+
169
+ **Solution:** Never call siteverify client-side. Call your backend, backend calls siteverify.
170
+
171
+ ## Limits & Constraints
172
+
173
+ | Limit | Value | Impact |
174
+ | -------------- | -------------------------------------- | ---------------------------- |
175
+ | Token validity | 5 minutes | Must regenerate after expiry |
176
+ | Token use | Single-use | Cannot revalidate same token |
177
+ | Widget size | 300x65px (normal), 130x120px (compact) | Plan layout |
178
+
179
+ ## Debugging
180
+
181
+ ### Console Logging
182
+
183
+ ```javascript
184
+ window.turnstile.render('#container', {
185
+ sitekey: 'YOUR_SITE_KEY',
186
+ callback: (token) => console.log('✓ Token:', token),
187
+ 'error-callback': (code) => console.error('✗ Error:', code),
188
+ 'expired-callback': () => console.warn('⏱ Expired'),
189
+ 'timeout-callback': () => console.warn('⏱ Timeout'),
190
+ })
191
+ ```
192
+
193
+ ### Check Token State
194
+
195
+ ```javascript
196
+ const token = window.turnstile.getResponse(widgetId)
197
+ console.log('Token:', token || 'NOT READY')
198
+ console.log('Expired:', window.turnstile.isExpired(widgetId))
199
+ ```
200
+
201
+ ### Test Keys (Use First)
202
+
203
+ Always develop with test keys before production:
204
+
205
+ - Site: `1x00000000000000000000AA`
206
+ - Secret: `1x0000000000000000000000000000000AA`
207
+
208
+ ### Network Tab
209
+
210
+ - Verify `api.js` loads (200 OK)
211
+ - Check siteverify request/response
212
+ - Look for 4xx/5xx errors
213
+
214
+ ## Misconfigurations
215
+
216
+ ### Wrong Key Pairing
217
+
218
+ **Problem:** Site key from one widget, secret from another.
219
+
220
+ **Solution:** Verify site key and secret are from same widget in dashboard.
221
+
222
+ ### Test Keys in Production
223
+
224
+ **Problem:** Using test keys in production.
225
+
226
+ **Solution:** Environment-based keys.
227
+
228
+ ```javascript
229
+ const SITE_KEY =
230
+ process.env.NODE_ENV === 'production'
231
+ ? process.env.TURNSTILE_SITE_KEY
232
+ : '1x00000000000000000000AA'
233
+ ```
234
+
235
+ ### Missing Environment Variables
236
+
237
+ **Problem:** Secret undefined on server.
238
+
239
+ **Solution:** Check .env and verify loading.
240
+
241
+ ```bash
242
+ # .env
243
+ TURNSTILE_SECRET=your_secret_here
244
+
245
+ # Verify
246
+ console.log('Secret loaded:', !!process.env.TURNSTILE_SECRET);
247
+ ```
248
+
249
+ ## Reference
250
+
251
+ - [Turnstile Docs](https://developers.cloudflare.com/turnstile/)
252
+ - [Dashboard](https://dash.cloudflare.com/?to=/:account/turnstile)
253
+ - [Error Codes](https://developers.cloudflare.com/turnstile/troubleshooting/)
@@ -0,0 +1,195 @@
1
+ # Common Patterns
2
+
3
+ ## Form Integration
4
+
5
+ ### Basic Form (Implicit Rendering)
6
+
7
+ ```html
8
+ <!DOCTYPE html>
9
+ <html>
10
+ <head>
11
+ <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
12
+ </head>
13
+ <body>
14
+ <form action="/submit" method="POST">
15
+ <input type="email" name="email" required />
16
+ <div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
17
+ <button type="submit">Submit</button>
18
+ </form>
19
+ </body>
20
+ </html>
21
+ ```
22
+
23
+ ### Controlled Form (Explicit Rendering)
24
+
25
+ ```javascript
26
+ <script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit"></script>
27
+ <script>
28
+ let widgetId = window.turnstile.render('#container', {
29
+ sitekey: 'YOUR_SITE_KEY',
30
+ callback: (token) => console.log('Token:', token)
31
+ });
32
+
33
+ form.addEventListener('submit', async (e) => {
34
+ e.preventDefault();
35
+ const token = window.turnstile.getResponse(widgetId);
36
+ if (!token) return;
37
+
38
+ const response = await fetch('/submit', {
39
+ method: 'POST',
40
+ body: JSON.stringify({ 'cf-turnstile-response': token })
41
+ });
42
+
43
+ if (!response.ok) window.turnstile.reset(widgetId);
44
+ });
45
+ </script>
46
+ ```
47
+
48
+ ## Framework Patterns
49
+
50
+ ### React
51
+
52
+ ```tsx
53
+ import { useState } from 'react'
54
+ import Turnstile from '@marsidev/react-turnstile'
55
+
56
+ export default function Form() {
57
+ const [token, setToken] = useState<string | null>(null)
58
+
59
+ return (
60
+ <form
61
+ onSubmit={async (e) => {
62
+ e.preventDefault()
63
+ if (!token) return
64
+ await fetch('/api/submit', {
65
+ method: 'POST',
66
+ body: JSON.stringify({ 'cf-turnstile-response': token }),
67
+ })
68
+ }}
69
+ >
70
+ <Turnstile siteKey="YOUR_SITE_KEY" onSuccess={setToken} />
71
+ <button disabled={!token}>Submit</button>
72
+ </form>
73
+ )
74
+ }
75
+ ```
76
+
77
+ ### Vue / Svelte
78
+
79
+ ```vue
80
+ <!-- Vue: npm install vue-turnstile -->
81
+ <VueTurnstile :site-key="SITE_KEY" @success="token = $event" />
82
+
83
+ <!-- Svelte: npm install svelte-turnstile -->
84
+ <Turnstile siteKey={SITE_KEY} on:turnstile-callback={(e) => token = e.detail.token} />
85
+ ```
86
+
87
+ ## Server Validation
88
+
89
+ ### Cloudflare Workers
90
+
91
+ ```typescript
92
+ interface Env {
93
+ TURNSTILE_SECRET: string
94
+ }
95
+
96
+ export default {
97
+ async fetch(request: Request, env: Env): Promise<Response> {
98
+ if (request.method !== 'POST') {
99
+ return new Response('Method not allowed', { status: 405 })
100
+ }
101
+
102
+ const formData = await request.formData()
103
+ const token = formData.get('cf-turnstile-response')
104
+
105
+ if (!token) {
106
+ return new Response('Missing token', { status: 400 })
107
+ }
108
+
109
+ // Validate token
110
+ const ip = request.headers.get('CF-Connecting-IP')
111
+ const result = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
112
+ method: 'POST',
113
+ headers: { 'Content-Type': 'application/json' },
114
+ body: JSON.stringify({
115
+ secret: env.TURNSTILE_SECRET,
116
+ response: token,
117
+ remoteip: ip,
118
+ }),
119
+ })
120
+
121
+ const validation = await result.json()
122
+
123
+ if (!validation.success) {
124
+ return new Response('CAPTCHA validation failed', { status: 403 })
125
+ }
126
+
127
+ // Process form...
128
+ return new Response('Success')
129
+ },
130
+ }
131
+ ```
132
+
133
+ ### Pages Functions
134
+
135
+ ```typescript
136
+ // functions/submit.ts - same pattern as Workers, use ctx.env and ctx.request
137
+ export const onRequestPost: PagesFunction<{ TURNSTILE_SECRET: string }> = async (ctx) => {
138
+ const token = (await ctx.request.formData()).get('cf-turnstile-response')
139
+ // Validate with ctx.env.TURNSTILE_SECRET (same as Workers pattern above)
140
+ }
141
+ ```
142
+
143
+ ## Advanced Patterns
144
+
145
+ ### Pre-Clearance (Invisible)
146
+
147
+ ```html
148
+ <div id="turnstile-precheck"></div>
149
+ <form id="protected-form" style="display: none;">
150
+ <button type="submit">Submit</button>
151
+ </form>
152
+
153
+ <script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit"></script>
154
+ <script>
155
+ let cachedToken = null
156
+
157
+ window.onload = () => {
158
+ window.turnstile.render('#turnstile-precheck', {
159
+ sitekey: 'YOUR_SITE_KEY',
160
+ size: 'invisible',
161
+ callback: (token) => {
162
+ cachedToken = token
163
+ document.getElementById('protected-form').style.display = 'block'
164
+ },
165
+ })
166
+ }
167
+ </script>
168
+ ```
169
+
170
+ ### Token Refresh on Expiry
171
+
172
+ ```javascript
173
+ let widgetId = window.turnstile.render('#container', {
174
+ sitekey: 'YOUR_SITE_KEY',
175
+ 'refresh-expired': 'manual',
176
+ 'expired-callback': () => {
177
+ console.log('Token expired, refreshing...')
178
+ window.turnstile.reset(widgetId)
179
+ },
180
+ })
181
+ ```
182
+
183
+ ## Testing
184
+
185
+ ### Environment-Based Keys
186
+
187
+ ```javascript
188
+ const SITE_KEY =
189
+ process.env.NODE_ENV === 'production' ? 'YOUR_PRODUCTION_SITE_KEY' : '1x00000000000000000000AA' // Always passes
190
+
191
+ const SECRET_KEY =
192
+ process.env.NODE_ENV === 'production'
193
+ ? process.env.TURNSTILE_SECRET
194
+ : '1x0000000000000000000000000000000AA'
195
+ ```
@@ -0,0 +1,133 @@
1
+ # Cloudflare Vectorize
2
+
3
+ Globally distributed vector database for AI applications. Store and query vector embeddings for semantic search, recommendations, RAG, and classification.
4
+
5
+ **Status:** Generally Available (GA) | **Last Updated:** 2026-01-27
6
+
7
+ ## Quick Start
8
+
9
+ ```typescript
10
+ // 1. Create index
11
+ // npx wrangler vectorize create my-index --dimensions=768 --metric=cosine
12
+
13
+ // 2. Configure binding (wrangler.jsonc)
14
+ // { "vectorize": [{ "binding": "VECTORIZE", "index_name": "my-index" }] }
15
+
16
+ // 3. Query vectors
17
+ const matches = await env.VECTORIZE.query(queryVector, { topK: 5 })
18
+ ```
19
+
20
+ ## Key Features
21
+
22
+ - **10M vectors per index** (V2)
23
+ - Dimensions up to 1536 (32-bit float)
24
+ - Three distance metrics: cosine, euclidean, dot-product
25
+ - Metadata filtering (up to 10 indexes)
26
+ - Namespace support (50K namespaces paid, 1K free)
27
+ - Seamless Workers AI integration
28
+ - Global distribution
29
+
30
+ ## Reading Order
31
+
32
+ | Task | Files to Read |
33
+ | ------------------ | ----------------------- |
34
+ | New to Vectorize | README only |
35
+ | Implement feature | README + api + patterns |
36
+ | Setup/configure | README + configuration |
37
+ | Debug issues | gotchas |
38
+ | Integrate with AI | README + patterns |
39
+ | RAG implementation | README + patterns |
40
+
41
+ ## File Guide
42
+
43
+ - **README.md** (this file): Overview, quick decisions
44
+ - **api.md**: Runtime API, types, operations (query/insert/upsert)
45
+ - **configuration.md**: Setup, CLI, metadata indexes
46
+ - **patterns.md**: RAG, Workers AI, OpenAI, LangChain, multi-tenant
47
+ - **gotchas.md**: Limits, pitfalls, troubleshooting
48
+
49
+ ## Distance Metric Selection
50
+
51
+ Choose based on your use case:
52
+
53
+ ```
54
+ What are you building?
55
+ ├─ Text/semantic search → cosine (most common)
56
+ ├─ Image similarity → euclidean
57
+ ├─ Recommendation system → dot-product
58
+ └─ Pre-normalized vectors → dot-product
59
+ ```
60
+
61
+ | Metric | Best For | Score Interpretation |
62
+ | ------------- | ------------------------------------ | --------------------------------- |
63
+ | `cosine` | Text embeddings, semantic similarity | Higher = closer (1.0 = identical) |
64
+ | `euclidean` | Absolute distance, spatial data | Lower = closer (0.0 = identical) |
65
+ | `dot-product` | Recommendations, normalized vectors | Higher = closer |
66
+
67
+ **Note:** Index configuration is immutable. Cannot change dimensions or metric after creation.
68
+
69
+ ## Multi-Tenancy Strategy
70
+
71
+ ```
72
+ How many tenants?
73
+ ├─ < 50K tenants → Use namespaces (recommended)
74
+ │ ├─ Fastest (filter before vector search)
75
+ │ └─ Strict isolation
76
+ ├─ > 50K tenants → Use metadata filtering
77
+ │ ├─ Slower (post-filter after vector search)
78
+ │ └─ Requires metadata index
79
+ └─ Per-tenant indexes → Only if compliance mandated
80
+ └─ 50K index limit per account (paid plan)
81
+ ```
82
+
83
+ ## Common Workflows
84
+
85
+ ### Semantic Search
86
+
87
+ ```typescript
88
+ // 1. Generate embedding
89
+ const result = await env.AI.run('@cf/baai/bge-base-en-v1.5', { text: [query] })
90
+
91
+ // 2. Query Vectorize
92
+ const matches = await env.VECTORIZE.query(result.data[0], {
93
+ topK: 5,
94
+ returnMetadata: 'indexed',
95
+ })
96
+ ```
97
+
98
+ ### RAG Pattern
99
+
100
+ ```typescript
101
+ // 1. Generate query embedding
102
+ const embedding = await env.AI.run('@cf/baai/bge-base-en-v1.5', { text: [query] })
103
+
104
+ // 2. Search Vectorize
105
+ const matches = await env.VECTORIZE.query(embedding.data[0], { topK: 5 })
106
+
107
+ // 3. Fetch full documents from R2/D1/KV
108
+ const docs = await Promise.all(
109
+ matches.matches.map((m) => env.R2.get(m.metadata.key).then((obj) => obj?.text()))
110
+ )
111
+
112
+ // 4. Generate LLM response with context
113
+ const answer = await env.AI.run('@cf/meta/llama-3-8b-instruct', {
114
+ prompt: `Context: ${docs.join('\n\n')}\n\nQuestion: ${query}\n\nAnswer:`,
115
+ })
116
+ ```
117
+
118
+ ## Critical Gotchas
119
+
120
+ See `gotchas.md` for details. Most important:
121
+
122
+ 1. **Async mutations**: Inserts take 5-10s to be queryable
123
+ 2. **500 batch limit**: Workers API enforces 500 vectors per call (undocumented)
124
+ 3. **Metadata truncation**: `"indexed"` returns first 64 bytes only
125
+ 4. **topK with metadata**: Max 20 (not 100) when using returnValues or returnMetadata: "all"
126
+ 5. **Metadata indexes first**: Must create before inserting vectors
127
+
128
+ ## Resources
129
+
130
+ - [Official Docs](https://developers.cloudflare.com/vectorize/)
131
+ - [Client API Reference](https://developers.cloudflare.com/vectorize/reference/client-api/)
132
+ - [Workers AI Models](https://developers.cloudflare.com/workers-ai/models/#text-embeddings)
133
+ - [Discord: #vectorize](https://discord.cloudflare.com)
@@ -0,0 +1,89 @@
1
+ # Vectorize API Reference
2
+
3
+ ## Types
4
+
5
+ ```typescript
6
+ interface VectorizeVector {
7
+ id: string // Max 64 bytes
8
+ values: number[] // Must match index dimensions
9
+ namespace?: string // Optional partition (max 64 bytes)
10
+ metadata?: Record<string, any> // Max 10 KiB
11
+ }
12
+ ```
13
+
14
+ ## Query
15
+
16
+ ```typescript
17
+ const matches = await env.VECTORIZE.query(queryVector, {
18
+ topK: 10, // Max 100 (or 20 with returnValues/returnMetadata:"all")
19
+ returnMetadata: 'indexed', // "none" | "indexed" | "all"
20
+ returnValues: false,
21
+ namespace: 'tenant-123',
22
+ filter: { category: 'docs' },
23
+ })
24
+ // matches.matches[0] = { id, score, metadata? }
25
+ ```
26
+
27
+ **returnMetadata:** `"none"` (fastest) → `"indexed"` (recommended) → `"all"` (topK max 20)
28
+
29
+ **queryById (V2 only):** Search using existing vector as query.
30
+
31
+ ```typescript
32
+ await env.VECTORIZE.queryById('doc-123', { topK: 5 })
33
+ ```
34
+
35
+ ## Insert/Upsert
36
+
37
+ ```typescript
38
+ // Insert: ignores duplicates (keeps first)
39
+ await env.VECTORIZE.insert([{ id, values, metadata }])
40
+
41
+ // Upsert: overwrites duplicates (keeps last)
42
+ await env.VECTORIZE.upsert([{ id, values, metadata }])
43
+ ```
44
+
45
+ **Max 500 vectors per call.** Queryable after 5-10 seconds.
46
+
47
+ ## Other Operations
48
+
49
+ ```typescript
50
+ // Get by IDs
51
+ const vectors = await env.VECTORIZE.getByIds(['id1', 'id2'])
52
+
53
+ // Delete (max 1000 IDs per call)
54
+ await env.VECTORIZE.deleteByIds(['id1', 'id2'])
55
+
56
+ // Index info
57
+ const info = await env.VECTORIZE.describe()
58
+ // { dimensions, metric, vectorCount }
59
+ ```
60
+
61
+ ## Filtering
62
+
63
+ Requires metadata index. Filter operators:
64
+
65
+ | Operator | Example |
66
+ | ---------------------------- | -------------------------------- |
67
+ | `$eq` (implicit) | `{ category: "docs" }` |
68
+ | `$ne` | `{ status: { $ne: "deleted" } }` |
69
+ | `$in` / `$nin` | `{ tag: { $in: ["sale"] } }` |
70
+ | `$lt`, `$lte`, `$gt`, `$gte` | `{ price: { $lt: 100 } }` |
71
+
72
+ **Constraints:** Max 2048 bytes, no dots/`$` in keys, values: string/number/boolean/null.
73
+
74
+ ## Performance
75
+
76
+ | Configuration | topK Limit | Speed |
77
+ | --------------------------- | ---------- | ------- |
78
+ | No metadata | 100 | Fastest |
79
+ | `returnMetadata: "indexed"` | 100 | Fast |
80
+ | `returnMetadata: "all"` | 20 | Slower |
81
+ | `returnValues: true` | 20 | Slower |
82
+
83
+ **Batch operations:** Always batch (500/call) for optimal throughput.
84
+
85
+ ```typescript
86
+ for (let i = 0; i < vectors.length; i += 500) {
87
+ await env.VECTORIZE.upsert(vectors.slice(i, i + 500))
88
+ }
89
+ ```