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,104 @@
1
+ # Cloudflare Pages Functions
2
+
3
+ Serverless functions on Cloudflare Pages using Workers runtime. Full-stack dev with file-based routing.
4
+
5
+ ## Quick Navigation
6
+
7
+ **Need to...**
8
+ | Task | Go to |
9
+ |------|-------|
10
+ | Set up TypeScript types | [configuration.md](./configuration.md) - TypeScript Setup |
11
+ | Configure bindings (KV, D1, R2) | [configuration.md](./configuration.md) - wrangler.jsonc |
12
+ | Access request/env/params | [api.md](./api.md) - EventContext |
13
+ | Add middleware or auth | [patterns.md](./patterns.md) - Middleware, Auth |
14
+ | Background tasks (waitUntil) | [patterns.md](./patterns.md) - Background Tasks |
15
+ | Debug errors or check limits | [gotchas.md](./gotchas.md) - Common Errors, Limits |
16
+
17
+ ## Decision Tree: Is This Pages Functions?
18
+
19
+ ```
20
+ Need serverless backend?
21
+ ├─ Yes, for a static site → Pages Functions
22
+ ├─ Yes, standalone API → Workers
23
+ └─ Just static hosting → Pages (no functions)
24
+
25
+ Have existing Worker?
26
+ ├─ Complex routing logic → Use _worker.js (Advanced Mode)
27
+ └─ Simple routes → Migrate to /functions (File-Based)
28
+
29
+ Framework-based?
30
+ ├─ Next.js/SvelteKit/Remix → Uses _worker.js automatically
31
+ └─ Vanilla/HTML/React SPA → Use /functions
32
+ ```
33
+
34
+ ## File-Based Routing
35
+
36
+ ```
37
+ /functions
38
+ ├── index.js → /
39
+ ├── api.js → /api
40
+ ├── users/
41
+ │ ├── index.js → /users/
42
+ │ ├── [user].js → /users/:user
43
+ │ └── [[catchall]].js → /users/*
44
+ └── _middleware.js → runs on all routes
45
+ ```
46
+
47
+ **Rules:**
48
+
49
+ - `index.js` → directory root
50
+ - Trailing slash optional
51
+ - Specific routes precede catch-alls
52
+ - Falls back to static if no match
53
+
54
+ ## Dynamic Routes
55
+
56
+ **Single segment** `[param]` → string:
57
+
58
+ ```js
59
+ // /functions/users/[user].js
60
+ export function onRequest(context) {
61
+ return new Response(`Hello ${context.params.user}`)
62
+ }
63
+ // Matches: /users/nevi
64
+ ```
65
+
66
+ **Multi-segment** `[[param]]` → array:
67
+
68
+ ```js
69
+ // /functions/users/[[catchall]].js
70
+ export function onRequest(context) {
71
+ return new Response(JSON.stringify(context.params.catchall))
72
+ }
73
+ // Matches: /users/nevi/foobar → ["nevi", "foobar"]
74
+ ```
75
+
76
+ ## Key Features
77
+
78
+ - **Method handlers:** `onRequestGet`, `onRequestPost`, etc.
79
+ - **Middleware:** `_middleware.js` for cross-cutting concerns
80
+ - **Bindings:** KV, D1, R2, Durable Objects, Workers AI, Service bindings
81
+ - **TypeScript:** Full type support via `wrangler types` command
82
+ - **Advanced mode:** Use `_worker.js` for custom routing logic
83
+
84
+ ## Reading Order
85
+
86
+ **New to Pages Functions?** Start here:
87
+
88
+ 1. [README.md](./README.md) - Overview, routing, decision tree (you are here)
89
+ 2. [configuration.md](./configuration.md) - TypeScript setup, wrangler.jsonc, bindings
90
+ 3. [api.md](./api.md) - EventContext, handlers, bindings reference
91
+ 4. [patterns.md](./patterns.md) - Middleware, auth, CORS, rate limiting, caching
92
+ 5. [gotchas.md](./gotchas.md) - Common errors, debugging, limits
93
+
94
+ **Quick reference lookup:**
95
+
96
+ - Bindings table → [api.md](./api.md)
97
+ - Error diagnosis → [gotchas.md](./gotchas.md)
98
+ - TypeScript setup → [configuration.md](./configuration.md)
99
+
100
+ ## See Also
101
+
102
+ - [pages](../pages/) - Pages platform overview and static site deployment
103
+ - [workers](../workers/) - Workers runtime API reference
104
+ - [d1](../d1/) - D1 database integration with Pages Functions
@@ -0,0 +1,159 @@
1
+ # Function API
2
+
3
+ ## EventContext
4
+
5
+ ```typescript
6
+ interface EventContext<Env = any> {
7
+ request: Request // Incoming request
8
+ functionPath: string // Request path
9
+ waitUntil(promise: Promise<any>): void // Background tasks (non-blocking)
10
+ passThroughOnException(): void // Fallback to static on error
11
+ next(input?: Request | string, init?: RequestInit): Promise<Response>
12
+ env: Env // Bindings, vars, secrets
13
+ params: Record<string, string | string[]> // Route params ([user] or [[catchall]])
14
+ data: any // Middleware shared state
15
+ }
16
+ ```
17
+
18
+ **TypeScript:** See [configuration.md](./configuration.md) for `wrangler types` setup
19
+
20
+ ## Handlers
21
+
22
+ ```typescript
23
+ // Generic (fallback for any method)
24
+ export async function onRequest(ctx: EventContext): Promise<Response> {
25
+ return new Response('Any method')
26
+ }
27
+
28
+ // Method-specific (takes precedence over generic)
29
+ export async function onRequestGet(ctx: EventContext): Promise<Response> {
30
+ return Response.json({ message: 'GET' })
31
+ }
32
+
33
+ export async function onRequestPost(ctx: EventContext): Promise<Response> {
34
+ const body = await ctx.request.json()
35
+ return Response.json({ received: body })
36
+ }
37
+ // Also: onRequestPut, onRequestPatch, onRequestDelete, onRequestHead, onRequestOptions
38
+ ```
39
+
40
+ ## Bindings Reference
41
+
42
+ | Binding Type | Interface | Config Key | Use Case |
43
+ | ---------------- | ------------------------ | --------------------------- | --------------------------------- |
44
+ | KV | `KVNamespace` | `kv_namespaces` | Key-value cache, sessions, config |
45
+ | D1 | `D1Database` | `d1_databases` | Relational data, SQL queries |
46
+ | R2 | `R2Bucket` | `r2_buckets` | Large files, user uploads, assets |
47
+ | Durable Objects | `DurableObjectNamespace` | `durable_objects.bindings` | Stateful coordination, websockets |
48
+ | Workers AI | `Ai` | `ai.binding` | LLM inference, embeddings |
49
+ | Vectorize | `VectorizeIndex` | `vectorize` | Vector search, embeddings |
50
+ | Service Binding | `Fetcher` | `services` | Worker-to-worker RPC |
51
+ | Analytics Engine | `AnalyticsEngineDataset` | `analytics_engine_datasets` | Event logging, metrics |
52
+ | Environment Vars | `string` | `vars` | Non-sensitive config |
53
+
54
+ See [configuration.md](./configuration.md) for wrangler.jsonc examples.
55
+
56
+ ## Bindings
57
+
58
+ ### KV
59
+
60
+ ```typescript
61
+ interface Env {
62
+ KV: KVNamespace
63
+ }
64
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
65
+ await ctx.env.KV.put('key', 'value', { expirationTtl: 3600 })
66
+ const val = await ctx.env.KV.get('key', { type: 'json' })
67
+ const keys = await ctx.env.KV.list({ prefix: 'user:' })
68
+ return Response.json({ val })
69
+ }
70
+ ```
71
+
72
+ ### D1
73
+
74
+ ```typescript
75
+ interface Env {
76
+ DB: D1Database
77
+ }
78
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
79
+ const user = await ctx.env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(123).first()
80
+ return Response.json(user)
81
+ }
82
+ ```
83
+
84
+ ### R2
85
+
86
+ ```typescript
87
+ interface Env {
88
+ BUCKET: R2Bucket
89
+ }
90
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
91
+ const obj = await ctx.env.BUCKET.get('file.txt')
92
+ if (!obj) return new Response('Not found', { status: 404 })
93
+ await ctx.env.BUCKET.put('file.txt', ctx.request.body)
94
+ return new Response(obj.body)
95
+ }
96
+ ```
97
+
98
+ ### Durable Objects
99
+
100
+ ```typescript
101
+ interface Env {
102
+ COUNTER: DurableObjectNamespace
103
+ }
104
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
105
+ const stub = ctx.env.COUNTER.get(ctx.env.COUNTER.idFromName('global'))
106
+ return stub.fetch(ctx.request)
107
+ }
108
+ ```
109
+
110
+ ### Workers AI
111
+
112
+ ```typescript
113
+ interface Env {
114
+ AI: Ai
115
+ }
116
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
117
+ const resp = await ctx.env.AI.run('@cf/meta/llama-3.1-8b-instruct', { prompt: 'Hello' })
118
+ return Response.json(resp)
119
+ }
120
+ ```
121
+
122
+ ### Service Bindings & Env Vars
123
+
124
+ ```typescript
125
+ interface Env {
126
+ AUTH: Fetcher
127
+ API_KEY: string
128
+ }
129
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
130
+ // Service binding: forward to another Worker
131
+ return ctx.env.AUTH.fetch(ctx.request)
132
+
133
+ // Environment variable
134
+ return Response.json({ key: ctx.env.API_KEY })
135
+ }
136
+ ```
137
+
138
+ ## Advanced Mode (env.ASSETS)
139
+
140
+ When using `_worker.js`, access static assets via `env.ASSETS.fetch()`:
141
+
142
+ ```typescript
143
+ interface Env {
144
+ ASSETS: Fetcher
145
+ KV: KVNamespace
146
+ }
147
+
148
+ export default {
149
+ async fetch(request: Request, env: Env): Promise<Response> {
150
+ const url = new URL(request.url)
151
+ if (url.pathname.startsWith('/api/')) {
152
+ return Response.json({ data: await env.KV.get('key') })
153
+ }
154
+ return env.ASSETS.fetch(request) // Fallback to static
155
+ },
156
+ } satisfies ExportedHandler<Env>
157
+ ```
158
+
159
+ **See also:** [configuration.md](./configuration.md) for TypeScript setup and wrangler.jsonc | [patterns.md](./patterns.md) for middleware and auth patterns
@@ -0,0 +1,130 @@
1
+ # Configuration
2
+
3
+ ## TypeScript Setup
4
+
5
+ **Generate types from wrangler.jsonc** (replaces deprecated `@cloudflare/workers-types`):
6
+
7
+ ```bash
8
+ npx wrangler types
9
+ ```
10
+
11
+ Creates `worker-configuration.d.ts` with typed `Env` interface based on your bindings.
12
+
13
+ ```typescript
14
+ // functions/api.ts
15
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
16
+ // ctx.env.KV, ctx.env.DB, etc. are fully typed
17
+ return Response.json({ ok: true })
18
+ }
19
+ ```
20
+
21
+ **Manual types** (if not using wrangler types):
22
+
23
+ ```typescript
24
+ interface Env {
25
+ KV: KVNamespace
26
+ DB: D1Database
27
+ API_KEY: string
28
+ }
29
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
30
+ /* ... */
31
+ }
32
+ ```
33
+
34
+ ## wrangler.jsonc
35
+
36
+ ```jsonc
37
+ {
38
+ "$schema": "./node_modules/wrangler/config-schema.json",
39
+ "name": "my-pages-app",
40
+ "pages_build_output_dir": "./dist",
41
+ "compatibility_date": "2025-01-01",
42
+ "compatibility_flags": ["nodejs_compat"],
43
+
44
+ "vars": { "API_URL": "https://api.example.com" },
45
+ "kv_namespaces": [{ "binding": "KV", "id": "abc123" }],
46
+ "d1_databases": [{ "binding": "DB", "database_name": "prod-db", "database_id": "xyz789" }],
47
+ "r2_buckets": [{ "binding": "BUCKET", "bucket_name": "my-bucket" }],
48
+ "durable_objects": {
49
+ "bindings": [{ "name": "COUNTER", "class_name": "Counter", "script_name": "counter-worker" }],
50
+ },
51
+ "services": [{ "binding": "AUTH", "service": "auth-worker" }],
52
+ "ai": { "binding": "AI" },
53
+ "vectorize": [{ "binding": "VECTORIZE", "index_name": "my-index" }],
54
+ "analytics_engine_datasets": [{ "binding": "ANALYTICS" }],
55
+ }
56
+ ```
57
+
58
+ ## Environment Overrides
59
+
60
+ Top-level → local dev, `env.preview` → preview, `env.production` → production
61
+
62
+ ```jsonc
63
+ {
64
+ "vars": { "API_URL": "http://localhost:8787" },
65
+ "env": {
66
+ "production": { "vars": { "API_URL": "https://api.example.com" } },
67
+ },
68
+ }
69
+ ```
70
+
71
+ **Note:** If overriding `vars`, `kv_namespaces`, `d1_databases`, etc., ALL must be redefined (non-inheritable)
72
+
73
+ ## Local Secrets (.dev.vars)
74
+
75
+ **Local dev only** - NOT deployed:
76
+
77
+ ```bash
78
+ # .dev.vars (add to .gitignore)
79
+ SECRET_KEY="my-secret-value"
80
+ ```
81
+
82
+ Accessed via `ctx.env.SECRET_KEY`. Set production secrets:
83
+
84
+ ```bash
85
+ echo "value" | npx wrangler pages secret put SECRET_KEY --project-name=my-app
86
+ ```
87
+
88
+ ## Static Config Files
89
+
90
+ **\_routes.json** - Custom routing:
91
+
92
+ ```json
93
+ { "version": 1, "include": ["/api/*"], "exclude": ["/static/*"] }
94
+ ```
95
+
96
+ **\_headers** - Static headers:
97
+
98
+ ```
99
+ /static/*
100
+ Cache-Control: public, max-age=31536000
101
+ ```
102
+
103
+ **\_redirects** - Redirects:
104
+
105
+ ```
106
+ /old /new 301
107
+ ```
108
+
109
+ ## Local Dev & Deployment
110
+
111
+ ```bash
112
+ # Dev server
113
+ npx wrangler pages dev ./dist
114
+
115
+ # With bindings
116
+ npx wrangler pages dev ./dist --kv=KV --d1=DB=db-id --r2=BUCKET
117
+
118
+ # Durable Objects (2 terminals)
119
+ cd do-worker && npx wrangler dev
120
+ cd pages-project && npx wrangler pages dev ./dist --do COUNTER=Counter@do-worker
121
+
122
+ # Deploy
123
+ npx wrangler pages deploy ./dist
124
+ npx wrangler pages deploy ./dist --branch preview
125
+
126
+ # Download config
127
+ npx wrangler pages download config my-project
128
+ ```
129
+
130
+ **See also:** [api.md](./api.md) for binding usage examples
@@ -0,0 +1,102 @@
1
+ # Gotchas & Debugging
2
+
3
+ ## Error Diagnosis
4
+
5
+ | Symptom | Likely Cause | Solution |
6
+ | ---------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
7
+ | **Function not invoking** | Wrong `/functions` location, wrong extension, or `_routes.json` excludes path | Check `pages_build_output_dir`, use `.js`/`.ts`, verify `_routes.json` |
8
+ | **`ctx.env.BINDING` undefined** | Binding not configured or name mismatch | Add to `wrangler.jsonc`, verify exact name (case-sensitive), redeploy |
9
+ | **TypeScript errors on `ctx.env`** | Missing type definition | Run `wrangler types` or define `interface Env {}` |
10
+ | **Middleware not running** | Wrong filename/location or missing `ctx.next()` | Name exactly `_middleware.js`, export `onRequest`, call `ctx.next()` |
11
+ | **Secrets missing in production** | `.dev.vars` not deployed | `.dev.vars` is local only - set production secrets via dashboard or `wrangler secret put` |
12
+ | **Type mismatch on binding** | Wrong interface type | See [api.md](./api.md) bindings table for correct types |
13
+ | **"KV key not found" but exists** | Key in wrong namespace or env | Verify namespace binding, check preview vs production env |
14
+ | **Function times out** | Synchronous wait or missing `await` | All I/O must be async/await, use `ctx.waitUntil()` for background tasks |
15
+
16
+ ## Common Errors
17
+
18
+ ### TypeScript type errors
19
+
20
+ **Problem:** `ctx.env.MY_BINDING` shows type error
21
+ **Cause:** No type definition for `Env`
22
+ **Solution:** Run `npx wrangler types` or manually define:
23
+
24
+ ```typescript
25
+ interface Env {
26
+ MY_BINDING: KVNamespace
27
+ }
28
+ export const onRequest: PagesFunction<Env> = async (ctx) => {
29
+ /* ... */
30
+ }
31
+ ```
32
+
33
+ ### Secrets not available in production
34
+
35
+ **Problem:** `ctx.env.SECRET_KEY` is undefined in production
36
+ **Cause:** `.dev.vars` is local-only, not deployed
37
+ **Solution:** Set production secrets:
38
+
39
+ ```bash
40
+ echo "value" | npx wrangler pages secret put SECRET_KEY --project-name=my-app
41
+ ```
42
+
43
+ ## Debugging
44
+
45
+ ```typescript
46
+ // Console logging
47
+ export async function onRequest(ctx) {
48
+ console.log('Request:', ctx.request.method, ctx.request.url)
49
+ const res = await ctx.next()
50
+ console.log('Status:', res.status)
51
+ return res
52
+ }
53
+ ```
54
+
55
+ ```bash
56
+ # Stream real-time logs
57
+ npx wrangler pages deployment tail
58
+ npx wrangler pages deployment tail --status error
59
+ ```
60
+
61
+ ```jsonc
62
+ // Source maps (wrangler.jsonc)
63
+ { "upload_source_maps": true }
64
+ ```
65
+
66
+ ## Limits
67
+
68
+ | Resource | Free | Paid |
69
+ | ----------- | -------------------- | ------------------------- |
70
+ | CPU time | 10ms | 50ms |
71
+ | Memory | 128 MB | 128 MB |
72
+ | Script size | 10 MB compressed | 10 MB compressed |
73
+ | Env vars | 5 KB per var, 64 max | 5 KB per var, 64 max |
74
+ | Requests | 100k/day | Unlimited ($0.50/million) |
75
+
76
+ ## Best Practices
77
+
78
+ **Performance:** Minimize deps (cold start), use KV for cache/D1 for relational/R2 for large files, set `Cache-Control` headers, batch DB ops, handle errors gracefully
79
+
80
+ **Security:** Never commit secrets (use `.dev.vars` + gitignore), validate input, sanitize before DB, implement auth middleware, set CORS headers, rate limit per-IP
81
+
82
+ ## Migration
83
+
84
+ **Workers → Pages Functions:**
85
+
86
+ - `export default { fetch(req, env) {} }` → `export function onRequest(ctx) { const { request, env } = ctx; }`
87
+ - Use `_worker.js` for complex routing: `env.ASSETS.fetch(request)` for static files
88
+
89
+ **Other platforms → Pages:**
90
+
91
+ - File-based routing: `/functions/api/users.js` → `/api/users`
92
+ - Dynamic routes: `[param]` not `:param`
93
+ - Replace Node.js deps with Workers APIs or add `nodejs_compat` flag
94
+
95
+ ## Resources
96
+
97
+ - [Official Docs](https://developers.cloudflare.com/pages/functions/)
98
+ - [Workers APIs](https://developers.cloudflare.com/workers/runtime-apis/)
99
+ - [Examples](https://github.com/cloudflare/pages-example-projects)
100
+ - [Discord](https://discord.gg/cloudflaredev)
101
+
102
+ **See also:** [configuration.md](./configuration.md) for TypeScript setup | [patterns.md](./patterns.md) for middleware/auth | [api.md](./api.md) for bindings
@@ -0,0 +1,148 @@
1
+ # Common Patterns
2
+
3
+ ## Background Tasks (waitUntil)
4
+
5
+ Non-blocking tasks after response sent (analytics, cleanup, webhooks):
6
+
7
+ ```typescript
8
+ export async function onRequest(ctx: EventContext<Env>) {
9
+ const res = Response.json({ success: true })
10
+
11
+ ctx.waitUntil(ctx.env.KV.put('last-visit', new Date().toISOString()))
12
+ ctx.waitUntil(
13
+ Promise.all([
14
+ ctx.env.ANALYTICS.writeDataPoint({ event: 'view' }),
15
+ fetch('https://webhook.site/...', { method: 'POST' }),
16
+ ])
17
+ )
18
+
19
+ return res // Returned immediately
20
+ }
21
+ ```
22
+
23
+ ## Middleware & Auth
24
+
25
+ ```typescript
26
+ // functions/_middleware.js (global) or functions/users/_middleware.js (scoped)
27
+ export async function onRequest(ctx) {
28
+ try {
29
+ return await ctx.next()
30
+ } catch (err) {
31
+ return new Response(err.message, { status: 500 })
32
+ }
33
+ }
34
+
35
+ // Chained: export const onRequest = [errorHandler, auth, logger];
36
+
37
+ // Auth
38
+ async function auth(ctx: EventContext<Env>) {
39
+ const token = ctx.request.headers.get('authorization')?.replace('Bearer ', '')
40
+ if (!token) return new Response('Unauthorized', { status: 401 })
41
+ const session = await ctx.env.KV.get(`session:${token}`)
42
+ if (!session) return new Response('Invalid', { status: 401 })
43
+ ctx.data.user = JSON.parse(session)
44
+ return ctx.next()
45
+ }
46
+ ```
47
+
48
+ ## CORS & Rate Limiting
49
+
50
+ ```typescript
51
+ // CORS middleware
52
+ const cors = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, POST' }
53
+ export async function onRequestOptions() {
54
+ return new Response(null, { headers: cors })
55
+ }
56
+ export async function onRequest(ctx) {
57
+ const res = await ctx.next()
58
+ Object.entries(cors).forEach(([k, v]) => res.headers.set(k, v))
59
+ return res
60
+ }
61
+
62
+ // Rate limiting (KV-based)
63
+ async function rateLimit(ctx: EventContext<Env>) {
64
+ const ip = ctx.request.headers.get('CF-Connecting-IP') || 'unknown'
65
+ const count = parseInt((await ctx.env.KV.get(`rate:${ip}`)) || '0')
66
+ if (count >= 100) return new Response('Rate limited', { status: 429 })
67
+ await ctx.env.KV.put(`rate:${ip}`, (count + 1).toString(), { expirationTtl: 3600 })
68
+ return ctx.next()
69
+ }
70
+ ```
71
+
72
+ ## Forms, Caching, Redirects
73
+
74
+ ```typescript
75
+ // JSON & file upload
76
+ export async function onRequestPost(ctx) {
77
+ const ct = ctx.request.headers.get('content-type') || ''
78
+ if (ct.includes('application/json')) return Response.json(await ctx.request.json())
79
+ if (ct.includes('multipart/form-data')) {
80
+ const file = (await ctx.request.formData()).get('file') as File
81
+ await ctx.env.BUCKET.put(file.name, file.stream())
82
+ return Response.json({ uploaded: file.name })
83
+ }
84
+ }
85
+
86
+ // Cache API
87
+ export async function onRequest(ctx) {
88
+ let res = await caches.default.match(ctx.request)
89
+ if (!res) {
90
+ res = new Response('Data')
91
+ res.headers.set('Cache-Control', 'public, max-age=3600')
92
+ ctx.waitUntil(caches.default.put(ctx.request, res.clone()))
93
+ }
94
+ return res
95
+ }
96
+
97
+ // Redirects
98
+ export async function onRequest(ctx) {
99
+ if (new URL(ctx.request.url).pathname === '/old') {
100
+ return Response.redirect(new URL('/new', ctx.request.url), 301)
101
+ }
102
+ return ctx.next()
103
+ }
104
+ ```
105
+
106
+ ## Testing
107
+
108
+ **Unit tests** (Vitest + cloudflare:test):
109
+
110
+ ```typescript
111
+ import { env } from 'cloudflare:test'
112
+ import { it, expect } from 'vitest'
113
+ import { onRequest } from '../functions/api'
114
+
115
+ it('returns JSON', async () => {
116
+ const req = new Request('http://localhost/api')
117
+ const ctx = { request: req, env, params: {}, data: {} } as EventContext
118
+ const res = await onRequest(ctx)
119
+ expect(res.status).toBe(200)
120
+ })
121
+ ```
122
+
123
+ **Integration:** `wrangler pages dev` + Playwright/Cypress
124
+
125
+ ## Advanced Mode (\_worker.js)
126
+
127
+ Use `_worker.js` for complex routing (replaces `/functions`):
128
+
129
+ ```typescript
130
+ interface Env {
131
+ ASSETS: Fetcher
132
+ KV: KVNamespace
133
+ }
134
+
135
+ export default {
136
+ async fetch(request: Request, env: Env): Promise<Response> {
137
+ const url = new URL(request.url)
138
+ if (url.pathname.startsWith('/api/')) {
139
+ return Response.json({ data: await env.KV.get('key') })
140
+ }
141
+ return env.ASSETS.fetch(request) // Static files
142
+ },
143
+ } satisfies ExportedHandler<Env>
144
+ ```
145
+
146
+ **When:** Existing Worker, framework-generated (Next.js/SvelteKit), custom routing logic
147
+
148
+ **See also:** [api.md](./api.md) for `env.ASSETS.fetch()` | [gotchas.md](./gotchas.md) for debugging