@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
@@ -125,30 +125,48 @@ def _get_task_status(trellis_dir: Path) -> str:
125
125
  return f"Status: READY\nTask: {task_title}\nNext: Continue with implement or check"
126
126
 
127
127
 
128
- def _build_workflow_toc(workflow_path: Path) -> str:
129
- """Build a compact section index for workflow.md (lazy-load the full file on demand).
128
+ def _extract_range(content: str, start_header: str, end_header: str) -> str:
129
+ """Extract lines starting at `## start_header` up to (but excluding) `## end_header`."""
130
+ lines = content.splitlines()
131
+ start: "int | None" = None
132
+ end: int = len(lines)
133
+ start_match = f"## {start_header}"
134
+ end_match = f"## {end_header}"
135
+ for i, line in enumerate(lines):
136
+ stripped = line.strip()
137
+ if start is None and stripped == start_match:
138
+ start = i
139
+ continue
140
+ if start is not None and stripped == end_match:
141
+ end = i
142
+ break
143
+ if start is None:
144
+ return ""
145
+ return "\n".join(lines[start:end]).rstrip()
130
146
 
131
- Replaces full-file injection to keep additionalContext payload small.
132
- The full file is accessible via: Read tool on .trellis/workflow.md
133
- """
147
+
148
+ def _build_workflow_toc(workflow_path: Path) -> str:
149
+ """Inject workflow guide: TOC + Phase Index + Phase 1/2/3 step details."""
134
150
  content = read_file(workflow_path)
135
151
  if not content:
136
152
  return "No workflow.md found"
137
153
 
138
- toc_lines = [
154
+ out_lines = [
139
155
  "# Development Workflow — Section Index",
140
156
  "Full guide: .trellis/workflow.md (read on demand)",
141
157
  "",
158
+ "## Table of Contents",
142
159
  ]
143
160
  for line in content.splitlines():
144
161
  if line.startswith("## "):
145
- toc_lines.append(line)
162
+ out_lines.append(line)
163
+ out_lines += ["", "---", ""]
146
164
 
147
- toc_lines += [
148
- "",
149
- "To read a section: use the Read tool on .trellis/workflow.md",
150
- ]
151
- return "\n".join(toc_lines)
165
+ phases = _extract_range(content, "Phase Index", "Workflow State Breadcrumbs")
166
+ if phases:
167
+ out_lines.append(phases)
168
+
169
+ return "\n".join(out_lines).rstrip()
152
170
 
153
171
 
154
172
  def main() -> None:
@@ -183,38 +201,56 @@ Read and follow all instructions below carefully.
183
201
  output.write("\n</workflow>\n\n")
184
202
 
185
203
  output.write("<guidelines>\n")
186
- output.write("**Note**: The guidelines below are index files — they list available guideline documents and their locations.\n")
187
- output.write("During actual development, you MUST read the specific guideline files listed in each index's Pre-Development Checklist.\n\n")
188
-
204
+ output.write(
205
+ "Project spec indexes are listed by path below. Each index contains a "
206
+ "**Pre-Development Checklist** listing the specific guideline files to "
207
+ "read before coding.\n\n"
208
+ "- If you're spawning an implement/check sub-agent, context is injected "
209
+ "automatically via `{task}/implement.jsonl` / `check.jsonl`. You do NOT "
210
+ "need to read these indexes yourself.\n"
211
+ "- If you're editing code directly in the main session, Read the relevant "
212
+ "index(es) on-demand and follow their Pre-Dev Checklist.\n\n"
213
+ )
214
+
215
+ # guides/ inlined (cross-package thinking, broadly useful)
216
+ guides_index = trellis_dir / "spec" / "guides" / "index.md"
217
+ if guides_index.is_file():
218
+ output.write("## guides (inlined — cross-package thinking guides)\n")
219
+ output.write(read_file(guides_index))
220
+ output.write("\n\n")
221
+
222
+ # Other indexes — paths only
223
+ paths: list[str] = []
189
224
  spec_dir = trellis_dir / "spec"
190
225
  if spec_dir.is_dir():
191
226
  for sub in sorted(spec_dir.iterdir()):
192
227
  if not sub.is_dir() or sub.name.startswith("."):
193
228
  continue
194
-
195
229
  if sub.name == "guides":
196
- index_file = sub / "index.md"
197
- if index_file.is_file():
198
- output.write(f"## {sub.name}\n")
199
- output.write(read_file(index_file))
200
- output.write("\n\n")
201
230
  continue
202
-
203
231
  index_file = sub / "index.md"
204
232
  if index_file.is_file():
205
- output.write(f"## {sub.name}\n")
206
- output.write(read_file(index_file))
207
- output.write("\n\n")
233
+ paths.append(f".trellis/spec/{sub.name}/index.md")
208
234
  else:
209
235
  for nested in sorted(sub.iterdir()):
210
236
  if not nested.is_dir():
211
237
  continue
212
238
  nested_index = nested / "index.md"
213
239
  if nested_index.is_file():
214
- output.write(f"## {sub.name}/{nested.name}\n")
215
- output.write(read_file(nested_index))
216
- output.write("\n\n")
217
-
240
+ paths.append(
241
+ f".trellis/spec/{sub.name}/{nested.name}/index.md"
242
+ )
243
+
244
+ if paths:
245
+ output.write("## Available spec indexes (read on demand)\n")
246
+ for p in paths:
247
+ output.write(f"- {p}\n")
248
+ output.write("\n")
249
+
250
+ output.write(
251
+ "Discover more via: "
252
+ "`python3 ./.trellis/scripts/get_context.py --mode packages`\n"
253
+ )
218
254
  output.write("</guidelines>\n\n")
219
255
 
220
256
  task_status = _get_task_status(trellis_dir)
@@ -11,6 +11,17 @@
11
11
  }
12
12
  ]
13
13
  }
14
+ ],
15
+ "UserPromptSubmit": [
16
+ {
17
+ "hooks": [
18
+ {
19
+ "type": "command",
20
+ "command": "{{PYTHON_CMD}} .codex/hooks/inject-workflow-state.py",
21
+ "timeout": 5
22
+ }
23
+ ]
24
+ }
14
25
  ]
15
26
  }
16
27
  }
@@ -24,7 +24,6 @@ export interface ConfigTemplate {
24
24
  targetPath: string;
25
25
  content: string;
26
26
  }
27
- export declare function getAllSkills(): SkillTemplate[];
28
27
  export declare function getAllAgents(): AgentTemplate[];
29
28
  /**
30
29
  * Get Codex-specific skills (installed to .codex/skills/, not shared .agents/skills/).
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/codex/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgCH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAS9C;AAED,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAc9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CASnD;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAW5C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/codex/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgCH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAc9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CASnD;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAW5C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}
@@ -39,14 +39,7 @@ function listFiles(dir) {
39
39
  return [];
40
40
  }
41
41
  }
42
- export function getAllSkills() {
43
- const skills = [];
44
- for (const name of listDirectories("skills")) {
45
- const content = readTemplate(`skills/${name}/SKILL.md`);
46
- skills.push({ name, content });
47
- }
48
- return skills;
49
- }
42
+ // Shared skills are now sourced from common/ templates (see templates/common/index.ts)
50
43
  export function getAllAgents() {
51
44
  const agents = [];
52
45
  for (const file of listFiles("agents")) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/codex/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/codex/index.ts"],"names":[],"mappings":"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"}
@@ -247,7 +247,7 @@ Use this output format:
247
247
  Initialize default context:
248
248
 
249
249
  ```bash
250
- python3 ./.trellis/scripts/task.py init-context "$TASK_DIR" <type>
250
+ python3 ./.trellis/scripts/task.py init-context "$TASK_DIR" <type> --platform {{CLI_FLAG}}
251
251
  # type: backend | frontend | fullstack
252
252
  ```
253
253
 
@@ -0,0 +1,51 @@
1
+ # Continue Current Task
2
+
3
+ Resume work on the current task — pick up at the right phase/step in `.trellis/workflow.md`.
4
+
5
+ ---
6
+
7
+ ## Step 1: Load Current Context
8
+
9
+ ```bash
10
+ {{PYTHON_CMD}} ./.trellis/scripts/get_context.py
11
+ ```
12
+
13
+ Confirms: current task, git state, recent commits.
14
+
15
+ ## Step 2: Load the Phase Index
16
+
17
+ ```bash
18
+ {{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode phase
19
+ ```
20
+
21
+ Shows the Phase Index (Plan / Execute / Finish) with routing + skill mapping.
22
+
23
+ ## Step 3: Decide Where You Are
24
+
25
+ Compare the task's `prd.md` + recent activity against the Phase Index:
26
+
27
+ - No `prd.md` yet, or requirements unclear → **Phase 1: Plan** (start at step 1.0/1.1)
28
+ - `prd.md` exists + context configured, but code not written → **Phase 2: Execute** (step 2.1)
29
+ - Code written, pending final quality gate → **Phase 3: Finish** (step 3.1)
30
+
31
+ Phase rules (full detail in `.trellis/workflow.md`):
32
+
33
+ 1. Run steps **in order** within a phase — `[required]` steps must not be skipped
34
+ 2. `[once]` steps are already done if the output exists (e.g., `prd.md`, `implement.jsonl`) — skip them
35
+ 3. You may go back to an earlier phase if discoveries require it
36
+
37
+ ## Step 4: Load the Specific Step
38
+
39
+ Once you know which step to resume at:
40
+
41
+ ```bash
42
+ {{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode phase --step <X.X> --platform {{CLI_FLAG}}
43
+ ```
44
+
45
+ Follow the loaded instructions. After each `[required]` step completes, move to the next.
46
+
47
+ ---
48
+
49
+ ## Reference
50
+
51
+ Full workflow, skill routing table, and the DO-NOT-skip table live in `.trellis/workflow.md`. This command is only an entry point — the canonical guidance is there.
@@ -0,0 +1,32 @@
1
+ # Finish Work
2
+
3
+ Wrap up the current session.
4
+
5
+ ## Step 1: Quality Gate
6
+
7
+ `trellis-check` should have already run in Phase 3. If not, trigger it now and do not proceed until lint, type-check, tests, and spec compliance pass.
8
+
9
+ ## Step 2: Remind User to Commit
10
+
11
+ If there are uncommitted changes:
12
+
13
+ > "Please review the changes and commit when ready."
14
+
15
+ Do NOT run `git commit` — the human commits after testing.
16
+
17
+ ## Step 3: Record Session (after commit)
18
+
19
+ Archive finished tasks (judge by work status, not the `status` field):
20
+
21
+ ```bash
22
+ {{PYTHON_CMD}} ./.trellis/scripts/task.py archive <task-name>
23
+ ```
24
+
25
+ Append a session entry (auto-handles journal rotation, line count, index update):
26
+
27
+ ```bash
28
+ {{PYTHON_CMD}} ./.trellis/scripts/add_session.py \
29
+ --title "Session Title" \
30
+ --commit "hash1,hash2" \
31
+ --summary "Brief summary"
32
+ ```
@@ -0,0 +1,56 @@
1
+ # Start Session
2
+
3
+ Initialize a Trellis-managed development session. This platform has no session-start hook, so manually load the equivalent context by following these steps (each one mirrors a section the hook would otherwise inject).
4
+
5
+ ---
6
+
7
+ ## Step 1: Current state
8
+ Identity, git status, current task, active tasks, journal location.
9
+
10
+ ```bash
11
+ {{PYTHON_CMD}} ./.trellis/scripts/get_context.py
12
+ ```
13
+
14
+ ## Step 2: Workflow overview
15
+ Phase Index + skill routing table + DO-NOT-skip rules.
16
+
17
+ ```bash
18
+ {{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode phase
19
+ ```
20
+
21
+ Full guide in `.trellis/workflow.md` (read on demand).
22
+
23
+ ## Step 3: Guideline indexes
24
+ Discover packages + spec layers, then read each relevant index file.
25
+
26
+ ```bash
27
+ {{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode packages
28
+ cat .trellis/spec/guides/index.md
29
+ cat .trellis/spec/<package>/<layer>/index.md # for each relevant layer
30
+ ```
31
+
32
+ Index files list the specific guideline docs to read when you actually start coding.
33
+
34
+ ## Step 4: Decide next action
35
+ From Step 1 you know the current task. Check the task directory:
36
+
37
+ - **Active task + `prd.md` exists** → Phase 2 step 2.1. Load the step detail:
38
+ ```bash
39
+ {{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode phase --step 2.1 --platform {{CLI_FLAG}}
40
+ ```
41
+ - **Active task + no `prd.md`** → Phase 1.1. Load the `trellis-brainstorm` skill.
42
+ - **No active task** → when the user describes multi-step work, load the `trellis-brainstorm` skill to clarify requirements, then create a task via `task.py create`. For simple one-off questions or trivial edits, skip this and just answer directly — no task needed.
43
+
44
+ ---
45
+
46
+ ## Skill routing (quick reference)
47
+
48
+ | User intent | Skill |
49
+ |---|---|
50
+ | New feature / unclear requirements | `trellis-brainstorm` |
51
+ | About to write code | `trellis-before-dev` |
52
+ | Done coding / quality check | `trellis-check` |
53
+ | Stuck / fixed same bug multiple times | `trellis-break-loop` |
54
+ | Learned something worth capturing | `trellis-update-spec` |
55
+
56
+ Full rules + anti-rationalization table in `.trellis/workflow.md`.
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Common templates — single source of truth for all platforms.
3
+ *
4
+ * These templates contain {{placeholders}} that are resolved per-platform
5
+ * by resolvePlaceholders() in configurators/shared.ts.
6
+ *
7
+ * Directory structure:
8
+ * common/
9
+ * ├── commands/ # Templates that stay as slash commands (start, finish-work)
10
+ * └── skills/ # Templates that become auto-triggered skills
11
+ */
12
+ export interface CommonTemplate {
13
+ /** Template name without extension (e.g., "start", "before-dev") */
14
+ name: string;
15
+ /** Raw content with {{placeholders}} — must be resolved before writing */
16
+ content: string;
17
+ }
18
+ /**
19
+ * Get all command templates (stay as slash commands on all platforms).
20
+ * Results are cached after first call.
21
+ */
22
+ export declare function getCommandTemplates(): CommonTemplate[];
23
+ /**
24
+ * Get all skill templates (become auto-triggered skills on supporting platforms).
25
+ * Results are cached after first call.
26
+ */
27
+ export declare function getSkillTemplates(): CommonTemplate[];
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/common/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuBH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAMtD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAMpD"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Common templates — single source of truth for all platforms.
3
+ *
4
+ * These templates contain {{placeholders}} that are resolved per-platform
5
+ * by resolvePlaceholders() in configurators/shared.ts.
6
+ *
7
+ * Directory structure:
8
+ * common/
9
+ * ├── commands/ # Templates that stay as slash commands (start, finish-work)
10
+ * └── skills/ # Templates that become auto-triggered skills
11
+ */
12
+ import { readdirSync, readFileSync } from "node:fs";
13
+ import { dirname, join } from "node:path";
14
+ import { fileURLToPath } from "node:url";
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = dirname(__filename);
17
+ function readTemplate(relativePath) {
18
+ return readFileSync(join(__dirname, relativePath), "utf-8");
19
+ }
20
+ function listMarkdownFiles(dir) {
21
+ try {
22
+ return readdirSync(join(__dirname, dir))
23
+ .filter((f) => f.endsWith(".md"))
24
+ .sort();
25
+ }
26
+ catch {
27
+ return [];
28
+ }
29
+ }
30
+ // Cached results — files don't change during a CLI run
31
+ let cachedCommands;
32
+ let cachedSkills;
33
+ /**
34
+ * Get all command templates (stay as slash commands on all platforms).
35
+ * Results are cached after first call.
36
+ */
37
+ export function getCommandTemplates() {
38
+ cachedCommands ??= listMarkdownFiles("commands").map((file) => ({
39
+ name: file.replace(/\.md$/, ""),
40
+ content: readTemplate(`commands/${file}`),
41
+ }));
42
+ return cachedCommands;
43
+ }
44
+ /**
45
+ * Get all skill templates (become auto-triggered skills on supporting platforms).
46
+ * Results are cached after first call.
47
+ */
48
+ export function getSkillTemplates() {
49
+ cachedSkills ??= listMarkdownFiles("skills").map((file) => ({
50
+ name: file.replace(/\.md$/, ""),
51
+ content: readTemplate(`skills/${file}`),
52
+ }));
53
+ return cachedSkills;
54
+ }
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/common/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAChC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AASD,uDAAuD;AACvD,IAAI,cAA4C,CAAC;AACjD,IAAI,YAA0C,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,cAAc,KAAK,iBAAiB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/B,OAAO,EAAE,YAAY,CAAC,YAAY,IAAI,EAAE,CAAC;KAC1C,CAAC,CAAC,CAAC;IACJ,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,YAAY,KAAK,iBAAiB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/B,OAAO,EAAE,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC;KACxC,CAAC,CAAC,CAAC;IACJ,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,7 +1,3 @@
1
- ---
2
- description: Collaborative requirements discovery before implementation
3
- ---
4
-
5
1
  # Brainstorm - Requirements Discovery (AI Coding Enhanced)
6
2
 
7
3
  Guide AI through collaborative requirements discovery **before implementation**, optimized for AI coding workflows:
@@ -15,7 +11,7 @@ Guide AI through collaborative requirements discovery **before implementation**,
15
11
 
16
12
  ## When to Use
17
13
 
18
- Triggered from `/trellis-start` when the user describes a development task, especially when:
14
+ Triggered from {{CMD_REF:start}} when the user describes a development task, especially when:
19
15
 
20
16
  * requirements are unclear or evolving
21
17
  * there are multiple valid implementation paths
@@ -188,18 +184,61 @@ Examples:
188
184
  * The user asks for "best practice", "how others do it", "recommendation"
189
185
  * The user can't reasonably enumerate options
190
186
 
191
- ### Research steps
187
+ ### Delegate to `trellis-research` sub-agent (don't research inline)
188
+
189
+ For each research topic, **spawn a `trellis-research` sub-agent via the Task tool** — don't do WebFetch / WebSearch / `gh api` inline in the main conversation.
190
+
191
+ Why:
192
+ - The sub-agent has its own context window → doesn't pollute brainstorm context with raw tool output
193
+ - It persists findings to `{TASK_DIR}/research/<topic>.md` (the contract — see `workflow.md` Phase 1.2)
194
+ - It returns only `{file path, one-line summary}` to the main agent
195
+ - Independent topics can be **parallelized** — spawn multiple sub-agents in one tool call
196
+
197
+ Agent type: `trellis-research`
198
+ Task description template: "Research <specific question>; persist findings to `{TASK_DIR}/research/<topic-slug>.md`."
199
+
200
+ ❌ Bad (what you must NOT do):
201
+ ```
202
+ Main agent: WebFetch(url-A) → WebFetch(url-B) → Bash(gh api ...)
203
+ → WebSearch(q1) → WebSearch(q2) → ... (10+ inline calls)
204
+ → Write(research/topic.md)
205
+ ```
206
+ → Pollutes main context with raw HTML/JSON, burns tokens.
207
+
208
+ ✅ Good:
209
+ ```
210
+ Main agent: Task(subagent_type="trellis-research",
211
+ prompt="Research topic A; persist to research/topic-a.md")
212
+ + Task(subagent_type="trellis-research",
213
+ prompt="Research topic B; persist to research/topic-b.md")
214
+ + Task(subagent_type="trellis-research",
215
+ prompt="Research topic C; persist to research/topic-c.md")
216
+ → Reads research/topic-{a,b,c}.md after they finish.
217
+ ```
218
+
219
+ ### Research steps (to pass into each sub-agent prompt)
220
+
221
+ Each `trellis-research` sub-agent should:
192
222
 
193
- 1. Identify 2–4 comparable tools/patterns
223
+ 1. Identify 2–4 comparable tools/patterns for its topic
194
224
  2. Summarize common conventions and why they exist
195
225
  3. Map conventions onto our repo constraints
196
- 4. Produce **2–3 feasible approaches** for our project
226
+ 4. Write findings to `{TASK_DIR}/research/<topic>.md`
227
+
228
+ Main agent then reads the persisted files and produces **2–3 feasible approaches** in PRD.
197
229
 
198
230
  ### Research output format (PRD)
199
231
 
200
- Add a section in PRD (either within Technical Notes or as its own):
232
+ The PRD itself should only reference the persisted research files, not duplicate their content. Add a `## Research References` section pointing at `research/*.md`.
233
+
234
+ Optionally, add a convergence section with feasible approaches derived from the research:
201
235
 
202
236
  ```markdown
237
+ ## Research References
238
+
239
+ * [`research/<topic-a>.md`](research/<topic-a>.md) — <one-line takeaway>
240
+ * [`research/<topic-b>.md`](research/<topic-b>.md) — <one-line takeaway>
241
+
203
242
  ## Research Notes
204
243
 
205
244
  ### What similar tools do
@@ -486,6 +525,6 @@ The task directory and PRD already exist from brainstorm, so Phase 1 of the Task
486
525
 
487
526
  | Command | When to Use |
488
527
  |---------|-------------|
489
- | `/trellis-start` | Entry point that triggers brainstorm |
490
- | `/trellis-finish-work` | After implementation is complete |
491
- | `/trellis-update-spec` | If new patterns emerge during work |
528
+ | `{{CMD_REF:start}}` | Entry point that triggers brainstorm |
529
+ | `{{CMD_REF:finish-work}}` | After implementation is complete |
530
+ | `{{CMD_REF:update-spec}}` | If new patterns emerge during work |
@@ -1,6 +1,6 @@
1
1
  # Break the Loop - Deep Bug Analysis
2
2
 
3
- When debug is complete, use this command for deep analysis to break the "fix bug -> forget -> repeat" cycle.
3
+ When debug is complete, use this for deep analysis to break the "fix bug -> forget -> repeat" cycle.
4
4
 
5
5
  ---
6
6
 
@@ -37,7 +37,7 @@ What mechanisms would prevent this from happening again?
37
37
  |------|-------------|---------|
38
38
  | **Documentation** | Write it down so people know | Update thinking guide |
39
39
  | **Architecture** | Make the error impossible structurally | Type-safe wrappers |
40
- | **Compile-time** | TypeScript strict, no any | Signature change causes compile error |
40
+ | **Compile-time** | Strict type checking, no escape hatches | Signature change causes compile error |
41
41
  | **Runtime** | Monitoring, alerts, scans | Detect orphan entities |
42
42
  | **Test Coverage** | E2E tests, integration tests | Verify full flow |
43
43
  | **Code Review** | Checklist, PR template | "Did you check X?" |
@@ -56,10 +56,10 @@ What broader problems does this bug reveal?
56
56
  Solidify insights into the system:
57
57
 
58
58
  - [ ] Update `.trellis/spec/guides/` thinking guides
59
- - [ ] Update `.trellis/spec/backend/` or `frontend/` docs
59
+ - [ ] Update relevant `.trellis/spec/` docs
60
60
  - [ ] Create issue record (if applicable)
61
61
  - [ ] Create feature ticket for root fix
62
- - [ ] Update check commands if needed
62
+ - [ ] Update check guidelines if needed
63
63
 
64
64
  ---
65
65
 
@@ -0,0 +1,87 @@
1
+ # Code Quality Check
2
+
3
+ Comprehensive quality verification for recently written code. Combines spec compliance, cross-layer safety, and pre-commit checks.
4
+
5
+ ---
6
+
7
+ ## Step 1: Identify What Changed
8
+
9
+ ```bash
10
+ git diff --name-only HEAD
11
+ git status
12
+ ```
13
+
14
+ ## Step 2: Read Applicable Specs
15
+
16
+ ```bash
17
+ python3 ./.trellis/scripts/get_context.py --mode packages
18
+ ```
19
+
20
+ For each changed package/layer, read the spec index and follow its **Quality Check** section:
21
+
22
+ ```bash
23
+ cat .trellis/spec/<package>/<layer>/index.md
24
+ ```
25
+
26
+ Read the specific guideline files referenced — the index is a pointer, not the goal.
27
+
28
+ ## Step 3: Run Project Checks
29
+
30
+ Run the project's lint, type-check, and test commands. Fix any failures before proceeding.
31
+
32
+ ## Step 4: Review Against Checklist
33
+
34
+ ### Code Quality
35
+
36
+ - [ ] Linter passes?
37
+ - [ ] Type checker passes (if applicable)?
38
+ - [ ] Tests pass?
39
+ - [ ] No debug logging left in?
40
+ - [ ] No suppressed warnings or type-safety bypasses?
41
+
42
+ ### Test Coverage
43
+
44
+ - [ ] New function → unit test added?
45
+ - [ ] Bug fix → regression test added?
46
+ - [ ] Changed behavior → existing tests updated?
47
+
48
+ ### Spec Sync
49
+
50
+ - [ ] Does `.trellis/spec/` need updates? (new patterns, conventions, lessons learned)
51
+
52
+ > "If I fixed a bug or discovered something non-obvious, should I document it so future me won't hit the same issue?" → If YES, update the relevant spec doc.
53
+
54
+ ## Step 5: Cross-Layer Dimensions (if applicable)
55
+
56
+ Skip this step if your change is confined to a single layer.
57
+
58
+ ### A. Data Flow (changes touch 3+ layers)
59
+
60
+ - [ ] Read flow traces correctly: Storage → Service → API → UI
61
+ - [ ] Write flow traces correctly: UI → API → Service → Storage
62
+ - [ ] Types/schemas correctly passed between layers?
63
+ - [ ] Errors properly propagated to caller?
64
+
65
+ ### B. Code Reuse (modifying constants, creating utilities)
66
+
67
+ - [ ] Searched for existing similar code before creating new?
68
+ ```bash
69
+ grep -r "pattern" src/
70
+ ```
71
+ - [ ] If 2+ places define same value → extracted to shared constant?
72
+ - [ ] After batch modification, all occurrences updated?
73
+
74
+ ### C. Import/Dependency (creating new files)
75
+
76
+ - [ ] Correct import paths (relative vs absolute)?
77
+ - [ ] No circular dependencies?
78
+
79
+ ### D. Same-Layer Consistency
80
+
81
+ - [ ] Other places using the same concept are consistent?
82
+
83
+ ---
84
+
85
+ ## Step 6: Report and Fix
86
+
87
+ Report violations found and fix them directly. Re-run project checks after fixes.