memory-journal-mcp 7.7.1 → 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-6LPTBIB6.js → chunk-MWNLAEHR.js} +309 -4332
  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 +6 -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,92 @@
1
+ # Cloudflare Tail Workers
2
+
3
+ Specialized Workers that consume execution events from producer Workers for logging, debugging, analytics, and observability.
4
+
5
+ ## When to Use This Reference
6
+
7
+ - Implementing observability/logging for Cloudflare Workers
8
+ - Processing Worker execution events, logs, exceptions
9
+ - Building custom analytics or error tracking
10
+ - Configuring real-time event streaming
11
+ - Working with tail handlers or tail consumers
12
+
13
+ ## Core Concepts
14
+
15
+ ### What Are Tail Workers?
16
+
17
+ Tail Workers automatically process events from producer Workers (the Workers being monitored). They receive:
18
+
19
+ - HTTP request/response info
20
+ - Console logs (`console.log/error/warn/debug`)
21
+ - Uncaught exceptions
22
+ - Execution outcomes (`ok`, `exception`, `exceededCpu`, etc.)
23
+ - Diagnostic channel events
24
+
25
+ **Key characteristics:**
26
+
27
+ - Invoked AFTER producer finishes executing
28
+ - Capture entire request lifecycle including Service Bindings and Dynamic Dispatch sub-requests
29
+ - Billed by CPU time, not request count
30
+ - Available on Workers Paid and Enterprise tiers
31
+
32
+ ### Alternative: OpenTelemetry Export
33
+
34
+ **Before using Tail Workers, consider OpenTelemetry:**
35
+
36
+ For batch exports to observability tools (Sentry, Grafana, Honeycomb):
37
+
38
+ - OTEL export sends logs/traces in batches (more efficient)
39
+ - Built-in integrations with popular platforms
40
+ - Lower overhead than Tail Workers
41
+ - **Use Tail Workers only for custom real-time processing**
42
+
43
+ ## Decision Tree
44
+
45
+ ```
46
+ Need observability for Workers?
47
+ ├─ Batch export to known tools (Sentry/Grafana/Honeycomb)?
48
+ │ └─ Use OpenTelemetry export (not Tail Workers)
49
+ ├─ Custom real-time processing needed?
50
+ │ ├─ Aggregated metrics?
51
+ │ │ └─ Use Tail Worker + Analytics Engine
52
+ │ ├─ Error tracking?
53
+ │ │ └─ Use Tail Worker + external service
54
+ │ ├─ Custom logging/debugging?
55
+ │ │ └─ Use Tail Worker + KV/HTTP endpoint
56
+ │ └─ Complex event processing?
57
+ │ └─ Use Tail Worker + Durable Objects
58
+ └─ Quick debugging?
59
+ └─ Use `wrangler tail` (different from Tail Workers)
60
+ ```
61
+
62
+ ## Reading Order
63
+
64
+ 1. **[configuration.md](configuration.md)** - Set up Tail Workers
65
+ 2. **[api.md](api.md)** - Handler signature, types, redaction
66
+ 3. **[patterns.md](patterns.md)** - Common use cases and integrations
67
+ 4. **[gotchas.md](gotchas.md)** - Pitfalls and debugging tips
68
+
69
+ ## Quick Example
70
+
71
+ ```typescript
72
+ export default {
73
+ async tail(events, env, ctx) {
74
+ // Process events from producer Worker
75
+ ctx.waitUntil(
76
+ fetch(env.LOG_ENDPOINT, {
77
+ method: 'POST',
78
+ headers: { 'Content-Type': 'application/json' },
79
+ body: JSON.stringify(events),
80
+ })
81
+ )
82
+ },
83
+ }
84
+ ```
85
+
86
+ ## Related Skills
87
+
88
+ - **observability** - General Workers observability patterns, OTEL export
89
+ - **analytics-engine** - Aggregated metrics storage for tail event data
90
+ - **durable-objects** - Stateful event processing, batching tail events
91
+ - **logpush** - Alternative for batch log export (non-real-time)
92
+ - **workers-for-platforms** - Dynamic dispatch with tail consumers
@@ -0,0 +1,203 @@
1
+ # Tail Workers API Reference
2
+
3
+ ## Handler Signature
4
+
5
+ ```typescript
6
+ export default {
7
+ async tail(events: TraceItem[], env: Env, ctx: ExecutionContext): Promise<void> {
8
+ // Process events
9
+ },
10
+ } satisfies ExportedHandler<Env>
11
+ ```
12
+
13
+ **Parameters:**
14
+
15
+ - `events`: Array of `TraceItem` objects (one per producer invocation)
16
+ - `env`: Bindings (KV, D1, R2, env vars, etc.)
17
+ - `ctx`: Context with `waitUntil()` for async work
18
+
19
+ **CRITICAL:** Tail handlers don't return values. Use `ctx.waitUntil()` for async operations.
20
+
21
+ ## TraceItem Type
22
+
23
+ ```typescript
24
+ interface TraceItem {
25
+ scriptName: string // Producer Worker name
26
+ eventTimestamp: number // Epoch milliseconds
27
+ outcome:
28
+ | 'ok'
29
+ | 'exception'
30
+ | 'exceededCpu'
31
+ | 'exceededMemory'
32
+ | 'canceled'
33
+ | 'scriptNotFound'
34
+ | 'responseStreamDisconnected'
35
+ | 'unknown'
36
+
37
+ event?: {
38
+ request?: {
39
+ url: string // Redacted by default
40
+ method: string
41
+ headers: Record<string, string> // Sensitive headers redacted
42
+ cf?: IncomingRequestCfProperties
43
+ getUnredacted(): TraceRequest // Bypass redaction (use carefully)
44
+ }
45
+ response?: {
46
+ status: number
47
+ }
48
+ }
49
+
50
+ logs: Array<{
51
+ timestamp: number // Epoch milliseconds
52
+ level: 'debug' | 'info' | 'log' | 'warn' | 'error'
53
+ message: unknown[] // Args passed to console function
54
+ }>
55
+
56
+ exceptions: Array<{
57
+ timestamp: number // Epoch milliseconds
58
+ name: string // Error type (Error, TypeError, etc.)
59
+ message: string // Error description
60
+ }>
61
+
62
+ diagnosticsChannelEvents: Array<{
63
+ channel: string
64
+ message: unknown
65
+ timestamp: number // Epoch milliseconds
66
+ }>
67
+ }
68
+ ```
69
+
70
+ **Note:** Official SDK uses `TraceItem`, not `TailItem`. Use `@cloudflare/workers-types` for accurate types.
71
+
72
+ ## Timestamp Handling
73
+
74
+ All timestamps are **epoch milliseconds**, not seconds:
75
+
76
+ ```typescript
77
+ // ✅ CORRECT - use directly with Date
78
+ const date = new Date(event.eventTimestamp)
79
+
80
+ // ❌ WRONG - don't multiply by 1000
81
+ const date = new Date(event.eventTimestamp * 1000)
82
+ ```
83
+
84
+ ## Automatic Redaction
85
+
86
+ By default, sensitive data is redacted from `TraceRequest`:
87
+
88
+ ### Header Redaction
89
+
90
+ Headers containing these substrings (case-insensitive):
91
+
92
+ - `auth`, `key`, `secret`, `token`, `jwt`
93
+ - `cookie`, `set-cookie`
94
+
95
+ Redacted values show as `"REDACTED"`.
96
+
97
+ ### URL Redaction
98
+
99
+ - **Hex IDs:** 32+ hex digits → `"REDACTED"`
100
+ - **Base-64 IDs:** 21+ chars with 2+ upper, 2+ lower, 2+ digits → `"REDACTED"`
101
+
102
+ ## Bypassing Redaction
103
+
104
+ ```typescript
105
+ export default {
106
+ async tail(events, env, ctx) {
107
+ for (const event of events) {
108
+ // ⚠️ Use with extreme caution
109
+ const unredacted = event.event?.request?.getUnredacted()
110
+ // unredacted.url and unredacted.headers contain raw values
111
+ }
112
+ },
113
+ }
114
+ ```
115
+
116
+ **Best practices:**
117
+
118
+ - Only call `getUnredacted()` when absolutely necessary
119
+ - Never log unredacted sensitive data
120
+ - Implement additional filtering before external transmission
121
+ - Use environment variables for API keys, never hardcode
122
+
123
+ ## Type-Safe Handler
124
+
125
+ ```typescript
126
+ interface Env {
127
+ LOGS_KV: KVNamespace
128
+ ANALYTICS: AnalyticsEngineDataset
129
+ LOG_ENDPOINT: string
130
+ API_TOKEN: string
131
+ }
132
+
133
+ export default {
134
+ async tail(events: TraceItem[], env: Env, ctx: ExecutionContext): Promise<void> {
135
+ const payload = events.map((event) => ({
136
+ script: event.scriptName,
137
+ timestamp: event.eventTimestamp,
138
+ outcome: event.outcome,
139
+ url: event.event?.request?.url,
140
+ status: event.event?.response?.status,
141
+ }))
142
+
143
+ ctx.waitUntil(
144
+ fetch(env.LOG_ENDPOINT, {
145
+ method: 'POST',
146
+ headers: { 'Content-Type': 'application/json' },
147
+ body: JSON.stringify(payload),
148
+ })
149
+ )
150
+ },
151
+ } satisfies ExportedHandler<Env>
152
+ ```
153
+
154
+ ## Outcome vs HTTP Status
155
+
156
+ **IMPORTANT:** `outcome` is script execution status, NOT HTTP status.
157
+
158
+ - Worker returns 500 → `outcome='ok'` if script completed successfully
159
+ - Uncaught exception → `outcome='exception'` regardless of HTTP status
160
+ - CPU limit exceeded → `outcome='exceededCpu'`
161
+
162
+ ```typescript
163
+ // ✅ Check outcome for script execution status
164
+ if (event.outcome === 'exception') {
165
+ // Script threw uncaught exception
166
+ }
167
+
168
+ // ✅ Check HTTP status separately
169
+ if (event.event?.response?.status === 500) {
170
+ // HTTP 500 returned (script may have handled error)
171
+ }
172
+ ```
173
+
174
+ ## Serialization Considerations
175
+
176
+ `log.message` is `unknown[]` and may contain non-serializable objects:
177
+
178
+ ```typescript
179
+ // ❌ May fail with circular references or BigInt
180
+ JSON.stringify(events)
181
+
182
+ // ✅ Safe serialization
183
+ const safePayload = events.map((event) => ({
184
+ ...event,
185
+ logs: event.logs.map((log) => ({
186
+ ...log,
187
+ message: log.message.map((m) => {
188
+ try {
189
+ return JSON.parse(JSON.stringify(m))
190
+ } catch {
191
+ return String(m)
192
+ }
193
+ }),
194
+ })),
195
+ }))
196
+ ```
197
+
198
+ **Common serialization issues:**
199
+
200
+ - Circular references in logged objects
201
+ - `BigInt` values (not JSON-serializable)
202
+ - Functions or symbols in console.log arguments
203
+ - Large objects exceeding body size limits
@@ -0,0 +1,178 @@
1
+ # Tail Workers Configuration
2
+
3
+ ## Setup Steps
4
+
5
+ ### 1. Create Tail Worker
6
+
7
+ Create a Worker with a `tail()` handler:
8
+
9
+ ```typescript
10
+ export default {
11
+ async tail(events, env, ctx) {
12
+ // Process events from producer Worker
13
+ ctx.waitUntil(
14
+ fetch(env.LOG_ENDPOINT, {
15
+ method: 'POST',
16
+ body: JSON.stringify(events),
17
+ })
18
+ )
19
+ },
20
+ }
21
+ ```
22
+
23
+ ### 2. Configure Producer Worker
24
+
25
+ In producer's `wrangler.jsonc`:
26
+
27
+ ```jsonc
28
+ {
29
+ "name": "my-producer-worker",
30
+ "tail_consumers": [
31
+ {
32
+ "service": "my-tail-worker",
33
+ },
34
+ ],
35
+ }
36
+ ```
37
+
38
+ ### 3. Deploy Both Workers
39
+
40
+ ```bash
41
+ # Deploy Tail Worker first
42
+ cd tail-worker
43
+ wrangler deploy
44
+
45
+ # Then deploy producer Worker
46
+ cd ../producer-worker
47
+ wrangler deploy
48
+ ```
49
+
50
+ ## Wrangler Configuration
51
+
52
+ ### Single Tail Consumer
53
+
54
+ ```jsonc
55
+ {
56
+ "name": "producer-worker",
57
+ "tail_consumers": [
58
+ {
59
+ "service": "logging-tail-worker",
60
+ },
61
+ ],
62
+ }
63
+ ```
64
+
65
+ ### Multiple Tail Consumers
66
+
67
+ ```jsonc
68
+ {
69
+ "name": "producer-worker",
70
+ "tail_consumers": [
71
+ {
72
+ "service": "logging-tail-worker",
73
+ },
74
+ {
75
+ "service": "metrics-tail-worker",
76
+ },
77
+ ],
78
+ }
79
+ ```
80
+
81
+ **Note:** Each consumer receives ALL events independently.
82
+
83
+ ### Remove Tail Consumer
84
+
85
+ ```jsonc
86
+ {
87
+ "tail_consumers": [],
88
+ }
89
+ ```
90
+
91
+ Then redeploy producer Worker.
92
+
93
+ ## Environment Variables
94
+
95
+ Tail Workers use same binding syntax as regular Workers:
96
+
97
+ ```jsonc
98
+ {
99
+ "name": "my-tail-worker",
100
+ "vars": {
101
+ "LOG_ENDPOINT": "https://logs.example.com/ingest",
102
+ },
103
+ "kv_namespaces": [
104
+ {
105
+ "binding": "LOGS_KV",
106
+ "id": "abc123...",
107
+ },
108
+ ],
109
+ }
110
+ ```
111
+
112
+ ## Testing & Development
113
+
114
+ ### Local Testing
115
+
116
+ **Tail Workers cannot be fully tested with `wrangler dev`.** Deploy to staging environment for testing.
117
+
118
+ ### Testing Strategy
119
+
120
+ 1. Deploy producer Worker to staging
121
+ 2. Deploy Tail Worker to staging
122
+ 3. Configure `tail_consumers` in producer
123
+ 4. Trigger producer Worker requests
124
+ 5. Verify Tail Worker receives events (check destination logs/storage)
125
+
126
+ ### Wrangler Tail Command
127
+
128
+ ```bash
129
+ # Stream logs to terminal (NOT Tail Workers)
130
+ wrangler tail my-producer-worker
131
+ ```
132
+
133
+ **This is different from Tail Workers:**
134
+
135
+ - `wrangler tail` streams logs to your terminal
136
+ - Tail Workers are Workers that process events programmatically
137
+
138
+ ## Deployment Checklist
139
+
140
+ - [ ] Tail Worker has `tail()` handler
141
+ - [ ] Tail Worker deployed before producer
142
+ - [ ] Producer's `wrangler.jsonc` has correct `tail_consumers`
143
+ - [ ] Environment variables configured
144
+ - [ ] Tested with staging environment
145
+ - [ ] Monitoring configured for Tail Worker itself
146
+
147
+ ## Limits
148
+
149
+ | Limit | Value | Notes |
150
+ | ------------------------------- | ------------------------------- | -------------------------------------------- |
151
+ | Max tail consumers per producer | 10 | Each receives all events independently |
152
+ | Events batch size | Up to 100 events per invocation | Larger batches split across invocations |
153
+ | Tail Worker CPU time | Same as regular Workers | 10ms (free), 30ms (paid), 50ms (paid bundle) |
154
+ | Pricing tier | Workers Paid or Enterprise | Not available on free plan |
155
+ | Request body size | 100 MB max | When sending to external endpoints |
156
+ | Event retention | None | Events not retried if tail handler fails |
157
+
158
+ ## Workers for Platforms
159
+
160
+ For dynamic dispatch Workers, both dispatch and user Worker events sent to tail consumer:
161
+
162
+ ```jsonc
163
+ {
164
+ "name": "dispatch-worker",
165
+ "tail_consumers": [
166
+ {
167
+ "service": "platform-tail-worker",
168
+ },
169
+ ],
170
+ }
171
+ ```
172
+
173
+ Tail Worker receives TWO `TraceItem` elements per request:
174
+
175
+ 1. Dynamic dispatch Worker event
176
+ 2. User Worker event
177
+
178
+ See [patterns.md](patterns.md) for handling.
@@ -0,0 +1,206 @@
1
+ # Tail Workers Gotchas & Debugging
2
+
3
+ ## Critical Pitfalls
4
+
5
+ ### 1. Not Using `ctx.waitUntil()`
6
+
7
+ **Problem:** Async work doesn't complete or tail Worker times out
8
+ **Cause:** Handlers exit immediately; awaiting blocks processing
9
+ **Solution:**
10
+
11
+ ```typescript
12
+ // ❌ WRONG - fire and forget
13
+ export default {
14
+ async tail(events) {
15
+ fetch(endpoint, { body: JSON.stringify(events) })
16
+ },
17
+ }
18
+
19
+ // ❌ WRONG - blocking await
20
+ export default {
21
+ async tail(events, env, ctx) {
22
+ await fetch(endpoint, { body: JSON.stringify(events) })
23
+ },
24
+ }
25
+
26
+ // ✅ CORRECT
27
+ export default {
28
+ async tail(events, env, ctx) {
29
+ ctx.waitUntil(
30
+ (async () => {
31
+ await fetch(endpoint, { body: JSON.stringify(events) })
32
+ await processMore()
33
+ })()
34
+ )
35
+ },
36
+ }
37
+ ```
38
+
39
+ ### 2. Missing `tail()` Handler
40
+
41
+ **Problem:** Producer deployment fails
42
+ **Cause:** Worker in `tail_consumers` doesn't export `tail()` handler
43
+ **Solution:** Ensure `export default { async tail(events, env, ctx) { ... } }`
44
+
45
+ ### 3. Outcome vs HTTP Status
46
+
47
+ **Problem:** Filtering by wrong status
48
+ **Cause:** `outcome` is script execution status, not HTTP status
49
+
50
+ ```typescript
51
+ // ❌ WRONG
52
+ if (event.outcome === 500) {
53
+ /* never matches */
54
+ }
55
+
56
+ // ✅ CORRECT
57
+ if (event.outcome === 'exception') {
58
+ /* script threw */
59
+ }
60
+ if (event.event?.response?.status === 500) {
61
+ /* HTTP 500 */
62
+ }
63
+ ```
64
+
65
+ ### 4. Timestamp Units
66
+
67
+ **Problem:** Dates off by 1000x
68
+ **Cause:** Timestamps are epoch milliseconds, not seconds
69
+
70
+ ```typescript
71
+ // ❌ WRONG: const date = new Date(event.eventTimestamp * 1000);
72
+ // ✅ CORRECT: const date = new Date(event.eventTimestamp);
73
+ ```
74
+
75
+ ### 5. Type Name Mismatch
76
+
77
+ **Problem:** Using `TailItem` type
78
+ **Cause:** Old docs used `TailItem`, SDK uses `TraceItem`
79
+
80
+ ```typescript
81
+ import type { TraceItem } from '@cloudflare/workers-types'
82
+ export default {
83
+ async tail(events: TraceItem[], env, ctx) {
84
+ /* ... */
85
+ },
86
+ }
87
+ ```
88
+
89
+ ### 6. Excessive Logging Volume
90
+
91
+ **Problem:** Unexpected high costs
92
+ **Cause:** Invoked on EVERY producer request
93
+ **Solution:** Sample events
94
+
95
+ ```typescript
96
+ export default {
97
+ async tail(events, env, ctx) {
98
+ if (Math.random() > 0.1) return // 10% sample
99
+ ctx.waitUntil(sendToEndpoint(events))
100
+ },
101
+ }
102
+ ```
103
+
104
+ ### 7. Serialization Issues
105
+
106
+ **Problem:** `JSON.stringify()` fails
107
+ **Cause:** `log.message` is `unknown[]` with non-serializable values
108
+ **Solution:**
109
+
110
+ ```typescript
111
+ const safePayload = events.map((e) => ({
112
+ ...e,
113
+ logs: e.logs.map((log) => ({
114
+ ...log,
115
+ message: log.message.map((m) => {
116
+ try {
117
+ return JSON.parse(JSON.stringify(m))
118
+ } catch {
119
+ return String(m)
120
+ }
121
+ }),
122
+ })),
123
+ }))
124
+ ```
125
+
126
+ ### 8. Missing Error Handling
127
+
128
+ **Problem:** Tail Worker silently fails
129
+ **Cause:** No try/catch
130
+ **Solution:**
131
+
132
+ ```typescript
133
+ ctx.waitUntil(
134
+ (async () => {
135
+ try {
136
+ await fetch(env.ENDPOINT, { body: JSON.stringify(events) })
137
+ } catch (error) {
138
+ console.error('Tail error:', error)
139
+ await env.FALLBACK_KV.put(`failed:${Date.now()}`, JSON.stringify(events))
140
+ }
141
+ })()
142
+ )
143
+ ```
144
+
145
+ ### 9. Deployment Order
146
+
147
+ **Problem:** Producer deployment fails
148
+ **Cause:** Tail consumer not deployed yet
149
+ **Solution:** Deploy tail consumer FIRST
150
+
151
+ ```bash
152
+ cd tail-worker && wrangler deploy
153
+ cd ../producer && wrangler deploy
154
+ ```
155
+
156
+ ### 10. No Event Retry
157
+
158
+ **Problem:** Events lost when handler fails
159
+ **Cause:** Failed invocations NOT retried
160
+ **Solution:** Implement fallback storage (see #8)
161
+
162
+ ## Debugging
163
+
164
+ **View logs:** `wrangler tail my-tail-worker`
165
+
166
+ **Incremental testing:**
167
+
168
+ 1. Verify receipt: `console.log('Events:', events.length)`
169
+ 2. Inspect structure: `console.log(JSON.stringify(events[0], null, 2))`
170
+ 3. Add external call with `ctx.waitUntil()`
171
+
172
+ **Monitor dashboard:** Check invocation count (matches producer?), error rate, CPU time
173
+
174
+ ## Testing
175
+
176
+ Add test endpoint to producer:
177
+
178
+ ```typescript
179
+ export default {
180
+ async fetch(request) {
181
+ if (request.url.includes('/test')) {
182
+ console.log('Test log')
183
+ throw new Error('Test error')
184
+ }
185
+ return new Response('OK')
186
+ },
187
+ }
188
+ ```
189
+
190
+ Trigger: `curl https://producer.example.workers.dev/test`
191
+
192
+ ## Common Errors
193
+
194
+ | Error | Cause | Solution |
195
+ | ----------------------------- | ---------------- | ------------------------ |
196
+ | "Tail consumer not found" | Not deployed | Deploy tail Worker first |
197
+ | "No tail handler" | Missing `tail()` | Add to default export |
198
+ | "waitUntil is not a function" | Missing `ctx` | Add `ctx` parameter |
199
+ | Timeout | Blocking await | Use `ctx.waitUntil()` |
200
+
201
+ ## Performance Notes
202
+
203
+ - Max 100 events per invocation
204
+ - Each consumer receives all events independently
205
+ - CPU limits same as regular Workers
206
+ - For high volume, use Durable Objects batching