opencodekit 0.15.3 → 0.15.5

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 (321) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/AGENTS.md +209 -77
  3. package/dist/template/.opencode/agent/plan.md +4 -0
  4. package/dist/template/.opencode/command/cloudflare.md +70 -0
  5. package/dist/template/.opencode/package.json +1 -1
  6. package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
  7. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  8. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  9. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  10. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  11. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  12. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  13. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  14. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  15. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  16. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  17. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  18. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  19. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  20. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  21. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  22. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  23. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  24. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  25. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  26. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  27. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  28. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  29. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  30. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  31. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  32. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  33. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  34. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  35. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  36. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  37. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  38. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  39. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  40. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  41. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  42. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  43. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  44. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  45. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  46. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  47. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  48. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  49. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  50. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  51. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  52. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  53. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  54. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  55. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  56. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  57. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  58. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  59. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  60. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  61. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  62. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  63. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  64. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  65. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  66. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  67. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  68. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  69. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  70. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  71. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  72. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  73. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  74. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  75. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  76. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  77. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  78. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  79. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  80. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  81. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  82. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  83. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  84. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  85. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  86. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  87. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  88. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  89. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  90. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  91. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  92. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  93. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  94. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  95. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  96. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  97. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  98. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  99. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  100. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  101. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  102. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  103. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  104. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  105. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  106. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  107. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  108. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  109. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  110. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  111. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  112. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  113. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  114. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  115. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  116. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  117. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  118. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  119. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  120. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  121. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  122. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  123. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  124. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  125. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  126. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  127. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  128. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  129. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  130. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  131. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  132. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  133. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  134. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  135. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  136. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  137. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  138. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  139. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  140. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  141. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  142. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  143. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  144. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  145. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  146. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  147. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  148. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  149. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  150. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  151. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  152. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  153. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  154. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  155. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  156. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  157. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  158. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  159. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  160. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  261. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  262. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  263. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  264. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  265. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
  266. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  267. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  268. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  269. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  270. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  271. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  272. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  273. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  274. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  275. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  276. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  277. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  278. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  279. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  280. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  281. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  282. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  283. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  284. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  285. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  286. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  287. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  288. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  289. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  290. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  291. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  292. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  293. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  294. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  295. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  296. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  297. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  298. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  299. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  300. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  301. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  302. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  303. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  304. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  305. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  306. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  307. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  308. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  309. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  310. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  311. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  312. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  313. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  314. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  315. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  316. package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
  317. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  318. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
  319. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  320. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
  321. package/package.json +1 -1
@@ -0,0 +1,200 @@
1
+ # Functions API
2
+
3
+ ## File-Based Routing
4
+
5
+ ```
6
+ /functions
7
+ /index.ts → example.com/
8
+ /api
9
+ /users.ts → example.com/api/users
10
+ /users
11
+ /[id].ts → example.com/api/users/:id
12
+ /[[catchall]].ts → example.com/api/users/*
13
+ /_middleware.ts → Runs before all routes
14
+ ```
15
+
16
+ **Rules**: `[param]` = single segment, `[[param]]` = multi-segment wildcard, more specific wins, falls back to static assets.
17
+
18
+ ## Request Handlers
19
+
20
+ ```typescript
21
+ import type { PagesFunction } from '@cloudflare/workers-types';
22
+
23
+ interface Env {
24
+ DB: D1Database;
25
+ KV: KVNamespace;
26
+ }
27
+
28
+ // All methods
29
+ export const onRequest: PagesFunction<Env> = async (context) => {
30
+ return new Response('All methods');
31
+ };
32
+
33
+ // Method-specific
34
+ export const onRequestGet: PagesFunction<Env> = async (context) => {
35
+ const { request, env, params, data } = context;
36
+
37
+ const user = await env.DB.prepare(
38
+ 'SELECT * FROM users WHERE id = ?'
39
+ ).bind(params.id).first();
40
+
41
+ return Response.json(user);
42
+ };
43
+
44
+ export const onRequestPost: PagesFunction<Env> = async (context) => {
45
+ const body = await context.request.json();
46
+ return Response.json({ success: true });
47
+ };
48
+
49
+ // Also: onRequestPut, onRequestPatch, onRequestDelete, onRequestHead, onRequestOptions
50
+ ```
51
+
52
+ ## Context Object
53
+
54
+ ```typescript
55
+ interface EventContext<Env, Params, Data> {
56
+ request: Request; // Incoming HTTP request
57
+ env: Env; // Bindings (KV, D1, R2, etc.)
58
+ params: Params; // Dynamic route parameters
59
+ data: Data; // Shared data from middleware
60
+ functionPath: string; // Current function path
61
+ waitUntil: (promise: Promise<any>) => void; // Background tasks
62
+ next: (input?: RequestInfo, init?: RequestInit) => Promise<Response>;
63
+ passThroughOnException: () => void; // Fallback on error (not in advanced mode)
64
+ }
65
+ ```
66
+
67
+ ## Dynamic Routes
68
+
69
+ ### Single Segment
70
+ ```typescript
71
+ // functions/users/[id].ts
72
+ export const onRequestGet: PagesFunction = async ({ params }) => {
73
+ // /users/123 → params.id = "123"
74
+ return Response.json({ userId: params.id });
75
+ };
76
+ ```
77
+
78
+ ### Multi-Segment
79
+ ```typescript
80
+ // functions/files/[[path]].ts
81
+ export const onRequestGet: PagesFunction = async ({ params }) => {
82
+ // /files/docs/api/v1.md → params.path = ["docs", "api", "v1.md"]
83
+ const filePath = (params.path as string[]).join('/');
84
+ return new Response(filePath);
85
+ };
86
+ ```
87
+
88
+ ## Middleware
89
+
90
+ ```typescript
91
+ // functions/_middleware.ts
92
+ import type { PagesFunction } from '@cloudflare/workers-types';
93
+
94
+ // Single
95
+ export const onRequest: PagesFunction = async (context) => {
96
+ const response = await context.next();
97
+ response.headers.set('X-Custom-Header', 'value');
98
+ return response;
99
+ };
100
+
101
+ // Chained (runs in order)
102
+ const errorHandler: PagesFunction = async (context) => {
103
+ try {
104
+ return await context.next();
105
+ } catch (err) {
106
+ return new Response(err.message, { status: 500 });
107
+ }
108
+ };
109
+
110
+ const auth: PagesFunction = async (context) => {
111
+ const token = context.request.headers.get('Authorization');
112
+ if (!token) return new Response('Unauthorized', { status: 401 });
113
+
114
+ context.data.userId = await verifyToken(token);
115
+ return context.next();
116
+ };
117
+
118
+ export const onRequest = [errorHandler, auth];
119
+ ```
120
+
121
+ **Scope**:
122
+ - `functions/_middleware.ts` → ALL requests (including static)
123
+ - `functions/api/_middleware.ts` → `/api/*` only
124
+
125
+ ## Bindings Usage
126
+
127
+ ```typescript
128
+ export const onRequestGet: PagesFunction<Env> = async ({ env, request }) => {
129
+ // KV
130
+ const cached = await env.KV.get('key', 'json');
131
+ await env.KV.put('key', JSON.stringify({ data: 'value' }), {
132
+ expirationTtl: 3600
133
+ });
134
+
135
+ // D1
136
+ const result = await env.DB.prepare(
137
+ 'SELECT * FROM users WHERE id = ?'
138
+ ).bind(userId).first();
139
+
140
+ // R2
141
+ const object = await env.BUCKET.get('file.txt');
142
+ const content = await object?.text();
143
+
144
+ // Queue
145
+ await env.QUEUE.send({ event: 'user.signup', userId: 123 });
146
+
147
+ // AI
148
+ const aiResponse = await env.AI.run('@cf/meta/llama-2-7b-chat-int8', {
149
+ prompt: 'Hello world'
150
+ });
151
+
152
+ return Response.json({ success: true });
153
+ };
154
+ ```
155
+
156
+ ## Advanced Mode
157
+
158
+ Full Workers API, bypasses file-based routing:
159
+
160
+ ```javascript
161
+ // functions/_worker.js
162
+ export default {
163
+ async fetch(request, env, ctx) {
164
+ const url = new URL(request.url);
165
+
166
+ // Custom routing
167
+ if (url.pathname.startsWith('/api/')) {
168
+ return new Response('API response');
169
+ }
170
+
171
+ // REQUIRED: Serve static assets
172
+ return env.ASSETS.fetch(request);
173
+ }
174
+ };
175
+ ```
176
+
177
+ **When to use**: WebSockets, complex routing, scheduled handlers, email handlers.
178
+
179
+ ## getRequestContext (Framework SSR)
180
+
181
+ Access bindings in framework code (Next.js, SvelteKit, etc.):
182
+
183
+ ```typescript
184
+ import { getRequestContext } from '@cloudflare/next-on-pages';
185
+
186
+ export async function GET(request: Request) {
187
+ const { env, cf, ctx } = getRequestContext();
188
+
189
+ const data = await env.DB.prepare(
190
+ 'SELECT * FROM users'
191
+ ).all();
192
+
193
+ return Response.json(data);
194
+ }
195
+ ```
196
+
197
+ **Note**: Adapter-specific. Check framework docs:
198
+ - Next.js: `@cloudflare/next-on-pages`
199
+ - SvelteKit: `@sveltejs/adapter-cloudflare`
200
+ - Remix: `@remix-run/cloudflare-pages`
@@ -0,0 +1,228 @@
1
+ # Configuration
2
+
3
+ ## wrangler.toml
4
+
5
+ ```toml
6
+ name = "my-pages-project"
7
+ pages_build_output_dir = "./dist"
8
+ compatibility_date = "2024-01-01"
9
+ compatibility_flags = ["nodejs_compat"]
10
+
11
+ # Bindings
12
+ [[kv_namespaces]]
13
+ binding = "KV"
14
+ id = "abcd1234..."
15
+
16
+ [[d1_databases]]
17
+ binding = "DB"
18
+ database_id = "xxxx-xxxx-xxxx-xxxx"
19
+ database_name = "production-db"
20
+
21
+ [[r2_buckets]]
22
+ binding = "BUCKET"
23
+ bucket_name = "my-bucket"
24
+
25
+ [[durable_objects.bindings]]
26
+ name = "COUNTER"
27
+ class_name = "Counter"
28
+ script_name = "counter-worker"
29
+
30
+ [[services]]
31
+ binding = "API"
32
+ service = "api-worker"
33
+
34
+ [[queues.producers]]
35
+ binding = "QUEUE"
36
+ queue = "my-queue"
37
+
38
+ [[vectorize]]
39
+ binding = "VECTORIZE"
40
+ index_name = "my-index"
41
+
42
+ [ai]
43
+ binding = "AI"
44
+
45
+ [[analytics_engine_datasets]]
46
+ binding = "ANALYTICS"
47
+
48
+ # Vars (non-sensitive)
49
+ [vars]
50
+ API_URL = "https://api.example.com"
51
+ ENVIRONMENT = "production"
52
+
53
+ # Environment overrides
54
+ [env.preview]
55
+ [env.preview.vars]
56
+ API_URL = "https://staging-api.example.com"
57
+
58
+ [[env.preview.kv_namespaces]]
59
+ binding = "KV"
60
+ id = "preview-namespace-id"
61
+ ```
62
+
63
+ ## Build Config
64
+
65
+ **Git deployment**: Dashboard → Project → Settings → Build settings
66
+ - Build command: `npm run build`
67
+ - Output directory: `dist` / `out` / `build`
68
+ - Environment variables: Set per environment (preview/production)
69
+
70
+ **Framework detection**: Auto-configures build command + output dir for common frameworks
71
+
72
+ ## Environment Variables
73
+
74
+ ### Local Secrets (.dev.vars)
75
+ ```bash
76
+ # .dev.vars (never commit)
77
+ SECRET_KEY="local-secret-key"
78
+ API_TOKEN="dev-token-123"
79
+ DATABASE_URL="http://localhost:5432"
80
+ ```
81
+
82
+ ### Production Secrets
83
+ ```bash
84
+ # Interactive
85
+ echo "super-secret-value" | npx wrangler pages secret put SECRET_KEY --project-name=my-project
86
+
87
+ # Per environment
88
+ echo "prod-secret" | npx wrangler pages secret put SECRET_KEY --project-name=my-project --env=production
89
+
90
+ # List
91
+ npx wrangler pages secret list --project-name=my-project
92
+
93
+ # Delete
94
+ npx wrangler pages secret delete SECRET_KEY --project-name=my-project
95
+ ```
96
+
97
+ Access like bindings: `env.SECRET_KEY`
98
+
99
+ ## Static Config Files
100
+
101
+ ### _redirects
102
+ Place in build output (e.g., `dist/_redirects`):
103
+
104
+ ```txt
105
+ # Simple (302)
106
+ /old-page /new-page
107
+
108
+ # Permanent (301)
109
+ /old-page /new-page 301
110
+
111
+ # External
112
+ /blog https://blog.example.com
113
+
114
+ # Splat wildcard
115
+ /blog/* /news/:splat 301
116
+
117
+ # Placeholders
118
+ /users/:id /members/:id 301
119
+
120
+ # Proxying (200)
121
+ /api/* /api-v2/:splat 200
122
+
123
+ # Limits: 2,100 total (2,000 static + 100 dynamic), 1,000 char/line
124
+ ```
125
+
126
+ **Important**: Redirects don't apply to Functions routes. Functions take precedence.
127
+
128
+ ### _headers
129
+ ```txt
130
+ # Security
131
+ /secure/*
132
+ X-Frame-Options: DENY
133
+ X-Content-Type-Options: nosniff
134
+ Referrer-Policy: no-referrer
135
+
136
+ # CORS
137
+ /api/*
138
+ Access-Control-Allow-Origin: *
139
+ Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
140
+
141
+ # Cache
142
+ /static/*
143
+ Cache-Control: public, max-age=31536000, immutable
144
+
145
+ # Prevent indexing previews
146
+ https://:project.pages.dev/*
147
+ X-Robots-Tag: noindex
148
+
149
+ # Remove header
150
+ /special-page
151
+ ! X-Frame-Options
152
+
153
+ # Limits: 100 rules, 2,000 char/line
154
+ ```
155
+
156
+ **Important**: Headers don't apply to Functions responses. Set in Response object.
157
+
158
+ ### _routes.json
159
+ Controls which requests invoke Functions (auto-generated for most frameworks):
160
+
161
+ ```json
162
+ {
163
+ "version": 1,
164
+ "include": ["/*"],
165
+ "exclude": [
166
+ "/build/*",
167
+ "/static/*",
168
+ "/assets/*",
169
+ "/*.ico",
170
+ "/*.png",
171
+ "/*.jpg",
172
+ "/*.css",
173
+ "/*.js"
174
+ ]
175
+ }
176
+ ```
177
+
178
+ **Purpose**: Functions are metered; static requests are free. `exclude` takes precedence. Max 100 rules, 100 char/rule.
179
+
180
+ ## TypeScript
181
+
182
+ Generate types:
183
+ ```bash
184
+ npx wrangler types --path='./functions/types.d.ts'
185
+ ```
186
+
187
+ ```json
188
+ // functions/tsconfig.json
189
+ {
190
+ "compilerOptions": {
191
+ "target": "esnext",
192
+ "module": "esnext",
193
+ "lib": ["esnext"],
194
+ "types": ["./types.d.ts"]
195
+ }
196
+ }
197
+ ```
198
+
199
+ ## Local Dev
200
+
201
+ ```bash
202
+ # Basic
203
+ npx wrangler pages dev ./dist
204
+
205
+ # With bindings
206
+ npx wrangler pages dev ./dist --kv KV --d1 DB=local-db-id --r2 BUCKET
207
+
208
+ # Persistence
209
+ npx wrangler pages dev ./dist --persist-to=./.wrangler/state/v3
210
+
211
+ # Custom port
212
+ npx wrangler pages dev ./dist --port=3000
213
+
214
+ # Live reload
215
+ npx wrangler pages dev ./dist --live-reload
216
+
217
+ # Proxy mode (SSR frameworks)
218
+ npx wrangler pages dev -- npm run dev
219
+ ```
220
+
221
+ ## Limits
222
+
223
+ - **Functions**: 100k req/day (Free), 10ms CPU, 128MB memory, 1MB script
224
+ - **Deployments**: 500/month (Free), 20k files, 25MB/file
225
+ - **Config**: 2,100 redirects, 100 header rules, 100 route rules
226
+ - **Build**: 20min timeout, no Docker
227
+
228
+ [Full limits](https://developers.cloudflare.com/pages/platform/limits/)
@@ -0,0 +1,161 @@
1
+ # Gotchas
2
+
3
+ ## Functions Not Running
4
+
5
+ 1. **Check `_routes.json`**: May be excluding Function routes
6
+ 2. **Verify file naming**: Must be `.js` or `.ts`, NOT `.jsx` or `.tsx`
7
+ 3. **Check build output**: Functions dir must be at root of output dir
8
+ 4. **Functions precedence**: Functions always override redirects/static
9
+
10
+ ## 404 on Static Assets
11
+
12
+ 1. **Build output dir**: Verify setting matches actual build output
13
+ 2. **Functions catching requests**: Use `_routes.json` to exclude static paths
14
+ 3. **Advanced mode**: Must call `env.ASSETS.fetch()` or static won't serve
15
+
16
+ ## Bindings Not Working
17
+
18
+ 1. **wrangler.toml syntax**: Check for TOML errors
19
+ 2. **Binding IDs**: Verify correct (especially for KV/D1/R2)
20
+ 3. **Local dev**: Check `.dev.vars` exists and has correct values
21
+ 4. **Regenerate types**: `npx wrangler types --path='./functions/types.d.ts'`
22
+ 5. **Environment**: Production bindings ≠ preview bindings (set separately)
23
+
24
+ ## Build Failures
25
+
26
+ 1. **Build logs**: Check in Dashboard → Deployments → Build log
27
+ 2. **Build command**: Verify correct for framework
28
+ 3. **Output directory**: Must match actual build output
29
+ 4. **Node version**: Check compatibility (set via `.nvmrc` or env var)
30
+ 5. **Environment variables**: Review in Settings → Environment variables
31
+ 6. **Timeout**: 20min max. Long builds may fail.
32
+ 7. **Memory**: Build can OOM on large projects
33
+
34
+ ## Deployment Fails
35
+
36
+ 1. **File count**: Max 20,000 files per deployment
37
+ 2. **File size**: Max 25MB per file
38
+ 3. **Build errors**: Check build output in logs
39
+ 4. **wrangler.toml validation**: `npx wrangler pages project validate`
40
+ 5. **Bindings**: Verify all referenced bindings exist
41
+
42
+ ## Middleware Not Running
43
+
44
+ 1. **File location**: Must be `_middleware.ts` (underscore prefix)
45
+ 2. **Export**: Must export `onRequest` or method-specific handlers
46
+ 3. **Must call `next()`**: Or return Response directly
47
+ 4. **Scope**: `functions/_middleware.ts` applies to ALL (including static)
48
+ 5. **Order**: Array order matters: `[errorHandler, auth, logging]`
49
+
50
+ ## Headers Not Applied
51
+
52
+ 1. **Functions responses**: `_headers` only applies to static assets
53
+ 2. **Set in code**: Functions must set headers via Response object
54
+ 3. **Syntax**: Check `_headers` file syntax (path, then indented headers)
55
+ 4. **Limits**: Max 100 header rules
56
+
57
+ ## Redirects Not Working
58
+
59
+ 1. **Functions take precedence**: Redirects don't apply to Function routes
60
+ 2. **Syntax**: Check `_redirects` file format
61
+ 3. **Limits**: Max 2,100 redirects (2,000 static + 100 dynamic)
62
+ 4. **Query strings**: Preserved automatically
63
+ 5. **Testing**: Preview deployments to test before production
64
+
65
+ ## TypeScript Errors
66
+
67
+ 1. **Generate types**: `npx wrangler types` before dev
68
+ 2. **tsconfig**: Point `types` to generated file
69
+ 3. **Env interface**: Must match wrangler.toml bindings
70
+ 4. **Type imports**: `import type { PagesFunction } from '@cloudflare/workers-types'`
71
+
72
+ ## Local Dev Issues
73
+
74
+ 1. **Port conflicts**: Use `--port=3000` to change
75
+ 2. **Bindings**: Must pass via CLI flags or wrangler.toml
76
+ 3. **Persistence**: Use `--persist-to` to keep data between restarts
77
+ 4. **Hot reload**: May need manual restart for some changes
78
+ 5. **HTTPS**: Local dev uses HTTP, production uses HTTPS (affects cookies, etc.)
79
+
80
+ ## Preview vs Production
81
+
82
+ 1. **Different bindings**: Set separately in Dashboard
83
+ 2. **Different env vars**: Configure per environment
84
+ 3. **Branch deploys**: Every branch gets preview deployment
85
+ 4. **URLs**: `https://branch.project.pages.dev` vs `https://project.pages.dev`
86
+
87
+ ## Performance Issues
88
+
89
+ 1. **Function invocations**: Exclude static assets via `_routes.json`
90
+ 2. **Cold starts**: First request after deploy may be slower
91
+ 3. **CPU time**: 10ms limit per request (can hit on complex operations)
92
+ 4. **Memory**: 128MB limit (watch for large JSON parsing)
93
+ 5. **Bundle size**: Keep Functions < 1MB compressed
94
+
95
+ ## Framework-Specific
96
+
97
+ ### Next.js
98
+ - Use `@cloudflare/next-on-pages` adapter
99
+ - Some features unsupported (ISR, Middleware with waitUntil in body)
100
+ - Check [compatibility](https://github.com/cloudflare/next-on-pages/blob/main/docs/compatibility.md)
101
+
102
+ ### SvelteKit
103
+ - Use `@sveltejs/adapter-cloudflare`
104
+ - Set `platform: 'cloudflare'` in svelte.config.js
105
+
106
+ ### Remix
107
+ - Use `@remix-run/cloudflare-pages`
108
+ - Check server context for bindings
109
+
110
+ ## Debugging
111
+
112
+ ```typescript
113
+ // Log everything
114
+ console.log('Request:', {
115
+ method: request.method,
116
+ url: request.url,
117
+ headers: Object.fromEntries(request.headers),
118
+ });
119
+ console.log('Env:', Object.keys(env));
120
+ console.log('Params:', params);
121
+ console.log('Data:', data);
122
+ ```
123
+
124
+ **View logs**:
125
+ ```bash
126
+ npx wrangler pages deployment tail --project-name=my-project
127
+ ```
128
+
129
+ ## Common Errors
130
+
131
+ **"Module not found"**: Check build output, ensure dependencies bundled
132
+
133
+ **"Binding not found"**: Verify wrangler.toml and regenerate types
134
+
135
+ **"Request exceeded CPU limit"**: Optimize hot paths, use Workers for heavy compute
136
+
137
+ **"Script too large"**: Tree-shake, dynamic imports, code-split
138
+
139
+ **"Too many subrequests"**: Max 50 subreqs per request, batch where possible
140
+
141
+ **"KV key not found"**: Check namespaces match (production vs preview)
142
+
143
+ **"D1 error"**: Verify database_id, check migrations applied
144
+
145
+ ## Limits Reference
146
+
147
+ - **Functions**: 100k req/day (Free), 10ms CPU, 128MB memory, 1MB script
148
+ - **Deployments**: 500/month (Free), 20k files, 25MB/file
149
+ - **Config**: 2,100 redirects, 100 headers, 100 routes
150
+ - **Build**: 20min timeout
151
+ - **Subrequests**: 50/request
152
+ - **Request size**: 100MB
153
+
154
+ [Full limits](https://developers.cloudflare.com/pages/platform/limits/)
155
+
156
+ ## Getting Help
157
+
158
+ 1. Check [Pages Docs](https://developers.cloudflare.com/pages/)
159
+ 2. Search [Discord #functions](https://discord.com/channels/595317990191398933/910978223968518144)
160
+ 3. Review [Workers Examples](https://developers.cloudflare.com/workers/examples/)
161
+ 4. Check framework-specific docs/adapters