@mindfoldhq/trellis 0.6.0-beta.8 → 0.6.0-rc.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 (337) hide show
  1. package/README.md +49 -49
  2. package/dist/cli/index.d.ts +1 -1
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +59 -2
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/commands/channel/adapters/claude.d.ts +29 -0
  7. package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
  8. package/dist/commands/channel/adapters/claude.js +203 -0
  9. package/dist/commands/channel/adapters/claude.js.map +1 -0
  10. package/dist/commands/channel/adapters/codex.d.ts +85 -0
  11. package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
  12. package/dist/commands/channel/adapters/codex.js +505 -0
  13. package/dist/commands/channel/adapters/codex.js.map +1 -0
  14. package/dist/commands/channel/adapters/index.d.ts +84 -0
  15. package/dist/commands/channel/adapters/index.d.ts.map +1 -0
  16. package/dist/commands/channel/adapters/index.js +115 -0
  17. package/dist/commands/channel/adapters/index.js.map +1 -0
  18. package/dist/commands/channel/adapters/types.d.ts +33 -0
  19. package/dist/commands/channel/adapters/types.d.ts.map +1 -0
  20. package/dist/commands/channel/adapters/types.js +2 -0
  21. package/dist/commands/channel/adapters/types.js.map +1 -0
  22. package/dist/commands/channel/agent-loader.d.ts +32 -0
  23. package/dist/commands/channel/agent-loader.d.ts.map +1 -0
  24. package/dist/commands/channel/agent-loader.js +154 -0
  25. package/dist/commands/channel/agent-loader.js.map +1 -0
  26. package/dist/commands/channel/context-loader.d.ts +26 -0
  27. package/dist/commands/channel/context-loader.d.ts.map +1 -0
  28. package/dist/commands/channel/context-loader.js +290 -0
  29. package/dist/commands/channel/context-loader.js.map +1 -0
  30. package/dist/commands/channel/context.d.ts +16 -0
  31. package/dist/commands/channel/context.d.ts.map +1 -0
  32. package/dist/commands/channel/context.js +83 -0
  33. package/dist/commands/channel/context.js.map +1 -0
  34. package/dist/commands/channel/create.d.ts +27 -0
  35. package/dist/commands/channel/create.d.ts.map +1 -0
  36. package/dist/commands/channel/create.js +39 -0
  37. package/dist/commands/channel/create.js.map +1 -0
  38. package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
  39. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
  40. package/dist/commands/channel/dev-parse-trace.js +70 -0
  41. package/dist/commands/channel/dev-parse-trace.js.map +1 -0
  42. package/dist/commands/channel/guard.d.ts +150 -0
  43. package/dist/commands/channel/guard.d.ts.map +1 -0
  44. package/dist/commands/channel/guard.js +474 -0
  45. package/dist/commands/channel/guard.js.map +1 -0
  46. package/dist/commands/channel/index.d.ts +3 -0
  47. package/dist/commands/channel/index.d.ts.map +1 -0
  48. package/dist/commands/channel/index.js +531 -0
  49. package/dist/commands/channel/index.js.map +1 -0
  50. package/dist/commands/channel/interrupt.d.ts +10 -0
  51. package/dist/commands/channel/interrupt.d.ts.map +1 -0
  52. package/dist/commands/channel/interrupt.js +22 -0
  53. package/dist/commands/channel/interrupt.js.map +1 -0
  54. package/dist/commands/channel/kill.d.ts +7 -0
  55. package/dist/commands/channel/kill.d.ts.map +1 -0
  56. package/dist/commands/channel/kill.js +121 -0
  57. package/dist/commands/channel/kill.js.map +1 -0
  58. package/dist/commands/channel/list.d.ts +17 -0
  59. package/dist/commands/channel/list.d.ts.map +1 -0
  60. package/dist/commands/channel/list.js +233 -0
  61. package/dist/commands/channel/list.js.map +1 -0
  62. package/dist/commands/channel/messages.d.ts +15 -0
  63. package/dist/commands/channel/messages.d.ts.map +1 -0
  64. package/dist/commands/channel/messages.js +245 -0
  65. package/dist/commands/channel/messages.js.map +1 -0
  66. package/dist/commands/channel/rm.d.ts +27 -0
  67. package/dist/commands/channel/rm.d.ts.map +1 -0
  68. package/dist/commands/channel/rm.js +216 -0
  69. package/dist/commands/channel/rm.js.map +1 -0
  70. package/dist/commands/channel/run.d.ts +30 -0
  71. package/dist/commands/channel/run.d.ts.map +1 -0
  72. package/dist/commands/channel/run.js +130 -0
  73. package/dist/commands/channel/run.js.map +1 -0
  74. package/dist/commands/channel/send.d.ts +11 -0
  75. package/dist/commands/channel/send.d.ts.map +1 -0
  76. package/dist/commands/channel/send.js +24 -0
  77. package/dist/commands/channel/send.js.map +1 -0
  78. package/dist/commands/channel/spawn.d.ts +40 -0
  79. package/dist/commands/channel/spawn.d.ts.map +1 -0
  80. package/dist/commands/channel/spawn.js +244 -0
  81. package/dist/commands/channel/spawn.js.map +1 -0
  82. package/dist/commands/channel/store/events.d.ts +39 -0
  83. package/dist/commands/channel/store/events.d.ts.map +1 -0
  84. package/dist/commands/channel/store/events.js +87 -0
  85. package/dist/commands/channel/store/events.js.map +1 -0
  86. package/dist/commands/channel/store/filter.d.ts +3 -0
  87. package/dist/commands/channel/store/filter.d.ts.map +1 -0
  88. package/dist/commands/channel/store/filter.js +2 -0
  89. package/dist/commands/channel/store/filter.js.map +1 -0
  90. package/dist/commands/channel/store/lock.d.ts +23 -0
  91. package/dist/commands/channel/store/lock.d.ts.map +1 -0
  92. package/dist/commands/channel/store/lock.js +99 -0
  93. package/dist/commands/channel/store/lock.js.map +1 -0
  94. package/dist/commands/channel/store/paths.d.ts +63 -0
  95. package/dist/commands/channel/store/paths.d.ts.map +1 -0
  96. package/dist/commands/channel/store/paths.js +246 -0
  97. package/dist/commands/channel/store/paths.js.map +1 -0
  98. package/dist/commands/channel/store/schema.d.ts +27 -0
  99. package/dist/commands/channel/store/schema.d.ts.map +1 -0
  100. package/dist/commands/channel/store/schema.js +34 -0
  101. package/dist/commands/channel/store/schema.js.map +1 -0
  102. package/dist/commands/channel/store/thread-state.d.ts +5 -0
  103. package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
  104. package/dist/commands/channel/store/thread-state.js +16 -0
  105. package/dist/commands/channel/store/thread-state.js.map +1 -0
  106. package/dist/commands/channel/store/watch.d.ts +19 -0
  107. package/dist/commands/channel/store/watch.d.ts.map +1 -0
  108. package/dist/commands/channel/store/watch.js +146 -0
  109. package/dist/commands/channel/store/watch.js.map +1 -0
  110. package/dist/commands/channel/supervisor/idle.d.ts +46 -0
  111. package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
  112. package/dist/commands/channel/supervisor/idle.js +72 -0
  113. package/dist/commands/channel/supervisor/idle.js.map +1 -0
  114. package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
  115. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
  116. package/dist/commands/channel/supervisor/inbox.js +160 -0
  117. package/dist/commands/channel/supervisor/inbox.js.map +1 -0
  118. package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
  119. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
  120. package/dist/commands/channel/supervisor/shutdown.js +146 -0
  121. package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
  122. package/dist/commands/channel/supervisor/stdout.d.ts +51 -0
  123. package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
  124. package/dist/commands/channel/supervisor/stdout.js +121 -0
  125. package/dist/commands/channel/supervisor/stdout.js.map +1 -0
  126. package/dist/commands/channel/supervisor/turns.d.ts +31 -0
  127. package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
  128. package/dist/commands/channel/supervisor/turns.js +45 -0
  129. package/dist/commands/channel/supervisor/turns.js.map +1 -0
  130. package/dist/commands/channel/supervisor/warning.d.ts +48 -0
  131. package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
  132. package/dist/commands/channel/supervisor/warning.js +77 -0
  133. package/dist/commands/channel/supervisor/warning.js.map +1 -0
  134. package/dist/commands/channel/supervisor.d.ts +59 -0
  135. package/dist/commands/channel/supervisor.d.ts.map +1 -0
  136. package/dist/commands/channel/supervisor.js +344 -0
  137. package/dist/commands/channel/supervisor.js.map +1 -0
  138. package/dist/commands/channel/text-body.d.ts +13 -0
  139. package/dist/commands/channel/text-body.d.ts.map +1 -0
  140. package/dist/commands/channel/text-body.js +47 -0
  141. package/dist/commands/channel/text-body.js.map +1 -0
  142. package/dist/commands/channel/threads.d.ts +39 -0
  143. package/dist/commands/channel/threads.d.ts.map +1 -0
  144. package/dist/commands/channel/threads.js +106 -0
  145. package/dist/commands/channel/threads.js.map +1 -0
  146. package/dist/commands/channel/title.d.ts +12 -0
  147. package/dist/commands/channel/title.d.ts.map +1 -0
  148. package/dist/commands/channel/title.js +24 -0
  149. package/dist/commands/channel/title.js.map +1 -0
  150. package/dist/commands/channel/wait.d.ts +17 -0
  151. package/dist/commands/channel/wait.d.ts.map +1 -0
  152. package/dist/commands/channel/wait.js +75 -0
  153. package/dist/commands/channel/wait.js.map +1 -0
  154. package/dist/commands/init.d.ts +3 -0
  155. package/dist/commands/init.d.ts.map +1 -1
  156. package/dist/commands/init.js +162 -43
  157. package/dist/commands/init.js.map +1 -1
  158. package/dist/commands/mem.d.ts +13 -217
  159. package/dist/commands/mem.d.ts.map +1 -1
  160. package/dist/commands/mem.js +142 -1587
  161. package/dist/commands/mem.js.map +1 -1
  162. package/dist/commands/uninstall.d.ts.map +1 -1
  163. package/dist/commands/uninstall.js +28 -2
  164. package/dist/commands/uninstall.js.map +1 -1
  165. package/dist/commands/update.d.ts.map +1 -1
  166. package/dist/commands/update.js +104 -7
  167. package/dist/commands/update.js.map +1 -1
  168. package/dist/commands/upgrade.d.ts +28 -0
  169. package/dist/commands/upgrade.d.ts.map +1 -0
  170. package/dist/commands/upgrade.js +84 -0
  171. package/dist/commands/upgrade.js.map +1 -0
  172. package/dist/commands/workflow.d.ts +35 -0
  173. package/dist/commands/workflow.d.ts.map +1 -0
  174. package/dist/commands/workflow.js +232 -0
  175. package/dist/commands/workflow.js.map +1 -0
  176. package/dist/configurators/claude.d.ts.map +1 -1
  177. package/dist/configurators/claude.js +1 -0
  178. package/dist/configurators/claude.js.map +1 -1
  179. package/dist/configurators/index.d.ts.map +1 -1
  180. package/dist/configurators/index.js +5 -0
  181. package/dist/configurators/index.js.map +1 -1
  182. package/dist/configurators/reasonix.d.ts +23 -0
  183. package/dist/configurators/reasonix.d.ts.map +1 -0
  184. package/dist/configurators/reasonix.js +60 -0
  185. package/dist/configurators/reasonix.js.map +1 -0
  186. package/dist/configurators/shared.d.ts.map +1 -1
  187. package/dist/configurators/shared.js +8 -0
  188. package/dist/configurators/shared.js.map +1 -1
  189. package/dist/configurators/workflow.d.ts +8 -0
  190. package/dist/configurators/workflow.d.ts.map +1 -1
  191. package/dist/configurators/workflow.js +14 -3
  192. package/dist/configurators/workflow.js.map +1 -1
  193. package/dist/constants/paths.d.ts +4 -0
  194. package/dist/constants/paths.d.ts.map +1 -1
  195. package/dist/constants/paths.js +4 -0
  196. package/dist/constants/paths.js.map +1 -1
  197. package/dist/migrations/manifests/0.5.13.json +9 -0
  198. package/dist/migrations/manifests/0.5.14.json +9 -0
  199. package/dist/migrations/manifests/0.5.15.json +9 -0
  200. package/dist/migrations/manifests/0.5.16.json +9 -0
  201. package/dist/migrations/manifests/0.5.17.json +9 -0
  202. package/dist/migrations/manifests/0.5.18.json +9 -0
  203. package/dist/migrations/manifests/0.5.19.json +9 -0
  204. package/dist/migrations/manifests/0.6.0-beta.10.json +9 -0
  205. package/dist/migrations/manifests/0.6.0-beta.11.json +9 -0
  206. package/dist/migrations/manifests/0.6.0-beta.12.json +9 -0
  207. package/dist/migrations/manifests/0.6.0-beta.13.json +9 -0
  208. package/dist/migrations/manifests/0.6.0-beta.14.json +9 -0
  209. package/dist/migrations/manifests/0.6.0-beta.15.json +9 -0
  210. package/dist/migrations/manifests/0.6.0-beta.16.json +9 -0
  211. package/dist/migrations/manifests/0.6.0-beta.17.json +9 -0
  212. package/dist/migrations/manifests/0.6.0-beta.18.json +16 -0
  213. package/dist/migrations/manifests/0.6.0-beta.19.json +9 -0
  214. package/dist/migrations/manifests/0.6.0-beta.20.json +9 -0
  215. package/dist/migrations/manifests/0.6.0-beta.21.json +9 -0
  216. package/dist/migrations/manifests/0.6.0-beta.22.json +9 -0
  217. package/dist/migrations/manifests/0.6.0-beta.23.json +88 -0
  218. package/dist/migrations/manifests/0.6.0-beta.9.json +9 -0
  219. package/dist/migrations/manifests/0.6.0-rc.0.json +9 -0
  220. package/dist/templates/claude/agents/trellis-check.md +12 -6
  221. package/dist/templates/claude/agents/trellis-implement.md +1 -1
  222. package/dist/templates/claude/agents/trellis-research.md +1 -1
  223. package/dist/templates/claude/settings.json +4 -4
  224. package/dist/templates/codebuddy/agents/trellis-check.md +12 -6
  225. package/dist/templates/codebuddy/agents/trellis-implement.md +1 -1
  226. package/dist/templates/codebuddy/agents/trellis-research.md +1 -1
  227. package/dist/templates/codebuddy/settings.json +4 -4
  228. package/dist/templates/codex/agents/trellis-check.toml +0 -25
  229. package/dist/templates/codex/agents/trellis-implement.toml +0 -25
  230. package/dist/templates/codex/config.toml +9 -16
  231. package/dist/templates/codex/hooks/session-start.py +22 -0
  232. package/dist/templates/codex/hooks.json +2 -2
  233. package/dist/templates/codex/skills/brainstorm/SKILL.md +69 -519
  234. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +27 -0
  235. package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +81 -0
  236. package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +66 -0
  237. package/dist/templates/common/bundled-skills/trellis-session-insight/references/triggering-patterns.md +93 -0
  238. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/SKILL.md +41 -0
  239. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/mcp-setup.md +90 -0
  240. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/repository-analysis.md +59 -0
  241. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-task-planning.md +61 -0
  242. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-writing.md +70 -0
  243. package/dist/templates/common/skills/brainstorm.md +68 -518
  244. package/dist/templates/copilot/hooks/session-start.py +36 -11
  245. package/dist/templates/copilot/hooks.json +2 -2
  246. package/dist/templates/copilot/prompts/brainstorm.prompt.md +69 -519
  247. package/dist/templates/cursor/agents/trellis-check.md +12 -6
  248. package/dist/templates/cursor/agents/trellis-implement.md +1 -1
  249. package/dist/templates/cursor/agents/trellis-research.md +1 -1
  250. package/dist/templates/cursor/hooks.json +1 -7
  251. package/dist/templates/droid/droids/trellis-check.md +12 -6
  252. package/dist/templates/droid/droids/trellis-implement.md +1 -1
  253. package/dist/templates/droid/droids/trellis-research.md +1 -1
  254. package/dist/templates/droid/settings.json +4 -4
  255. package/dist/templates/gemini/agents/trellis-check.md +11 -5
  256. package/dist/templates/gemini/settings.json +2 -2
  257. package/dist/templates/kiro/agents/trellis-check.json +1 -1
  258. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +127 -9
  259. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +171 -6
  260. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +48 -4
  261. package/dist/templates/markdown/spec/guides/index.md.txt +18 -0
  262. package/dist/templates/opencode/agents/trellis-check.md +11 -5
  263. package/dist/templates/opencode/lib/trellis-context.js +73 -11
  264. package/dist/templates/opencode/plugins/inject-subagent-context.js +112 -26
  265. package/dist/templates/opencode/plugins/inject-workflow-state.js +8 -1
  266. package/dist/templates/opencode/plugins/session-start.js +9 -1
  267. package/dist/templates/pi/agents/trellis-check.md +5 -4
  268. package/dist/templates/pi/agents/trellis-implement.md +5 -4
  269. package/dist/templates/pi/extensions/trellis/index.ts.txt +1339 -913
  270. package/dist/templates/pi/settings.json +0 -9
  271. package/dist/templates/qoder/agents/trellis-check.md +12 -6
  272. package/dist/templates/qoder/agents/trellis-implement.md +1 -1
  273. package/dist/templates/qoder/agents/trellis-research.md +1 -1
  274. package/dist/templates/qoder/settings.json +4 -4
  275. package/dist/templates/reasonix/agents/trellis-check.md +36 -0
  276. package/dist/templates/reasonix/agents/trellis-implement.md +41 -0
  277. package/dist/templates/reasonix/index.d.ts +13 -0
  278. package/dist/templates/reasonix/index.d.ts.map +1 -0
  279. package/dist/templates/reasonix/index.js +16 -0
  280. package/dist/templates/reasonix/index.js.map +1 -0
  281. package/dist/templates/shared-hooks/index.d.ts.map +1 -1
  282. package/dist/templates/shared-hooks/index.js +0 -1
  283. package/dist/templates/shared-hooks/index.js.map +1 -1
  284. package/dist/templates/shared-hooks/inject-workflow-state.py +22 -0
  285. package/dist/templates/shared-hooks/session-start.py +25 -8
  286. package/dist/templates/trellis/agents/check.md +70 -0
  287. package/dist/templates/trellis/agents/implement.md +71 -0
  288. package/dist/templates/trellis/config.yaml +20 -0
  289. package/dist/templates/trellis/index.d.ts +13 -0
  290. package/dist/templates/trellis/index.d.ts.map +1 -1
  291. package/dist/templates/trellis/index.js +22 -0
  292. package/dist/templates/trellis/index.js.map +1 -1
  293. package/dist/templates/trellis/scripts/common/safe_commit.py +49 -19
  294. package/dist/templates/trellis/scripts/common/session_context.py +215 -138
  295. package/dist/templates/trellis/scripts/common/task_store.py +94 -16
  296. package/dist/templates/trellis/workflow.md +21 -0
  297. package/dist/types/ai-tools.d.ts +4 -4
  298. package/dist/types/ai-tools.d.ts.map +1 -1
  299. package/dist/types/ai-tools.js +16 -0
  300. package/dist/types/ai-tools.js.map +1 -1
  301. package/dist/utils/agent-refs.d.ts +31 -0
  302. package/dist/utils/agent-refs.d.ts.map +1 -0
  303. package/dist/utils/agent-refs.js +63 -0
  304. package/dist/utils/agent-refs.js.map +1 -0
  305. package/dist/utils/cwd-guard.d.ts +38 -0
  306. package/dist/utils/cwd-guard.d.ts.map +1 -0
  307. package/dist/utils/cwd-guard.js +62 -0
  308. package/dist/utils/cwd-guard.js.map +1 -0
  309. package/dist/utils/file-writer.d.ts +13 -0
  310. package/dist/utils/file-writer.d.ts.map +1 -1
  311. package/dist/utils/file-writer.js +59 -1
  312. package/dist/utils/file-writer.js.map +1 -1
  313. package/dist/utils/manifest-prune.d.ts +61 -0
  314. package/dist/utils/manifest-prune.d.ts.map +1 -0
  315. package/dist/utils/manifest-prune.js +136 -0
  316. package/dist/utils/manifest-prune.js.map +1 -0
  317. package/dist/utils/registry-config.d.ts +7 -0
  318. package/dist/utils/registry-config.d.ts.map +1 -0
  319. package/dist/utils/registry-config.js +171 -0
  320. package/dist/utils/registry-config.js.map +1 -0
  321. package/dist/utils/task-json.d.ts +9 -42
  322. package/dist/utils/task-json.d.ts.map +1 -1
  323. package/dist/utils/task-json.js +8 -45
  324. package/dist/utils/task-json.js.map +1 -1
  325. package/dist/utils/template-fetcher.d.ts +11 -0
  326. package/dist/utils/template-fetcher.d.ts.map +1 -1
  327. package/dist/utils/template-fetcher.js +51 -2
  328. package/dist/utils/template-fetcher.js.map +1 -1
  329. package/dist/utils/template-hash.d.ts +32 -6
  330. package/dist/utils/template-hash.d.ts.map +1 -1
  331. package/dist/utils/template-hash.js +53 -31
  332. package/dist/utils/template-hash.js.map +1 -1
  333. package/dist/utils/workflow-resolver.d.ts +86 -0
  334. package/dist/utils/workflow-resolver.d.ts.map +1 -0
  335. package/dist/utils/workflow-resolver.js +265 -0
  336. package/dist/utils/workflow-resolver.js.map +1 -0
  337. package/package.json +9 -8
@@ -2,7 +2,7 @@
2
2
  name: trellis-check
3
3
  description: |
4
4
  Code quality check expert. Reviews code changes against specs and self-fixes issues.
5
- tools: Read, Write, Edit, Bash, Glob, Grep, mcp__exa__web_search_exa, mcp__exa__get_code_context_exa
5
+ tools: Read, Write, Edit, Bash, Glob, Grep
6
6
  ---
7
7
  # Check Agent
8
8
 
@@ -27,14 +27,18 @@ Look for the `<!-- trellis-hook-injected -->` marker in your input above.
27
27
 
28
28
  Before checking, read:
29
29
  - `.trellis/spec/` - Development guidelines
30
+ - Task `prd.md` - Requirements document
31
+ - Task `design.md` - Technical design (if exists)
32
+ - Task `implement.md` - Execution plan (if exists)
30
33
  - Pre-commit checklist for quality standards
31
34
 
32
35
  ## Core Responsibilities
33
36
 
34
37
  1. **Get code changes** - Use git diff to get uncommitted code
35
- 2. **Check against specs** - Verify code follows guidelines
36
- 3. **Self-fix** - Fix issues yourself, not just report them
37
- 4. **Run verification** - typecheck and lint
38
+ 2. **Review task artifacts** - Check changes against prd.md, design.md if present, and implement.md if present
39
+ 3. **Check against specs** - Verify code follows guidelines
40
+ 4. **Self-fix** - Fix issues yourself, not just report them
41
+ 5. **Run verification** - typecheck and lint
38
42
 
39
43
  ## Important
40
44
 
@@ -53,10 +57,12 @@ git diff --name-only # List changed files
53
57
  git diff # View specific changes
54
58
  ```
55
59
 
56
- ### Step 2: Check Against Specs
60
+ ### Step 2: Check Against Specs and Task Artifacts
57
61
 
58
- Read relevant specs in `.trellis/spec/` to check code:
62
+ Read the task's prd.md, design.md if present, and implement.md if present, then read relevant specs in `.trellis/spec/` to check code:
59
63
 
64
+ - Does it satisfy the task requirements
65
+ - Does it follow the technical design and implementation plan when present
60
66
  - Does it follow directory structure conventions
61
67
  - Does it follow naming conventions
62
68
  - Does it follow code patterns
@@ -2,7 +2,7 @@
2
2
  name: trellis-implement
3
3
  description: |
4
4
  Code implementation expert. Understands specs and requirements, then implements features. No git commit allowed.
5
- tools: Read, Write, Edit, Bash, Glob, Grep, mcp__exa__web_search_exa, mcp__exa__get_code_context_exa
5
+ tools: Read, Write, Edit, Bash, Glob, Grep
6
6
  ---
7
7
  # Implement Agent
8
8
 
@@ -2,7 +2,7 @@
2
2
  name: trellis-research
3
3
  description: |
4
4
  Code and tech search expert. Finds files, patterns, and tech solutions, and PERSISTS every finding to the current task's research/ directory. No code modifications outside that directory.
5
- tools: Read, Write, Glob, Grep, Bash, mcp__exa__web_search_exa, mcp__exa__get_code_context_exa, Skill, mcp__chrome-devtools__*
5
+ tools: Read, Write, Glob, Grep, Bash, Skill, mcp__*
6
6
  ---
7
7
  # Research Agent
8
8
 
@@ -7,7 +7,7 @@
7
7
  {
8
8
  "type": "command",
9
9
  "command": "{{PYTHON_CMD}} .codebuddy/hooks/session-start.py",
10
- "timeout": 10
10
+ "timeout": 30
11
11
  }
12
12
  ]
13
13
  },
@@ -17,7 +17,7 @@
17
17
  {
18
18
  "type": "command",
19
19
  "command": "{{PYTHON_CMD}} .codebuddy/hooks/session-start.py",
20
- "timeout": 10
20
+ "timeout": 30
21
21
  }
22
22
  ]
23
23
  },
@@ -27,7 +27,7 @@
27
27
  {
28
28
  "type": "command",
29
29
  "command": "{{PYTHON_CMD}} .codebuddy/hooks/session-start.py",
30
- "timeout": 10
30
+ "timeout": 30
31
31
  }
32
32
  ]
33
33
  }
@@ -50,7 +50,7 @@
50
50
  {
51
51
  "type": "command",
52
52
  "command": "{{PYTHON_CMD}} .codebuddy/hooks/inject-workflow-state.py",
53
- "timeout": 5
53
+ "timeout": 15
54
54
  }
55
55
  ]
56
56
  }
@@ -12,31 +12,6 @@ CRITICAL — Recursion guard (read first):
12
12
 
13
13
  ---
14
14
 
15
- ## Required: Load Trellis Context First
16
-
17
- This platform does NOT auto-inject task context via hook. Before doing anything else, you MUST load context yourself.
18
-
19
- ### Step 1: Find the active task path
20
-
21
- Try in order — stop at the first one that yields a task path:
22
-
23
- 1. **Look at the dispatch prompt** you received from the main agent. If its first line is `Active task: <path>` (e.g. `Active task: .trellis/tasks/04-17-foo`), use that path. The main agent is required to include this line on class-2 platforms.
24
- 2. **Run** `python3 ./.trellis/scripts/task.py current --source` and read the `Current task:` line.
25
- 3. **If both fail** (no `Active task:` line in the prompt and `task.py current` returns no task), ask the user which task to work on; do NOT guess.
26
-
27
- ### Step 2: Load task context from the resolved path
28
-
29
- 1. Read `<task-path>/check.jsonl` — JSONL list of spec/research files relevant to this agent.
30
- 2. For each entry in the JSONL, Read its `file` path — these are the specs and research notes you must follow.
31
- **Skip rows without a `"file"` field** (e.g. `{"_example": "..."}` seed rows left over from `task.py create` before the curator ran).
32
- 3. Read the task's `prd.md` (requirements), then `design.md` if present (technical design), then `implement.md` if present (execution plan).
33
-
34
- If `check.jsonl` has no curated entries (only a seed row, or the file is missing), fall back to: read the task artifacts, list available specs with `python3 ./.trellis/scripts/get_context.py --mode packages`, and pick the specs that match the task domain yourself. Do NOT block on the missing jsonl — lightweight tasks may be PRD-only, while complex tasks may also include `design.md` and `implement.md`.
35
-
36
- If the resolved task path has no `prd.md`, ask the user what to work on; do NOT proceed without context.
37
-
38
- ---
39
-
40
15
  You are the Trellis reviewer agent.
41
16
 
42
17
  Your job is to review code changes against specs AND fix issues directly — not just report them. You have write access; use it.
@@ -12,31 +12,6 @@ CRITICAL — Recursion guard (read first):
12
12
 
13
13
  ---
14
14
 
15
- ## Required: Load Trellis Context First
16
-
17
- This platform does NOT auto-inject task context via hook. Before doing anything else, you MUST load context yourself.
18
-
19
- ### Step 1: Find the active task path
20
-
21
- Try in order — stop at the first one that yields a task path:
22
-
23
- 1. **Look at the dispatch prompt** you received from the main agent. If its first line is `Active task: <path>` (e.g. `Active task: .trellis/tasks/04-17-foo`), use that path. The main agent is required to include this line on class-2 platforms.
24
- 2. **Run** `python3 ./.trellis/scripts/task.py current --source` and read the `Current task:` line.
25
- 3. **If both fail** (no `Active task:` line in the prompt and `task.py current` returns no task), ask the user which task to work on; do NOT guess.
26
-
27
- ### Step 2: Load task context from the resolved path
28
-
29
- 1. Read `<task-path>/implement.jsonl` — JSONL list of spec/research files relevant to this agent.
30
- 2. For each entry in the JSONL, Read its `file` path — these are the specs and research notes you must follow.
31
- **Skip rows without a `"file"` field** (e.g. `{"_example": "..."}` seed rows left over from `task.py create` before the curator ran).
32
- 3. Read the task's `prd.md` (requirements), then `design.md` if present (technical design), then `implement.md` if present (execution plan).
33
-
34
- If `implement.jsonl` has no curated entries (only a seed row, or the file is missing), fall back to: read the task artifacts, list available specs with `python3 ./.trellis/scripts/get_context.py --mode packages`, and pick the specs that match the task domain yourself. Do NOT block on the missing jsonl — lightweight tasks may be PRD-only, while complex tasks may also include `design.md` and `implement.md`.
35
-
36
- If the resolved task path has no `prd.md`, ask the user what to work on; do NOT proceed without context.
37
-
38
- ---
39
-
40
15
  You are the Trellis implementer agent.
41
16
 
42
17
  Rules:
@@ -5,8 +5,6 @@
5
5
  #
6
6
  # [projects."/abs/path/to/this/repo"]
7
7
  # trust_level = "trusted"
8
- #
9
- # Without trust, the [features] block below is loaded but disabled.
10
8
 
11
9
  # Keep AGENTS.md as the primary project instruction file.
12
10
  project_doc_fallback_filenames = ["AGENTS.md"]
@@ -19,17 +17,12 @@ project_doc_fallback_filenames = ["AGENTS.md"]
19
17
  # Codex 0.129+ additionally gates each installed hook behind a one-time
20
18
  # `/hooks` TUI review; until the user approves it, the hook stays inactive.
21
19
 
22
- # multi_agent_v2 forces structured subagent orchestration with the
23
- # `wait` tool parent must block on terminal status before acting,
24
- # instead of cancelling / re-spawning. Incompatible with
25
- # [agents].max_threads (codex will reject the combination).
26
- # `enabled = true` is required inside the table the table form does
27
- # NOT auto-enable the feature without it.
28
- # - max_concurrent_threads_per_session: bumps default 4 6.
29
- # - min_wait_timeout_ms: 480000 ms = 8 min. Codex default is 10 s, too
30
- # short for Trellis subagents that routinely take 2-10 min. Hard
31
- # ceiling is 3,600,000 (1 h).
32
- [features.multi_agent_v2]
33
- enabled = true
34
- max_concurrent_threads_per_session = 6
35
- min_wait_timeout_ms = 480000
20
+ # NOTE: Trellis intentionally does NOT write a [features.multi_agent_v2]
21
+ # block here. Codex CLI changed `features` deserialization between 0.130
22
+ # and 0.131: the structured table form (with max_concurrent_threads_per_session
23
+ # / *_wait_timeout_ms) is only accepted by 0.131+. On 0.130 and earlier
24
+ # including the codex CLI bundled inside the Codex desktop app it fails
25
+ # with `data did not match any variant of untagged enum FeatureToml`, which
26
+ # aborts the entire config load and blocks Codex from starting. Codex's own
27
+ # default for multi_agent_v2 is used instead; tune it in your user-level
28
+ # config if needed.
@@ -18,6 +18,28 @@ import warnings
18
18
  from io import StringIO
19
19
  from pathlib import Path
20
20
 
21
+ # Force UTF-8 on stdin/stdout/stderr on Windows. Default codepage there is
22
+ # cp936 / cp1252 / etc. — non-ASCII content (Chinese task names, prd snippets)
23
+ # both in stdin (hook payload from host CLI) and stdout (our emitted blocks)
24
+ # raises UnicodeDecodeError / UnicodeEncodeError. Equivalent to `python -X utf8`
25
+ # but applied per-stream so we don't depend on host CLI's command wiring.
26
+ if sys.platform.startswith("win"):
27
+ import io as _io
28
+ for _stream_name in ("stdin", "stdout", "stderr"):
29
+ _stream = getattr(sys, _stream_name, None)
30
+ if _stream is None:
31
+ continue
32
+ if hasattr(_stream, "reconfigure"):
33
+ try:
34
+ _stream.reconfigure(encoding="utf-8", errors="replace") # type: ignore[union-attr]
35
+ except Exception:
36
+ pass
37
+ elif hasattr(_stream, "detach"):
38
+ try:
39
+ setattr(sys, _stream_name, _io.TextIOWrapper(_stream.detach(), encoding="utf-8", errors="replace"))
40
+ except Exception:
41
+ pass
42
+
21
43
 
22
44
  def _normalize_windows_shell_path(path_str: str) -> str:
23
45
  """Normalize Unix-style shell paths to real Windows paths.
@@ -5,8 +5,8 @@
5
5
  "hooks": [
6
6
  {
7
7
  "type": "command",
8
- "command": "{{PYTHON_CMD}} .codex/hooks/inject-workflow-state.py",
9
- "timeout": 5
8
+ "command": "{{PYTHON_CMD}} -X utf8 .codex/hooks/inject-workflow-state.py",
9
+ "timeout": 15
10
10
  }
11
11
  ]
12
12
  }