@blulotus/trellis 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (821) hide show
  1. package/LICENSE +235 -0
  2. package/README.md +149 -0
  3. package/bin/trellis.js +3 -0
  4. package/dist/cli/index.d.ts +3 -0
  5. package/dist/cli/index.d.ts.map +1 -0
  6. package/dist/cli/index.js +276 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/commands/channel/adapters/claude.d.ts +29 -0
  9. package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
  10. package/dist/commands/channel/adapters/claude.js +203 -0
  11. package/dist/commands/channel/adapters/claude.js.map +1 -0
  12. package/dist/commands/channel/adapters/codex.d.ts +93 -0
  13. package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
  14. package/dist/commands/channel/adapters/codex.js +573 -0
  15. package/dist/commands/channel/adapters/codex.js.map +1 -0
  16. package/dist/commands/channel/adapters/index.d.ts +86 -0
  17. package/dist/commands/channel/adapters/index.d.ts.map +1 -0
  18. package/dist/commands/channel/adapters/index.js +115 -0
  19. package/dist/commands/channel/adapters/index.js.map +1 -0
  20. package/dist/commands/channel/adapters/types.d.ts +33 -0
  21. package/dist/commands/channel/adapters/types.d.ts.map +1 -0
  22. package/dist/commands/channel/adapters/types.js +2 -0
  23. package/dist/commands/channel/adapters/types.js.map +1 -0
  24. package/dist/commands/channel/agent-loader.d.ts +32 -0
  25. package/dist/commands/channel/agent-loader.d.ts.map +1 -0
  26. package/dist/commands/channel/agent-loader.js +158 -0
  27. package/dist/commands/channel/agent-loader.js.map +1 -0
  28. package/dist/commands/channel/context-loader.d.ts +26 -0
  29. package/dist/commands/channel/context-loader.d.ts.map +1 -0
  30. package/dist/commands/channel/context-loader.js +311 -0
  31. package/dist/commands/channel/context-loader.js.map +1 -0
  32. package/dist/commands/channel/context-trust.d.ts +31 -0
  33. package/dist/commands/channel/context-trust.d.ts.map +1 -0
  34. package/dist/commands/channel/context-trust.js +139 -0
  35. package/dist/commands/channel/context-trust.js.map +1 -0
  36. package/dist/commands/channel/context.d.ts +16 -0
  37. package/dist/commands/channel/context.d.ts.map +1 -0
  38. package/dist/commands/channel/context.js +83 -0
  39. package/dist/commands/channel/context.js.map +1 -0
  40. package/dist/commands/channel/create.d.ts +27 -0
  41. package/dist/commands/channel/create.d.ts.map +1 -0
  42. package/dist/commands/channel/create.js +39 -0
  43. package/dist/commands/channel/create.js.map +1 -0
  44. package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
  45. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
  46. package/dist/commands/channel/dev-parse-trace.js +70 -0
  47. package/dist/commands/channel/dev-parse-trace.js.map +1 -0
  48. package/dist/commands/channel/guard.d.ts +150 -0
  49. package/dist/commands/channel/guard.d.ts.map +1 -0
  50. package/dist/commands/channel/guard.js +479 -0
  51. package/dist/commands/channel/guard.js.map +1 -0
  52. package/dist/commands/channel/index.d.ts +3 -0
  53. package/dist/commands/channel/index.d.ts.map +1 -0
  54. package/dist/commands/channel/index.js +535 -0
  55. package/dist/commands/channel/index.js.map +1 -0
  56. package/dist/commands/channel/interrupt.d.ts +10 -0
  57. package/dist/commands/channel/interrupt.d.ts.map +1 -0
  58. package/dist/commands/channel/interrupt.js +22 -0
  59. package/dist/commands/channel/interrupt.js.map +1 -0
  60. package/dist/commands/channel/kill.d.ts +7 -0
  61. package/dist/commands/channel/kill.d.ts.map +1 -0
  62. package/dist/commands/channel/kill.js +121 -0
  63. package/dist/commands/channel/kill.js.map +1 -0
  64. package/dist/commands/channel/list.d.ts +17 -0
  65. package/dist/commands/channel/list.d.ts.map +1 -0
  66. package/dist/commands/channel/list.js +233 -0
  67. package/dist/commands/channel/list.js.map +1 -0
  68. package/dist/commands/channel/messages.d.ts +15 -0
  69. package/dist/commands/channel/messages.d.ts.map +1 -0
  70. package/dist/commands/channel/messages.js +245 -0
  71. package/dist/commands/channel/messages.js.map +1 -0
  72. package/dist/commands/channel/rm.d.ts +27 -0
  73. package/dist/commands/channel/rm.d.ts.map +1 -0
  74. package/dist/commands/channel/rm.js +216 -0
  75. package/dist/commands/channel/rm.js.map +1 -0
  76. package/dist/commands/channel/run.d.ts +30 -0
  77. package/dist/commands/channel/run.d.ts.map +1 -0
  78. package/dist/commands/channel/run.js +130 -0
  79. package/dist/commands/channel/run.js.map +1 -0
  80. package/dist/commands/channel/send.d.ts +11 -0
  81. package/dist/commands/channel/send.d.ts.map +1 -0
  82. package/dist/commands/channel/send.js +24 -0
  83. package/dist/commands/channel/send.js.map +1 -0
  84. package/dist/commands/channel/spawn.d.ts +43 -0
  85. package/dist/commands/channel/spawn.d.ts.map +1 -0
  86. package/dist/commands/channel/spawn.js +247 -0
  87. package/dist/commands/channel/spawn.js.map +1 -0
  88. package/dist/commands/channel/store/events.d.ts +39 -0
  89. package/dist/commands/channel/store/events.d.ts.map +1 -0
  90. package/dist/commands/channel/store/events.js +87 -0
  91. package/dist/commands/channel/store/events.js.map +1 -0
  92. package/dist/commands/channel/store/filter.d.ts +3 -0
  93. package/dist/commands/channel/store/filter.d.ts.map +1 -0
  94. package/dist/commands/channel/store/filter.js +2 -0
  95. package/dist/commands/channel/store/filter.js.map +1 -0
  96. package/dist/commands/channel/store/lock.d.ts +23 -0
  97. package/dist/commands/channel/store/lock.d.ts.map +1 -0
  98. package/dist/commands/channel/store/lock.js +99 -0
  99. package/dist/commands/channel/store/lock.js.map +1 -0
  100. package/dist/commands/channel/store/paths.d.ts +77 -0
  101. package/dist/commands/channel/store/paths.d.ts.map +1 -0
  102. package/dist/commands/channel/store/paths.js +272 -0
  103. package/dist/commands/channel/store/paths.js.map +1 -0
  104. package/dist/commands/channel/store/schema.d.ts +27 -0
  105. package/dist/commands/channel/store/schema.d.ts.map +1 -0
  106. package/dist/commands/channel/store/schema.js +34 -0
  107. package/dist/commands/channel/store/schema.js.map +1 -0
  108. package/dist/commands/channel/store/thread-state.d.ts +5 -0
  109. package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
  110. package/dist/commands/channel/store/thread-state.js +16 -0
  111. package/dist/commands/channel/store/thread-state.js.map +1 -0
  112. package/dist/commands/channel/store/watch.d.ts +19 -0
  113. package/dist/commands/channel/store/watch.d.ts.map +1 -0
  114. package/dist/commands/channel/store/watch.js +146 -0
  115. package/dist/commands/channel/store/watch.js.map +1 -0
  116. package/dist/commands/channel/supervisor/idle.d.ts +45 -0
  117. package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
  118. package/dist/commands/channel/supervisor/idle.js +70 -0
  119. package/dist/commands/channel/supervisor/idle.js.map +1 -0
  120. package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
  121. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
  122. package/dist/commands/channel/supervisor/inbox.js +160 -0
  123. package/dist/commands/channel/supervisor/inbox.js.map +1 -0
  124. package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
  125. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
  126. package/dist/commands/channel/supervisor/shutdown.js +146 -0
  127. package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
  128. package/dist/commands/channel/supervisor/stdout.d.ts +53 -0
  129. package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
  130. package/dist/commands/channel/supervisor/stdout.js +168 -0
  131. package/dist/commands/channel/supervisor/stdout.js.map +1 -0
  132. package/dist/commands/channel/supervisor/turns.d.ts +31 -0
  133. package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
  134. package/dist/commands/channel/supervisor/turns.js +45 -0
  135. package/dist/commands/channel/supervisor/turns.js.map +1 -0
  136. package/dist/commands/channel/supervisor/warning.d.ts +48 -0
  137. package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
  138. package/dist/commands/channel/supervisor/warning.js +77 -0
  139. package/dist/commands/channel/supervisor/warning.js.map +1 -0
  140. package/dist/commands/channel/supervisor.d.ts +75 -0
  141. package/dist/commands/channel/supervisor.d.ts.map +1 -0
  142. package/dist/commands/channel/supervisor.js +397 -0
  143. package/dist/commands/channel/supervisor.js.map +1 -0
  144. package/dist/commands/channel/text-body.d.ts +13 -0
  145. package/dist/commands/channel/text-body.d.ts.map +1 -0
  146. package/dist/commands/channel/text-body.js +47 -0
  147. package/dist/commands/channel/text-body.js.map +1 -0
  148. package/dist/commands/channel/threads.d.ts +39 -0
  149. package/dist/commands/channel/threads.d.ts.map +1 -0
  150. package/dist/commands/channel/threads.js +106 -0
  151. package/dist/commands/channel/threads.js.map +1 -0
  152. package/dist/commands/channel/title.d.ts +12 -0
  153. package/dist/commands/channel/title.d.ts.map +1 -0
  154. package/dist/commands/channel/title.js +24 -0
  155. package/dist/commands/channel/title.js.map +1 -0
  156. package/dist/commands/channel/wait.d.ts +17 -0
  157. package/dist/commands/channel/wait.d.ts.map +1 -0
  158. package/dist/commands/channel/wait.js +75 -0
  159. package/dist/commands/channel/wait.js.map +1 -0
  160. package/dist/commands/init.d.ts +71 -0
  161. package/dist/commands/init.d.ts.map +1 -0
  162. package/dist/commands/init.js +1603 -0
  163. package/dist/commands/init.js.map +1 -0
  164. package/dist/commands/mem.d.ts +30 -0
  165. package/dist/commands/mem.d.ts.map +1 -0
  166. package/dist/commands/mem.js +447 -0
  167. package/dist/commands/mem.js.map +1 -0
  168. package/dist/commands/uninstall.d.ts +36 -0
  169. package/dist/commands/uninstall.d.ts.map +1 -0
  170. package/dist/commands/uninstall.js +410 -0
  171. package/dist/commands/uninstall.js.map +1 -0
  172. package/dist/commands/update.d.ts +111 -0
  173. package/dist/commands/update.d.ts.map +1 -0
  174. package/dist/commands/update.js +2152 -0
  175. package/dist/commands/update.js.map +1 -0
  176. package/dist/commands/upgrade.d.ts +28 -0
  177. package/dist/commands/upgrade.d.ts.map +1 -0
  178. package/dist/commands/upgrade.js +84 -0
  179. package/dist/commands/upgrade.js.map +1 -0
  180. package/dist/commands/workflow.d.ts +52 -0
  181. package/dist/commands/workflow.d.ts.map +1 -0
  182. package/dist/commands/workflow.js +454 -0
  183. package/dist/commands/workflow.js.map +1 -0
  184. package/dist/configurators/antigravity.d.ts +7 -0
  185. package/dist/configurators/antigravity.d.ts.map +1 -0
  186. package/dist/configurators/antigravity.js +11 -0
  187. package/dist/configurators/antigravity.js.map +1 -0
  188. package/dist/configurators/claude.d.ts +23 -0
  189. package/dist/configurators/claude.d.ts.map +1 -0
  190. package/dist/configurators/claude.js +123 -0
  191. package/dist/configurators/claude.js.map +1 -0
  192. package/dist/configurators/codebuddy.d.ts +10 -0
  193. package/dist/configurators/codebuddy.d.ts.map +1 -0
  194. package/dist/configurators/codebuddy.js +24 -0
  195. package/dist/configurators/codebuddy.js.map +1 -0
  196. package/dist/configurators/codex.d.ts +57 -0
  197. package/dist/configurators/codex.d.ts.map +1 -0
  198. package/dist/configurators/codex.js +170 -0
  199. package/dist/configurators/codex.js.map +1 -0
  200. package/dist/configurators/copilot.d.ts +14 -0
  201. package/dist/configurators/copilot.d.ts.map +1 -0
  202. package/dist/configurators/copilot.js +46 -0
  203. package/dist/configurators/copilot.js.map +1 -0
  204. package/dist/configurators/cursor.d.ts +10 -0
  205. package/dist/configurators/cursor.d.ts.map +1 -0
  206. package/dist/configurators/cursor.js +23 -0
  207. package/dist/configurators/cursor.js.map +1 -0
  208. package/dist/configurators/devin.d.ts +8 -0
  209. package/dist/configurators/devin.d.ts.map +1 -0
  210. package/dist/configurators/devin.js +12 -0
  211. package/dist/configurators/devin.js.map +1 -0
  212. package/dist/configurators/droid.d.ts +10 -0
  213. package/dist/configurators/droid.d.ts.map +1 -0
  214. package/dist/configurators/droid.js +24 -0
  215. package/dist/configurators/droid.js.map +1 -0
  216. package/dist/configurators/dsh.d.ts +26 -0
  217. package/dist/configurators/dsh.d.ts.map +1 -0
  218. package/dist/configurators/dsh.js +76 -0
  219. package/dist/configurators/dsh.js.map +1 -0
  220. package/dist/configurators/gemini.d.ts +18 -0
  221. package/dist/configurators/gemini.d.ts.map +1 -0
  222. package/dist/configurators/gemini.js +39 -0
  223. package/dist/configurators/gemini.js.map +1 -0
  224. package/dist/configurators/grok.d.ts +17 -0
  225. package/dist/configurators/grok.d.ts.map +1 -0
  226. package/dist/configurators/grok.js +38 -0
  227. package/dist/configurators/grok.js.map +1 -0
  228. package/dist/configurators/index.d.ts +68 -0
  229. package/dist/configurators/index.d.ts.map +1 -0
  230. package/dist/configurators/index.js +191 -0
  231. package/dist/configurators/index.js.map +1 -0
  232. package/dist/configurators/kilo.d.ts +7 -0
  233. package/dist/configurators/kilo.d.ts.map +1 -0
  234. package/dist/configurators/kilo.js +11 -0
  235. package/dist/configurators/kilo.js.map +1 -0
  236. package/dist/configurators/kimi.d.ts +26 -0
  237. package/dist/configurators/kimi.d.ts.map +1 -0
  238. package/dist/configurators/kimi.js +74 -0
  239. package/dist/configurators/kimi.js.map +1 -0
  240. package/dist/configurators/kiro.d.ts +11 -0
  241. package/dist/configurators/kiro.d.ts.map +1 -0
  242. package/dist/configurators/kiro.js +30 -0
  243. package/dist/configurators/kiro.js.map +1 -0
  244. package/dist/configurators/omp.d.ts +6 -0
  245. package/dist/configurators/omp.d.ts.map +1 -0
  246. package/dist/configurators/omp.js +28 -0
  247. package/dist/configurators/omp.js.map +1 -0
  248. package/dist/configurators/opencode.d.ts +5 -0
  249. package/dist/configurators/opencode.d.ts.map +1 -0
  250. package/dist/configurators/opencode.js +84 -0
  251. package/dist/configurators/opencode.js.map +1 -0
  252. package/dist/configurators/pi.d.ts +5 -0
  253. package/dist/configurators/pi.d.ts.map +1 -0
  254. package/dist/configurators/pi.js +39 -0
  255. package/dist/configurators/pi.js.map +1 -0
  256. package/dist/configurators/qoder.d.ts +12 -0
  257. package/dist/configurators/qoder.d.ts.map +1 -0
  258. package/dist/configurators/qoder.js +30 -0
  259. package/dist/configurators/qoder.js.map +1 -0
  260. package/dist/configurators/reasonix.d.ts +17 -0
  261. package/dist/configurators/reasonix.d.ts.map +1 -0
  262. package/dist/configurators/reasonix.js +37 -0
  263. package/dist/configurators/reasonix.js.map +1 -0
  264. package/dist/configurators/shared.d.ts +187 -0
  265. package/dist/configurators/shared.d.ts.map +1 -0
  266. package/dist/configurators/shared.js +590 -0
  267. package/dist/configurators/shared.js.map +1 -0
  268. package/dist/configurators/snow.d.ts +25 -0
  269. package/dist/configurators/snow.d.ts.map +1 -0
  270. package/dist/configurators/snow.js +69 -0
  271. package/dist/configurators/snow.js.map +1 -0
  272. package/dist/configurators/trae.d.ts +16 -0
  273. package/dist/configurators/trae.d.ts.map +1 -0
  274. package/dist/configurators/trae.js +34 -0
  275. package/dist/configurators/trae.js.map +1 -0
  276. package/dist/configurators/workflow.d.ts +51 -0
  277. package/dist/configurators/workflow.d.ts.map +1 -0
  278. package/dist/configurators/workflow.js +210 -0
  279. package/dist/configurators/workflow.js.map +1 -0
  280. package/dist/configurators/zcode.d.ts +23 -0
  281. package/dist/configurators/zcode.d.ts.map +1 -0
  282. package/dist/configurators/zcode.js +63 -0
  283. package/dist/configurators/zcode.js.map +1 -0
  284. package/dist/constants/paths.d.ts +74 -0
  285. package/dist/constants/paths.d.ts.map +1 -0
  286. package/dist/constants/paths.js +83 -0
  287. package/dist/constants/paths.js.map +1 -0
  288. package/dist/constants/version.d.ts +9 -0
  289. package/dist/constants/version.d.ts.map +1 -0
  290. package/dist/constants/version.js +15 -0
  291. package/dist/constants/version.js.map +1 -0
  292. package/dist/index.d.ts +9 -0
  293. package/dist/index.d.ts.map +1 -0
  294. package/dist/index.js +9 -0
  295. package/dist/index.js.map +1 -0
  296. package/dist/migrations/index.d.ts +62 -0
  297. package/dist/migrations/index.d.ts.map +1 -0
  298. package/dist/migrations/index.js +187 -0
  299. package/dist/migrations/index.js.map +1 -0
  300. package/dist/migrations/manifests/0.1.9.json +30 -0
  301. package/dist/migrations/manifests/0.2.0.json +49 -0
  302. package/dist/migrations/manifests/0.2.12.json +9 -0
  303. package/dist/migrations/manifests/0.2.13.json +9 -0
  304. package/dist/migrations/manifests/0.2.14.json +175 -0
  305. package/dist/migrations/manifests/0.2.15.json +33 -0
  306. package/dist/migrations/manifests/0.3.0-beta.0.json +297 -0
  307. package/dist/migrations/manifests/0.3.0-beta.1.json +9 -0
  308. package/dist/migrations/manifests/0.3.0-beta.10.json +9 -0
  309. package/dist/migrations/manifests/0.3.0-beta.11.json +9 -0
  310. package/dist/migrations/manifests/0.3.0-beta.12.json +9 -0
  311. package/dist/migrations/manifests/0.3.0-beta.13.json +9 -0
  312. package/dist/migrations/manifests/0.3.0-beta.14.json +9 -0
  313. package/dist/migrations/manifests/0.3.0-beta.15.json +9 -0
  314. package/dist/migrations/manifests/0.3.0-beta.16.json +9 -0
  315. package/dist/migrations/manifests/0.3.0-beta.2.json +9 -0
  316. package/dist/migrations/manifests/0.3.0-beta.3.json +9 -0
  317. package/dist/migrations/manifests/0.3.0-beta.4.json +9 -0
  318. package/dist/migrations/manifests/0.3.0-beta.5.json +9 -0
  319. package/dist/migrations/manifests/0.3.0-beta.6.json +9 -0
  320. package/dist/migrations/manifests/0.3.0-beta.7.json +11 -0
  321. package/dist/migrations/manifests/0.3.0-beta.8.json +9 -0
  322. package/dist/migrations/manifests/0.3.0-beta.9.json +9 -0
  323. package/dist/migrations/manifests/0.3.0-rc.0.json +9 -0
  324. package/dist/migrations/manifests/0.3.0-rc.1.json +9 -0
  325. package/dist/migrations/manifests/0.3.0-rc.2.json +9 -0
  326. package/dist/migrations/manifests/0.3.0-rc.3.json +9 -0
  327. package/dist/migrations/manifests/0.3.0-rc.4.json +9 -0
  328. package/dist/migrations/manifests/0.3.0-rc.5.json +9 -0
  329. package/dist/migrations/manifests/0.3.0-rc.6.json +9 -0
  330. package/dist/migrations/manifests/0.3.0.json +11 -0
  331. package/dist/migrations/manifests/0.3.1.json +9 -0
  332. package/dist/migrations/manifests/0.3.10.json +9 -0
  333. package/dist/migrations/manifests/0.3.2.json +9 -0
  334. package/dist/migrations/manifests/0.3.3.json +9 -0
  335. package/dist/migrations/manifests/0.3.4.json +21 -0
  336. package/dist/migrations/manifests/0.3.5.json +9 -0
  337. package/dist/migrations/manifests/0.3.6.json +9 -0
  338. package/dist/migrations/manifests/0.3.7.json +9 -0
  339. package/dist/migrations/manifests/0.3.8.json +9 -0
  340. package/dist/migrations/manifests/0.3.9.json +9 -0
  341. package/dist/migrations/manifests/0.4.0-beta.1.json +228 -0
  342. package/dist/migrations/manifests/0.4.0-beta.10.json +9 -0
  343. package/dist/migrations/manifests/0.4.0-beta.2.json +9 -0
  344. package/dist/migrations/manifests/0.4.0-beta.3.json +9 -0
  345. package/dist/migrations/manifests/0.4.0-beta.4.json +9 -0
  346. package/dist/migrations/manifests/0.4.0-beta.5.json +9 -0
  347. package/dist/migrations/manifests/0.4.0-beta.6.json +9 -0
  348. package/dist/migrations/manifests/0.4.0-beta.7.json +9 -0
  349. package/dist/migrations/manifests/0.4.0-beta.8.json +34 -0
  350. package/dist/migrations/manifests/0.4.0-beta.9.json +9 -0
  351. package/dist/migrations/manifests/0.4.0-rc.0.json +9 -0
  352. package/dist/migrations/manifests/0.4.0-rc.1.json +9 -0
  353. package/dist/migrations/manifests/0.4.0.json +9 -0
  354. package/dist/migrations/manifests/0.5.0-beta.0.json +1646 -0
  355. package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
  356. package/dist/migrations/manifests/0.5.0-beta.10.json +9 -0
  357. package/dist/migrations/manifests/0.5.0-beta.11.json +9 -0
  358. package/dist/migrations/manifests/0.5.0-beta.12.json +9 -0
  359. package/dist/migrations/manifests/0.5.0-beta.13.json +9 -0
  360. package/dist/migrations/manifests/0.5.0-beta.14.json +9 -0
  361. package/dist/migrations/manifests/0.5.0-beta.15.json +116 -0
  362. package/dist/migrations/manifests/0.5.0-beta.16.json +9 -0
  363. package/dist/migrations/manifests/0.5.0-beta.17.json +9 -0
  364. package/dist/migrations/manifests/0.5.0-beta.18.json +9 -0
  365. package/dist/migrations/manifests/0.5.0-beta.19.json +9 -0
  366. package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
  367. package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
  368. package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
  369. package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
  370. package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
  371. package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
  372. package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
  373. package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
  374. package/dist/migrations/manifests/0.5.0-rc.0.json +9 -0
  375. package/dist/migrations/manifests/0.5.0-rc.1.json +9 -0
  376. package/dist/migrations/manifests/0.5.0-rc.2.json +9 -0
  377. package/dist/migrations/manifests/0.5.0-rc.3.json +9 -0
  378. package/dist/migrations/manifests/0.5.0-rc.4.json +9 -0
  379. package/dist/migrations/manifests/0.5.0-rc.5.json +9 -0
  380. package/dist/migrations/manifests/0.5.0-rc.6.json +9 -0
  381. package/dist/migrations/manifests/0.5.0-rc.7.json +9 -0
  382. package/dist/migrations/manifests/0.5.0.json +9 -0
  383. package/dist/migrations/manifests/0.5.1.json +9 -0
  384. package/dist/migrations/manifests/0.5.10.json +9 -0
  385. package/dist/migrations/manifests/0.5.11.json +16 -0
  386. package/dist/migrations/manifests/0.5.12.json +9 -0
  387. package/dist/migrations/manifests/0.5.13.json +9 -0
  388. package/dist/migrations/manifests/0.5.14.json +9 -0
  389. package/dist/migrations/manifests/0.5.15.json +9 -0
  390. package/dist/migrations/manifests/0.5.16.json +9 -0
  391. package/dist/migrations/manifests/0.5.17.json +9 -0
  392. package/dist/migrations/manifests/0.5.18.json +9 -0
  393. package/dist/migrations/manifests/0.5.19.json +9 -0
  394. package/dist/migrations/manifests/0.5.2.json +9 -0
  395. package/dist/migrations/manifests/0.5.3.json +9 -0
  396. package/dist/migrations/manifests/0.5.4.json +9 -0
  397. package/dist/migrations/manifests/0.5.5.json +9 -0
  398. package/dist/migrations/manifests/0.5.6.json +9 -0
  399. package/dist/migrations/manifests/0.5.7.json +16 -0
  400. package/dist/migrations/manifests/0.5.8.json +9 -0
  401. package/dist/migrations/manifests/0.5.9.json +9 -0
  402. package/dist/migrations/manifests/0.6.0-beta.0.json +16 -0
  403. package/dist/migrations/manifests/0.6.0-beta.1.json +9 -0
  404. package/dist/migrations/manifests/0.6.0-beta.10.json +9 -0
  405. package/dist/migrations/manifests/0.6.0-beta.11.json +9 -0
  406. package/dist/migrations/manifests/0.6.0-beta.12.json +9 -0
  407. package/dist/migrations/manifests/0.6.0-beta.13.json +9 -0
  408. package/dist/migrations/manifests/0.6.0-beta.14.json +9 -0
  409. package/dist/migrations/manifests/0.6.0-beta.15.json +9 -0
  410. package/dist/migrations/manifests/0.6.0-beta.16.json +9 -0
  411. package/dist/migrations/manifests/0.6.0-beta.17.json +9 -0
  412. package/dist/migrations/manifests/0.6.0-beta.18.json +16 -0
  413. package/dist/migrations/manifests/0.6.0-beta.19.json +9 -0
  414. package/dist/migrations/manifests/0.6.0-beta.2.json +9 -0
  415. package/dist/migrations/manifests/0.6.0-beta.20.json +9 -0
  416. package/dist/migrations/manifests/0.6.0-beta.21.json +9 -0
  417. package/dist/migrations/manifests/0.6.0-beta.22.json +9 -0
  418. package/dist/migrations/manifests/0.6.0-beta.23.json +88 -0
  419. package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
  420. package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
  421. package/dist/migrations/manifests/0.6.0-beta.5.json +9 -0
  422. package/dist/migrations/manifests/0.6.0-beta.6.json +16 -0
  423. package/dist/migrations/manifests/0.6.0-beta.7.json +9 -0
  424. package/dist/migrations/manifests/0.6.0-beta.8.json +9 -0
  425. package/dist/migrations/manifests/0.6.0-beta.9.json +9 -0
  426. package/dist/migrations/manifests/0.6.0-rc.0.json +9 -0
  427. package/dist/migrations/manifests/0.6.0.json +1 -0
  428. package/dist/migrations/manifests/0.6.1.json +9 -0
  429. package/dist/migrations/manifests/0.6.10.json +9 -0
  430. package/dist/migrations/manifests/0.6.11.json +9 -0
  431. package/dist/migrations/manifests/0.6.12.json +9 -0
  432. package/dist/migrations/manifests/0.6.13.json +9 -0
  433. package/dist/migrations/manifests/0.6.14.json +9 -0
  434. package/dist/migrations/manifests/0.6.2.json +9 -0
  435. package/dist/migrations/manifests/0.6.3.json +24 -0
  436. package/dist/migrations/manifests/0.6.4.json +9 -0
  437. package/dist/migrations/manifests/0.6.5.json +9 -0
  438. package/dist/migrations/manifests/0.6.6.json +17 -0
  439. package/dist/migrations/manifests/0.6.7.json +9 -0
  440. package/dist/migrations/manifests/0.6.8.json +17 -0
  441. package/dist/migrations/manifests/0.6.9.json +9 -0
  442. package/dist/migrations/manifests/0.7.0-beta.0.json +9 -0
  443. package/dist/migrations/manifests/0.7.0-beta.1.json +9 -0
  444. package/dist/migrations/manifests/0.7.0-beta.2.json +9 -0
  445. package/dist/migrations/manifests/0.7.0-beta.3.json +9 -0
  446. package/dist/templates/claude/agents/trellis-check.md +115 -0
  447. package/dist/templates/claude/agents/trellis-implement.md +115 -0
  448. package/dist/templates/claude/agents/trellis-research.md +137 -0
  449. package/dist/templates/claude/hooks/statusline.py +332 -0
  450. package/dist/templates/claude/index.d.ts +31 -0
  451. package/dist/templates/claude/index.d.ts.map +1 -0
  452. package/dist/templates/claude/index.js +57 -0
  453. package/dist/templates/claude/index.js.map +1 -0
  454. package/dist/templates/claude/settings.json +95 -0
  455. package/dist/templates/codebuddy/agents/trellis-check.md +115 -0
  456. package/dist/templates/codebuddy/agents/trellis-implement.md +115 -0
  457. package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
  458. package/dist/templates/codebuddy/index.d.ts +15 -0
  459. package/dist/templates/codebuddy/index.d.ts.map +1 -0
  460. package/dist/templates/codebuddy/index.js +15 -0
  461. package/dist/templates/codebuddy/index.js.map +1 -0
  462. package/dist/templates/codebuddy/settings.json +69 -0
  463. package/dist/templates/codex/agents/trellis-check.toml +56 -0
  464. package/dist/templates/codex/agents/trellis-implement.toml +37 -0
  465. package/dist/templates/codex/agents/trellis-research.toml +78 -0
  466. package/dist/templates/codex/config.toml +39 -0
  467. package/dist/templates/codex/hooks/session-start.py +568 -0
  468. package/dist/templates/codex/hooks.json +52 -0
  469. package/dist/templates/codex/index.d.ts +35 -0
  470. package/dist/templates/codex/index.d.ts.map +1 -0
  471. package/dist/templates/codex/index.js +67 -0
  472. package/dist/templates/codex/index.js.map +1 -0
  473. package/dist/templates/common/bundled-skills/trellis-channel/SKILL.md +67 -0
  474. package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +480 -0
  475. package/dist/templates/common/bundled-skills/trellis-channel/references/forum.md +233 -0
  476. package/dist/templates/common/bundled-skills/trellis-channel/references/progress-debugging.md +226 -0
  477. package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +276 -0
  478. package/dist/templates/common/bundled-skills/trellis-channel/references/workflows.md +128 -0
  479. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +85 -0
  480. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
  481. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +56 -0
  482. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +84 -0
  483. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
  484. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +123 -0
  485. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
  486. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +90 -0
  487. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +65 -0
  488. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
  489. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/bundled-skills.md +159 -0
  490. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
  491. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
  492. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-channel.md +69 -0
  493. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
  494. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
  495. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +130 -0
  496. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
  497. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
  498. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +84 -0
  499. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +73 -0
  500. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +59 -0
  501. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +113 -0
  502. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +87 -0
  503. package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +81 -0
  504. package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +65 -0
  505. package/dist/templates/common/bundled-skills/trellis-session-insight/references/triggering-patterns.md +93 -0
  506. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/SKILL.md +41 -0
  507. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/mcp-setup.md +90 -0
  508. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/repository-analysis.md +59 -0
  509. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-task-planning.md +61 -0
  510. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-writing.md +70 -0
  511. package/dist/templates/common/commands/continue.md +56 -0
  512. package/dist/templates/common/commands/finish-work.md +66 -0
  513. package/dist/templates/common/commands/start.md +59 -0
  514. package/dist/templates/common/index.d.ts +48 -0
  515. package/dist/templates/common/index.d.ts.map +1 -0
  516. package/dist/templates/common/index.js +104 -0
  517. package/dist/templates/common/index.js.map +1 -0
  518. package/dist/templates/common/skills/before-dev.md +46 -0
  519. package/dist/templates/common/skills/brainstorm.md +212 -0
  520. package/dist/templates/common/skills/break-loop.md +184 -0
  521. package/dist/templates/common/skills/check.md +106 -0
  522. package/dist/templates/common/skills/tdd.md +142 -0
  523. package/dist/templates/common/skills/update-spec.md +351 -0
  524. package/dist/templates/copilot/copilot-instructions.md +11 -0
  525. package/dist/templates/copilot/hooks/session-start.py +564 -0
  526. package/dist/templates/copilot/hooks.json +19 -0
  527. package/dist/templates/copilot/index.d.ts +28 -0
  528. package/dist/templates/copilot/index.d.ts.map +1 -0
  529. package/dist/templates/copilot/index.js +61 -0
  530. package/dist/templates/copilot/index.js.map +1 -0
  531. package/dist/templates/copilot/prompts/before-dev.prompt.md +39 -0
  532. package/dist/templates/copilot/prompts/brainstorm.prompt.md +173 -0
  533. package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
  534. package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +170 -0
  535. package/dist/templates/copilot/prompts/check.prompt.md +110 -0
  536. package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
  537. package/dist/templates/copilot/prompts/finish-work.prompt.md +99 -0
  538. package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
  539. package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
  540. package/dist/templates/copilot/prompts/parallel.prompt.md +204 -0
  541. package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
  542. package/dist/templates/copilot/prompts/start.prompt.md +63 -0
  543. package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
  544. package/dist/templates/cursor/agents/trellis-check.md +114 -0
  545. package/dist/templates/cursor/agents/trellis-implement.md +114 -0
  546. package/dist/templates/cursor/agents/trellis-research.md +136 -0
  547. package/dist/templates/cursor/hooks.json +24 -0
  548. package/dist/templates/cursor/index.d.ts +13 -0
  549. package/dist/templates/cursor/index.d.ts.map +1 -0
  550. package/dist/templates/cursor/index.js +13 -0
  551. package/dist/templates/cursor/index.js.map +1 -0
  552. package/dist/templates/droid/droids/trellis-check.md +107 -0
  553. package/dist/templates/droid/droids/trellis-implement.md +107 -0
  554. package/dist/templates/droid/droids/trellis-research.md +137 -0
  555. package/dist/templates/droid/index.d.ts +15 -0
  556. package/dist/templates/droid/index.d.ts.map +1 -0
  557. package/dist/templates/droid/index.js +15 -0
  558. package/dist/templates/droid/index.js.map +1 -0
  559. package/dist/templates/droid/settings.json +69 -0
  560. package/dist/templates/dsh/DSH.md +80 -0
  561. package/dist/templates/dsh/agents/trellis-check.md +99 -0
  562. package/dist/templates/dsh/agents/trellis-implement.md +106 -0
  563. package/dist/templates/dsh/agents/trellis-research.md +134 -0
  564. package/dist/templates/dsh/index.d.ts +22 -0
  565. package/dist/templates/dsh/index.d.ts.map +1 -0
  566. package/dist/templates/dsh/index.js +27 -0
  567. package/dist/templates/dsh/index.js.map +1 -0
  568. package/dist/templates/extract.d.ts +40 -0
  569. package/dist/templates/extract.d.ts.map +1 -0
  570. package/dist/templates/extract.js +106 -0
  571. package/dist/templates/extract.js.map +1 -0
  572. package/dist/templates/gemini/agents/trellis-check.md +107 -0
  573. package/dist/templates/gemini/agents/trellis-implement.md +107 -0
  574. package/dist/templates/gemini/agents/trellis-research.md +136 -0
  575. package/dist/templates/gemini/index.d.ts +13 -0
  576. package/dist/templates/gemini/index.d.ts.map +1 -0
  577. package/dist/templates/gemini/index.js +13 -0
  578. package/dist/templates/gemini/index.js.map +1 -0
  579. package/dist/templates/gemini/settings.json +40 -0
  580. package/dist/templates/grok/agents/trellis-check.md +106 -0
  581. package/dist/templates/grok/agents/trellis-implement.md +121 -0
  582. package/dist/templates/grok/agents/trellis-research.md +146 -0
  583. package/dist/templates/grok/index.d.ts +16 -0
  584. package/dist/templates/grok/index.d.ts.map +1 -0
  585. package/dist/templates/grok/index.js +19 -0
  586. package/dist/templates/grok/index.js.map +1 -0
  587. package/dist/templates/kimi/agents/trellis-check.md +104 -0
  588. package/dist/templates/kimi/agents/trellis-implement.md +120 -0
  589. package/dist/templates/kimi/agents/trellis-research.md +144 -0
  590. package/dist/templates/kimi/index.d.ts +20 -0
  591. package/dist/templates/kimi/index.d.ts.map +1 -0
  592. package/dist/templates/kimi/index.js +23 -0
  593. package/dist/templates/kimi/index.js.map +1 -0
  594. package/dist/templates/kiro/agents/trellis-check.json +26 -0
  595. package/dist/templates/kiro/agents/trellis-implement.json +26 -0
  596. package/dist/templates/kiro/agents/trellis-research.json +30 -0
  597. package/dist/templates/kiro/agents/trellis.json +34 -0
  598. package/dist/templates/kiro/hooks/trellis-workflow-state.kiro.hook +14 -0
  599. package/dist/templates/kiro/index.d.ts +32 -0
  600. package/dist/templates/kiro/index.d.ts.map +1 -0
  601. package/dist/templates/kiro/index.js +28 -0
  602. package/dist/templates/kiro/index.js.map +1 -0
  603. package/dist/templates/markdown/agents.md +21 -0
  604. package/dist/templates/markdown/gitignore.txt +15 -0
  605. package/dist/templates/markdown/index.d.ts +27 -0
  606. package/dist/templates/markdown/index.d.ts.map +1 -0
  607. package/dist/templates/markdown/index.js +52 -0
  608. package/dist/templates/markdown/index.js.map +1 -0
  609. package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
  610. package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
  611. package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
  612. package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
  613. package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
  614. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
  615. package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
  616. package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
  617. package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
  618. package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
  619. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
  620. package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
  621. package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
  622. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
  623. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +327 -0
  624. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +633 -0
  625. package/dist/templates/markdown/spec/guides/index.md.txt +97 -0
  626. package/dist/templates/markdown/workspace-index.md +125 -0
  627. package/dist/templates/markdown/worktree.yaml.txt +58 -0
  628. package/dist/templates/omp/agents/trellis-check.md +41 -0
  629. package/dist/templates/omp/agents/trellis-implement.md +55 -0
  630. package/dist/templates/omp/agents/trellis-research.md +30 -0
  631. package/dist/templates/omp/extensions/trellis/index.ts.txt +592 -0
  632. package/dist/templates/omp/index.d.ts +4 -0
  633. package/dist/templates/omp/index.d.ts.map +1 -0
  634. package/dist/templates/omp/index.js +9 -0
  635. package/dist/templates/omp/index.js.map +1 -0
  636. package/dist/templates/opencode/agents/trellis-check.md +122 -0
  637. package/dist/templates/opencode/agents/trellis-implement.md +123 -0
  638. package/dist/templates/opencode/agents/trellis-research.md +145 -0
  639. package/dist/templates/opencode/lib/context-visibility.js +86 -0
  640. package/dist/templates/opencode/lib/session-utils.js +526 -0
  641. package/dist/templates/opencode/lib/trellis-context.js +627 -0
  642. package/dist/templates/opencode/package.json +5 -0
  643. package/dist/templates/opencode/plugins/inject-spec-context.js +121 -0
  644. package/dist/templates/opencode/plugins/inject-subagent-context.js +569 -0
  645. package/dist/templates/opencode/plugins/inject-workflow-state.js +340 -0
  646. package/dist/templates/opencode/plugins/session-start.js +74 -0
  647. package/dist/templates/pi/agents/trellis-check.md +37 -0
  648. package/dist/templates/pi/agents/trellis-implement.md +52 -0
  649. package/dist/templates/pi/agents/trellis-research.md +25 -0
  650. package/dist/templates/pi/extensions/trellis/index.ts.txt +2033 -0
  651. package/dist/templates/pi/index.d.ts +5 -0
  652. package/dist/templates/pi/index.d.ts.map +1 -0
  653. package/dist/templates/pi/index.js +12 -0
  654. package/dist/templates/pi/index.js.map +1 -0
  655. package/dist/templates/pi/settings.json +9 -0
  656. package/dist/templates/qoder/agents/trellis-check.md +108 -0
  657. package/dist/templates/qoder/agents/trellis-implement.md +108 -0
  658. package/dist/templates/qoder/agents/trellis-research.md +137 -0
  659. package/dist/templates/qoder/index.d.ts +15 -0
  660. package/dist/templates/qoder/index.d.ts.map +1 -0
  661. package/dist/templates/qoder/index.js +15 -0
  662. package/dist/templates/qoder/index.js.map +1 -0
  663. package/dist/templates/qoder/settings.json +59 -0
  664. package/dist/templates/reasonix/agents/trellis-check.md +36 -0
  665. package/dist/templates/reasonix/agents/trellis-implement.md +51 -0
  666. package/dist/templates/reasonix/index.d.ts +13 -0
  667. package/dist/templates/reasonix/index.d.ts.map +1 -0
  668. package/dist/templates/reasonix/index.js +16 -0
  669. package/dist/templates/reasonix/index.js.map +1 -0
  670. package/dist/templates/shared-hooks/index.d.ts +83 -0
  671. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  672. package/dist/templates/shared-hooks/index.js +152 -0
  673. package/dist/templates/shared-hooks/index.js.map +1 -0
  674. package/dist/templates/shared-hooks/inject-shell-session-context.py +292 -0
  675. package/dist/templates/shared-hooks/inject-spec-context.py +844 -0
  676. package/dist/templates/shared-hooks/inject-subagent-context.py +1175 -0
  677. package/dist/templates/shared-hooks/inject-workflow-state.py +501 -0
  678. package/dist/templates/shared-hooks/session-start.py +969 -0
  679. package/dist/templates/snow/SNOW.md +86 -0
  680. package/dist/templates/snow/agents/trellis-check.md +136 -0
  681. package/dist/templates/snow/agents/trellis-implement.md +158 -0
  682. package/dist/templates/snow/agents/trellis-research.md +114 -0
  683. package/dist/templates/snow/hooks/beforeSubAgentStart.json +15 -0
  684. package/dist/templates/snow/hooks/onSessionStart.json +15 -0
  685. package/dist/templates/snow/hooks/onUserMessage.json +15 -0
  686. package/dist/templates/snow/hooks/write-trellis-context.py +644 -0
  687. package/dist/templates/snow/index.d.ts +26 -0
  688. package/dist/templates/snow/index.d.ts.map +1 -0
  689. package/dist/templates/snow/index.js +36 -0
  690. package/dist/templates/snow/index.js.map +1 -0
  691. package/dist/templates/template-utils.d.ts +26 -0
  692. package/dist/templates/template-utils.d.ts.map +1 -0
  693. package/dist/templates/template-utils.js +64 -0
  694. package/dist/templates/template-utils.js.map +1 -0
  695. package/dist/templates/trae/agents/trellis-check.md +108 -0
  696. package/dist/templates/trae/agents/trellis-implement.md +108 -0
  697. package/dist/templates/trae/agents/trellis-research.md +137 -0
  698. package/dist/templates/trae/hooks.json +39 -0
  699. package/dist/templates/trae/index.d.ts +15 -0
  700. package/dist/templates/trae/index.d.ts.map +1 -0
  701. package/dist/templates/trae/index.js +15 -0
  702. package/dist/templates/trae/index.js.map +1 -0
  703. package/dist/templates/trellis/agents/check.md +70 -0
  704. package/dist/templates/trellis/agents/implement.md +81 -0
  705. package/dist/templates/trellis/config.yaml +205 -0
  706. package/dist/templates/trellis/gitattributes.txt +9 -0
  707. package/dist/templates/trellis/gitignore.txt +32 -0
  708. package/dist/templates/trellis/index.d.ts +70 -0
  709. package/dist/templates/trellis/index.d.ts.map +1 -0
  710. package/dist/templates/trellis/index.js +127 -0
  711. package/dist/templates/trellis/index.js.map +1 -0
  712. package/dist/templates/trellis/scripts/__init__.py +5 -0
  713. package/dist/templates/trellis/scripts/add_session.py +681 -0
  714. package/dist/templates/trellis/scripts/common/__init__.py +92 -0
  715. package/dist/templates/trellis/scripts/common/active_task.py +787 -0
  716. package/dist/templates/trellis/scripts/common/cli_adapter.py +982 -0
  717. package/dist/templates/trellis/scripts/common/config.py +587 -0
  718. package/dist/templates/trellis/scripts/common/developer.py +190 -0
  719. package/dist/templates/trellis/scripts/common/git.py +74 -0
  720. package/dist/templates/trellis/scripts/common/git_context.py +138 -0
  721. package/dist/templates/trellis/scripts/common/io.py +61 -0
  722. package/dist/templates/trellis/scripts/common/log.py +45 -0
  723. package/dist/templates/trellis/scripts/common/packages_context.py +238 -0
  724. package/dist/templates/trellis/scripts/common/paths.py +508 -0
  725. package/dist/templates/trellis/scripts/common/safe_commit.py +315 -0
  726. package/dist/templates/trellis/scripts/common/session_context.py +892 -0
  727. package/dist/templates/trellis/scripts/common/spec_inject.py +439 -0
  728. package/dist/templates/trellis/scripts/common/spec_match.py +395 -0
  729. package/dist/templates/trellis/scripts/common/task_context.py +372 -0
  730. package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
  731. package/dist/templates/trellis/scripts/common/task_store.py +1016 -0
  732. package/dist/templates/trellis/scripts/common/task_utils.py +309 -0
  733. package/dist/templates/trellis/scripts/common/tasks.py +112 -0
  734. package/dist/templates/trellis/scripts/common/trellis_config.py +132 -0
  735. package/dist/templates/trellis/scripts/common/types.py +110 -0
  736. package/dist/templates/trellis/scripts/common/workflow_phase.py +243 -0
  737. package/dist/templates/trellis/scripts/common/workflow_selection.py +177 -0
  738. package/dist/templates/trellis/scripts/get_context.py +16 -0
  739. package/dist/templates/trellis/scripts/get_developer.py +26 -0
  740. package/dist/templates/trellis/scripts/hooks/linear_sync.py +243 -0
  741. package/dist/templates/trellis/scripts/init_developer.py +51 -0
  742. package/dist/templates/trellis/scripts/task.py +694 -0
  743. package/dist/templates/trellis/tasks/.gitkeep +0 -0
  744. package/dist/templates/trellis/workflow.md +777 -0
  745. package/dist/templates/zcode/agents/trellis-check.md +110 -0
  746. package/dist/templates/zcode/agents/trellis-implement.md +116 -0
  747. package/dist/templates/zcode/agents/trellis-research.md +133 -0
  748. package/dist/templates/zcode/config.json +52 -0
  749. package/dist/templates/zcode/index.d.ts +25 -0
  750. package/dist/templates/zcode/index.d.ts.map +1 -0
  751. package/dist/templates/zcode/index.js +29 -0
  752. package/dist/templates/zcode/index.js.map +1 -0
  753. package/dist/types/ai-tools.d.ts +95 -0
  754. package/dist/types/ai-tools.d.ts.map +1 -0
  755. package/dist/types/ai-tools.js +509 -0
  756. package/dist/types/ai-tools.js.map +1 -0
  757. package/dist/types/migration.d.ts +125 -0
  758. package/dist/types/migration.d.ts.map +1 -0
  759. package/dist/types/migration.js +8 -0
  760. package/dist/types/migration.js.map +1 -0
  761. package/dist/utils/agent-refs.d.ts +31 -0
  762. package/dist/utils/agent-refs.d.ts.map +1 -0
  763. package/dist/utils/agent-refs.js +63 -0
  764. package/dist/utils/agent-refs.js.map +1 -0
  765. package/dist/utils/atomic-write.d.ts +12 -0
  766. package/dist/utils/atomic-write.d.ts.map +1 -0
  767. package/dist/utils/atomic-write.js +30 -0
  768. package/dist/utils/atomic-write.js.map +1 -0
  769. package/dist/utils/compare-versions.d.ts +12 -0
  770. package/dist/utils/compare-versions.d.ts.map +1 -0
  771. package/dist/utils/compare-versions.js +86 -0
  772. package/dist/utils/compare-versions.js.map +1 -0
  773. package/dist/utils/cwd-guard.d.ts +38 -0
  774. package/dist/utils/cwd-guard.d.ts.map +1 -0
  775. package/dist/utils/cwd-guard.js +62 -0
  776. package/dist/utils/cwd-guard.js.map +1 -0
  777. package/dist/utils/file-writer.d.ts +36 -0
  778. package/dist/utils/file-writer.d.ts.map +1 -0
  779. package/dist/utils/file-writer.js +204 -0
  780. package/dist/utils/file-writer.js.map +1 -0
  781. package/dist/utils/manifest-prune.d.ts +61 -0
  782. package/dist/utils/manifest-prune.d.ts.map +1 -0
  783. package/dist/utils/manifest-prune.js +136 -0
  784. package/dist/utils/manifest-prune.js.map +1 -0
  785. package/dist/utils/posix.d.ts +13 -0
  786. package/dist/utils/posix.d.ts.map +1 -0
  787. package/dist/utils/posix.js +15 -0
  788. package/dist/utils/posix.js.map +1 -0
  789. package/dist/utils/project-detector.d.ts +46 -0
  790. package/dist/utils/project-detector.d.ts.map +1 -0
  791. package/dist/utils/project-detector.js +666 -0
  792. package/dist/utils/project-detector.js.map +1 -0
  793. package/dist/utils/proxy.d.ts +25 -0
  794. package/dist/utils/proxy.d.ts.map +1 -0
  795. package/dist/utils/proxy.js +60 -0
  796. package/dist/utils/proxy.js.map +1 -0
  797. package/dist/utils/registry-config.d.ts +7 -0
  798. package/dist/utils/registry-config.d.ts.map +1 -0
  799. package/dist/utils/registry-config.js +172 -0
  800. package/dist/utils/registry-config.js.map +1 -0
  801. package/dist/utils/task-json.d.ts +13 -0
  802. package/dist/utils/task-json.d.ts.map +1 -0
  803. package/dist/utils/task-json.js +12 -0
  804. package/dist/utils/task-json.js.map +1 -0
  805. package/dist/utils/template-fetcher.d.ts +161 -0
  806. package/dist/utils/template-fetcher.d.ts.map +1 -0
  807. package/dist/utils/template-fetcher.js +994 -0
  808. package/dist/utils/template-fetcher.js.map +1 -0
  809. package/dist/utils/template-hash.d.ts +123 -0
  810. package/dist/utils/template-hash.d.ts.map +1 -0
  811. package/dist/utils/template-hash.js +335 -0
  812. package/dist/utils/template-hash.js.map +1 -0
  813. package/dist/utils/uninstall-scrubbers.d.ts +67 -0
  814. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
  815. package/dist/utils/uninstall-scrubbers.js +361 -0
  816. package/dist/utils/uninstall-scrubbers.js.map +1 -0
  817. package/dist/utils/workflow-resolver.d.ts +86 -0
  818. package/dist/utils/workflow-resolver.d.ts.map +1 -0
  819. package/dist/utils/workflow-resolver.js +265 -0
  820. package/dist/utils/workflow-resolver.js.map +1 -0
  821. package/package.json +89 -0
@@ -0,0 +1,777 @@
1
+ # Development Workflow
2
+
3
+ ---
4
+
5
+ ## Core Principles
6
+
7
+ 1. **Plan before code** — figure out what to do before you start
8
+ 2. **Specs injected, not remembered** — guidelines are injected via hook/skill, not recalled from memory
9
+ 3. **Persist everything** — research, decisions, and lessons all go to files; conversations get compacted, files don't
10
+ 4. **Incremental development** — one task at a time
11
+ 5. **Capture learnings** — after each task, review and write new knowledge back to spec
12
+
13
+ ---
14
+
15
+ ## Trellis System
16
+
17
+ ### Developer Identity
18
+
19
+ On first use, initialize your identity:
20
+
21
+ ```bash
22
+ python3 ./.trellis/scripts/init_developer.py <your-name>
23
+ ```
24
+
25
+ Creates `.trellis/.developer` (gitignored) + `.trellis/workspace/<your-name>/`.
26
+
27
+ ### Spec System
28
+
29
+ `.trellis/spec/` holds coding guidelines organized by package and layer.
30
+
31
+ - `.trellis/spec/<package>/<layer>/index.md` — entry point with **Pre-Development Checklist** + **Quality Check**. Actual guidelines live in the `.md` files it points to.
32
+ - `.trellis/spec/guides/index.md` — cross-package thinking guides.
33
+
34
+ ```bash
35
+ python3 ./.trellis/scripts/get_context.py --mode packages # list packages / layers
36
+ ```
37
+
38
+ **When to update spec**: new pattern/convention found · bug-fix prevention to codify · new technical decision.
39
+
40
+ ### Task System
41
+
42
+ Every task has its own directory under `.trellis/tasks/{MM-DD-name}/` holding `task.json`, `prd.md`, optional `design.md`, optional `implement.md`, optional `research/`, and context manifests (`implement.jsonl`, `check.jsonl`) for sub-agent-capable platforms.
43
+
44
+ ```bash
45
+ # Task lifecycle
46
+ python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>] [--parent <dir>]
47
+ python3 ./.trellis/scripts/task.py start <name> # set active task (session-scoped when available)
48
+ python3 ./.trellis/scripts/task.py current --source # show active task and source
49
+ python3 ./.trellis/scripts/task.py finish # clear active task (triggers after_finish hooks)
50
+ python3 ./.trellis/scripts/task.py archive <name> # move to archive/{year-month}/
51
+ python3 ./.trellis/scripts/task.py list [--mine] [--status <s>]
52
+ python3 ./.trellis/scripts/task.py list-archive
53
+
54
+ # Code-spec context (injected into implement/check agents via JSONL).
55
+ # `implement.jsonl` / `check.jsonl` are seeded on `task create` for sub-agent-capable
56
+ # platforms; the AI curates real spec + research entries during planning when needed.
57
+ python3 ./.trellis/scripts/task.py add-context <name> <action> <file> <reason>
58
+ python3 ./.trellis/scripts/task.py list-context <name> [action]
59
+ python3 ./.trellis/scripts/task.py validate <name>
60
+
61
+ # Task metadata
62
+ python3 ./.trellis/scripts/task.py set-branch <name> <branch>
63
+ python3 ./.trellis/scripts/task.py set-base-branch <name> <branch> # PR target
64
+ python3 ./.trellis/scripts/task.py set-scope <name> <scope>
65
+
66
+ # Hierarchy (parent/child)
67
+ python3 ./.trellis/scripts/task.py add-subtask <parent> <child>
68
+ python3 ./.trellis/scripts/task.py remove-subtask <parent> <child>
69
+
70
+ # PR creation
71
+ python3 ./.trellis/scripts/task.py create-pr [name] [--dry-run]
72
+ ```
73
+
74
+ > Run `python3 ./.trellis/scripts/task.py --help` to see the authoritative, up-to-date list.
75
+
76
+ **Current-task mechanism**: `task.py create` creates the task directory and (when session identity is available) auto-sets the per-session active-task pointer so the planning breadcrumb fires immediately. `task.py start` writes the same pointer (idempotent if already set) and flips `task.json.status` from `planning` to `in_progress`. State is stored under `.trellis/.runtime/sessions/`. If no context key is available from hook input, `TRELLIS_CONTEXT_ID`, or a platform-native session environment variable, there is no active task and `task.py start` fails with a session identity hint. `task.py finish` deletes the current session file (status unchanged). `task.py archive <task>` writes `status=completed`, moves the directory to `archive/`, and deletes any runtime session files that still point at the archived task.
77
+
78
+ ### Workspace System
79
+
80
+ Records every AI session for cross-session tracking under `.trellis/workspace/<developer>/`.
81
+
82
+ - `journal-N.md` — session log. **Max 2000 lines per file**; a new `journal-(N+1).md` is auto-created when exceeded.
83
+ - `index.md` — personal index (total sessions, last active).
84
+
85
+ ```bash
86
+ python3 ./.trellis/scripts/add_session.py --title "Title" --commit "hash" --summary "Summary"
87
+ ```
88
+
89
+ ### Context Script
90
+
91
+ ```bash
92
+ python3 ./.trellis/scripts/get_context.py # full session runtime
93
+ python3 ./.trellis/scripts/get_context.py --mode packages # available packages + spec layers
94
+ python3 ./.trellis/scripts/get_context.py --mode phase --step <X.Y> # detailed guide for a workflow step
95
+ ```
96
+
97
+ ---
98
+
99
+ <!--
100
+ WORKFLOW-STATE BREADCRUMB CONTRACT (read this before editing the tag blocks below)
101
+
102
+ The [workflow-state:STATUS] blocks embedded in the ## Phase Index section
103
+ below are the SINGLE source of truth for the per-turn `<workflow-state>`
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.
108
+
109
+ STATUS charset: [A-Za-z0-9_-]+. When the hook can't find a tag, it
110
+ degrades to a generic "Refer to workflow.md for current step." line —
111
+ intentionally visible so users notice and fix a broken workflow.md.
112
+
113
+ INVARIANT (test/regression.test.ts):
114
+ Every workflow-walkthrough step marked `[required · once]` must have a
115
+ matching enforcement line in its phase's [workflow-state:*] block. The
116
+ breadcrumb is the only per-turn channel; if a mandatory step isn't
117
+ mentioned there, the AI silently skips it (Phase 1 planning gate
118
+ skip and Phase 3.4 commit skip both manifested via this gap).
119
+
120
+ TAG ↔ PHASE scoping:
121
+ [workflow-state:no_task] → no active task; before Phase 1
122
+ [workflow-state:planning] → all of Phase 1 (status='planning')
123
+ [workflow-state:planning-inline] → Codex inline variant of Phase 1
124
+ [workflow-state:in_progress] → Phase 2 + Phase 3.2-3.4
125
+ (status stays 'in_progress' from
126
+ task.py start until task.py archive)
127
+ [workflow-state:in_progress-inline] → Codex inline variant of Phase 2/3
128
+ [workflow-state:completed] → currently DEAD: cmd_archive flips
129
+ status and moves the dir in the same
130
+ call, so the resolver loses the
131
+ pointer (block kept for a future
132
+ explicit in_progress→completed
133
+ transition)
134
+
135
+ Editing checklist:
136
+ - When you change a [workflow-state:STATUS] block, also check the
137
+ matching phase's `[required · once]` walkthrough steps for sync
138
+ - Run `trellis update` after editing to push the new bodies to
139
+ downstream user projects (block-level managed replacement)
140
+ - Full runtime contract:
141
+ .trellis/spec/cli/backend/workflow-state-contract.md
142
+ -->
143
+
144
+ ## Phase Index
145
+
146
+ ```
147
+ Phase 1: Plan → create the task on explicit request, then write planning artifacts
148
+ Phase 2: Execute → implement only after task status is in_progress
149
+ Phase 3: Finish → verify, commit, and wrap up
150
+ ```
151
+
152
+ ### Request Triage
153
+
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.
156
+ - Creating a task is not approval to start implementation. Planning still happens first, and every task gets the full artifact set.
157
+
158
+ ### Planning Artifacts
159
+
160
+ - `prd.md` — requirements, constraints, and acceptance criteria. Do not put technical design or execution checklists here.
161
+ - `design.md` — technical design: boundaries, contracts, data flow, tradeoffs, compatibility, rollout / rollback shape. For `kind=feature` it also carries the confirmed test-seam list.
162
+ - `implement.md` — execution plan: ordered slice checklist, validation commands, review gates, and rollback points.
163
+ - `implement.jsonl` / `check.jsonl` — spec and research manifests for sub-agent context. They do not replace `implement.md`.
164
+ - Every task needs `prd.md`, `design.md`, and `implement.md` before `task.py start`. There is no PRD-only tier — a task the user explicitly asked for is by definition worth the full artifact set.
165
+
166
+ ### Task Kind and the Red-Evidence Gate
167
+
168
+ Every task records its kind in `task.json` under `meta.kind`, set at creation with `task.py create ... --meta kind=<kind>` or afterwards with `task.py set-meta <task-dir> kind <kind>`.
169
+
170
+ | `meta.kind` | Red evidence | Where it lives | Enforced at |
171
+ |---|---|---|---|
172
+ | `bug` | A red-capable command you have already executed: it drives the real code path, asserts the reported symptom, is deterministic (or has a workable flake rate), and is fast enough to re-run | `research/repro-<topic>.md` — the redacted invocation plus its red output | Phase 1.4, before `task.py start` |
173
+ | `feature` | A confirmed test-seam list: the public boundaries the tests will sit on, agreed with the user | `design.md` | Phase 1.4 for the seam list; red-before-green per slice in Phase 2.1 |
174
+ | `chore` | Exempt | — | — |
175
+
176
+ Rules:
177
+
178
+ - **Never guess the kind.** If `meta.kind` is missing, ask the user to set it and do not proceed to `task.py start`.
179
+ - Redact secrets before pasting any command or output into a task artifact. Substitute `<REDACTED>`.
180
+ - If no red-capable command can be built, say so explicitly in the artifact — list what you tried and what you need (environment access, a redacted log/HAR, approval to instrument). Never skip the gate silently and never mark it satisfied by a lint, build, or type-check that cannot observe the reported failure.
181
+ - `chore` is for config, docs, scaffolding, and mechanical moves. Do not label a behavior change `chore` to escape the gate.
182
+
183
+ ### Parent / Child Task Trees
184
+
185
+ Use a parent task when one user request contains several independently verifiable deliverables. The parent task owns the source requirement set, the task map, cross-child acceptance criteria, and final integration review; it normally should not be the implementation target unless it also has direct work.
186
+
187
+ Use child tasks for deliverables that can be planned, implemented, checked, and archived independently. Parent/child structure is not a dependency system: if one child must wait for another, write that ordering in the child `prd.md` / `implement.md` and keep each child's acceptance criteria testable.
188
+
189
+ 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
+
191
+ <!-- Per-turn breadcrumb: shown when there is no active task (before Phase 1) -->
192
+
193
+ [workflow-state:no_task]
194
+ No active task. Work inline; create a Trellis task only when the user explicitly asks for one.
195
+ [/workflow-state:no_task]
196
+
197
+ ### Phase 1: Plan
198
+ - 1.0 Create task `[required · once]` (only on explicit user request)
199
+ - 1.1 Requirement exploration `[required · repeatable]` (`prd.md`, `design.md`, `implement.md` — all three)
200
+ - 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)
202
+ - 1.4 Activate task `[required · once]` (review gate + red-evidence gate, then `task.py start`; status → in_progress)
203
+ - 1.5 Completion criteria
204
+
205
+ <!-- Per-turn breadcrumb: shown throughout Phase 1 (status='planning') -->
206
+
207
+ [workflow-state:planning]
208
+ Load `trellis-brainstorm`; stay in planning. Ask the whole current frontier per round, not one question per message.
209
+ Finish `prd.md`, `design.md`, and `implement.md` — all three, every task; ask for review before `task.py start`.
210
+ Red-evidence gate keyed on `task.json` `meta.kind`: `bug` needs an already-executed red-capable repro command plus its redacted red output in `research/`; `feature` needs a user-confirmed test-seam list in `design.md`; `chore` is exempt. If `meta.kind` is missing, ask the user to set it with `task.py set-meta <task-dir> kind <kind>` — never guess.
211
+ Multi-deliverable scope: consider a parent task plus independently verifiable child tasks; dependencies must be written in child artifacts, not implied by tree position.
212
+ Sub-agent mode: curate `implement.jsonl` and `check.jsonl` as spec/research manifests before start.
213
+ [/workflow-state:planning]
214
+
215
+ <!-- Per-turn breadcrumb: shown throughout Phase 1 when codex.dispatch_mode=inline.
216
+ Codex-only opt-in alternate to [workflow-state:planning]. The main agent
217
+ edits code directly in Phase 2, so jsonl curation is skipped —
218
+ the inline workflow loads `trellis-before-dev` instead of injecting JSONL
219
+ into a sub-agent. -->
220
+
221
+ [workflow-state:planning-inline]
222
+ Load `trellis-brainstorm`; stay in planning. Ask the whole current frontier per round, not one question per message.
223
+ Finish `prd.md`, `design.md`, and `implement.md` — all three, every task; ask for review before `task.py start`.
224
+ Red-evidence gate keyed on `task.json` `meta.kind`: `bug` needs an already-executed red-capable repro command plus its redacted red output in `research/`; `feature` needs a user-confirmed test-seam list in `design.md`; `chore` is exempt. If `meta.kind` is missing, ask the user to set it with `task.py set-meta <task-dir> kind <kind>` — never guess.
225
+ Multi-deliverable scope: consider a parent task plus independently verifiable child tasks; dependencies must be written in child artifacts, not implied by tree position.
226
+ Inline mode: skip jsonl curation; Phase 2 reads artifacts/specs via `trellis-before-dev`.
227
+ [/workflow-state:planning-inline]
228
+
229
+ ### Phase 2: Execute
230
+ - 2.1 Implement `[required · repeatable]`
231
+ - 2.2 Quality check `[required · repeatable]`
232
+ - 2.3 Rollback `[on demand]`
233
+
234
+ <!-- Per-turn breadcrumb: shown while status='in_progress'.
235
+ Scope: all of Phase 2 + Phase 3.2-3.4 (status stays 'in_progress' from
236
+ task.py start until task.py archive; only archive flips it). The body
237
+ therefore must cover every required step from implementation through
238
+ commit, including Phase 3.3 spec update and Phase 3.4 commit. -->
239
+
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.
241
+
242
+ [workflow-state:in_progress]
243
+ 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
+ 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
+ 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
+ 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.
248
+ Dispatch prompt starts with `Active task: <task path from task.py current>`. Read context: jsonl entries -> `prd.md` -> `design.md` -> `implement.md`.
249
+ [/workflow-state:in_progress]
250
+
251
+ <!-- Per-turn breadcrumb: shown while status='in_progress' when
252
+ codex.dispatch_mode=inline. Codex-only opt-in alternate to
253
+ [workflow-state:in_progress]. The main session edits code directly
254
+ instead of dispatching sub-agents. -->
255
+
256
+ [workflow-state:in_progress-inline]
257
+ Flow: `trellis-before-dev` -> edit -> `trellis-check` -> validation -> 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.
258
+ 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.
259
+ Do not dispatch implement/check sub-agents in inline mode.
260
+ Read context: `prd.md` -> `design.md` -> `implement.md`, plus relevant spec/research loaded by skills.
261
+ [/workflow-state:in_progress-inline]
262
+
263
+ ### Phase 3: Finish
264
+ - 3.2 Debug retrospective `[on demand]`
265
+ - 3.3 Spec update `[on demand]`
266
+ - 3.4 Commit changes `[required · once]`
267
+ - 3.5 Wrap-up reminder
268
+
269
+ > Note: step 3.1 was folded into 2.2 (last-iteration full-scope check) and 3.4 (commit preamble). Numbering kept stable to avoid breaking external references.
270
+
271
+ <!-- Per-turn breadcrumb: shown while status='completed'.
272
+ Currently DEAD in normal flow: cmd_archive writes status='completed' in
273
+ the same call that moves the task dir to archive/, so the active-task
274
+ resolver loses the pointer and the hook never fires on archived tasks.
275
+ Block preserved for a future status-transition redesign (e.g. an
276
+ explicit in_progress→completed command). Edit through the same spec
277
+ channel as the live blocks. -->
278
+
279
+ [workflow-state:completed]
280
+ Code committed. Run `/trellis:finish-work`; if dirty, return to Phase 3.4 first.
281
+ [/workflow-state:completed]
282
+
283
+ ### Rules
284
+
285
+ 1. Identify which Phase you're in, then continue from the next step there
286
+ 2. Run steps in order inside each Phase; `[required]` steps can't be skipped
287
+ 3. Phases can roll back (e.g., Execute reveals a prd defect → return to Plan to fix, then re-enter Execute)
288
+ 4. Steps tagged `[once]` are skipped if the output already exists; don't re-run
289
+ 5. Every task carries `prd.md`, `design.md`, and `implement.md`; a missing one means planning is incomplete, not that the task is lightweight.
290
+
291
+ ### Active Task Routing
292
+
293
+ When a user request matches one of these intents inside an active task, route first, then load the detailed phase step if needed.
294
+
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]
296
+
297
+ - Planning or unclear requirements -> `trellis-brainstorm`.
298
+ - `in_progress` implementation/check -> dispatch `trellis-implement` / `trellis-check`.
299
+ - Writing a failing test, or reproducing a reported bug -> `trellis-tdd`.
300
+ - Repeated debugging -> `trellis-break-loop`; spec updates -> `trellis-update-spec`.
301
+
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]
303
+
304
+ [codex-inline, Kilo, Antigravity, Devin]
305
+
306
+ - Planning or unclear requirements -> `trellis-brainstorm`.
307
+ - Before editing -> `trellis-before-dev`; after editing -> `trellis-check`.
308
+ - Writing a failing test, or reproducing a reported bug -> `trellis-tdd`.
309
+ - Repeated debugging -> `trellis-break-loop`; spec updates -> `trellis-update-spec`.
310
+
311
+ [/codex-inline, Kilo, Antigravity, Devin]
312
+
313
+ ### Guardrails
314
+
315
+ - Never ask whether to create a task. With no active task, work inline; the user asks when they want one.
316
+ - Creating a task is not implementation approval; implementation waits for `task.py start` after artifact review.
317
+ - Every task needs `prd.md`, `design.md`, and `implement.md`. There is no PRD-only tier.
318
+ - `meta.kind` is never guessed. Without it, the red-evidence gate cannot be evaluated and `task.py start` must wait.
319
+ - No production code before red evidence: a `bug` needs an executed repro, a `feature` needs a failing test at a confirmed seam. "Cannot build one" is a valid outcome only when written down with what was tried.
320
+ - Planning must be persisted to task artifacts; checks must run before reporting completion.
321
+
322
+ ### Loading Step Detail
323
+
324
+ At each step, run this to fetch detailed guidance:
325
+
326
+ ```bash
327
+ python3 ./.trellis/scripts/get_context.py --mode phase --step <step>
328
+ # e.g. python3 ./.trellis/scripts/get_context.py --mode phase --step 1.1
329
+ ```
330
+
331
+ ---
332
+
333
+ ## Phase 1: Plan
334
+
335
+ Goal: turn an explicitly requested task into the planning artifacts and red evidence required before implementation.
336
+
337
+ #### 1.0 Create task `[required · once]`
338
+
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:
340
+
341
+ ```bash
342
+ python3 ./.trellis/scripts/task.py create "<task title>" --slug <name> --meta kind=<bug|feature|chore>
343
+ ```
344
+
345
+ `--slug` is the human-readable name only. Do **not** include the `MM-DD-` date prefix; `task.py create` adds that prefix automatically.
346
+
347
+ `--meta kind=` records the task kind in `task.json` under `meta.kind`, which selects the red-evidence gate. Set it here, or afterwards with `task.py set-meta <task-dir> kind <kind>`. If you do not know the kind, ask the user — never guess it, and never default it.
348
+
349
+ For task trees, create the parent task first and then create each child with `--parent <parent-dir>`. Do not start the parent just because children exist; start the child that owns the next independently verifiable deliverable. Each child carries its own `meta.kind`.
350
+
351
+ After this command succeeds, the per-turn breadcrumb auto-switches to `[workflow-state:planning]`, telling the AI to stay in planning.
352
+
353
+ Run only `create` here — do not also run `start`. `start` flips status to `in_progress`, which switches the breadcrumb to the implementation phase before planning artifacts are reviewed. Save `start` for step 1.4.
354
+
355
+ Skip when `python3 ./.trellis/scripts/task.py current --source` already points to a task.
356
+
357
+ #### 1.1 Requirement exploration `[required · repeatable]`
358
+
359
+ Load the `trellis-brainstorm` skill and explore requirements interactively with the user per the skill's guidance.
360
+
361
+ The brainstorm skill will guide you to:
362
+ - Model the work as a decision tree and ask the whole current frontier in one numbered round, each item carrying your recommendation and its trade-off
363
+ - Prefer researching over asking the user
364
+ - Update `prd.md` immediately after each round of answers
365
+ - Split large scopes into a parent task plus child tasks when the deliverables can be verified independently
366
+ - Keep `prd.md` focused on requirements and acceptance criteria
367
+ - Produce `design.md` and `implement.md` before implementation starts — for every task, not only large ones
368
+ - For `kind=feature`, converge on the test-seam list and record it in `design.md`; for `kind=bug`, make the reproduction the acceptance criterion
369
+
370
+ When considering a parent/child split:
371
+ - Use a parent task when one request contains several independently verifiable deliverables.
372
+ - Parent tasks own source requirements, child-task mapping, cross-child acceptance criteria, and final integration review.
373
+ - Child tasks own actual deliverables that can be planned, implemented, checked, and archived independently.
374
+ - Parent/child structure is not a dependency system. If child B depends on child A, write that ordering in child B's `prd.md` / `implement.md`.
375
+ - Start the child task that owns the next deliverable. Do not start the parent unless the parent itself has direct implementation work.
376
+
377
+ Return to this step whenever requirements change and revise the relevant artifact.
378
+
379
+ #### 1.2 Research `[optional · repeatable]`
380
+
381
+ 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
+
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]
384
+
385
+ Spawn the research sub-agent:
386
+
387
+ - **Agent type**: `trellis-research`
388
+ - **Task description**: Research <specific question>
389
+ - **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
+
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]
393
+
394
+ [codex-inline, Kilo, Antigravity, Devin]
395
+
396
+ 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
+
398
+ [/codex-inline, Kilo, Antigravity, Devin]
399
+
400
+ **Research artifact conventions**:
401
+ - One file per research topic (e.g. `research/auth-library-comparison.md`)
402
+ - Record third-party library usage examples, API references, version constraints in files
403
+ - Note relevant spec file paths you discovered for later reference
404
+
405
+ **Bug reproduction (`meta.kind=bug`) — required, not optional**:
406
+
407
+ This step is where the red-capable command gets built, and Phase 2 cannot start without it. Write it to `research/repro-<topic>.md` with:
408
+
409
+ - the redacted invocation, and the red output you actually saw when you ran it
410
+ - what symptom it asserts, stated precisely enough to re-verify after the fix
411
+ - its determinism: reliably red, or a reproduction rate you can work with
412
+ - the minimised scenario — strip inputs, callers, config, and steps one at a time, re-running after each, until every remaining element is load-bearing
413
+
414
+ Invest heavily here. A theory built from reading code, with no command that goes red, is not a diagnosis. If you genuinely cannot build one, write that down: list what you tried and what you need (environment access, a redacted log/HAR/trace, approval to instrument), and stop rather than guessing at a fix.
415
+
416
+ Redact secrets first — substitute `<REDACTED>` and read credentials from environment variables so they never appear in captured output.
417
+
418
+ Brainstorm and research can interleave freely — pause to research a technical question, then return to talk with the user.
419
+
420
+ **Key principle**: Research output must be written to files, not left only in the chat. Conversations get compacted; files don't.
421
+
422
+ #### 1.3 Configure context `[required · once]`
423
+
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]
425
+
426
+ 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
+
428
+ **Location**: `{TASK_DIR}/implement.jsonl` and `{TASK_DIR}/check.jsonl` (already exist).
429
+
430
+ **Format**: one JSON object per line — `{"file": "<path>", "reason": "<why>"}`. Paths are repo-root relative.
431
+
432
+ **What to put in**:
433
+ - **Spec files** — `.trellis/spec/<package>/<layer>/index.md` and any specific guideline files (`error-handling.md`, `conventions.md`, etc.) relevant to this task
434
+ - **Research files** — `{TASK_DIR}/research/*.md` that the sub-agent will need to consult
435
+
436
+ **What NOT to put in**:
437
+ - Code files (`src/**`, `packages/**/*.ts`, etc.) — those are read by the sub-agent during implementation, not pre-registered here
438
+ - Files you're about to modify — same reason
439
+
440
+ **Split between the two files**:
441
+ - `implement.jsonl` → specs + research the implement sub-agent needs to write code correctly
442
+ - `check.jsonl` → specs for the check sub-agent (quality guidelines, check conventions, same research if needed)
443
+
444
+ These manifests do not replace `implement.md`. `implement.md` is the human-readable slice checklist the red-green cycle walks; jsonl files only list context files to inject or load.
445
+
446
+ **How to discover relevant specs**:
447
+
448
+ ```bash
449
+ python3 ./.trellis/scripts/get_context.py --mode packages
450
+ ```
451
+
452
+ Lists every package + its spec layers with paths. Pick the entries that match this task's domain.
453
+
454
+ **How to append entries**:
455
+
456
+ Either edit the jsonl file directly in your editor, or use:
457
+
458
+ ```bash
459
+ python3 ./.trellis/scripts/task.py add-context "$TASK_DIR" implement "<path>" "<reason>"
460
+ python3 ./.trellis/scripts/task.py add-context "$TASK_DIR" check "<path>" "<reason>"
461
+ ```
462
+
463
+ Delete the seed `_example` line once real entries exist (optional — it's skipped automatically by consumers).
464
+
465
+ Ready gate: both `implement.jsonl` and `check.jsonl` must contain at least one real `{"file": "...", "reason": "..."}` entry before `task.py start`. The seed `_example` row alone is not ready.
466
+
467
+ Skip this step only when both files already have real curated entries.
468
+
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]
470
+
471
+ [codex-inline, Kilo, Antigravity, Devin]
472
+
473
+ Skip this step. Context is loaded directly by the `trellis-before-dev` skill in Phase 2.
474
+
475
+ [/codex-inline, Kilo, Antigravity, Devin]
476
+
477
+ #### 1.4 Activate task `[required · once]`
478
+
479
+ After artifact review and the red-evidence gate, flip the task status to `in_progress`:
480
+
481
+ ```bash
482
+ python3 ./.trellis/scripts/task.py start <task-dir>
483
+ ```
484
+
485
+ Before running it, all of the following must hold:
486
+
487
+ - `prd.md`, `design.md`, and `implement.md` exist and have been reviewed.
488
+ - `task.json` has `meta.kind`. If it does not, ask the user and set it — do not start on a guessed kind.
489
+ - Red evidence for that kind is in place: `kind=bug` has an executed repro command plus its red output in `research/`; `kind=feature` has a user-confirmed test-seam list in `design.md`; `kind=chore` is exempt. An explicit written "no red-capable command, here is what I tried and what I need" satisfies the gate; silence does not.
490
+ - On sub-agent-dispatch platforms, `implement.jsonl` and `check.jsonl` both have real curated entries. Runtime consumers tolerate missing or seed-only manifests for compatibility, but that tolerance is not a planning-ready state.
491
+
492
+ After this command succeeds, the breadcrumb auto-switches to `[workflow-state:in_progress]`, and the rest of Phase 2 / 3 follows.
493
+
494
+ If `task.py start` errors with a session-identity message (no context key from hook input, `TRELLIS_CONTEXT_ID`, or platform-native session env), follow the hint in the error to set up session identity, then retry.
495
+
496
+ #### 1.5 Completion criteria
497
+
498
+ | Condition | Required |
499
+ |------|:---:|
500
+ | `prd.md` exists | ✅ |
501
+ | `design.md` exists | ✅ |
502
+ | `implement.md` exists, with an ordered slice checklist | ✅ |
503
+ | `task.json` has `meta.kind` (never guessed) | ✅ |
504
+ | `kind=bug`: executed repro command + red output in `research/`, minimised | ✅ |
505
+ | `kind=feature`: user-confirmed test-seam list in `design.md` | ✅ |
506
+ | User confirms task should enter implementation | ✅ |
507
+ | `task.py start` has been run (status = in_progress) | ✅ |
508
+
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]
510
+
511
+ | `implement.jsonl` and `check.jsonl` each contain at least one real curated entry (seed row does not count) | ✅ |
512
+
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]
514
+
515
+ ---
516
+
517
+ ## Phase 2: Execute
518
+
519
+ Goal: turn reviewed planning artifacts into code that passes quality checks.
520
+
521
+ #### 2.1 Implement `[required · repeatable]`
522
+
523
+ **Red before green — applies on every platform.** Implementation walks the `implement.md` slice checklist one slice at a time. Per slice:
524
+
525
+ 1. Write the test at a seam already confirmed in `design.md`. Never invent a new seam here — if the right seam is missing, that is a Phase 1 defect; go back to 1.1.
526
+ 2. Run it and watch it fail. Paste the redacted red output into that slice's checklist entry.
527
+ 3. Write the minimum production code to make it pass. Run it again.
528
+ 4. Move to the next slice.
529
+
530
+ Prohibited: horizontal slicing (all tests first, then all implementations), testing internals instead of public boundaries, tautological assertions that recompute the expectation the way the code does, mocking internal collaborators, and refactoring inside a red-green cycle.
531
+
532
+ For `meta.kind=bug`, the slice-1 test is the minimised reproduction from `research/repro-<topic>.md` converted into a regression test at a seam that exercises the real failing path. After it passes, re-run the original Phase 1.2 repro command against the full scenario — a passing narrow test with a still-red repro means the fix is incomplete. If no correct seam exists, that finding itself goes in the slice entry.
533
+
534
+ `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
+
536
+ [Claude Code, Cursor, OpenCode, codex-sub-agent, CodeBuddy, Droid, Pi, ZCode, Snow, Oh My Pi]
537
+
538
+ Spawn the implement sub-agent:
539
+
540
+ - **Agent type**: `trellis-implement`
541
+ - **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
542
+ - **Dispatch prompt guard**: The prompt MUST start with `Active task: <task path>`, then tell the spawned agent it is already the `trellis-implement` sub-agent and must implement directly, not spawn another `trellis-implement` / `trellis-check`.
543
+
544
+ The platform hook/plugin auto-handles:
545
+ - Reads `implement.jsonl` and injects referenced spec/research files into the agent prompt
546
+ - Injects `prd.md`, `design.md` if present, and `implement.md` if present
547
+ - For Codex, `SubagentStart` supplies native context injection; the agent profile keeps child-side loading as the fallback
548
+
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]
579
+
580
+ [codex-inline, Kilo, Antigravity, Devin]
581
+
582
+ 1. Load the `trellis-before-dev` skill to read project guidelines
583
+ 2. Read `{TASK_DIR}/prd.md`, then `design.md`, then `implement.md`
584
+ 3. Consult materials under `{TASK_DIR}/research/`
585
+ 4. Load the `trellis-tdd` skill and walk the `implement.md` slice checklist red-before-green, one slice at a time
586
+ 5. Run project lint and type-check
587
+
588
+ [/codex-inline, Kilo, Antigravity, Devin]
589
+
590
+ #### 2.2 Quality check `[required · repeatable]`
591
+
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]
593
+
594
+ Spawn the check sub-agent:
595
+
596
+ - **Agent type**: `trellis-check`
597
+ - **Task description**: Review all code changes against specs and task artifacts; fix any findings directly; ensure lint and type-check pass
598
+ - **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
+
601
+ The check agent's job:
602
+ - Review code changes against specs
603
+ - Review code changes against `prd.md`, `design.md`, and `implement.md`
604
+ - Verify the red-evidence trail: each completed `implement.md` slice records the red output it started from, and for `kind=bug` the Phase 1.2 repro command has been re-run green against the full scenario. A slice claiming green with no recorded red is a finding, not a pass.
605
+ - Auto-fix issues it finds
606
+ - Run lint and typecheck to verify
607
+ - 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
+
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]
610
+
611
+ [codex-inline, Kilo, Antigravity, Devin]
612
+
613
+ Load the `trellis-check` skill and verify the code per its guidance:
614
+ - Spec compliance
615
+ - lint / type-check / tests
616
+ - Cross-layer consistency (when changes span layers)
617
+
618
+ If issues are found → fix → re-check, until green.
619
+
620
+ [/codex-inline, Kilo, Antigravity, Devin]
621
+
622
+ **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
+
624
+ #### 2.3 Rollback `[on demand]`
625
+
626
+ - `check` reveals a prd defect → return to Phase 1, fix `prd.md`, then redo 2.1
627
+ - Implementation went wrong → revert code, redo 2.1
628
+ - Need more research → research (same as Phase 1.2), write findings into `research/`
629
+
630
+ ---
631
+
632
+ ## Phase 3: Finish
633
+
634
+ Goal: ensure code quality, capture lessons, record the work.
635
+
636
+ #### 3.2 Debug retrospective `[on demand]`
637
+
638
+ If this task involved repeated debugging (the same issue was fixed multiple times), load the `trellis-break-loop` skill to:
639
+ - Classify the root cause
640
+ - Explain why earlier fixes failed
641
+ - Propose prevention
642
+
643
+ The goal is to capture debugging lessons so the same class of issue doesn't recur.
644
+
645
+ #### 3.3 Spec update `[on demand]`
646
+
647
+ Run this when the user asks for it. Do not run it as a routine end-of-task step, and do not write to `.trellis/spec/` unasked.
648
+
649
+ When asked, load the `trellis-update-spec` skill and record what this task actually taught:
650
+ - Newly discovered patterns or conventions
651
+ - Pitfalls you hit
652
+ - New technical decisions
653
+
654
+ Update the docs under `.trellis/spec/` accordingly.
655
+
656
+ #### 3.4 Commit changes `[required · once]`
657
+
658
+ **Spec-sync preamble**: if this task fixed a bug whose root cause is not yet captured in `.trellis/spec/`, say so in one line and *propose* the spec update. Do not write it unasked, and do not hold the commit for it. Spec writes happen in Phase 3.3, which only runs when the user asks.
659
+
660
+ The AI drives a batched commit of this task's code changes so `/finish-work` can run cleanly afterwards. Goal: produce work commits FIRST, then bookkeeping (archive + journal) commits land after — never interleaved.
661
+
662
+ **Step-by-step**:
663
+
664
+ 1. **Inspect dirty state**:
665
+ ```bash
666
+ git status --porcelain
667
+ ```
668
+ Snapshot every dirty path. If the working tree is clean, skip to 3.5.
669
+
670
+ 2. **Learn commit style** from recent history (so drafted messages blend in):
671
+ ```bash
672
+ git log --oneline -5
673
+ ```
674
+ Note the prefix convention (`feat:` / `fix:` / `chore:` / `docs:` ...), language (中文/English), and length style.
675
+
676
+ 3. **Classify dirty files into two groups**:
677
+ - **AI-edited this session** — files you wrote/edited via Edit/Write/Bash tool calls in this session. You know what changed and why.
678
+ - **Unrecognized** — dirty files you did NOT touch this session (could be the user's manual edits, leftover WIP from a previous session, or unrelated work). Do NOT silently include these.
679
+
680
+ 4. **Draft a commit plan**. Group AI-edited files into logical commits (1 commit per coherent change unit, not 1 commit per file). Each entry: `<commit message>` + file list. List unrecognized files separately at the bottom.
681
+
682
+ 5. **Present the plan once, ask for one-shot confirmation**. Format:
683
+ ```
684
+ Proposed commits (in order):
685
+ 1. <message>
686
+ - <file>
687
+ - <file>
688
+ 2. <message>
689
+ - <file>
690
+
691
+ Unrecognized dirty files (NOT in any commit — confirm include/exclude):
692
+ - <file>
693
+ - <file>
694
+
695
+ Reply 'ok' / '行' to execute. Reply with edits, or '我自己来' / 'manual' to abort.
696
+ ```
697
+
698
+ 6. **On confirmation**: run `git add <files>` + `git commit -m "<msg>"` for each batch in order. Do not amend. Do not push.
699
+
700
+ 7. **On rejection** (user replies "不行" / "我自己来" / "manual" / any pushback on the plan): stop. Do not attempt a second plan. The user will commit by hand; you skip ahead to 3.5 once they confirm.
701
+
702
+ **Rules**:
703
+ - No `git commit --amend` anywhere — three-stage three-commit flow (work commits → archive commit → journal commit).
704
+ - Never push to remote in this step.
705
+ - If the user wants different message wording but accepts the file grouping, edit the message and re-confirm once — but if they reject the grouping, exit to manual mode.
706
+ - The batched plan is one prompt; do not prompt per commit.
707
+
708
+ #### 3.5 Wrap-up reminder
709
+
710
+ After the above, remind the user they can run `/finish-work` to wrap up (archive the task, record the session).
711
+
712
+ ---
713
+
714
+ ## Customizing Trellis (for forks)
715
+
716
+ This section is for developers who want to modify the Trellis workflow itself. All customization is done by editing this file; the scripts are parsers only.
717
+
718
+ ### Changing what a step means
719
+
720
+ Edit the corresponding step's walkthrough body in the Phase 1 / 2 / 3 sections above. Critical invariants:
721
+ - With no active task, never ask whether to create one. A task is created only on the user's explicit request.
722
+ - Every task carries `prd.md`, `design.md`, and `implement.md` before start. There is no PRD-only tier.
723
+ - `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`.
724
+ - Every required execution path must keep the Phase 3.4 commit reminder reachable before `/trellis:finish-work`.
725
+
726
+ All tag blocks live in the `## Phase Index` section above, immediately after each phase summary:
727
+
728
+ | Scope | Corresponding tag |
729
+ |---|---|
730
+ | No active task (before Phase 1) | `[workflow-state:no_task]` (after the Phase Index ASCII art) |
731
+ | All of Phase 1 (task created → ready for implementation) | `[workflow-state:planning]` (after Phase 1 summary) |
732
+ | Codex inline Phase 1 | `[workflow-state:planning-inline]` |
733
+ | Phase 2 + Phase 3.2–3.4 (implementation + check + wrap-up) | `[workflow-state:in_progress]` (after Phase 2 summary) |
734
+ | Codex inline Phase 2 + Phase 3.2–3.4 | `[workflow-state:in_progress-inline]` |
735
+ | After Phase 3.5 (archived) | `[workflow-state:completed]` (after Phase 3 summary; **currently DEAD**) |
736
+
737
+ ### Changing the per-turn prompt text
738
+
739
+ Directly edit the body of the corresponding `[workflow-state:STATUS]` block. After editing, run `trellis update` (if you're a template maintainer) or restart your AI session (if you're customizing your own project) — no script changes required.
740
+
741
+ ### Adding a custom status
742
+
743
+ Add a new block:
744
+
745
+ ```
746
+ [workflow-state:my-status]
747
+ your per-turn prompt text
748
+ [/workflow-state:my-status]
749
+ ```
750
+
751
+ Constraints:
752
+ - STATUS charset: `[A-Za-z0-9_-]+` (underscores and hyphens allowed, e.g. `in-review`, `blocked-by-team`)
753
+ - A lifecycle hook must write `task.json.status` to your custom value, otherwise the tag is never read
754
+ - Lifecycle hooks live in `task.json.hooks.after_*` and bind to one of `after_create / after_start / after_finish / after_archive`
755
+
756
+ ### Adding a lifecycle hook
757
+
758
+ Add a `hooks` field to your `task.json`:
759
+
760
+ ```json
761
+ {
762
+ "hooks": {
763
+ "after_finish": [
764
+ "your-script-or-command-here"
765
+ ]
766
+ }
767
+ }
768
+ ```
769
+
770
+ Supported events: `after_create / after_start / after_finish / after_archive`. Note that `after_finish` ≠ a status change (it only clears the active-task pointer); use `after_archive` for "task is done" notifications.
771
+
772
+ ### Full contract
773
+
774
+ For the workflow state machine's runtime contract, the locations of all status writers, pseudo-statuses (`no_task` / `stale_<source_type>`), the hook reachability matrix, and other deep details, see:
775
+
776
+ - `.trellis/spec/cli/backend/workflow-state-contract.md` — runtime contract + writer table + test invariants
777
+ - `.trellis/scripts/inject-workflow-state.py` — actual parser (reads workflow.md only, no embedded text)