@blulotus/trellis 0.7.0 → 0.7.1

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 (335) hide show
  1. package/README.md +2 -2
  2. package/dist/cli/index.js +2 -29
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/init.d.ts +0 -22
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js +5 -12
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/mem.d.ts +2 -2
  9. package/dist/commands/mem.d.ts.map +1 -1
  10. package/dist/commands/mem.js +7 -40
  11. package/dist/commands/mem.js.map +1 -1
  12. package/dist/commands/uninstall.d.ts +1 -1
  13. package/dist/commands/uninstall.d.ts.map +1 -1
  14. package/dist/commands/uninstall.js +4 -34
  15. package/dist/commands/uninstall.js.map +1 -1
  16. package/dist/commands/update.d.ts.map +1 -1
  17. package/dist/commands/update.js +2 -20
  18. package/dist/commands/update.js.map +1 -1
  19. package/dist/configurators/index.d.ts.map +1 -1
  20. package/dist/configurators/index.js +7 -73
  21. package/dist/configurators/index.js.map +1 -1
  22. package/dist/configurators/shared.d.ts +18 -70
  23. package/dist/configurators/shared.d.ts.map +1 -1
  24. package/dist/configurators/shared.js +20 -299
  25. package/dist/configurators/shared.js.map +1 -1
  26. package/dist/migrations/manifests/0.1.9.json +0 -12
  27. package/dist/migrations/manifests/0.2.14.json +0 -84
  28. package/dist/migrations/manifests/0.3.0-beta.0.json +0 -87
  29. package/dist/migrations/manifests/0.3.4.json +1 -13
  30. package/dist/migrations/manifests/0.4.0-beta.1.json +24 -176
  31. package/dist/migrations/manifests/0.5.0-beta.0.json +67 -1203
  32. package/dist/migrations/manifests/0.5.0-beta.15.json +0 -96
  33. package/dist/migrations/manifests/0.5.0-beta.5.json +0 -168
  34. package/dist/migrations/manifests/0.5.0-beta.9.json +0 -20
  35. package/dist/migrations/manifests/0.6.0-beta.23.json +0 -66
  36. package/dist/migrations/manifests/0.6.3.json +1 -16
  37. package/dist/migrations/manifests/0.6.6.json +1 -9
  38. package/dist/migrations/manifests/0.7.0.json +9 -0
  39. package/dist/migrations/manifests/0.7.1.json +9 -0
  40. package/dist/migrations/manifests/0.8.0.json +9 -0
  41. package/dist/templates/codex/hooks/session-start.py +37 -13
  42. package/dist/templates/codex/hooks.json +5 -0
  43. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +5 -5
  44. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +0 -10
  45. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +1 -1
  46. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +1 -13
  47. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +2 -2
  48. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/bundled-skills.md +9 -28
  49. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +5 -5
  50. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +1 -1
  51. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +1 -17
  52. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +4 -12
  53. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +6 -6
  54. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +5 -75
  55. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +0 -16
  56. package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +1 -1
  57. package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +2 -3
  58. package/dist/templates/common/commands/continue.md +24 -4
  59. package/dist/templates/common/commands/finish-work.md +19 -9
  60. package/dist/templates/common/commands/start.md +38 -29
  61. package/dist/templates/extract.d.ts +0 -10
  62. package/dist/templates/extract.d.ts.map +1 -1
  63. package/dist/templates/extract.js +0 -24
  64. package/dist/templates/extract.js.map +1 -1
  65. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +7 -9
  66. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +4 -8
  67. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +5 -5
  68. package/dist/templates/shared-hooks/index.d.ts +11 -43
  69. package/dist/templates/shared-hooks/index.d.ts.map +1 -1
  70. package/dist/templates/shared-hooks/index.js +9 -86
  71. package/dist/templates/shared-hooks/index.js.map +1 -1
  72. package/dist/templates/shared-hooks/inject-spec-context.py +1 -1
  73. package/dist/templates/shared-hooks/inject-subagent-context.py +23 -85
  74. package/dist/templates/shared-hooks/inject-workflow-state.py +56 -86
  75. package/dist/templates/shared-hooks/session-start.py +76 -98
  76. package/dist/templates/trellis/index.d.ts +0 -1
  77. package/dist/templates/trellis/index.d.ts.map +1 -1
  78. package/dist/templates/trellis/index.js +0 -2
  79. package/dist/templates/trellis/index.js.map +1 -1
  80. package/dist/templates/trellis/scripts/add_session.py +4 -4
  81. package/dist/templates/trellis/scripts/common/__init__.py +2 -0
  82. package/dist/templates/trellis/scripts/common/active_task.py +80 -152
  83. package/dist/templates/trellis/scripts/common/git_context.py +1 -1
  84. package/dist/templates/trellis/scripts/common/session_context.py +2 -2
  85. package/dist/templates/trellis/scripts/common/spec_inject.py +2 -2
  86. package/dist/templates/trellis/scripts/common/task_store.py +8 -28
  87. package/dist/templates/trellis/scripts/common/workflow_phase.py +4 -8
  88. package/dist/templates/trellis/scripts/get_context.py +2 -2
  89. package/dist/templates/trellis/scripts/init_developer.py +1 -1
  90. package/dist/templates/trellis/scripts/task.py +90 -57
  91. package/dist/templates/trellis/workflow.md +44 -66
  92. package/dist/types/ai-tools.d.ts +10 -10
  93. package/dist/types/ai-tools.d.ts.map +1 -1
  94. package/dist/types/ai-tools.js +3 -434
  95. package/dist/types/ai-tools.js.map +1 -1
  96. package/dist/utils/uninstall-scrubbers.d.ts +3 -18
  97. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
  98. package/dist/utils/uninstall-scrubbers.js +24 -154
  99. package/dist/utils/uninstall-scrubbers.js.map +1 -1
  100. package/package.json +2 -2
  101. package/dist/configurators/antigravity.d.ts +0 -7
  102. package/dist/configurators/antigravity.d.ts.map +0 -1
  103. package/dist/configurators/antigravity.js +0 -11
  104. package/dist/configurators/antigravity.js.map +0 -1
  105. package/dist/configurators/codebuddy.d.ts +0 -10
  106. package/dist/configurators/codebuddy.d.ts.map +0 -1
  107. package/dist/configurators/codebuddy.js +0 -24
  108. package/dist/configurators/codebuddy.js.map +0 -1
  109. package/dist/configurators/copilot.d.ts +0 -14
  110. package/dist/configurators/copilot.d.ts.map +0 -1
  111. package/dist/configurators/copilot.js +0 -46
  112. package/dist/configurators/copilot.js.map +0 -1
  113. package/dist/configurators/cursor.d.ts +0 -10
  114. package/dist/configurators/cursor.d.ts.map +0 -1
  115. package/dist/configurators/cursor.js +0 -23
  116. package/dist/configurators/cursor.js.map +0 -1
  117. package/dist/configurators/devin.d.ts +0 -8
  118. package/dist/configurators/devin.d.ts.map +0 -1
  119. package/dist/configurators/devin.js +0 -12
  120. package/dist/configurators/devin.js.map +0 -1
  121. package/dist/configurators/droid.d.ts +0 -10
  122. package/dist/configurators/droid.d.ts.map +0 -1
  123. package/dist/configurators/droid.js +0 -24
  124. package/dist/configurators/droid.js.map +0 -1
  125. package/dist/configurators/dsh.d.ts +0 -26
  126. package/dist/configurators/dsh.d.ts.map +0 -1
  127. package/dist/configurators/dsh.js +0 -76
  128. package/dist/configurators/dsh.js.map +0 -1
  129. package/dist/configurators/gemini.d.ts +0 -18
  130. package/dist/configurators/gemini.d.ts.map +0 -1
  131. package/dist/configurators/gemini.js +0 -39
  132. package/dist/configurators/gemini.js.map +0 -1
  133. package/dist/configurators/grok.d.ts +0 -17
  134. package/dist/configurators/grok.d.ts.map +0 -1
  135. package/dist/configurators/grok.js +0 -38
  136. package/dist/configurators/grok.js.map +0 -1
  137. package/dist/configurators/kilo.d.ts +0 -7
  138. package/dist/configurators/kilo.d.ts.map +0 -1
  139. package/dist/configurators/kilo.js +0 -11
  140. package/dist/configurators/kilo.js.map +0 -1
  141. package/dist/configurators/kimi.d.ts +0 -26
  142. package/dist/configurators/kimi.d.ts.map +0 -1
  143. package/dist/configurators/kimi.js +0 -74
  144. package/dist/configurators/kimi.js.map +0 -1
  145. package/dist/configurators/kiro.d.ts +0 -11
  146. package/dist/configurators/kiro.d.ts.map +0 -1
  147. package/dist/configurators/kiro.js +0 -30
  148. package/dist/configurators/kiro.js.map +0 -1
  149. package/dist/configurators/omp.d.ts +0 -6
  150. package/dist/configurators/omp.d.ts.map +0 -1
  151. package/dist/configurators/omp.js +0 -28
  152. package/dist/configurators/omp.js.map +0 -1
  153. package/dist/configurators/opencode.d.ts +0 -5
  154. package/dist/configurators/opencode.d.ts.map +0 -1
  155. package/dist/configurators/opencode.js +0 -84
  156. package/dist/configurators/opencode.js.map +0 -1
  157. package/dist/configurators/pi.d.ts +0 -5
  158. package/dist/configurators/pi.d.ts.map +0 -1
  159. package/dist/configurators/pi.js +0 -39
  160. package/dist/configurators/pi.js.map +0 -1
  161. package/dist/configurators/qoder.d.ts +0 -12
  162. package/dist/configurators/qoder.d.ts.map +0 -1
  163. package/dist/configurators/qoder.js +0 -30
  164. package/dist/configurators/qoder.js.map +0 -1
  165. package/dist/configurators/reasonix.d.ts +0 -17
  166. package/dist/configurators/reasonix.d.ts.map +0 -1
  167. package/dist/configurators/reasonix.js +0 -37
  168. package/dist/configurators/reasonix.js.map +0 -1
  169. package/dist/configurators/snow.d.ts +0 -25
  170. package/dist/configurators/snow.d.ts.map +0 -1
  171. package/dist/configurators/snow.js +0 -69
  172. package/dist/configurators/snow.js.map +0 -1
  173. package/dist/configurators/trae.d.ts +0 -16
  174. package/dist/configurators/trae.d.ts.map +0 -1
  175. package/dist/configurators/trae.js +0 -34
  176. package/dist/configurators/trae.js.map +0 -1
  177. package/dist/configurators/zcode.d.ts +0 -23
  178. package/dist/configurators/zcode.d.ts.map +0 -1
  179. package/dist/configurators/zcode.js +0 -63
  180. package/dist/configurators/zcode.js.map +0 -1
  181. package/dist/templates/codebuddy/agents/trellis-check.md +0 -115
  182. package/dist/templates/codebuddy/agents/trellis-implement.md +0 -115
  183. package/dist/templates/codebuddy/agents/trellis-research.md +0 -137
  184. package/dist/templates/codebuddy/index.d.ts +0 -15
  185. package/dist/templates/codebuddy/index.d.ts.map +0 -1
  186. package/dist/templates/codebuddy/index.js +0 -15
  187. package/dist/templates/codebuddy/index.js.map +0 -1
  188. package/dist/templates/codebuddy/settings.json +0 -69
  189. package/dist/templates/copilot/copilot-instructions.md +0 -11
  190. package/dist/templates/copilot/hooks/session-start.py +0 -564
  191. package/dist/templates/copilot/hooks.json +0 -19
  192. package/dist/templates/copilot/index.d.ts +0 -28
  193. package/dist/templates/copilot/index.d.ts.map +0 -1
  194. package/dist/templates/copilot/index.js +0 -61
  195. package/dist/templates/copilot/index.js.map +0 -1
  196. package/dist/templates/copilot/prompts/before-dev.prompt.md +0 -39
  197. package/dist/templates/copilot/prompts/brainstorm.prompt.md +0 -173
  198. package/dist/templates/copilot/prompts/break-loop.prompt.md +0 -129
  199. package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +0 -170
  200. package/dist/templates/copilot/prompts/check.prompt.md +0 -110
  201. package/dist/templates/copilot/prompts/create-command.prompt.md +0 -116
  202. package/dist/templates/copilot/prompts/finish-work.prompt.md +0 -99
  203. package/dist/templates/copilot/prompts/integrate-skill.prompt.md +0 -223
  204. package/dist/templates/copilot/prompts/onboard.prompt.md +0 -362
  205. package/dist/templates/copilot/prompts/parallel.prompt.md +0 -204
  206. package/dist/templates/copilot/prompts/record-session.prompt.md +0 -66
  207. package/dist/templates/copilot/prompts/start.prompt.md +0 -63
  208. package/dist/templates/copilot/prompts/update-spec.prompt.md +0 -358
  209. package/dist/templates/cursor/agents/trellis-check.md +0 -114
  210. package/dist/templates/cursor/agents/trellis-implement.md +0 -114
  211. package/dist/templates/cursor/agents/trellis-research.md +0 -136
  212. package/dist/templates/cursor/hooks.json +0 -24
  213. package/dist/templates/cursor/index.d.ts +0 -13
  214. package/dist/templates/cursor/index.d.ts.map +0 -1
  215. package/dist/templates/cursor/index.js +0 -13
  216. package/dist/templates/cursor/index.js.map +0 -1
  217. package/dist/templates/droid/droids/trellis-check.md +0 -107
  218. package/dist/templates/droid/droids/trellis-implement.md +0 -107
  219. package/dist/templates/droid/droids/trellis-research.md +0 -137
  220. package/dist/templates/droid/index.d.ts +0 -15
  221. package/dist/templates/droid/index.d.ts.map +0 -1
  222. package/dist/templates/droid/index.js +0 -15
  223. package/dist/templates/droid/index.js.map +0 -1
  224. package/dist/templates/droid/settings.json +0 -69
  225. package/dist/templates/dsh/DSH.md +0 -80
  226. package/dist/templates/dsh/agents/trellis-check.md +0 -99
  227. package/dist/templates/dsh/agents/trellis-implement.md +0 -106
  228. package/dist/templates/dsh/agents/trellis-research.md +0 -134
  229. package/dist/templates/dsh/index.d.ts +0 -22
  230. package/dist/templates/dsh/index.d.ts.map +0 -1
  231. package/dist/templates/dsh/index.js +0 -27
  232. package/dist/templates/dsh/index.js.map +0 -1
  233. package/dist/templates/gemini/agents/trellis-check.md +0 -107
  234. package/dist/templates/gemini/agents/trellis-implement.md +0 -107
  235. package/dist/templates/gemini/agents/trellis-research.md +0 -136
  236. package/dist/templates/gemini/index.d.ts +0 -13
  237. package/dist/templates/gemini/index.d.ts.map +0 -1
  238. package/dist/templates/gemini/index.js +0 -13
  239. package/dist/templates/gemini/index.js.map +0 -1
  240. package/dist/templates/gemini/settings.json +0 -40
  241. package/dist/templates/grok/agents/trellis-check.md +0 -106
  242. package/dist/templates/grok/agents/trellis-implement.md +0 -121
  243. package/dist/templates/grok/agents/trellis-research.md +0 -146
  244. package/dist/templates/grok/index.d.ts +0 -16
  245. package/dist/templates/grok/index.d.ts.map +0 -1
  246. package/dist/templates/grok/index.js +0 -19
  247. package/dist/templates/grok/index.js.map +0 -1
  248. package/dist/templates/kimi/agents/trellis-check.md +0 -104
  249. package/dist/templates/kimi/agents/trellis-implement.md +0 -120
  250. package/dist/templates/kimi/agents/trellis-research.md +0 -144
  251. package/dist/templates/kimi/index.d.ts +0 -20
  252. package/dist/templates/kimi/index.d.ts.map +0 -1
  253. package/dist/templates/kimi/index.js +0 -23
  254. package/dist/templates/kimi/index.js.map +0 -1
  255. package/dist/templates/kiro/agents/trellis-check.json +0 -26
  256. package/dist/templates/kiro/agents/trellis-implement.json +0 -26
  257. package/dist/templates/kiro/agents/trellis-research.json +0 -30
  258. package/dist/templates/kiro/agents/trellis.json +0 -34
  259. package/dist/templates/kiro/hooks/trellis-workflow-state.kiro.hook +0 -14
  260. package/dist/templates/kiro/index.d.ts +0 -32
  261. package/dist/templates/kiro/index.d.ts.map +0 -1
  262. package/dist/templates/kiro/index.js +0 -28
  263. package/dist/templates/kiro/index.js.map +0 -1
  264. package/dist/templates/omp/agents/trellis-check.md +0 -41
  265. package/dist/templates/omp/agents/trellis-implement.md +0 -55
  266. package/dist/templates/omp/agents/trellis-research.md +0 -30
  267. package/dist/templates/omp/extensions/trellis/index.ts.txt +0 -592
  268. package/dist/templates/omp/index.d.ts +0 -4
  269. package/dist/templates/omp/index.d.ts.map +0 -1
  270. package/dist/templates/omp/index.js +0 -9
  271. package/dist/templates/omp/index.js.map +0 -1
  272. package/dist/templates/opencode/agents/trellis-check.md +0 -122
  273. package/dist/templates/opencode/agents/trellis-implement.md +0 -123
  274. package/dist/templates/opencode/agents/trellis-research.md +0 -145
  275. package/dist/templates/opencode/lib/context-visibility.js +0 -86
  276. package/dist/templates/opencode/lib/session-utils.js +0 -526
  277. package/dist/templates/opencode/lib/trellis-context.js +0 -627
  278. package/dist/templates/opencode/package.json +0 -5
  279. package/dist/templates/opencode/plugins/inject-spec-context.js +0 -121
  280. package/dist/templates/opencode/plugins/inject-subagent-context.js +0 -569
  281. package/dist/templates/opencode/plugins/inject-workflow-state.js +0 -340
  282. package/dist/templates/opencode/plugins/session-start.js +0 -74
  283. package/dist/templates/pi/agents/trellis-check.md +0 -37
  284. package/dist/templates/pi/agents/trellis-implement.md +0 -52
  285. package/dist/templates/pi/agents/trellis-research.md +0 -25
  286. package/dist/templates/pi/extensions/trellis/index.ts.txt +0 -2033
  287. package/dist/templates/pi/index.d.ts +0 -5
  288. package/dist/templates/pi/index.d.ts.map +0 -1
  289. package/dist/templates/pi/index.js +0 -12
  290. package/dist/templates/pi/index.js.map +0 -1
  291. package/dist/templates/pi/settings.json +0 -9
  292. package/dist/templates/qoder/agents/trellis-check.md +0 -108
  293. package/dist/templates/qoder/agents/trellis-implement.md +0 -108
  294. package/dist/templates/qoder/agents/trellis-research.md +0 -137
  295. package/dist/templates/qoder/index.d.ts +0 -15
  296. package/dist/templates/qoder/index.d.ts.map +0 -1
  297. package/dist/templates/qoder/index.js +0 -15
  298. package/dist/templates/qoder/index.js.map +0 -1
  299. package/dist/templates/qoder/settings.json +0 -59
  300. package/dist/templates/reasonix/agents/trellis-check.md +0 -36
  301. package/dist/templates/reasonix/agents/trellis-implement.md +0 -51
  302. package/dist/templates/reasonix/index.d.ts +0 -13
  303. package/dist/templates/reasonix/index.d.ts.map +0 -1
  304. package/dist/templates/reasonix/index.js +0 -16
  305. package/dist/templates/reasonix/index.js.map +0 -1
  306. package/dist/templates/shared-hooks/inject-shell-session-context.py +0 -292
  307. package/dist/templates/snow/SNOW.md +0 -86
  308. package/dist/templates/snow/agents/trellis-check.md +0 -136
  309. package/dist/templates/snow/agents/trellis-implement.md +0 -158
  310. package/dist/templates/snow/agents/trellis-research.md +0 -114
  311. package/dist/templates/snow/hooks/beforeSubAgentStart.json +0 -15
  312. package/dist/templates/snow/hooks/onSessionStart.json +0 -15
  313. package/dist/templates/snow/hooks/onUserMessage.json +0 -15
  314. package/dist/templates/snow/hooks/write-trellis-context.py +0 -644
  315. package/dist/templates/snow/index.d.ts +0 -26
  316. package/dist/templates/snow/index.d.ts.map +0 -1
  317. package/dist/templates/snow/index.js +0 -36
  318. package/dist/templates/snow/index.js.map +0 -1
  319. package/dist/templates/trae/agents/trellis-check.md +0 -108
  320. package/dist/templates/trae/agents/trellis-implement.md +0 -108
  321. package/dist/templates/trae/agents/trellis-research.md +0 -137
  322. package/dist/templates/trae/hooks.json +0 -39
  323. package/dist/templates/trae/index.d.ts +0 -15
  324. package/dist/templates/trae/index.d.ts.map +0 -1
  325. package/dist/templates/trae/index.js +0 -15
  326. package/dist/templates/trae/index.js.map +0 -1
  327. package/dist/templates/trellis/scripts/common/cli_adapter.py +0 -982
  328. package/dist/templates/zcode/agents/trellis-check.md +0 -110
  329. package/dist/templates/zcode/agents/trellis-implement.md +0 -116
  330. package/dist/templates/zcode/agents/trellis-research.md +0 -133
  331. package/dist/templates/zcode/config.json +0 -52
  332. package/dist/templates/zcode/index.d.ts +0 -25
  333. package/dist/templates/zcode/index.d.ts.map +0 -1
  334. package/dist/templates/zcode/index.js +0 -29
  335. package/dist/templates/zcode/index.js.map +0 -1
@@ -4,23 +4,23 @@
4
4
  Task Management Script.
5
5
 
6
6
  Usage:
7
- python3 task.py create "<title>" [--slug <name>] [--assignee <dev>] [--priority P0|P1|P2|P3] [--parent <dir>] [--package <pkg>] [--no-start]
8
- python3 task.py add-context <dir> <file> <path> [reason] # Add jsonl entry
9
- python3 task.py validate <dir> # Validate jsonl files
10
- python3 task.py list-context <dir> # List jsonl entries
11
- python3 task.py start <dir> # Set active task
12
- python3 task.py current [--source] [--json] # Show active task
13
- python3 task.py finish # Clear active task
14
- python3 task.py workflow <id>|--clear # Set/clear per-task workflow selection
15
- python3 task.py set-branch <dir> <branch> # Set git branch
16
- python3 task.py set-base-branch <dir> <branch> # Set PR target branch
17
- python3 task.py set-scope <dir> <scope> # Set scope for PR title
18
- python3 task.py set-meta <dir> <key> <value> # Set a task metadata key
19
- python3 task.py archive <task-dir> # Archive completed task
20
- python3 task.py list # List active tasks
21
- python3 task.py list-archive [month] # List archived tasks
22
- python3 task.py add-subtask <parent-dir> <child-dir> # Link child to parent
23
- python3 task.py remove-subtask <parent-dir> <child-dir> # Unlink child from parent
7
+ python task.py create "<title>" [--slug <name>] [--assignee <dev>] [--priority P0|P1|P2|P3] [--parent <dir>] [--package <pkg>] [--no-start]
8
+ python task.py add-context <dir> <file> <path> [reason] # Add jsonl entry
9
+ python task.py validate <dir> # Validate jsonl files
10
+ python task.py list-context <dir> # List jsonl entries
11
+ python task.py start <dir> # Set active task
12
+ python task.py current [--source] [--json] # Show active task
13
+ python task.py finish # Clear active task
14
+ python task.py workflow <id>|--clear # Set/clear per-task workflow selection
15
+ python task.py set-branch <dir> <branch> # Set git branch
16
+ python task.py set-base-branch <dir> <branch> # Set PR target branch
17
+ python task.py set-scope <dir> <scope> # Set scope for PR title
18
+ python task.py set-meta <dir> <key> <value> # Set a task metadata key
19
+ python task.py archive <task-dir> # Archive completed task
20
+ python task.py list # List active tasks
21
+ python task.py list-archive [month] # List archived tasks
22
+ python task.py add-subtask <parent-dir> <child-dir> # Link child to parent
23
+ python task.py remove-subtask <parent-dir> <child-dir> # Unlink child from parent
24
24
  """
25
25
 
26
26
  from __future__ import annotations
@@ -41,6 +41,7 @@ from common.paths import (
41
41
  )
42
42
  from common.active_task import (
43
43
  clear_active_task,
44
+ mark_session_engaged,
44
45
  resolve_active_task,
45
46
  resolve_context_key,
46
47
  set_active_task,
@@ -69,9 +70,36 @@ from common.task_context import (
69
70
 
70
71
 
71
72
  # =============================================================================
72
- # Command: start / finish
73
+ # Command: engage / start / finish
73
74
  # =============================================================================
74
75
 
76
+ def cmd_engage(args: argparse.Namespace) -> int:
77
+ """Opt this session into the Trellis workflow."""
78
+ repo_root = get_repo_root()
79
+ context_key = mark_session_engaged(repo_root)
80
+
81
+ if context_key:
82
+ print(colored(f"✓ Trellis engaged for this session: {context_key}", Colors.GREEN))
83
+ return 0
84
+
85
+ # Unlike `start`, engage has no useful degraded mode: without a persisted
86
+ # flag both context-injection hooks stay silent for the whole session, so
87
+ # every later phase would run without the per-turn breadcrumb that enforces
88
+ # the planning and commit gates. Fail loudly instead of half-working.
89
+ print(colored("Error: cannot engage — no session identity available", Colors.RED))
90
+ print(colored(
91
+ "The engaged flag is keyed by session, so without an identity the "
92
+ "context-injection hooks cannot tell this session opted in.",
93
+ Colors.YELLOW,
94
+ ))
95
+ print(colored(
96
+ "Hint: run inside an AI session whose hooks are active, or set "
97
+ "TRELLIS_CONTEXT_ID before running task.py engage.",
98
+ Colors.YELLOW,
99
+ ))
100
+ return 1
101
+
102
+
75
103
  def cmd_start(args: argparse.Namespace) -> int:
76
104
  """Set active task."""
77
105
  repo_root = get_repo_root()
@@ -229,7 +257,7 @@ def cmd_workflow(args: argparse.Namespace) -> int:
229
257
  return 1
230
258
  if not args.clear and not args.id:
231
259
  print(colored("Error: workflow id required (or --clear)", Colors.RED))
232
- print("Usage: python3 task.py workflow <id> | --clear")
260
+ print("Usage: python task.py workflow <id> | --clear")
233
261
  return 1
234
262
 
235
263
  active = resolve_active_task(repo_root)
@@ -456,28 +484,29 @@ def show_usage() -> None:
456
484
  print("""Task Management Script
457
485
 
458
486
  Usage:
459
- python3 task.py create <title> Create new task directory
460
- python3 task.py create <title> --package <pkg> Create task for a specific package
461
- python3 task.py create <title> --parent <dir> Create task as child of parent
462
- python3 task.py create <title> --no-start Create without making it active in this session
463
- python3 task.py create <title> --workflow <id> Create task pinned to a workflow variant
464
- python3 task.py add-context <dir> <jsonl> <path> [reason] Add entry to jsonl
465
- python3 task.py validate <dir> Validate jsonl files
466
- python3 task.py list-context <dir> List jsonl entries
467
- python3 task.py start <dir> Set active task
468
- python3 task.py current [--source] Show active task
469
- python3 task.py finish Clear active task
470
- python3 task.py workflow <id> Select workflow variant for active task
471
- python3 task.py workflow --clear Clear selection (use default resolution)
472
- python3 task.py set-branch <dir> <branch> Set git branch
473
- python3 task.py set-base-branch <dir> <branch> Set PR target branch
474
- python3 task.py set-scope <dir> <scope> Set scope for PR title
475
- python3 task.py set-meta <dir> <key> <value> Set/overwrite a task metadata key
476
- python3 task.py archive <task-dir> Archive completed task
477
- python3 task.py add-subtask <parent> <child> Link child task to parent
478
- python3 task.py remove-subtask <parent> <child> Unlink child from parent
479
- python3 task.py list [--mine] [--status <status>] [--json] List tasks
480
- python3 task.py list-archive [YYYY-MM] List archived tasks
487
+ python task.py create <title> Create new task directory
488
+ python task.py create <title> --package <pkg> Create task for a specific package
489
+ python task.py create <title> --parent <dir> Create task as child of parent
490
+ python task.py create <title> --no-start Create without making it active in this session
491
+ python task.py create <title> --workflow <id> Create task pinned to a workflow variant
492
+ python task.py add-context <dir> <jsonl> <path> [reason] Add entry to jsonl
493
+ python task.py validate <dir> Validate jsonl files
494
+ python task.py list-context <dir> List jsonl entries
495
+ python task.py engage Opt this session into the Trellis workflow
496
+ python task.py start <dir> Set active task
497
+ python task.py current [--source] Show active task
498
+ python task.py finish Clear active task
499
+ python task.py workflow <id> Select workflow variant for active task
500
+ python task.py workflow --clear Clear selection (use default resolution)
501
+ python task.py set-branch <dir> <branch> Set git branch
502
+ python task.py set-base-branch <dir> <branch> Set PR target branch
503
+ python task.py set-scope <dir> <scope> Set scope for PR title
504
+ python task.py set-meta <dir> <key> <value> Set/overwrite a task metadata key
505
+ python task.py archive <task-dir> Archive completed task
506
+ python task.py add-subtask <parent> <child> Link child task to parent
507
+ python task.py remove-subtask <parent> <child> Unlink child from parent
508
+ python task.py list [--mine] [--status <status>] [--json] List tasks
509
+ python task.py list-archive [YYYY-MM] List archived tasks
481
510
 
482
511
  Monorepo options:
483
512
  --package <pkg> Package name (validated against config.yaml packages)
@@ -488,21 +517,21 @@ List options:
488
517
  --json Output machine-readable JSON (also available on `current`)
489
518
 
490
519
  Examples:
491
- python3 task.py create "Add login feature" --slug add-login
492
- python3 task.py create "Add login feature" --slug add-login --package cli
493
- python3 task.py create "Add login feature" --meta linear=ENG-123 --meta epic=auth
494
- python3 task.py create "Child task" --slug child --parent .trellis/tasks/01-21-parent
495
- python3 task.py add-context <dir> implement .trellis/spec/cli/backend/auth.md "Auth guidelines"
496
- python3 task.py set-branch <dir> task/add-login
497
- python3 task.py start .trellis/tasks/01-21-add-login
498
- python3 task.py current --source
499
- python3 task.py finish
500
- python3 task.py archive add-login
501
- python3 task.py add-subtask parent-task child-task # Link existing tasks
502
- python3 task.py remove-subtask parent-task child-task
503
- python3 task.py list # List all active tasks
504
- python3 task.py list --mine # List my tasks only
505
- python3 task.py list --mine --status in_progress # List my in-progress tasks
520
+ python task.py create "Add login feature" --slug add-login
521
+ python task.py create "Add login feature" --slug add-login --package cli
522
+ python task.py create "Add login feature" --meta linear=ENG-123 --meta epic=auth
523
+ python task.py create "Child task" --slug child --parent .trellis/tasks/01-21-parent
524
+ python task.py add-context <dir> implement .trellis/spec/cli/backend/auth.md "Auth guidelines"
525
+ python task.py set-branch <dir> task/add-login
526
+ python task.py start .trellis/tasks/01-21-add-login
527
+ python task.py current --source
528
+ python task.py finish
529
+ python task.py archive add-login
530
+ python task.py add-subtask parent-task child-task # Link existing tasks
531
+ python task.py remove-subtask parent-task child-task
532
+ python task.py list # List all active tasks
533
+ python task.py list --mine # List my tasks only
534
+ python task.py list --mine --status in_progress # List my in-progress tasks
506
535
  """)
507
536
 
508
537
 
@@ -533,7 +562,7 @@ def main() -> int:
533
562
  )
534
563
  print("See .trellis/workflow.md planning artifact guidance or run:", file=sys.stderr)
535
564
  print(
536
- " python3 ./.trellis/scripts/get_context.py --mode phase --step 1",
565
+ " python ./.trellis/scripts/get_context.py --mode phase --step 1",
537
566
  file=sys.stderr,
538
567
  )
539
568
  print(
@@ -591,6 +620,9 @@ def main() -> int:
591
620
  p_listctx = subparsers.add_parser("list-context", help="List context entries")
592
621
  p_listctx.add_argument("dir", help="Task directory")
593
622
 
623
+ # engage
624
+ subparsers.add_parser("engage", help="Opt this session into the Trellis workflow")
625
+
594
626
  # start
595
627
  p_start = subparsers.add_parser("start", help="Set active task")
596
628
  p_start.add_argument("dir", help="Task directory")
@@ -668,6 +700,7 @@ def main() -> int:
668
700
  "add-context": cmd_add_context,
669
701
  "validate": cmd_validate,
670
702
  "list-context": cmd_list_context,
703
+ "engage": cmd_engage,
671
704
  "start": cmd_start,
672
705
  "current": cmd_current,
673
706
  "finish": cmd_finish,
@@ -102,9 +102,13 @@ python3 ./.trellis/scripts/get_context.py --mode phase --step <X.Y> # detailed
102
102
  The [workflow-state:STATUS] blocks embedded in the ## Phase Index section
103
103
  below are the SINGLE source of truth for the per-turn `<workflow-state>`
104
104
  breadcrumb that every supported AI platform's UserPromptSubmit hook
105
- reads. inject-workflow-state.py (Python platforms) and
106
- inject-workflow-state.js (OpenCode plugin) only parse them — there is no
107
- fallback dict baked into the scripts after v0.5.0-rc.0.
105
+ reads. inject-workflow-state.py only parses them — there is no fallback
106
+ dict baked into the script after v0.5.0-rc.0.
107
+
108
+ The breadcrumb is opt-in: inject-workflow-state.py emits nothing until the
109
+ session runs `task.py engage` via `trellis-start` / `trellis-continue` /
110
+ `trellis-finish-work`. Every block below therefore speaks only to sessions
111
+ that asked for Trellis.
108
112
 
109
113
  STATUS charset: [A-Za-z0-9_-]+. When the hook can't find a tag, it
110
114
  degrades to a generic "Refer to workflow.md for current step." line —
@@ -118,7 +122,8 @@ python3 ./.trellis/scripts/get_context.py --mode phase --step <X.Y> # detailed
118
122
  skip and Phase 3.4 commit skip both manifested via this gap).
119
123
 
120
124
  TAG ↔ PHASE scoping:
121
- [workflow-state:no_task] → no active task; before Phase 1
125
+ [workflow-state:no_task] → engaged with no active task: before
126
+ Phase 1, or after task.py finish/archive
122
127
  [workflow-state:planning] → all of Phase 1 (status='planning')
123
128
  [workflow-state:planning-inline] → Codex inline variant of Phase 1
124
129
  [workflow-state:in_progress] → Phase 2 + Phase 3.2-3.4
@@ -151,8 +156,9 @@ Phase 3: Finish → verify, commit, and wrap up
151
156
 
152
157
  ### Request Triage
153
158
 
154
- - Do not ask whether to create a Trellis task. With no active task, work inline.
155
- - Create a task only when the user explicitly asks for one. The user owns the complexity judgment; do not offer, suggest, or infer it.
159
+ - Trellis is opt-in per session. Until the user invokes `trellis-start`, `trellis-continue` or `trellis-finish-work`, no Trellis context is injected and there is nothing to route — work inline.
160
+ - Do not ask whether to create a Trellis task, and do not offer, suggest, or infer that a request warrants one. The user owns that judgment and expresses it by invoking `trellis-start`.
161
+ - An in-flight task from another session is not this session's task. Only `trellis-continue` adopts it.
156
162
  - Creating a task is not approval to start implementation. Planning still happens first, and every task gets the full artifact set.
157
163
 
158
164
  ### Planning Artifacts
@@ -188,17 +194,20 @@ Use child tasks for deliverables that can be planned, implemented, checked, and
188
194
 
189
195
  Create new children with `task.py create "<title>" --slug <name> --parent <parent-dir>`. Link existing tasks with `task.py add-subtask <parent> <child>`, and unlink mistakes with `task.py remove-subtask <parent> <child>`.
190
196
 
191
- <!-- Per-turn breadcrumb: shown when there is no active task (before Phase 1) -->
197
+ <!-- Per-turn breadcrumb: shown in an engaged session that has no active task
198
+ either `trellis-start` has not created one yet, or `task.py finish` /
199
+ archive cleared the pointer mid-session. An unengaged session gets no
200
+ breadcrumb at all, so this block never speaks for one. -->
192
201
 
193
202
  [workflow-state:no_task]
194
203
  No active task. Work inline; create a Trellis task only when the user explicitly asks for one.
195
204
  [/workflow-state:no_task]
196
205
 
197
206
  ### Phase 1: Plan
198
- - 1.0 Create task `[required · once]` (only on explicit user request)
207
+ - 1.0 Create task `[required · once]` (only on explicit user request, i.e. `trellis-start`)
199
208
  - 1.1 Requirement exploration `[required · repeatable]` (`prd.md`, `design.md`, `implement.md` — all three)
200
209
  - 1.2 Research `[optional · repeatable]` (required for `kind=bug`: this is where the repro is built)
201
- - 1.3 Configure context `[required · once]` — Claude Code, Cursor, OpenCode, Codex, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Grok, Kimi Code (sub-agent-dispatch platforms only; inline platforms skip)
210
+ - 1.3 Configure context `[required · once]` — Claude Code, Codex (sub-agent-dispatch platforms only; inline platforms skip)
202
211
  - 1.4 Activate task `[required · once]` (review gate + red-evidence gate, then `task.py start`; status → in_progress)
203
212
  - 1.5 Completion criteria
204
213
 
@@ -237,11 +246,10 @@ Inline mode: skip jsonl curation; Phase 2 reads artifacts/specs via `trellis-bef
237
246
  therefore must cover every required step from implementation through
238
247
  commit, including Phase 3.3 spec update and Phase 3.4 commit. -->
239
248
 
240
- Sub-agent dispatch protocol applies to all platforms and all sub-agents, including native Codex `SubagentStart` context injection with child-side pull fallback, class-2 Gemini/Qoder/Copilot/Reasonix/Trae/Grok/Kimi Code/DeepSeek Harness, hook-backed ZCode/Snow, and `trellis-research`: every dispatch prompt starts with `Active task: <task path from task.py current>` before role-specific instructions. On Grok Build, use `spawn_subagent` with `subagent_type` set to the Trellis agent name (e.g. `trellis-implement`). On Kimi Code, dispatch the built-in `coder` / `explore` sub-agent with the matching `.kimi-code/skills/trellis-<role>/SKILL.md` instructions. On DeepSeek Harness, tell the child to load the matching `.dsh/skills/trellis-agent-<role>/SKILL.md` exactly once, then choose the synchronization path by capability. If the optional companion plugin exposes `trellis_wait`, dispatch `subagent` in its default continuable background mode, continue independent work, and call `trellis_wait` once per dependent child id when a dependent gate is next; each call returns only after DSH has queued that child's native settlement notice. Without `trellis_wait`, dispatch each child with `run_in_background: false` from the outset so no dependent gate can overtake it. Never simulate waiting with shell sleep, polling loops, `job_output`, repeated `list_agents`, or another long-running command, and never leave a background child without an event-driven wait path.
249
+ Sub-agent dispatch protocol applies to all platforms and all sub-agents, including native Codex `SubagentStart` context injection with child-side pull fallback and `trellis-research`: every dispatch prompt starts with `Active task: <task path from task.py current>` before role-specific instructions.
241
250
 
242
251
  [workflow-state:in_progress]
243
252
  Tools: `trellis-implement` / `trellis-research` name sub-agent roles dispatched through your platform's sub-agent mechanism, not skills the main session loads itself (on Claude Code: use the Task/Agent tool, never the Skill tool). `trellis-update-spec` is a skill. `trellis-check` exists as both; prefer the Agent/role form when verifying after code changes.
244
- On DeepSeek Harness, role instructions ship as collision-free `trellis-agent-implement` / `trellis-agent-check` / `trellis-agent-research` skills under `.dsh/skills/`. The main session must not load them itself: tell the child to load the matching role skill exactly once. If `trellis_wait` is available, use the default background mode, do independent work, then call `trellis_wait` once per dependent child id and consume each native settlement notice before entering the dependent gate. If it is unavailable, dispatch every child with `run_in_background: false` from the outset. Do not poll, sleep, or start a background child without an event-driven wait path.
245
253
  Flow: `trellis-implement` -> `trellis-check` -> commit (Phase 3.4) -> `/trellis:finish-work`. Spec update (3.3) is on demand — run it when the user asks, not as part of the default flow.
246
254
  Red before green: work the `implement.md` slice checklist one slice at a time — test at a seam confirmed in `design.md`, run it, paste the redacted red output into that slice entry, then write the minimum code to pass. No horizontal slicing, no tautological assertions, no refactoring inside a red-green cycle. `kind=chore` and repos with no runnable harness must state that in the slice entry instead of skipping silently. Load the `trellis-tdd` skill for the full contract.
247
255
  Main-session default: dispatch implement/check sub-agents. Sub-agent self-exemption: if already running as `trellis-implement`, do NOT spawn another `trellis-implement` or `trellis-check`; if already running as `trellis-check`, do NOT spawn another `trellis-check` or `trellis-implement`. Dispatch is main session only.
@@ -292,23 +300,23 @@ Code committed. Run `/trellis:finish-work`; if dirty, return to Phase 3.4 first.
292
300
 
293
301
  When a user request matches one of these intents inside an active task, route first, then load the detailed phase step if needed.
294
302
 
295
- [Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
303
+ [Claude Code, codex-sub-agent]
296
304
 
297
305
  - Planning or unclear requirements -> `trellis-brainstorm`.
298
306
  - `in_progress` implementation/check -> dispatch `trellis-implement` / `trellis-check`.
299
307
  - Writing a failing test, or reproducing a reported bug -> `trellis-tdd`.
300
308
  - Repeated debugging -> `trellis-break-loop`; spec updates -> `trellis-update-spec`.
301
309
 
302
- [/Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
310
+ [/Claude Code, codex-sub-agent]
303
311
 
304
- [codex-inline, Kilo, Antigravity, Devin]
312
+ [codex-inline]
305
313
 
306
314
  - Planning or unclear requirements -> `trellis-brainstorm`.
307
315
  - Before editing -> `trellis-before-dev`; after editing -> `trellis-check`.
308
316
  - Writing a failing test, or reproducing a reported bug -> `trellis-tdd`.
309
317
  - Repeated debugging -> `trellis-break-loop`; spec updates -> `trellis-update-spec`.
310
318
 
311
- [/codex-inline, Kilo, Antigravity, Devin]
319
+ [/codex-inline]
312
320
 
313
321
  ### Guardrails
314
322
 
@@ -336,7 +344,7 @@ Goal: turn an explicitly requested task into the planning artifacts and red evid
336
344
 
337
345
  #### 1.0 Create task `[required · once]`
338
346
 
339
- Create the task directory only when the user explicitly asked for a task. Do not ask whether to create one, and do not create one on your own initiative. The command sets status to `planning`, writes `task.json`, creates a default `prd.md`, and auto-targets the new task when session identity is available:
347
+ Create the task directory only when the user explicitly asked for a task — in practice, when they invoked `trellis-start`, which owns this step. Do not ask whether to create one, and do not create one on your own initiative. The command sets status to `planning`, writes `task.json`, creates a default `prd.md`, and auto-targets the new task when session identity is available:
340
348
 
341
349
  ```bash
342
350
  python3 ./.trellis/scripts/task.py create "<task title>" --slug <name> --meta kind=<bug|feature|chore>
@@ -380,22 +388,21 @@ Return to this step whenever requirements change and revise the relevant artifac
380
388
 
381
389
  Research can happen at any time during requirement exploration. It isn't limited to local code — you can use any available tool (MCP servers, skills, web search, etc.) to look up external information, including third-party library docs, industry practices, API references, etc.
382
390
 
383
- [Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
391
+ [Claude Code, codex-sub-agent]
384
392
 
385
393
  Spawn the research sub-agent:
386
394
 
387
395
  - **Agent type**: `trellis-research`
388
396
  - **Task description**: Research <specific question>
389
397
  - **Key requirement**: Research output MUST be persisted to `{TASK_DIR}/research/`
390
- - **DeepSeek Harness**: tell the child to load `trellis-agent-research` exactly once. If `trellis_wait` is available, use the default continuable background mode, dispatch independent questions concurrently when useful, continue unrelated work, then call `trellis_wait` once per child id and consume each settlement notice before advancing. Without `trellis_wait`, dispatch each required child with `run_in_background: false`; do not poll or sleep.
391
398
 
392
- [/Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
399
+ [/Claude Code, codex-sub-agent]
393
400
 
394
- [codex-inline, Kilo, Antigravity, Devin]
401
+ [codex-inline]
395
402
 
396
403
  Do the research in the main session directly and write findings into `{TASK_DIR}/research/`. `codex-inline` is the explicit mode that keeps work in the main session.
397
404
 
398
- [/codex-inline, Kilo, Antigravity, Devin]
405
+ [/codex-inline]
399
406
 
400
407
  **Research artifact conventions**:
401
408
  - One file per research topic (e.g. `research/auth-library-comparison.md`)
@@ -421,7 +428,7 @@ Brainstorm and research can interleave freely — pause to research a technical
421
428
 
422
429
  #### 1.3 Configure context `[required · once]`
423
430
 
424
- [Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
431
+ [Claude Code, codex-sub-agent]
425
432
 
426
433
  Curate `implement.jsonl` and `check.jsonl` so the Phase 2 sub-agents get the right spec/research context. These files were seeded on `task create` with a single self-describing `_example` line; your job here is to fill in real entries.
427
434
 
@@ -466,13 +473,13 @@ Ready gate: both `implement.jsonl` and `check.jsonl` must contain at least one r
466
473
 
467
474
  Skip this step only when both files already have real curated entries.
468
475
 
469
- [/Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
476
+ [/Claude Code, codex-sub-agent]
470
477
 
471
- [codex-inline, Kilo, Antigravity, Devin]
478
+ [codex-inline]
472
479
 
473
480
  Skip this step. Context is loaded directly by the `trellis-before-dev` skill in Phase 2.
474
481
 
475
- [/codex-inline, Kilo, Antigravity, Devin]
482
+ [/codex-inline]
476
483
 
477
484
  #### 1.4 Activate task `[required · once]`
478
485
 
@@ -506,11 +513,11 @@ If `task.py start` errors with a session-identity message (no context key from h
506
513
  | User confirms task should enter implementation | ✅ |
507
514
  | `task.py start` has been run (status = in_progress) | ✅ |
508
515
 
509
- [Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
516
+ [Claude Code, codex-sub-agent]
510
517
 
511
518
  | `implement.jsonl` and `check.jsonl` each contain at least one real curated entry (seed row does not count) | ✅ |
512
519
 
513
- [/Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
520
+ [/Claude Code, codex-sub-agent]
514
521
 
515
522
  ---
516
523
 
@@ -533,7 +540,7 @@ For `meta.kind=bug`, the slice-1 test is the minimised reproduction from `resear
533
540
 
534
541
  `meta.kind=chore` is exempt. A repo with no runnable harness is also exempt, but the slice entry must say so and why — never skip the cycle silently. Load the `trellis-tdd` skill for the full contract.
535
542
 
536
- [Claude Code, Cursor, OpenCode, codex-sub-agent, CodeBuddy, Droid, Pi, ZCode, Snow, Oh My Pi]
543
+ [Claude Code, codex-sub-agent]
537
544
 
538
545
  Spawn the implement sub-agent:
539
546
 
@@ -546,38 +553,9 @@ The platform hook/plugin auto-handles:
546
553
  - Injects `prd.md`, `design.md` if present, and `implement.md` if present
547
554
  - For Codex, `SubagentStart` supplies native context injection; the agent profile keeps child-side loading as the fallback
548
555
 
549
- [/Claude Code, Cursor, OpenCode, codex-sub-agent, CodeBuddy, Droid, Pi, ZCode, Snow, Oh My Pi]
550
-
551
- [Gemini, Qoder, Copilot, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
552
-
553
- Spawn the implement sub-agent:
554
-
555
- - **Agent type**: `trellis-implement`
556
- - **Task description**: Implement the reviewed task artifacts one `implement.md` slice at a time, red before green at the seams confirmed in `design.md`, consulting materials under `{TASK_DIR}/research/`; finish by running project lint and type-check
557
- - **Dispatch prompt guard**: The prompt MUST start with `Active task: <task path>`, then explicitly say the spawned agent is already `trellis-implement` and must implement directly without spawning another `trellis-implement` / `trellis-check`.
558
- - **DeepSeek Harness**: tell the child to load `trellis-agent-implement` exactly once. If `trellis_wait` is available, use the default background mode, continue independent work, then wait once for that child id and consume its successful native settlement notice before Phase 2.2. Without `trellis_wait`, dispatch that child with `run_in_background: false`. Do not poll or sleep.
559
-
560
- The pull-based sub-agent definition auto-handles the context load requirement:
561
- - Resolves the active task with `task.py current --source`, then reads `prd.md`, `design.md` if present, and `implement.md` if present
562
- - Reads `implement.jsonl` and requires the agent to load each referenced spec/research file before coding
563
-
564
- [/Gemini, Qoder, Copilot, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
565
-
566
- [Kiro]
567
-
568
- Spawn the implement sub-agent:
569
-
570
- - **Agent type**: `trellis-implement`
571
- - **Task description**: Implement the reviewed task artifacts one `implement.md` slice at a time, red before green at the seams confirmed in `design.md`, consulting materials under `{TASK_DIR}/research/`; finish by running project lint and type-check
572
- - **Dispatch prompt guard**: Tell the spawned agent it is already the `trellis-implement` sub-agent and must implement directly, not spawn another `trellis-implement` / `trellis-check`.
573
-
574
- The platform prelude auto-handles the context load requirement:
575
- - Reads `implement.jsonl` and injects referenced spec/research files into the agent prompt
576
- - Injects `prd.md`, `design.md` if present, and `implement.md` if present
577
-
578
- [/Kiro]
556
+ [/Claude Code, codex-sub-agent]
579
557
 
580
- [codex-inline, Kilo, Antigravity, Devin]
558
+ [codex-inline]
581
559
 
582
560
  1. Load the `trellis-before-dev` skill to read project guidelines
583
561
  2. Read `{TASK_DIR}/prd.md`, then `design.md`, then `implement.md`
@@ -585,18 +563,17 @@ The platform prelude auto-handles the context load requirement:
585
563
  4. Load the `trellis-tdd` skill and walk the `implement.md` slice checklist red-before-green, one slice at a time
586
564
  5. Run project lint and type-check
587
565
 
588
- [/codex-inline, Kilo, Antigravity, Devin]
566
+ [/codex-inline]
589
567
 
590
568
  #### 2.2 Quality check `[required · repeatable]`
591
569
 
592
- [Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
570
+ [Claude Code, codex-sub-agent]
593
571
 
594
572
  Spawn the check sub-agent:
595
573
 
596
574
  - **Agent type**: `trellis-check`
597
575
  - **Task description**: Review all code changes against specs and task artifacts; fix any findings directly; ensure lint and type-check pass
598
576
  - **Dispatch prompt guard**: The prompt MUST start with `Active task: <task path>`, then tell the spawned agent it is already the `trellis-check` sub-agent and must review/fix directly, not spawn another `trellis-check` / `trellis-implement`.
599
- - **DeepSeek Harness**: tell the child to load `trellis-agent-check` exactly once. If `trellis_wait` is available, use the default background mode, continue independent work, then wait once for that child id and consume its successful native settlement notice before Phase 3. Without `trellis_wait`, dispatch that child with `run_in_background: false`. Do not poll or sleep.
600
577
 
601
578
  The check agent's job:
602
579
  - Review code changes against specs
@@ -606,9 +583,9 @@ The check agent's job:
606
583
  - Run lint and typecheck to verify
607
584
  - A required check that cannot run, is skipped, or exits non-zero is blocked/failed, never passed. Do not weaken or rewrite acceptance criteria to advance the workflow.
608
585
 
609
- [/Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid, Pi, Oh My Pi, ZCode, Snow, Reasonix, Trae, Grok, Kimi Code, DeepSeek Harness]
586
+ [/Claude Code, codex-sub-agent]
610
587
 
611
- [codex-inline, Kilo, Antigravity, Devin]
588
+ [codex-inline]
612
589
 
613
590
  Load the `trellis-check` skill and verify the code per its guidance:
614
591
  - Spec compliance
@@ -617,7 +594,7 @@ Load the `trellis-check` skill and verify the code per its guidance:
617
594
 
618
595
  If issues are found → fix → re-check, until green.
619
596
 
620
- [/codex-inline, Kilo, Antigravity, Devin]
597
+ [/codex-inline]
621
598
 
622
599
  **Final pass (before Phase 3.4 commit)**: the last 2.2 of a task must run full-scope, not just on the latest implement chunk. List all affected packages with `python3 ./.trellis/scripts/get_context.py --mode packages`, then load each package's spec index Quality Check section. This catches cross-layer / multi-package issues a mid-iteration local 2.2 cannot.
623
600
 
@@ -718,6 +695,7 @@ This section is for developers who want to modify the Trellis workflow itself. A
718
695
  ### Changing what a step means
719
696
 
720
697
  Edit the corresponding step's walkthrough body in the Phase 1 / 2 / 3 sections above. Critical invariants:
698
+ - Trellis is opt-in per session: both injection hooks stay silent until an entry point runs `task.py engage`. Never move a required step's only enforcement out of the per-turn breadcrumb.
721
699
  - With no active task, never ask whether to create one. A task is created only on the user's explicit request.
722
700
  - Every task carries `prd.md`, `design.md`, and `implement.md` before start. There is no PRD-only tier.
723
701
  - `meta.kind` is never guessed, and the red-evidence gate for that kind must be satisfied — or its impossibility written down — before `task.py start`.
@@ -727,7 +705,7 @@ All tag blocks live in the `## Phase Index` section above, immediately after eac
727
705
 
728
706
  | Scope | Corresponding tag |
729
707
  |---|---|
730
- | No active task (before Phase 1) | `[workflow-state:no_task]` (after the Phase Index ASCII art) |
708
+ | Engaged, no active task (before Phase 1, or after archive) | `[workflow-state:no_task]` (after the Phase Index ASCII art) |
731
709
  | All of Phase 1 (task created → ready for implementation) | `[workflow-state:planning]` (after Phase 1 summary) |
732
710
  | Codex inline Phase 1 | `[workflow-state:planning-inline]` |
733
711
  | Phase 2 + Phase 3.2–3.4 (implementation + check + wrap-up) | `[workflow-state:in_progress]` (after Phase 2 summary) |
@@ -6,33 +6,33 @@
6
6
  /**
7
7
  * Supported AI coding tools
8
8
  */
9
- export type AITool = "claude-code" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "devin" | "qoder" | "codebuddy" | "copilot" | "droid" | "dsh" | "pi" | "reasonix" | "zcode" | "trae" | "omp" | "grok" | "kimi" | "snow";
9
+ export type AITool = "claude-code" | "codex";
10
10
  /**
11
11
  * Template directory categories
12
12
  */
13
- export type TemplateDir = "common" | "claude" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "devin" | "qoder" | "codebuddy" | "copilot" | "droid" | "dsh" | "pi" | "reasonix" | "zcode" | "trae" | "omp" | "grok" | "kimi" | "snow";
13
+ export type TemplateDir = "common" | "claude" | "codex";
14
14
  /**
15
- * CLI flag names for platform selection (e.g., --claude, --cursor, --kilo, --kiro, --gemini, --antigravity)
15
+ * CLI flag names for platform selection (`--claude`, `--codex`).
16
16
  * Must match keys in InitOptions (src/commands/init.ts)
17
17
  */
18
- export type CliFlag = "claude" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "devin" | "qoder" | "codebuddy" | "copilot" | "droid" | "dsh" | "pi" | "reasonix" | "zcode" | "trae" | "omp" | "grok" | "kimi" | "snow";
18
+ export type CliFlag = "claude" | "codex";
19
19
  /**
20
20
  * Template context for placeholder resolution.
21
21
  * Controls how common templates are rendered per platform.
22
22
  */
23
23
  export interface TemplateContext {
24
24
  /** Prefix for cross-referencing other commands/skills */
25
- cmdRefPrefix: "/trellis:" | "/trellis-" | "$" | "/" | "/skill trellis-" | "/skill:trellis-" | "trellis-";
25
+ cmdRefPrefix: "/trellis:" | "$";
26
26
  /** Description of AI executor actions shown in role tables */
27
- executorAI: "Bash scripts or Task calls" | "Bash scripts or tool calls" | "Bash scripts or Agent calls" | "Bash scripts or file reads";
27
+ executorAI: "Bash scripts or Task calls" | "Bash scripts or tool calls";
28
28
  /** Label for user-invocable actions */
29
- userActionLabel: "Slash commands" | "Skills" | "Workflows" | "Prompts" | "Commands";
29
+ userActionLabel: "Slash commands" | "Skills";
30
30
  /** Platform supports spawning sub-agents with isolated context */
31
31
  agentCapable: boolean;
32
32
  /** Platform has hook system (SessionStart, PreToolUse) */
33
33
  hasHooks: boolean;
34
34
  /**
35
- * CLI flag value for this platform (e.g. "claude", "codex", "kiro").
35
+ * CLI flag value for this platform ("claude", "codex").
36
36
  * Substituted into template commands via {{CLI_FLAG}} so rendered skill /
37
37
  * command files can pass `--platform <flag>` to scripts that need to know
38
38
  * the invoking platform, removing the need to re-detect at runtime.
@@ -57,7 +57,7 @@ export interface AIToolConfig {
57
57
  * to the platform's managed paths automatically.
58
58
  */
59
59
  supportsAgentSkills?: boolean;
60
- /** Additional managed paths beyond configDir (e.g., .github/hooks for Copilot) */
60
+ /** Additional managed paths beyond configDir (e.g., .codex/skills) */
61
61
  extraManagedPaths?: string[];
62
62
  /** CLI flag name for --flag options (e.g., "claude" for --claude) */
63
63
  cliFlag: CliFlag;
@@ -73,7 +73,7 @@ export interface AIToolConfig {
73
73
  * This is the single source of truth for platform data.
74
74
  *
75
75
  * When adding a new platform, add an entry here and create:
76
- * 1. src/configurators/{platform}.ts — configure function
76
+ * 1. src/configurators/{platform}.ts — collect{Platform}Templates()
77
77
  * 2. src/templates/{platform}/ — template files
78
78
  * 3. Register in src/configurators/index.ts — PLATFORM_FUNCTIONS
79
79
  * 4. Add CLI flag in src/cli/index.ts
@@ -1 +1 @@
1
- {"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../../src/types/ai-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,MAAM,GACd,aAAa,GACb,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,GACb,OAAO,GACP,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,KAAK,GACL,IAAI,GACJ,UAAU,GACV,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,GACb,OAAO,GACP,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,KAAK,GACL,IAAI,GACJ,UAAU,GACV,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,GACb,OAAO,GACP,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,KAAK,GACL,IAAI,GACJ,UAAU,GACV,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,YAAY,EACR,WAAW,GACX,WAAW,GACX,GAAG,GACH,GAAG,GACH,iBAAiB,GACjB,iBAAiB,GACjB,UAAU,CAAC;IACf,8DAA8D;IAC9D,UAAU,EACN,4BAA4B,GAC5B,4BAA4B,GAC5B,6BAA6B,GAC7B,4BAA4B,CAAC;IACjC,uCAAuC;IACvC,eAAe,EACX,gBAAgB,GAChB,QAAQ,GACR,WAAW,GACX,SAAS,GACT,UAAU,CAAC;IACf,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,cAAc,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,eAAe,EAAE,eAAe,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAidjD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAExD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAE3D"}
1
+ {"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../../src/types/ai-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,YAAY,EAAE,WAAW,GAAG,GAAG,CAAC;IAChC,8DAA8D;IAC9D,UAAU,EAAE,4BAA4B,GAAG,4BAA4B,CAAC;IACxE,uCAAuC;IACvC,eAAe,EAAE,gBAAgB,GAAG,QAAQ,CAAC;IAC7C,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AACD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,cAAc,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,eAAe,EAAE,eAAe,CAAC;CAClC;AACD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAkCjD,CAAC;AACF;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAExD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAE3D"}