@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,471 @@
1
+ #!/bin/bash
2
+
3
+ # BOSS Launch Script
4
+ # Launches Claude Code/Cursor with MCP-only tool restrictions
5
+ # MCP servers are configured to use op run automatically (see .mcp.json)
6
+ # See: https://1password.com/blog/securing-mcp-servers-with-1password-stop-credential-exposure-in-your-agent
7
+
8
+ # Configuration
9
+ DEBUG=false
10
+ INIT_PROMPT="Check .boss/project-config.json initialization status. If initialization.stage is not 'ready', automatically complete the initial setup in this EXACT order: 1) Check if GitHub remote exists using 'git remote -v', 2) If no remote exists: create repository if needed using GitHub MCP (GitHub MCP is already authenticated using GITHUB_PERSONAL_ACCESS_TOKEN - use it directly), ask user for preferences (private/public, organization), add remote using HTTPS URL format 'git remote add origin https://github.com/<owner>/<repo>.git' (NEVER use SSH git@github.com format - always use HTTPS), 3) Check current branch using 'git branch --show-current'. If on feature/boss-initial-setup with uncommitted changes: commit them first using 'git add . && git commit -m \"chore: bootstrap files\"' (these are bootstrap files that should be on feature branch). 4) Switch to main branch: 'git checkout main' (if uncommitted changes prevent checkout, commit them to current branch first, then switch). 5) FIRST push empty main branch: 'git push -u origin main' (main is EMPTY - only empty commit, no validation needed, git will use GITHUB_TOKEN from environment automatically, which is set to same value as GITHUB_PERSONAL_ACCESS_TOKEN). The pre-push hook allows empty main push without validation checks. Main branch must be pushed first (empty) before feature branch. 6) Switch back to feature branch: 'git checkout feature/boss-initial-setup' (branch should already exist from bootstrap). 7) CRITICAL - BEFORE pushing feature branch: Verify all validation checks pass by running 'pnpm typecheck', 'pnpm lint', 'bash scripts/security-check.sh', and 'pnpm test:unit' (or npm equivalents). Fix any failures before pushing. 8) Push feature branch: 'git push -u origin feature/boss-initial-setup' (this contains all bootstrap files - git will use GITHUB_TOKEN from environment automatically, which is set to same value as GITHUB_PERSONAL_ACCESS_TOKEN). If push fails due to validation errors, fix the issues and try again. 9) Mark initialization.stage as 'ready' in project-config.json, 10) Commit and push project-config.json changes: 'git add .boss/project-config.json && git commit -m \"chore: update project-config.json\" && git push', 11) FINAL STEP - Create PR from feature/boss-initial-setup to main using GitHub MCP: Use 'github create_pull_request' with title 'chore: BOSS initial setup - bootstrap files' and body 'This PR contains all BOSS bootstrap files and initial project structure. Ready for review and merge.' Set base branch to 'main' and head branch to 'feature/boss-initial-setup'. Do this automatically without asking for confirmation to proceed."
11
+
12
+ # Parse command-line arguments
13
+ for arg in "$@"; do
14
+ case $arg in
15
+ --debug)
16
+ DEBUG=true
17
+ shift
18
+ ;;
19
+ *)
20
+ break
21
+ ;;
22
+ esac
23
+ done
24
+
25
+ # Debug logging function
26
+ debug_log() {
27
+ if [ "$DEBUG" = true ]; then
28
+ echo "🔍 [DEBUG] $1" >&2
29
+ fi
30
+ }
31
+
32
+ # Error logging function
33
+ error_log() {
34
+ echo "❌ Error: $1" >&2
35
+ }
36
+
37
+ # Warning logging function
38
+ warning_log() {
39
+ echo "⚠️ Warning: $1" >&2
40
+ }
41
+
42
+ # Info logging function
43
+ info_log() {
44
+ echo "$1"
45
+ }
46
+
47
+ # Detect which IDE is available (Claude Code vs Cursor)
48
+ detect_ide() {
49
+ local ide_dir=""
50
+
51
+ # Check for .claude directory first (Claude Code)
52
+ if [ -d ".claude" ]; then
53
+ ide_dir=".claude"
54
+ debug_log "Detected .claude directory (Claude Code)"
55
+ # Check for .cursor directory
56
+ elif [ -d ".cursor" ]; then
57
+ ide_dir=".cursor"
58
+ debug_log "Detected .cursor directory (Cursor)"
59
+ # Check for CLI commands
60
+ elif command -v claude &> /dev/null || command -v claude-code &> /dev/null; then
61
+ ide_dir=".claude"
62
+ debug_log "Detected Claude Code CLI command"
63
+ elif command -v cursor &> /dev/null; then
64
+ ide_dir=".cursor"
65
+ debug_log "Detected Cursor CLI command"
66
+ else
67
+ # Default to .claude if neither detected
68
+ ide_dir=".claude"
69
+ debug_log "No IDE detected, defaulting to .claude"
70
+ fi
71
+
72
+ echo "$ide_dir"
73
+ }
74
+
75
+ # Ensure all necessary directories exist
76
+ ensure_directories() {
77
+ local ide_dir="$1"
78
+
79
+ debug_log "Ensuring directories exist: .boss, $ide_dir, $ide_dir/rules"
80
+
81
+ mkdir -p .boss || {
82
+ error_log "Failed to create .boss directory"
83
+ return 1
84
+ }
85
+
86
+ mkdir -p "$ide_dir" || {
87
+ error_log "Failed to create $ide_dir directory"
88
+ return 1
89
+ }
90
+
91
+ mkdir -p "$ide_dir/rules" || {
92
+ error_log "Failed to create $ide_dir/rules directory"
93
+ return 1
94
+ }
95
+
96
+ debug_log "All directories created successfully"
97
+ return 0
98
+ }
99
+
100
+ # Get initialization stage from project-config.json
101
+ get_init_stage() {
102
+ local config_file=".boss/project-config.json"
103
+ local stage=""
104
+
105
+ if [ ! -f "$config_file" ]; then
106
+ debug_log "Project config file not found: $config_file"
107
+ echo ""
108
+ return 0
109
+ fi
110
+
111
+ # Try using jq if available (most reliable)
112
+ if command -v jq &> /dev/null; then
113
+ debug_log "Using jq to parse JSON"
114
+ stage=$(jq -r '.initialization.stage // empty' "$config_file" 2>/dev/null)
115
+ if [ -n "$stage" ] && [ "$stage" != "null" ]; then
116
+ debug_log "Parsed stage with jq: $stage"
117
+ echo "$stage"
118
+ return 0
119
+ fi
120
+ fi
121
+
122
+ # Fallback to grep/sed parsing
123
+ debug_log "Using grep/sed to parse JSON (jq not available or failed)"
124
+
125
+ # Try first method: grep with regex
126
+ stage=$(grep -o '"stage":\s*"[^"]*"' "$config_file" 2>/dev/null | head -1 | grep -o '"[^"]*"' | head -1 | tr -d '"' || echo "")
127
+
128
+ if [ -z "$stage" ]; then
129
+ # Try alternative method: sed extraction
130
+ stage=$(grep '"stage"' "$config_file" 2>/dev/null | head -1 | sed 's/.*"stage"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/' || echo "")
131
+ fi
132
+
133
+ # Also try nested path: initialization.stage
134
+ if [ -z "$stage" ]; then
135
+ stage=$(grep -A 5 '"initialization"' "$config_file" 2>/dev/null | grep '"stage"' | head -1 | sed 's/.*"stage"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/' || echo "")
136
+ fi
137
+
138
+ if [ -n "$stage" ]; then
139
+ debug_log "Parsed stage with grep/sed: $stage"
140
+ else
141
+ debug_log "Could not parse initialization stage from $config_file"
142
+ fi
143
+
144
+ echo "$stage"
145
+ }
146
+
147
+ # Create initialization instruction files
148
+ create_init_files() {
149
+ local stage="$1"
150
+ local ide_dir="$2"
151
+
152
+ if [ -z "$stage" ]; then
153
+ debug_log "No initialization stage provided, skipping file creation"
154
+ return 0
155
+ fi
156
+
157
+ info_log "📋 Initial setup needed (stage: $stage)"
158
+ info_log "🚀 BOSS will automatically complete initial setup when it starts."
159
+
160
+ # Ensure directories exist
161
+ if ! ensure_directories "$ide_dir"; then
162
+ error_log "Failed to create directories for init files"
163
+ return 1
164
+ fi
165
+
166
+ # 1. Create .boss/init-instruction.txt
167
+ debug_log "Creating .boss/init-instruction.txt"
168
+ echo "$INIT_PROMPT" > .boss/init-instruction.txt || {
169
+ error_log "Failed to create .boss/init-instruction.txt"
170
+ return 1
171
+ }
172
+ info_log "✅ Created .boss/init-instruction.txt"
173
+
174
+ # 2. Create .claude/rules/startup-init.md or .cursor/rules/startup-init.md
175
+ local rules_file="$ide_dir/rules/startup-init.md"
176
+ debug_log "Creating $rules_file"
177
+ cat > "$rules_file" << EOF
178
+ # 🚨🚨🚨 CRITICAL STARTUP INSTRUCTION - EXECUTE IMMEDIATELY 🚨🚨🚨
179
+
180
+ ## ⚠️ AUTOMATIC ACTION REQUIRED - DO NOT WAIT FOR USER INPUT ⚠️
181
+
182
+ **The project initialization is NOT complete.**
183
+
184
+ **Current initialization stage:** \`$stage\`
185
+
186
+ **YOU MUST IMMEDIATELY (right now, without waiting):**
187
+
188
+ $INIT_PROMPT
189
+
190
+ **This is a RULE - you MUST execute this automatically when you start.**
191
+ **DO NOT wait for the user to ask you to do this.**
192
+ **DO NOT wait for any confirmation.**
193
+ **START WORKING ON THIS IMMEDIATELY.**
194
+
195
+ **Reference files:**
196
+ - \`.boss/project-config.json\` - Check initialization status here
197
+ - \`.boss/init-instruction.txt\` - Full instruction details
198
+ - \`CLAUDE.md\` - Also contains this instruction at the top
199
+ EOF
200
+ if [ $? -eq 0 ]; then
201
+ info_log "✅ Created $rules_file"
202
+ else
203
+ error_log "Failed to create $rules_file"
204
+ return 1
205
+ fi
206
+
207
+ # 3. Inject into CLAUDE.md if it exists
208
+ if [ -f "CLAUDE.md" ]; then
209
+ inject_claude_md "$stage"
210
+ else
211
+ debug_log "CLAUDE.md not found, skipping injection"
212
+ fi
213
+
214
+ return 0
215
+ }
216
+
217
+ # Inject initialization instruction into CLAUDE.md
218
+ inject_claude_md() {
219
+ local stage="$1"
220
+
221
+ if [ ! -f "CLAUDE.md" ]; then
222
+ debug_log "CLAUDE.md not found, skipping injection"
223
+ return 0
224
+ fi
225
+
226
+ # Check if instruction is already injected (avoid duplicate injection)
227
+ if grep -q "🚨 STARTUP INSTRUCTION" CLAUDE.md 2>/dev/null; then
228
+ debug_log "Startup instruction already exists in CLAUDE.md, skipping injection"
229
+ return 0
230
+ fi
231
+
232
+ debug_log "Injecting startup instruction into CLAUDE.md"
233
+
234
+ # Create backup
235
+ if ! cp CLAUDE.md CLAUDE.md.bak 2>/dev/null; then
236
+ warning_log "Failed to create backup of CLAUDE.md, proceeding anyway"
237
+ else
238
+ debug_log "Created backup: CLAUDE.md.bak"
239
+ fi
240
+
241
+ # Prepend instruction to CLAUDE.md with very prominent formatting
242
+ {
243
+ echo "# 🚨🚨🚨 CRITICAL STARTUP INSTRUCTION - READ THIS FIRST 🚨🚨🚨"
244
+ echo ""
245
+ echo "## ⚠️ AUTOMATIC ACTION REQUIRED - DO NOT WAIT FOR USER INPUT ⚠️"
246
+ echo ""
247
+ echo "**The initialization stage is currently: \`$stage\`**"
248
+ echo ""
249
+ echo "**YOU MUST IMMEDIATELY (without waiting for user input):**"
250
+ echo ""
251
+ echo "$INIT_PROMPT"
252
+ echo ""
253
+ echo "---"
254
+ echo ""
255
+ echo "**This instruction is also available in:**"
256
+ echo "- \`.boss/init-instruction.txt\`"
257
+ echo "- \`.claude/rules/startup-init.md\` (or \`.cursor/rules/startup-init.md\`)"
258
+ echo ""
259
+ echo "---"
260
+ echo ""
261
+ cat CLAUDE.md.bak
262
+ } > CLAUDE.md || {
263
+ error_log "Failed to inject instruction into CLAUDE.md"
264
+ # Restore backup on failure
265
+ if [ -f "CLAUDE.md.bak" ]; then
266
+ mv CLAUDE.md.bak CLAUDE.md
267
+ fi
268
+ return 1
269
+ }
270
+
271
+ info_log "✅ Injected startup instruction into CLAUDE.md"
272
+ return 0
273
+ }
274
+
275
+ # Cleanup initialization files when initialization is complete
276
+ cleanup_init_files() {
277
+ local ide_dir="$1"
278
+
279
+ debug_log "Cleaning up initialization files"
280
+
281
+ # Remove .boss/init-instruction.txt
282
+ if [ -f ".boss/init-instruction.txt" ]; then
283
+ rm -f .boss/init-instruction.txt && info_log "✅ Removed .boss/init-instruction.txt"
284
+ fi
285
+
286
+ # Remove .claude/rules/startup-init.md or .cursor/rules/startup-init.md
287
+ local rules_file="$ide_dir/rules/startup-init.md"
288
+ if [ -f "$rules_file" ]; then
289
+ rm -f "$rules_file" && info_log "✅ Removed $rules_file"
290
+ fi
291
+
292
+ # Also check the other IDE directory
293
+ local other_ide_dir=".claude"
294
+ [ "$ide_dir" = ".claude" ] && other_ide_dir=".cursor"
295
+ local other_rules_file="$other_ide_dir/rules/startup-init.md"
296
+ if [ -f "$other_rules_file" ]; then
297
+ rm -f "$other_rules_file" && info_log "✅ Removed $other_rules_file"
298
+ fi
299
+
300
+ # Restore CLAUDE.md from backup if it exists
301
+ if [ -f "CLAUDE.md.bak" ]; then
302
+ debug_log "Restoring CLAUDE.md from backup"
303
+
304
+ # Remove the startup instruction section if it exists
305
+ if grep -q "🚨 STARTUP INSTRUCTION" CLAUDE.md 2>/dev/null; then
306
+ debug_log "Removing startup instruction section from CLAUDE.md"
307
+
308
+ # Remove everything from "# 🚨 STARTUP INSTRUCTION" to the first "---" separator
309
+ local temp_file=$(mktemp)
310
+ sed '/^# 🚨 STARTUP INSTRUCTION/,/^---$/d' CLAUDE.md > "$temp_file" 2>/dev/null
311
+
312
+ if [ $? -eq 0 ] && [ -s "$temp_file" ]; then
313
+ mv "$temp_file" CLAUDE.md
314
+
315
+ # Remove any leading blank lines (macOS and Linux compatible)
316
+ if [[ "$OSTYPE" == "darwin"* ]]; then
317
+ sed -i '' '/./,$!d' CLAUDE.md 2>/dev/null || true
318
+ else
319
+ sed -i '/./,$!d' CLAUDE.md 2>/dev/null || true
320
+ fi
321
+
322
+ info_log "✅ Removed startup instruction from CLAUDE.md"
323
+ else
324
+ debug_log "Failed to remove instruction section, will restore from backup"
325
+ rm -f "$temp_file"
326
+ fi
327
+ fi
328
+
329
+ # Verify CLAUDE.md is valid before removing backup
330
+ if [ ! -s "CLAUDE.md" ] || ! grep -q "BOSS" CLAUDE.md 2>/dev/null; then
331
+ warning_log "CLAUDE.md appears corrupted, restoring from backup"
332
+ mv CLAUDE.md.bak CLAUDE.md
333
+ info_log "✅ Restored CLAUDE.md from backup"
334
+ else
335
+ rm -f CLAUDE.md.bak
336
+ debug_log "CLAUDE.md restored successfully, backup removed"
337
+ fi
338
+ fi
339
+
340
+ debug_log "Cleanup completed"
341
+ return 0
342
+ }
343
+
344
+ # Launch the appropriate IDE with MCP restrictions
345
+ launch_ide() {
346
+ local ide_type="$1"
347
+ local init_needed="$2"
348
+ shift 2
349
+ local extra_args=("$@")
350
+
351
+ debug_log "Launching IDE: $ide_type, init_needed: $init_needed"
352
+
353
+ # Try Claude Code first
354
+ if command -v claude &> /dev/null || command -v claude-code &> /dev/null; then
355
+ local claude_cmd="claude"
356
+ command -v claude-code &> /dev/null && claude_cmd="claude-code"
357
+
358
+ if [ "$init_needed" = true ]; then
359
+ info_log "🚀 Launching Claude Code with MCP-only restrictions..."
360
+ info_log "📋 Piping initialization instruction to Claude Code as first message..."
361
+ info_log ""
362
+ info_log "📋 Initial setup instruction has also been placed in:"
363
+ info_log " - .boss/init-instruction.txt"
364
+ info_log " - $ide_type/rules/startup-init.md"
365
+ info_log " - CLAUDE.md (at the very top with prominent formatting)"
366
+
367
+ debug_log "Command: printf '%s\n' '$INIT_PROMPT' | $claude_cmd --allowedTools mcp__container-use__*,mcp__github__*,mcp__knowledge-base__* ${extra_args[*]}"
368
+
369
+ # Pipe the instruction to Claude Code via stdin (don't use exec when piping)
370
+ printf '%s\n' "$INIT_PROMPT" | "$claude_cmd" --allowedTools \
371
+ mcp__container-use__*,\
372
+ mcp__github__*,\
373
+ mcp__knowledge-base__* \
374
+ "${extra_args[@]}"
375
+ else
376
+ info_log "🚀 Launching Claude Code with MCP-only restrictions..."
377
+ debug_log "Command: $claude_cmd --allowedTools mcp__container-use__*,mcp__github__*,mcp__knowledge-base__* ${extra_args[*]}"
378
+
379
+ exec "$claude_cmd" --allowedTools \
380
+ mcp__container-use__*,\
381
+ mcp__github__*,\
382
+ mcp__knowledge-base__* \
383
+ "${extra_args[@]}"
384
+ fi
385
+ # Try Cursor
386
+ elif command -v cursor &> /dev/null; then
387
+ warning_log "Cursor detected. MCP restrictions should be configured in Cursor settings."
388
+ if [ "$init_needed" = true ]; then
389
+ info_log "📋 Initial setup needed. BOSS will automatically check and complete setup when Cursor opens."
390
+ fi
391
+
392
+ info_log "🚀 Launching Cursor..."
393
+ debug_log "Command: cursor ${extra_args[*]}"
394
+
395
+ exec cursor "${extra_args[@]}"
396
+ else
397
+ error_log "Neither 'claude' nor 'cursor' command found in PATH"
398
+ echo "Please install Claude Code or Cursor and ensure it's in your PATH" >&2
399
+ exit 1
400
+ fi
401
+ }
402
+
403
+ # Main execution
404
+ main() {
405
+ info_log "🤖 Starting BOSS with MCP-only operations..."
406
+
407
+ # CRITICAL: Install dependencies before launching Claude
408
+ # This prevents git hook failures due to missing dependencies (e.g., tsc not found)
409
+ if [ -f "package.json" ]; then
410
+ if [ ! -d "node_modules" ] || [ "package.json" -nt "node_modules" ]; then
411
+ info_log "📦 Installing dependencies (required for git hooks)..."
412
+ if command -v pnpm &> /dev/null; then
413
+ pnpm install
414
+ elif command -v npm &> /dev/null; then
415
+ npm install
416
+ else
417
+ warning_log "Neither pnpm nor npm found. Dependencies may not be installed."
418
+ echo " Git hooks may fail if dependencies are missing."
419
+ fi
420
+ fi
421
+ fi
422
+
423
+ # Check if .env file exists
424
+ if [ ! -f ".env" ]; then
425
+ warning_log ".env file not found. MCP servers may not have access to secrets."
426
+ echo " Create .env file with op:// references for 1Password secrets."
427
+ fi
428
+
429
+ # Check if op (1Password CLI) is available and signed in (for MCP servers)
430
+ if command -v op &> /dev/null; then
431
+ if ! op account list &> /dev/null; then
432
+ warning_log "1Password CLI (op) is not signed in."
433
+ echo " Run: eval \$(op signin) to sign in"
434
+ echo " MCP servers configured with op:// references will fail without authentication."
435
+ fi
436
+ fi
437
+
438
+ # Detect IDE
439
+ local ide_dir
440
+ ide_dir=$(detect_ide)
441
+ debug_log "Detected IDE directory: $ide_dir"
442
+
443
+ # Check initialization status
444
+ local init_stage
445
+ init_stage=$(get_init_stage)
446
+ debug_log "Initialization stage: '$init_stage'"
447
+
448
+ local init_needed=false
449
+
450
+ if [ -n "$init_stage" ] && [ "$init_stage" != "ready" ]; then
451
+ init_needed=true
452
+ debug_log "Initialization needed (stage: $init_stage)"
453
+
454
+ # Create initialization files
455
+ if ! create_init_files "$init_stage" "$ide_dir"; then
456
+ error_log "Failed to create initialization files"
457
+ exit 1
458
+ fi
459
+ else
460
+ debug_log "Initialization complete or not needed (stage: '$init_stage')"
461
+
462
+ # Cleanup initialization files if they exist
463
+ cleanup_init_files "$ide_dir"
464
+ fi
465
+
466
+ # Launch IDE
467
+ launch_ide "$ide_dir" "$init_needed" "$@"
468
+ }
469
+
470
+ # Run main function
471
+ main "$@"
@@ -0,0 +1,98 @@
1
+ # Template Documentation: Fastify API Service
2
+
3
+ This project was bootstrapped using the **Fastify API Service** template, which provides a high-performance API server setup.
4
+
5
+ ## What Was Included
6
+
7
+ ### Core Stack
8
+ - **Fastify** - Fast and low overhead web framework
9
+ - **TypeScript** - Type-safe development
10
+ - **Vitest** - Testing framework
11
+ - **ESLint** - Code linting (ESLint 9 flat config)
12
+ - **Prettier** - Code formatting
13
+ - **tsx** - TypeScript execution for development
14
+
15
+ ### Project Structure
16
+
17
+ \`\`\`
18
+ ${config.name}/
19
+ ├── src/
20
+ │ └── index.ts # API server entry point
21
+ ├── tests/ # Test files
22
+ ├── docs/ # Documentation
23
+ ├── .boss/ # BOSS configuration
24
+ ├── .specify/ # Spec-Kit structure
25
+ ├── .container-use/ # Container-use config
26
+ ├── .claude/ # Claude Code rules
27
+ ├── .github/ # GitHub workflows
28
+ ├── .husky/ # Git hooks
29
+ ├── scripts/ # Utility scripts
30
+ ├── package.json # Dependencies and scripts
31
+ ├── tsconfig.json # TypeScript configuration
32
+ ├── vitest.config.ts # Test configuration
33
+ ├── eslint.config.js # ESLint configuration (ESLint 9)
34
+ └── docker-compose.yml # Local infrastructure
35
+ \`\`\`
36
+
37
+ ### Available Scripts
38
+
39
+ - \`pnpm dev\` - Start development server with hot reload (tsx watch)
40
+ - \`pnpm build\` - Compile TypeScript to JavaScript
41
+ - \`pnpm start\` - Start production server (runs compiled code)
42
+ - \`pnpm typecheck\` - Type check without emitting files
43
+ - \`pnpm lint\` - Lint code with ESLint
44
+ - \`pnpm test\` - Run tests in watch mode
45
+ - \`pnpm test:unit\` - Run unit tests (excludes e2e/integration)
46
+ - \`pnpm test:coverage\` - Run tests with coverage
47
+
48
+ ### Features
49
+
50
+ - **High Performance** - Fastify is one of the fastest Node.js frameworks
51
+ - **Type Safety** - Full TypeScript support
52
+ - **Plugin System** - Extensible via Fastify plugins
53
+ - **JSON Schema Validation** - Built-in request/response validation
54
+ - **Async/Await** - Modern async patterns
55
+
56
+ ### Quality Preset: ${config.quality}
57
+
58
+ This project uses the **${config.quality}** quality preset, which defines:
59
+ - Code coverage thresholds
60
+ - Quality gate requirements
61
+ - Testing requirements
62
+ - Linting and type checking rules
63
+
64
+ ### Git Hooks
65
+
66
+ The following git hooks are configured:
67
+
68
+ - **pre-commit** - Runs lint-staged (ESLint + Prettier) and tests for changed files
69
+ - **commit-msg** - Validates commit messages follow Conventional Commits v1.0.0
70
+ - **pre-push** - Runs comprehensive validation (typecheck, lint, tests, security checks)
71
+
72
+ ### Next Steps
73
+
74
+ 1. **Start Development**
75
+ \`\`\`bash
76
+ pnpm install
77
+ pnpm dev
78
+ \`\`\`
79
+
80
+ 2. **Add Routes**
81
+ - Define routes in \`src/index.ts\` or separate route files
82
+ - Use Fastify's plugin system for modular routes
83
+ - Add JSON schema validation for requests/responses
84
+
85
+ 3. **Add Middleware**
86
+ - Use Fastify hooks (onRequest, preHandler, etc.)
87
+ - Add authentication/authorization
88
+ - Add logging and error handling
89
+
90
+ 4. **Use BOSS**
91
+ - Run \`./start-boss.sh\` to start BOSS orchestration
92
+ - BOSS will help you build features following the Spec-Kit workflow
93
+
94
+ ### Documentation
95
+
96
+ - [Fastify Documentation](https://www.fastify.io/docs/latest/)
97
+ - [TypeScript Documentation](https://www.typescriptlang.org/docs)
98
+
@@ -0,0 +1,91 @@
1
+ # Template Documentation: Blank
2
+
3
+ This project was bootstrapped using the **Blank** template, which provides a minimal TypeScript setup with essential tooling.
4
+
5
+ ## What Was Included
6
+
7
+ ### Core Setup
8
+ - **TypeScript** - Type-safe JavaScript with modern ES2022 features
9
+ - **Vitest** - Fast unit testing framework with coverage support
10
+ - **ESLint** - Code linting with TypeScript support (ESLint 9 flat config)
11
+ - **Prettier** - Code formatting for consistent style
12
+ - **tsx** - TypeScript execution for development
13
+
14
+ ### Project Structure
15
+
16
+ \`\`\`
17
+ ${config.name}/
18
+ ├── src/ # Source code
19
+ │ └── index.ts # Entry point
20
+ ├── tests/ # Test files
21
+ │ └── index.test.ts # Example test
22
+ ├── docs/ # Documentation
23
+ ├── .boss/ # BOSS configuration
24
+ ├── .specify/ # Spec-Kit structure
25
+ ├── .container-use/ # Container-use config
26
+ ├── .claude/ # Claude Code rules
27
+ ├── .github/ # GitHub workflows
28
+ ├── .husky/ # Git hooks
29
+ ├── scripts/ # Utility scripts
30
+ ├── package.json # Dependencies and scripts
31
+ ├── tsconfig.json # TypeScript configuration
32
+ ├── vitest.config.ts # Test configuration
33
+ ├── eslint.config.js # ESLint configuration (ESLint 9)
34
+ ├── .prettierrc.json # Prettier configuration
35
+ └── docker-compose.yml # Local infrastructure
36
+ \`\`\`
37
+
38
+ ### Available Scripts
39
+
40
+ - \`pnpm typecheck\` - Type check without emitting files
41
+ - \`pnpm lint\` - Lint code with ESLint
42
+ - \`pnpm lint:fix\` - Auto-fix ESLint issues
43
+ - \`pnpm format\` - Format code with Prettier
44
+ - \`pnpm test\` - Run tests in watch mode
45
+ - \`pnpm test:unit\` - Run unit tests (excludes e2e/integration)
46
+ - \`pnpm test:coverage\` - Run tests with coverage
47
+ - \`pnpm test:gates\` - Run all quality gates
48
+
49
+ ### Quality Preset: ${config.quality}
50
+
51
+ This project uses the **${config.quality}** quality preset, which defines:
52
+ - Code coverage thresholds
53
+ - Quality gate requirements
54
+ - Testing requirements
55
+ - Linting and type checking rules
56
+
57
+ ### Git Hooks
58
+
59
+ The following git hooks are configured:
60
+
61
+ - **pre-commit** - Runs lint-staged (ESLint + Prettier) and tests for changed files
62
+ - **commit-msg** - Validates commit messages follow Conventional Commits v1.0.0
63
+ - **pre-push** - Runs comprehensive validation (typecheck, lint, tests, security checks)
64
+
65
+ ### Next Steps
66
+
67
+ 1. **Start Development**
68
+ \`\`\`bash
69
+ pnpm install
70
+ pnpm test
71
+ \`\`\`
72
+
73
+ 2. **Add Your Code**
74
+ - Edit \`src/index.ts\` to add your application logic
75
+ - Add tests in \`tests/\` directory
76
+ - Follow the TDD Constitution in \`.specify/memory/constitution.md\`
77
+
78
+ 3. **Use BOSS**
79
+ - Run \`./start-boss.sh\` to start BOSS orchestration
80
+ - BOSS will help you build features following the Spec-Kit workflow
81
+
82
+ ### Customization
83
+
84
+ This is a blank template - you have full control to:
85
+ - Add your preferred framework or library
86
+ - Configure additional tooling
87
+ - Set up your own project structure
88
+ - Customize BOSS worker configurations
89
+
90
+ The template provides a solid foundation with modern tooling, but doesn't impose any specific framework choices.
91
+