takt 0.9.0 → 0.11.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 (321) hide show
  1. package/README.md +28 -5
  2. package/builtins/en/config.yaml +72 -17
  3. package/builtins/en/instructions/implement-e2e-test.md +51 -0
  4. package/builtins/en/instructions/implement-test.md +52 -0
  5. package/builtins/en/instructions/plan-e2e-test.md +11 -0
  6. package/builtins/en/instructions/plan-test.md +11 -0
  7. package/builtins/en/instructions/review-arch.md +9 -3
  8. package/builtins/en/instructions/review-qa.md +9 -3
  9. package/builtins/en/instructions/review-test.md +14 -0
  10. package/builtins/en/output-contracts/architecture-review.md +8 -3
  11. package/builtins/en/output-contracts/qa-review.md +8 -3
  12. package/builtins/en/output-contracts/test-plan.md +24 -0
  13. package/builtins/en/personas/test-planner.md +25 -0
  14. package/builtins/en/piece-categories.yaml +6 -13
  15. package/builtins/en/pieces/coding.yaml +0 -22
  16. package/builtins/en/pieces/compound-eye.yaml +0 -5
  17. package/builtins/en/pieces/default.yaml +0 -33
  18. package/builtins/en/pieces/{default-hybrid-codex.yaml → e2e-test.yaml} +54 -108
  19. package/builtins/en/pieces/expert-cqrs.yaml +0 -44
  20. package/builtins/en/pieces/expert.yaml +0 -42
  21. package/builtins/en/pieces/magi.yaml +0 -4
  22. package/builtins/en/pieces/minimal.yaml +0 -17
  23. package/builtins/en/pieces/passthrough.yaml +0 -5
  24. package/builtins/en/pieces/research.yaml +0 -4
  25. package/builtins/en/pieces/review-fix-minimal.yaml +0 -17
  26. package/builtins/en/pieces/review-only.yaml +0 -22
  27. package/builtins/en/pieces/structural-reform.yaml +430 -0
  28. package/builtins/en/pieces/unit-test.yaml +236 -0
  29. package/builtins/en/policies/review.md +42 -0
  30. package/builtins/ja/config.yaml +73 -18
  31. package/builtins/ja/instructions/implement-e2e-test.md +51 -0
  32. package/builtins/ja/instructions/implement-test.md +52 -0
  33. package/builtins/ja/instructions/plan-e2e-test.md +11 -0
  34. package/builtins/ja/instructions/plan-test.md +11 -0
  35. package/builtins/ja/instructions/review-arch.md +9 -3
  36. package/builtins/ja/instructions/review-qa.md +9 -3
  37. package/builtins/ja/instructions/review-test.md +14 -0
  38. package/builtins/ja/output-contracts/architecture-review.md +8 -3
  39. package/builtins/ja/output-contracts/qa-review.md +8 -3
  40. package/builtins/ja/output-contracts/test-plan.md +24 -0
  41. package/builtins/ja/personas/test-planner.md +25 -0
  42. package/builtins/ja/piece-categories.yaml +10 -16
  43. package/builtins/ja/pieces/coding.yaml +0 -22
  44. package/builtins/ja/pieces/compound-eye.yaml +0 -5
  45. package/builtins/ja/pieces/default.yaml +0 -33
  46. package/builtins/ja/pieces/{default-hybrid-codex.yaml → e2e-test.yaml} +54 -108
  47. package/builtins/ja/pieces/expert-cqrs.yaml +0 -44
  48. package/builtins/ja/pieces/expert.yaml +0 -42
  49. package/builtins/ja/pieces/magi.yaml +0 -4
  50. package/builtins/ja/pieces/minimal.yaml +0 -17
  51. package/builtins/ja/pieces/passthrough.yaml +0 -5
  52. package/builtins/ja/pieces/research.yaml +0 -4
  53. package/builtins/ja/pieces/review-fix-minimal.yaml +0 -17
  54. package/builtins/ja/pieces/review-only.yaml +0 -22
  55. package/builtins/ja/pieces/structural-reform.yaml +430 -0
  56. package/builtins/ja/pieces/unit-test.yaml +236 -0
  57. package/builtins/ja/policies/review.md +42 -0
  58. package/builtins/skill/references/yaml-schema.md +2 -2
  59. package/dist/agents/runner.d.ts.map +1 -1
  60. package/dist/agents/runner.js +1 -0
  61. package/dist/agents/runner.js.map +1 -1
  62. package/dist/agents/types.d.ts +1 -0
  63. package/dist/agents/types.d.ts.map +1 -1
  64. package/dist/app/cli/routing.d.ts.map +1 -1
  65. package/dist/app/cli/routing.js +40 -5
  66. package/dist/app/cli/routing.js.map +1 -1
  67. package/dist/core/models/global-config.d.ts +4 -0
  68. package/dist/core/models/global-config.d.ts.map +1 -1
  69. package/dist/core/models/index.d.ts +1 -0
  70. package/dist/core/models/index.d.ts.map +1 -1
  71. package/dist/core/models/index.js +2 -0
  72. package/dist/core/models/index.js.map +1 -1
  73. package/dist/core/models/interactive-mode.d.ts +16 -0
  74. package/dist/core/models/interactive-mode.d.ts.map +1 -0
  75. package/dist/core/models/interactive-mode.js +14 -0
  76. package/dist/core/models/interactive-mode.js.map +1 -0
  77. package/dist/core/models/piece-types.d.ts +3 -0
  78. package/dist/core/models/piece-types.d.ts.map +1 -1
  79. package/dist/core/models/schemas.d.ts +21 -1
  80. package/dist/core/models/schemas.d.ts.map +1 -1
  81. package/dist/core/models/schemas.js +10 -0
  82. package/dist/core/models/schemas.js.map +1 -1
  83. package/dist/core/models/status.d.ts +1 -1
  84. package/dist/core/models/status.d.ts.map +1 -1
  85. package/dist/core/piece/engine/OptionsBuilder.d.ts.map +1 -1
  86. package/dist/core/piece/engine/OptionsBuilder.js +2 -1
  87. package/dist/core/piece/engine/OptionsBuilder.js.map +1 -1
  88. package/dist/core/piece/engine/ParallelRunner.d.ts +1 -0
  89. package/dist/core/piece/engine/ParallelRunner.d.ts.map +1 -1
  90. package/dist/core/piece/engine/ParallelRunner.js +26 -13
  91. package/dist/core/piece/engine/ParallelRunner.js.map +1 -1
  92. package/dist/core/piece/engine/PieceEngine.d.ts +1 -0
  93. package/dist/core/piece/engine/PieceEngine.d.ts.map +1 -1
  94. package/dist/core/piece/engine/PieceEngine.js +14 -0
  95. package/dist/core/piece/engine/PieceEngine.js.map +1 -1
  96. package/dist/core/piece/engine/parallel-logger.d.ts +12 -0
  97. package/dist/core/piece/engine/parallel-logger.d.ts.map +1 -1
  98. package/dist/core/piece/engine/parallel-logger.js +13 -0
  99. package/dist/core/piece/engine/parallel-logger.js.map +1 -1
  100. package/dist/core/piece/types.d.ts +7 -0
  101. package/dist/core/piece/types.d.ts.map +1 -1
  102. package/dist/features/config/resetCategories.d.ts +1 -1
  103. package/dist/features/config/resetCategories.d.ts.map +1 -1
  104. package/dist/features/config/resetCategories.js +3 -5
  105. package/dist/features/config/resetCategories.js.map +1 -1
  106. package/dist/features/config/switchPiece.js +1 -1
  107. package/dist/features/config/switchPiece.js.map +1 -1
  108. package/dist/features/interactive/conversationLoop.d.ts +63 -0
  109. package/dist/features/interactive/conversationLoop.d.ts.map +1 -0
  110. package/dist/features/interactive/conversationLoop.js +221 -0
  111. package/dist/features/interactive/conversationLoop.js.map +1 -0
  112. package/dist/features/interactive/index.d.ts +5 -1
  113. package/dist/features/interactive/index.d.ts.map +1 -1
  114. package/dist/features/interactive/index.js +5 -1
  115. package/dist/features/interactive/index.js.map +1 -1
  116. package/dist/features/interactive/interactive.d.ts +38 -1
  117. package/dist/features/interactive/interactive.d.ts.map +1 -1
  118. package/dist/features/interactive/interactive.js +26 -203
  119. package/dist/features/interactive/interactive.js.map +1 -1
  120. package/dist/features/interactive/lineEditor.d.ts.map +1 -1
  121. package/dist/features/interactive/lineEditor.js +164 -50
  122. package/dist/features/interactive/lineEditor.js.map +1 -1
  123. package/dist/features/interactive/modeSelection.d.ts +16 -0
  124. package/dist/features/interactive/modeSelection.d.ts.map +1 -0
  125. package/dist/features/interactive/modeSelection.js +27 -0
  126. package/dist/features/interactive/modeSelection.js.map +1 -0
  127. package/dist/features/interactive/passthroughMode.d.ts +19 -0
  128. package/dist/features/interactive/passthroughMode.d.ts.map +1 -0
  129. package/dist/features/interactive/passthroughMode.js +40 -0
  130. package/dist/features/interactive/passthroughMode.js.map +1 -0
  131. package/dist/features/interactive/personaMode.d.ts +25 -0
  132. package/dist/features/interactive/personaMode.d.ts.map +1 -0
  133. package/dist/features/interactive/personaMode.js +39 -0
  134. package/dist/features/interactive/personaMode.js.map +1 -0
  135. package/dist/features/interactive/quietMode.d.ts +24 -0
  136. package/dist/features/interactive/quietMode.d.ts.map +1 -0
  137. package/dist/features/interactive/quietMode.js +77 -0
  138. package/dist/features/interactive/quietMode.js.map +1 -0
  139. package/dist/features/tasks/add/index.d.ts +6 -3
  140. package/dist/features/tasks/add/index.d.ts.map +1 -1
  141. package/dist/features/tasks/add/index.js +15 -38
  142. package/dist/features/tasks/add/index.js.map +1 -1
  143. package/dist/features/tasks/execute/parallelExecution.d.ts +9 -4
  144. package/dist/features/tasks/execute/parallelExecution.d.ts.map +1 -1
  145. package/dist/features/tasks/execute/parallelExecution.js +104 -22
  146. package/dist/features/tasks/execute/parallelExecution.js.map +1 -1
  147. package/dist/features/tasks/execute/pieceExecution.d.ts.map +1 -1
  148. package/dist/features/tasks/execute/pieceExecution.js +133 -39
  149. package/dist/features/tasks/execute/pieceExecution.js.map +1 -1
  150. package/dist/features/tasks/execute/resolveTask.d.ts +1 -1
  151. package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
  152. package/dist/features/tasks/execute/resolveTask.js +10 -1
  153. package/dist/features/tasks/execute/resolveTask.js.map +1 -1
  154. package/dist/features/tasks/execute/selectAndExecute.js +1 -1
  155. package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
  156. package/dist/features/tasks/execute/taskExecution.d.ts +1 -0
  157. package/dist/features/tasks/execute/taskExecution.d.ts.map +1 -1
  158. package/dist/features/tasks/execute/taskExecution.js +52 -17
  159. package/dist/features/tasks/execute/taskExecution.js.map +1 -1
  160. package/dist/features/tasks/execute/types.d.ts +8 -0
  161. package/dist/features/tasks/execute/types.d.ts.map +1 -1
  162. package/dist/features/tasks/list/index.d.ts.map +1 -1
  163. package/dist/features/tasks/list/index.js +5 -4
  164. package/dist/features/tasks/list/index.js.map +1 -1
  165. package/dist/features/tasks/list/listNonInteractive.d.ts.map +1 -1
  166. package/dist/features/tasks/list/listNonInteractive.js +3 -2
  167. package/dist/features/tasks/list/listNonInteractive.js.map +1 -1
  168. package/dist/features/tasks/list/taskActions.d.ts.map +1 -1
  169. package/dist/features/tasks/list/taskActions.js +39 -15
  170. package/dist/features/tasks/list/taskActions.js.map +1 -1
  171. package/dist/features/tasks/list/taskDeleteActions.d.ts +1 -1
  172. package/dist/features/tasks/list/taskDeleteActions.d.ts.map +1 -1
  173. package/dist/features/tasks/list/taskDeleteActions.js +11 -5
  174. package/dist/features/tasks/list/taskDeleteActions.js.map +1 -1
  175. package/dist/features/tasks/list/taskRetryActions.d.ts +0 -1
  176. package/dist/features/tasks/list/taskRetryActions.d.ts.map +1 -1
  177. package/dist/features/tasks/list/taskRetryActions.js +15 -137
  178. package/dist/features/tasks/list/taskRetryActions.js.map +1 -1
  179. package/dist/features/tasks/list/taskStatusLabel.d.ts +3 -0
  180. package/dist/features/tasks/list/taskStatusLabel.d.ts.map +1 -0
  181. package/dist/features/tasks/list/taskStatusLabel.js +8 -0
  182. package/dist/features/tasks/list/taskStatusLabel.js.map +1 -0
  183. package/dist/features/tasks/watch/index.d.ts +1 -1
  184. package/dist/features/tasks/watch/index.d.ts.map +1 -1
  185. package/dist/features/tasks/watch/index.js +5 -1
  186. package/dist/features/tasks/watch/index.js.map +1 -1
  187. package/dist/infra/claude/client.js +2 -2
  188. package/dist/infra/claude/client.js.map +1 -1
  189. package/dist/infra/codex/client.d.ts +2 -0
  190. package/dist/infra/codex/client.d.ts.map +1 -1
  191. package/dist/infra/codex/client.js +207 -100
  192. package/dist/infra/codex/client.js.map +1 -1
  193. package/dist/infra/codex/types.d.ts +1 -0
  194. package/dist/infra/codex/types.d.ts.map +1 -1
  195. package/dist/infra/config/global/globalConfig.d.ts.map +1 -1
  196. package/dist/infra/config/global/globalConfig.js +9 -0
  197. package/dist/infra/config/global/globalConfig.js.map +1 -1
  198. package/dist/infra/config/global/index.d.ts +1 -1
  199. package/dist/infra/config/global/index.d.ts.map +1 -1
  200. package/dist/infra/config/global/index.js +1 -1
  201. package/dist/infra/config/global/index.js.map +1 -1
  202. package/dist/infra/config/global/pieceCategories.d.ts +3 -10
  203. package/dist/infra/config/global/pieceCategories.d.ts.map +1 -1
  204. package/dist/infra/config/global/pieceCategories.js +9 -37
  205. package/dist/infra/config/global/pieceCategories.js.map +1 -1
  206. package/dist/infra/config/loaders/index.d.ts +1 -1
  207. package/dist/infra/config/loaders/index.d.ts.map +1 -1
  208. package/dist/infra/config/loaders/index.js.map +1 -1
  209. package/dist/infra/config/loaders/pieceCategories.d.ts +8 -6
  210. package/dist/infra/config/loaders/pieceCategories.d.ts.map +1 -1
  211. package/dist/infra/config/loaders/pieceCategories.js +116 -32
  212. package/dist/infra/config/loaders/pieceCategories.js.map +1 -1
  213. package/dist/infra/config/loaders/pieceLoader.d.ts +1 -1
  214. package/dist/infra/config/loaders/pieceLoader.d.ts.map +1 -1
  215. package/dist/infra/config/loaders/pieceLoader.js.map +1 -1
  216. package/dist/infra/config/loaders/pieceParser.d.ts.map +1 -1
  217. package/dist/infra/config/loaders/pieceParser.js +12 -7
  218. package/dist/infra/config/loaders/pieceParser.js.map +1 -1
  219. package/dist/infra/config/loaders/pieceResolver.d.ts +14 -2
  220. package/dist/infra/config/loaders/pieceResolver.d.ts.map +1 -1
  221. package/dist/infra/config/loaders/pieceResolver.js +44 -20
  222. package/dist/infra/config/loaders/pieceResolver.js.map +1 -1
  223. package/dist/infra/config/loaders/resource-resolver.d.ts +1 -1
  224. package/dist/infra/config/loaders/resource-resolver.d.ts.map +1 -1
  225. package/dist/infra/config/loaders/resource-resolver.js +1 -1
  226. package/dist/infra/config/loaders/resource-resolver.js.map +1 -1
  227. package/dist/infra/mock/scenario.js +1 -1
  228. package/dist/infra/mock/scenario.js.map +1 -1
  229. package/dist/infra/mock/types.d.ts +2 -2
  230. package/dist/infra/mock/types.d.ts.map +1 -1
  231. package/dist/infra/providers/codex.d.ts.map +1 -1
  232. package/dist/infra/providers/codex.js +5 -4
  233. package/dist/infra/providers/codex.js.map +1 -1
  234. package/dist/infra/providers/types.d.ts +1 -0
  235. package/dist/infra/providers/types.d.ts.map +1 -1
  236. package/dist/infra/task/branchBaseCandidateResolver.d.ts +4 -0
  237. package/dist/infra/task/branchBaseCandidateResolver.d.ts.map +1 -0
  238. package/dist/infra/task/branchBaseCandidateResolver.js +102 -0
  239. package/dist/infra/task/branchBaseCandidateResolver.js.map +1 -0
  240. package/dist/infra/task/branchBaseRefCache.d.ts +7 -0
  241. package/dist/infra/task/branchBaseRefCache.d.ts.map +1 -0
  242. package/dist/infra/task/branchBaseRefCache.js +44 -0
  243. package/dist/infra/task/branchBaseRefCache.js.map +1 -0
  244. package/dist/infra/task/branchEntryPointResolver.d.ts +7 -0
  245. package/dist/infra/task/branchEntryPointResolver.d.ts.map +1 -0
  246. package/dist/infra/task/branchEntryPointResolver.js +24 -0
  247. package/dist/infra/task/branchEntryPointResolver.js.map +1 -0
  248. package/dist/infra/task/branchGitCommands.d.ts +3 -0
  249. package/dist/infra/task/branchGitCommands.d.ts.map +1 -0
  250. package/dist/infra/task/branchGitCommands.js +22 -0
  251. package/dist/infra/task/branchGitCommands.js.map +1 -0
  252. package/dist/infra/task/branchGitResolver.d.ts +15 -0
  253. package/dist/infra/task/branchGitResolver.d.ts.map +1 -0
  254. package/dist/infra/task/branchGitResolver.js +63 -0
  255. package/dist/infra/task/branchGitResolver.js.map +1 -0
  256. package/dist/infra/task/branchList.d.ts +4 -3
  257. package/dist/infra/task/branchList.d.ts.map +1 -1
  258. package/dist/infra/task/branchList.js +68 -19
  259. package/dist/infra/task/branchList.js.map +1 -1
  260. package/dist/infra/task/display.d.ts.map +1 -1
  261. package/dist/infra/task/display.js +2 -3
  262. package/dist/infra/task/display.js.map +1 -1
  263. package/dist/infra/task/index.d.ts +1 -2
  264. package/dist/infra/task/index.d.ts.map +1 -1
  265. package/dist/infra/task/index.js +1 -2
  266. package/dist/infra/task/index.js.map +1 -1
  267. package/dist/infra/task/mapper.d.ts +8 -0
  268. package/dist/infra/task/mapper.d.ts.map +1 -0
  269. package/dist/infra/task/mapper.js +72 -0
  270. package/dist/infra/task/mapper.js.map +1 -0
  271. package/dist/infra/task/naming.d.ts +4 -0
  272. package/dist/infra/task/naming.d.ts.map +1 -0
  273. package/dist/infra/task/naming.js +19 -0
  274. package/dist/infra/task/naming.js.map +1 -0
  275. package/dist/infra/task/runner.d.ts +15 -93
  276. package/dist/infra/task/runner.d.ts.map +1 -1
  277. package/dist/infra/task/runner.js +198 -307
  278. package/dist/infra/task/runner.js.map +1 -1
  279. package/dist/infra/task/schema.d.ts +87 -20
  280. package/dist/infra/task/schema.d.ts.map +1 -1
  281. package/dist/infra/task/schema.js +153 -22
  282. package/dist/infra/task/schema.js.map +1 -1
  283. package/dist/infra/task/store.d.ts +21 -0
  284. package/dist/infra/task/store.d.ts.map +1 -0
  285. package/dist/infra/task/store.js +167 -0
  286. package/dist/infra/task/store.js.map +1 -0
  287. package/dist/infra/task/types.d.ts +6 -1
  288. package/dist/infra/task/types.d.ts.map +1 -1
  289. package/dist/infra/task/watcher.d.ts +1 -1
  290. package/dist/infra/task/watcher.d.ts.map +1 -1
  291. package/dist/infra/task/watcher.js +3 -2
  292. package/dist/infra/task/watcher.js.map +1 -1
  293. package/dist/shared/i18n/labels_en.yaml +11 -0
  294. package/dist/shared/i18n/labels_ja.yaml +11 -0
  295. package/dist/shared/prompts/en/score_summary_system_prompt.md +6 -1
  296. package/dist/shared/prompts/ja/score_summary_system_prompt.md +6 -1
  297. package/dist/shared/ui/TaskPrefixWriter.d.ts +58 -0
  298. package/dist/shared/ui/TaskPrefixWriter.d.ts.map +1 -0
  299. package/dist/shared/ui/TaskPrefixWriter.js +91 -0
  300. package/dist/shared/ui/TaskPrefixWriter.js.map +1 -0
  301. package/dist/shared/ui/index.d.ts +1 -0
  302. package/dist/shared/ui/index.d.ts.map +1 -1
  303. package/dist/shared/ui/index.js +1 -0
  304. package/dist/shared/ui/index.js.map +1 -1
  305. package/package.json +1 -1
  306. package/builtins/en/pieces/coding-hybrid-codex.yaml +0 -158
  307. package/builtins/en/pieces/expert-cqrs-hybrid-codex.yaml +0 -341
  308. package/builtins/en/pieces/expert-hybrid-codex.yaml +0 -335
  309. package/builtins/en/pieces/minimal-hybrid-codex.yaml +0 -202
  310. package/builtins/en/pieces/passthrough-hybrid-codex.yaml +0 -44
  311. package/builtins/en/pieces/review-fix-minimal-hybrid-codex.yaml +0 -202
  312. package/builtins/ja/pieces/coding-hybrid-codex.yaml +0 -158
  313. package/builtins/ja/pieces/expert-cqrs-hybrid-codex.yaml +0 -341
  314. package/builtins/ja/pieces/expert-hybrid-codex.yaml +0 -335
  315. package/builtins/ja/pieces/minimal-hybrid-codex.yaml +0 -202
  316. package/builtins/ja/pieces/passthrough-hybrid-codex.yaml +0 -44
  317. package/builtins/ja/pieces/review-fix-minimal-hybrid-codex.yaml +0 -202
  318. package/dist/infra/task/parser.d.ts +0 -33
  319. package/dist/infra/task/parser.d.ts.map +0 -1
  320. package/dist/infra/task/parser.js +0 -86
  321. package/dist/infra/task/parser.js.map +0 -1
package/README.md CHANGED
@@ -92,13 +92,25 @@ takt
92
92
  takt hello
93
93
  ```
94
94
 
95
- **Note:** Issue references (`#6`) and `--task` / `--issue` options skip interactive mode and execute the task directly. All other inputs (including text with spaces) enter interactive mode for requirement refinement.
95
+ **Note:** `--task` option skips interactive mode and executes the task directly. Issue references (`#6`, `--issue`) are used as initial input in interactive mode.
96
96
 
97
97
  **Flow:**
98
98
  1. Select piece
99
- 2. Refine task content through conversation with AI
100
- 3. Finalize task instructions with `/go` (you can also add additional instructions like `/go additional instructions`), or use `/play <task>` to execute a task immediately
101
- 4. Execute (create worktree, run piece, create PR)
99
+ 2. Select interactive mode (assistant / persona / quiet / passthrough)
100
+ 3. Refine task content through conversation with AI
101
+ 4. Finalize task instructions with `/go` (you can also add additional instructions like `/go additional instructions`), or use `/play <task>` to execute a task immediately
102
+ 5. Execute (create worktree, run piece, create PR)
103
+
104
+ #### Interactive Mode Variants
105
+
106
+ | Mode | Description |
107
+ |------|-------------|
108
+ | `assistant` | Default. AI asks clarifying questions before generating task instructions. |
109
+ | `persona` | Conversation with the first movement's persona (uses its system prompt and tools). |
110
+ | `quiet` | Generates task instructions without asking questions (best-effort). |
111
+ | `passthrough` | Passes user input directly as task text without AI processing. |
112
+
113
+ Pieces can set a default mode via the `interactive_mode` field in YAML.
102
114
 
103
115
  #### Execution Example
104
116
 
@@ -451,8 +463,11 @@ TAKT includes multiple builtin pieces:
451
463
  | `passthrough` | Thinnest wrapper. Pass task directly to coder as-is. No review. |
452
464
  | `compound-eye` | Multi-model review: sends the same instruction to Claude and Codex simultaneously, then synthesizes both responses. |
453
465
  | `review-only` | Read-only code review piece that makes no changes. |
466
+ | `structural-reform` | Full project review and structural reform: iterative codebase restructuring with staged file splits. |
467
+ | `unit-test` | Unit test focused piece: test analysis → test implementation → review → fix. |
468
+ | `e2e-test` | E2E test focused piece: E2E analysis → E2E implementation → review → fix (Vitest-based E2E flow). |
454
469
 
455
- **Hybrid Codex variants** (`*-hybrid-codex`): Each major piece has a Codex variant where the coder agent runs on Codex while reviewers use Claude. Available for: default, minimal, expert, expert-cqrs, passthrough, review-fix-minimal, coding.
470
+ **Per-persona provider overrides:** Use `persona_providers` in config to route specific personas to different providers (e.g., coder on Codex, reviewers on Claude) without duplicating pieces.
456
471
 
457
472
  Use `takt switch` to switch pieces.
458
473
 
@@ -475,6 +490,7 @@ Use `takt switch` to switch pieces.
475
490
  | **research-planner** | Research task planning and scope definition |
476
491
  | **research-digger** | Deep investigation and information gathering |
477
492
  | **research-supervisor** | Research quality validation and completeness assessment |
493
+ | **test-planner** | Test strategy analysis and comprehensive test planning |
478
494
  | **pr-commenter** | Posts review findings as GitHub PR comments |
479
495
 
480
496
  ## Custom Personas
@@ -543,8 +559,15 @@ branch_name_strategy: romaji # Branch name generation: 'romaji' (fast) or 'ai'
543
559
  prevent_sleep: false # Prevent macOS idle sleep during execution (caffeinate)
544
560
  notification_sound: true # Enable/disable notification sounds
545
561
  concurrency: 1 # Parallel task count for takt run (1-10, default: 1 = sequential)
562
+ task_poll_interval_ms: 500 # Polling interval for new tasks during takt run (100-5000, default: 500)
546
563
  interactive_preview_movements: 3 # Movement previews in interactive mode (0-10, default: 3)
547
564
 
565
+ # Per-persona provider overrides (optional)
566
+ # Route specific personas to different providers without duplicating pieces
567
+ # persona_providers:
568
+ # coder: codex # Run coder on Codex
569
+ # ai-antipattern-reviewer: claude # Keep reviewers on Claude
570
+
548
571
  # API Key configuration (optional)
549
572
  # Can be overridden by environment variables TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY
550
573
  anthropic_api_key: sk-ant-... # For Claude (Anthropic)
@@ -1,34 +1,85 @@
1
1
  # TAKT Global Configuration
2
- # This file contains default settings for takt.
2
+ # Location: ~/.takt/config.yaml
3
3
 
4
- # Language setting (en or ja)
4
+ # ── Basic ──
5
+
6
+ # Language (en | ja)
5
7
  language: en
6
8
 
7
- # Default piece to use when no piece is specified
9
+ # Default piece when no piece is specified
8
10
  default_piece: default
9
11
 
10
- # Log level: debug, info, warn, error
12
+ # Log level (debug | info | warn | error)
11
13
  log_level: info
12
14
 
13
- # Provider runtime: claude or codex
14
- provider: claude
15
+ # ── Provider & Model ──
15
16
 
16
- # Builtin pieces (resources/global/{lang}/pieces)
17
- # enable_builtin_pieces: true
17
+ # Provider runtime (claude | codex)
18
+ provider: claude
18
19
 
19
20
  # Default model (optional)
20
- # Claude: opus, sonnet, haiku, opusplan, default, or full model name
21
+ # Claude: opus, sonnet, haiku
21
22
  # Codex: gpt-5.2-codex, gpt-5.1-codex, etc.
22
23
  # model: sonnet
23
24
 
24
- # Anthropic API key (optional, overridden by TAKT_ANTHROPIC_API_KEY env var)
25
- # anthropic_api_key: ""
25
+ # Per-persona provider override (optional)
26
+ # Override provider for specific personas. Others use the global provider.
27
+ # persona_providers:
28
+ # coder: codex
29
+
30
+ # ── API Keys ──
31
+ # Optional. Environment variables take priority:
32
+ # TAKT_ANTHROPIC_API_KEY, TAKT_OPENAI_API_KEY
26
33
 
27
- # OpenAI API key (optional, overridden by TAKT_OPENAI_API_KEY env var)
34
+ # anthropic_api_key: ""
28
35
  # openai_api_key: ""
29
36
 
30
- # Pipeline execution settings (optional)
31
- # Customize branch naming, commit messages, and PR body for pipeline mode (--task).
37
+ # ── Execution ──
38
+
39
+ # Worktree (shared clone) directory (default: ../{clone-name} relative to project)
40
+ # worktree_dir: ~/takt-worktrees
41
+
42
+ # Auto-create PR after worktree execution (default: prompt in interactive mode)
43
+ # auto_pr: false
44
+
45
+ # Prevent macOS idle sleep during execution using caffeinate (default: false)
46
+ # prevent_sleep: false
47
+
48
+ # ── Parallel Execution (takt run) ──
49
+
50
+ # Number of tasks to run concurrently (1 = sequential, max: 10)
51
+ # concurrency: 1
52
+
53
+ # Polling interval in ms for picking up new tasks (100-5000, default: 500)
54
+ # task_poll_interval_ms: 500
55
+
56
+ # ── Interactive Mode ──
57
+
58
+ # Number of movement previews shown in interactive mode (0 to disable, max: 10)
59
+ # interactive_preview_movements: 3
60
+
61
+ # Branch name generation strategy (romaji: fast default | ai: slow)
62
+ # branch_name_strategy: romaji
63
+
64
+ # ── Output ──
65
+
66
+ # Notification sounds (default: true)
67
+ # notification_sound: true
68
+
69
+ # Minimal output for CI - suppress AI output (default: false)
70
+ # minimal_output: false
71
+
72
+ # ── Builtin Pieces ──
73
+
74
+ # Enable builtin pieces (default: true)
75
+ # enable_builtin_pieces: true
76
+
77
+ # Exclude specific builtins from loading
78
+ # disabled_builtins:
79
+ # - magi
80
+
81
+ # ── Pipeline Mode (--pipeline) ──
82
+
32
83
  # pipeline:
33
84
  # default_branch_prefix: "takt/"
34
85
  # commit_message_template: "feat: {title} (#{issue})"
@@ -37,10 +88,14 @@ provider: claude
37
88
  # {issue_body}
38
89
  # Closes #{issue}
39
90
 
40
- # Notification sounds (true: enabled, false: disabled, default: true)
41
- # notification_sound: true
91
+ # ── Preferences ──
92
+
93
+ # Custom paths for preference files
94
+ # bookmarks_file: ~/.takt/preferences/bookmarks.yaml
95
+ # piece_categories_file: ~/.takt/preferences/piece-categories.yaml
96
+
97
+ # ── Debug ──
42
98
 
43
- # Debug settings (optional)
44
99
  # debug:
45
100
  # enabled: false
46
101
  # log_file: ~/.takt/logs/debug.log
@@ -0,0 +1,51 @@
1
+ Implement E2E tests according to the test plan.
2
+ Refer only to files within the Report Directory shown in the Piece Context. Do not search or reference other report directories.
3
+
4
+ **Actions:**
5
+ 1. Review the test plan report
6
+ 2. Implement or update tests following existing E2E layout (e.g., `e2e/specs/`)
7
+ 3. Run E2E tests (minimum: `npm run test:e2e:mock`, and targeted spec runs when needed)
8
+ 4. If tests fail, analyze root cause, fix test or code, and rerun
9
+ 5. Confirm related existing tests are not broken
10
+
11
+ **Constraints:**
12
+ - Keep the current E2E framework (Vitest) unchanged
13
+ - Keep one scenario per test and make assertions explicit
14
+ - Reuse existing fixtures/helpers/mock strategy for external dependencies
15
+
16
+ **Scope output contract (create at the start of implementation):**
17
+ ```markdown
18
+ # Change Scope Declaration
19
+
20
+ ## Task
21
+ {One-line task summary}
22
+
23
+ ## Planned changes
24
+ | Type | File |
25
+ |------|------|
26
+ | Create | `e2e/specs/example.e2e.ts` |
27
+
28
+ ## Estimated size
29
+ Small / Medium / Large
30
+
31
+ ## Impact area
32
+ - {Affected modules or features}
33
+ ```
34
+
35
+ **Decisions output contract (at implementation completion, only if decisions were made):**
36
+ ```markdown
37
+ # Decision Log
38
+
39
+ ## 1. {Decision}
40
+ - **Context**: {Why the decision was needed}
41
+ - **Options considered**: {List of options}
42
+ - **Rationale**: {Reason for the choice}
43
+ ```
44
+
45
+ **Required output (include headings)**
46
+ ## Work results
47
+ - {Summary of actions taken}
48
+ ## Changes made
49
+ - {Summary of changes}
50
+ ## Test results
51
+ - {Command executed and results}
@@ -0,0 +1,52 @@
1
+ Implement unit tests according to the test plan.
2
+ Refer only to files within the Report Directory shown in the Piece Context. Do not search or reference other report directories.
3
+
4
+ **Important: Do NOT modify production code. Only test files may be edited.**
5
+
6
+ **Actions:**
7
+ 1. Review the test plan report
8
+ 2. Implement the planned test cases
9
+ 3. Run tests and verify all pass
10
+ 4. Confirm existing tests are not broken
11
+
12
+ **Test implementation constraints:**
13
+ - Follow the project's existing test patterns (naming conventions, directory structure, helpers)
14
+ - Write tests in Given-When-Then structure
15
+ - One concept per test. Do not mix multiple concerns in a single test
16
+
17
+ **Scope output contract (create at the start of implementation):**
18
+ ```markdown
19
+ # Change Scope Declaration
20
+
21
+ ## Task
22
+ {One-line task summary}
23
+
24
+ ## Planned changes
25
+ | Type | File |
26
+ |------|------|
27
+ | Create | `src/__tests__/example.test.ts` |
28
+
29
+ ## Estimated size
30
+ Small / Medium / Large
31
+
32
+ ## Impact area
33
+ - {Affected modules or features}
34
+ ```
35
+
36
+ **Decisions output contract (at implementation completion, only if decisions were made):**
37
+ ```markdown
38
+ # Decision Log
39
+
40
+ ## 1. {Decision}
41
+ - **Context**: {Why the decision was needed}
42
+ - **Options considered**: {List of options}
43
+ - **Rationale**: {Reason for the choice}
44
+ ```
45
+
46
+ **Required output (include headings)**
47
+ ## Work results
48
+ - {Summary of actions taken}
49
+ ## Changes made
50
+ - {Summary of changes}
51
+ ## Test results
52
+ - {Command executed and results}
@@ -0,0 +1,11 @@
1
+ Analyze the target code and identify missing E2E tests.
2
+
3
+ **Note:** If a Previous Response exists, this is a replan due to rejection.
4
+ Revise the test plan taking that feedback into account.
5
+
6
+ **Actions:**
7
+ 1. Read target features, implementation, and existing E2E specs (`e2e/specs/**/*.e2e.ts`) to understand behavior
8
+ 2. Summarize current E2E coverage (happy path, failure path, regression points)
9
+ 3. Identify missing E2E scenarios with expected outcomes and observability points
10
+ 4. Specify execution commands (`npm run test:e2e:mock` and, when needed, `npx vitest run e2e/specs/<target>.e2e.ts`)
11
+ 5. Provide concrete guidance for failure analysis → fix → rerun workflow
@@ -0,0 +1,11 @@
1
+ Analyze the target code and identify missing unit tests.
2
+
3
+ **Note:** If a Previous Response exists, this is a replan due to rejection.
4
+ Revise the test plan taking that feedback into account.
5
+
6
+ **Actions:**
7
+ 1. Read the target module source code and understand its behavior, branches, and state transitions
8
+ 2. Read existing tests and identify what is already covered
9
+ 3. Identify missing test cases (happy path, error cases, boundary values, edge cases)
10
+ 4. Determine test strategy (mock approach, existing test helper usage, fixture design)
11
+ 5. Provide concrete guidelines for the test implementer
@@ -9,8 +9,14 @@ Do not review AI-specific issues (already covered by the ai_review movement).
9
9
  - Dead code
10
10
  - Call chain verification
11
11
 
12
+ **Previous finding tracking (required):**
13
+ - First, extract open findings from "Previous Response"
14
+ - Assign `finding_id` to each finding and classify current status as `new / persists / resolved`
15
+ - If status is `persists`, provide concrete unresolved evidence (file/line)
16
+
12
17
  ## Judgment Procedure
13
18
 
14
- 1. Review the change diff and detect issues based on the architecture and design criteria above
15
- 2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
16
- 3. If there is even one blocking issue, judge as REJECT
19
+ 1. First, extract previous open findings and preliminarily classify as `new / persists / resolved`
20
+ 2. Review the change diff and detect issues based on the architecture and design criteria above
21
+ 3. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
22
+ 4. If there is even one blocking issue (`new` or `persists`), judge as REJECT
@@ -7,8 +7,14 @@ Review the changes from a quality assurance perspective.
7
7
  - Logging and monitoring
8
8
  - Maintainability
9
9
 
10
+ **Previous finding tracking (required):**
11
+ - First, extract open findings from "Previous Response"
12
+ - Assign `finding_id` to each finding and classify current status as `new / persists / resolved`
13
+ - If status is `persists`, provide concrete unresolved evidence (file/line)
14
+
10
15
  ## Judgment Procedure
11
16
 
12
- 1. Review the change diff and detect issues based on the quality assurance criteria above
13
- 2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
14
- 3. If there is even one blocking issue, judge as REJECT
17
+ 1. First, extract previous open findings and preliminarily classify as `new / persists / resolved`
18
+ 2. Review the change diff and detect issues based on the quality assurance criteria above
19
+ 3. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
20
+ 4. If there is even one blocking issue (`new` or `persists`), judge as REJECT
@@ -0,0 +1,14 @@
1
+ Review the changes from a test quality perspective.
2
+
3
+ **Review criteria:**
4
+ - Whether all test plan items are covered
5
+ - Test quality (Given-When-Then structure, independence, reproducibility)
6
+ - Test naming conventions
7
+ - Completeness (unnecessary tests, missing cases)
8
+ - Appropriateness of mocks and fixtures
9
+
10
+ ## Judgment Procedure
11
+
12
+ 1. Cross-reference the test plan report ({report:00-test-plan.md}) with the implemented tests
13
+ 2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
14
+ 3. If there is even one blocking issue, judge as REJECT
@@ -14,10 +14,15 @@
14
14
  - [x] Dead code
15
15
  - [x] Call chain verification
16
16
 
17
+ ## Previous Open Findings
18
+ | finding_id | Previous Status | Current Status (new/persists/resolved) | Evidence |
19
+ |------------|-----------------|-----------------------------------------|----------|
20
+ | ARCH-EXAMPLE-src-file-L42 | open | persists | `src/file.ts:42` |
21
+
17
22
  ## Issues (if REJECT)
18
- | # | Scope | Location | Issue | Fix Suggestion |
19
- |---|-------|----------|-------|----------------|
20
- | 1 | In-scope | `src/file.ts:42` | Issue description | Fix approach |
23
+ | # | finding_id | Status (new/persists) | Scope | Location | Issue | Fix Suggestion |
24
+ |---|------------|-----------------------|-------|----------|-------|----------------|
25
+ | 1 | ARCH-EXAMPLE-src-file-L42 | new | In-scope | `src/file.ts:42` | Issue description | Fix approach |
21
26
 
22
27
  Scope: "In-scope" (fixable in this change) / "Out-of-scope" (existing issue, non-blocking)
23
28
 
@@ -15,8 +15,13 @@
15
15
  | Documentation | ✅ | - |
16
16
  | Maintainability | ✅ | - |
17
17
 
18
+ ## Previous Open Findings
19
+ | finding_id | Previous Status | Current Status (new/persists/resolved) | Evidence |
20
+ |------------|-----------------|-----------------------------------------|----------|
21
+ | QA-EXAMPLE-src-file-L42 | open | persists | `src/file.ts:42` |
22
+
18
23
  ## Issues (if REJECT)
19
- | # | Category | Issue | Fix Suggestion |
20
- |---|----------|-------|----------------|
21
- | 1 | Testing | Issue description | Fix approach |
24
+ | # | finding_id | Status (new/persists) | Category | Issue | Fix Suggestion |
25
+ |---|------------|-----------------------|----------|-------|----------------|
26
+ | 1 | QA-EXAMPLE-src-file-L42 | new | Testing | Issue description | Fix approach |
22
27
  ```
@@ -0,0 +1,24 @@
1
+ ```markdown
2
+ # Test Plan
3
+
4
+ ## Target Modules
5
+ {List of modules to analyze}
6
+
7
+ ## Existing Test Analysis
8
+ | Module | Existing Tests | Coverage Status |
9
+ |--------|---------------|-----------------|
10
+ | `src/xxx.ts` | `xxx.test.ts` | {Coverage status} |
11
+
12
+ ## Missing Test Cases
13
+ | # | Target | Test Case | Priority | Reason |
14
+ |---|--------|-----------|----------|--------|
15
+ | 1 | `src/xxx.ts` | {Test case summary} | High/Medium/Low | {Reason} |
16
+
17
+ ## Test Strategy
18
+ - {Mock approach}
19
+ - {Fixture design}
20
+ - {Test helper usage}
21
+
22
+ ## Implementation Guidelines
23
+ - {Concrete instructions for the test implementer}
24
+ ```
@@ -0,0 +1,25 @@
1
+ # Test Planner
2
+
3
+ You are a **test analysis and planning specialist**. You understand the behavior of target code, analyze existing test coverage, and systematically identify missing test cases.
4
+
5
+ ## Role Boundaries
6
+
7
+ **Do:**
8
+ - Analyze target code behavior, branches, and state transitions
9
+ - Analyze existing test coverage
10
+ - Identify missing test cases (happy path, error cases, boundary values, edge cases)
11
+ - Determine test strategy (mock approach, fixture design, test helper usage)
12
+ - Provide concrete guidelines for test implementers
13
+
14
+ **Don't:**
15
+ - Plan production code changes (Planner's job)
16
+ - Implement test code (Coder's job)
17
+ - Review code (Reviewer's job)
18
+
19
+ ## Behavioral Principles
20
+
21
+ - Read the code before planning. Don't list test cases based on guesses
22
+ - Always check existing tests. Don't duplicate already-covered scenarios
23
+ - Prioritize tests: business logic and state transitions > edge cases > simple CRUD
24
+ - Provide instructions at a granularity that prevents test implementers from hesitating
25
+ - Follow the project's existing test patterns. Don't propose novel conventions
@@ -10,6 +10,10 @@ piece_categories:
10
10
  pieces:
11
11
  - review-fix-minimal
12
12
  - review-only
13
+ 🧪 Testing:
14
+ pieces:
15
+ - unit-test
16
+ - e2e-test
13
17
  🎨 Frontend: {}
14
18
  ⚙️ Backend: {}
15
19
  🔧 Expert:
@@ -17,20 +21,9 @@ piece_categories:
17
21
  pieces:
18
22
  - expert
19
23
  - expert-cqrs
20
- 🔀 Hybrid (Codex Coding):
21
- 🚀 Quick Start:
22
- pieces:
23
- - coding-hybrid-codex
24
- - default-hybrid-codex
25
- - minimal-hybrid-codex
26
- - passthrough-hybrid-codex
27
- 🔧 Expert:
28
- pieces:
29
- - expert-cqrs-hybrid-codex
30
- - expert-hybrid-codex
31
- 🔍 Review & Fix:
24
+ Refactoring:
32
25
  pieces:
33
- - review-fix-minimal-hybrid-codex
26
+ - structural-reform
34
27
  Others:
35
28
  pieces:
36
29
  - research
@@ -1,24 +1,6 @@
1
1
  name: coding
2
2
  description: Lightweight development piece with planning and parallel reviews (plan -> implement -> parallel review -> complete)
3
3
  max_iterations: 20
4
- policies:
5
- coding: ../policies/coding.md
6
- review: ../policies/review.md
7
- testing: ../policies/testing.md
8
- ai-antipattern: ../policies/ai-antipattern.md
9
- knowledge:
10
- architecture: ../knowledge/architecture.md
11
- personas:
12
- planner: ../personas/planner.md
13
- coder: ../personas/coder.md
14
- ai-antipattern-reviewer: ../personas/ai-antipattern-reviewer.md
15
- architecture-reviewer: ../personas/architecture-reviewer.md
16
- instructions:
17
- plan: ../instructions/plan.md
18
- implement: ../instructions/implement.md
19
- ai-review: ../instructions/ai-review.md
20
- review-arch: ../instructions/review-arch.md
21
- fix: ../instructions/fix.md
22
4
  initial_movement: plan
23
5
  movements:
24
6
  - name: plan
@@ -150,7 +132,3 @@ movements:
150
132
  - condition: Cannot determine, insufficient information
151
133
  next: ABORT
152
134
  instruction: fix
153
- report_formats:
154
- plan: ../output-contracts/plan.md
155
- ai-review: ../output-contracts/ai-review.md
156
- architecture-review: ../output-contracts/architecture-review.md
@@ -1,11 +1,6 @@
1
1
  name: compound-eye
2
2
  description: Multi-model review - send the same instruction to Claude and Codex simultaneously, synthesize both responses
3
3
  max_iterations: 10
4
- knowledge:
5
- architecture: ../knowledge/architecture.md
6
- personas:
7
- coder: ../personas/coder.md
8
- supervisor: ../personas/supervisor.md
9
4
  initial_movement: evaluate
10
5
  movements:
11
6
  - name: evaluate
@@ -1,32 +1,6 @@
1
1
  name: default
2
2
  description: Standard development piece with planning and specialized reviews
3
3
  max_iterations: 30
4
- policies:
5
- coding: ../policies/coding.md
6
- review: ../policies/review.md
7
- testing: ../policies/testing.md
8
- ai-antipattern: ../policies/ai-antipattern.md
9
- qa: ../policies/qa.md
10
- knowledge:
11
- backend: ../knowledge/backend.md
12
- architecture: ../knowledge/architecture.md
13
- personas:
14
- planner: ../personas/planner.md
15
- coder: ../personas/coder.md
16
- ai-antipattern-reviewer: ../personas/ai-antipattern-reviewer.md
17
- architecture-reviewer: ../personas/architecture-reviewer.md
18
- qa-reviewer: ../personas/qa-reviewer.md
19
- supervisor: ../personas/supervisor.md
20
- instructions:
21
- plan: ../instructions/plan.md
22
- implement: ../instructions/implement.md
23
- ai-review: ../instructions/ai-review.md
24
- ai-fix: ../instructions/ai-fix.md
25
- arbitrate: ../instructions/arbitrate.md
26
- review-arch: ../instructions/review-arch.md
27
- review-qa: ../instructions/review-qa.md
28
- fix: ../instructions/fix.md
29
- supervise: ../instructions/supervise.md
30
4
  initial_movement: plan
31
5
  loop_monitors:
32
6
  - cycle:
@@ -282,10 +256,3 @@ movements:
282
256
  report:
283
257
  - Validation: 07-supervisor-validation.md
284
258
  - Summary: summary.md
285
- report_formats:
286
- plan: ../output-contracts/plan.md
287
- ai-review: ../output-contracts/ai-review.md
288
- architecture-review: ../output-contracts/architecture-review.md
289
- qa-review: ../output-contracts/qa-review.md
290
- validation: ../output-contracts/validation.md
291
- summary: ../output-contracts/summary.md