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,164 @@
1
+ ## Best Practices
2
+
3
+ ### 1. Use Selective Worker-First Routing
4
+
5
+ Instead of `run_worker_first = true`, use array patterns:
6
+
7
+ ```jsonc
8
+ {
9
+ "assets": {
10
+ "run_worker_first": [
11
+ "/api/*", // API routes
12
+ "/admin/*", // Admin area
13
+ "!/admin/assets/*", // Except admin assets
14
+ ],
15
+ },
16
+ }
17
+ ```
18
+
19
+ **Benefits:**
20
+
21
+ - Reduces Worker invocations
22
+ - Lowers costs
23
+ - Improves asset delivery performance
24
+
25
+ ### 2. Leverage Navigation Request Optimization
26
+
27
+ For SPAs, use `compatibility_date = "2025-04-01"` or later:
28
+
29
+ ```jsonc
30
+ {
31
+ "compatibility_date": "2025-04-01",
32
+ "assets": {
33
+ "not_found_handling": "single-page-application",
34
+ },
35
+ }
36
+ ```
37
+
38
+ Navigation requests skip Worker invocation, reducing costs.
39
+
40
+ ### 3. Type Safety with Bindings
41
+
42
+ Always type your environment:
43
+
44
+ ```typescript
45
+ interface Env {
46
+ ASSETS: Fetcher
47
+ }
48
+ ```
49
+
50
+ ## Common Errors
51
+
52
+ ### "Asset not found"
53
+
54
+ **Cause:** Asset not in assets directory, wrong path, or assets not deployed
55
+ **Solution:** Verify asset exists, check path case-sensitivity, redeploy if needed
56
+
57
+ ### "Worker not invoked for asset"
58
+
59
+ **Cause:** Asset served directly, `run_worker_first` not configured
60
+ **Solution:** Configure `run_worker_first` patterns to include asset routes (see configuration.md:66-106)
61
+
62
+ ### "429 Too Many Requests on free tier"
63
+
64
+ **Cause:** `run_worker_first` patterns invoke Worker for many requests, hitting free tier limits (100k req/day)
65
+ **Solution:** Use more selective patterns with negative exclusions, or upgrade to paid plan
66
+
67
+ ### "Smart Placement increases latency"
68
+
69
+ **Cause:** `run_worker_first=true` + Smart Placement routes all requests through single smart-placed location
70
+ **Solution:** Use selective patterns (array syntax) or disable Smart Placement for asset-heavy apps
71
+
72
+ ### "CF-Cache-Status header unreliable"
73
+
74
+ **Cause:** Header is probabilistically added for privacy reasons
75
+ **Solution:** Don't rely on `CF-Cache-Status` for critical routing logic. Use other signals (ETag, age).
76
+
77
+ ### "JWT expired during deployment"
78
+
79
+ **Cause:** Large asset deployments exceed JWT token lifetime
80
+ **Solution:** Update to Wrangler 4.34.0+ (automatic token refresh), or reduce asset count
81
+
82
+ ### "Cannot use 'assets' with 'site'"
83
+
84
+ **Cause:** Legacy `site` config conflicts with new `assets` config
85
+ **Solution:** Migrate from `site` to `assets` (see configuration.md). Remove `site` key from wrangler.jsonc.
86
+
87
+ ### "Assets not updating after deployment"
88
+
89
+ **Cause:** Browser or CDN cache serving old assets
90
+ **Solution:**
91
+
92
+ - Hard refresh browser (Cmd+Shift+R / Ctrl+F5)
93
+ - Use cache-busting (hashed filenames)
94
+ - Verify deployment completed: `wrangler tail`
95
+
96
+ ## Limits
97
+
98
+ | Resource/Limit | Free | Paid | Notes |
99
+ | ------------------ | --------- | ----------- | ----------------------------------------- |
100
+ | Max asset size | 25 MiB | 25 MiB | Per file |
101
+ | Total assets | 20,000 | **100,000** | Requires Wrangler 4.34.0+ (Sep 2025) |
102
+ | Worker invocations | 100k/day | 10M/month | Optimize with `run_worker_first` patterns |
103
+ | Asset storage | Unlimited | Unlimited | Included |
104
+
105
+ ### Version Requirements
106
+
107
+ | Feature | Minimum Wrangler Version |
108
+ | ----------------------- | ---------------------------------------- |
109
+ | 100k file limit (paid) | 4.34.0 |
110
+ | Vite plugin | 4.0.0 + @cloudflare/vite-plugin 1.0.0 |
111
+ | Navigation optimization | 4.0.0 + compatibility_date: "2025-04-01" |
112
+
113
+ ## Performance Tips
114
+
115
+ ### 1. Use Hashed Filenames
116
+
117
+ Enable long-term caching with content-hashed filenames:
118
+
119
+ ```
120
+ app.a3b2c1d4.js
121
+ styles.e5f6g7h8.css
122
+ ```
123
+
124
+ Most bundlers (Vite, Webpack, Parcel) do this automatically.
125
+
126
+ ### 2. Minimize Worker Invocations
127
+
128
+ Serve assets directly when possible:
129
+
130
+ ```jsonc
131
+ {
132
+ "assets": {
133
+ // Only invoke Worker for dynamic routes
134
+ "run_worker_first": ["/api/*", "/auth/*"],
135
+ },
136
+ }
137
+ ```
138
+
139
+ ### 3. Leverage Browser Cache
140
+
141
+ Set appropriate `Cache-Control` headers:
142
+
143
+ ```typescript
144
+ // Versioned assets
145
+ 'Cache-Control': 'public, max-age=31536000, immutable'
146
+
147
+ // HTML (revalidate often)
148
+ 'Cache-Control': 'public, max-age=0, must-revalidate'
149
+ ```
150
+
151
+ See patterns.md:169-189 for implementation.
152
+
153
+ ### 4. Use .assetsignore
154
+
155
+ Reduce upload time by excluding unnecessary files:
156
+
157
+ ```
158
+ *.map
159
+ *.md
160
+ .DS_Store
161
+ node_modules/
162
+ ```
163
+
164
+ See configuration.md:107-126 for details.
@@ -0,0 +1,189 @@
1
+ ### Common Patterns
2
+
3
+ **1. Forward request to assets:**
4
+
5
+ ```typescript
6
+ export default {
7
+ async fetch(request: Request, env: Env): Promise<Response> {
8
+ return env.ASSETS.fetch(request)
9
+ },
10
+ }
11
+ ```
12
+
13
+ **2. Fetch specific asset by path:**
14
+
15
+ ```typescript
16
+ const response = await env.ASSETS.fetch('https://assets.local/logo.png')
17
+ ```
18
+
19
+ **3. Modify request before fetching asset:**
20
+
21
+ ```typescript
22
+ const url = new URL(request.url)
23
+ url.pathname = '/index.html'
24
+ return env.ASSETS.fetch(new Request(url, request))
25
+ ```
26
+
27
+ **4. Transform asset response:**
28
+
29
+ ```typescript
30
+ const response = await env.ASSETS.fetch(request)
31
+ const modifiedResponse = new Response(response.body, response)
32
+ modifiedResponse.headers.set('X-Custom-Header', 'value')
33
+ modifiedResponse.headers.set('Cache-Control', 'public, max-age=3600')
34
+ return modifiedResponse
35
+ ```
36
+
37
+ **5. Conditional asset serving:**
38
+
39
+ ```typescript
40
+ export default {
41
+ async fetch(request: Request, env: Env): Promise<Response> {
42
+ const url = new URL(request.url)
43
+ if (url.pathname === '/') {
44
+ return env.ASSETS.fetch('/index.html')
45
+ }
46
+ return env.ASSETS.fetch(request)
47
+ },
48
+ }
49
+ ```
50
+
51
+ **6. SPA with API routes:**
52
+
53
+ Most common full-stack pattern - static SPA with backend API:
54
+
55
+ ```typescript
56
+ export default {
57
+ async fetch(request: Request, env: Env): Promise<Response> {
58
+ const url = new URL(request.url)
59
+ if (url.pathname.startsWith('/api/')) {
60
+ return handleAPI(request, env)
61
+ }
62
+ return env.ASSETS.fetch(request)
63
+ },
64
+ }
65
+
66
+ async function handleAPI(request: Request, env: Env): Promise<Response> {
67
+ return new Response(JSON.stringify({ status: 'ok' }), {
68
+ headers: { 'Content-Type': 'application/json' },
69
+ })
70
+ }
71
+ ```
72
+
73
+ **Config:** Set `run_worker_first: ["/api/*"]` (see configuration.md:66-106)
74
+
75
+ **7. Auth gating for protected assets:**
76
+
77
+ ```typescript
78
+ export default {
79
+ async fetch(request: Request, env: Env): Promise<Response> {
80
+ const url = new URL(request.url)
81
+ if (url.pathname.startsWith('/admin/')) {
82
+ const session = await validateSession(request, env)
83
+ if (!session) {
84
+ return Response.redirect('/login', 302)
85
+ }
86
+ }
87
+ return env.ASSETS.fetch(request)
88
+ },
89
+ }
90
+ ```
91
+
92
+ **Config:** Set `run_worker_first: ["/admin/*"]`
93
+
94
+ **8. Custom headers for security:**
95
+
96
+ ```typescript
97
+ export default {
98
+ async fetch(request: Request, env: Env): Promise<Response> {
99
+ const response = await env.ASSETS.fetch(request)
100
+ const secureResponse = new Response(response.body, response)
101
+ secureResponse.headers.set('X-Frame-Options', 'DENY')
102
+ secureResponse.headers.set('X-Content-Type-Options', 'nosniff')
103
+ secureResponse.headers.set('Content-Security-Policy', "default-src 'self'")
104
+ return secureResponse
105
+ },
106
+ }
107
+ ```
108
+
109
+ **9. A/B testing via cookies:**
110
+
111
+ ```typescript
112
+ export default {
113
+ async fetch(request: Request, env: Env): Promise<Response> {
114
+ const cookies = request.headers.get('Cookie') || ''
115
+ const variant = cookies.includes('variant=b') ? 'b' : 'a'
116
+ const url = new URL(request.url)
117
+ if (url.pathname === '/') {
118
+ return env.ASSETS.fetch(`/index-${variant}.html`)
119
+ }
120
+ return env.ASSETS.fetch(request)
121
+ },
122
+ }
123
+ ```
124
+
125
+ **10. Locale-based routing:**
126
+
127
+ ```typescript
128
+ export default {
129
+ async fetch(request: Request, env: Env): Promise<Response> {
130
+ const locale = request.headers.get('Accept-Language')?.split(',')[0] || 'en'
131
+ const url = new URL(request.url)
132
+ if (url.pathname === '/') {
133
+ return env.ASSETS.fetch(`/${locale}/index.html`)
134
+ }
135
+ if (!url.pathname.startsWith(`/${locale}/`)) {
136
+ url.pathname = `/${locale}${url.pathname}`
137
+ }
138
+ return env.ASSETS.fetch(url)
139
+ },
140
+ }
141
+ ```
142
+
143
+ **11. OAuth callback handling:**
144
+
145
+ ```typescript
146
+ export default {
147
+ async fetch(request: Request, env: Env): Promise<Response> {
148
+ const url = new URL(request.url)
149
+ if (url.pathname === '/auth/callback') {
150
+ const code = url.searchParams.get('code')
151
+ if (code) {
152
+ const session = await exchangeCode(code, env)
153
+ return new Response(null, {
154
+ status: 302,
155
+ headers: {
156
+ Location: '/',
157
+ 'Set-Cookie': `session=${session}; HttpOnly; Secure; SameSite=Lax`,
158
+ },
159
+ })
160
+ }
161
+ }
162
+ return env.ASSETS.fetch(request)
163
+ },
164
+ }
165
+ ```
166
+
167
+ **Config:** Set `run_worker_first: ["/auth/*"]`
168
+
169
+ **12. Cache control override:**
170
+
171
+ ```typescript
172
+ export default {
173
+ async fetch(request: Request, env: Env): Promise<Response> {
174
+ const response = await env.ASSETS.fetch(request)
175
+ const url = new URL(request.url)
176
+ // Immutable assets (hashed filenames)
177
+ if (/\.[a-f0-9]{8,}\.(js|css|png|jpg)$/.test(url.pathname)) {
178
+ return new Response(response.body, {
179
+ ...response,
180
+ headers: {
181
+ ...Object.fromEntries(response.headers),
182
+ 'Cache-Control': 'public, max-age=31536000, immutable',
183
+ },
184
+ })
185
+ }
186
+ return response
187
+ },
188
+ }
189
+ ```
@@ -0,0 +1,123 @@
1
+ # Cloudflare Stream
2
+
3
+ Serverless live and on-demand video streaming platform with one API.
4
+
5
+ ## Overview
6
+
7
+ Cloudflare Stream provides video upload, storage, encoding, and delivery without managing infrastructure. Runs on Cloudflare's global network.
8
+
9
+ ### Key Features
10
+
11
+ - **On-demand video**: Upload, encode, store, deliver
12
+ - **Live streaming**: RTMPS/SRT ingestion with ABR
13
+ - **Direct creator uploads**: End users upload without API keys
14
+ - **Signed URLs**: Token-based access control
15
+ - **Analytics**: Server-side metrics via GraphQL
16
+ - **Webhooks**: Processing notifications
17
+ - **Captions**: Upload or AI-generate subtitles
18
+ - **Watermarks**: Apply branding to videos
19
+ - **Downloads**: Enable MP4 offline viewing
20
+
21
+ ## Core Concepts
22
+
23
+ ### Video Upload Methods
24
+
25
+ 1. **API Upload (TUS protocol)**: Direct server upload
26
+ 2. **Upload from URL**: Import from external source
27
+ 3. **Direct Creator Uploads**: User-generated content (recommended)
28
+
29
+ ### Playback Options
30
+
31
+ 1. **Stream Player (iframe)**: Built-in, optimized player
32
+ 2. **Custom Player (HLS/DASH)**: Video.js, HLS.js integration
33
+ 3. **Thumbnails**: Static or animated previews
34
+
35
+ ### Access Control
36
+
37
+ - **Public**: No restrictions
38
+ - **requireSignedURLs**: Token-based access
39
+ - **allowedOrigins**: Domain restrictions
40
+ - **Access Rules**: Geo/IP restrictions in tokens
41
+
42
+ ### Live Streaming
43
+
44
+ - RTMPS/SRT ingest from OBS, FFmpeg
45
+ - Automatic recording to on-demand
46
+ - Simulcast to YouTube, Twitch, etc.
47
+ - WebRTC support for browser streaming
48
+
49
+ ## Quick Start
50
+
51
+ **Upload video via API**
52
+
53
+ ```bash
54
+ curl -X POST \
55
+ "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/copy" \
56
+ -H "Authorization: Bearer <TOKEN>" \
57
+ -H "Content-Type: application/json" \
58
+ -d '{"url": "https://example.com/video.mp4"}'
59
+ ```
60
+
61
+ **Embed player**
62
+
63
+ ```html
64
+ <iframe
65
+ src="https://customer-<CODE>.cloudflarestream.com/<VIDEO_ID>/iframe"
66
+ style="border: none;"
67
+ height="720"
68
+ width="1280"
69
+ allow="accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture;"
70
+ allowfullscreen="true"
71
+ ></iframe>
72
+ ```
73
+
74
+ **Create live input**
75
+
76
+ ```bash
77
+ curl -X POST \
78
+ "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs" \
79
+ -H "Authorization: Bearer <TOKEN>" \
80
+ -H "Content-Type: application/json" \
81
+ -d '{"recording": {"mode": "automatic"}}'
82
+ ```
83
+
84
+ ## Limits
85
+
86
+ - Max file size: 30 GB
87
+ - Max frame rate: 60 fps (recommended)
88
+ - Supported formats: MP4, MKV, MOV, AVI, FLV, MPEG-2 TS/PS, MXF, LXF, GXF, 3GP, WebM, MPG, QuickTime
89
+
90
+ ## Pricing
91
+
92
+ - $5/1000 min stored
93
+ - $1/1000 min delivered
94
+
95
+ ## Resources
96
+
97
+ - Dashboard: https://dash.cloudflare.com/?to=/:account/stream
98
+ - API Docs: https://developers.cloudflare.com/api/resources/stream/
99
+ - Stream Docs: https://developers.cloudflare.com/stream/
100
+
101
+ ## Reading Order
102
+
103
+ | Order | File | Purpose | When to Use |
104
+ | ----- | -------------------------------------- | ---------------------------------- | ----------------------------- |
105
+ | 1 | [configuration.md](./configuration.md) | Setup SDKs, env vars, signing keys | Starting new project |
106
+ | 2 | [api.md](./api.md) | On-demand video APIs | Implementing uploads/playback |
107
+ | 3 | [api-live.md](./api-live.md) | Live streaming APIs | Building live streaming |
108
+ | 4 | [patterns.md](./patterns.md) | Full-stack flows, TUS, JWT signing | Implementing workflows |
109
+ | 5 | [gotchas.md](./gotchas.md) | Errors, limits, troubleshooting | Debugging issues |
110
+
111
+ ## In This Reference
112
+
113
+ - [configuration.md](./configuration.md) - Setup, environment variables, wrangler config
114
+ - [api.md](./api.md) - On-demand video upload, playback, management APIs
115
+ - [api-live.md](./api-live.md) - Live streaming (RTMPS/SRT/WebRTC), simulcast
116
+ - [patterns.md](./patterns.md) - Full-stack flows, state management, best practices
117
+ - [gotchas.md](./gotchas.md) - Error codes, troubleshooting, limits
118
+
119
+ ## See Also
120
+
121
+ - [workers](../workers/) - Deploy Stream APIs in Workers
122
+ - [pages](../pages/) - Integrate Stream with Pages
123
+ - [workers-ai](../workers-ai/) - AI-generate captions
@@ -0,0 +1,202 @@
1
+ # Stream Live Streaming API
2
+
3
+ Live input creation, status checking, simulcast, and WebRTC streaming.
4
+
5
+ ## Create Live Input
6
+
7
+ ### Using Cloudflare SDK
8
+
9
+ ```typescript
10
+ import Cloudflare from 'cloudflare'
11
+
12
+ const client = new Cloudflare({ apiToken: env.CF_API_TOKEN })
13
+
14
+ const liveInput = await client.stream.liveInputs.create({
15
+ account_id: env.CF_ACCOUNT_ID,
16
+ recording: { mode: 'automatic', timeoutSeconds: 30 },
17
+ deleteRecordingAfterDays: 30,
18
+ })
19
+
20
+ // Returns: { uid, rtmps, srt, webRTC }
21
+ ```
22
+
23
+ ### Raw fetch API
24
+
25
+ ```typescript
26
+ async function createLiveInput(accountId: string, apiToken: string) {
27
+ const response = await fetch(
28
+ `https://api.cloudflare.com/client/v4/accounts/${accountId}/stream/live_inputs`,
29
+ {
30
+ method: 'POST',
31
+ headers: { Authorization: `Bearer ${apiToken}`, 'Content-Type': 'application/json' },
32
+ body: JSON.stringify({
33
+ recording: { mode: 'automatic', timeoutSeconds: 30 },
34
+ deleteRecordingAfterDays: 30,
35
+ }),
36
+ }
37
+ )
38
+ const { result } = await response.json()
39
+ return {
40
+ uid: result.uid,
41
+ rtmps: { url: result.rtmps.url, streamKey: result.rtmps.streamKey },
42
+ srt: { url: result.srt.url, streamId: result.srt.streamId, passphrase: result.srt.passphrase },
43
+ webRTC: result.webRTC,
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Check Live Status
49
+
50
+ ```typescript
51
+ async function getLiveStatus(accountId: string, liveInputId: string, apiToken: string) {
52
+ const response = await fetch(
53
+ `https://api.cloudflare.com/client/v4/accounts/${accountId}/stream/live_inputs/${liveInputId}`,
54
+ { headers: { Authorization: `Bearer ${apiToken}` } }
55
+ )
56
+ const { result } = await response.json()
57
+ return {
58
+ isLive: result.status?.current?.state === 'connected',
59
+ recording: result.recording,
60
+ status: result.status,
61
+ }
62
+ }
63
+ ```
64
+
65
+ ## Simulcast (Live Outputs)
66
+
67
+ ### Create Output
68
+
69
+ ```typescript
70
+ async function createLiveOutput(
71
+ accountId: string,
72
+ liveInputId: string,
73
+ apiToken: string,
74
+ outputUrl: string,
75
+ streamKey: string
76
+ ) {
77
+ return fetch(
78
+ `https://api.cloudflare.com/client/v4/accounts/${accountId}/stream/live_inputs/${liveInputId}/outputs`,
79
+ {
80
+ method: 'POST',
81
+ headers: { Authorization: `Bearer ${apiToken}`, 'Content-Type': 'application/json' },
82
+ body: JSON.stringify({
83
+ url: `${outputUrl}/${streamKey}`,
84
+ enabled: true,
85
+ streamKey, // For platforms like YouTube, Twitch
86
+ }),
87
+ }
88
+ ).then((r) => r.json())
89
+ }
90
+ ```
91
+
92
+ ### Example: Simulcast to YouTube + Twitch
93
+
94
+ ```typescript
95
+ const liveInput = await createLiveInput(accountId, apiToken)
96
+
97
+ // Add YouTube output
98
+ await createLiveOutput(
99
+ accountId,
100
+ liveInput.uid,
101
+ apiToken,
102
+ 'rtmp://a.rtmp.youtube.com/live2',
103
+ 'your-youtube-stream-key'
104
+ )
105
+
106
+ // Add Twitch output
107
+ await createLiveOutput(
108
+ accountId,
109
+ liveInput.uid,
110
+ apiToken,
111
+ 'rtmp://live.twitch.tv/app',
112
+ 'your-twitch-stream-key'
113
+ )
114
+ ```
115
+
116
+ ## WebRTC Streaming (WHIP/WHEP)
117
+
118
+ ### Browser to Stream (WHIP)
119
+
120
+ ```typescript
121
+ async function startWebRTCBroadcast(liveInputId: string) {
122
+ const pc = new RTCPeerConnection()
123
+
124
+ // Add local media tracks
125
+ const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true })
126
+ stream.getTracks().forEach((track) => pc.addTrack(track, stream))
127
+
128
+ // Create offer
129
+ const offer = await pc.createOffer()
130
+ await pc.setLocalDescription(offer)
131
+
132
+ // Send to Stream via WHIP
133
+ const response = await fetch(
134
+ `https://customer-<CODE>.cloudflarestream.com/${liveInputId}/webRTC/publish`,
135
+ {
136
+ method: 'POST',
137
+ headers: { 'Content-Type': 'application/sdp' },
138
+ body: offer.sdp,
139
+ }
140
+ )
141
+
142
+ const answer = await response.text()
143
+ await pc.setRemoteDescription({ type: 'answer', sdp: answer })
144
+ }
145
+ ```
146
+
147
+ ### Stream to Browser (WHEP)
148
+
149
+ ```typescript
150
+ async function playWebRTCStream(videoId: string) {
151
+ const pc = new RTCPeerConnection()
152
+
153
+ pc.addTransceiver('video', { direction: 'recvonly' })
154
+ pc.addTransceiver('audio', { direction: 'recvonly' })
155
+
156
+ const offer = await pc.createOffer()
157
+ await pc.setLocalDescription(offer)
158
+
159
+ const response = await fetch(
160
+ `https://customer-<CODE>.cloudflarestream.com/${videoId}/webRTC/play`,
161
+ {
162
+ method: 'POST',
163
+ headers: { 'Content-Type': 'application/sdp' },
164
+ body: offer.sdp,
165
+ }
166
+ )
167
+
168
+ const answer = await response.text()
169
+ await pc.setRemoteDescription({ type: 'answer', sdp: answer })
170
+
171
+ return pc
172
+ }
173
+ ```
174
+
175
+ ## Recording Settings
176
+
177
+ | Mode | Behavior |
178
+ | ---------------- | -------------------------------------------- |
179
+ | `automatic` | Record all live streams |
180
+ | `off` | No recording |
181
+ | `timeoutSeconds` | Stop recording after N seconds of inactivity |
182
+
183
+ ```typescript
184
+ const recordingConfig = {
185
+ mode: 'automatic',
186
+ timeoutSeconds: 30, // Auto-stop 30s after stream ends
187
+ requireSignedURLs: true, // Require token for VOD playback
188
+ allowedOrigins: ['https://yourdomain.com'],
189
+ }
190
+ ```
191
+
192
+ ## In This Reference
193
+
194
+ - [README.md](./README.md) - Overview and quick start
195
+ - [api.md](./api.md) - On-demand video APIs
196
+ - [configuration.md](./configuration.md) - Setup and config
197
+ - [patterns.md](./patterns.md) - Full-stack flows, best practices
198
+ - [gotchas.md](./gotchas.md) - Error codes, troubleshooting
199
+
200
+ ## See Also
201
+
202
+ - [workers](../workers/) - Deploy live APIs in Workers