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,204 @@
1
+ ## Routing Patterns
2
+
3
+ ### Session Affinity (Stateful)
4
+
5
+ ```typescript
6
+ export class SessionBackend extends Container {
7
+ defaultPort = 3000
8
+ sleepAfter = '30m'
9
+ }
10
+
11
+ export default {
12
+ async fetch(request: Request, env: Env) {
13
+ const sessionId = request.headers.get('X-Session-ID') || crypto.randomUUID()
14
+ const container = env.SESSION_BACKEND.getByName(sessionId)
15
+ await container.startAndWaitForPorts()
16
+ return container.fetch(request)
17
+ },
18
+ }
19
+ ```
20
+
21
+ **Use:** User sessions, WebSocket, stateful games, per-user caching.
22
+
23
+ ### Load Balancing (Stateless)
24
+
25
+ ```typescript
26
+ export default {
27
+ async fetch(request: Request, env: Env) {
28
+ const container = env.STATELESS_API.getRandom()
29
+ await container.startAndWaitForPorts()
30
+ return container.fetch(request)
31
+ },
32
+ }
33
+ ```
34
+
35
+ **Use:** Stateless HTTP APIs, CPU-intensive work, read-only queries.
36
+
37
+ ### Singleton Pattern
38
+
39
+ ```typescript
40
+ export default {
41
+ async fetch(request: Request, env: Env) {
42
+ const container = env.GLOBAL_SERVICE.getByName('singleton')
43
+ await container.startAndWaitForPorts()
44
+ return container.fetch(request)
45
+ },
46
+ }
47
+ ```
48
+
49
+ **Use:** Global cache, centralized coordinator, single source of truth.
50
+
51
+ ## WebSocket Forwarding
52
+
53
+ ```typescript
54
+ export default {
55
+ async fetch(request: Request, env: Env) {
56
+ if (request.headers.get('Upgrade') === 'websocket') {
57
+ const sessionId = request.headers.get('X-Session-ID') || crypto.randomUUID()
58
+ const container = env.WS_BACKEND.getByName(sessionId)
59
+ await container.startAndWaitForPorts()
60
+
61
+ // ⚠️ MUST use fetch(), not containerFetch()
62
+ return container.fetch(request)
63
+ }
64
+ return new Response('Not a WebSocket request', { status: 400 })
65
+ },
66
+ }
67
+ ```
68
+
69
+ **⚠️ Critical:** Always use `fetch()` for WebSocket.
70
+
71
+ ## Graceful Shutdown
72
+
73
+ ```typescript
74
+ export class GracefulContainer extends Container {
75
+ private connections = new Set<WebSocket>()
76
+
77
+ onStop() {
78
+ // SIGTERM received, 15 minutes until SIGKILL
79
+ for (const ws of this.connections) {
80
+ ws.close(1001, 'Server shutting down')
81
+ }
82
+ this.ctx.storage.put('shutdown-time', Date.now())
83
+ }
84
+
85
+ onActivityExpired(): boolean {
86
+ return this.connections.size > 0 // Keep alive if connections
87
+ }
88
+ }
89
+ ```
90
+
91
+ ## Concurrent Request Handling
92
+
93
+ ```typescript
94
+ export class SafeContainer extends Container {
95
+ private initialized = false
96
+
97
+ async fetch(request: Request) {
98
+ await this.ctx.blockConcurrencyWhile(async () => {
99
+ if (!this.initialized) {
100
+ await this.startAndWaitForPorts()
101
+ this.initialized = true
102
+ }
103
+ })
104
+ return super.fetch(request)
105
+ }
106
+ }
107
+ ```
108
+
109
+ **Use:** One-time initialization, preventing concurrent startup.
110
+
111
+ ## Activity Timeout Renewal
112
+
113
+ ```typescript
114
+ export class LongRunningContainer extends Container {
115
+ sleepAfter = '5m'
116
+
117
+ async processLongJob(data: unknown) {
118
+ const interval = setInterval(() => {
119
+ this.ctx.storage.put('keepalive', Date.now())
120
+ }, 60000)
121
+
122
+ try {
123
+ await this.doLongWork(data)
124
+ } finally {
125
+ clearInterval(interval)
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ **Use:** Long operations exceeding `sleepAfter`.
132
+
133
+ ## Multiple Port Routing
134
+
135
+ ```typescript
136
+ export class MultiPortContainer extends Container {
137
+ requiredPorts = [8080, 8081, 9090]
138
+
139
+ async fetch(request: Request) {
140
+ const path = new URL(request.url).pathname
141
+ if (path.startsWith('/grpc')) this.switchPort(8081)
142
+ else if (path.startsWith('/metrics')) this.switchPort(9090)
143
+ return super.fetch(request)
144
+ }
145
+ }
146
+ ```
147
+
148
+ **Use:** Multi-protocol services (HTTP + gRPC), separate metrics endpoints.
149
+
150
+ ## Workflow Integration
151
+
152
+ ```typescript
153
+ import { WorkflowEntrypoint } from 'cloudflare:workers'
154
+
155
+ export class ProcessingWorkflow extends WorkflowEntrypoint {
156
+ async run(event, step) {
157
+ const container = this.env.PROCESSOR.getByName(event.payload.jobId)
158
+
159
+ await step.do('start', async () => {
160
+ await container.startAndWaitForPorts()
161
+ })
162
+
163
+ const result = await step.do('process', async () => {
164
+ return container
165
+ .fetch('/process', {
166
+ method: 'POST',
167
+ body: JSON.stringify(event.payload.data),
168
+ })
169
+ .then((r) => r.json())
170
+ })
171
+
172
+ return result
173
+ }
174
+ }
175
+ ```
176
+
177
+ **Use:** Orchestrating multi-step container operations, durable execution.
178
+
179
+ ## Queue Consumer Integration
180
+
181
+ ```typescript
182
+ export default {
183
+ async queue(batch, env) {
184
+ for (const msg of batch.messages) {
185
+ try {
186
+ const container = env.PROCESSOR.getByName(msg.body.jobId)
187
+ await container.startAndWaitForPorts()
188
+
189
+ const response = await container.fetch('/process', {
190
+ method: 'POST',
191
+ body: JSON.stringify(msg.body),
192
+ })
193
+
194
+ response.ok ? msg.ack() : msg.retry()
195
+ } catch (err) {
196
+ console.error('Queue processing error:', err)
197
+ msg.retry()
198
+ }
199
+ }
200
+ },
201
+ }
202
+ ```
203
+
204
+ **Use:** Asynchronous job processing, batch operations, event-driven execution.
@@ -0,0 +1,101 @@
1
+ # Cloudflare Cron Triggers
2
+
3
+ Schedule Workers execution using cron expressions. Runs on Cloudflare's global network during underutilized periods.
4
+
5
+ ## Key Features
6
+
7
+ - **UTC-only execution** - All schedules run on UTC time
8
+ - **5-field cron syntax** - Quartz scheduler extensions (L, W, #)
9
+ - **Global propagation** - 15min deployment delay
10
+ - **At-least-once delivery** - Rare duplicate executions possible
11
+ - **Workflow integration** - Trigger long-running multi-step tasks
12
+ - **Green Compute** - Optional carbon-aware scheduling during low-carbon periods
13
+
14
+ ## Cron Syntax
15
+
16
+ ```
17
+ ┌─────────── minute (0-59)
18
+ │ ┌───────── hour (0-23)
19
+ │ │ ┌─────── day of month (1-31)
20
+ │ │ │ ┌───── month (1-12, JAN-DEC)
21
+ │ │ │ │ ┌─── day of week (1-7, SUN-SAT, 1=Sunday)
22
+ * * * * *
23
+ ```
24
+
25
+ **Special chars:** `*` (any), `,` (list), `-` (range), `/` (step), `L` (last), `W` (weekday), `#` (nth)
26
+
27
+ ## Common Schedules
28
+
29
+ ```bash
30
+ */5 * * * * # Every 5 minutes
31
+ 0 * * * * # Hourly
32
+ 0 2 * * * # Daily 2am UTC (off-peak)
33
+ 0 9 * * MON-FRI # Weekdays 9am UTC
34
+ 0 0 1 * * # Monthly 1st midnight UTC
35
+ 0 9 L * * # Last day of month 9am UTC
36
+ 0 10 * * MON#2 # 2nd Monday 10am UTC
37
+ */10 9-17 * * MON-FRI # Every 10min, 9am-5pm weekdays
38
+ ```
39
+
40
+ ## Quick Start
41
+
42
+ **wrangler.jsonc:**
43
+
44
+ ```jsonc
45
+ {
46
+ "name": "my-cron-worker",
47
+ "triggers": {
48
+ "crons": ["*/5 * * * *", "0 2 * * *"],
49
+ },
50
+ }
51
+ ```
52
+
53
+ **Handler:**
54
+
55
+ ```typescript
56
+ export default {
57
+ async scheduled(controller: ScheduledController, env: Env, ctx: ExecutionContext): Promise<void> {
58
+ console.log('Cron:', controller.cron)
59
+ console.log('Time:', new Date(controller.scheduledTime))
60
+
61
+ ctx.waitUntil(asyncTask(env)) // Non-blocking
62
+ },
63
+ }
64
+ ```
65
+
66
+ **Test locally:**
67
+
68
+ ```bash
69
+ npx wrangler dev
70
+ curl "http://localhost:8787/__scheduled?cron=*/5+*+*+*+*"
71
+ ```
72
+
73
+ ## Limits
74
+
75
+ - **Free:** 3 triggers/worker, 10ms CPU
76
+ - **Paid:** Unlimited triggers, 50ms CPU
77
+ - **Propagation:** 15min global deployment
78
+ - **Timezone:** UTC only
79
+
80
+ ## Reading Order
81
+
82
+ **New to cron triggers?** Start here:
83
+
84
+ 1. This README - Overview and quick start
85
+ 2. [configuration.md](./configuration.md) - Set up your first cron trigger
86
+ 3. [api.md](./api.md) - Understand the handler API
87
+ 4. [patterns.md](./patterns.md) - Common use cases and examples
88
+
89
+ **Troubleshooting?** Jump to [gotchas.md](./gotchas.md)
90
+
91
+ ## In This Reference
92
+
93
+ - [configuration.md](./configuration.md) - wrangler config, env-specific schedules, Green Compute
94
+ - [api.md](./api.md) - ScheduledController, noRetry(), waitUntil, testing patterns
95
+ - [patterns.md](./patterns.md) - Use cases, monitoring, queue integration, Durable Objects
96
+ - [gotchas.md](./gotchas.md) - Timezone issues, idempotency, security, testing
97
+
98
+ ## See Also
99
+
100
+ - [workflows](../workflows/) - Alternative for long-running scheduled tasks
101
+ - [workers](../workers/) - Worker runtime documentation
@@ -0,0 +1,224 @@
1
+ # Cron Triggers API
2
+
3
+ ## Basic Handler
4
+
5
+ ```typescript
6
+ export default {
7
+ async scheduled(controller: ScheduledController, env: Env, ctx: ExecutionContext): Promise<void> {
8
+ console.log('Cron executed:', new Date(controller.scheduledTime))
9
+ },
10
+ }
11
+ ```
12
+
13
+ **JavaScript:** Same signature without types
14
+ **Python:** `class Default(WorkerEntrypoint): async def scheduled(self, controller, env, ctx)`
15
+
16
+ ## ScheduledController
17
+
18
+ ```typescript
19
+ interface ScheduledController {
20
+ scheduledTime: number // Unix ms when scheduled to run
21
+ cron: string // Expression that triggered (e.g., "*/5 * * * *")
22
+ type: string // Always "scheduled"
23
+ noRetry(): void // Prevent automatic retry on failure
24
+ }
25
+ ```
26
+
27
+ **Prevent retry on failure:**
28
+
29
+ ```typescript
30
+ export default {
31
+ async scheduled(controller, env, ctx) {
32
+ try {
33
+ await riskyOperation(env)
34
+ } catch (error) {
35
+ // Don't retry - failure is expected/acceptable
36
+ controller.noRetry()
37
+ console.error('Operation failed, not retrying:', error)
38
+ }
39
+ },
40
+ }
41
+ ```
42
+
43
+ **When to use noRetry():**
44
+
45
+ - External API failures outside your control (avoid hammering failed services)
46
+ - Rate limit errors (retry would fail again immediately)
47
+ - Duplicate execution detected (idempotency check failed)
48
+ - Non-critical operations where skip is acceptable (analytics, caching)
49
+ - Validation errors that won't resolve on retry
50
+
51
+ ## Handler Parameters
52
+
53
+ **`controller: ScheduledController`**
54
+
55
+ - Access cron expression and scheduled time
56
+
57
+ **`env: Env`**
58
+
59
+ - All bindings: KV, R2, D1, secrets, service bindings
60
+
61
+ **`ctx: ExecutionContext`**
62
+
63
+ - `ctx.waitUntil(promise)` - Extend execution for async tasks (logging, cleanup, external APIs)
64
+ - First `waitUntil` failure recorded in Cron Events
65
+
66
+ ## Multiple Schedules
67
+
68
+ ```typescript
69
+ export default {
70
+ async scheduled(controller, env, ctx) {
71
+ switch (controller.cron) {
72
+ case '*/3 * * * *':
73
+ ctx.waitUntil(updateRecentData(env))
74
+ break
75
+ case '0 * * * *':
76
+ ctx.waitUntil(processHourlyAggregation(env))
77
+ break
78
+ case '0 2 * * *':
79
+ ctx.waitUntil(performDailyMaintenance(env))
80
+ break
81
+ default:
82
+ console.warn(`Unhandled: ${controller.cron}`)
83
+ }
84
+ },
85
+ }
86
+ ```
87
+
88
+ ## ctx.waitUntil Usage
89
+
90
+ ```typescript
91
+ export default {
92
+ async scheduled(controller, env, ctx) {
93
+ const data = await fetchCriticalData() // Critical path
94
+
95
+ // Non-blocking background tasks
96
+ ctx.waitUntil(
97
+ Promise.all([
98
+ logToAnalytics(data),
99
+ cleanupOldRecords(env.DB),
100
+ notifyWebhook(env.WEBHOOK_URL, data),
101
+ ])
102
+ )
103
+ },
104
+ }
105
+ ```
106
+
107
+ ## Workflow Integration
108
+
109
+ ```typescript
110
+ import { WorkflowEntrypoint } from 'cloudflare:workers'
111
+
112
+ export class DataProcessingWorkflow extends WorkflowEntrypoint {
113
+ async run(event, step) {
114
+ const data = await step.do('fetch-data', () => fetchLargeDataset())
115
+ const processed = await step.do('process-data', () => processDataset(data))
116
+ await step.do('store-results', () => storeResults(processed))
117
+ }
118
+ }
119
+
120
+ export default {
121
+ async scheduled(controller, env, ctx) {
122
+ const instance = await env.MY_WORKFLOW.create({
123
+ params: { scheduledTime: controller.scheduledTime, cron: controller.cron },
124
+ })
125
+ console.log(`Started workflow: ${instance.id}`)
126
+ },
127
+ }
128
+ ```
129
+
130
+ ## Testing Handler
131
+
132
+ **Local development (/\_\_scheduled endpoint):**
133
+
134
+ ```bash
135
+ # Start dev server
136
+ npx wrangler dev
137
+
138
+ # Trigger any cron
139
+ curl "http://localhost:8787/__scheduled?cron=*/5+*+*+*+*"
140
+
141
+ # Trigger specific cron with custom time
142
+ curl "http://localhost:8787/__scheduled?cron=0+2+*+*+*&scheduledTime=1704067200000"
143
+ ```
144
+
145
+ **Query parameters:**
146
+
147
+ - `cron` - Required. URL-encoded cron expression (use `+` for spaces)
148
+ - `scheduledTime` - Optional. Unix timestamp in milliseconds (defaults to current time)
149
+
150
+ **Production security:** The `/__scheduled` endpoint is available in production and can be triggered by anyone. Block it or implement authentication - see [gotchas.md](./gotchas.md#security-concerns)
151
+
152
+ **Unit testing (Vitest):**
153
+
154
+ ```typescript
155
+ // test/scheduled.test.ts
156
+ import { describe, it, expect } from 'vitest'
157
+ import { env } from 'cloudflare:test'
158
+ import worker from '../src/index'
159
+
160
+ describe('Scheduled Handler', () => {
161
+ it('processes scheduled event', async () => {
162
+ const controller = {
163
+ scheduledTime: Date.now(),
164
+ cron: '*/5 * * * *',
165
+ type: 'scheduled' as const,
166
+ noRetry: () => {},
167
+ }
168
+ const ctx = { waitUntil: (p: Promise<any>) => p, passThroughOnException: () => {} }
169
+ await worker.scheduled(controller, env, ctx)
170
+ expect(await env.MY_KV.get('last_run')).toBeDefined()
171
+ })
172
+
173
+ it('handles multiple crons', async () => {
174
+ const ctx = { waitUntil: () => {}, passThroughOnException: () => {} }
175
+ await worker.scheduled(
176
+ { scheduledTime: Date.now(), cron: '*/5 * * * *', type: 'scheduled', noRetry: () => {} },
177
+ env,
178
+ ctx
179
+ )
180
+ expect(await env.MY_KV.get('last_type')).toBe('frequent')
181
+ })
182
+ })
183
+ ```
184
+
185
+ ## Error Handling
186
+
187
+ **Automatic retries:**
188
+
189
+ - Failed cron executions are retried automatically unless `noRetry()` is called
190
+ - Retry happens after a delay (typically minutes)
191
+ - Only first `waitUntil()` failure is recorded in Cron Events
192
+
193
+ **Best practices:**
194
+
195
+ ```typescript
196
+ export default {
197
+ async scheduled(controller, env, ctx) {
198
+ try {
199
+ await criticalOperation(env)
200
+ } catch (error) {
201
+ // Log error details
202
+ console.error('Cron failed:', {
203
+ cron: controller.cron,
204
+ scheduledTime: controller.scheduledTime,
205
+ error: error.message,
206
+ stack: error.stack,
207
+ })
208
+
209
+ // Decide: retry or skip
210
+ if (error.message.includes('rate limit')) {
211
+ controller.noRetry() // Skip retry for rate limits
212
+ }
213
+ // Otherwise allow automatic retry
214
+ throw error
215
+ }
216
+ },
217
+ }
218
+ ```
219
+
220
+ ## See Also
221
+
222
+ - [README.md](./README.md) - Overview
223
+ - [patterns.md](./patterns.md) - Use cases, examples
224
+ - [gotchas.md](./gotchas.md) - Common errors, testing issues
@@ -0,0 +1,190 @@
1
+ # Cron Triggers Configuration
2
+
3
+ ## wrangler.jsonc
4
+
5
+ ```jsonc
6
+ {
7
+ "$schema": "./node_modules/wrangler/config-schema.json",
8
+ "name": "my-cron-worker",
9
+ "main": "src/index.ts",
10
+ "compatibility_date": "2025-01-01", // Use current date for new projects
11
+
12
+ "triggers": {
13
+ "crons": [
14
+ "*/5 * * * *", // Every 5 minutes
15
+ "0 */2 * * *", // Every 2 hours
16
+ "0 9 * * MON-FRI", // Weekdays at 9am UTC
17
+ "0 2 1 * *", // Monthly on 1st at 2am UTC
18
+ ],
19
+ },
20
+ }
21
+ ```
22
+
23
+ ## Green Compute (Beta)
24
+
25
+ Schedule crons during low-carbon periods for carbon-aware execution:
26
+
27
+ ```jsonc
28
+ {
29
+ "name": "eco-cron-worker",
30
+ "triggers": {
31
+ "crons": ["0 2 * * *"],
32
+ },
33
+ "placement": {
34
+ "mode": "smart", // Runs during low-carbon periods
35
+ },
36
+ }
37
+ ```
38
+
39
+ **Modes:**
40
+
41
+ - `"smart"` - Carbon-aware scheduling (may delay up to 24h for optimal window)
42
+ - Default (no placement config) - Standard scheduling (no delay)
43
+
44
+ **How it works:**
45
+
46
+ - Cloudflare delays execution until grid carbon intensity is lower
47
+ - Maximum delay: 24 hours from scheduled time
48
+ - Ideal for batch jobs with flexible timing requirements
49
+
50
+ **Use cases:**
51
+
52
+ - Nightly data processing and ETL pipelines
53
+ - Weekly/monthly report generation
54
+ - Database backups and maintenance
55
+ - Analytics aggregation
56
+ - ML model training
57
+
58
+ **Not suitable for:**
59
+
60
+ - Time-sensitive operations (SLA requirements)
61
+ - User-facing features requiring immediate execution
62
+ - Real-time monitoring and alerting
63
+ - Compliance tasks with strict time windows
64
+
65
+ ## Environment-Specific Schedules
66
+
67
+ ```jsonc
68
+ {
69
+ "name": "my-cron-worker",
70
+ "triggers": {
71
+ "crons": ["0 */6 * * *"], // Prod: every 6 hours
72
+ },
73
+ "env": {
74
+ "staging": {
75
+ "triggers": {
76
+ "crons": ["*/15 * * * *"], // Staging: every 15min
77
+ },
78
+ },
79
+ "dev": {
80
+ "triggers": {
81
+ "crons": ["*/5 * * * *"], // Dev: every 5min
82
+ },
83
+ },
84
+ },
85
+ }
86
+ ```
87
+
88
+ ## Schedule Format
89
+
90
+ **Structure:** `minute hour day-of-month month day-of-week`
91
+
92
+ **Special chars:** `*` (any), `,` (list), `-` (range), `/` (step), `L` (last), `W` (weekday), `#` (nth)
93
+
94
+ ## Managing Triggers
95
+
96
+ **Remove all:** `"triggers": { "crons": [] }`
97
+ **Preserve existing:** Omit `"triggers"` field entirely
98
+
99
+ ## Deployment
100
+
101
+ ```bash
102
+ # Deploy with config crons
103
+ npx wrangler deploy
104
+
105
+ # Deploy specific environment
106
+ npx wrangler deploy --env production
107
+
108
+ # View deployments
109
+ npx wrangler deployments list
110
+ ```
111
+
112
+ **⚠️ Changes take up to 15 minutes to propagate globally**
113
+
114
+ ## API Management
115
+
116
+ **Get triggers:**
117
+
118
+ ```bash
119
+ curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/schedules" \
120
+ -H "Authorization: Bearer {api_token}"
121
+ ```
122
+
123
+ **Update triggers:**
124
+
125
+ ```bash
126
+ curl -X PUT "https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/schedules" \
127
+ -H "Authorization: Bearer {api_token}" \
128
+ -H "Content-Type: application/json" \
129
+ -d '{"crons": ["*/5 * * * *", "0 2 * * *"]}'
130
+ ```
131
+
132
+ **Delete all:**
133
+
134
+ ```bash
135
+ curl -X PUT "https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/schedules" \
136
+ -H "Authorization: Bearer {api_token}" \
137
+ -H "Content-Type: application/json" \
138
+ -d '{"crons": []}'
139
+ ```
140
+
141
+ ## Combining Multiple Workers
142
+
143
+ For complex schedules, use multiple workers:
144
+
145
+ ```jsonc
146
+ // worker-frequent.jsonc
147
+ {
148
+ "name": "data-sync-frequent",
149
+ "triggers": { "crons": ["*/5 * * * *"] }
150
+ }
151
+
152
+ // worker-daily.jsonc
153
+ {
154
+ "name": "reports-daily",
155
+ "triggers": { "crons": ["0 2 * * *"] },
156
+ "placement": { "mode": "smart" }
157
+ }
158
+
159
+ // worker-weekly.jsonc
160
+ {
161
+ "name": "cleanup-weekly",
162
+ "triggers": { "crons": ["0 3 * * SUN"] }
163
+ }
164
+ ```
165
+
166
+ **Benefits:**
167
+
168
+ - Separate CPU limits per worker
169
+ - Independent error isolation
170
+ - Different Green Compute policies
171
+ - Easier to maintain and debug
172
+
173
+ ## Validation
174
+
175
+ **Test cron syntax:**
176
+
177
+ - [crontab.guru](https://crontab.guru/) - Interactive validator
178
+ - Wrangler validates on deploy but won't catch logic errors
179
+
180
+ **Common mistakes:**
181
+
182
+ - `0 0 * * *` runs daily at midnight UTC, not your local timezone
183
+ - `*/60 * * * *` is invalid (use `0 * * * *` for hourly)
184
+ - `0 2 31 * *` only runs on months with 31 days
185
+
186
+ ## See Also
187
+
188
+ - [README.md](./README.md) - Overview, quick start
189
+ - [api.md](./api.md) - Handler implementation
190
+ - [patterns.md](./patterns.md) - Multi-cron routing examples