@glxmart/boss-cli 1.0.0-beta.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 (506) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/assets/claude-folder/agents/.gitkeep +0 -0
  4. package/assets/claude-folder/commands/boss-commands.md +138 -0
  5. package/assets/claude-folder/rules/boss-workflow.md +33 -0
  6. package/assets/claude-folder/rules/code-style.md +23 -0
  7. package/assets/claude-folder/rules/security.md +22 -0
  8. package/assets/claude-folder/rules/testing.md +32 -0
  9. package/assets/claude-folder/settings.local.json +88 -0
  10. package/assets/claude-folder/skills/.gitkeep +0 -0
  11. package/assets/claude-md/docs/container-use.md +140 -0
  12. package/assets/claude-md/docs/github-operations.md +238 -0
  13. package/assets/claude-md/docs/initialization.md +186 -0
  14. package/assets/claude-md/docs/quality-standards.md +15 -0
  15. package/assets/claude-md/docs/spec-kit.md +46 -0
  16. package/assets/claude-md/docs/workers.md +174 -0
  17. package/assets/claude-md/docs/workflow.md +140 -0
  18. package/assets/claude-md/template.md +812 -0
  19. package/assets/docker-compose/docker-compose.yml +52 -0
  20. package/assets/git-hooks/commit-msg.sh +102 -0
  21. package/assets/git-hooks/pre-commit-check.sh +21 -0
  22. package/assets/git-hooks/pre-commit.sh +6 -0
  23. package/assets/git-hooks/pre-push.sh +154 -0
  24. package/assets/git-hooks/security-check.sh +40 -0
  25. package/assets/git-hooks/test-changed.sh +84 -0
  26. package/assets/github-workflows/CODEOWNERS +3 -0
  27. package/assets/github-workflows/boss-ci.yml +40 -0
  28. package/assets/github-workflows/boss-gates.yml +28 -0
  29. package/assets/start-boss-sh/start-boss.sh +471 -0
  30. package/assets/template-docs/api-service-fastify.md +98 -0
  31. package/assets/template-docs/blank.md +91 -0
  32. package/assets/template-docs/nextjs-app-turbo.md +102 -0
  33. package/assets/template-docs/t3-app.md +106 -0
  34. package/assets/template-loader/README.md +28 -0
  35. package/assets/template-loader/eslint.config.node.js +28 -0
  36. package/assets/template-loader/eslint.config.react.js +47 -0
  37. package/assets/template-loader/gitignore +42 -0
  38. package/assets/template-loader/index.test.ts +10 -0
  39. package/assets/template-loader/index.ts +13 -0
  40. package/assets/template-loader/prettierignore +8 -0
  41. package/assets/template-loader/vitest.config.ts +19 -0
  42. package/assets/worker-configs/architect/.claude/commands/.gitkeep +0 -0
  43. package/assets/worker-configs/architect/.claude/skills/.gitkeep +0 -0
  44. package/assets/worker-configs/architect/CLAUDE.md +106 -0
  45. package/assets/worker-configs/clarifier/.claude/commands/.gitkeep +1 -0
  46. package/assets/worker-configs/clarifier/.claude/skills/.gitkeep +1 -0
  47. package/assets/worker-configs/clarifier/CLAUDE.md +112 -0
  48. package/assets/worker-configs/code-reviewer/CLAUDE.md +113 -0
  49. package/assets/worker-configs/consolidator/.claude/commands/.gitkeep +1 -0
  50. package/assets/worker-configs/consolidator/.claude/skills/.gitkeep +1 -0
  51. package/assets/worker-configs/consolidator/CLAUDE.md +114 -0
  52. package/assets/worker-configs/developer-backend/.claude/commands/.gitkeep +1 -0
  53. package/assets/worker-configs/developer-backend/.claude/skills/.gitkeep +1 -0
  54. package/assets/worker-configs/developer-backend/CLAUDE.md +116 -0
  55. package/assets/worker-configs/developer-frontend/.claude/commands/.gitkeep +1 -0
  56. package/assets/worker-configs/developer-frontend/.claude/skills/.gitkeep +1 -0
  57. package/assets/worker-configs/developer-frontend/CLAUDE.md +116 -0
  58. package/assets/worker-configs/developer-fullstack/.claude/commands/.gitkeep +1 -0
  59. package/assets/worker-configs/developer-fullstack/.claude/skills/.gitkeep +1 -0
  60. package/assets/worker-configs/developer-fullstack/CLAUDE.md +116 -0
  61. package/assets/worker-configs/devops-engineer/CLAUDE.md +111 -0
  62. package/assets/worker-configs/planner/.claude/commands/.gitkeep +1 -0
  63. package/assets/worker-configs/planner/.claude/skills/.gitkeep +1 -0
  64. package/assets/worker-configs/planner/CLAUDE.md +111 -0
  65. package/assets/worker-configs/product-owner/CLAUDE.md +108 -0
  66. package/assets/worker-configs/reviewer/.claude/commands/.gitkeep +1 -0
  67. package/assets/worker-configs/reviewer/.claude/skills/.gitkeep +1 -0
  68. package/assets/worker-configs/reviewer/CLAUDE.md +110 -0
  69. package/assets/worker-configs/security-engineer/CLAUDE.md +109 -0
  70. package/assets/worker-configs/spec-writer/.claude/commands/.gitkeep +1 -0
  71. package/assets/worker-configs/spec-writer/.claude/skills/.gitkeep +1 -0
  72. package/assets/worker-configs/spec-writer/CLAUDE.md +110 -0
  73. package/assets/worker-configs/technical-writer/CLAUDE.md +107 -0
  74. package/assets/worker-configs/tester/CLAUDE.md +110 -0
  75. package/dist/assets/claude-folder/agents/.gitkeep +0 -0
  76. package/dist/assets/claude-folder/commands/boss-commands.md +138 -0
  77. package/dist/assets/claude-folder/rules/boss-workflow.md +33 -0
  78. package/dist/assets/claude-folder/rules/code-style.md +23 -0
  79. package/dist/assets/claude-folder/rules/security.md +22 -0
  80. package/dist/assets/claude-folder/rules/testing.md +32 -0
  81. package/dist/assets/claude-folder/settings.local.json +88 -0
  82. package/dist/assets/claude-folder/skills/.gitkeep +0 -0
  83. package/dist/assets/claude-md/docs/container-use.md +140 -0
  84. package/dist/assets/claude-md/docs/github-operations.md +238 -0
  85. package/dist/assets/claude-md/docs/initialization.md +186 -0
  86. package/dist/assets/claude-md/docs/quality-standards.md +15 -0
  87. package/dist/assets/claude-md/docs/spec-kit.md +46 -0
  88. package/dist/assets/claude-md/docs/workers.md +174 -0
  89. package/dist/assets/claude-md/docs/workflow.md +140 -0
  90. package/dist/assets/claude-md/template.md +812 -0
  91. package/dist/assets/docker-compose/docker-compose.yml +52 -0
  92. package/dist/assets/git-hooks/commit-msg.sh +102 -0
  93. package/dist/assets/git-hooks/pre-commit-check.sh +21 -0
  94. package/dist/assets/git-hooks/pre-commit.sh +6 -0
  95. package/dist/assets/git-hooks/pre-push.sh +154 -0
  96. package/dist/assets/git-hooks/security-check.sh +40 -0
  97. package/dist/assets/git-hooks/test-changed.sh +84 -0
  98. package/dist/assets/github-workflows/CODEOWNERS +3 -0
  99. package/dist/assets/github-workflows/boss-ci.yml +40 -0
  100. package/dist/assets/github-workflows/boss-gates.yml +28 -0
  101. package/dist/assets/start-boss-sh/start-boss.sh +471 -0
  102. package/dist/assets/template-docs/api-service-fastify.md +98 -0
  103. package/dist/assets/template-docs/blank.md +91 -0
  104. package/dist/assets/template-docs/nextjs-app-turbo.md +102 -0
  105. package/dist/assets/template-docs/t3-app.md +106 -0
  106. package/dist/assets/template-loader/README.md +28 -0
  107. package/dist/assets/template-loader/eslint.config.node.js +28 -0
  108. package/dist/assets/template-loader/eslint.config.react.js +47 -0
  109. package/dist/assets/template-loader/gitignore +42 -0
  110. package/dist/assets/template-loader/index.test.ts +10 -0
  111. package/dist/assets/template-loader/index.ts +13 -0
  112. package/dist/assets/template-loader/prettierignore +8 -0
  113. package/dist/assets/template-loader/vitest.config.ts +19 -0
  114. package/dist/assets/worker-configs/architect/.claude/commands/.gitkeep +0 -0
  115. package/dist/assets/worker-configs/architect/.claude/skills/.gitkeep +0 -0
  116. package/dist/assets/worker-configs/architect/CLAUDE.md +106 -0
  117. package/dist/assets/worker-configs/clarifier/.claude/commands/.gitkeep +1 -0
  118. package/dist/assets/worker-configs/clarifier/.claude/skills/.gitkeep +1 -0
  119. package/dist/assets/worker-configs/clarifier/CLAUDE.md +112 -0
  120. package/dist/assets/worker-configs/code-reviewer/CLAUDE.md +113 -0
  121. package/dist/assets/worker-configs/consolidator/.claude/commands/.gitkeep +1 -0
  122. package/dist/assets/worker-configs/consolidator/.claude/skills/.gitkeep +1 -0
  123. package/dist/assets/worker-configs/consolidator/CLAUDE.md +114 -0
  124. package/dist/assets/worker-configs/developer-backend/.claude/commands/.gitkeep +1 -0
  125. package/dist/assets/worker-configs/developer-backend/.claude/skills/.gitkeep +1 -0
  126. package/dist/assets/worker-configs/developer-backend/CLAUDE.md +116 -0
  127. package/dist/assets/worker-configs/developer-frontend/.claude/commands/.gitkeep +1 -0
  128. package/dist/assets/worker-configs/developer-frontend/.claude/skills/.gitkeep +1 -0
  129. package/dist/assets/worker-configs/developer-frontend/CLAUDE.md +116 -0
  130. package/dist/assets/worker-configs/developer-fullstack/.claude/commands/.gitkeep +1 -0
  131. package/dist/assets/worker-configs/developer-fullstack/.claude/skills/.gitkeep +1 -0
  132. package/dist/assets/worker-configs/developer-fullstack/CLAUDE.md +116 -0
  133. package/dist/assets/worker-configs/devops-engineer/CLAUDE.md +111 -0
  134. package/dist/assets/worker-configs/planner/.claude/commands/.gitkeep +1 -0
  135. package/dist/assets/worker-configs/planner/.claude/skills/.gitkeep +1 -0
  136. package/dist/assets/worker-configs/planner/CLAUDE.md +111 -0
  137. package/dist/assets/worker-configs/product-owner/CLAUDE.md +108 -0
  138. package/dist/assets/worker-configs/reviewer/.claude/commands/.gitkeep +1 -0
  139. package/dist/assets/worker-configs/reviewer/.claude/skills/.gitkeep +1 -0
  140. package/dist/assets/worker-configs/reviewer/CLAUDE.md +110 -0
  141. package/dist/assets/worker-configs/security-engineer/CLAUDE.md +109 -0
  142. package/dist/assets/worker-configs/spec-writer/.claude/commands/.gitkeep +1 -0
  143. package/dist/assets/worker-configs/spec-writer/.claude/skills/.gitkeep +1 -0
  144. package/dist/assets/worker-configs/spec-writer/CLAUDE.md +110 -0
  145. package/dist/assets/worker-configs/technical-writer/CLAUDE.md +107 -0
  146. package/dist/assets/worker-configs/tester/CLAUDE.md +110 -0
  147. package/dist/commands/__tests__/bootstrap.test.d.ts +2 -0
  148. package/dist/commands/__tests__/bootstrap.test.d.ts.map +1 -0
  149. package/dist/commands/__tests__/bootstrap.test.js +379 -0
  150. package/dist/commands/__tests__/bootstrap.test.js.map +1 -0
  151. package/dist/commands/__tests__/doctor.test.d.ts +2 -0
  152. package/dist/commands/__tests__/doctor.test.d.ts.map +1 -0
  153. package/dist/commands/__tests__/doctor.test.js +13 -0
  154. package/dist/commands/__tests__/doctor.test.js.map +1 -0
  155. package/dist/commands/bootstrap.d.ts +3 -0
  156. package/dist/commands/bootstrap.d.ts.map +1 -0
  157. package/dist/commands/bootstrap.js +390 -0
  158. package/dist/commands/bootstrap.js.map +1 -0
  159. package/dist/commands/doctor.d.ts +2 -0
  160. package/dist/commands/doctor.d.ts.map +1 -0
  161. package/dist/commands/doctor.js +171 -0
  162. package/dist/commands/doctor.js.map +1 -0
  163. package/dist/commands/templates.d.ts +2 -0
  164. package/dist/commands/templates.d.ts.map +1 -0
  165. package/dist/commands/templates.js +12 -0
  166. package/dist/commands/templates.js.map +1 -0
  167. package/dist/constants.d.ts +23 -0
  168. package/dist/constants.d.ts.map +1 -0
  169. package/dist/constants.js +23 -0
  170. package/dist/constants.js.map +1 -0
  171. package/dist/generators/__tests__/boss-config.test.d.ts +2 -0
  172. package/dist/generators/__tests__/boss-config.test.d.ts.map +1 -0
  173. package/dist/generators/__tests__/boss-config.test.js +61 -0
  174. package/dist/generators/__tests__/boss-config.test.js.map +1 -0
  175. package/dist/generators/__tests__/claude-folder.test.d.ts +2 -0
  176. package/dist/generators/__tests__/claude-folder.test.d.ts.map +1 -0
  177. package/dist/generators/__tests__/claude-folder.test.js +128 -0
  178. package/dist/generators/__tests__/claude-folder.test.js.map +1 -0
  179. package/dist/generators/__tests__/claude-md.test.d.ts +2 -0
  180. package/dist/generators/__tests__/claude-md.test.d.ts.map +1 -0
  181. package/dist/generators/__tests__/claude-md.test.js +55 -0
  182. package/dist/generators/__tests__/claude-md.test.js.map +1 -0
  183. package/dist/generators/__tests__/container-use-config.test.d.ts +2 -0
  184. package/dist/generators/__tests__/container-use-config.test.d.ts.map +1 -0
  185. package/dist/generators/__tests__/container-use-config.test.js +80 -0
  186. package/dist/generators/__tests__/container-use-config.test.js.map +1 -0
  187. package/dist/generators/__tests__/docker-compose.test.d.ts +2 -0
  188. package/dist/generators/__tests__/docker-compose.test.d.ts.map +1 -0
  189. package/dist/generators/__tests__/docker-compose.test.js +39 -0
  190. package/dist/generators/__tests__/docker-compose.test.js.map +1 -0
  191. package/dist/generators/__tests__/git-hooks.test.d.ts +2 -0
  192. package/dist/generators/__tests__/git-hooks.test.d.ts.map +1 -0
  193. package/dist/generators/__tests__/git-hooks.test.js +118 -0
  194. package/dist/generators/__tests__/git-hooks.test.js.map +1 -0
  195. package/dist/generators/__tests__/github-workflows.test.d.ts +2 -0
  196. package/dist/generators/__tests__/github-workflows.test.d.ts.map +1 -0
  197. package/dist/generators/__tests__/github-workflows.test.js +86 -0
  198. package/dist/generators/__tests__/github-workflows.test.js.map +1 -0
  199. package/dist/generators/__tests__/mcp-config.test.d.ts +2 -0
  200. package/dist/generators/__tests__/mcp-config.test.d.ts.map +1 -0
  201. package/dist/generators/__tests__/mcp-config.test.js +131 -0
  202. package/dist/generators/__tests__/mcp-config.test.js.map +1 -0
  203. package/dist/generators/__tests__/project-structure.test.d.ts +2 -0
  204. package/dist/generators/__tests__/project-structure.test.d.ts.map +1 -0
  205. package/dist/generators/__tests__/project-structure.test.js +40 -0
  206. package/dist/generators/__tests__/project-structure.test.js.map +1 -0
  207. package/dist/generators/__tests__/quality-gates.test.d.ts +2 -0
  208. package/dist/generators/__tests__/quality-gates.test.d.ts.map +1 -0
  209. package/dist/generators/__tests__/quality-gates.test.js +71 -0
  210. package/dist/generators/__tests__/quality-gates.test.js.map +1 -0
  211. package/dist/generators/__tests__/specify-structure.test.d.ts +2 -0
  212. package/dist/generators/__tests__/specify-structure.test.d.ts.map +1 -0
  213. package/dist/generators/__tests__/specify-structure.test.js +63 -0
  214. package/dist/generators/__tests__/specify-structure.test.js.map +1 -0
  215. package/dist/generators/__tests__/start-boss-sh.test.d.ts +2 -0
  216. package/dist/generators/__tests__/start-boss-sh.test.d.ts.map +1 -0
  217. package/dist/generators/__tests__/start-boss-sh.test.js +36 -0
  218. package/dist/generators/__tests__/start-boss-sh.test.js.map +1 -0
  219. package/dist/generators/__tests__/template-docs.test.d.ts +2 -0
  220. package/dist/generators/__tests__/template-docs.test.d.ts.map +1 -0
  221. package/dist/generators/__tests__/template-docs.test.js +92 -0
  222. package/dist/generators/__tests__/template-docs.test.js.map +1 -0
  223. package/dist/generators/__tests__/template-loader.test.d.ts +2 -0
  224. package/dist/generators/__tests__/template-loader.test.d.ts.map +1 -0
  225. package/dist/generators/__tests__/template-loader.test.js +215 -0
  226. package/dist/generators/__tests__/template-loader.test.js.map +1 -0
  227. package/dist/generators/__tests__/worker-configs.test.d.ts +2 -0
  228. package/dist/generators/__tests__/worker-configs.test.d.ts.map +1 -0
  229. package/dist/generators/__tests__/worker-configs.test.js +122 -0
  230. package/dist/generators/__tests__/worker-configs.test.js.map +1 -0
  231. package/dist/generators/boss-config.d.ts +3 -0
  232. package/dist/generators/boss-config.d.ts.map +1 -0
  233. package/dist/generators/boss-config.js +242 -0
  234. package/dist/generators/boss-config.js.map +1 -0
  235. package/dist/generators/claude-folder.d.ts +3 -0
  236. package/dist/generators/claude-folder.d.ts.map +1 -0
  237. package/dist/generators/claude-folder.js +94 -0
  238. package/dist/generators/claude-folder.js.map +1 -0
  239. package/dist/generators/claude-md.d.ts +3 -0
  240. package/dist/generators/claude-md.d.ts.map +1 -0
  241. package/dist/generators/claude-md.js +64 -0
  242. package/dist/generators/claude-md.js.map +1 -0
  243. package/dist/generators/container-use-config.d.ts +13 -0
  244. package/dist/generators/container-use-config.d.ts.map +1 -0
  245. package/dist/generators/container-use-config.js +60 -0
  246. package/dist/generators/container-use-config.js.map +1 -0
  247. package/dist/generators/docker-compose.d.ts +2 -0
  248. package/dist/generators/docker-compose.d.ts.map +1 -0
  249. package/dist/generators/docker-compose.js +8 -0
  250. package/dist/generators/docker-compose.js.map +1 -0
  251. package/dist/generators/git-hooks.d.ts +3 -0
  252. package/dist/generators/git-hooks.d.ts.map +1 -0
  253. package/dist/generators/git-hooks.js +58 -0
  254. package/dist/generators/git-hooks.js.map +1 -0
  255. package/dist/generators/github-workflows.d.ts +3 -0
  256. package/dist/generators/github-workflows.d.ts.map +1 -0
  257. package/dist/generators/github-workflows.js +27 -0
  258. package/dist/generators/github-workflows.js.map +1 -0
  259. package/dist/generators/mcp-config.d.ts +3 -0
  260. package/dist/generators/mcp-config.d.ts.map +1 -0
  261. package/dist/generators/mcp-config.js +183 -0
  262. package/dist/generators/mcp-config.js.map +1 -0
  263. package/dist/generators/project-structure.d.ts +3 -0
  264. package/dist/generators/project-structure.d.ts.map +1 -0
  265. package/dist/generators/project-structure.js +24 -0
  266. package/dist/generators/project-structure.js.map +1 -0
  267. package/dist/generators/quality-gates.d.ts +3 -0
  268. package/dist/generators/quality-gates.d.ts.map +1 -0
  269. package/dist/generators/quality-gates.js +32 -0
  270. package/dist/generators/quality-gates.js.map +1 -0
  271. package/dist/generators/specify-structure.d.ts +2 -0
  272. package/dist/generators/specify-structure.d.ts.map +1 -0
  273. package/dist/generators/specify-structure.js +43 -0
  274. package/dist/generators/specify-structure.js.map +1 -0
  275. package/dist/generators/start-boss-sh.d.ts +2 -0
  276. package/dist/generators/start-boss-sh.d.ts.map +1 -0
  277. package/dist/generators/start-boss-sh.js +10 -0
  278. package/dist/generators/start-boss-sh.js.map +1 -0
  279. package/dist/generators/template-docs.d.ts +3 -0
  280. package/dist/generators/template-docs.d.ts.map +1 -0
  281. package/dist/generators/template-docs.js +19 -0
  282. package/dist/generators/template-docs.js.map +1 -0
  283. package/dist/generators/template-loader.d.ts +3 -0
  284. package/dist/generators/template-loader.d.ts.map +1 -0
  285. package/dist/generators/template-loader.js +308 -0
  286. package/dist/generators/template-loader.js.map +1 -0
  287. package/dist/generators/worker-configs.d.ts +3 -0
  288. package/dist/generators/worker-configs.d.ts.map +1 -0
  289. package/dist/generators/worker-configs.js +119 -0
  290. package/dist/generators/worker-configs.js.map +1 -0
  291. package/dist/index.d.ts +3 -0
  292. package/dist/index.d.ts.map +1 -0
  293. package/dist/index.js +57 -0
  294. package/dist/index.js.map +1 -0
  295. package/dist/presets/__tests__/quality-presets.test.d.ts +2 -0
  296. package/dist/presets/__tests__/quality-presets.test.d.ts.map +1 -0
  297. package/dist/presets/__tests__/quality-presets.test.js +152 -0
  298. package/dist/presets/__tests__/quality-presets.test.js.map +1 -0
  299. package/dist/presets/quality-presets.d.ts +3 -0
  300. package/dist/presets/quality-presets.d.ts.map +1 -0
  301. package/dist/presets/quality-presets.js +65 -0
  302. package/dist/presets/quality-presets.js.map +1 -0
  303. package/dist/types/index.d.ts +42 -0
  304. package/dist/types/index.d.ts.map +1 -0
  305. package/dist/types/index.js +2 -0
  306. package/dist/types/index.js.map +1 -0
  307. package/dist/utils/__tests__/file-system.test.d.ts +2 -0
  308. package/dist/utils/__tests__/file-system.test.d.ts.map +1 -0
  309. package/dist/utils/__tests__/file-system.test.js +83 -0
  310. package/dist/utils/__tests__/file-system.test.js.map +1 -0
  311. package/dist/utils/__tests__/git.test.d.ts +2 -0
  312. package/dist/utils/__tests__/git.test.d.ts.map +1 -0
  313. package/dist/utils/__tests__/git.test.js +79 -0
  314. package/dist/utils/__tests__/git.test.js.map +1 -0
  315. package/dist/utils/__tests__/template-loader.test.d.ts +2 -0
  316. package/dist/utils/__tests__/template-loader.test.d.ts.map +1 -0
  317. package/dist/utils/__tests__/template-loader.test.js +109 -0
  318. package/dist/utils/__tests__/template-loader.test.js.map +1 -0
  319. package/dist/utils/__tests__/validators.test.d.ts +2 -0
  320. package/dist/utils/__tests__/validators.test.d.ts.map +1 -0
  321. package/dist/utils/__tests__/validators.test.js +118 -0
  322. package/dist/utils/__tests__/validators.test.js.map +1 -0
  323. package/dist/utils/file-system.d.ts +8 -0
  324. package/dist/utils/file-system.d.ts.map +1 -0
  325. package/dist/utils/file-system.js +54 -0
  326. package/dist/utils/file-system.js.map +1 -0
  327. package/dist/utils/git.d.ts +7 -0
  328. package/dist/utils/git.d.ts.map +1 -0
  329. package/dist/utils/git.js +98 -0
  330. package/dist/utils/git.js.map +1 -0
  331. package/dist/utils/logger.d.ts +13 -0
  332. package/dist/utils/logger.d.ts.map +1 -0
  333. package/dist/utils/logger.js +42 -0
  334. package/dist/utils/logger.js.map +1 -0
  335. package/dist/utils/prompts.d.ts +18 -0
  336. package/dist/utils/prompts.d.ts.map +1 -0
  337. package/dist/utils/prompts.js +197 -0
  338. package/dist/utils/prompts.js.map +1 -0
  339. package/dist/utils/template-loader.d.ts +18 -0
  340. package/dist/utils/template-loader.d.ts.map +1 -0
  341. package/dist/utils/template-loader.js +92 -0
  342. package/dist/utils/template-loader.js.map +1 -0
  343. package/dist/utils/validators.d.ts +21 -0
  344. package/dist/utils/validators.d.ts.map +1 -0
  345. package/dist/utils/validators.js +50 -0
  346. package/dist/utils/validators.js.map +1 -0
  347. package/package.json +79 -0
  348. package/templates/spec-kit/README.md +17 -0
  349. package/templates/spec-kit/memory/constitution.md +50 -0
  350. package/templates/spec-kit/scripts/bash/check-prerequisites.sh +166 -0
  351. package/templates/spec-kit/scripts/bash/common.sh +156 -0
  352. package/templates/spec-kit/scripts/bash/create-new-feature.sh +297 -0
  353. package/templates/spec-kit/scripts/bash/setup-plan.sh +61 -0
  354. package/templates/spec-kit/scripts/bash/update-agent-context.sh +799 -0
  355. package/templates/spec-kit/scripts/powershell/check-prerequisites.ps1 +148 -0
  356. package/templates/spec-kit/scripts/powershell/common.ps1 +137 -0
  357. package/templates/spec-kit/scripts/powershell/create-new-feature.ps1 +283 -0
  358. package/templates/spec-kit/scripts/powershell/setup-plan.ps1 +61 -0
  359. package/templates/spec-kit/scripts/powershell/update-agent-context.ps1 +448 -0
  360. package/templates/spec-kit/src/specify_cli/__init__.py +1369 -0
  361. package/templates/spec-kit/templates/agent-file-template.md +28 -0
  362. package/templates/spec-kit/templates/checklist-template.md +40 -0
  363. package/templates/spec-kit/templates/commands/analyze.md +187 -0
  364. package/templates/spec-kit/templates/commands/checklist.md +297 -0
  365. package/templates/spec-kit/templates/commands/clarify.md +184 -0
  366. package/templates/spec-kit/templates/commands/constitution.md +82 -0
  367. package/templates/spec-kit/templates/commands/implement.md +138 -0
  368. package/templates/spec-kit/templates/commands/plan.md +95 -0
  369. package/templates/spec-kit/templates/commands/specify.md +261 -0
  370. package/templates/spec-kit/templates/commands/tasks.md +140 -0
  371. package/templates/spec-kit/templates/commands/taskstoissues.md +33 -0
  372. package/templates/spec-kit/templates/plan-template.md +104 -0
  373. package/templates/spec-kit/templates/spec-template.md +115 -0
  374. package/templates/spec-kit/templates/tasks-template.md +251 -0
  375. package/templates/spec-kit/templates/vscode-settings.json +14 -0
  376. package/templates/t3-app/README.md +41 -0
  377. package/templates/t3-app/base/README.md +29 -0
  378. package/templates/t3-app/base/_gitignore +47 -0
  379. package/templates/t3-app/base/next-env.d.ts +5 -0
  380. package/templates/t3-app/base/next.config.js +22 -0
  381. package/templates/t3-app/base/package.json +26 -0
  382. package/templates/t3-app/base/public/favicon.ico +0 -0
  383. package/templates/t3-app/base/src/env.js +40 -0
  384. package/templates/t3-app/base/src/styles/globals.css +16 -0
  385. package/templates/t3-app/base/tsconfig.json +42 -0
  386. package/templates/t3-app/extras/config/_eslint.base.js +45 -0
  387. package/templates/t3-app/extras/config/_eslint.drizzle.js +58 -0
  388. package/templates/t3-app/extras/config/_prettier.config.js +2 -0
  389. package/templates/t3-app/extras/config/_tailwind.prettier.config.js +4 -0
  390. package/templates/t3-app/extras/config/biome.jsonc +69 -0
  391. package/templates/t3-app/extras/config/drizzle-config-mysql.ts +12 -0
  392. package/templates/t3-app/extras/config/drizzle-config-postgres.ts +12 -0
  393. package/templates/t3-app/extras/config/drizzle-config-sqlite.ts +12 -0
  394. package/templates/t3-app/extras/config/next-config-appdir.js +10 -0
  395. package/templates/t3-app/extras/config/postcss.config.js +5 -0
  396. package/templates/t3-app/extras/pnpm/_npmrc +2 -0
  397. package/templates/t3-app/extras/prisma/schema/base-planetscale.prisma +25 -0
  398. package/templates/t3-app/extras/prisma/schema/base.prisma +21 -0
  399. package/templates/t3-app/extras/prisma/schema/with-auth-planetscale.prisma +79 -0
  400. package/templates/t3-app/extras/prisma/schema/with-auth.prisma +75 -0
  401. package/templates/t3-app/extras/prisma/schema/with-better-auth-planetscale.prisma +90 -0
  402. package/templates/t3-app/extras/prisma/schema/with-better-auth.prisma +89 -0
  403. package/templates/t3-app/extras/src/app/_components/post-tw.tsx +50 -0
  404. package/templates/t3-app/extras/src/app/_components/post.tsx +54 -0
  405. package/templates/t3-app/extras/src/app/api/auth/[...all]/route.ts +5 -0
  406. package/templates/t3-app/extras/src/app/api/auth/[...nextauth]/route.ts +3 -0
  407. package/templates/t3-app/extras/src/app/api/trpc/[trpc]/route.ts +34 -0
  408. package/templates/t3-app/extras/src/app/layout/base.tsx +24 -0
  409. package/templates/t3-app/extras/src/app/layout/with-trpc-tw.tsx +29 -0
  410. package/templates/t3-app/extras/src/app/layout/with-trpc.tsx +28 -0
  411. package/templates/t3-app/extras/src/app/layout/with-tw.tsx +25 -0
  412. package/templates/t3-app/extras/src/app/page/base.tsx +39 -0
  413. package/templates/t3-app/extras/src/app/page/with-auth-trpc-tw.tsx +69 -0
  414. package/templates/t3-app/extras/src/app/page/with-auth-trpc.tsx +70 -0
  415. package/templates/t3-app/extras/src/app/page/with-better-auth-trpc-tw.tsx +105 -0
  416. package/templates/t3-app/extras/src/app/page/with-better-auth-trpc.tsx +103 -0
  417. package/templates/t3-app/extras/src/app/page/with-better-auth-tw.tsx +90 -0
  418. package/templates/t3-app/extras/src/app/page/with-better-auth.tsx +88 -0
  419. package/templates/t3-app/extras/src/app/page/with-trpc-tw.tsx +53 -0
  420. package/templates/t3-app/extras/src/app/page/with-trpc.tsx +54 -0
  421. package/templates/t3-app/extras/src/app/page/with-tw.tsx +37 -0
  422. package/templates/t3-app/extras/src/env/with-auth-db-planetscale.js +58 -0
  423. package/templates/t3-app/extras/src/env/with-auth-db.js +52 -0
  424. package/templates/t3-app/extras/src/env/with-auth.js +51 -0
  425. package/templates/t3-app/extras/src/env/with-better-auth-db-planetscale.js +58 -0
  426. package/templates/t3-app/extras/src/env/with-better-auth-db.js +50 -0
  427. package/templates/t3-app/extras/src/env/with-better-auth.js +49 -0
  428. package/templates/t3-app/extras/src/env/with-db-planetscale.js +50 -0
  429. package/templates/t3-app/extras/src/env/with-db.js +44 -0
  430. package/templates/t3-app/extras/src/index.module.css +177 -0
  431. package/templates/t3-app/extras/src/pages/_app/base.tsx +18 -0
  432. package/templates/t3-app/extras/src/pages/_app/with-auth-trpc-tw.tsx +27 -0
  433. package/templates/t3-app/extras/src/pages/_app/with-auth-trpc.tsx +27 -0
  434. package/templates/t3-app/extras/src/pages/_app/with-auth-tw.tsx +25 -0
  435. package/templates/t3-app/extras/src/pages/_app/with-auth.tsx +25 -0
  436. package/templates/t3-app/extras/src/pages/_app/with-better-auth-trpc-tw.tsx +20 -0
  437. package/templates/t3-app/extras/src/pages/_app/with-better-auth-trpc.tsx +20 -0
  438. package/templates/t3-app/extras/src/pages/_app/with-trpc-tw.tsx +20 -0
  439. package/templates/t3-app/extras/src/pages/_app/with-trpc.tsx +20 -0
  440. package/templates/t3-app/extras/src/pages/_app/with-tw.tsx +18 -0
  441. package/templates/t3-app/extras/src/pages/api/auth/[...all].ts +8 -0
  442. package/templates/t3-app/extras/src/pages/api/trpc/[trpc].ts +19 -0
  443. package/templates/t3-app/extras/src/pages/index/base.tsx +47 -0
  444. package/templates/t3-app/extras/src/pages/index/with-auth-trpc-tw.tsx +81 -0
  445. package/templates/t3-app/extras/src/pages/index/with-auth-trpc.tsx +82 -0
  446. package/templates/t3-app/extras/src/pages/index/with-better-auth-trpc-tw.tsx +99 -0
  447. package/templates/t3-app/extras/src/pages/index/with-better-auth-trpc.tsx +100 -0
  448. package/templates/t3-app/extras/src/pages/index/with-better-auth-tw.tsx +87 -0
  449. package/templates/t3-app/extras/src/pages/index/with-better-auth.tsx +88 -0
  450. package/templates/t3-app/extras/src/pages/index/with-trpc-tw.tsx +52 -0
  451. package/templates/t3-app/extras/src/pages/index/with-trpc.tsx +53 -0
  452. package/templates/t3-app/extras/src/pages/index/with-tw.tsx +45 -0
  453. package/templates/t3-app/extras/src/server/api/root.ts +23 -0
  454. package/templates/t3-app/extras/src/server/api/routers/post/base.ts +40 -0
  455. package/templates/t3-app/extras/src/server/api/routers/post/with-auth-drizzle.ts +39 -0
  456. package/templates/t3-app/extras/src/server/api/routers/post/with-auth-prisma.ts +41 -0
  457. package/templates/t3-app/extras/src/server/api/routers/post/with-auth.ts +37 -0
  458. package/templates/t3-app/extras/src/server/api/routers/post/with-drizzle.ts +30 -0
  459. package/templates/t3-app/extras/src/server/api/routers/post/with-prisma.ts +31 -0
  460. package/templates/t3-app/extras/src/server/api/trpc-app/base.ts +103 -0
  461. package/templates/t3-app/extras/src/server/api/trpc-app/with-auth-db.ts +133 -0
  462. package/templates/t3-app/extras/src/server/api/trpc-app/with-auth.ts +130 -0
  463. package/templates/t3-app/extras/src/server/api/trpc-app/with-better-auth-db.ts +134 -0
  464. package/templates/t3-app/extras/src/server/api/trpc-app/with-better-auth.ts +131 -0
  465. package/templates/t3-app/extras/src/server/api/trpc-app/with-db.ts +106 -0
  466. package/templates/t3-app/extras/src/server/api/trpc-pages/base.ts +122 -0
  467. package/templates/t3-app/extras/src/server/api/trpc-pages/with-auth-db.ts +160 -0
  468. package/templates/t3-app/extras/src/server/api/trpc-pages/with-auth.ts +158 -0
  469. package/templates/t3-app/extras/src/server/api/trpc-pages/with-better-auth-db.ts +168 -0
  470. package/templates/t3-app/extras/src/server/api/trpc-pages/with-better-auth.ts +166 -0
  471. package/templates/t3-app/extras/src/server/api/trpc-pages/with-db.ts +125 -0
  472. package/templates/t3-app/extras/src/server/auth/config/base.ts +52 -0
  473. package/templates/t3-app/extras/src/server/auth/config/with-drizzle.ts +67 -0
  474. package/templates/t3-app/extras/src/server/auth/config/with-prisma.ts +56 -0
  475. package/templates/t3-app/extras/src/server/auth/index.ts +10 -0
  476. package/templates/t3-app/extras/src/server/better-auth/client.ts +5 -0
  477. package/templates/t3-app/extras/src/server/better-auth/config/base.ts +12 -0
  478. package/templates/t3-app/extras/src/server/better-auth/config/with-drizzle.ts +26 -0
  479. package/templates/t3-app/extras/src/server/better-auth/config/with-prisma.ts +26 -0
  480. package/templates/t3-app/extras/src/server/better-auth/index.ts +1 -0
  481. package/templates/t3-app/extras/src/server/better-auth/server.ts +7 -0
  482. package/templates/t3-app/extras/src/server/db/db-prisma-planetscale.ts +19 -0
  483. package/templates/t3-app/extras/src/server/db/db-prisma.ts +16 -0
  484. package/templates/t3-app/extras/src/server/db/index-drizzle/with-mysql.ts +18 -0
  485. package/templates/t3-app/extras/src/server/db/index-drizzle/with-planetscale.ts +7 -0
  486. package/templates/t3-app/extras/src/server/db/index-drizzle/with-postgres.ts +18 -0
  487. package/templates/t3-app/extras/src/server/db/index-drizzle/with-sqlite.ts +19 -0
  488. package/templates/t3-app/extras/src/server/db/schema-drizzle/base-mysql.ts +26 -0
  489. package/templates/t3-app/extras/src/server/db/schema-drizzle/base-planetscale.ts +26 -0
  490. package/templates/t3-app/extras/src/server/db/schema-drizzle/base-postgres.ts +26 -0
  491. package/templates/t3-app/extras/src/server/db/schema-drizzle/base-sqlite.ts +27 -0
  492. package/templates/t3-app/extras/src/server/db/schema-drizzle/with-auth-mysql.ts +111 -0
  493. package/templates/t3-app/extras/src/server/db/schema-drizzle/with-auth-planetscale.ts +100 -0
  494. package/templates/t3-app/extras/src/server/db/schema-drizzle/with-auth-postgres.ts +108 -0
  495. package/templates/t3-app/extras/src/server/db/schema-drizzle/with-auth-sqlite.ts +105 -0
  496. package/templates/t3-app/extras/src/server/db/schema-drizzle/with-better-auth-mysql.ts +106 -0
  497. package/templates/t3-app/extras/src/server/db/schema-drizzle/with-better-auth-planetscale.ts +106 -0
  498. package/templates/t3-app/extras/src/server/db/schema-drizzle/with-better-auth-postgres.ts +105 -0
  499. package/templates/t3-app/extras/src/server/db/schema-drizzle/with-better-auth-sqlite.ts +134 -0
  500. package/templates/t3-app/extras/src/styles/globals.css +6 -0
  501. package/templates/t3-app/extras/src/trpc/query-client.ts +25 -0
  502. package/templates/t3-app/extras/src/trpc/react.tsx +78 -0
  503. package/templates/t3-app/extras/src/trpc/server.ts +30 -0
  504. package/templates/t3-app/extras/src/utils/api.ts +68 -0
  505. package/templates/t3-app/extras/start-database/mysql.sh +86 -0
  506. package/templates/t3-app/extras/start-database/postgres.sh +88 -0
@@ -0,0 +1,107 @@
1
+ # ${workerName} Worker Instructions
2
+
3
+ This worker is responsible for ${workerRoleDescription}
4
+
5
+ ## Worker-Specific Guidelines
6
+
7
+ - Follow the prompt in \`prompt.md\` for detailed role instructions
8
+ - Use container-use environments for all operations
9
+ - Reference \`.claude/commands/\`, \`.claude/skills/\`, and \`.claude/agents/\` for worker-specific resources
10
+
11
+ ## Environment Operations
12
+
13
+ All file, code, and shell operations MUST use container-use environments.
14
+
15
+ - DO NOT use git CLI directly
16
+ - All operations must go through container-use MCP
17
+ - Inform user: \`container-use log <env_id>\` AND \`container-use checkout <env_id>\`
18
+
19
+ ## Project Status & Configuration
20
+
21
+ **CRITICAL:** Always check `.boss/project-config.json` to understand project state before starting work.
22
+
23
+ **Read project-config.json to understand:**
24
+ - Current branch and workflow stage
25
+ - Active workers and their status
26
+ - Completed tasks
27
+ - Repository information
28
+ - Initialization status
29
+
30
+ **Update project-config.json when:**
31
+ - Starting work: Add your environment ID to `workflow.activeWorkers`
32
+ - Completing work: Add a summary to `workers.summaries` with:
33
+ - Environment ID
34
+ - Tasks completed
35
+ - Artifacts created (API docs, user guides, developer docs)
36
+ - Documentation coverage metrics
37
+ - Any blockers or issues encountered
38
+ - After merging: Remove from `workflow.activeWorkers` and add to `workflow.completedTasks`
39
+
40
+ **Example worker summary format:**
41
+ ```json
42
+ {
43
+ "envId": "env-abc123",
44
+ "workerType": "${workerName}",
45
+ "completedAt": "2026-01-15T10:30:00Z",
46
+ "tasksCompleted": ["API documentation", "User guide", "Quickstart"],
47
+ "artifactsCreated": ["docs/api.md", "docs/user-guide.md", ".specify/specs/001-feature/quickstart.md"],
48
+ "coverage": "100%",
49
+ "notes": "Created comprehensive documentation for feature"
50
+ }
51
+ ```
52
+
53
+ **IMPORTANT:**
54
+ - NEVER use git commands to check project status - read project-config.json instead
55
+ - ALWAYS update project-config.json when completing work
56
+ - Keep summaries concise but informative for BOSS to track progress
57
+
58
+ ## Git Commit Strategy
59
+
60
+ **IMPORTANT:** Batch related changes into logical commits to reduce overhead and improve workflow efficiency.
61
+
62
+ ### Batching Guidelines
63
+
64
+ 1. **Group files by feature/fix** (not by file type)
65
+ 2. **Aim for 1-3 commits per task** instead of 5-10
66
+ 3. **Use meaningful commit messages** following Conventional Commits
67
+ 4. **Only commit when reaching a logical checkpoint**
68
+
69
+ ### Good Practice ✅
70
+
71
+ ```bash
72
+ # Create documentation files in one commit
73
+ git add docs/api.md docs/user-guide.md .specify/specs/001-feature/quickstart.md
74
+ git commit -m "docs: add API documentation and user guide"
75
+
76
+ # Or batch complete documentation phase
77
+ git add docs/api.md docs/tutorials/ README.md
78
+ git commit -m "docs: complete feature documentation with API reference and tutorials"
79
+ ```
80
+
81
+ ### Bad Practice ❌
82
+
83
+ ```bash
84
+ # Individual commits for related work (too granular)
85
+ git add docs/api.md
86
+ git commit -m "docs: add API docs"
87
+
88
+ git add docs/user-guide.md
89
+ git commit -m "docs: add guide"
90
+
91
+ git add README.md
92
+ git commit -m "docs: update README"
93
+ ```
94
+
95
+ ### Commit Message Format
96
+
97
+ Follow Conventional Commits:
98
+ - `docs:` - Documentation changes (primary for technical-writer)
99
+
100
+ ### Expected Behavior
101
+
102
+ - **Simple task:** 1-2 commits (initial docs + refinements)
103
+ - **Complex task:** 2-3 commits (major documentation phases)
104
+ - **Avoid:** 5-10 commits for small changes
105
+
106
+ This batching strategy reduces git overhead by ~10-15 seconds per task and creates cleaner commit history.
107
+
@@ -0,0 +1,110 @@
1
+ # ${workerName} Worker Instructions
2
+
3
+ This worker is responsible for ${workerRoleDescription}
4
+
5
+ ## Worker-Specific Guidelines
6
+
7
+ - Follow the prompt in \`prompt.md\` for detailed role instructions
8
+ - Use container-use environments for all operations
9
+ - Reference \`.claude/commands/\`, \`.claude/skills/\`, and \`.claude/agents/\` for worker-specific resources
10
+
11
+ ## Environment Operations
12
+
13
+ All file, code, and shell operations MUST use container-use environments.
14
+
15
+ - DO NOT use git CLI directly
16
+ - All operations must go through container-use MCP
17
+ - Inform user: \`container-use log <env_id>\` AND \`container-use checkout <env_id>\`
18
+
19
+ ## Project Status & Configuration
20
+
21
+ **CRITICAL:** Always check `.boss/project-config.json` to understand project state before starting work.
22
+
23
+ **Read project-config.json to understand:**
24
+ - Current branch and workflow stage
25
+ - Active workers and their status
26
+ - Completed tasks
27
+ - Repository information
28
+ - Initialization status
29
+
30
+ **Update project-config.json when:**
31
+ - Starting work: Add your environment ID to `workflow.activeWorkers`
32
+ - Completing work: Add a summary to `workers.summaries` with:
33
+ - Environment ID
34
+ - Tasks completed
35
+ - Artifacts created (test files, test reports)
36
+ - Test coverage metrics
37
+ - Mutation testing scores
38
+ - Any blockers or issues encountered
39
+ - After merging: Remove from `workflow.activeWorkers` and add to `workflow.completedTasks`
40
+
41
+ **Example worker summary format:**
42
+ ```json
43
+ {
44
+ "envId": "env-abc123",
45
+ "workerType": "${workerName}",
46
+ "completedAt": "2026-01-15T10:30:00Z",
47
+ "tasksCompleted": ["BDD test suite", "Integration tests"],
48
+ "artifactsCreated": ["tests/feature.test.ts", "tests/integration.test.ts"],
49
+ "testCoverage": "85%",
50
+ "mutationScore": "82%",
51
+ "notes": "Created comprehensive test suite with BDD tests matching spec.md"
52
+ }
53
+ ```
54
+
55
+ **IMPORTANT:**
56
+ - NEVER use git commands to check project status - read project-config.json instead
57
+ - ALWAYS update project-config.json when completing work
58
+ - Keep summaries concise but informative for BOSS to track progress
59
+
60
+ ## Git Commit Strategy
61
+
62
+ **IMPORTANT:** Batch related changes into logical commits to reduce overhead and improve workflow efficiency.
63
+
64
+ ### Batching Guidelines
65
+
66
+ 1. **Group files by feature/fix** (not by file type)
67
+ 2. **Aim for 1-3 commits per task** instead of 5-10
68
+ 3. **Use meaningful commit messages** following Conventional Commits
69
+ 4. **Only commit when reaching a logical checkpoint**
70
+
71
+ ### Good Practice ✅
72
+
73
+ ```bash
74
+ # Create test files in one commit
75
+ git add tests/feature.test.ts tests/integration.test.ts tests/e2e.test.ts
76
+ git commit -m "test: add comprehensive test suite with unit, integration, and e2e tests"
77
+
78
+ # Or batch test implementation with fixtures
79
+ git add tests/api/users.test.ts tests/fixtures/users.ts tests/helpers/auth.ts
80
+ git commit -m "test: implement user API tests with fixtures and helpers"
81
+ ```
82
+
83
+ ### Bad Practice ❌
84
+
85
+ ```bash
86
+ # Individual commits for related work (too granular)
87
+ git add tests/feature.test.ts
88
+ git commit -m "test: add unit tests"
89
+
90
+ git add tests/integration.test.ts
91
+ git commit -m "test: add integration tests"
92
+
93
+ git add tests/e2e.test.ts
94
+ git commit -m "test: add e2e tests"
95
+ ```
96
+
97
+ ### Commit Message Format
98
+
99
+ Follow Conventional Commits:
100
+ - `test:` - Adding/updating tests (primary for tester)
101
+ - `fix:` - Bug fixes found during testing
102
+
103
+ ### Expected Behavior
104
+
105
+ - **Simple task:** 1-2 commits (test suite + coverage)
106
+ - **Complex task:** 2-3 commits (major test phases)
107
+ - **Avoid:** 5-10 commits for small changes
108
+
109
+ This batching strategy reduces git overhead by ~10-15 seconds per task and creates cleaner commit history.
110
+
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bootstrap.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/bootstrap.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,379 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import { bootstrapCommand } from '../bootstrap.js';
3
+ // Mock all dependencies
4
+ vi.mock('../../utils/logger.js', () => ({
5
+ logger: {
6
+ section: vi.fn(),
7
+ info: vi.fn(),
8
+ success: vi.fn(),
9
+ error: vi.fn(),
10
+ warning: vi.fn(),
11
+ startSpinner: vi.fn(),
12
+ stopSpinner: vi.fn()
13
+ }
14
+ }));
15
+ vi.mock('../../utils/validators.js', () => ({
16
+ validateProjectName: vi.fn((name) => ({ valid: true })),
17
+ validateTemplate: vi.fn((template) => ({ valid: true })),
18
+ validateQualityPreset: vi.fn((quality) => ({ valid: true })),
19
+ validateMCPScope: vi.fn((scope) => ({ valid: true })),
20
+ validateProjectDirectory: vi.fn(async () => ({ valid: true }))
21
+ }));
22
+ vi.mock('../../utils/prompts.js', () => ({
23
+ promptProjectName: vi.fn(async () => 'test-project'),
24
+ promptTemplate: vi.fn(async () => 'nextjs-app-turbo'),
25
+ promptQualityPreset: vi.fn(async () => 'production'),
26
+ promptGitHubConfig: vi.fn(async () => ({ repo: 'test-repo', org: 'test-org' })),
27
+ promptMCPScope: vi.fn(async () => 'both'),
28
+ confirmBootstrap: vi.fn(async () => true),
29
+ TEMPLATES: {
30
+ 'nextjs-app-turbo': { name: 'Next.js App', description: 'Test', stack: [] }
31
+ },
32
+ QUALITY_PRESETS: {
33
+ 'production': { name: 'Production', description: 'Test', gates: {} }
34
+ }
35
+ }));
36
+ vi.mock('../../utils/git.js', () => ({
37
+ initGitRepository: vi.fn(async () => { }),
38
+ addFiles: vi.fn(async () => { }),
39
+ commit: vi.fn(async () => { }),
40
+ createBranch: vi.fn(async () => { })
41
+ }));
42
+ vi.mock('../../utils/file-system.js', () => ({
43
+ ensureDirectory: vi.fn(async () => { }),
44
+ writeFile: vi.fn(async () => { }),
45
+ readFile: vi.fn(async () => '{}'),
46
+ pathExists: vi.fn(async () => false)
47
+ }));
48
+ vi.mock('../../generators/project-structure.js', () => ({
49
+ generateProjectStructure: vi.fn(async () => { })
50
+ }));
51
+ vi.mock('../../generators/boss-config.js', () => ({
52
+ generateBossConfig: vi.fn(async () => { })
53
+ }));
54
+ vi.mock('../../generators/specify-structure.js', () => ({
55
+ copySpecKitStructure: vi.fn(async () => { })
56
+ }));
57
+ vi.mock('../../generators/container-use-config.js', () => ({
58
+ generateContainerUseConfig: vi.fn(async () => { })
59
+ }));
60
+ vi.mock('../../generators/worker-configs.js', () => ({
61
+ generateWorkerConfigs: vi.fn(async () => { })
62
+ }));
63
+ vi.mock('../../generators/quality-gates.js', () => ({
64
+ generateQualityGates: vi.fn(async () => { })
65
+ }));
66
+ vi.mock('../../generators/mcp-config.js', () => ({
67
+ generateMCPConfig: vi.fn(async () => { })
68
+ }));
69
+ vi.mock('../../generators/github-workflows.js', () => ({
70
+ generateGitHubWorkflows: vi.fn(async () => { })
71
+ }));
72
+ vi.mock('../../generators/git-hooks.js', () => ({
73
+ generateGitHooks: vi.fn(async () => { })
74
+ }));
75
+ vi.mock('../../generators/docker-compose.js', () => ({
76
+ generateDockerCompose: vi.fn(async () => { })
77
+ }));
78
+ vi.mock('../../generators/claude-md.js', () => ({
79
+ generateClaudeMD: vi.fn(async () => { })
80
+ }));
81
+ vi.mock('../../generators/claude-folder.js', () => ({
82
+ generateClaudeFolder: vi.fn(async () => { })
83
+ }));
84
+ vi.mock('../../generators/start-boss-sh.js', () => ({
85
+ generateStartBossScript: vi.fn(async () => { })
86
+ }));
87
+ vi.mock('../../generators/template-loader.js', () => ({
88
+ loadTemplate: vi.fn(async () => { }),
89
+ loadAssetTemplate: vi.fn(async () => 'test content')
90
+ }));
91
+ vi.mock('../../generators/template-docs.js', () => ({
92
+ generateTemplateDocs: vi.fn(async () => { })
93
+ }));
94
+ vi.mock('../../presets/quality-presets.js', () => ({
95
+ applyQualityPreset: vi.fn(async () => { })
96
+ }));
97
+ vi.mock('execa', () => ({
98
+ execa: vi.fn(async (cmd, args) => {
99
+ // Mock git commands
100
+ if (cmd === 'git') {
101
+ if (args[0] === 'ls-files') {
102
+ return { stdout: 'tests/index.test.ts' };
103
+ }
104
+ if (args[0] === 'rev-parse') {
105
+ return { stdout: 'main' };
106
+ }
107
+ return { stdout: '', stderr: '' };
108
+ }
109
+ // Mock npx husky
110
+ if (cmd === 'npx' && args[0] === 'husky') {
111
+ return { stdout: '', stderr: '' };
112
+ }
113
+ return { stdout: '', stderr: '' };
114
+ })
115
+ }));
116
+ // Mock fs-extra
117
+ vi.mock('fs-extra', () => ({
118
+ default: {
119
+ pathExists: vi.fn(async () => false),
120
+ ensureDir: vi.fn(async () => { }),
121
+ readdir: vi.fn(async () => []),
122
+ writeFile: vi.fn(async () => { })
123
+ }
124
+ }));
125
+ describe('bootstrap command', () => {
126
+ let processExitSpy;
127
+ beforeEach(() => {
128
+ vi.clearAllMocks();
129
+ processExitSpy = vi.spyOn(process, 'exit').mockImplementation((() => { }));
130
+ });
131
+ afterEach(() => {
132
+ processExitSpy.mockRestore();
133
+ });
134
+ describe('bootstrapCommand', () => {
135
+ it('should bootstrap project with all options provided (non-interactive)', async () => {
136
+ const options = {
137
+ name: 'test-project',
138
+ template: 'nextjs-app-turbo',
139
+ quality: 'production',
140
+ githubRepo: 'test-repo',
141
+ githubOrg: 'test-org',
142
+ mcpScope: 'both',
143
+ nonInteractive: true
144
+ };
145
+ await bootstrapCommand(options);
146
+ // Verify all generators were called
147
+ const { generateProjectStructure } = await import('../../generators/project-structure.js');
148
+ const { generateBossConfig } = await import('../../generators/boss-config.js');
149
+ const { copySpecKitStructure } = await import('../../generators/specify-structure.js');
150
+ expect(generateProjectStructure).toHaveBeenCalled();
151
+ expect(generateBossConfig).toHaveBeenCalled();
152
+ expect(copySpecKitStructure).toHaveBeenCalled();
153
+ });
154
+ it('should handle user cancellation', async () => {
155
+ const { confirmBootstrap } = await import('../../utils/prompts.js');
156
+ vi.mocked(confirmBootstrap).mockResolvedValueOnce(false);
157
+ const options = {
158
+ name: 'test-project',
159
+ template: 'nextjs-app-turbo',
160
+ quality: 'production',
161
+ nonInteractive: false
162
+ };
163
+ await bootstrapCommand(options);
164
+ const { logger } = await import('../../utils/logger.js');
165
+ expect(logger.info).toHaveBeenCalledWith('Bootstrap cancelled');
166
+ });
167
+ it('should exit on invalid project directory', async () => {
168
+ const { validateProjectDirectory } = await import('../../utils/validators.js');
169
+ vi.mocked(validateProjectDirectory).mockResolvedValueOnce({
170
+ valid: false,
171
+ error: 'Directory is not empty'
172
+ });
173
+ const options = {
174
+ name: 'test-project',
175
+ template: 'nextjs-app-turbo',
176
+ quality: 'production',
177
+ nonInteractive: true
178
+ };
179
+ await bootstrapCommand(options);
180
+ expect(processExitSpy).toHaveBeenCalledWith(1);
181
+ });
182
+ it('should validate project name when provided', async () => {
183
+ const { validateProjectName } = await import('../../utils/validators.js');
184
+ vi.mocked(validateProjectName).mockReturnValueOnce({
185
+ valid: false,
186
+ error: 'Invalid project name'
187
+ });
188
+ const options = {
189
+ name: 'Invalid Name',
190
+ template: 'nextjs-app-turbo',
191
+ quality: 'production',
192
+ nonInteractive: true
193
+ };
194
+ await bootstrapCommand(options);
195
+ expect(processExitSpy).toHaveBeenCalledWith(1);
196
+ });
197
+ it('should validate template when provided', async () => {
198
+ const { validateTemplate } = await import('../../utils/validators.js');
199
+ vi.mocked(validateTemplate).mockReturnValueOnce({
200
+ valid: false,
201
+ error: 'Invalid template'
202
+ });
203
+ const options = {
204
+ name: 'test-project',
205
+ template: 'invalid-template',
206
+ quality: 'production',
207
+ nonInteractive: true
208
+ };
209
+ await bootstrapCommand(options);
210
+ expect(processExitSpy).toHaveBeenCalledWith(1);
211
+ });
212
+ it('should validate quality preset when provided', async () => {
213
+ const { validateQualityPreset } = await import('../../utils/validators.js');
214
+ vi.mocked(validateQualityPreset).mockReturnValueOnce({
215
+ valid: false,
216
+ error: 'Invalid quality preset'
217
+ });
218
+ const options = {
219
+ name: 'test-project',
220
+ template: 'nextjs-app-turbo',
221
+ quality: 'invalid-quality',
222
+ nonInteractive: true
223
+ };
224
+ await bootstrapCommand(options);
225
+ expect(processExitSpy).toHaveBeenCalledWith(1);
226
+ });
227
+ it('should validate MCP scope when provided', async () => {
228
+ const { validateMCPScope } = await import('../../utils/validators.js');
229
+ vi.mocked(validateMCPScope).mockReturnValueOnce({
230
+ valid: false,
231
+ error: 'Invalid MCP scope'
232
+ });
233
+ const options = {
234
+ name: 'test-project',
235
+ template: 'nextjs-app-turbo',
236
+ quality: 'production',
237
+ mcpScope: 'invalid-scope',
238
+ nonInteractive: true
239
+ };
240
+ await bootstrapCommand(options);
241
+ expect(processExitSpy).toHaveBeenCalledWith(1);
242
+ });
243
+ it('should use interactive prompts when options missing', async () => {
244
+ const { promptProjectName, promptTemplate, promptQualityPreset, promptGitHubConfig } = await import('../../utils/prompts.js');
245
+ const options = {
246
+ nonInteractive: false
247
+ };
248
+ await bootstrapCommand(options);
249
+ expect(promptProjectName).toHaveBeenCalled();
250
+ expect(promptTemplate).toHaveBeenCalled();
251
+ expect(promptQualityPreset).toHaveBeenCalled();
252
+ expect(promptGitHubConfig).toHaveBeenCalled();
253
+ });
254
+ it('should initialize git repository', async () => {
255
+ const { initGitRepository } = await import('../../utils/git.js');
256
+ const options = {
257
+ name: 'test-project',
258
+ template: 'nextjs-app-turbo',
259
+ quality: 'production',
260
+ nonInteractive: true
261
+ };
262
+ await bootstrapCommand(options);
263
+ expect(initGitRepository).toHaveBeenCalled();
264
+ });
265
+ it('should generate all required configurations', async () => {
266
+ const { generateWorkerConfigs } = await import('../../generators/worker-configs.js');
267
+ const { generateQualityGates } = await import('../../generators/quality-gates.js');
268
+ const { generateMCPConfig } = await import('../../generators/mcp-config.js');
269
+ const { generateGitHubWorkflows } = await import('../../generators/github-workflows.js');
270
+ const options = {
271
+ name: 'test-project',
272
+ template: 'nextjs-app-turbo',
273
+ quality: 'production',
274
+ nonInteractive: true
275
+ };
276
+ await bootstrapCommand(options);
277
+ expect(generateWorkerConfigs).toHaveBeenCalled();
278
+ expect(generateQualityGates).toHaveBeenCalled();
279
+ expect(generateMCPConfig).toHaveBeenCalled();
280
+ expect(generateGitHubWorkflows).toHaveBeenCalled();
281
+ });
282
+ it('should create initial setup branch', async () => {
283
+ const { createBranch } = await import('../../utils/git.js');
284
+ const options = {
285
+ name: 'test-project',
286
+ template: 'nextjs-app-turbo',
287
+ quality: 'production',
288
+ nonInteractive: true
289
+ };
290
+ await bootstrapCommand(options);
291
+ expect(createBranch).toHaveBeenCalledWith(expect.any(String), 'feature/boss-initial-setup');
292
+ });
293
+ it('should commit bootstrap files', async () => {
294
+ const { addFiles, commit } = await import('../../utils/git.js');
295
+ const options = {
296
+ name: 'test-project',
297
+ template: 'nextjs-app-turbo',
298
+ quality: 'production',
299
+ nonInteractive: true
300
+ };
301
+ await bootstrapCommand(options);
302
+ expect(addFiles).toHaveBeenCalledWith(expect.any(String), ['.']);
303
+ expect(commit).toHaveBeenCalledWith(expect.any(String), 'chore: BOSS bootstrap - initial project structure');
304
+ });
305
+ it('should handle bootstrap errors', async () => {
306
+ const { generateProjectStructure } = await import('../../generators/project-structure.js');
307
+ vi.mocked(generateProjectStructure).mockRejectedValueOnce(new Error('Generation failed'));
308
+ const options = {
309
+ name: 'test-project',
310
+ template: 'nextjs-app-turbo',
311
+ quality: 'production',
312
+ nonInteractive: true
313
+ };
314
+ await expect(bootstrapCommand(options)).rejects.toThrow('Generation failed');
315
+ });
316
+ it('should apply quality preset', async () => {
317
+ const { applyQualityPreset } = await import('../../presets/quality-presets.js');
318
+ const options = {
319
+ name: 'test-project',
320
+ template: 'nextjs-app-turbo',
321
+ quality: 'production',
322
+ nonInteractive: true
323
+ };
324
+ await bootstrapCommand(options);
325
+ expect(applyQualityPreset).toHaveBeenCalledWith(expect.any(String), 'production');
326
+ });
327
+ it('should load template', async () => {
328
+ const { loadTemplate } = await import('../../generators/template-loader.js');
329
+ const options = {
330
+ name: 'test-project',
331
+ template: 'nextjs-app-turbo',
332
+ quality: 'production',
333
+ nonInteractive: true
334
+ };
335
+ await bootstrapCommand(options);
336
+ expect(loadTemplate).toHaveBeenCalledWith(expect.any(String), 'nextjs-app-turbo', expect.objectContaining({
337
+ name: 'test-project',
338
+ template: 'nextjs-app-turbo',
339
+ quality: 'production'
340
+ }));
341
+ });
342
+ it('should use project scope for MCP when specified', async () => {
343
+ const { generateMCPConfig } = await import('../../generators/mcp-config.js');
344
+ const options = {
345
+ name: 'test-project',
346
+ template: 'nextjs-app-turbo',
347
+ quality: 'production',
348
+ mcpScope: 'project',
349
+ nonInteractive: true
350
+ };
351
+ await bootstrapCommand(options);
352
+ expect(generateMCPConfig).toHaveBeenCalledWith(expect.any(String), 'project');
353
+ });
354
+ it('should use user scope for MCP when specified', async () => {
355
+ const { generateMCPConfig } = await import('../../generators/mcp-config.js');
356
+ const options = {
357
+ name: 'test-project',
358
+ template: 'nextjs-app-turbo',
359
+ quality: 'production',
360
+ mcpScope: 'user',
361
+ nonInteractive: true
362
+ };
363
+ await bootstrapCommand(options);
364
+ expect(generateMCPConfig).toHaveBeenCalledWith(expect.any(String), 'user');
365
+ });
366
+ it('should prompt for MCP scope in interactive mode when not provided', async () => {
367
+ const { promptMCPScope } = await import('../../utils/prompts.js');
368
+ const options = {
369
+ name: 'test-project',
370
+ template: 'nextjs-app-turbo',
371
+ quality: 'production',
372
+ nonInteractive: false
373
+ };
374
+ await bootstrapCommand(options);
375
+ expect(promptMCPScope).toHaveBeenCalled();
376
+ });
377
+ });
378
+ });
379
+ //# sourceMappingURL=bootstrap.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/bootstrap.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doctor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/doctor.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ // Mock execa
3
+ vi.mock('execa');
4
+ describe('doctor command', () => {
5
+ it('should be importable', async () => {
6
+ const { doctorCommand } = await import('../doctor.js');
7
+ expect(doctorCommand).toBeDefined();
8
+ expect(typeof doctorCommand).toBe('function');
9
+ });
10
+ // Note: Full integration tests would require actual system tools
11
+ // These are tested in manual testing scenarios
12
+ });
13
+ //# sourceMappingURL=doctor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/doctor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAGlD,aAAa;AACb,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEjB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,+CAA+C;AACjD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BootstrapOptions } from '../types/index.js';
2
+ export declare function bootstrapCommand(options: BootstrapOptions): Promise<void>;
3
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,mBAAmB,CAAC;AAqBzE,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoL/E"}