@take-out/cli 0.0.39

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 (331) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -0
  3. package/cli.mjs +3 -0
  4. package/dist/cjs/cli.cjs +71 -0
  5. package/dist/cjs/cli.js +70 -0
  6. package/dist/cjs/cli.js.map +6 -0
  7. package/dist/cjs/cli.native.js +79 -0
  8. package/dist/cjs/cli.native.js.map +6 -0
  9. package/dist/cjs/commands/changed.cjs +212 -0
  10. package/dist/cjs/commands/changed.js +214 -0
  11. package/dist/cjs/commands/changed.js.map +6 -0
  12. package/dist/cjs/commands/changed.native.js +289 -0
  13. package/dist/cjs/commands/changed.native.js.map +6 -0
  14. package/dist/cjs/commands/docs.cjs +388 -0
  15. package/dist/cjs/commands/docs.js +313 -0
  16. package/dist/cjs/commands/docs.js.map +6 -0
  17. package/dist/cjs/commands/docs.native.js +476 -0
  18. package/dist/cjs/commands/docs.native.js.map +6 -0
  19. package/dist/cjs/commands/env-setup.cjs +90 -0
  20. package/dist/cjs/commands/env-setup.js +78 -0
  21. package/dist/cjs/commands/env-setup.js.map +6 -0
  22. package/dist/cjs/commands/env-setup.native.js +85 -0
  23. package/dist/cjs/commands/env-setup.native.js.map +6 -0
  24. package/dist/cjs/commands/onboard.cjs +479 -0
  25. package/dist/cjs/commands/onboard.js +631 -0
  26. package/dist/cjs/commands/onboard.js.map +6 -0
  27. package/dist/cjs/commands/onboard.native.js +608 -0
  28. package/dist/cjs/commands/onboard.native.js.map +6 -0
  29. package/dist/cjs/commands/run.cjs +148 -0
  30. package/dist/cjs/commands/run.js +116 -0
  31. package/dist/cjs/commands/run.js.map +6 -0
  32. package/dist/cjs/commands/run.native.js +140 -0
  33. package/dist/cjs/commands/run.native.js.map +6 -0
  34. package/dist/cjs/commands/script.cjs +379 -0
  35. package/dist/cjs/commands/script.js +339 -0
  36. package/dist/cjs/commands/script.js.map +6 -0
  37. package/dist/cjs/commands/script.native.js +449 -0
  38. package/dist/cjs/commands/script.native.js.map +6 -0
  39. package/dist/cjs/commands/sync.cjs +190 -0
  40. package/dist/cjs/commands/sync.js +168 -0
  41. package/dist/cjs/commands/sync.js.map +6 -0
  42. package/dist/cjs/commands/sync.native.js +211 -0
  43. package/dist/cjs/commands/sync.native.js.map +6 -0
  44. package/dist/cjs/constants/ascii.cjs +36 -0
  45. package/dist/cjs/constants/ascii.js +30 -0
  46. package/dist/cjs/constants/ascii.js.map +6 -0
  47. package/dist/cjs/constants/ascii.native.js +36 -0
  48. package/dist/cjs/constants/ascii.native.js.map +6 -0
  49. package/dist/cjs/index.cjs +64 -0
  50. package/dist/cjs/index.js +55 -0
  51. package/dist/cjs/index.js.map +6 -0
  52. package/dist/cjs/index.native.js +94 -0
  53. package/dist/cjs/index.native.js.map +6 -0
  54. package/dist/cjs/types.cjs +16 -0
  55. package/dist/cjs/types.js +14 -0
  56. package/dist/cjs/types.js.map +6 -0
  57. package/dist/cjs/types.native.js +15 -0
  58. package/dist/cjs/types.native.js.map +6 -0
  59. package/dist/cjs/utils/env-categories.cjs +272 -0
  60. package/dist/cjs/utils/env-categories.js +296 -0
  61. package/dist/cjs/utils/env-categories.js.map +6 -0
  62. package/dist/cjs/utils/env-categories.native.js +317 -0
  63. package/dist/cjs/utils/env-categories.native.js.map +6 -0
  64. package/dist/cjs/utils/env-setup.cjs +181 -0
  65. package/dist/cjs/utils/env-setup.js +190 -0
  66. package/dist/cjs/utils/env-setup.js.map +6 -0
  67. package/dist/cjs/utils/env-setup.native.js +264 -0
  68. package/dist/cjs/utils/env-setup.native.js.map +6 -0
  69. package/dist/cjs/utils/env.cjs +118 -0
  70. package/dist/cjs/utils/env.js +97 -0
  71. package/dist/cjs/utils/env.js.map +6 -0
  72. package/dist/cjs/utils/env.native.js +128 -0
  73. package/dist/cjs/utils/env.native.js.map +6 -0
  74. package/dist/cjs/utils/files.cjs +215 -0
  75. package/dist/cjs/utils/files.js +164 -0
  76. package/dist/cjs/utils/files.js.map +6 -0
  77. package/dist/cjs/utils/files.native.js +266 -0
  78. package/dist/cjs/utils/files.native.js.map +6 -0
  79. package/dist/cjs/utils/parallel-runner.cjs +99 -0
  80. package/dist/cjs/utils/parallel-runner.js +84 -0
  81. package/dist/cjs/utils/parallel-runner.js.map +6 -0
  82. package/dist/cjs/utils/parallel-runner.native.js +123 -0
  83. package/dist/cjs/utils/parallel-runner.native.js.map +6 -0
  84. package/dist/cjs/utils/ports.cjs +101 -0
  85. package/dist/cjs/utils/ports.js +81 -0
  86. package/dist/cjs/utils/ports.js.map +6 -0
  87. package/dist/cjs/utils/ports.native.js +130 -0
  88. package/dist/cjs/utils/ports.native.js.map +6 -0
  89. package/dist/cjs/utils/prerequisites.cjs +119 -0
  90. package/dist/cjs/utils/prerequisites.js +107 -0
  91. package/dist/cjs/utils/prerequisites.js.map +6 -0
  92. package/dist/cjs/utils/prerequisites.native.js +127 -0
  93. package/dist/cjs/utils/prerequisites.native.js.map +6 -0
  94. package/dist/cjs/utils/prompts.cjs +161 -0
  95. package/dist/cjs/utils/prompts.js +162 -0
  96. package/dist/cjs/utils/prompts.js.map +6 -0
  97. package/dist/cjs/utils/prompts.native.js +179 -0
  98. package/dist/cjs/utils/prompts.native.js.map +6 -0
  99. package/dist/cjs/utils/script-listing.cjs +113 -0
  100. package/dist/cjs/utils/script-listing.js +108 -0
  101. package/dist/cjs/utils/script-listing.js.map +6 -0
  102. package/dist/cjs/utils/script-listing.native.js +174 -0
  103. package/dist/cjs/utils/script-listing.native.js.map +6 -0
  104. package/dist/cjs/utils/sync.cjs +85 -0
  105. package/dist/cjs/utils/sync.js +70 -0
  106. package/dist/cjs/utils/sync.js.map +6 -0
  107. package/dist/cjs/utils/sync.native.js +84 -0
  108. package/dist/cjs/utils/sync.native.js.map +6 -0
  109. package/dist/cjs/utils/welcome.cjs +50 -0
  110. package/dist/cjs/utils/welcome.js +42 -0
  111. package/dist/cjs/utils/welcome.js.map +6 -0
  112. package/dist/cjs/utils/welcome.native.js +47 -0
  113. package/dist/cjs/utils/welcome.native.js.map +6 -0
  114. package/dist/esm/cli.js +79 -0
  115. package/dist/esm/cli.js.map +6 -0
  116. package/dist/esm/cli.mjs +71 -0
  117. package/dist/esm/cli.mjs.map +1 -0
  118. package/dist/esm/cli.native.js +69 -0
  119. package/dist/esm/cli.native.js.map +1 -0
  120. package/dist/esm/commands/changed.js +194 -0
  121. package/dist/esm/commands/changed.js.map +6 -0
  122. package/dist/esm/commands/changed.mjs +178 -0
  123. package/dist/esm/commands/changed.mjs.map +1 -0
  124. package/dist/esm/commands/changed.native.js +273 -0
  125. package/dist/esm/commands/changed.native.js.map +1 -0
  126. package/dist/esm/commands/docs.js +306 -0
  127. package/dist/esm/commands/docs.js.map +6 -0
  128. package/dist/esm/commands/docs.mjs +353 -0
  129. package/dist/esm/commands/docs.mjs.map +1 -0
  130. package/dist/esm/commands/docs.native.js +516 -0
  131. package/dist/esm/commands/docs.native.js.map +1 -0
  132. package/dist/esm/commands/env-setup.js +56 -0
  133. package/dist/esm/commands/env-setup.js.map +6 -0
  134. package/dist/esm/commands/env-setup.mjs +56 -0
  135. package/dist/esm/commands/env-setup.mjs.map +1 -0
  136. package/dist/esm/commands/env-setup.native.js +59 -0
  137. package/dist/esm/commands/env-setup.native.js.map +1 -0
  138. package/dist/esm/commands/onboard.js +645 -0
  139. package/dist/esm/commands/onboard.js.map +6 -0
  140. package/dist/esm/commands/onboard.mjs +445 -0
  141. package/dist/esm/commands/onboard.mjs.map +1 -0
  142. package/dist/esm/commands/onboard.native.js +584 -0
  143. package/dist/esm/commands/onboard.native.js.map +1 -0
  144. package/dist/esm/commands/run.js +95 -0
  145. package/dist/esm/commands/run.js.map +6 -0
  146. package/dist/esm/commands/run.mjs +114 -0
  147. package/dist/esm/commands/run.mjs.map +1 -0
  148. package/dist/esm/commands/run.native.js +133 -0
  149. package/dist/esm/commands/run.native.js.map +1 -0
  150. package/dist/esm/commands/script.js +338 -0
  151. package/dist/esm/commands/script.js.map +6 -0
  152. package/dist/esm/commands/script.mjs +336 -0
  153. package/dist/esm/commands/script.mjs.map +1 -0
  154. package/dist/esm/commands/script.native.js +445 -0
  155. package/dist/esm/commands/script.native.js.map +1 -0
  156. package/dist/esm/commands/sync.js +158 -0
  157. package/dist/esm/commands/sync.js.map +6 -0
  158. package/dist/esm/commands/sync.mjs +155 -0
  159. package/dist/esm/commands/sync.mjs.map +1 -0
  160. package/dist/esm/commands/sync.native.js +173 -0
  161. package/dist/esm/commands/sync.native.js.map +1 -0
  162. package/dist/esm/constants/ascii.js +14 -0
  163. package/dist/esm/constants/ascii.js.map +6 -0
  164. package/dist/esm/constants/ascii.mjs +12 -0
  165. package/dist/esm/constants/ascii.mjs.map +1 -0
  166. package/dist/esm/constants/ascii.native.js +12 -0
  167. package/dist/esm/constants/ascii.native.js.map +1 -0
  168. package/dist/esm/index.js +83 -0
  169. package/dist/esm/index.js.map +6 -0
  170. package/dist/esm/index.mjs +7 -0
  171. package/dist/esm/index.mjs.map +1 -0
  172. package/dist/esm/index.native.js +7 -0
  173. package/dist/esm/index.native.js.map +1 -0
  174. package/dist/esm/types.js +1 -0
  175. package/dist/esm/types.js.map +6 -0
  176. package/dist/esm/types.mjs +2 -0
  177. package/dist/esm/types.mjs.map +1 -0
  178. package/dist/esm/types.native.js +2 -0
  179. package/dist/esm/types.native.js.map +1 -0
  180. package/dist/esm/utils/env-categories.js +272 -0
  181. package/dist/esm/utils/env-categories.js.map +6 -0
  182. package/dist/esm/utils/env-categories.mjs +233 -0
  183. package/dist/esm/utils/env-categories.mjs.map +1 -0
  184. package/dist/esm/utils/env-categories.native.js +246 -0
  185. package/dist/esm/utils/env-categories.native.js.map +1 -0
  186. package/dist/esm/utils/env-setup.js +173 -0
  187. package/dist/esm/utils/env-setup.js.map +6 -0
  188. package/dist/esm/utils/env-setup.mjs +146 -0
  189. package/dist/esm/utils/env-setup.mjs.map +1 -0
  190. package/dist/esm/utils/env-setup.native.js +243 -0
  191. package/dist/esm/utils/env-setup.native.js.map +1 -0
  192. package/dist/esm/utils/env.js +83 -0
  193. package/dist/esm/utils/env.js.map +6 -0
  194. package/dist/esm/utils/env.mjs +90 -0
  195. package/dist/esm/utils/env.mjs.map +1 -0
  196. package/dist/esm/utils/env.native.js +99 -0
  197. package/dist/esm/utils/env.native.js.map +1 -0
  198. package/dist/esm/utils/files.js +150 -0
  199. package/dist/esm/utils/files.js.map +6 -0
  200. package/dist/esm/utils/files.mjs +187 -0
  201. package/dist/esm/utils/files.mjs.map +1 -0
  202. package/dist/esm/utils/files.native.js +247 -0
  203. package/dist/esm/utils/files.native.js.map +1 -0
  204. package/dist/esm/utils/parallel-runner.js +69 -0
  205. package/dist/esm/utils/parallel-runner.js.map +6 -0
  206. package/dist/esm/utils/parallel-runner.mjs +76 -0
  207. package/dist/esm/utils/parallel-runner.mjs.map +1 -0
  208. package/dist/esm/utils/parallel-runner.native.js +109 -0
  209. package/dist/esm/utils/parallel-runner.native.js.map +1 -0
  210. package/dist/esm/utils/ports.js +65 -0
  211. package/dist/esm/utils/ports.js.map +6 -0
  212. package/dist/esm/utils/ports.mjs +74 -0
  213. package/dist/esm/utils/ports.mjs.map +1 -0
  214. package/dist/esm/utils/ports.native.js +93 -0
  215. package/dist/esm/utils/ports.native.js.map +1 -0
  216. package/dist/esm/utils/prerequisites.js +91 -0
  217. package/dist/esm/utils/prerequisites.js.map +6 -0
  218. package/dist/esm/utils/prerequisites.mjs +91 -0
  219. package/dist/esm/utils/prerequisites.mjs.map +1 -0
  220. package/dist/esm/utils/prerequisites.native.js +97 -0
  221. package/dist/esm/utils/prerequisites.native.js.map +1 -0
  222. package/dist/esm/utils/prompts.js +139 -0
  223. package/dist/esm/utils/prompts.js.map +6 -0
  224. package/dist/esm/utils/prompts.mjs +112 -0
  225. package/dist/esm/utils/prompts.mjs.map +1 -0
  226. package/dist/esm/utils/prompts.native.js +115 -0
  227. package/dist/esm/utils/prompts.native.js.map +1 -0
  228. package/dist/esm/utils/script-listing.js +91 -0
  229. package/dist/esm/utils/script-listing.js.map +6 -0
  230. package/dist/esm/utils/script-listing.mjs +76 -0
  231. package/dist/esm/utils/script-listing.mjs.map +1 -0
  232. package/dist/esm/utils/script-listing.native.js +151 -0
  233. package/dist/esm/utils/script-listing.native.js.map +1 -0
  234. package/dist/esm/utils/sync.js +50 -0
  235. package/dist/esm/utils/sync.js.map +6 -0
  236. package/dist/esm/utils/sync.mjs +48 -0
  237. package/dist/esm/utils/sync.mjs.map +1 -0
  238. package/dist/esm/utils/sync.native.js +53 -0
  239. package/dist/esm/utils/sync.native.js.map +1 -0
  240. package/dist/esm/utils/welcome.js +21 -0
  241. package/dist/esm/utils/welcome.js.map +6 -0
  242. package/dist/esm/utils/welcome.mjs +15 -0
  243. package/dist/esm/utils/welcome.mjs.map +1 -0
  244. package/dist/esm/utils/welcome.native.js +18 -0
  245. package/dist/esm/utils/welcome.native.js.map +1 -0
  246. package/docs/aggregates.md +579 -0
  247. package/docs/cloudflare-dev-tunnel.md +41 -0
  248. package/docs/database.md +203 -0
  249. package/docs/docs.md +8 -0
  250. package/docs/emitters.md +562 -0
  251. package/docs/hot-updater.md +223 -0
  252. package/docs/native-hot-update.md +252 -0
  253. package/docs/one-components.md +234 -0
  254. package/docs/one-hooks.md +570 -0
  255. package/docs/one-routes.md +660 -0
  256. package/docs/package-json.md +115 -0
  257. package/docs/react-native-navigation-flow.md +184 -0
  258. package/docs/scripts.md +147 -0
  259. package/docs/sync-prompt.md +208 -0
  260. package/docs/tamagui.md +478 -0
  261. package/docs/testing-integration.md +564 -0
  262. package/docs/triggers.md +450 -0
  263. package/docs/zero.md +719 -0
  264. package/package.json +76 -0
  265. package/scripts/seed.ts +209 -0
  266. package/src/cli.ts +147 -0
  267. package/src/commands/changed.ts +313 -0
  268. package/src/commands/docs.ts +582 -0
  269. package/src/commands/env-setup.ts +69 -0
  270. package/src/commands/onboard.ts +1391 -0
  271. package/src/commands/run.ts +173 -0
  272. package/src/commands/script.ts +587 -0
  273. package/src/commands/sync.ts +305 -0
  274. package/src/constants/ascii.ts +17 -0
  275. package/src/index.ts +63 -0
  276. package/src/types.ts +59 -0
  277. package/src/utils/env-categories.ts +245 -0
  278. package/src/utils/env-setup.ts +338 -0
  279. package/src/utils/env.ts +127 -0
  280. package/src/utils/files.ts +302 -0
  281. package/src/utils/parallel-runner.ts +129 -0
  282. package/src/utils/ports.ts +77 -0
  283. package/src/utils/prerequisites.ts +137 -0
  284. package/src/utils/prompts.ts +197 -0
  285. package/src/utils/script-listing.ts +214 -0
  286. package/src/utils/sync.ts +101 -0
  287. package/src/withOpSqliteStatic.cjs +51 -0
  288. package/types/cli.d.ts +7 -0
  289. package/types/cli.d.ts.map +1 -0
  290. package/types/commands/changed.d.ts +14 -0
  291. package/types/commands/changed.d.ts.map +1 -0
  292. package/types/commands/docs.d.ts +5 -0
  293. package/types/commands/docs.d.ts.map +1 -0
  294. package/types/commands/env-setup.d.ts +25 -0
  295. package/types/commands/env-setup.d.ts.map +1 -0
  296. package/types/commands/onboard.d.ts +16 -0
  297. package/types/commands/onboard.d.ts.map +1 -0
  298. package/types/commands/run.d.ts +8 -0
  299. package/types/commands/run.d.ts.map +1 -0
  300. package/types/commands/script.d.ts +28 -0
  301. package/types/commands/script.d.ts.map +1 -0
  302. package/types/commands/sync.d.ts +5 -0
  303. package/types/commands/sync.d.ts.map +1 -0
  304. package/types/constants/ascii.d.ts +6 -0
  305. package/types/constants/ascii.d.ts.map +1 -0
  306. package/types/index.d.ts +12 -0
  307. package/types/index.d.ts.map +1 -0
  308. package/types/types.d.ts +54 -0
  309. package/types/types.d.ts.map +1 -0
  310. package/types/utils/env-categories.d.ts +8 -0
  311. package/types/utils/env-categories.d.ts.map +1 -0
  312. package/types/utils/env-setup.d.ts +10 -0
  313. package/types/utils/env-setup.d.ts.map +1 -0
  314. package/types/utils/env.d.ts +19 -0
  315. package/types/utils/env.d.ts.map +1 -0
  316. package/types/utils/files.d.ts +47 -0
  317. package/types/utils/files.d.ts.map +1 -0
  318. package/types/utils/parallel-runner.d.ts +15 -0
  319. package/types/utils/parallel-runner.d.ts.map +1 -0
  320. package/types/utils/ports.d.ts +16 -0
  321. package/types/utils/ports.d.ts.map +1 -0
  322. package/types/utils/prerequisites.d.ts +11 -0
  323. package/types/utils/prerequisites.d.ts.map +1 -0
  324. package/types/utils/prompts.d.ts +30 -0
  325. package/types/utils/prompts.d.ts.map +1 -0
  326. package/types/utils/script-listing.d.ts +7 -0
  327. package/types/utils/script-listing.d.ts.map +1 -0
  328. package/types/utils/sync.d.ts +16 -0
  329. package/types/utils/sync.d.ts.map +1 -0
  330. package/types/utils/welcome.d.ts +6 -0
  331. package/types/utils/welcome.d.ts.map +1 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 vxrn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,274 @@
1
+ # @take-out/cli
2
+
3
+ CLI tools for Takeout starter kit - interactive onboarding, project setup,
4
+ scripts and script running.
5
+
6
+ ## Features
7
+
8
+ - 🚀 Interactive onboarding wizard
9
+ - ✅ Prerequisite checking (Bun, Docker, Node, Git)
10
+ - 🔧 Environment file setup with secret generation
11
+ - 📦 Project identity customization
12
+ - 🐳 Docker service orchestration
13
+ - 🗄️ Database migration automation
14
+ - 📚 Documentation management with Claude Code Skills support
15
+ - 🎨 Beautiful CLI interface with @clack/prompts
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install @take-out/cli
21
+ # or
22
+ bun add @take-out/cli
23
+ # or
24
+ pnpm add @take-out/cli
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ ### CLI Commands
30
+
31
+ #### `takeout onboard`
32
+
33
+ Interactive onboarding for new Takeout projects:
34
+
35
+ ```bash
36
+ takeout onboard
37
+ ```
38
+
39
+ This will guide you through:
40
+
41
+ 1. Prerequisites verification (Bun, Docker, Node, Git)
42
+ 2. Environment file setup (.env from .env.development)
43
+ 3. Secret generation (BETTER_AUTH_SECRET)
44
+ 4. Project identity customization (name, bundle ID, domain)
45
+ 5. Docker service startup (PostgreSQL, Zero, MinIO)
46
+ 6. Database migrations
47
+
48
+ **Options:**
49
+
50
+ - `--skip` - Skip interactive prompts
51
+
52
+ #### `takeout check`
53
+
54
+ Quick prerequisite check (used in postinstall):
55
+
56
+ ```bash
57
+ takeout check
58
+ ```
59
+
60
+ **Options:**
61
+
62
+ - `--silent` - Run silently with no output
63
+
64
+ #### `takeout docs`
65
+
66
+ Manage and retrieve documentation files:
67
+
68
+ ```bash
69
+ # list available docs
70
+ takeout docs list
71
+
72
+ # get doc content (for hooks)
73
+ takeout docs get zero tamagui
74
+
75
+ # get path to docs directory
76
+ takeout docs path
77
+
78
+ # eject docs to local ./docs folder
79
+ takeout docs eject
80
+
81
+ # generate Claude Code skills from docs
82
+ takeout docs skills
83
+ takeout docs skills --clean # clean and regenerate
84
+ ```
85
+
86
+ ##### Claude Code Skills
87
+
88
+ The `docs skills` command generates Claude Code skills from your documentation:
89
+
90
+ 1. scans docs from both `./docs/` (local) and package docs
91
+ 2. for docs with YAML frontmatter, creates symlinks to `.claude/skills/`
92
+ 3. for docs without frontmatter, generates skill files with auto-extracted metadata
93
+
94
+ **adding frontmatter to docs (recommended):**
95
+
96
+ ```markdown
97
+ ---
98
+ name: my-skill
99
+ description: What this skill does. Keywords for when Claude should use it.
100
+ ---
101
+
102
+ # my skill
103
+
104
+ content here...
105
+ ```
106
+
107
+ docs with frontmatter get symlinked directly - edit the source and the skill
108
+ updates automatically. docs without frontmatter get generated copies.
109
+
110
+ **regenerating skills:**
111
+
112
+ ```bash
113
+ # regenerate after doc changes
114
+ bun tko docs skills
115
+
116
+ # clean and regenerate all
117
+ bun tko docs skills --clean
118
+ ```
119
+
120
+ skills are gitignored by default (`.claude/skills`).
121
+
122
+ ### Programmatic Usage
123
+
124
+ Import utilities for use in custom scripts:
125
+
126
+ ```typescript
127
+ import {
128
+ checkAllPrerequisites,
129
+ checkAllPorts,
130
+ generateSecret,
131
+ updateEnvVariable,
132
+ displayWelcome,
133
+ } from '@take-out/cli'
134
+
135
+ // Check prerequisites
136
+ const checks = checkAllPrerequisites()
137
+ console.log(checks)
138
+
139
+ // Check port conflicts
140
+ const ports = checkAllPorts()
141
+ console.log(ports)
142
+
143
+ // Generate auth secret
144
+ const secret = generateSecret()
145
+ console.log(secret)
146
+
147
+ // Update environment variable
148
+ updateEnvVariable(process.cwd(), 'BETTER_AUTH_SECRET', secret)
149
+
150
+ // Display welcome message
151
+ displayWelcome('My App')
152
+ ```
153
+
154
+ ## API
155
+
156
+ ### Prerequisites
157
+
158
+ ```typescript
159
+ checkAllPrerequisites(): PrerequisiteCheck[]
160
+ checkBun(): PrerequisiteCheck
161
+ checkNode(): PrerequisiteCheck
162
+ checkDocker(): PrerequisiteCheck
163
+ checkGit(): PrerequisiteCheck
164
+ hasRequiredPrerequisites(checks: PrerequisiteCheck[]): boolean
165
+ ```
166
+
167
+ ### Ports
168
+
169
+ ```typescript
170
+ checkAllPorts(): PortCheck[]
171
+ checkPort(port: number, name: string): PortCheck
172
+ hasPortConflicts(checks: PortCheck[]): boolean
173
+ getConflictingPorts(checks: PortCheck[]): PortCheck[]
174
+
175
+ TAKEOUT_PORTS = {
176
+ postgres: 5432,
177
+ zero: 4848,
178
+ web: 8081,
179
+ minio: 9090,
180
+ minioConsole: 9091,
181
+ }
182
+ ```
183
+
184
+ ### Environment
185
+
186
+ ```typescript
187
+ generateSecret(length?: number): string
188
+ envFileExists(cwd: string, filename?: string): boolean
189
+ copyEnvFile(cwd: string, source: string, target: string): Result
190
+ updateEnvVariable(cwd: string, key: string, value: string, filename?: string): Result
191
+ createEnvLocal(cwd: string): Result
192
+ readEnvVariable(cwd: string, key: string, filename?: string): string | null
193
+ ```
194
+
195
+ ### Files
196
+
197
+ ```typescript
198
+ updatePackageJson(cwd: string, updates: { name?: string; description?: string }): Result
199
+ updateAppConfig(cwd: string, updates: { name?: string; slug?: string; bundleId?: string }): Result
200
+ checkOnboarded(cwd: string): boolean
201
+ markOnboarded(cwd: string): Result
202
+ ```
203
+
204
+ ### Prompts
205
+
206
+ ```typescript
207
+ displayWelcome(projectName?: string): void
208
+ displayOutro(message: string): void
209
+ displayPrerequisites(checks: PrerequisiteCheck[]): void
210
+ displayPortConflicts(conflicts: PortCheck[]): void
211
+ confirmContinue(message: string, defaultValue?: boolean): Promise<boolean>
212
+ promptText(message: string, defaultValue?: string, placeholder?: string): Promise<string>
213
+ promptPassword(message: string, placeholder?: string): Promise<string>
214
+ promptSelect<T>(message: string, options: Array<{value: T; label: string; hint?: string}>): Promise<T>
215
+ showSpinner(message: string): Spinner
216
+ showError(message: string): void
217
+ showWarning(message: string): void
218
+ showSuccess(message: string): void
219
+ showInfo(message: string): void
220
+ showStep(message: string): void
221
+ ```
222
+
223
+ ## Integration with Takeout
224
+
225
+ Add to your `package.json`:
226
+
227
+ ```json
228
+ {
229
+ "scripts": {
230
+ "onboard": "takeout onboard",
231
+ "postinstall": "takeout check"
232
+ },
233
+ "dependencies": {
234
+ "@take-out/cli": "^0.0.1"
235
+ }
236
+ }
237
+ ```
238
+
239
+ Then users can run:
240
+
241
+ ```bash
242
+ bun install
243
+ bun onboard
244
+ ```
245
+
246
+ ## Development
247
+
248
+ ```bash
249
+ # Install dependencies
250
+ bun install
251
+
252
+ # Build
253
+ bun run build
254
+
255
+ # Watch mode
256
+ bun run watch
257
+
258
+ # Lint
259
+ bun run lint
260
+
261
+ # Lint and fix
262
+ bun run lint:fix
263
+
264
+ # Test locally (from this directory)
265
+ bun src/cli.ts onboard
266
+ bun src/cli.ts check
267
+
268
+ # Test built version
269
+ bun dist/esm/cli.mjs onboard
270
+ ```
271
+
272
+ ## License
273
+
274
+ MIT
package/cli.mjs ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import './dist/esm/cli.mjs'
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env node
2
+ var import_node_fs = require("node:fs"),
3
+ import_node_path = require("node:path"),
4
+ import_citty = require("citty"),
5
+ import_changed = require("./commands/changed.cjs"),
6
+ import_docs = require("./commands/docs.cjs"),
7
+ import_env_setup = require("./commands/env-setup.cjs"),
8
+ import_onboard = require("./commands/onboard.cjs"),
9
+ import_run = require("./commands/run.cjs"),
10
+ import_script = require("./commands/script.cjs"),
11
+ import_sync = require("./commands/sync.cjs"),
12
+ import_script_listing = require("./utils/script-listing.cjs");
13
+ const import_meta = {};
14
+ function isScriptCategory(name) {
15
+ const scriptsDir = (0, import_node_path.join)(process.cwd(), "scripts"),
16
+ categoryPath = (0, import_node_path.join)(scriptsDir, name);
17
+ try {
18
+ return (0, import_node_fs.existsSync)(categoryPath) && (0, import_node_fs.statSync)(categoryPath).isDirectory();
19
+ } catch {
20
+ return !1;
21
+ }
22
+ }
23
+ function isLocalScript(name) {
24
+ const scriptsDir = (0, import_node_path.join)(process.cwd(), "scripts"),
25
+ normalizedName = name.replace(/:/g, "/");
26
+ for (const ext of [".ts", ".js", ""]) {
27
+ const scriptPath = (0, import_node_path.join)(scriptsDir, `${normalizedName}${ext}`);
28
+ if ((0, import_node_fs.existsSync)(scriptPath)) return !0;
29
+ }
30
+ return !1;
31
+ }
32
+ function isBuiltInScript(name) {
33
+ try {
34
+ const resolved = import_meta.resolve("@take-out/scripts/package.json"),
35
+ packageJsonPath = new URL(resolved).pathname,
36
+ packageRoot = (0, import_node_path.join)(packageJsonPath, ".."),
37
+ srcPath = (0, import_node_path.join)(packageRoot, "src"),
38
+ normalizedName = name.replace(/:/g, "/");
39
+ for (const ext of [".ts", ".js", ""]) {
40
+ const scriptPath = (0, import_node_path.join)(srcPath, `${normalizedName}${ext}`);
41
+ if ((0, import_node_fs.existsSync)(scriptPath)) return !0;
42
+ }
43
+ } catch {}
44
+ return !1;
45
+ }
46
+ const isShorthand = process.argv[1]?.endsWith("tko") || process.argv[1]?.includes("/.bin/tko");
47
+ if (isShorthand) {
48
+ const firstArg = process.argv[2],
49
+ secondArg = process.argv[3];
50
+ firstArg && !["docs", "onboard", "run", "script", "env:setup", "sync", "changed", "--help", "-h", "--version", "-v"].includes(firstArg) && (isScriptCategory(firstArg) ? (secondArg && !secondArg.startsWith("-") && process.argv.splice(2, 2, `${firstArg}/${secondArg}`), process.argv.splice(2, 0, "run")) : firstArg?.includes("/") || isLocalScript(firstArg) || isBuiltInScript(firstArg) ? process.argv.splice(2, 0, "run") : process.argv.splice(2, 0, "script"));
51
+ }
52
+ const main = (0, import_citty.defineCommand)({
53
+ meta: {
54
+ name: isShorthand ? "tko" : "takeout",
55
+ version: "0.0.2",
56
+ description: "CLI tools for Takeout starter kit"
57
+ },
58
+ subCommands: {
59
+ onboard: import_onboard.onboardCommand,
60
+ docs: import_docs.docsCommand,
61
+ "env:setup": import_env_setup.envSetupCommand,
62
+ run: import_run.runCommand,
63
+ script: import_script.scriptCommand,
64
+ sync: import_sync.syncCommand,
65
+ changed: import_changed.changedCommand
66
+ },
67
+ run() {
68
+ process.argv.length > 2 || (0, import_script_listing.listAllScripts)();
69
+ }
70
+ });
71
+ (0, import_citty.runMain)(main);
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env node
2
+ var import_node_fs = require("node:fs"), import_node_path = require("node:path"), import_citty = require("citty"), import_changed = require("./commands/changed"), import_docs = require("./commands/docs"), import_env_setup = require("./commands/env-setup"), import_onboard = require("./commands/onboard"), import_run = require("./commands/run"), import_script = require("./commands/script"), import_sync = require("./commands/sync"), import_script_listing = require("./utils/script-listing");
3
+ const import_meta = {};
4
+ function isScriptCategory(name) {
5
+ const scriptsDir = (0, import_node_path.join)(process.cwd(), "scripts"), categoryPath = (0, import_node_path.join)(scriptsDir, name);
6
+ try {
7
+ return (0, import_node_fs.existsSync)(categoryPath) && (0, import_node_fs.statSync)(categoryPath).isDirectory();
8
+ } catch {
9
+ return !1;
10
+ }
11
+ }
12
+ function isLocalScript(name) {
13
+ const scriptsDir = (0, import_node_path.join)(process.cwd(), "scripts"), normalizedName = name.replace(/:/g, "/");
14
+ for (const ext of [".ts", ".js", ""]) {
15
+ const scriptPath = (0, import_node_path.join)(scriptsDir, `${normalizedName}${ext}`);
16
+ if ((0, import_node_fs.existsSync)(scriptPath))
17
+ return !0;
18
+ }
19
+ return !1;
20
+ }
21
+ function isBuiltInScript(name) {
22
+ try {
23
+ const resolved = import_meta.resolve("@take-out/scripts/package.json"), packageJsonPath = new URL(resolved).pathname, packageRoot = (0, import_node_path.join)(packageJsonPath, ".."), srcPath = (0, import_node_path.join)(packageRoot, "src"), normalizedName = name.replace(/:/g, "/");
24
+ for (const ext of [".ts", ".js", ""]) {
25
+ const scriptPath = (0, import_node_path.join)(srcPath, `${normalizedName}${ext}`);
26
+ if ((0, import_node_fs.existsSync)(scriptPath))
27
+ return !0;
28
+ }
29
+ } catch {
30
+ }
31
+ return !1;
32
+ }
33
+ const isShorthand = process.argv[1]?.endsWith("tko") || process.argv[1]?.includes("/.bin/tko");
34
+ if (isShorthand) {
35
+ const firstArg = process.argv[2], secondArg = process.argv[3];
36
+ firstArg && ![
37
+ "docs",
38
+ "onboard",
39
+ "run",
40
+ "script",
41
+ "env:setup",
42
+ "sync",
43
+ "changed",
44
+ "--help",
45
+ "-h",
46
+ "--version",
47
+ "-v"
48
+ ].includes(firstArg) && (isScriptCategory(firstArg) ? (secondArg && !secondArg.startsWith("-") && process.argv.splice(2, 2, `${firstArg}/${secondArg}`), process.argv.splice(2, 0, "run")) : firstArg?.includes("/") || isLocalScript(firstArg) || isBuiltInScript(firstArg) ? process.argv.splice(2, 0, "run") : process.argv.splice(2, 0, "script"));
49
+ }
50
+ const main = (0, import_citty.defineCommand)({
51
+ meta: {
52
+ name: isShorthand ? "tko" : "takeout",
53
+ version: "0.0.2",
54
+ description: "CLI tools for Takeout starter kit"
55
+ },
56
+ subCommands: {
57
+ onboard: import_onboard.onboardCommand,
58
+ docs: import_docs.docsCommand,
59
+ "env:setup": import_env_setup.envSetupCommand,
60
+ run: import_run.runCommand,
61
+ script: import_script.scriptCommand,
62
+ sync: import_sync.syncCommand,
63
+ changed: import_changed.changedCommand
64
+ },
65
+ run() {
66
+ process.argv.length > 2 || (0, import_script_listing.listAllScripts)();
67
+ }
68
+ });
69
+ (0, import_citty.runMain)(main);
70
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cli.ts"],
4
+ "mappings": ";AAOA,qBAAqC,oBACrC,mBAAqB,sBAErB,eAAuC,kBAEvC,iBAA+B,+BAC/B,cAA4B,4BAC5B,mBAAgC,iCAChC,iBAA+B,+BAC/B,aAA2B,2BAC3B,gBAA8B,8BAC9B,cAA4B,4BAC5B,wBAA+B;AAnB/B;AAsBA,SAAS,iBAAiB,MAAuB;AAC/C,QAAM,iBAAa,uBAAK,QAAQ,IAAI,GAAG,SAAS,GAC1C,mBAAe,uBAAK,YAAY,IAAI;AAE1C,MAAI;AACF,eAAO,2BAAW,YAAY,SAAK,yBAAS,YAAY,EAAE,YAAY;AAAA,EACxE,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,SAAS,cAAc,MAAuB;AAC5C,QAAM,iBAAa,uBAAK,QAAQ,IAAI,GAAG,SAAS,GAC1C,iBAAiB,KAAK,QAAQ,MAAM,GAAG;AAE7C,aAAW,OAAO,CAAC,OAAO,OAAO,EAAE,GAAG;AACpC,UAAM,iBAAa,uBAAK,YAAY,GAAG,cAAc,GAAG,GAAG,EAAE;AAC7D,YAAI,2BAAW,UAAU;AACvB,aAAO;AAAA,EAEX;AAEA,SAAO;AACT;AAGA,SAAS,gBAAgB,MAAuB;AAC9C,MAAI;AACF,UAAM,WAAW,YAAY,QAAQ,gCAAgC,GAC/D,kBAAkB,IAAI,IAAI,QAAQ,EAAE,UACpC,kBAAc,uBAAK,iBAAiB,IAAI,GACxC,cAAU,uBAAK,aAAa,KAAK,GAGjC,iBAAiB,KAAK,QAAQ,MAAM,GAAG;AAG7C,eAAW,OAAO,CAAC,OAAO,OAAO,EAAE,GAAG;AACpC,YAAM,iBAAa,uBAAK,SAAS,GAAG,cAAc,GAAG,GAAG,EAAE;AAC1D,cAAI,2BAAW,UAAU;AACvB,eAAO;AAAA,IAEX;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,SAAO;AACT;AAGA,MAAM,cACJ,QAAQ,KAAK,CAAC,GAAG,SAAS,KAAK,KAAK,QAAQ,KAAK,CAAC,GAAG,SAAS,WAAW;AAE3E,IAAI,aAAa;AAEf,QAAM,WAAW,QAAQ,KAAK,CAAC,GACzB,YAAY,QAAQ,KAAK,CAAC;AAehC,EAAI,YAAY,CAdQ;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAEiC,SAAS,QAAQ,MAG5C,iBAAiB,QAAQ,KAGvB,aAAa,CAAC,UAAU,WAAW,GAAG,KAExC,QAAQ,KAAK,OAAO,GAAG,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,GAGtD,QAAQ,KAAK,OAAO,GAAG,GAAG,KAAK,KACtB,UAAU,SAAS,GAAG,KAGtB,cAAc,QAAQ,KAAK,gBAAgB,QAAQ,IAD5D,QAAQ,KAAK,OAAO,GAAG,GAAG,KAAK,IAO/B,QAAQ,KAAK,OAAO,GAAG,GAAG,QAAQ;AAGxC;AAEA,MAAM,WAAO,4BAAc;AAAA,EACzB,MAAM;AAAA,IACJ,MAAM,cAAc,QAAQ;AAAA,IAC5B,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,aAAa;AAAA,IACX,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAIJ,IADgB,QAAQ,KAAK,SAAS,SAEpC,sCAAe;AAAA,EAEnB;AACF,CAAC;AAAA,IAED,sBAAQ,IAAI;",
5
+ "names": []
6
+ }
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var import_fs = require("fs"), import_path = require("path"), import_citty = require("citty"), import_changed = require("./commands/changed"), import_docs = require("./commands/docs"), import_env_setup = require("./commands/env-setup"), import_onboard = require("./commands/onboard"), import_run = require("./commands/run"), import_script = require("./commands/script"), import_sync = require("./commands/sync"), import_script_listing = require("./utils/script-listing");
4
+ const import_meta = {};
5
+ var _process_argv_, _process_argv_1;
6
+ function isScriptCategory(name) {
7
+ var scriptsDir = (0, import_path.join)(process.cwd(), "scripts"), categoryPath = (0, import_path.join)(scriptsDir, name);
8
+ try {
9
+ return (0, import_fs.existsSync)(categoryPath) && (0, import_fs.statSync)(categoryPath).isDirectory();
10
+ } catch {
11
+ return !1;
12
+ }
13
+ }
14
+ function isLocalScript(name) {
15
+ for (var scriptsDir = (0, import_path.join)(process.cwd(), "scripts"), normalizedName = name.replace(/:/g, "/"), _i = 0, _iter = [
16
+ ".ts",
17
+ ".js",
18
+ ""
19
+ ]; _i < _iter.length; _i++) {
20
+ var ext = _iter[_i], scriptPath = (0, import_path.join)(scriptsDir, `${normalizedName}${ext}`);
21
+ if ((0, import_fs.existsSync)(scriptPath))
22
+ return !0;
23
+ }
24
+ return !1;
25
+ }
26
+ function isBuiltInScript(name) {
27
+ try {
28
+ for (var resolved = import_meta.resolve("@take-out/scripts/package.json"), packageJsonPath = new URL(resolved).pathname, packageRoot = (0, import_path.join)(packageJsonPath, ".."), srcPath = (0, import_path.join)(packageRoot, "src"), normalizedName = name.replace(/:/g, "/"), _i = 0, _iter = [
29
+ ".ts",
30
+ ".js",
31
+ ""
32
+ ]; _i < _iter.length; _i++) {
33
+ var ext = _iter[_i], scriptPath = (0, import_path.join)(srcPath, `${normalizedName}${ext}`);
34
+ if ((0, import_fs.existsSync)(scriptPath))
35
+ return !0;
36
+ }
37
+ } catch {
38
+ }
39
+ return !1;
40
+ }
41
+ var isShorthand = ((_process_argv_ = process.argv[1]) === null || _process_argv_ === void 0 ? void 0 : _process_argv_.endsWith("tko")) || ((_process_argv_1 = process.argv[1]) === null || _process_argv_1 === void 0 ? void 0 : _process_argv_1.includes("/.bin/tko"));
42
+ if (isShorthand) {
43
+ var firstArg = process.argv[2], secondArg = process.argv[3], builtInCommands = [
44
+ "docs",
45
+ "onboard",
46
+ "run",
47
+ "script",
48
+ "env:setup",
49
+ "sync",
50
+ "changed",
51
+ "--help",
52
+ "-h",
53
+ "--version",
54
+ "-v"
55
+ ];
56
+ firstArg && !builtInCommands.includes(firstArg) && (isScriptCategory(firstArg) ? (secondArg && !secondArg.startsWith("-") && process.argv.splice(2, 2, `${firstArg}/${secondArg}`), process.argv.splice(2, 0, "run")) : firstArg != null && firstArg.includes("/") || isLocalScript(firstArg) || isBuiltInScript(firstArg) ? process.argv.splice(2, 0, "run") : process.argv.splice(2, 0, "script"));
57
+ }
58
+ var main = (0, import_citty.defineCommand)({
59
+ meta: {
60
+ name: isShorthand ? "tko" : "takeout",
61
+ version: "0.0.2",
62
+ description: "CLI tools for Takeout starter kit"
63
+ },
64
+ subCommands: {
65
+ onboard: import_onboard.onboardCommand,
66
+ docs: import_docs.docsCommand,
67
+ "env:setup": import_env_setup.envSetupCommand,
68
+ run: import_run.runCommand,
69
+ script: import_script.scriptCommand,
70
+ sync: import_sync.syncCommand,
71
+ changed: import_changed.changedCommand
72
+ },
73
+ run() {
74
+ var hasArgs = process.argv.length > 2;
75
+ hasArgs || (0, import_script_listing.listAllScripts)();
76
+ }
77
+ });
78
+ (0, import_citty.runMain)(main);
79
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cli.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }