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,171 @@
1
+ # Testing Strategy Reference
2
+
3
+ 4-layer testing model with structural invariants for MCP servers.
4
+
5
+ > Read this reference when setting up tests or reviewing test coverage for an MCP server.
6
+
7
+ ---
8
+
9
+ ## 4-Layer Testing Model
10
+
11
+ MCP servers require four complementary testing layers plus structural invariant tests.
12
+
13
+ | Layer | Tool | Scope | Transport | Speed |
14
+ | -------------------------- | -------------- | ----------------------------------------------------------- | ------------- | -------- |
15
+ | **1. Unit Tests** | Vitest | Handler logic, schemas, validation, error paths | None (mocked) | Fast |
16
+ | **1b. Invariant Tests** | Vitest | Structural enforcement (annotations, output schemas) | None | Fast |
17
+ | **1c. Benchmarks** | Vitest bench | Handler dispatch, schema parsing, logger sanitization | None | Fast |
18
+ | **2. E2E Tests** | Playwright | Live server process, HTTP lifecycle, security headers | HTTP (dual) | Medium |
19
+ | **3. Integration Scripts** | Node.js `.mjs` | Protocol compliance, scheduler, transport-specific features | stdio + HTTP | Variable |
20
+ | **4. Agent-Driven Tests** | MCP tool calls | Functional verification of all tools, resources, prompts | stdio (live) | Slow |
21
+
22
+ ---
23
+
24
+ ## Layer 1: Unit Tests (Vitest)
25
+
26
+ Core handler logic, input validation, error formatting, database adapters. Mock external dependencies. Target ≥90% line coverage.
27
+
28
+ ```
29
+ tests/
30
+ ├── handlers/ # Tool handler logic
31
+ ├── database/ # Adapter + query tests
32
+ ├── server/ # Resource + prompt tests
33
+ ├── auth/ # OAuth module (8 files)
34
+ ├── security/ # Input sanitization
35
+ ├── filtering/ # Tool filter expressions
36
+ ├── codemode/ # Sandbox execution
37
+ └── e2e/ # Playwright (Layer 2)
38
+ ```
39
+
40
+ ---
41
+
42
+ ## Layer 1b: Invariant Tests (Vitest)
43
+
44
+ Structural enforcement tests that verify every tool meets minimum standards. Run as part of the unit test suite.
45
+
46
+ | Test File | Enforces |
47
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------ |
48
+ | `tool-annotations.test.ts` | Every tool has `annotations` with explicit `readOnlyHint`, per-group checks, title validation |
49
+ | `tool-output-schemas.test.ts` | Every tool has `outputSchema`, error response acceptance, centralized schema wiring, no orphan schemas |
50
+
51
+ ---
52
+
53
+ ## Layer 2: E2E Tests (Playwright)
54
+
55
+ Spawn real `dist/cli.js` process + MCP SDK client. Test the system as a black box.
56
+
57
+ **Canonical spec inventory (~50 spec files, ~300+ tests):**
58
+
59
+ | Category | Spec Files | Coverage |
60
+ | --------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
61
+ | **Zod Sweeps** | `zod-sweep.spec.ts`, `zod-sweep-native.spec.ts` | Every tool called with `{}` — must return structured error, never raw `-32602` |
62
+ | **Numeric Coercion** | `numeric-coercion.spec.ts`, `numeric-coercion-native.spec.ts` | String-typed numeric param coercion |
63
+ | **Boundary** | `boundary.spec.ts` | Empty tables, NULLs, idempotency, edge cases |
64
+ | **Aliases** | `aliases.spec.ts` | Backward-compatible parameter aliases |
65
+ | **Payloads** | `payloads-{group}.spec.ts` | Per-group payload correctness (one spec per tool group) |
66
+ | **Errors** | `errors.spec.ts`, `errors-extended.spec.ts`, `errors-native.spec.ts` | Error path coverage |
67
+ | **Code Mode** | `codemode.spec.ts`, `codemode-groups.spec.ts` | Sandbox lifecycle + all groups |
68
+ | **Help Resources** | `help-resources.spec.ts` | Root + per-group help resources listed, readable, non-empty |
69
+ | **Resources/Prompts** | `resources.spec.ts`, `prompts.spec.ts` | MCP resource/prompt verification |
70
+ | **Auth** | `auth.spec.ts`, `oauth-discovery.spec.ts` | OAuth 2.1 and RFC 9728 metadata |
71
+ | **Security** | `security.spec.ts` | Security header assertions, HSTS |
72
+ | **Rate Limiting** | `rate-limiting.spec.ts` | 429 burst, Retry-After header, health exemption |
73
+ | **Sessions** | `sessions.spec.ts`, `session-advanced.spec.ts` | Session management |
74
+ | **Transport** | `streaming.spec.ts`, `streamable-http.spec.ts`, `protocols.spec.ts` | Transport protocol tests |
75
+
76
+ **Testing cadence per group:** invariant (vitest) → zod sweep (E2E) → payload correctness (E2E) → error paths (E2E).
77
+
78
+ **Dual transport parity:** Run the same assertion suite against both stateful and stateless HTTP modes.
79
+
80
+ ---
81
+
82
+ ## Layer 3: Integration Scripts (Node.js `.mjs`)
83
+
84
+ For features that require **separate server processes** — can't be tested via vitest mocks or MCP tool calls. Zero external dependencies (just Node.js `child_process` + `fetch`).
85
+
86
+ **Standard scripts:**
87
+
88
+ | Script | Purpose | Transport |
89
+ | ----------------------------- | ------------------------------------------------------------------------------------------ | --------- |
90
+ | `test-help-resources.mjs` | Verify slim instructions + help resource filtering by group | stdio |
91
+ | `test-tool-annotations.mjs` | Parse `tools/list` response, verify `openWorldHint` counts and 0 missing | stdio |
92
+ | `test-scheduler.mjs` | Init HTTP session, read `memory://health`, wait for jobs, verify `runCount` + `lastResult` | HTTP |
93
+ | `test-instruction-levels.mjs` | Instruction level generation (`essential`, `standard`, `full`) — verify token budgets | stdio |
94
+
95
+ **Script conventions:**
96
+
97
+ - Node.js ESM (`.mjs`), no dependencies — run with `node test-server/script.mjs`
98
+ - Exit code 0 = pass, 1 = fail
99
+ - Handle SSE response parsing for HTTP transport (`text/event-stream` → JSON-RPC)
100
+ - Support env vars for configuration (e.g., `MCP_URL`, `WAIT_SECONDS`)
101
+ - Always `npm run build` before running
102
+
103
+ **Dual transport testing:** The scheduler activates in both HTTP stateful and stateless modes. Integration scripts should verify behavior in both when applicable:
104
+
105
+ | Mode | CLI Flags | Sessions | Scheduler |
106
+ | -------------- | ------------------------------ | ------------------------ | --------- |
107
+ | stdio | `--transport stdio` (default) | N/A | ❌ |
108
+ | HTTP stateful | `--transport http` | `mcp-session-id` header | ✅ |
109
+ | HTTP stateless | `--transport http --stateless` | No sessions (serverless) | ✅ |
110
+
111
+ ---
112
+
113
+ ## Layer 4: Agent-Driven Tests (MCP Tool Calls)
114
+
115
+ Exhaustive functional testing of all tools, resources, and prompts via direct MCP calls from an AI agent. Organized in phased test plans.
116
+
117
+ **Orchestration pattern (`test-server/` directory):**
118
+
119
+ | File | Purpose |
120
+ | -------------------------- | -------------------------------------------------------------------------------------------------- |
121
+ | `README.md` | Agent-optimized orchestration doc — file inventory, conventions, script reference, troubleshooting |
122
+ | `code-map.md` | Comprehensive architecture reference (directory layout, module responsibilities, cross-references) |
123
+ | `tool-reference.md` | Tool inventory taxonomy (all tools by group with scope, annotations, schema status) |
124
+ | `prompt-template.md` | Extracted testing prompt boilerplate for consistent formatting across all test prompts |
125
+ | `test-tool-groups/*.md` | ~20 self-contained prompts at sub-group granularity (e.g., `test-core.md`, `test-json-get.md`) |
126
+ | `test-codemode/*.md` | ~12 prompts for Code Mode groups + sandbox security + WASM degradation |
127
+ | `test-advanced/*.md` | ~10 stress test prompts per tool group (Pattern P401: Agent-First Stress Testing) |
128
+ | `test-resources.md` | Dedicated resource verification (all data + help resources) |
129
+ | `test-prompts.md` | Dedicated prompt verification |
130
+ | `test-agent-experience.md` | ~20 open-ended scenarios validating help resource sufficiency |
131
+ | `*.mjs` | Integration scripts (Layer 3) |
132
+
133
+ **Test count taxonomy:** Document tool counts using the formal taxonomy: Group tools (per-group subtotal) / Built-in tools (server_info, server_health, list_adapters) / Audit tools (when audit enabled) / Inventory tools (when applicable) / MCP total (sum visible to clients via `tools/list`).
134
+
135
+ **Test plan conventions:**
136
+
137
+ - Phases numbered 0-N, each with a table of `| Test | Command | Expected |`
138
+ - Error-path tests marked with 🔴 prefix
139
+ - Reporting: ❌ Fail, ⚠️ Issue, ✅ inline only (omit from summary)
140
+ - Mermaid-producing resources must specify `text/plain` MIME in expected results
141
+ - Script-based phases (help resources, scheduler) reference scripts, not inline commands
142
+
143
+ **Standardized Prompt Format:** Use `prompt-template.md` boilerplate for all test prompts. This ensures consistent structure (Setup, Prerequisites, Test Matrix, Reporting Format) across 40+ test files. Generate or update prompts programmatically when adding new tool groups.
144
+
145
+ **OAuth Tests:** 8 test files in `src/auth/tests/`. See [`oauth-reference.md`](../oauth-reference.md) §Testing Patterns for file list and mocking strategies.
146
+
147
+ ---
148
+
149
+ ## Code Quality & Supply Chain
150
+
151
+ - No duplicated code, consistent error handling, full type coverage, <600 line modules
152
+ - **SHA-pinned CI Actions:** Pin all GitHub Actions by SHA digest (not version tag) to prevent supply chain injection
153
+ - **Version SSoT:** Create `src/version.ts` that reads `version` from `package.json` at runtime (via `createRequire`). **Both adapters** (if dual-backend) `import { VERSION }` — never hardcode version strings. On a bump, only `package.json` needs updating
154
+ - **Lockfile integrity:** Verify lockfile SHA-256 checksum + `git diff --exit-code` before `npm ci` in CI pipelines. Prevents supply chain attacks via lockfile manipulation
155
+ - **Dockerfile patch drift:** Weekly CI workflow to detect stale transitive dependency patches (e.g., `package.json` overrides) against upstream versions. Alert when patches diverge from upstream releases
156
+ - Regular dependency scanning and artifact integrity
157
+
158
+ **Compact JSON Serialization:** Use `JSON.stringify(result)` (no pretty-print) for tool responses — ~15-20% payload reduction on large results. Retain `JSON.stringify(result, null, 2)` only for error responses where human readability matters.
159
+
160
+ **WASM/Native Backend Parity:** For servers with dual backends (e.g., WASM + Native), maintain a parity checklist:
161
+
162
+ - Features registered but always failing in one backend (e.g., FTS5 on WASM) must return structured "Feature Not Available" errors, not raw crashes
163
+ - Test each backend independently — Code Mode can mask registration-only failures
164
+ - Document backend-specific capabilities in help resources
165
+
166
+ **WASM Degradation Testing:** For dual-backend servers, add dedicated degradation test suites:
167
+
168
+ - Verify WASM-unsupported features return structured `{ success: false, code: 'FEATURE_NOT_AVAILABLE' }` errors
169
+ - Test Code Mode gracefully degrades (e.g., `codemode-wasm-degradation.md` prompt)
170
+ - Confirm tool count differences between backends match expected parity (`test-tool-annotations.mjs` validates this)
171
+ - Document expected tool counts per backend in `test-server/README.md`
@@ -0,0 +1,157 @@
1
+ # MCP Server Integration
2
+
3
+ Fetch `docs/mcp-client.md` and `docs/mcp-servers.md` from `https://github.com/cloudflare/agents/tree/main/docs` for complete documentation.
4
+
5
+ Agents include a multi-server MCP client for connecting to external MCP servers.
6
+
7
+ ## Add an MCP Server
8
+
9
+ ```typescript
10
+ import { Agent, callable } from 'agents'
11
+
12
+ export class MyAgent extends Agent<Env, State> {
13
+ @callable()
14
+ async addServer(name: string, url: string) {
15
+ // Options-based API (recommended)
16
+ const result = await this.addMcpServer(name, url, {
17
+ callbackHost: 'https://my-worker.workers.dev',
18
+ transport: { headers: { Authorization: 'Bearer ...' } },
19
+ })
20
+
21
+ if (result.state === 'authenticating') {
22
+ // OAuth required - redirect user to result.authUrl
23
+ return { needsAuth: true, authUrl: result.authUrl }
24
+ }
25
+
26
+ return { ready: true, id: result.id }
27
+ }
28
+ }
29
+ ```
30
+
31
+ ## Use MCP Tools
32
+
33
+ ```typescript
34
+ async onChatMessage() {
35
+ // Get AI-compatible tools from all connected MCP servers
36
+ const mcpTools = this.mcp.getAITools();
37
+
38
+ const allTools = {
39
+ ...localTools,
40
+ ...mcpTools
41
+ };
42
+
43
+ const result = streamText({
44
+ model: openai("gpt-4o"),
45
+ messages: await convertToModelMessages(this.messages),
46
+ tools: allTools
47
+ });
48
+
49
+ return result.toUIMessageStreamResponse();
50
+ }
51
+ ```
52
+
53
+ ## List MCP Resources
54
+
55
+ ```typescript
56
+ // List all registered servers
57
+ const servers = this.mcp.listServers()
58
+
59
+ // List tools from all servers
60
+ const tools = this.mcp.listTools()
61
+
62
+ // List resources
63
+ const resources = this.mcp.listResources()
64
+
65
+ // List prompts
66
+ const prompts = this.mcp.listPrompts()
67
+ ```
68
+
69
+ ## Remove Server
70
+
71
+ ```typescript
72
+ await this.removeMcpServer(serverId)
73
+ ```
74
+
75
+ ## Building an MCP Server
76
+
77
+ Use `McpAgent` from the SDK to create an MCP server.
78
+
79
+ **Install dependencies:**
80
+
81
+ ```bash
82
+ npm install @modelcontextprotocol/sdk zod
83
+ ```
84
+
85
+ **Wrangler config:**
86
+
87
+ ```jsonc
88
+ {
89
+ "durable_objects": {
90
+ "bindings": [{ "name": "MyMCP", "class_name": "MyMCP" }],
91
+ },
92
+ "migrations": [{ "tag": "v1", "new_sqlite_classes": ["MyMCP"] }],
93
+ }
94
+ ```
95
+
96
+ **Server implementation:**
97
+
98
+ ```typescript
99
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
100
+ import { McpAgent } from 'agents/mcp'
101
+ import { z } from 'zod'
102
+
103
+ type State = { counter: number }
104
+
105
+ export class MyMCP extends McpAgent<Env, State, {}> {
106
+ server = new McpServer({
107
+ name: 'MyMCPServer',
108
+ version: '1.0.0',
109
+ })
110
+
111
+ initialState = { counter: 0 }
112
+
113
+ async init() {
114
+ // Register a resource
115
+ this.server.resource('counter', 'mcp://resource/counter', (uri) => ({
116
+ contents: [{ text: String(this.state.counter), uri: uri.href }],
117
+ }))
118
+
119
+ // Register a tool
120
+ this.server.registerTool(
121
+ 'increment',
122
+ {
123
+ description: 'Increment the counter',
124
+ inputSchema: { amount: z.number().default(1) },
125
+ },
126
+ async ({ amount }) => {
127
+ this.setState({ counter: this.state.counter + amount })
128
+ return {
129
+ content: [{ text: `Counter: ${this.state.counter}`, type: 'text' }],
130
+ }
131
+ }
132
+ )
133
+ }
134
+ }
135
+ ```
136
+
137
+ ## Serve MCP Server
138
+
139
+ ```typescript
140
+ export default {
141
+ fetch(request: Request, env: Env, ctx: ExecutionContext) {
142
+ const url = new URL(request.url)
143
+
144
+ // SSE transport (legacy)
145
+ if (url.pathname.startsWith('/sse')) {
146
+ return MyMCP.serveSSE('/sse', { binding: 'MyMCP' }).fetch(request, env, ctx)
147
+ }
148
+
149
+ // Streamable HTTP transport (recommended)
150
+ if (url.pathname.startsWith('/mcp')) {
151
+ return MyMCP.serve('/mcp', { binding: 'MyMCP' }).fetch(request, env, ctx)
152
+ }
153
+
154
+ return new Response('Not found', { status: 404 })
155
+ },
156
+ }
157
+ ```
@@ -0,0 +1,164 @@
1
+ # State & Scheduling
2
+
3
+ Fetch `docs/state.md` and `docs/scheduling.md` from `https://github.com/cloudflare/agents/tree/main/docs` for complete documentation.
4
+
5
+ ## State Management
6
+
7
+ State persists to SQLite and broadcasts to connected clients automatically.
8
+
9
+ ### Define Typed State
10
+
11
+ ```typescript
12
+ type State = {
13
+ count: number
14
+ items: string[]
15
+ }
16
+
17
+ export class MyAgent extends Agent<Env, State> {
18
+ initialState: State = { count: 0, items: [] }
19
+ }
20
+ ```
21
+
22
+ ### Read and Update
23
+
24
+ ```typescript
25
+ // Read (lazy-loaded from SQLite)
26
+ const count = this.state.count
27
+
28
+ // Write (sync, persists, broadcasts)
29
+ this.setState({ count: this.state.count + 1 })
30
+ ```
31
+
32
+ ### Validation Hook
33
+
34
+ `validateStateChange()` runs synchronously before state persists. Throw to reject the update.
35
+
36
+ ```typescript
37
+ validateStateChange(nextState: State, source: Connection | "server") {
38
+ if (nextState.count < 0) {
39
+ throw new Error("Count cannot be negative");
40
+ }
41
+ }
42
+ ```
43
+
44
+ ### Execution Order
45
+
46
+ 1. `validateStateChange(nextState, source)` - sync, gating
47
+ 2. State persisted to SQLite
48
+ 3. State broadcast to connected clients
49
+ 4. `onStateUpdate(nextState, source)` - async via `ctx.waitUntil`, non-gating
50
+
51
+ ### Client-Side Sync (React)
52
+
53
+ ```tsx
54
+ import { useAgent } from 'agents/react'
55
+
56
+ function App() {
57
+ const [state, setLocalState] = useState<State>({ count: 0 })
58
+
59
+ const agent = useAgent<State>({
60
+ agent: 'MyAgent',
61
+ name: 'instance-1',
62
+ onStateUpdate: (newState) => setLocalState(newState),
63
+ })
64
+
65
+ return (
66
+ <button onClick={() => agent.setState({ count: state.count + 1 })}>Count: {state.count}</button>
67
+ )
68
+ }
69
+ ```
70
+
71
+ ## SQL API
72
+
73
+ Direct SQLite access for custom queries:
74
+
75
+ ```typescript
76
+ // Create table
77
+ this.sql`
78
+ CREATE TABLE IF NOT EXISTS items (
79
+ id TEXT PRIMARY KEY,
80
+ name TEXT,
81
+ created_at INTEGER DEFAULT (unixepoch())
82
+ )
83
+ `
84
+
85
+ // Insert
86
+ this.sql`INSERT INTO items (id, name) VALUES (${id}, ${name})`
87
+
88
+ // Query with types
89
+ const items = this.sql<{ id: string; name: string }>`
90
+ SELECT * FROM items WHERE name LIKE ${`%${search}%`}
91
+ `
92
+ ```
93
+
94
+ ## Scheduling
95
+
96
+ ### Schedule Types
97
+
98
+ | Mode | Syntax | Use Case |
99
+ | -------- | ----------------------------------- | -------------------------- |
100
+ | Delay | `this.schedule(60, ...)` | Run in 60 seconds |
101
+ | Date | `this.schedule(new Date(...), ...)` | Run at specific time |
102
+ | Cron | `this.schedule("0 8 * * *", ...)` | Recurring schedule |
103
+ | Interval | `this.scheduleEvery(30, ...)` | Fixed interval (every 30s) |
104
+
105
+ ### Examples
106
+
107
+ ```typescript
108
+ // Delay (seconds)
109
+ await this.schedule(60, 'checkStatus', { id: 'abc123' })
110
+
111
+ // Specific date
112
+ await this.schedule(new Date('2025-12-25T00:00:00Z'), 'sendGreeting', { to: 'user' })
113
+
114
+ // Cron (recurring)
115
+ await this.schedule('0 9 * * 1-5', 'weekdayReport', {})
116
+
117
+ // Fixed interval (every 30 seconds, overlap prevention built-in)
118
+ await this.scheduleEvery(30, 'pollUpdates')
119
+ await this.scheduleEvery(300, 'syncData', { source: 'api' })
120
+ ```
121
+
122
+ ### Handler
123
+
124
+ ```typescript
125
+ async sendGreeting(payload: { to: string }, schedule: Schedule) {
126
+ console.log(`Sending greeting to ${payload.to}`);
127
+ // Cron schedules auto-reschedule; one-time schedules are deleted
128
+ }
129
+ ```
130
+
131
+ ### Manage Schedules
132
+
133
+ ```typescript
134
+ const schedules = this.getSchedules()
135
+ const crons = this.getSchedules({ type: 'cron' })
136
+ await this.cancelSchedule(schedule.id)
137
+ ```
138
+
139
+ ## Lifecycle Callbacks
140
+
141
+ ```typescript
142
+ export class MyAgent extends Agent<Env, State> {
143
+ async onStart() {
144
+ // Agent started or woke from hibernation
145
+ }
146
+
147
+ onConnect(conn: Connection, ctx: ConnectionContext) {
148
+ // WebSocket connected
149
+ }
150
+
151
+ onMessage(conn: Connection, message: WSMessage) {
152
+ // WebSocket message (non-RPC)
153
+ }
154
+
155
+ onStateUpdate(state: State, source: Connection | 'server') {
156
+ // State changed (async, non-blocking)
157
+ }
158
+
159
+ onError(error: unknown) {
160
+ // Error handler
161
+ throw error // Re-throw to propagate
162
+ }
163
+ }
164
+ ```
@@ -0,0 +1,168 @@
1
+ # Streaming Chat with AIChatAgent
2
+
3
+ Fetch `docs/resumable-streaming.md` and `docs/client-sdk.md` from `https://github.com/cloudflare/agents/tree/main/docs` for complete documentation.
4
+
5
+ `AIChatAgent` provides streaming chat with automatic message persistence and resumable streams.
6
+
7
+ ## Basic Chat Agent
8
+
9
+ ```typescript
10
+ import { AIChatAgent } from '@cloudflare/ai-chat'
11
+ import { streamText, convertToModelMessages } from 'ai'
12
+ import { openai } from '@ai-sdk/openai'
13
+
14
+ export class Chat extends AIChatAgent<Env> {
15
+ async onChatMessage(onFinish) {
16
+ const result = streamText({
17
+ model: openai('gpt-4o'),
18
+ messages: await convertToModelMessages(this.messages),
19
+ onFinish,
20
+ })
21
+ return result.toUIMessageStreamResponse()
22
+ }
23
+ }
24
+ ```
25
+
26
+ ## With Custom System Prompt
27
+
28
+ ```typescript
29
+ export class Chat extends AIChatAgent<Env> {
30
+ async onChatMessage(onFinish) {
31
+ const result = streamText({
32
+ model: openai('gpt-4o'),
33
+ system: 'You are a helpful assistant specializing in...',
34
+ messages: await convertToModelMessages(this.messages),
35
+ onFinish,
36
+ })
37
+ return result.toUIMessageStreamResponse()
38
+ }
39
+ }
40
+ ```
41
+
42
+ ## With Tools
43
+
44
+ ```typescript
45
+ import { tool } from 'ai'
46
+ import { z } from 'zod'
47
+
48
+ const tools = {
49
+ getWeather: tool({
50
+ description: 'Get weather for a location',
51
+ parameters: z.object({ location: z.string() }),
52
+ execute: async ({ location }) => `Weather in ${location}: 72°F, sunny`,
53
+ }),
54
+ }
55
+
56
+ export class Chat extends AIChatAgent<Env> {
57
+ async onChatMessage(onFinish) {
58
+ const result = streamText({
59
+ model: openai('gpt-4o'),
60
+ messages: await convertToModelMessages(this.messages),
61
+ tools,
62
+ onFinish,
63
+ })
64
+ return result.toUIMessageStreamResponse()
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## Custom UI Message Stream
70
+
71
+ For more control, use `createUIMessageStream`:
72
+
73
+ ```typescript
74
+ import { createUIMessageStream, createUIMessageStreamResponse } from 'ai'
75
+
76
+ export class Chat extends AIChatAgent<Env> {
77
+ async onChatMessage(onFinish) {
78
+ const stream = createUIMessageStream({
79
+ execute: async ({ writer }) => {
80
+ const result = streamText({
81
+ model: openai('gpt-4o'),
82
+ messages: await convertToModelMessages(this.messages),
83
+ onFinish,
84
+ })
85
+ writer.merge(result.toUIMessageStream())
86
+ },
87
+ })
88
+ return createUIMessageStreamResponse({ stream })
89
+ }
90
+ }
91
+ ```
92
+
93
+ ## Resumable Streaming
94
+
95
+ Streams automatically resume if client disconnects and reconnects:
96
+
97
+ 1. Chunks buffered to SQLite during streaming
98
+ 2. On reconnect, buffered chunks sent immediately
99
+ 3. Live streaming continues from where it left off
100
+
101
+ **Enabled by default.** To disable:
102
+
103
+ ```tsx
104
+ const { messages } = useAgentChat({ agent, resume: false })
105
+ ```
106
+
107
+ ## React Client
108
+
109
+ ```tsx
110
+ import { useAgent } from 'agents/react'
111
+ import { useAgentChat } from '@cloudflare/ai-chat/react'
112
+
113
+ function ChatUI() {
114
+ const agent = useAgent({
115
+ agent: 'Chat',
116
+ name: 'my-chat-session',
117
+ })
118
+
119
+ const { messages, input, handleInputChange, handleSubmit, status } = useAgentChat({ agent })
120
+
121
+ return (
122
+ <div>
123
+ {messages.map((m) => (
124
+ <div key={m.id}>
125
+ <strong>{m.role}:</strong> {m.content}
126
+ </div>
127
+ ))}
128
+
129
+ <form onSubmit={handleSubmit}>
130
+ <input value={input} onChange={handleInputChange} disabled={status === 'streaming'} />
131
+ <button type="submit">Send</button>
132
+ </form>
133
+ </div>
134
+ )
135
+ }
136
+ ```
137
+
138
+ ## Streaming RPC Methods
139
+
140
+ For non-chat streaming, use `@callable({ streaming: true })`:
141
+
142
+ ```typescript
143
+ import { Agent, callable, StreamingResponse } from 'agents'
144
+
145
+ export class MyAgent extends Agent<Env> {
146
+ @callable({ streaming: true })
147
+ async streamData(stream: StreamingResponse, query: string) {
148
+ for (let i = 0; i < 10; i++) {
149
+ stream.send(`Result ${i}: ${query}`)
150
+ await sleep(100)
151
+ }
152
+ stream.close()
153
+ }
154
+ }
155
+ ```
156
+
157
+ Client receives streamed messages via WebSocket RPC.
158
+
159
+ ## Status Values
160
+
161
+ `useAgentChat` status:
162
+
163
+ | Status | Meaning |
164
+ | ----------- | --------------------- |
165
+ | `ready` | Idle, ready for input |
166
+ | `streaming` | Response streaming |
167
+ | `submitted` | Request sent, waiting |
168
+ | `error` | Error occurred |