void 0.1.6 → 0.7.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 (333) hide show
  1. package/AGENT_PROMPT.md +15 -0
  2. package/README.md +62 -123
  3. package/dist/auth-BdsJ0Aff.d.mts +43 -0
  4. package/dist/auth-cmd-Dx8oPKZC.mjs +43 -0
  5. package/dist/auth-migrations-BAtAck2g.mjs +117 -0
  6. package/dist/better-auth-shared-C9_GHSkR.d.mts +71 -0
  7. package/dist/better-auth-shared-CdYmQGry.mjs +163 -0
  8. package/dist/cache-W82I8ihI.mjs +47 -0
  9. package/dist/cancel-deploy-BOBTqqh0.mjs +59 -0
  10. package/dist/cf-access-Dee5cXxL.mjs +22 -0
  11. package/dist/chunk-DJd-R1mw.mjs +34 -0
  12. package/dist/cli/cli.d.mts +1 -0
  13. package/dist/cli/cli.mjs +1807 -0
  14. package/dist/client-snXOjrp1.mjs +565 -0
  15. package/dist/collect-CjeZgz5D.mjs +55 -0
  16. package/dist/config-BIa9HwVX.mjs +573 -0
  17. package/dist/config-BzM9Dy7T.mjs +37 -0
  18. package/dist/config-CvHtTM0q.mjs +30 -0
  19. package/dist/create-project-BIA15W7z.mjs +90 -0
  20. package/dist/db-DsRoMcfN.mjs +895 -0
  21. package/dist/defer-DcxEsVH1.mjs +49 -0
  22. package/dist/delete-DAP6yDc7.mjs +64 -0
  23. package/dist/deploy-BPKblFx6.mjs +2424 -0
  24. package/dist/discover-B7FkXBLB.mjs +40 -0
  25. package/dist/dist-DUyXJLkq.mjs +2667 -0
  26. package/dist/dist-Dayj3gCK.mjs +1287 -0
  27. package/dist/domain-BGofcQ6I.mjs +79 -0
  28. package/dist/dotenv-DwO4ti0Z.mjs +173 -0
  29. package/dist/drizzle-NnudE_UN.mjs +232 -0
  30. package/dist/env-CyG3tvU0.mjs +301 -0
  31. package/dist/env-helpers-Dr9Y7RnE.d.mts +52 -0
  32. package/dist/env-raw-BDL4TvdN.mjs +32 -0
  33. package/dist/env-types-DknSA4SO.mjs +64 -0
  34. package/dist/env-validation-DJKjR_8q.mjs +163 -0
  35. package/dist/fetch-error-BQ8sZ5Nd.mjs +266 -0
  36. package/dist/fetch-error-CVZ5CGA-.d.mts +20 -0
  37. package/dist/gen-U0Ktr4Zd.mjs +761 -0
  38. package/dist/handler-B0ds0OHJ.d.mts +269 -0
  39. package/dist/head-P-egrtFE.d.mts +45 -0
  40. package/dist/headers-DCXc7mDs.mjs +279 -0
  41. package/dist/index.d.mts +32 -0
  42. package/dist/index.mjs +4695 -0
  43. package/dist/init-C7wS5iGP.mjs +2625 -0
  44. package/dist/link-p2R6NbgN.mjs +49 -0
  45. package/dist/list-Bfel-QLc.mjs +113 -0
  46. package/dist/log-DXdqnmhF.mjs +26 -0
  47. package/dist/login-CkcXUiIu.mjs +72 -0
  48. package/dist/logs-DmkrRvx6.mjs +98 -0
  49. package/dist/magic-string.es-D6g9UnIy.mjs +1011 -0
  50. package/dist/mcp-CaQzfeUi.mjs +373 -0
  51. package/dist/node-DDfXj10V.mjs +54 -0
  52. package/dist/output-BwlcIYSR.mjs +139 -0
  53. package/dist/pages/client.d.mts +198 -0
  54. package/dist/pages/client.mjs +980 -0
  55. package/dist/pages/head-client.d.mts +15 -0
  56. package/dist/pages/head-client.mjs +90 -0
  57. package/dist/pages/head.d.mts +2 -0
  58. package/dist/pages/head.mjs +112 -0
  59. package/dist/pages/index.d.mts +38 -0
  60. package/dist/pages/index.mjs +76 -0
  61. package/dist/pages/islands-plugin.d.mts +50 -0
  62. package/dist/pages/islands-plugin.mjs +195 -0
  63. package/dist/pages/prefetch.d.mts +31 -0
  64. package/dist/pages/prefetch.mjs +90 -0
  65. package/dist/pages/protocol.d.mts +3 -0
  66. package/dist/pages/protocol.mjs +193 -0
  67. package/dist/pages/serialize.d.mts +10 -0
  68. package/dist/pages/serialize.mjs +14 -0
  69. package/dist/pathe.M-eThtNZ-D-kmWkCS.mjs +150 -0
  70. package/dist/plugin-inference-oZ6Ybu2_.mjs +2447 -0
  71. package/dist/prepare-BAtWufvm.mjs +99 -0
  72. package/dist/preset-D4I73kT4.mjs +221 -0
  73. package/dist/project-TqORyHn8.mjs +72 -0
  74. package/dist/project-cmd-B7lQp3F3.mjs +67 -0
  75. package/dist/project-slug-CKam8lF9.mjs +11 -0
  76. package/dist/project-tsconfig-DfkESbDL.mjs +63 -0
  77. package/dist/protocol-BWzXs2A2.d.mts +34 -0
  78. package/dist/providers-B3aMxWzP.mjs +67 -0
  79. package/dist/resolve-project-Br5BR03U.mjs +29 -0
  80. package/dist/rollback-gyC59l7U.mjs +92 -0
  81. package/dist/route-types-DReF1gUY.mjs +255 -0
  82. package/dist/routes-stub.d.mts +55 -0
  83. package/dist/routes-stub.mjs +1 -0
  84. package/dist/runner-6Ep3fNQu.mjs +123 -0
  85. package/dist/runner-pg-D0wWHYnr.mjs +57 -0
  86. package/dist/runtime/ai.d.mts +127 -0
  87. package/dist/runtime/ai.mjs +348 -0
  88. package/dist/runtime/auth-client-react.d.mts +8 -0
  89. package/dist/runtime/auth-client-react.mjs +6 -0
  90. package/dist/runtime/auth-client-solid.d.mts +8 -0
  91. package/dist/runtime/auth-client-solid.mjs +6 -0
  92. package/dist/runtime/auth-client-svelte.d.mts +8 -0
  93. package/dist/runtime/auth-client-svelte.mjs +6 -0
  94. package/dist/runtime/auth-client-vue.d.mts +8 -0
  95. package/dist/runtime/auth-client-vue.mjs +6 -0
  96. package/dist/runtime/auth-client.d.mts +8 -0
  97. package/dist/runtime/auth-client.mjs +6 -0
  98. package/dist/runtime/auth.d.mts +2 -0
  99. package/dist/runtime/auth.mjs +22 -0
  100. package/dist/runtime/better-auth-pg.d.mts +11 -0
  101. package/dist/runtime/better-auth-pg.mjs +51 -0
  102. package/dist/runtime/better-auth.d.mts +11 -0
  103. package/dist/runtime/better-auth.mjs +33 -0
  104. package/dist/runtime/client.d.mts +6 -0
  105. package/dist/runtime/client.mjs +5 -0
  106. package/dist/runtime/db-pg.d.mts +2 -0
  107. package/dist/runtime/db-pg.mjs +1 -0
  108. package/dist/runtime/db.d.mts +17 -0
  109. package/dist/runtime/db.mjs +30 -0
  110. package/dist/runtime/drizzle-arktype.d.mts +1 -0
  111. package/dist/runtime/drizzle-arktype.mjs +2 -0
  112. package/dist/runtime/drizzle-valibot.d.mts +1 -0
  113. package/dist/runtime/drizzle-valibot.mjs +2 -0
  114. package/dist/runtime/drizzle-zod.d.mts +1 -0
  115. package/dist/runtime/drizzle-zod.mjs +2 -0
  116. package/dist/runtime/env-helpers.d.mts +2 -0
  117. package/dist/runtime/env-helpers.mjs +173 -0
  118. package/dist/runtime/env-public-client.d.mts +22 -0
  119. package/dist/runtime/env-public-client.mjs +54 -0
  120. package/dist/runtime/env-public.d.mts +143 -0
  121. package/dist/runtime/env-public.mjs +366 -0
  122. package/dist/runtime/env.d.mts +13 -0
  123. package/dist/runtime/env.mjs +51 -0
  124. package/dist/runtime/fetch-stream.d.mts +51 -0
  125. package/dist/runtime/fetch-stream.mjs +81 -0
  126. package/dist/runtime/fetch.d.mts +59 -0
  127. package/dist/runtime/fetch.mjs +18 -0
  128. package/dist/runtime/handler.d.mts +3 -0
  129. package/dist/runtime/handler.mjs +85 -0
  130. package/dist/runtime/isr.d.mts +26 -0
  131. package/dist/runtime/isr.mjs +43 -0
  132. package/dist/runtime/kv.d.mts +48 -0
  133. package/dist/runtime/kv.mjs +106 -0
  134. package/dist/runtime/log.d.mts +24 -0
  135. package/dist/runtime/log.mjs +31 -0
  136. package/dist/runtime/migration-handler-pg.d.mts +6 -0
  137. package/dist/runtime/migration-handler-pg.mjs +85 -0
  138. package/dist/runtime/migration-handler.d.mts +19 -0
  139. package/dist/runtime/migration-handler.mjs +92 -0
  140. package/dist/runtime/queues.d.mts +7 -0
  141. package/dist/runtime/queues.mjs +8 -0
  142. package/dist/runtime/remote/binding-handler.d.mts +15 -0
  143. package/dist/runtime/remote/binding-handler.mjs +208 -0
  144. package/dist/runtime/remote/index.d.mts +8 -0
  145. package/dist/runtime/remote/index.mjs +461 -0
  146. package/dist/runtime/response.d.mts +14 -0
  147. package/dist/runtime/response.mjs +30 -0
  148. package/dist/runtime/sandbox.d.mts +17 -0
  149. package/dist/runtime/sandbox.mjs +19 -0
  150. package/dist/runtime/schema-d1.d.mts +1 -0
  151. package/dist/runtime/schema-d1.mjs +2 -0
  152. package/dist/runtime/schema-pg.d.mts +1 -0
  153. package/dist/runtime/schema-pg.mjs +2 -0
  154. package/dist/runtime/seed.d.mts +30 -0
  155. package/dist/runtime/seed.mjs +6 -0
  156. package/dist/runtime/storage.d.mts +7 -0
  157. package/dist/runtime/storage.mjs +14 -0
  158. package/dist/runtime/validator.d.mts +2 -0
  159. package/dist/runtime/validator.mjs +72 -0
  160. package/dist/runtime/ws-server.d.mts +26 -0
  161. package/dist/runtime/ws-server.mjs +296 -0
  162. package/dist/runtime/ws.d.mts +123 -0
  163. package/dist/runtime/ws.mjs +103 -0
  164. package/dist/scan-Ba4hFwlH.mjs +324 -0
  165. package/dist/scan-C6HMEIdW.mjs +318 -0
  166. package/dist/secret-CeRSukgM.mjs +109 -0
  167. package/dist/skills-ipldjlKE.mjs +62 -0
  168. package/dist/standard-schema-9CRjx-uR.d.mts +42 -0
  169. package/dist/subcommand-prompt-BKjuNAPb.mjs +349 -0
  170. package/dist/sveltekit.d.mts +20 -0
  171. package/dist/sveltekit.mjs +61 -0
  172. package/dist/types-mHOEwpW4.d.mts +57 -0
  173. package/dist/validate-CaMavMxu.mjs +146 -0
  174. package/dist/yarn-pnp-BFqMV_bl.mjs +196 -0
  175. package/getting-started-prompt.txt +26 -0
  176. package/package.json +322 -30
  177. package/schema.json +364 -0
  178. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +175 -0
  179. package/skills/void/SKILL.md +75 -0
  180. package/skills/void/command/void.md +7 -0
  181. package/skills/void/docs/guide/ai.md +235 -0
  182. package/skills/void/docs/guide/app-types.md +103 -0
  183. package/skills/void/docs/guide/auth.md +257 -0
  184. package/skills/void/docs/guide/database/d1.md +106 -0
  185. package/skills/void/docs/guide/database/postgresql.md +106 -0
  186. package/skills/void/docs/guide/database.md +418 -0
  187. package/skills/void/docs/guide/deployment.md +98 -0
  188. package/skills/void/docs/guide/edge/headers.md +79 -0
  189. package/skills/void/docs/guide/edge/prerendering.md +83 -0
  190. package/skills/void/docs/guide/edge/redirects.md +116 -0
  191. package/skills/void/docs/guide/edge/revalidation.md +131 -0
  192. package/skills/void/docs/guide/edge/rewrites.md +354 -0
  193. package/skills/void/docs/guide/edge/static-assets.md +72 -0
  194. package/skills/void/docs/guide/env-vars.md +298 -0
  195. package/skills/void/docs/guide/index.md +80 -0
  196. package/skills/void/docs/guide/jobs.md +91 -0
  197. package/skills/void/docs/guide/kv.md +107 -0
  198. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +419 -0
  199. package/skills/void/docs/guide/pages-routing/head.md +130 -0
  200. package/skills/void/docs/guide/pages-routing/islands.md +405 -0
  201. package/skills/void/docs/guide/pages-routing/layouts.md +362 -0
  202. package/skills/void/docs/guide/pages-routing/loaders.md +267 -0
  203. package/skills/void/docs/guide/pages-routing/markdown.md +625 -0
  204. package/skills/void/docs/guide/pages-routing/overview.md +236 -0
  205. package/skills/void/docs/guide/pages-routing/view-transitions.md +140 -0
  206. package/skills/void/docs/guide/queues.md +140 -0
  207. package/skills/void/docs/guide/quickstart.md +233 -0
  208. package/skills/void/docs/guide/remote-dev.md +67 -0
  209. package/skills/void/docs/guide/sandboxes.md +82 -0
  210. package/skills/void/docs/guide/server-routing.md +246 -0
  211. package/skills/void/docs/guide/ssg.md +74 -0
  212. package/skills/void/docs/guide/ssr.md +105 -0
  213. package/skills/void/docs/guide/storage.md +67 -0
  214. package/skills/void/docs/guide/type-safety.md +179 -0
  215. package/skills/void/docs/guide/typed-fetch.md +113 -0
  216. package/skills/void/docs/guide/websockets.md +190 -0
  217. package/skills/void/docs/index.md +48 -0
  218. package/skills/void/docs/integrations/agents.md +84 -0
  219. package/skills/void/docs/integrations/cloudflare.md +284 -0
  220. package/skills/void/docs/integrations/frameworks/analog.md +182 -0
  221. package/skills/void/docs/integrations/frameworks/astro.md +197 -0
  222. package/skills/void/docs/integrations/frameworks/nuxt.md +164 -0
  223. package/skills/void/docs/integrations/frameworks/overview.md +136 -0
  224. package/skills/void/docs/integrations/frameworks/react-router.md +137 -0
  225. package/skills/void/docs/integrations/frameworks/sveltekit.md +191 -0
  226. package/skills/void/docs/integrations/frameworks/tanstack-start.md +140 -0
  227. package/skills/void/docs/integrations/hono.md +97 -0
  228. package/skills/void/docs/integrations/nodejs-bun-deno.md +210 -0
  229. package/skills/void/docs/node_modules/@iconify/vue/README.md +408 -0
  230. package/skills/void/docs/node_modules/@iconify/vue/offline/readme.md +5 -0
  231. package/skills/void/docs/node_modules/@voidzero-dev/vitepress-theme/README.md +103 -0
  232. package/skills/void/docs/node_modules/oxc-minify/README.md +78 -0
  233. package/skills/void/docs/node_modules/reka-ui/README.md +80 -0
  234. package/skills/void/docs/node_modules/vitepress/README.md +28 -0
  235. package/skills/void/docs/node_modules/vitepress/template/api-examples.md +49 -0
  236. package/skills/void/docs/node_modules/vitepress/template/index.md +28 -0
  237. package/skills/void/docs/node_modules/vitepress/template/markdown-examples.md +85 -0
  238. package/skills/void/docs/node_modules/vitepress-plugin-group-icons/README.md +101 -0
  239. package/skills/void/docs/node_modules/void/AGENTS.md +204 -0
  240. package/skills/void/docs/node_modules/void/AGENT_PROMPT.md +15 -0
  241. package/skills/void/docs/node_modules/void/README.md +89 -0
  242. package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/CHANGELOG.md +591 -0
  243. package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/README.md +375 -0
  244. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/sandbox/README.md +174 -0
  245. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/vite-plugin/README.md +37 -0
  246. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/workers-types/README.md +135 -0
  247. package/skills/void/docs/node_modules/void/node_modules/@electric-sql/pglite/README.md +189 -0
  248. package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/CHANGELOG.md +143 -0
  249. package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/README.md +1272 -0
  250. package/skills/void/docs/node_modules/void/node_modules/@napi-rs/keyring/README.md +19 -0
  251. package/skills/void/docs/node_modules/void/node_modules/@types/better-sqlite3/README.md +15 -0
  252. package/skills/void/docs/node_modules/void/node_modules/@types/node/README.md +15 -0
  253. package/skills/void/docs/node_modules/void/node_modules/@types/pg/README.md +15 -0
  254. package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/README.md +22 -0
  255. package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/vendor/vscode-jsonrpc/README.md +69 -0
  256. package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +152 -0
  257. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/engine-javascript/README.md +9 -0
  258. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/transformers/README.md +9 -0
  259. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@types/node/README.md +15 -0
  260. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/CHANGELOG.md +24 -0
  261. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/README.md +565 -0
  262. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-exit/README.md +124 -0
  263. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-anchor/README.md +600 -0
  264. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-attrs/README.md +386 -0
  265. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-container/README.md +95 -0
  266. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-emoji/README.md +101 -0
  267. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/pathe/README.md +73 -0
  268. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/shiki/README.md +15 -0
  269. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tinyglobby/README.md +25 -0
  270. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tsdown/README.md +55 -0
  271. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite/LICENSE.md +2230 -0
  272. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite/README.md +20 -0
  273. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vue/README.md +58 -0
  274. package/skills/void/docs/node_modules/void/node_modules/arktype/README.md +165 -0
  275. package/skills/void/docs/node_modules/void/node_modules/better-auth/LICENSE.md +20 -0
  276. package/skills/void/docs/node_modules/void/node_modules/better-auth/README.md +32 -0
  277. package/skills/void/docs/node_modules/void/node_modules/better-sqlite3/README.md +99 -0
  278. package/skills/void/docs/node_modules/void/node_modules/blake3-jit/README.md +108 -0
  279. package/skills/void/docs/node_modules/void/node_modules/drizzle-arktype/README.md +51 -0
  280. package/skills/void/docs/node_modules/void/node_modules/drizzle-kit/README.md +79 -0
  281. package/skills/void/docs/node_modules/void/node_modules/drizzle-orm/README.md +44 -0
  282. package/skills/void/docs/node_modules/void/node_modules/drizzle-valibot/README.md +51 -0
  283. package/skills/void/docs/node_modules/void/node_modules/drizzle-zod/README.md +65 -0
  284. package/skills/void/docs/node_modules/void/node_modules/es-module-lexer/README.md +390 -0
  285. package/skills/void/docs/node_modules/void/node_modules/estree-walker/README.md +48 -0
  286. package/skills/void/docs/node_modules/void/node_modules/hono/README.md +85 -0
  287. package/skills/void/docs/node_modules/void/node_modules/ignore/README.md +452 -0
  288. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/CHANGELOG.md +76 -0
  289. package/{LICENSE → skills/void/docs/node_modules/void/node_modules/jsonc-parser/LICENSE.md} +21 -21
  290. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/README.md +364 -0
  291. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/SECURITY.md +41 -0
  292. package/skills/void/docs/node_modules/void/node_modules/magic-string/README.md +325 -0
  293. package/skills/void/docs/node_modules/void/node_modules/ofetch/README.md +398 -0
  294. package/skills/void/docs/node_modules/void/node_modules/pathe/README.md +73 -0
  295. package/skills/void/docs/node_modules/void/node_modules/pg/README.md +95 -0
  296. package/skills/void/docs/node_modules/void/node_modules/pglite-server/LICENSE.md +21 -0
  297. package/skills/void/docs/node_modules/void/node_modules/pglite-server/README.md +135 -0
  298. package/skills/void/docs/node_modules/void/node_modules/picocolors/README.md +21 -0
  299. package/skills/void/docs/node_modules/void/node_modules/tinyglobby/README.md +25 -0
  300. package/skills/void/docs/node_modules/void/node_modules/tsdown/README.md +55 -0
  301. package/skills/void/docs/node_modules/void/node_modules/valibot/LICENSE.md +9 -0
  302. package/skills/void/docs/node_modules/void/node_modules/valibot/README.md +94 -0
  303. package/skills/void/docs/node_modules/void/node_modules/vite/LICENSE.md +2230 -0
  304. package/skills/void/docs/node_modules/void/node_modules/vite/README.md +20 -0
  305. package/skills/void/docs/node_modules/void/node_modules/wrangler/README.md +63 -0
  306. package/skills/void/docs/node_modules/void/node_modules/zod/README.md +191 -0
  307. package/skills/void/docs/node_modules/void/skills/migrate-vite-cloudflare-to-void/SKILL.md +175 -0
  308. package/skills/void/docs/node_modules/void/skills/void/SKILL.md +75 -0
  309. package/skills/void/docs/node_modules/void/skills/void/command/void.md +7 -0
  310. package/skills/void/docs/reference/api.md +917 -0
  311. package/skills/void/docs/reference/cli.md +561 -0
  312. package/skills/void/docs/reference/config.md +408 -0
  313. package/skills/void/docs/reference/resource-inference.md +149 -0
  314. package/skills/void/docs/reference/structure.md +176 -0
  315. package/.npmignore +0 -29
  316. package/.travis.yml +0 -9
  317. package/favicon.ico +0 -0
  318. package/index.js +0 -14
  319. package/lib/Job.js +0 -150
  320. package/lib/Void.js +0 -99
  321. package/lib/scan.js +0 -19
  322. package/test/credentials.js +0 -20
  323. package/test/job.js +0 -64
  324. package/test/static/dir1/test6.html +0 -0
  325. package/test/static/dir2/test7.html +0 -0
  326. package/test/static/dir2/test8.html +0 -0
  327. package/test/static/dir2/test9.html +0 -0
  328. package/test/static/test1.html +0 -0
  329. package/test/static/test2.html +0 -0
  330. package/test/static/test3.html +0 -0
  331. package/test/void.js +0 -31
  332. /package/{test/static/dir1/test4.html → skills/void/docs/integrations/auth-providers.md} +0 -0
  333. /package/{test/static/dir1/test5.html → skills/void/docs/integrations/payment-processors.md} +0 -0
package/schema.json ADDED
@@ -0,0 +1,364 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Void Configuration",
4
+ "description": "Configuration file for void projects (void.json)",
5
+ "type": "object",
6
+ "properties": {
7
+ "$schema": {
8
+ "type": "string",
9
+ "description": "JSON Schema URL for IDE support"
10
+ },
11
+ "target": {
12
+ "type": "string",
13
+ "enum": ["cloudflare", "node", "bun", "deno"],
14
+ "description": "Deploy target runtime. Defaults to \"cloudflare\". Non-CF targets disable bindings (D1, KV, R2, AI) and produce a plain Hono app."
15
+ },
16
+ "output": {
17
+ "type": "string",
18
+ "enum": ["server", "static"],
19
+ "description": "Output mode. \"server\" (default) serves all pages dynamically. \"static\" prerenders all pages at build time, writing HTML files to dist/client/."
20
+ },
21
+ "auth": {
22
+ "type": "object",
23
+ "description": "High-level Better Auth configuration. Use this to select built-in auth providers; use auth.ts for advanced Better Auth options.",
24
+ "properties": {
25
+ "providers": {
26
+ "type": "array",
27
+ "description": "Auth providers to enable. Include \"email\" for email/password auth. Social providers use standardized env vars like AUTH_GITHUB_CLIENT_ID and AUTH_GITHUB_CLIENT_SECRET.",
28
+ "items": {
29
+ "type": "string",
30
+ "enum": [
31
+ "email",
32
+ "apple",
33
+ "atlassian",
34
+ "cognito",
35
+ "discord",
36
+ "dropbox",
37
+ "facebook",
38
+ "figma",
39
+ "github",
40
+ "gitlab",
41
+ "google",
42
+ "huggingface",
43
+ "kakao",
44
+ "kick",
45
+ "line",
46
+ "linear",
47
+ "linkedin",
48
+ "microsoft",
49
+ "naver",
50
+ "notion",
51
+ "paybin",
52
+ "paypal",
53
+ "polar",
54
+ "railway",
55
+ "reddit",
56
+ "roblox",
57
+ "salesforce",
58
+ "slack",
59
+ "spotify",
60
+ "tiktok",
61
+ "twitch",
62
+ "twitter",
63
+ "vercel",
64
+ "vk",
65
+ "zoom"
66
+ ]
67
+ },
68
+ "minItems": 1,
69
+ "uniqueItems": true
70
+ }
71
+ },
72
+ "additionalProperties": false
73
+ },
74
+ "head": {
75
+ "type": "object",
76
+ "description": "Default <head> tags for all pages. Page-level head() exports override these defaults.",
77
+ "properties": {
78
+ "title": {
79
+ "type": "string",
80
+ "description": "Default page title"
81
+ },
82
+ "titleTemplate": {
83
+ "type": "string",
84
+ "description": "Title template — %s is replaced with the page title. Example: \"%s | My Site\""
85
+ },
86
+ "meta": {
87
+ "type": "array",
88
+ "description": "Default meta tags",
89
+ "items": {
90
+ "type": "object",
91
+ "properties": {
92
+ "name": { "type": "string" },
93
+ "property": { "type": "string" },
94
+ "content": { "type": "string" },
95
+ "charset": { "type": "string" }
96
+ },
97
+ "additionalProperties": false
98
+ }
99
+ },
100
+ "link": {
101
+ "type": "array",
102
+ "description": "Default link tags",
103
+ "items": {
104
+ "type": "object",
105
+ "properties": {
106
+ "rel": { "type": "string" },
107
+ "href": { "type": "string" }
108
+ },
109
+ "required": ["rel", "href"],
110
+ "additionalProperties": { "type": "string" }
111
+ }
112
+ },
113
+ "script": {
114
+ "type": "array",
115
+ "description": "Default script tags",
116
+ "items": {
117
+ "type": "object",
118
+ "properties": {
119
+ "src": { "type": "string" },
120
+ "innerHTML": { "type": "string" }
121
+ },
122
+ "additionalProperties": { "type": "string" }
123
+ }
124
+ },
125
+ "htmlAttrs": {
126
+ "type": "object",
127
+ "description": "Attributes to add to the <html> element. Example: { \"lang\": \"en\" }",
128
+ "additionalProperties": { "type": "string" }
129
+ },
130
+ "bodyAttrs": {
131
+ "type": "object",
132
+ "description": "Attributes to add to the <body> element",
133
+ "additionalProperties": { "type": "string" }
134
+ }
135
+ },
136
+ "additionalProperties": false
137
+ },
138
+ "routing": {
139
+ "type": "object",
140
+ "description": "Routing configuration — headers, redirects, rewrites, fallbacks, revalidation, prerendering.",
141
+ "properties": {
142
+ "revalidate": {
143
+ "description": "Edge caching TTL in seconds. A number sets a global TTL for all SSR pages. An object maps URL patterns to TTLs (first match wins). Set to 0 to disable caching for a path.",
144
+ "oneOf": [
145
+ {
146
+ "type": "number",
147
+ "minimum": 0
148
+ },
149
+ {
150
+ "type": "object",
151
+ "patternProperties": {
152
+ "^(/|\\*)": {
153
+ "type": "number",
154
+ "minimum": 0
155
+ }
156
+ },
157
+ "additionalProperties": false
158
+ }
159
+ ]
160
+ },
161
+ "prerender": {
162
+ "type": "array",
163
+ "items": { "type": "string", "pattern": "^/" },
164
+ "description": "Explicit paths to prerender at deploy time. Each path must start with \"/\"."
165
+ },
166
+ "headers": {
167
+ "type": "object",
168
+ "description": "Custom response headers for static assets. Keys are URL patterns (e.g. \"/assets/*\"), values are arrays of \"Name: value\" strings.",
169
+ "patternProperties": {
170
+ "^/": {
171
+ "type": "array",
172
+ "items": { "type": "string" },
173
+ "description": "Header strings in \"Name: value\" format"
174
+ }
175
+ },
176
+ "additionalProperties": false
177
+ },
178
+ "redirects": {
179
+ "type": "object",
180
+ "description": "URL redirects. Keys are source URL patterns (path-only `/path` or host-scoped `https://host/path`); values are destination strings (302) or objects with \"to\" and optional \"status\".",
181
+ "patternProperties": {
182
+ "^(/|https://)": {
183
+ "oneOf": [
184
+ { "type": "string" },
185
+ {
186
+ "type": "object",
187
+ "properties": {
188
+ "to": { "type": "string" },
189
+ "status": { "type": "integer", "enum": [301, 302, 303, 307, 308] }
190
+ },
191
+ "required": ["to"],
192
+ "additionalProperties": false
193
+ }
194
+ ]
195
+ }
196
+ },
197
+ "additionalProperties": false
198
+ },
199
+ "revalidateQueryAllowlist": {
200
+ "type": "object",
201
+ "description": "Query parameters that participate in ISR variant keys for dispatch rewrites. Keys are source URL patterns; values are arrays of query parameter names. When omitted, rewritten ISR drops every query parameter from the variant key.",
202
+ "patternProperties": {
203
+ "^(\\/|\\*$)": {
204
+ "type": "array",
205
+ "items": { "type": "string" }
206
+ }
207
+ },
208
+ "additionalProperties": false
209
+ },
210
+ "rewrites": {
211
+ "type": "object",
212
+ "description": "URL rewrites. Keys are source URL patterns (path-only `/path` or host-scoped `https://host/path`); values are destination paths. Serves content from the destination without changing the browser URL. Destinations must start with \"/\" and must not contain \"?\" — the incoming request's query string is preserved automatically.",
213
+ "patternProperties": {
214
+ "^(/|https://)": { "type": "string", "pattern": "^/[^?]*$" }
215
+ },
216
+ "additionalProperties": false
217
+ },
218
+ "fallbacks": {
219
+ "type": "object",
220
+ "description": "Fallback rewrites. Same shape as `rewrites`, but only fire when no static asset matched the request. Useful for SPA shells or default-locale catch-alls without pre-empting real routes. Destinations must start with \"/\" and must not contain \"?\".",
221
+ "patternProperties": {
222
+ "^(/|https://)": { "type": "string", "pattern": "^/[^?]*$" }
223
+ },
224
+ "additionalProperties": false
225
+ }
226
+ },
227
+ "additionalProperties": false
228
+ },
229
+ "inference": {
230
+ "type": "object",
231
+ "description": "Inference configuration — bindings, scanDirs, build, outputDir, appType.",
232
+ "properties": {
233
+ "bindings": {
234
+ "type": "object",
235
+ "description": "Explicitly control inferred Cloudflare bindings. If omitted, bindings are inferred by scanning source files.",
236
+ "properties": {
237
+ "db": {
238
+ "oneOf": [{ "type": "boolean" }, { "type": "string" }],
239
+ "description": "Enable D1 database binding. `true` uses default name \"DB\", a string sets a custom binding name."
240
+ },
241
+ "kv": {
242
+ "oneOf": [{ "type": "boolean" }, { "type": "string" }],
243
+ "description": "Enable KV namespace binding. `true` uses default name \"KV\", a string sets a custom binding name."
244
+ },
245
+ "storage": {
246
+ "oneOf": [{ "type": "boolean" }, { "type": "string" }],
247
+ "description": "Enable R2 bucket binding. `true` uses default name \"STORAGE\", a string sets a custom binding name."
248
+ },
249
+ "ai": {
250
+ "type": "boolean",
251
+ "description": "Enable Workers AI binding"
252
+ }
253
+ },
254
+ "additionalProperties": false
255
+ },
256
+ "scanDirs": {
257
+ "type": "array",
258
+ "items": { "type": "string" },
259
+ "description": "Directories to scan for binding inference, relative to the project root. Overrides the default scan directories."
260
+ },
261
+ "build": {
262
+ "type": "string",
263
+ "description": "Custom build command. Overrides the framework preset's default build command."
264
+ },
265
+ "outputDir": {
266
+ "type": "string",
267
+ "description": "Output directory for static deploys. Relative to project root."
268
+ },
269
+ "appType": {
270
+ "type": "string",
271
+ "enum": ["spa", "static", "void", "framework"],
272
+ "description": "App type. If omitted, auto-detected on first deploy."
273
+ }
274
+ },
275
+ "additionalProperties": false
276
+ },
277
+ "remote": {
278
+ "type": "boolean",
279
+ "description": "Connect to remote D1/KV/R2 bindings during local development. Can also be set via VOID_REMOTE=1 environment variable."
280
+ },
281
+ "sandbox": {
282
+ "description": "Enable Cloudflare Sandboxes. `true` uses the default SANDBOX binding and Cloudflare sandbox image; an object customizes the Durable Object binding, container image, and scaling.",
283
+ "oneOf": [
284
+ { "type": "boolean" },
285
+ {
286
+ "type": "object",
287
+ "properties": {
288
+ "binding": {
289
+ "type": "string",
290
+ "description": "Worker binding name for the sandbox Durable Object namespace. Defaults to SANDBOX."
291
+ },
292
+ "className": {
293
+ "type": "string",
294
+ "description": "Durable Object class name. Defaults to Sandbox."
295
+ },
296
+ "containerName": {
297
+ "type": "string",
298
+ "description": "Cloudflare Container application name. Defaults to void-sandbox."
299
+ },
300
+ "image": {
301
+ "type": "string",
302
+ "description": "Container image or Dockerfile path used by local Wrangler development."
303
+ },
304
+ "imageBuildContext": {
305
+ "type": "string",
306
+ "description": "Optional Docker build context path for local Wrangler development."
307
+ },
308
+ "platformImage": {
309
+ "type": "string",
310
+ "description": "Registry image reference used by `void deploy`. Required when `image` is a custom local Dockerfile path."
311
+ },
312
+ "instanceType": {
313
+ "type": "string",
314
+ "enum": [
315
+ "dev",
316
+ "lite",
317
+ "basic",
318
+ "standard",
319
+ "standard-1",
320
+ "standard-2",
321
+ "standard-3",
322
+ "standard-4"
323
+ ],
324
+ "description": "Cloudflare Container instance type."
325
+ },
326
+ "maxInstances": {
327
+ "type": "integer",
328
+ "minimum": 1,
329
+ "description": "Maximum number of sandbox container instances."
330
+ }
331
+ },
332
+ "additionalProperties": false
333
+ }
334
+ ]
335
+ },
336
+ "worker": {
337
+ "type": "object",
338
+ "description": "Curated wrangler config passthrough. Cloudflare-targeted apps require compatibility_date here unless provided by wrangler.jsonc/wrangler.json; Void pins the latest known-good date here if none is configured. Binding arrays (d1_databases, kv_namespaces, r2_buckets) are not allowed here — bindings are fully managed by void.",
339
+ "properties": {
340
+ "compatibility_date": {
341
+ "type": "string",
342
+ "description": "Cloudflare Workers compatibility date"
343
+ },
344
+ "compatibility_flags": {
345
+ "type": "array",
346
+ "items": { "type": "string" },
347
+ "description": "Cloudflare Workers compatibility flags"
348
+ },
349
+ "vars": {
350
+ "type": "object",
351
+ "description": "Environment variables (plain text, not secrets)",
352
+ "additionalProperties": { "type": "string" }
353
+ }
354
+ },
355
+ "additionalProperties": false
356
+ },
357
+ "database": {
358
+ "type": "string",
359
+ "enum": ["pg"],
360
+ "description": "Database backend. Omit for D1 (SQLite, default). Set to \"pg\" for PostgreSQL via Hyperdrive."
361
+ }
362
+ },
363
+ "additionalProperties": false
364
+ }
@@ -0,0 +1,175 @@
1
+ ---
2
+ name: migrate-cloudflare-to-void
3
+ description: Migrate an existing Vite app using @cloudflare/vite-plugin to Vite + void. Use when a project already runs on Cloudflare Workers but needs Void file-based routes, inferred bindings, and void deploy workflow.
4
+ ---
5
+
6
+ # Migrate Vite + Cloudflare Plugin to Void
7
+
8
+ ## When to use
9
+
10
+ Use this skill when the user has an existing Vite app with `@cloudflare/vite-plugin` and wants to migrate to `void` with minimal breakage.
11
+
12
+ Do not use this for greenfield apps started via `npm install -D void` + `npx void init`.
13
+
14
+ ## Inputs to gather first
15
+
16
+ Read these files before editing:
17
+
18
+ - `package.json`
19
+ - `vite.config.*`
20
+ - `wrangler.jsonc` (if present)
21
+ - Current worker entrypoint (`src/worker.*`, `src/index.*`, etc.)
22
+ - Any existing API handlers and migration SQL files
23
+
24
+ Confirm:
25
+
26
+ - existing routes/endpoints and HTTP methods
27
+ - bindings currently used (`DB`, `KV`, `R2`, etc.)
28
+ - whether the app uses framework SSR or only SPA + API
29
+
30
+ ## Migration workflow
31
+
32
+ 1. Update dependencies
33
+
34
+ - Remove `@cloudflare/vite-plugin` if it is only used for runtime/deploy.
35
+ - Add `void`.
36
+ - Keep existing framework plugins (React/Vue/Svelte/etc.).
37
+
38
+ 2. Update Vite config
39
+
40
+ - Replace `cloudflare(...)` plugin usage with `voidPlugin()`.
41
+ - Keep plugin order stable unless there is a known conflict.
42
+ - Keep unrelated Vite settings unchanged.
43
+
44
+ Target shape:
45
+
46
+ ```ts
47
+ import { defineConfig } from 'vite';
48
+ import { voidPlugin } from 'void';
49
+
50
+ export default defineConfig({
51
+ plugins: [voidPlugin()],
52
+ });
53
+ ```
54
+
55
+ 3. Migrate API surface to file-based routes
56
+
57
+ - Create `routes/` if missing.
58
+ - Convert each existing endpoint into route files:
59
+ - `routes/api/users.get.ts`
60
+ - `routes/api/users.post.ts`
61
+ - `routes/api/users/[id].get.ts`
62
+ - Use `defineHandler` from `void`.
63
+ - If there is shared logic, move it into regular modules and import from route files.
64
+
65
+ 4. Migrate middleware
66
+
67
+ - Move request-wide middleware to `middleware/*.ts`.
68
+ - Export with `defineMiddleware`.
69
+ - Preserve behavior order by filename prefix when needed (`01.auth.ts`, `02.logger.ts`).
70
+
71
+ 5. Preserve bindings with Void conventions
72
+
73
+ - Keep Cloudflare-style uppercase names on `c.env` (`DB`, `KV`, `STORAGE`, etc.).
74
+ - Remove manual binding config from Vite plugin config where Void now infers usage.
75
+ - Ensure route code actually references required bindings so inference can detect them.
76
+
77
+ 6. Migrations
78
+
79
+ - Place SQL files in `migrations/` (sorted by filename).
80
+ - Keep destructive operations gated by explicit pragma if needed.
81
+ - If old migrations live elsewhere, copy/rename into this directory with stable ordering.
82
+
83
+ 7. Deploy workflow migration
84
+
85
+ - Replace old deploy instructions with:
86
+ - `void auth login`
87
+ - `void deploy`
88
+ - If CI must target a specific project, use:
89
+ - `void deploy --project <slug>`
90
+ - or `VOID_PROJECT=<slug> void deploy`
91
+
92
+ 8. Post-migration cleanup (remove obsolete Wrangler wiring)
93
+
94
+ - If the app no longer uses direct Wrangler workflows, remove `wrangler.jsonc`.
95
+ - Remove direct `wrangler` dependency/devDependency from `package.json` when it is only used for old deploy/dev scripts.
96
+ - Remove or rewrite npm scripts that call `wrangler` directly (for example old deploy/publish scripts).
97
+ - Keep Wrangler only if the project still has explicit non-Void workflows that require it.
98
+
99
+ ## Routing behavior reference (use during file conversion)
100
+
101
+ Apply these filename rules exactly when mapping old handlers to `routes/`:
102
+
103
+ 1. Extension and suffix parsing order
104
+
105
+ - Strip extension (`.ts`, `.js`, `.mts`, `.mjs`).
106
+ - Strip env suffix (`.dev`, `.prod`).
107
+ - Strip HTTP method suffix (`.get`, `.post`, `.put`, `.delete`, `.patch`).
108
+ - Strip trailing `index` segment.
109
+ - Remove route group segments `(group-name)` from URL path.
110
+
111
+ 2. Method mapping
112
+
113
+ - `users.get.ts` matches only `GET /users`.
114
+ - `users.post.ts` matches only `POST /users`.
115
+ - `users.ts` matches all methods.
116
+ - Split multi-method handlers into one file per method when preserving behavior matters.
117
+
118
+ 3. Dynamic and catch-all params
119
+
120
+ - `[id]` -> `:id`
121
+ - `[...slug]` -> catch-all named param
122
+ - `[...]` -> catch-all unnamed fallback
123
+ - Use folder nesting for multiple params: `routes/api/org/[org]/repo/[repo].get.ts`.
124
+
125
+ 4. Route groups and organization
126
+
127
+ - Directories like `(internal)` are for code organization only and do not appear in URL.
128
+ - Use them when reorganizing large route sets without changing public paths.
129
+
130
+ 5. Ignored files
131
+
132
+ - Files or directories starting with `_` are ignored by route scanner.
133
+ - Do not place active handlers under `_legacy`, `_draft`, etc.
134
+
135
+ 6. Middleware behavior
136
+
137
+ - Middleware files live in `middleware/` and run in filename order.
138
+ - Prefix numerically if order is important (`01.auth.ts`, `02.logger.ts`).
139
+
140
+ 7. Concrete mapping examples
141
+
142
+ - `src/worker.ts` handling `GET /api/users/:id` -> `routes/api/users/[id].get.ts`
143
+ - single handler switching on method for `/api/users` -> `routes/api/users.get.ts` and `routes/api/users.post.ts`
144
+ - legacy `GET /health` endpoint -> `routes/health.get.ts`
145
+
146
+ ## Verification checklist
147
+
148
+ Run and validate:
149
+
150
+ 1. `npm run dev` (or project dev command)
151
+ 2. Exercise representative API routes locally.
152
+ 3. `npm run build`
153
+ 4. `void deploy` and verify live URL responds.
154
+ 5. Confirm no deploy-critical scripts still depend on `wrangler`.
155
+
156
+ In the Void deploy output, verify:
157
+
158
+ - worker modules uploaded
159
+ - static assets uploaded
160
+ - migrations applied (if present)
161
+
162
+ ## Common migration pitfalls
163
+
164
+ - Importing from the main `void` runtime in worker route files when a lighter handler import is expected by tooling.
165
+ - Forgetting to split method-specific handlers (`GET`/`POST`) into filename suffixes.
166
+ - Keeping old custom worker entry wiring that conflicts with generated route runtime.
167
+ - Binding names changed to lowercase (`db`) instead of expected uppercase (`DB`), breaking inference/provisioning.
168
+
169
+ ## Deliverable format
170
+
171
+ When applying this migration, produce:
172
+
173
+ 1. A change summary grouped by config/routes/migrations/CI.
174
+ 2. A list of moved or newly created route files.
175
+ 3. Exact commands to run locally and in CI.
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: void
3
+ description: Void skill for app development and CLI operations. Use this skill to route user requests to the appropriate bundled Void docs.
4
+ ---
5
+
6
+ # Void Skill
7
+
8
+ This skill is a router. Open the minimum relevant docs files under `docs/` and execute.
9
+
10
+ Docs in this skill are bundled from `docs/` during `void` package build and live at:
11
+
12
+ - `skills/void/docs/**/*.md`
13
+
14
+ ## Command Naming
15
+
16
+ Use `void` in examples and commands in this skill. For first-time setup, prefer `void init` followed by `void deploy`; in an empty directory, install `void` first and let `void init` add the matching Pages adapter and starter dependencies. In an existing app, `void init` configures Void in place by adding missing Vite scripts and creating or patching `vite.config.*` with `voidPlugin()`. `void init` can also handle auth and project linking interactively.
17
+
18
+ Use `void` and `@void/*` in code examples and package manifests.
19
+
20
+ ## No-Args Behavior
21
+
22
+ If invoked without a concrete task, do a brief app status check and report:
23
+
24
+ 1. App type (`void`, `framework`, `spa`, `static`) using `docs/app-types.md` criteria.
25
+ 2. Backend feature usage (`routes/`, `pages/`, `middleware/`, `migrations/`, `crons/`, `queues/`, SSR entries).
26
+ 3. Runtime signals (`void/db`, `void/kv`, `void/storage`, queue usage).
27
+ 4. Auth signals (`void/auth`, `auth` client imports, OAuth env vars).
28
+ 5. Project linkage (`.void/project.json`) and config readiness (`void.json`, tsconfig extends).
29
+ 6. Optional health checks (`void auth whoami`, `void db status` when relevant).
30
+
31
+ Then ask what to do next.
32
+
33
+ ## Task Routing
34
+
35
+ | User intent | Docs file(s) |
36
+ | ----------------------------------------- | ----------------------------------------------------------------------------------------- |
37
+ | CLI command syntax, flags, env vars | `docs/reference/cli.md` |
38
+ | Initial setup, onboarding, first app | `docs/guide/quickstart.md`, `docs/reference/cli.md` |
39
+ | App type detection and mode behavior | `docs/guide/app-types.md`, `docs/reference/config.md` |
40
+ | Server/API routing and middleware | `docs/guide/server-routing.md`, `docs/integrations/hono.md` |
41
+ | Pages mode, loader/action, forms, layouts | `docs/guide/pages-routing/*.md`, `docs/guide/type-safety.md` |
42
+ | Database and migrations | `docs/guide/database.md`, `docs/guide/type-safety.md` |
43
+ | Typed fetch and end-to-end typing | `docs/guide/typed-fetch.md`, `docs/guide/type-safety.md` |
44
+ | Authentication | `docs/guide/auth.md`, `docs/guide/env-vars.md` |
45
+ | Cloudflare runtime bindings and config | `docs/integrations/cloudflare.md`, `docs/reference/config.md`, `docs/guide/env-vars.md` |
46
+ | AI inference (Workers AI, providers) | `docs/guide/ai.md` |
47
+ | KV / storage / queues / cron jobs | `docs/guide/kv.md`, `docs/guide/storage.md`, `docs/guide/queues.md`, `docs/guide/jobs.md` |
48
+ | SSR and caching | `docs/guide/ssr.md`, `docs/guide/edge/*.md` |
49
+ | Rewrites, redirects, fallbacks | `docs/guide/edge/rewrites.md`, `docs/guide/edge/redirects.md`, `docs/reference/config.md` |
50
+ | Static site generation | `docs/guide/ssg.md` |
51
+ | Deployment and CI | `docs/guide/deployment.md`, `docs/reference/cli.md` |
52
+ | Project status, deployment history | `docs/reference/cli.md` |
53
+ | Cache purging | `docs/reference/cli.md` |
54
+ | Project logs, runtime errors | `docs/reference/cli.md` |
55
+ | Secrets management (put/sync/delete) | `docs/reference/cli.md`, `docs/guide/env-vars.md` |
56
+ | Typed env vars (`defineEnv`, `env.ts`) | `docs/guide/env-vars.md` |
57
+ | Custom domain setup | `docs/reference/cli.md` |
58
+ | Database status, reset, seed, export | `docs/reference/cli.md`, `docs/guide/database.md` |
59
+ | Auth login/logout/whoami | `docs/reference/cli.md` |
60
+ | Overview / introduction | `docs/guide/index.md` |
61
+ | API surface details | `docs/reference/api.md` |
62
+ | Meta framework integration | `docs/integrations/frameworks/*.md` |
63
+ | Coding agent setup | `docs/integrations/agents.md` |
64
+ | Node.js / Bun / Deno targets | `docs/integrations/nodejs-bun-deno.md` |
65
+ | ORMs and external databases | `docs/integrations/orms-and-external-dbs.md` |
66
+ | Project structure and conventions | `docs/reference/structure.md` |
67
+ | Resource/binding inference | `docs/reference/resource-inference.md` |
68
+
69
+ ## Working Rules
70
+
71
+ - For any task involving running `void` commands — including checking status, managing secrets, viewing logs, or deploying — open `docs/reference/cli.md` FIRST. Do not guess command syntax.
72
+ - Never guess or infer `void` CLI command names or flags. Always consult `docs/reference/cli.md` for the exact command before running it.
73
+ - For multi-topic tasks, combine only the needed doc files.
74
+ - If docs and memory differ, follow docs.
75
+ - **Env vars:** When the project has `env.ts`, the canonical access pattern is `import { env } from "void/env"`. Declare every env key in `env.ts` via `defineEnv({...})` so values are typed and validated. Do not introduce ad-hoc `process.env.X` or untyped `c.env.X` access in new code — add the key to `env.ts` first.
@@ -0,0 +1,7 @@
1
+ # `/void` Command Flow
2
+
3
+ 1. Open `SKILL.md`.
4
+ 2. If no task/arguments are provided, run the brief app status check from `SKILL.md`.
5
+ 3. If a task is provided, route to the smallest relevant set of `docs/*.md` files.
6
+ 4. For CLI syntax and flags, always use `docs/cli.md`.
7
+ 5. Execute, verify, and report concise next actions.