@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,396 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- """
4
- Ralph Loop - SubagentStop Hook for Check Agent Loop Control
5
-
6
- Based on the Ralph Wiggum technique for autonomous agent loops.
7
- Uses completion promises to control when the check agent can stop.
8
-
9
- Mechanism:
10
- - Intercepts when check subagent tries to stop (SubagentStop event)
11
- - If verify commands configured in worktree.yaml, runs them to verify
12
- - Otherwise, reads check.jsonl to get dynamic completion markers ({reason}_FINISH)
13
- - Blocks stopping until verification passes or all markers found
14
- - Has max iterations as safety limit
15
-
16
- State file: .trellis/.ralph-state.json
17
- - Tracks current iteration count per session
18
- - Resets when task changes
19
- """
20
-
21
- # IMPORTANT: Suppress all warnings FIRST
22
- import warnings
23
- warnings.filterwarnings("ignore")
24
-
25
- import json
26
- import os
27
- import subprocess
28
- import sys
29
- from datetime import datetime
30
- from pathlib import Path
31
-
32
- # IMPORTANT: Force stdout to use UTF-8 on Windows
33
- # This fixes UnicodeEncodeError when outputting non-ASCII characters
34
- if sys.platform == "win32":
35
- import io as _io
36
- if hasattr(sys.stdout, "reconfigure"):
37
- sys.stdout.reconfigure(encoding="utf-8", errors="replace") # type: ignore[union-attr]
38
- elif hasattr(sys.stdout, "detach"):
39
- sys.stdout = _io.TextIOWrapper(sys.stdout.detach(), encoding="utf-8", errors="replace") # type: ignore[union-attr]
40
-
41
- # =============================================================================
42
- # Configuration
43
- # =============================================================================
44
-
45
- MAX_ITERATIONS = 5 # Safety limit to prevent infinite loops
46
- STATE_TIMEOUT_MINUTES = 30 # Reset state if older than this
47
- STATE_FILE = ".trellis/.ralph-state.json"
48
- WORKTREE_YAML = ".trellis/worktree.yaml"
49
- DIR_WORKFLOW = ".trellis"
50
- FILE_CURRENT_TASK = ".current-task"
51
-
52
- # Only control loop for check agent
53
- TARGET_AGENT = "check"
54
-
55
-
56
- def find_repo_root(start_path: str) -> str | None:
57
- """Find git repo root from start_path upwards"""
58
- current = Path(start_path).resolve()
59
- while current != current.parent:
60
- if (current / ".git").exists():
61
- return str(current)
62
- current = current.parent
63
- return None
64
-
65
-
66
- def get_current_task(repo_root: str) -> str | None:
67
- """Read current task directory path"""
68
- current_task_file = os.path.join(repo_root, DIR_WORKFLOW, FILE_CURRENT_TASK)
69
- if not os.path.exists(current_task_file):
70
- return None
71
-
72
- try:
73
- with open(current_task_file, "r", encoding="utf-8") as f:
74
- content = f.read().strip()
75
- if not content:
76
- return None
77
- normalized = content.replace("\\", "/")
78
- while normalized.startswith("./"):
79
- normalized = normalized[2:]
80
- if normalized.startswith("tasks/"):
81
- normalized = f".trellis/{normalized}"
82
- return normalized
83
- except Exception:
84
- return None
85
-
86
-
87
- def get_verify_commands(repo_root: str) -> list[str]:
88
- """
89
- Read verify commands from worktree.yaml.
90
-
91
- Returns list of commands to run, or empty list if not configured.
92
- Uses simple YAML parsing without external dependencies.
93
- """
94
- yaml_path = os.path.join(repo_root, WORKTREE_YAML)
95
- if not os.path.exists(yaml_path):
96
- return []
97
-
98
- try:
99
- with open(yaml_path, "r", encoding="utf-8") as f:
100
- content = f.read()
101
-
102
- # Simple YAML parsing for verify section
103
- # Look for "verify:" followed by list items
104
- lines = content.split("\n")
105
- in_verify_section = False
106
- commands = []
107
-
108
- for line in lines:
109
- stripped = line.strip()
110
-
111
- # Check for section start
112
- if stripped.startswith("verify:"):
113
- in_verify_section = True
114
- continue
115
-
116
- # Check for new section (not indented, ends with :)
117
- if (
118
- not line.startswith(" ")
119
- and not line.startswith("\t")
120
- and stripped.endswith(":")
121
- and stripped != ""
122
- ):
123
- in_verify_section = False
124
- continue
125
-
126
- # If in verify section, look for list items
127
- if in_verify_section:
128
- # Skip comments and empty lines
129
- if stripped.startswith("#") or stripped == "":
130
- continue
131
- # Parse list item (- command)
132
- if stripped.startswith("- "):
133
- cmd = stripped[2:].strip()
134
- if cmd:
135
- commands.append(cmd)
136
-
137
- return commands
138
- except Exception:
139
- return []
140
-
141
-
142
- def run_verify_commands(repo_root: str, commands: list[str]) -> tuple[bool, str]:
143
- """
144
- Run verify commands and return (success, message).
145
-
146
- All commands must pass for success.
147
- """
148
- for cmd in commands:
149
- try:
150
- result = subprocess.run(
151
- cmd,
152
- shell=True,
153
- cwd=repo_root,
154
- capture_output=True,
155
- timeout=120, # 2 minute timeout per command
156
- )
157
- if result.returncode != 0:
158
- stderr = result.stderr.decode("utf-8", errors="replace")
159
- stdout = result.stdout.decode("utf-8", errors="replace")
160
- error_output = stderr or stdout
161
- # Truncate long output
162
- if len(error_output) > 500:
163
- error_output = error_output[:500] + "..."
164
- return False, f"Command failed: {cmd}\n{error_output}"
165
- except subprocess.TimeoutExpired:
166
- return False, f"Command timed out: {cmd}"
167
- except Exception as e:
168
- return False, f"Command error: {cmd} - {str(e)}"
169
-
170
- return True, "All verify commands passed"
171
-
172
-
173
- def get_completion_markers(repo_root: str, task_dir: str) -> list[str]:
174
- """
175
- Read check.jsonl and generate completion markers from reasons.
176
-
177
- Each entry's "reason" field becomes {REASON}_FINISH marker.
178
- Example: {"file": "...", "reason": "TypeCheck"} -> "TYPECHECK_FINISH"
179
- """
180
- check_jsonl_path = os.path.join(repo_root, task_dir, "check.jsonl")
181
- markers = []
182
-
183
- if not os.path.exists(check_jsonl_path):
184
- # Fallback: if no check.jsonl, use default marker
185
- return ["ALL_CHECKS_FINISH"]
186
-
187
- try:
188
- with open(check_jsonl_path, "r", encoding="utf-8") as f:
189
- for line in f:
190
- line = line.strip()
191
- if not line:
192
- continue
193
- try:
194
- item = json.loads(line)
195
- reason = item.get("reason", "")
196
- if reason:
197
- # Convert to uppercase and add _FINISH suffix
198
- marker = f"{reason.upper().replace(' ', '_')}_FINISH"
199
- if marker not in markers:
200
- markers.append(marker)
201
- except json.JSONDecodeError:
202
- continue
203
- except Exception:
204
- pass
205
-
206
- # If no markers found, use default
207
- if not markers:
208
- markers = ["ALL_CHECKS_FINISH"]
209
-
210
- return markers
211
-
212
-
213
- def load_state(repo_root: str) -> dict:
214
- """Load Ralph Loop state from file"""
215
- state_path = os.path.join(repo_root, STATE_FILE)
216
- if not os.path.exists(state_path):
217
- return {"task": None, "iteration": 0, "started_at": None}
218
-
219
- try:
220
- with open(state_path, "r", encoding="utf-8") as f:
221
- return json.load(f)
222
- except Exception:
223
- return {"task": None, "iteration": 0, "started_at": None}
224
-
225
-
226
- def save_state(repo_root: str, state: dict) -> None:
227
- """Save Ralph Loop state to file"""
228
- state_path = os.path.join(repo_root, STATE_FILE)
229
- try:
230
- # Ensure directory exists
231
- os.makedirs(os.path.dirname(state_path), exist_ok=True)
232
- with open(state_path, "w", encoding="utf-8") as f:
233
- json.dump(state, f, indent=2, ensure_ascii=False)
234
- except Exception:
235
- pass
236
-
237
-
238
- def check_completion(agent_output: str, markers: list[str]) -> tuple[bool, list[str]]:
239
- """
240
- Check if all completion markers are present in agent output.
241
-
242
- Returns:
243
- (all_complete, missing_markers)
244
- """
245
- missing = []
246
- for marker in markers:
247
- if marker not in agent_output:
248
- missing.append(marker)
249
-
250
- return len(missing) == 0, missing
251
-
252
-
253
- def main():
254
- try:
255
- input_data = json.load(sys.stdin)
256
- except json.JSONDecodeError:
257
- # If can't parse input, allow stop
258
- sys.exit(0)
259
-
260
- # Get event info
261
- hook_event = input_data.get("hook_event_name", "")
262
-
263
- # Only handle SubagentStop event
264
- if hook_event != "SubagentStop":
265
- sys.exit(0)
266
-
267
- # Get subagent info
268
- # Field names per Claude Code SubagentStop event schema:
269
- # agent_type, last_assistant_message, agent_id, agent_transcript_path, cwd
270
- # The event does NOT carry a `prompt` field, so finish-phase detection
271
- # based on a `[finish]` marker in the user prompt is no longer possible
272
- # here; finish-phase skip logic should be reintroduced via task.json
273
- # state (e.g. current_phase) in a follow-up.
274
- agent_type = input_data.get("agent_type", "")
275
- last_assistant_message = input_data.get("last_assistant_message", "")
276
- cwd = input_data.get("cwd", os.getcwd())
277
-
278
- # Only control check agent
279
- if agent_type != TARGET_AGENT:
280
- sys.exit(0)
281
-
282
- # Find repo root
283
- repo_root = find_repo_root(cwd)
284
- if not repo_root:
285
- sys.exit(0)
286
-
287
- # Get current task
288
- task_dir = get_current_task(repo_root)
289
- if not task_dir:
290
- sys.exit(0)
291
-
292
- # Load state
293
- state = load_state(repo_root)
294
-
295
- # Reset state if task changed or state is too old
296
- should_reset = False
297
- if state.get("task") != task_dir:
298
- should_reset = True
299
- elif state.get("started_at"):
300
- try:
301
- started = datetime.fromisoformat(state["started_at"])
302
- if (datetime.now() - started).total_seconds() > STATE_TIMEOUT_MINUTES * 60:
303
- should_reset = True
304
- except (ValueError, TypeError):
305
- should_reset = True
306
-
307
- if should_reset:
308
- state = {
309
- "task": task_dir,
310
- "iteration": 0,
311
- "started_at": datetime.now().isoformat(),
312
- }
313
-
314
- # Increment iteration
315
- state["iteration"] = state.get("iteration", 0) + 1
316
- current_iteration = state["iteration"]
317
-
318
- # Save state
319
- save_state(repo_root, state)
320
-
321
- # Safety check: max iterations
322
- if current_iteration >= MAX_ITERATIONS:
323
- # Allow stop, reset state for next run
324
- state["iteration"] = 0
325
- save_state(repo_root, state)
326
- output = {
327
- "decision": "allow",
328
- "reason": f"Max iterations ({MAX_ITERATIONS}) reached. Stopping to prevent infinite loop.",
329
- }
330
- print(json.dumps(output, ensure_ascii=False))
331
- sys.exit(0)
332
-
333
- # Check if verify commands are configured
334
- verify_commands = get_verify_commands(repo_root)
335
-
336
- if verify_commands:
337
- # Use programmatic verification
338
- passed, message = run_verify_commands(repo_root, verify_commands)
339
-
340
- if passed:
341
- # All verify commands passed, allow stop
342
- state["iteration"] = 0
343
- save_state(repo_root, state)
344
- output = {
345
- "decision": "allow",
346
- "reason": "All verify commands passed. Check phase complete.",
347
- }
348
- print(json.dumps(output, ensure_ascii=False))
349
- sys.exit(0)
350
- else:
351
- # Verification failed, block stop
352
- output = {
353
- "decision": "block",
354
- "reason": f"Iteration {current_iteration}/{MAX_ITERATIONS}. Verification failed:\n{message}\n\nPlease fix the issues and try again.",
355
- }
356
- print(json.dumps(output, ensure_ascii=False))
357
- sys.exit(0)
358
- else:
359
- # No verify commands, fall back to completion markers
360
- markers = get_completion_markers(repo_root, task_dir)
361
- all_complete, missing = check_completion(last_assistant_message, markers)
362
-
363
- if all_complete:
364
- # All checks complete, allow stop
365
- state["iteration"] = 0
366
- save_state(repo_root, state)
367
- output = {
368
- "decision": "allow",
369
- "reason": "All completion markers found. Check phase complete.",
370
- }
371
- print(json.dumps(output, ensure_ascii=False))
372
- sys.exit(0)
373
- else:
374
- # Missing markers, block stop and continue
375
- output = {
376
- "decision": "block",
377
- "reason": f"""Iteration {current_iteration}/{MAX_ITERATIONS}. Missing completion markers: {", ".join(missing)}.
378
-
379
- IMPORTANT: You must ACTUALLY run the checks, not just output the markers.
380
- - Did you run lint? What was the output?
381
- - Did you run typecheck? What was the output?
382
- - Did they actually pass with zero errors?
383
-
384
- Only output a marker (e.g., LINT_FINISH) AFTER:
385
- 1. You have executed the corresponding command
386
- 2. The command completed with zero errors
387
- 3. You have shown the command output in your response
388
-
389
- Do NOT output markers just to escape the loop. The loop exists to ensure quality.""",
390
- }
391
- print(json.dumps(output, ensure_ascii=False))
392
- sys.exit(0)
393
-
394
-
395
- if __name__ == "__main__":
396
- main()
@@ -1,29 +0,0 @@
1
- Read the relevant development guidelines before starting your task.
2
-
3
- Execute these steps:
4
-
5
- 1. **Discover packages and their spec layers**:
6
- ```bash
7
- python3 ./.trellis/scripts/get_context.py --mode packages
8
- ```
9
-
10
- 2. **Identify which specs apply** to your task based on:
11
- - Which package you're modifying (e.g., `cli/`, `docs-site/`)
12
- - What type of work (backend, frontend, unit-test, docs, etc.)
13
-
14
- 3. **Read the spec index** for each relevant module:
15
- ```bash
16
- cat .trellis/spec/<package>/<layer>/index.md
17
- ```
18
- Follow the **"Pre-Development Checklist"** section in the index.
19
-
20
- 4. **Read the specific guideline files** listed in the Pre-Development Checklist that are relevant to your task. The index is NOT the goal — it points you to the actual guideline files (e.g., `error-handling.md`, `conventions.md`, `mock-strategies.md`). Read those files to understand the coding standards and patterns.
21
-
22
- 5. **Always read shared guides**:
23
- ```bash
24
- cat .trellis/spec/guides/index.md
25
- ```
26
-
27
- 6. Understand the coding standards and patterns you need to follow, then proceed with your development plan.
28
-
29
- This step is **mandatory** before writing any code.