@mindfoldhq/trellis 0.4.0 → 0.5.0-beta.10

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 (427) hide show
  1. package/dist/cli/index.js +0 -1
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/commands/init.d.ts +10 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +382 -120
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/update.d.ts +5 -0
  8. package/dist/commands/update.d.ts.map +1 -1
  9. package/dist/commands/update.js +178 -61
  10. package/dist/commands/update.js.map +1 -1
  11. package/dist/configurators/antigravity.d.ts +3 -4
  12. package/dist/configurators/antigravity.d.ts.map +1 -1
  13. package/dist/configurators/antigravity.js +17 -10
  14. package/dist/configurators/antigravity.js.map +1 -1
  15. package/dist/configurators/claude.d.ts +5 -28
  16. package/dist/configurators/claude.d.ts.map +1 -1
  17. package/dist/configurators/claude.js +30 -51
  18. package/dist/configurators/claude.js.map +1 -1
  19. package/dist/configurators/codebuddy.d.ts +6 -7
  20. package/dist/configurators/codebuddy.d.ts.map +1 -1
  21. package/dist/configurators/codebuddy.js +23 -51
  22. package/dist/configurators/codebuddy.js.map +1 -1
  23. package/dist/configurators/codex.d.ts +3 -6
  24. package/dist/configurators/codex.d.ts.map +1 -1
  25. package/dist/configurators/codex.js +29 -12
  26. package/dist/configurators/codex.js.map +1 -1
  27. package/dist/configurators/copilot.d.ts +6 -5
  28. package/dist/configurators/copilot.d.ts.map +1 -1
  29. package/dist/configurators/copilot.js +42 -13
  30. package/dist/configurators/copilot.js.map +1 -1
  31. package/dist/configurators/cursor.d.ts +6 -1
  32. package/dist/configurators/cursor.d.ts.map +1 -1
  33. package/dist/configurators/cursor.js +22 -45
  34. package/dist/configurators/cursor.js.map +1 -1
  35. package/dist/configurators/droid.d.ts +6 -1
  36. package/dist/configurators/droid.d.ts.map +1 -1
  37. package/dist/configurators/droid.js +23 -41
  38. package/dist/configurators/droid.js.map +1 -1
  39. package/dist/configurators/gemini.d.ts +8 -4
  40. package/dist/configurators/gemini.d.ts.map +1 -1
  41. package/dist/configurators/gemini.js +28 -47
  42. package/dist/configurators/gemini.js.map +1 -1
  43. package/dist/configurators/index.d.ts +1 -1
  44. package/dist/configurators/index.d.ts.map +1 -1
  45. package/dist/configurators/index.js +146 -100
  46. package/dist/configurators/index.js.map +1 -1
  47. package/dist/configurators/kilo.d.ts +3 -4
  48. package/dist/configurators/kilo.d.ts.map +1 -1
  49. package/dist/configurators/kilo.js +19 -46
  50. package/dist/configurators/kilo.js.map +1 -1
  51. package/dist/configurators/kiro.d.ts +4 -4
  52. package/dist/configurators/kiro.d.ts.map +1 -1
  53. package/dist/configurators/kiro.js +18 -14
  54. package/dist/configurators/kiro.js.map +1 -1
  55. package/dist/configurators/opencode.d.ts +7 -25
  56. package/dist/configurators/opencode.d.ts.map +1 -1
  57. package/dist/configurators/opencode.js +57 -56
  58. package/dist/configurators/opencode.js.map +1 -1
  59. package/dist/configurators/qoder.d.ts +6 -3
  60. package/dist/configurators/qoder.d.ts.map +1 -1
  61. package/dist/configurators/qoder.js +27 -46
  62. package/dist/configurators/qoder.js.map +1 -1
  63. package/dist/configurators/shared.d.ts +68 -3
  64. package/dist/configurators/shared.d.ts.map +1 -1
  65. package/dist/configurators/shared.js +274 -3
  66. package/dist/configurators/shared.js.map +1 -1
  67. package/dist/configurators/windsurf.d.ts +3 -4
  68. package/dist/configurators/windsurf.d.ts.map +1 -1
  69. package/dist/configurators/windsurf.js +17 -10
  70. package/dist/configurators/windsurf.js.map +1 -1
  71. package/dist/configurators/workflow.d.ts +0 -3
  72. package/dist/configurators/workflow.d.ts.map +1 -1
  73. package/dist/configurators/workflow.js +1 -7
  74. package/dist/configurators/workflow.js.map +1 -1
  75. package/dist/migrations/manifests/0.4.0.json +1 -1
  76. package/dist/migrations/manifests/0.5.0-beta.0.json +1646 -0
  77. package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
  78. package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
  79. package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
  80. package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
  81. package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
  82. package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
  83. package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
  84. package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
  85. package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
  86. package/dist/templates/claude/agents/{check.md → trellis-check.md} +3 -31
  87. package/dist/templates/claude/agents/{implement.md → trellis-implement.md} +1 -2
  88. package/dist/templates/claude/agents/trellis-research.md +137 -0
  89. package/dist/templates/claude/index.d.ts +5 -37
  90. package/dist/templates/claude/index.d.ts.map +1 -1
  91. package/dist/templates/claude/index.js +3 -42
  92. package/dist/templates/claude/index.js.map +1 -1
  93. package/dist/templates/claude/settings.json +6 -4
  94. package/dist/templates/{iflow/agents/check.md → codebuddy/agents/trellis-check.md} +3 -31
  95. package/dist/templates/{iflow/agents/implement.md → codebuddy/agents/trellis-implement.md} +1 -2
  96. package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
  97. package/dist/templates/codebuddy/index.d.ts +6 -16
  98. package/dist/templates/codebuddy/index.d.ts.map +1 -1
  99. package/dist/templates/codebuddy/index.js +6 -36
  100. package/dist/templates/codebuddy/index.js.map +1 -1
  101. package/dist/templates/codebuddy/settings.json +59 -0
  102. package/dist/templates/codex/agents/trellis-check.toml +38 -0
  103. package/dist/templates/codex/agents/{implement.toml → trellis-implement.toml} +1 -1
  104. package/dist/templates/codex/agents/trellis-research.toml +60 -0
  105. package/dist/templates/codex/config.toml +10 -0
  106. package/dist/templates/codex/hooks/session-start.py +65 -29
  107. package/dist/templates/codex/hooks.json +11 -0
  108. package/dist/templates/codex/index.d.ts +0 -1
  109. package/dist/templates/codex/index.d.ts.map +1 -1
  110. package/dist/templates/codex/index.js +1 -8
  111. package/dist/templates/codex/index.js.map +1 -1
  112. package/dist/templates/codex/skills/start/SKILL.md +1 -1
  113. package/dist/templates/common/commands/continue.md +51 -0
  114. package/dist/templates/common/commands/finish-work.md +32 -0
  115. package/dist/templates/common/commands/start.md +56 -0
  116. package/dist/templates/common/index.d.ts +28 -0
  117. package/dist/templates/common/index.d.ts.map +1 -0
  118. package/dist/templates/common/index.js +55 -0
  119. package/dist/templates/common/index.js.map +1 -0
  120. package/dist/templates/{droid/commands/trellis → common/skills}/brainstorm.md +51 -12
  121. package/dist/templates/{iflow/commands/trellis → common/skills}/break-loop.md +4 -4
  122. package/dist/templates/common/skills/check.md +87 -0
  123. package/dist/templates/{codebuddy/commands/trellis → common/skills}/update-spec.md +18 -21
  124. package/dist/templates/copilot/hooks/session-start.py +65 -29
  125. package/dist/templates/copilot/hooks.json +8 -0
  126. package/dist/templates/copilot/prompts/start.prompt.md +13 -16
  127. package/dist/templates/cursor/agents/trellis-check.md +94 -0
  128. package/dist/templates/cursor/agents/trellis-implement.md +94 -0
  129. package/dist/templates/cursor/agents/trellis-research.md +137 -0
  130. package/dist/templates/cursor/hooks.json +24 -0
  131. package/dist/templates/cursor/index.d.ts +6 -17
  132. package/dist/templates/cursor/index.d.ts.map +1 -1
  133. package/dist/templates/cursor/index.js +6 -37
  134. package/dist/templates/cursor/index.js.map +1 -1
  135. package/dist/templates/droid/droids/trellis-check.md +94 -0
  136. package/dist/templates/droid/droids/trellis-implement.md +94 -0
  137. package/dist/templates/droid/droids/trellis-research.md +137 -0
  138. package/dist/templates/droid/index.d.ts +7 -19
  139. package/dist/templates/droid/index.d.ts.map +1 -1
  140. package/dist/templates/droid/index.js +7 -39
  141. package/dist/templates/droid/index.js.map +1 -1
  142. package/dist/templates/droid/settings.json +59 -0
  143. package/dist/templates/extract.d.ts +7 -193
  144. package/dist/templates/extract.d.ts.map +1 -1
  145. package/dist/templates/extract.js +7 -310
  146. package/dist/templates/extract.js.map +1 -1
  147. package/dist/templates/gemini/agents/trellis-check.md +94 -0
  148. package/dist/templates/gemini/agents/trellis-implement.md +94 -0
  149. package/dist/templates/gemini/agents/trellis-research.md +137 -0
  150. package/dist/templates/gemini/index.d.ts +6 -14
  151. package/dist/templates/gemini/index.d.ts.map +1 -1
  152. package/dist/templates/gemini/index.js +6 -37
  153. package/dist/templates/gemini/index.js.map +1 -1
  154. package/dist/templates/gemini/settings.json +28 -0
  155. package/dist/templates/kiro/agents/trellis-check.json +13 -0
  156. package/dist/templates/kiro/agents/trellis-implement.json +13 -0
  157. package/dist/templates/kiro/agents/trellis-research.json +21 -0
  158. package/dist/templates/kiro/index.d.ts +11 -11
  159. package/dist/templates/kiro/index.d.ts.map +1 -1
  160. package/dist/templates/kiro/index.js +11 -33
  161. package/dist/templates/kiro/index.js.map +1 -1
  162. package/dist/templates/opencode/agents/{check.md → trellis-check.md} +3 -30
  163. package/dist/templates/opencode/agents/{implement.md → trellis-implement.md} +1 -1
  164. package/dist/templates/opencode/agents/{research.md → trellis-research.md} +1 -2
  165. package/dist/templates/opencode/plugins/inject-subagent-context.js +18 -190
  166. package/dist/templates/opencode/plugins/inject-workflow-state.js +172 -0
  167. package/dist/templates/opencode/plugins/session-start.js +76 -39
  168. package/dist/templates/qoder/agents/trellis-check.md +94 -0
  169. package/dist/templates/qoder/agents/trellis-implement.md +94 -0
  170. package/dist/templates/qoder/agents/trellis-research.md +137 -0
  171. package/dist/templates/qoder/index.d.ts +7 -10
  172. package/dist/templates/qoder/index.d.ts.map +1 -1
  173. package/dist/templates/qoder/index.js +7 -32
  174. package/dist/templates/qoder/index.js.map +1 -1
  175. package/dist/templates/qoder/settings.json +47 -0
  176. package/dist/templates/shared-hooks/index.d.ts +19 -0
  177. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  178. package/dist/templates/shared-hooks/index.js +30 -0
  179. package/dist/templates/shared-hooks/index.js.map +1 -0
  180. package/dist/templates/{iflow/hooks → shared-hooks}/inject-subagent-context.py +77 -266
  181. package/dist/templates/shared-hooks/inject-workflow-state.py +244 -0
  182. package/dist/templates/{claude/hooks → shared-hooks}/session-start.py +172 -55
  183. package/dist/templates/template-utils.d.ts +26 -0
  184. package/dist/templates/template-utils.d.ts.map +1 -0
  185. package/dist/templates/template-utils.js +60 -0
  186. package/dist/templates/template-utils.js.map +1 -0
  187. package/dist/templates/trellis/config.yaml +6 -0
  188. package/dist/templates/trellis/index.d.ts +1 -15
  189. package/dist/templates/trellis/index.d.ts.map +1 -1
  190. package/dist/templates/trellis/index.js +2 -29
  191. package/dist/templates/trellis/index.js.map +1 -1
  192. package/dist/templates/trellis/scripts/common/cli_adapter.py +31 -8
  193. package/dist/templates/trellis/scripts/common/config.py +126 -1
  194. package/dist/templates/trellis/scripts/common/git_context.py +25 -2
  195. package/dist/templates/trellis/scripts/common/task_context.py +23 -28
  196. package/dist/templates/trellis/scripts/common/task_store.py +0 -12
  197. package/dist/templates/trellis/scripts/common/types.py +0 -2
  198. package/dist/templates/trellis/scripts/common/workflow_phase.py +176 -0
  199. package/dist/templates/trellis/scripts/task.py +13 -35
  200. package/dist/templates/trellis/workflow.md +283 -298
  201. package/dist/types/ai-tools.d.ts +30 -3
  202. package/dist/types/ai-tools.d.ts.map +1 -1
  203. package/dist/types/ai-tools.js +119 -15
  204. package/dist/types/ai-tools.js.map +1 -1
  205. package/dist/types/migration.d.ts +8 -1
  206. package/dist/types/migration.d.ts.map +1 -1
  207. package/dist/utils/project-detector.d.ts +2 -0
  208. package/dist/utils/project-detector.d.ts.map +1 -1
  209. package/dist/utils/project-detector.js +120 -11
  210. package/dist/utils/project-detector.js.map +1 -1
  211. package/dist/utils/task-json.d.ts +46 -0
  212. package/dist/utils/task-json.d.ts.map +1 -0
  213. package/dist/utils/task-json.js +49 -0
  214. package/dist/utils/task-json.js.map +1 -0
  215. package/package.json +3 -2
  216. package/dist/configurators/iflow.d.ts +0 -33
  217. package/dist/configurators/iflow.d.ts.map +0 -1
  218. package/dist/configurators/iflow.js +0 -99
  219. package/dist/configurators/iflow.js.map +0 -1
  220. package/dist/templates/antigravity/index.d.ts +0 -12
  221. package/dist/templates/antigravity/index.d.ts.map +0 -1
  222. package/dist/templates/antigravity/index.js +0 -29
  223. package/dist/templates/antigravity/index.js.map +0 -1
  224. package/dist/templates/claude/agents/debug.md +0 -106
  225. package/dist/templates/claude/agents/dispatch.md +0 -213
  226. package/dist/templates/claude/agents/plan.md +0 -396
  227. package/dist/templates/claude/agents/research.md +0 -120
  228. package/dist/templates/claude/commands/trellis/brainstorm.md +0 -487
  229. package/dist/templates/claude/commands/trellis/break-loop.md +0 -125
  230. package/dist/templates/claude/commands/trellis/check-cross-layer.md +0 -153
  231. package/dist/templates/claude/commands/trellis/check.md +0 -25
  232. package/dist/templates/claude/commands/trellis/create-command.md +0 -154
  233. package/dist/templates/claude/commands/trellis/finish-work.md +0 -153
  234. package/dist/templates/claude/commands/trellis/integrate-skill.md +0 -219
  235. package/dist/templates/claude/commands/trellis/onboard.md +0 -358
  236. package/dist/templates/claude/commands/trellis/parallel.md +0 -192
  237. package/dist/templates/claude/commands/trellis/record-session.md +0 -62
  238. package/dist/templates/claude/commands/trellis/start.md +0 -393
  239. package/dist/templates/claude/commands/trellis/update-spec.md +0 -354
  240. package/dist/templates/claude/hooks/inject-subagent-context.py +0 -803
  241. package/dist/templates/claude/hooks/ralph-loop.py +0 -396
  242. package/dist/templates/codebuddy/commands/trellis/before-dev.md +0 -29
  243. package/dist/templates/codebuddy/commands/trellis/brainstorm.md +0 -487
  244. package/dist/templates/codebuddy/commands/trellis/break-loop.md +0 -107
  245. package/dist/templates/codebuddy/commands/trellis/check-cross-layer.md +0 -153
  246. package/dist/templates/codebuddy/commands/trellis/check.md +0 -25
  247. package/dist/templates/codebuddy/commands/trellis/create-command.md +0 -154
  248. package/dist/templates/codebuddy/commands/trellis/finish-work.md +0 -143
  249. package/dist/templates/codebuddy/commands/trellis/integrate-skill.md +0 -219
  250. package/dist/templates/codebuddy/commands/trellis/onboard.md +0 -358
  251. package/dist/templates/codebuddy/commands/trellis/record-session.md +0 -61
  252. package/dist/templates/codebuddy/commands/trellis/start.md +0 -373
  253. package/dist/templates/codex/agents/check.toml +0 -23
  254. package/dist/templates/codex/agents/research.toml +0 -26
  255. package/dist/templates/codex/codex-skills/parallel/SKILL.md +0 -194
  256. package/dist/templates/cursor/commands/trellis-before-dev.md +0 -29
  257. package/dist/templates/cursor/commands/trellis-brainstorm.md +0 -487
  258. package/dist/templates/cursor/commands/trellis-break-loop.md +0 -107
  259. package/dist/templates/cursor/commands/trellis-check-cross-layer.md +0 -153
  260. package/dist/templates/cursor/commands/trellis-check.md +0 -25
  261. package/dist/templates/cursor/commands/trellis-create-command.md +0 -154
  262. package/dist/templates/cursor/commands/trellis-finish-work.md +0 -143
  263. package/dist/templates/cursor/commands/trellis-integrate-skill.md +0 -219
  264. package/dist/templates/cursor/commands/trellis-onboard.md +0 -358
  265. package/dist/templates/cursor/commands/trellis-record-session.md +0 -62
  266. package/dist/templates/cursor/commands/trellis-start.md +0 -373
  267. package/dist/templates/cursor/commands/trellis-update-spec.md +0 -354
  268. package/dist/templates/droid/commands/trellis/before-dev.md +0 -33
  269. package/dist/templates/droid/commands/trellis/break-loop.md +0 -111
  270. package/dist/templates/droid/commands/trellis/check-cross-layer.md +0 -157
  271. package/dist/templates/droid/commands/trellis/check.md +0 -29
  272. package/dist/templates/droid/commands/trellis/create-command.md +0 -158
  273. package/dist/templates/droid/commands/trellis/finish-work.md +0 -147
  274. package/dist/templates/droid/commands/trellis/integrate-skill.md +0 -223
  275. package/dist/templates/droid/commands/trellis/onboard.md +0 -362
  276. package/dist/templates/droid/commands/trellis/record-session.md +0 -66
  277. package/dist/templates/droid/commands/trellis/start.md +0 -377
  278. package/dist/templates/droid/commands/trellis/update-spec.md +0 -358
  279. package/dist/templates/gemini/commands/trellis/before-dev.toml +0 -33
  280. package/dist/templates/gemini/commands/trellis/brainstorm.toml +0 -435
  281. package/dist/templates/gemini/commands/trellis/break-loop.toml +0 -129
  282. package/dist/templates/gemini/commands/trellis/check-cross-layer.toml +0 -147
  283. package/dist/templates/gemini/commands/trellis/check.toml +0 -29
  284. package/dist/templates/gemini/commands/trellis/create-command.toml +0 -119
  285. package/dist/templates/gemini/commands/trellis/finish-work.toml +0 -133
  286. package/dist/templates/gemini/commands/trellis/integrate-skill.toml +0 -104
  287. package/dist/templates/gemini/commands/trellis/onboard.toml +0 -111
  288. package/dist/templates/gemini/commands/trellis/record-session.toml +0 -66
  289. package/dist/templates/gemini/commands/trellis/start.toml +0 -354
  290. package/dist/templates/gemini/commands/trellis/update-spec.toml +0 -132
  291. package/dist/templates/iflow/agents/debug.md +0 -106
  292. package/dist/templates/iflow/agents/dispatch.md +0 -213
  293. package/dist/templates/iflow/agents/plan.md +0 -396
  294. package/dist/templates/iflow/agents/research.md +0 -120
  295. package/dist/templates/iflow/commands/trellis/before-dev.md +0 -29
  296. package/dist/templates/iflow/commands/trellis/brainstorm.md +0 -487
  297. package/dist/templates/iflow/commands/trellis/check-cross-layer.md +0 -153
  298. package/dist/templates/iflow/commands/trellis/check.md +0 -25
  299. package/dist/templates/iflow/commands/trellis/create-command.md +0 -152
  300. package/dist/templates/iflow/commands/trellis/finish-work.md +0 -153
  301. package/dist/templates/iflow/commands/trellis/integrate-skill.md +0 -219
  302. package/dist/templates/iflow/commands/trellis/onboard.md +0 -358
  303. package/dist/templates/iflow/commands/trellis/parallel.md +0 -192
  304. package/dist/templates/iflow/commands/trellis/record-session.md +0 -62
  305. package/dist/templates/iflow/commands/trellis/start.md +0 -393
  306. package/dist/templates/iflow/commands/trellis/update-spec.md +0 -354
  307. package/dist/templates/iflow/hooks/ralph-loop.py +0 -395
  308. package/dist/templates/iflow/hooks/session-start.py +0 -403
  309. package/dist/templates/iflow/index.d.ts +0 -54
  310. package/dist/templates/iflow/index.d.ts.map +0 -1
  311. package/dist/templates/iflow/index.js +0 -85
  312. package/dist/templates/iflow/index.js.map +0 -1
  313. package/dist/templates/iflow/settings.json +0 -60
  314. package/dist/templates/kilo/index.d.ts +0 -16
  315. package/dist/templates/kilo/index.d.ts.map +0 -1
  316. package/dist/templates/kilo/index.js +0 -39
  317. package/dist/templates/kilo/index.js.map +0 -1
  318. package/dist/templates/kilo/workflows/before-dev.md +0 -29
  319. package/dist/templates/kilo/workflows/brainstorm.md +0 -487
  320. package/dist/templates/kilo/workflows/break-loop.md +0 -125
  321. package/dist/templates/kilo/workflows/check-cross-layer.md +0 -153
  322. package/dist/templates/kilo/workflows/check.md +0 -25
  323. package/dist/templates/kilo/workflows/create-command.md +0 -152
  324. package/dist/templates/kilo/workflows/finish-work.md +0 -129
  325. package/dist/templates/kilo/workflows/integrate-skill.md +0 -219
  326. package/dist/templates/kilo/workflows/onboard.md +0 -358
  327. package/dist/templates/kilo/workflows/parallel.md +0 -193
  328. package/dist/templates/kilo/workflows/record-session.md +0 -62
  329. package/dist/templates/kilo/workflows/start.md +0 -387
  330. package/dist/templates/kilo/workflows/update-spec.md +0 -285
  331. package/dist/templates/kiro/skills/before-dev/SKILL.md +0 -34
  332. package/dist/templates/kiro/skills/brainstorm/SKILL.md +0 -492
  333. package/dist/templates/kiro/skills/break-loop/SKILL.md +0 -130
  334. package/dist/templates/kiro/skills/check/SKILL.md +0 -30
  335. package/dist/templates/kiro/skills/check-cross-layer/SKILL.md +0 -158
  336. package/dist/templates/kiro/skills/create-command/SKILL.md +0 -101
  337. package/dist/templates/kiro/skills/finish-work/SKILL.md +0 -148
  338. package/dist/templates/kiro/skills/integrate-skill/SKILL.md +0 -221
  339. package/dist/templates/kiro/skills/onboard/SKILL.md +0 -363
  340. package/dist/templates/kiro/skills/record-session/SKILL.md +0 -67
  341. package/dist/templates/kiro/skills/start/SKILL.md +0 -351
  342. package/dist/templates/kiro/skills/update-spec/SKILL.md +0 -335
  343. package/dist/templates/markdown/spec/backend/directory-structure.md +0 -292
  344. package/dist/templates/markdown/spec/backend/index.md +0 -40
  345. package/dist/templates/markdown/spec/backend/script-conventions.md +0 -742
  346. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md +0 -118
  347. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md +0 -394
  348. package/dist/templates/opencode/agents/debug.md +0 -129
  349. package/dist/templates/opencode/agents/dispatch.md +0 -223
  350. package/dist/templates/opencode/agents/trellis-plan.md +0 -427
  351. package/dist/templates/opencode/commands/trellis/before-dev.md +0 -29
  352. package/dist/templates/opencode/commands/trellis/brainstorm.md +0 -487
  353. package/dist/templates/opencode/commands/trellis/break-loop.md +0 -125
  354. package/dist/templates/opencode/commands/trellis/check-cross-layer.md +0 -153
  355. package/dist/templates/opencode/commands/trellis/check.md +0 -25
  356. package/dist/templates/opencode/commands/trellis/create-command.md +0 -154
  357. package/dist/templates/opencode/commands/trellis/finish-work.md +0 -144
  358. package/dist/templates/opencode/commands/trellis/integrate-skill.md +0 -219
  359. package/dist/templates/opencode/commands/trellis/migrate-specs.md +0 -0
  360. package/dist/templates/opencode/commands/trellis/onboard.md +0 -358
  361. package/dist/templates/opencode/commands/trellis/parallel.md +0 -193
  362. package/dist/templates/opencode/commands/trellis/record-session.md +0 -62
  363. package/dist/templates/opencode/commands/trellis/start.md +0 -351
  364. package/dist/templates/opencode/commands/trellis/update-spec.md +0 -354
  365. package/dist/templates/qoder/skills/before-dev/SKILL.md +0 -34
  366. package/dist/templates/qoder/skills/brainstorm/SKILL.md +0 -492
  367. package/dist/templates/qoder/skills/break-loop/SKILL.md +0 -130
  368. package/dist/templates/qoder/skills/check/SKILL.md +0 -30
  369. package/dist/templates/qoder/skills/check-cross-layer/SKILL.md +0 -158
  370. package/dist/templates/qoder/skills/create-command/SKILL.md +0 -101
  371. package/dist/templates/qoder/skills/finish-work/SKILL.md +0 -134
  372. package/dist/templates/qoder/skills/integrate-skill/SKILL.md +0 -221
  373. package/dist/templates/qoder/skills/onboard/SKILL.md +0 -363
  374. package/dist/templates/qoder/skills/record-session/SKILL.md +0 -67
  375. package/dist/templates/qoder/skills/start/SKILL.md +0 -388
  376. package/dist/templates/qoder/skills/update-spec/SKILL.md +0 -290
  377. package/dist/templates/trellis/scripts/common/phase.py +0 -254
  378. package/dist/templates/trellis/scripts/common/registry.py +0 -335
  379. package/dist/templates/trellis/scripts/common/worktree.py +0 -305
  380. package/dist/templates/trellis/scripts/create_bootstrap.py +0 -298
  381. package/dist/templates/trellis/scripts/multi_agent/__init__.py +0 -5
  382. package/dist/templates/trellis/scripts/multi_agent/_bootstrap.py +0 -17
  383. package/dist/templates/trellis/scripts/multi_agent/cleanup.py +0 -398
  384. package/dist/templates/trellis/scripts/multi_agent/create_pr.py +0 -620
  385. package/dist/templates/trellis/scripts/multi_agent/plan.py +0 -213
  386. package/dist/templates/trellis/scripts/multi_agent/start.py +0 -539
  387. package/dist/templates/trellis/scripts/multi_agent/status.py +0 -76
  388. package/dist/templates/trellis/scripts/multi_agent/status_display.py +0 -542
  389. package/dist/templates/trellis/scripts/multi_agent/status_monitor.py +0 -225
  390. package/dist/templates/trellis/scripts-shell-archive/add-session.sh +0 -384
  391. package/dist/templates/trellis/scripts-shell-archive/common/developer.sh +0 -129
  392. package/dist/templates/trellis/scripts-shell-archive/common/git-context.sh +0 -263
  393. package/dist/templates/trellis/scripts-shell-archive/common/paths.sh +0 -208
  394. package/dist/templates/trellis/scripts-shell-archive/common/phase.sh +0 -150
  395. package/dist/templates/trellis/scripts-shell-archive/common/registry.sh +0 -247
  396. package/dist/templates/trellis/scripts-shell-archive/common/task-queue.sh +0 -142
  397. package/dist/templates/trellis/scripts-shell-archive/common/task-utils.sh +0 -151
  398. package/dist/templates/trellis/scripts-shell-archive/common/worktree.sh +0 -128
  399. package/dist/templates/trellis/scripts-shell-archive/create-bootstrap.sh +0 -299
  400. package/dist/templates/trellis/scripts-shell-archive/get-context.sh +0 -7
  401. package/dist/templates/trellis/scripts-shell-archive/get-developer.sh +0 -15
  402. package/dist/templates/trellis/scripts-shell-archive/init-developer.sh +0 -34
  403. package/dist/templates/trellis/scripts-shell-archive/multi-agent/cleanup.sh +0 -396
  404. package/dist/templates/trellis/scripts-shell-archive/multi-agent/create-pr.sh +0 -241
  405. package/dist/templates/trellis/scripts-shell-archive/multi-agent/plan.sh +0 -207
  406. package/dist/templates/trellis/scripts-shell-archive/multi-agent/start.sh +0 -317
  407. package/dist/templates/trellis/scripts-shell-archive/multi-agent/status.sh +0 -828
  408. package/dist/templates/trellis/scripts-shell-archive/task.sh +0 -1204
  409. package/dist/templates/trellis/worktree.yaml +0 -47
  410. package/dist/templates/windsurf/index.d.ts +0 -21
  411. package/dist/templates/windsurf/index.d.ts.map +0 -1
  412. package/dist/templates/windsurf/index.js +0 -44
  413. package/dist/templates/windsurf/index.js.map +0 -1
  414. package/dist/templates/windsurf/workflows/trellis-before-dev.md +0 -31
  415. package/dist/templates/windsurf/workflows/trellis-brainstorm.md +0 -491
  416. package/dist/templates/windsurf/workflows/trellis-break-loop.md +0 -111
  417. package/dist/templates/windsurf/workflows/trellis-check-cross-layer.md +0 -157
  418. package/dist/templates/windsurf/workflows/trellis-check.md +0 -27
  419. package/dist/templates/windsurf/workflows/trellis-create-command.md +0 -154
  420. package/dist/templates/windsurf/workflows/trellis-finish-work.md +0 -147
  421. package/dist/templates/windsurf/workflows/trellis-integrate-skill.md +0 -220
  422. package/dist/templates/windsurf/workflows/trellis-onboard.md +0 -362
  423. package/dist/templates/windsurf/workflows/trellis-record-session.md +0 -66
  424. package/dist/templates/windsurf/workflows/trellis-start.md +0 -373
  425. package/dist/templates/windsurf/workflows/trellis-update-spec.md +0 -358
  426. /package/dist/templates/{claude/commands/trellis → common/skills}/before-dev.md +0 -0
  427. /package/dist/templates/{claude/hooks → shared-hooks}/statusline.py +0 -0
@@ -1,305 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Worktree utilities for Multi-Agent Pipeline.
4
-
5
- Provides:
6
- get_worktree_config - Get worktree.yaml path
7
- get_worktree_base_dir - Get worktree storage directory
8
- get_worktree_copy_files - Get files to copy list
9
- get_worktree_post_create_hooks - Get post-create hooks
10
- get_agents_dir - Get agents registry directory
11
- """
12
-
13
- from __future__ import annotations
14
-
15
- from pathlib import Path
16
-
17
- from .paths import (
18
- DIR_WORKFLOW,
19
- get_repo_root,
20
- get_workspace_dir,
21
- )
22
-
23
-
24
- # =============================================================================
25
- # YAML Simple Parser (no dependencies)
26
- # =============================================================================
27
-
28
-
29
- def _unquote(s: str) -> str:
30
- """Remove exactly one layer of matching surrounding quotes.
31
-
32
- Unlike str.strip('"'), this only removes the outermost pair,
33
- preserving any nested quotes inside the value.
34
-
35
- Examples:
36
- _unquote('"hello"') -> 'hello'
37
- _unquote("'hello'") -> 'hello'
38
- _unquote('"echo \\'hi\\'"') -> "echo 'hi'"
39
- _unquote('hello') -> 'hello'
40
- _unquote('"hello\\'') -> '"hello\\'' (mismatched, unchanged)
41
- """
42
- if len(s) >= 2 and s[0] == s[-1] and s[0] in ('"', "'"):
43
- return s[1:-1]
44
- return s
45
-
46
-
47
- def parse_simple_yaml(content: str) -> dict:
48
- """Parse simple YAML with nested dict support (no dependencies).
49
-
50
- Supports:
51
- - key: value (string)
52
- - key: (followed by list items)
53
- - item1
54
- - item2
55
- - key: (followed by nested dict)
56
- nested_key: value
57
- nested_key2:
58
- - item
59
-
60
- Uses indentation to detect nesting (2+ spaces deeper = child).
61
-
62
- Args:
63
- content: YAML content string.
64
-
65
- Returns:
66
- Parsed dict (values can be str, list[str], or dict).
67
- """
68
- lines = content.splitlines()
69
- result: dict = {}
70
- _parse_yaml_block(lines, 0, 0, result)
71
- return result
72
-
73
-
74
- def _parse_yaml_block(
75
- lines: list[str], start: int, min_indent: int, target: dict
76
- ) -> int:
77
- """Parse a YAML block into target dict, returning next line index."""
78
- i = start
79
- current_list: list | None = None
80
-
81
- while i < len(lines):
82
- line = lines[i]
83
- stripped = line.strip()
84
-
85
- # Skip empty lines and comments
86
- if not stripped or stripped.startswith("#"):
87
- i += 1
88
- continue
89
-
90
- # Calculate indentation
91
- indent = len(line) - len(line.lstrip())
92
-
93
- # If dedented past our block, we're done
94
- if indent < min_indent:
95
- break
96
-
97
- if stripped.startswith("- "):
98
- if current_list is not None:
99
- current_list.append(_unquote(stripped[2:].strip()))
100
- i += 1
101
- elif ":" in stripped:
102
- key, _, value = stripped.partition(":")
103
- key = key.strip()
104
- value = _unquote(value.strip())
105
- current_list = None
106
-
107
- if value:
108
- # key: value
109
- target[key] = value
110
- i += 1
111
- else:
112
- # key: (no value) — peek ahead to determine list vs nested dict
113
- next_i, next_line = _next_content_line(lines, i + 1)
114
- if next_i >= len(lines):
115
- target[key] = {}
116
- i = next_i
117
- elif next_line.strip().startswith("- "):
118
- # It's a list
119
- current_list = []
120
- target[key] = current_list
121
- i += 1
122
- else:
123
- next_indent = len(next_line) - len(next_line.lstrip())
124
- if next_indent > indent:
125
- # It's a nested dict
126
- nested: dict = {}
127
- target[key] = nested
128
- i = _parse_yaml_block(lines, i + 1, next_indent, nested)
129
- else:
130
- # Empty value, same or less indent follows
131
- target[key] = {}
132
- i += 1
133
- else:
134
- i += 1
135
-
136
- return i
137
-
138
-
139
- def _next_content_line(lines: list[str], start: int) -> tuple[int, str]:
140
- """Find the next non-empty, non-comment line."""
141
- i = start
142
- while i < len(lines):
143
- stripped = lines[i].strip()
144
- if stripped and not stripped.startswith("#"):
145
- return i, lines[i]
146
- i += 1
147
- return i, ""
148
-
149
-
150
- def _yaml_get_value(config_file: Path, key: str) -> str | None:
151
- """Read simple value from worktree.yaml.
152
-
153
- Args:
154
- config_file: Path to config file.
155
- key: Key to read.
156
-
157
- Returns:
158
- Value string or None.
159
- """
160
- try:
161
- content = config_file.read_text(encoding="utf-8")
162
- data = parse_simple_yaml(content)
163
- value = data.get(key)
164
- if isinstance(value, str):
165
- return value
166
- except (OSError, IOError):
167
- pass
168
- return None
169
-
170
-
171
- def _yaml_get_list(config_file: Path, section: str) -> list[str]:
172
- """Read list from worktree.yaml.
173
-
174
- Args:
175
- config_file: Path to config file.
176
- section: Section name.
177
-
178
- Returns:
179
- List of items.
180
- """
181
- try:
182
- content = config_file.read_text(encoding="utf-8")
183
- data = parse_simple_yaml(content)
184
- value = data.get(section)
185
- if isinstance(value, list):
186
- return [str(item) for item in value]
187
- except (OSError, IOError):
188
- pass
189
- return []
190
-
191
-
192
- # =============================================================================
193
- # Worktree Configuration
194
- # =============================================================================
195
-
196
- # Worktree config file relative path (relative to repo root)
197
- WORKTREE_CONFIG_PATH = f"{DIR_WORKFLOW}/worktree.yaml"
198
-
199
-
200
- def get_worktree_config(repo_root: Path | None = None) -> Path:
201
- """Get worktree.yaml config file path.
202
-
203
- Args:
204
- repo_root: Repository root path. Defaults to auto-detected.
205
-
206
- Returns:
207
- Absolute path to config file.
208
- """
209
- if repo_root is None:
210
- repo_root = get_repo_root()
211
- return repo_root / WORKTREE_CONFIG_PATH
212
-
213
-
214
- def get_worktree_base_dir(repo_root: Path | None = None) -> Path:
215
- """Get worktree base directory.
216
-
217
- Args:
218
- repo_root: Repository root path. Defaults to auto-detected.
219
-
220
- Returns:
221
- Absolute path to worktree base directory.
222
- """
223
- if repo_root is None:
224
- repo_root = get_repo_root()
225
-
226
- config = get_worktree_config(repo_root)
227
- worktree_dir = _yaml_get_value(config, "worktree_dir")
228
-
229
- # Default value
230
- if not worktree_dir:
231
- worktree_dir = "../worktrees"
232
-
233
- # Handle relative path
234
- if worktree_dir.startswith("../") or worktree_dir.startswith("./"):
235
- # Relative to repo_root
236
- return repo_root / worktree_dir
237
- else:
238
- # Absolute path
239
- return Path(worktree_dir)
240
-
241
-
242
- def get_worktree_copy_files(repo_root: Path | None = None) -> list[str]:
243
- """Get files to copy list.
244
-
245
- Args:
246
- repo_root: Repository root path. Defaults to auto-detected.
247
-
248
- Returns:
249
- List of file paths to copy.
250
- """
251
- if repo_root is None:
252
- repo_root = get_repo_root()
253
- config = get_worktree_config(repo_root)
254
- return _yaml_get_list(config, "copy")
255
-
256
-
257
- def get_worktree_post_create_hooks(repo_root: Path | None = None) -> list[str]:
258
- """Get post_create hooks.
259
-
260
- Args:
261
- repo_root: Repository root path. Defaults to auto-detected.
262
-
263
- Returns:
264
- List of commands to run.
265
- """
266
- if repo_root is None:
267
- repo_root = get_repo_root()
268
- config = get_worktree_config(repo_root)
269
- return _yaml_get_list(config, "post_create")
270
-
271
-
272
- # =============================================================================
273
- # Agents Registry
274
- # =============================================================================
275
-
276
- def get_agents_dir(repo_root: Path | None = None) -> Path | None:
277
- """Get agents directory for current developer.
278
-
279
- Args:
280
- repo_root: Repository root path. Defaults to auto-detected.
281
-
282
- Returns:
283
- Absolute path to agents directory, or None if no workspace.
284
- """
285
- if repo_root is None:
286
- repo_root = get_repo_root()
287
-
288
- workspace_dir = get_workspace_dir(repo_root)
289
- if workspace_dir:
290
- return workspace_dir / ".agents"
291
- return None
292
-
293
-
294
- # =============================================================================
295
- # Main Entry (for testing)
296
- # =============================================================================
297
-
298
- if __name__ == "__main__":
299
- repo = get_repo_root()
300
- print(f"Repository root: {repo}")
301
- print(f"Worktree config: {get_worktree_config(repo)}")
302
- print(f"Worktree base dir: {get_worktree_base_dir(repo)}")
303
- print(f"Copy files: {get_worktree_copy_files(repo)}")
304
- print(f"Post create hooks: {get_worktree_post_create_hooks(repo)}")
305
- print(f"Agents dir: {get_agents_dir(repo)}")
@@ -1,298 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Create Bootstrap Task for First-Time Setup.
4
-
5
- Creates a guided task to help users fill in project guidelines
6
- after initializing Trellis for the first time.
7
-
8
- Usage:
9
- python3 create_bootstrap.py [project-type]
10
-
11
- Arguments:
12
- project-type: frontend | backend | fullstack (default: fullstack)
13
-
14
- Prerequisites:
15
- - .trellis/.developer must exist (run init_developer.py first)
16
-
17
- Creates:
18
- .trellis/tasks/00-bootstrap-guidelines/
19
- - task.json # Task metadata
20
- - prd.md # Task description and guidance
21
- """
22
-
23
- from __future__ import annotations
24
-
25
- import json
26
- import sys
27
- from datetime import datetime
28
- from pathlib import Path
29
-
30
- from common.paths import (
31
- DIR_WORKFLOW,
32
- DIR_SCRIPTS,
33
- DIR_TASKS,
34
- get_repo_root,
35
- get_developer,
36
- get_tasks_dir,
37
- set_current_task,
38
- )
39
- from common.config import get_spec_base, resolve_package
40
-
41
-
42
- # =============================================================================
43
- # Constants
44
- # =============================================================================
45
-
46
- TASK_NAME = "00-bootstrap-guidelines"
47
-
48
-
49
- # =============================================================================
50
- # PRD Content
51
- # =============================================================================
52
-
53
- def write_prd_header() -> str:
54
- """Write PRD header section."""
55
- return """# Bootstrap: Fill Project Development Guidelines
56
-
57
- ## Purpose
58
-
59
- Welcome to Trellis! This is your first task.
60
-
61
- AI agents use `.trellis/spec/` to understand YOUR project's coding conventions.
62
- **Starting from scratch = AI writes generic code that doesn't match your project style.**
63
-
64
- Filling these guidelines is a one-time setup that pays off for every future AI session.
65
-
66
- ---
67
-
68
- ## Your Task
69
-
70
- Fill in the guideline files based on your **existing codebase**.
71
- """
72
-
73
-
74
- def write_prd_backend_section(spec_base: str) -> str:
75
- """Write PRD backend section."""
76
- return f"""
77
-
78
- ### Backend Guidelines
79
-
80
- | File | What to Document |
81
- |------|------------------|
82
- | `.trellis/{spec_base}/backend/directory-structure.md` | Where different file types go (routes, services, utils) |
83
- | `.trellis/{spec_base}/backend/database-guidelines.md` | ORM, migrations, query patterns, naming conventions |
84
- | `.trellis/{spec_base}/backend/error-handling.md` | How errors are caught, logged, and returned |
85
- | `.trellis/{spec_base}/backend/logging-guidelines.md` | Log levels, format, what to log |
86
- | `.trellis/{spec_base}/backend/quality-guidelines.md` | Code review standards, testing requirements |
87
- """
88
-
89
-
90
- def write_prd_frontend_section(spec_base: str) -> str:
91
- """Write PRD frontend section."""
92
- return f"""
93
-
94
- ### Frontend Guidelines
95
-
96
- | File | What to Document |
97
- |------|------------------|
98
- | `.trellis/{spec_base}/frontend/directory-structure.md` | Component/page/hook organization |
99
- | `.trellis/{spec_base}/frontend/component-guidelines.md` | Component patterns, props conventions |
100
- | `.trellis/{spec_base}/frontend/hook-guidelines.md` | Custom hook naming, patterns |
101
- | `.trellis/{spec_base}/frontend/state-management.md` | State library, patterns, what goes where |
102
- | `.trellis/{spec_base}/frontend/type-safety.md` | TypeScript conventions, type organization |
103
- | `.trellis/{spec_base}/frontend/quality-guidelines.md` | Linting, testing, accessibility |
104
- """
105
-
106
-
107
- def write_prd_footer() -> str:
108
- """Write PRD footer section."""
109
- return """
110
-
111
- ### Thinking Guides (Optional)
112
-
113
- The `.trellis/spec/guides/` directory contains thinking guides that are already
114
- filled with general best practices. You can customize them for your project if needed.
115
-
116
- ---
117
-
118
- ## How to Fill Guidelines
119
-
120
- ### Principle: Document Reality, Not Ideals
121
-
122
- Write what your codebase **actually does**, not what you wish it did.
123
- AI needs to match existing patterns, not introduce new ones.
124
-
125
- ### Steps
126
-
127
- 1. **Look at existing code** - Find 2-3 examples of each pattern
128
- 2. **Document the pattern** - Describe what you see
129
- 3. **Include file paths** - Reference real files as examples
130
- 4. **List anti-patterns** - What does your team avoid?
131
-
132
- ---
133
-
134
- ## Tips for Using AI
135
-
136
- Ask AI to help analyze your codebase:
137
-
138
- - "Look at my codebase and document the patterns you see"
139
- - "Analyze my code structure and summarize the conventions"
140
- - "Find error handling patterns and document them"
141
-
142
- The AI will read your code and help you document it.
143
-
144
- ---
145
-
146
- ## Completion Checklist
147
-
148
- - [ ] Guidelines filled for your project type
149
- - [ ] At least 2-3 real code examples in each guideline
150
- - [ ] Anti-patterns documented
151
-
152
- When done:
153
-
154
- ```bash
155
- python3 ./.trellis/scripts/task.py finish
156
- python3 ./.trellis/scripts/task.py archive 00-bootstrap-guidelines
157
- ```
158
-
159
- ---
160
-
161
- ## Why This Matters
162
-
163
- After completing this task:
164
-
165
- 1. AI will write code that matches your project style
166
- 2. Relevant `/trellis:before-*-dev` commands will inject real context
167
- 3. `/trellis:check-*` commands will validate against your actual standards
168
- 4. Future developers (human or AI) will onboard faster
169
- """
170
-
171
-
172
- def write_prd(task_dir: Path, project_type: str, spec_base: str) -> None:
173
- """Write prd.md file."""
174
- content = write_prd_header()
175
-
176
- if project_type == "frontend":
177
- content += write_prd_frontend_section(spec_base)
178
- elif project_type == "backend":
179
- content += write_prd_backend_section(spec_base)
180
- else: # fullstack
181
- content += write_prd_backend_section(spec_base)
182
- content += write_prd_frontend_section(spec_base)
183
-
184
- content += write_prd_footer()
185
-
186
- prd_file = task_dir / "prd.md"
187
- prd_file.write_text(content, encoding="utf-8")
188
-
189
-
190
- # =============================================================================
191
- # Task JSON
192
- # =============================================================================
193
-
194
- def write_task_json(task_dir: Path, developer: str, project_type: str, spec_base: str) -> None:
195
- """Write task.json file."""
196
- today = datetime.now().strftime("%Y-%m-%d")
197
-
198
- # Generate subtasks and related files based on project type
199
- if project_type == "frontend":
200
- subtasks = [
201
- {"name": "Fill frontend guidelines", "status": "pending"},
202
- {"name": "Add code examples", "status": "pending"},
203
- ]
204
- related_files = [f".trellis/{spec_base}/frontend/"]
205
- elif project_type == "backend":
206
- subtasks = [
207
- {"name": "Fill backend guidelines", "status": "pending"},
208
- {"name": "Add code examples", "status": "pending"},
209
- ]
210
- related_files = [f".trellis/{spec_base}/backend/"]
211
- else: # fullstack
212
- subtasks = [
213
- {"name": "Fill backend guidelines", "status": "pending"},
214
- {"name": "Fill frontend guidelines", "status": "pending"},
215
- {"name": "Add code examples", "status": "pending"},
216
- ]
217
- related_files = [f".trellis/{spec_base}/backend/", f".trellis/{spec_base}/frontend/"]
218
-
219
- task_data = {
220
- "id": TASK_NAME,
221
- "name": "Bootstrap Guidelines",
222
- "description": "Fill in project development guidelines for AI agents",
223
- "status": "in_progress",
224
- "dev_type": "docs",
225
- "priority": "P1",
226
- "creator": developer,
227
- "assignee": developer,
228
- "createdAt": today,
229
- "completedAt": None,
230
- "commit": None,
231
- "subtasks": subtasks,
232
- "children": [],
233
- "parent": None,
234
- "relatedFiles": related_files,
235
- "notes": f"First-time setup task created by trellis init ({project_type} project)",
236
- "meta": {},
237
- }
238
-
239
- task_json = task_dir / "task.json"
240
- task_json.write_text(json.dumps(task_data, indent=2, ensure_ascii=False), encoding="utf-8")
241
-
242
-
243
- # =============================================================================
244
- # Main
245
- # =============================================================================
246
-
247
- def main() -> int:
248
- """Main entry point."""
249
- # Parse project type argument
250
- project_type = "fullstack"
251
- if len(sys.argv) > 1:
252
- project_type = sys.argv[1]
253
-
254
- # Validate project type
255
- if project_type not in ("frontend", "backend", "fullstack"):
256
- print(f"Unknown project type: {project_type}, defaulting to fullstack")
257
- project_type = "fullstack"
258
-
259
- repo_root = get_repo_root()
260
- developer = get_developer(repo_root)
261
-
262
- # Check developer initialized
263
- if not developer:
264
- print("Error: Developer not initialized")
265
- print(f"Run: python3 ./{DIR_WORKFLOW}/{DIR_SCRIPTS}/init_developer.py <your-name>")
266
- return 1
267
-
268
- # Resolve spec base path (monorepo: spec/<package>, single-repo: spec)
269
- package = resolve_package(repo_root=repo_root)
270
- spec_base = get_spec_base(package, repo_root)
271
-
272
- tasks_dir = get_tasks_dir(repo_root)
273
- task_dir = tasks_dir / TASK_NAME
274
- relative_path = f"{DIR_WORKFLOW}/{DIR_TASKS}/{TASK_NAME}"
275
-
276
- # Check if already exists
277
- if task_dir.exists():
278
- print(f"Bootstrap task already exists: {relative_path}")
279
- return 0
280
-
281
- # Create task directory
282
- task_dir.mkdir(parents=True, exist_ok=True)
283
-
284
- # Write files
285
- write_task_json(task_dir, developer, project_type, spec_base)
286
- write_prd(task_dir, project_type, spec_base)
287
-
288
- # Set as current task
289
- set_current_task(relative_path, repo_root)
290
-
291
- # Silent output - init command handles user-facing messages
292
- # Only output the task path for programmatic use
293
- print(relative_path)
294
- return 0
295
-
296
-
297
- if __name__ == "__main__":
298
- sys.exit(main())
@@ -1,5 +0,0 @@
1
- """
2
- Multi-Agent Pipeline Scripts.
3
-
4
- This module provides orchestration for multi-agent workflows.
5
- """
@@ -1,17 +0,0 @@
1
- """Bootstrap path setup for multi_agent scripts.
2
-
3
- Import this module before importing from common/:
4
-
5
- import _bootstrap # noqa: F401
6
-
7
- This adds the parent scripts/ directory to sys.path so that
8
- `from common.xxx import yyy` works when running scripts directly
9
- via `python3 .trellis/scripts/multi_agent/some_script.py`.
10
- """
11
-
12
- import sys
13
- from pathlib import Path
14
-
15
- _scripts_dir = str(Path(__file__).resolve().parent.parent)
16
- if _scripts_dir not in sys.path:
17
- sys.path.insert(0, _scripts_dir)