takt 0.30.0 → 0.32.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 (305) hide show
  1. package/README.md +17 -12
  2. package/builtins/en/config.yaml +81 -5
  3. package/builtins/en/facets/instructions/dual-team-leader-implement.md +32 -0
  4. package/builtins/en/facets/instructions/supervise.md +5 -3
  5. package/builtins/en/facets/instructions/team-leader-implement.md +7 -5
  6. package/builtins/en/facets/instructions/write-tests-first.md +1 -4
  7. package/builtins/en/facets/knowledge/cqrs-es.md +50 -0
  8. package/builtins/en/facets/knowledge/security.md +50 -0
  9. package/builtins/en/facets/knowledge/task-decomposition.md +60 -0
  10. package/builtins/en/facets/personas/supervisor.md +1 -69
  11. package/builtins/en/facets/policies/task-decomposition.md +53 -0
  12. package/builtins/en/piece-categories.yaml +16 -14
  13. package/builtins/en/pieces/backend-cqrs-mini.yaml +1 -1
  14. package/builtins/en/pieces/backend-cqrs.yaml +90 -9
  15. package/builtins/en/pieces/backend-mini.yaml +1 -1
  16. package/builtins/en/pieces/backend.yaml +89 -9
  17. package/builtins/en/pieces/compound-eye.yaml +1 -1
  18. package/builtins/en/pieces/default.yaml +2 -2
  19. package/builtins/en/pieces/dual-cqrs-mini.yaml +1 -1
  20. package/builtins/en/pieces/dual-cqrs.yaml +2 -2
  21. package/builtins/en/pieces/dual-mini.yaml +1 -1
  22. package/builtins/en/pieces/dual.yaml +132 -43
  23. package/builtins/en/pieces/e2e-test.yaml +1 -1
  24. package/builtins/en/pieces/frontend-mini.yaml +1 -1
  25. package/builtins/en/pieces/frontend.yaml +89 -9
  26. package/builtins/en/pieces/magi.yaml +3 -3
  27. package/builtins/en/pieces/{backend-cqrs-review.yaml → review-backend-cqrs.yaml} +1 -1
  28. package/builtins/en/pieces/{backend-review.yaml → review-backend.yaml} +1 -1
  29. package/builtins/en/pieces/{review.yaml → review-default.yaml} +2 -2
  30. package/builtins/en/pieces/{dual-cqrs-review.yaml → review-dual-cqrs.yaml} +1 -1
  31. package/builtins/en/pieces/{dual-review.yaml → review-dual.yaml} +1 -1
  32. package/builtins/en/pieces/{backend-cqrs-review-fix.yaml → review-fix-backend-cqrs.yaml} +2 -2
  33. package/builtins/en/pieces/{backend-review-fix.yaml → review-fix-backend.yaml} +2 -2
  34. package/builtins/en/pieces/{review-fix.yaml → review-fix-default.yaml} +2 -2
  35. package/builtins/en/pieces/{dual-cqrs-review-fix.yaml → review-fix-dual-cqrs.yaml} +2 -2
  36. package/builtins/en/pieces/{dual-review-fix.yaml → review-fix-dual.yaml} +2 -2
  37. package/builtins/en/pieces/{frontend-review-fix.yaml → review-fix-frontend.yaml} +2 -2
  38. package/builtins/en/pieces/{takt-default-team-leader.yaml → review-fix-takt-default.yaml} +137 -212
  39. package/builtins/en/pieces/{frontend-review.yaml → review-frontend.yaml} +1 -1
  40. package/builtins/en/pieces/review-takt-default.yaml +295 -0
  41. package/builtins/en/pieces/takt-default.yaml +22 -18
  42. package/builtins/en/pieces/terraform.yaml +3 -3
  43. package/builtins/en/pieces/unit-test.yaml +1 -1
  44. package/builtins/ja/config.yaml +80 -4
  45. package/builtins/ja/facets/instructions/dual-team-leader-implement.md +32 -0
  46. package/builtins/ja/facets/instructions/supervise.md +5 -3
  47. package/builtins/ja/facets/instructions/team-leader-implement.md +7 -5
  48. package/builtins/ja/facets/instructions/write-tests-first.md +1 -4
  49. package/builtins/ja/facets/knowledge/cqrs-es.md +50 -0
  50. package/builtins/ja/facets/knowledge/security.md +50 -0
  51. package/builtins/ja/facets/knowledge/task-decomposition.md +60 -0
  52. package/builtins/ja/facets/personas/supervisor.md +0 -32
  53. package/builtins/ja/facets/policies/task-decomposition.md +53 -0
  54. package/builtins/ja/piece-categories.yaml +16 -14
  55. package/builtins/ja/pieces/backend-cqrs-mini.yaml +1 -1
  56. package/builtins/ja/pieces/backend-cqrs.yaml +90 -9
  57. package/builtins/ja/pieces/backend-mini.yaml +1 -1
  58. package/builtins/ja/pieces/backend.yaml +89 -9
  59. package/builtins/ja/pieces/compound-eye.yaml +1 -1
  60. package/builtins/ja/pieces/default.yaml +2 -2
  61. package/builtins/ja/pieces/dual-cqrs-mini.yaml +1 -1
  62. package/builtins/ja/pieces/dual-cqrs.yaml +2 -2
  63. package/builtins/ja/pieces/dual-mini.yaml +1 -1
  64. package/builtins/ja/pieces/dual.yaml +132 -43
  65. package/builtins/ja/pieces/e2e-test.yaml +1 -1
  66. package/builtins/ja/pieces/frontend-mini.yaml +1 -1
  67. package/builtins/ja/pieces/frontend.yaml +89 -9
  68. package/builtins/ja/pieces/magi.yaml +3 -3
  69. package/builtins/ja/pieces/{backend-cqrs-review.yaml → review-backend-cqrs.yaml} +1 -1
  70. package/builtins/ja/pieces/{backend-review.yaml → review-backend.yaml} +1 -1
  71. package/builtins/ja/pieces/{review.yaml → review-default.yaml} +2 -2
  72. package/builtins/ja/pieces/{dual-cqrs-review.yaml → review-dual-cqrs.yaml} +1 -1
  73. package/builtins/ja/pieces/{dual-review.yaml → review-dual.yaml} +1 -1
  74. package/builtins/ja/pieces/{backend-cqrs-review-fix.yaml → review-fix-backend-cqrs.yaml} +2 -2
  75. package/builtins/ja/pieces/{backend-review-fix.yaml → review-fix-backend.yaml} +2 -2
  76. package/builtins/ja/pieces/{review-fix.yaml → review-fix-default.yaml} +2 -2
  77. package/builtins/ja/pieces/{dual-cqrs-review-fix.yaml → review-fix-dual-cqrs.yaml} +2 -2
  78. package/builtins/ja/pieces/{dual-review-fix.yaml → review-fix-dual.yaml} +2 -2
  79. package/builtins/ja/pieces/{frontend-review-fix.yaml → review-fix-frontend.yaml} +2 -2
  80. package/builtins/ja/pieces/{takt-default-review-fix.yaml → review-fix-takt-default.yaml} +114 -8
  81. package/builtins/ja/pieces/{frontend-review.yaml → review-frontend.yaml} +1 -1
  82. package/builtins/ja/pieces/review-takt-default.yaml +267 -0
  83. package/builtins/ja/pieces/takt-default.yaml +22 -18
  84. package/builtins/ja/pieces/terraform.yaml +3 -3
  85. package/builtins/ja/pieces/unit-test.yaml +1 -1
  86. package/builtins/skill/references/yaml-schema.md +26 -7
  87. package/builtins/skill-codex/SKILL.md +203 -0
  88. package/builtins/skill-codex/agents/openai.yaml +6 -0
  89. package/builtins/skill-codex/references/engine.md +228 -0
  90. package/builtins/skill-codex/references/yaml-schema.md +243 -0
  91. package/dist/app/cli/commands.js +7 -1
  92. package/dist/app/cli/commands.js.map +1 -1
  93. package/dist/app/cli/program.js +2 -2
  94. package/dist/app/cli/program.js.map +1 -1
  95. package/dist/core/models/{persisted-global-config.d.ts → config-types.d.ts} +59 -61
  96. package/dist/core/models/config-types.d.ts.map +1 -0
  97. package/dist/core/models/config-types.js +10 -0
  98. package/dist/core/models/config-types.js.map +1 -0
  99. package/dist/core/models/piece-types.d.ts +4 -4
  100. package/dist/core/models/piece-types.d.ts.map +1 -1
  101. package/dist/core/models/schemas.d.ts +216 -139
  102. package/dist/core/models/schemas.d.ts.map +1 -1
  103. package/dist/core/models/schemas.js +63 -76
  104. package/dist/core/models/schemas.js.map +1 -1
  105. package/dist/core/models/session.d.ts +5 -3
  106. package/dist/core/models/session.d.ts.map +1 -1
  107. package/dist/core/models/session.js.map +1 -1
  108. package/dist/core/models/status.d.ts +3 -1
  109. package/dist/core/models/status.d.ts.map +1 -1
  110. package/dist/core/models/status.js +2 -1
  111. package/dist/core/models/status.js.map +1 -1
  112. package/dist/core/models/types.d.ts +1 -1
  113. package/dist/core/models/types.d.ts.map +1 -1
  114. package/dist/core/piece/engine/MovementExecutor.d.ts.map +1 -1
  115. package/dist/core/piece/engine/MovementExecutor.js +13 -4
  116. package/dist/core/piece/engine/MovementExecutor.js.map +1 -1
  117. package/dist/core/piece/engine/ParallelRunner.d.ts.map +1 -1
  118. package/dist/core/piece/engine/ParallelRunner.js +12 -3
  119. package/dist/core/piece/engine/ParallelRunner.js.map +1 -1
  120. package/dist/core/piece/engine/PieceEngine.d.ts +4 -3
  121. package/dist/core/piece/engine/PieceEngine.d.ts.map +1 -1
  122. package/dist/core/piece/engine/PieceEngine.js +30 -13
  123. package/dist/core/piece/engine/PieceEngine.js.map +1 -1
  124. package/dist/core/piece/engine/team-leader-common.js +1 -1
  125. package/dist/core/piece/engine/team-leader-common.js.map +1 -1
  126. package/dist/core/piece/instruction/InstructionBuilder.js +4 -4
  127. package/dist/core/piece/instruction/InstructionBuilder.js.map +1 -1
  128. package/dist/core/piece/instruction/escape.d.ts +1 -1
  129. package/dist/core/piece/instruction/escape.d.ts.map +1 -1
  130. package/dist/core/piece/instruction/escape.js +2 -2
  131. package/dist/core/piece/instruction/escape.js.map +1 -1
  132. package/dist/core/piece/provider-resolution.d.ts +1 -1
  133. package/dist/core/piece/provider-resolution.d.ts.map +1 -1
  134. package/dist/core/piece/types.d.ts +1 -1
  135. package/dist/core/piece/types.d.ts.map +1 -1
  136. package/dist/features/config/deploySkill.d.ts +0 -17
  137. package/dist/features/config/deploySkill.d.ts.map +1 -1
  138. package/dist/features/config/deploySkill.js +12 -167
  139. package/dist/features/config/deploySkill.js.map +1 -1
  140. package/dist/features/config/deploySkillCodex.d.ts +5 -0
  141. package/dist/features/config/deploySkillCodex.d.ts.map +1 -0
  142. package/dist/features/config/deploySkillCodex.js +18 -0
  143. package/dist/features/config/deploySkillCodex.js.map +1 -0
  144. package/dist/features/config/deploySkillInternal.d.ts +13 -0
  145. package/dist/features/config/deploySkillInternal.d.ts.map +1 -0
  146. package/dist/features/config/deploySkillInternal.js +144 -0
  147. package/dist/features/config/deploySkillInternal.js.map +1 -0
  148. package/dist/features/config/index.d.ts +1 -0
  149. package/dist/features/config/index.d.ts.map +1 -1
  150. package/dist/features/config/index.js +1 -0
  151. package/dist/features/config/index.js.map +1 -1
  152. package/dist/features/tasks/execute/parallelExecution.d.ts +1 -0
  153. package/dist/features/tasks/execute/parallelExecution.d.ts.map +1 -1
  154. package/dist/features/tasks/execute/parallelExecution.js +3 -1
  155. package/dist/features/tasks/execute/parallelExecution.js.map +1 -1
  156. package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
  157. package/dist/features/tasks/execute/resolveTask.js +7 -2
  158. package/dist/features/tasks/execute/resolveTask.js.map +1 -1
  159. package/dist/features/tasks/execute/taskExecution.d.ts.map +1 -1
  160. package/dist/features/tasks/execute/taskExecution.js +8 -5
  161. package/dist/features/tasks/execute/taskExecution.js.map +1 -1
  162. package/dist/features/tasks/execute/types.d.ts +1 -1
  163. package/dist/features/tasks/execute/types.d.ts.map +1 -1
  164. package/dist/features/tasks/list/taskInstructionActions.d.ts.map +1 -1
  165. package/dist/features/tasks/list/taskInstructionActions.js +2 -5
  166. package/dist/features/tasks/list/taskInstructionActions.js.map +1 -1
  167. package/dist/features/tasks/list/taskRetryActions.js +1 -1
  168. package/dist/features/tasks/list/taskRetryActions.js.map +1 -1
  169. package/dist/infra/claude/client.d.ts.map +1 -1
  170. package/dist/infra/claude/client.js +0 -3
  171. package/dist/infra/claude/client.js.map +1 -1
  172. package/dist/infra/claude/process.d.ts +0 -3
  173. package/dist/infra/claude/process.d.ts.map +1 -1
  174. package/dist/infra/claude/process.js +0 -10
  175. package/dist/infra/claude/process.js.map +1 -1
  176. package/dist/infra/config/configNormalizers.d.ts +7 -1
  177. package/dist/infra/config/configNormalizers.d.ts.map +1 -1
  178. package/dist/infra/config/configNormalizers.js +15 -0
  179. package/dist/infra/config/configNormalizers.js.map +1 -1
  180. package/dist/infra/config/env/config-env-overrides.d.ts.map +1 -1
  181. package/dist/infra/config/env/config-env-overrides.js +0 -2
  182. package/dist/infra/config/env/config-env-overrides.js.map +1 -1
  183. package/dist/infra/config/global/globalConfig.d.ts +1 -2
  184. package/dist/infra/config/global/globalConfig.d.ts.map +1 -1
  185. package/dist/infra/config/global/globalConfig.js +1 -8
  186. package/dist/infra/config/global/globalConfig.js.map +1 -1
  187. package/dist/infra/config/global/globalConfigCore.d.ts +5 -9
  188. package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
  189. package/dist/infra/config/global/globalConfigCore.js +11 -22
  190. package/dist/infra/config/global/globalConfigCore.js.map +1 -1
  191. package/dist/infra/config/global/globalConfigResolvers.js.map +1 -1
  192. package/dist/infra/config/global/globalConfigSerializer.d.ts +2 -2
  193. package/dist/infra/config/global/globalConfigSerializer.d.ts.map +1 -1
  194. package/dist/infra/config/global/globalConfigSerializer.js +33 -0
  195. package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
  196. package/dist/infra/config/loaders/pieceParser.d.ts +1 -1
  197. package/dist/infra/config/loaders/pieceParser.d.ts.map +1 -1
  198. package/dist/infra/config/loaders/pieceParser.js +33 -11
  199. package/dist/infra/config/loaders/pieceParser.js.map +1 -1
  200. package/dist/infra/config/loaders/pieceResolver.js +2 -2
  201. package/dist/infra/config/loaders/pieceResolver.js.map +1 -1
  202. package/dist/infra/config/loaders/qualityGateOverrides.d.ts +8 -5
  203. package/dist/infra/config/loaders/qualityGateOverrides.d.ts.map +1 -1
  204. package/dist/infra/config/loaders/qualityGateOverrides.js +25 -4
  205. package/dist/infra/config/loaders/qualityGateOverrides.js.map +1 -1
  206. package/dist/infra/config/loaders/resource-resolver.d.ts +4 -4
  207. package/dist/infra/config/loaders/resource-resolver.d.ts.map +1 -1
  208. package/dist/infra/config/loaders/resource-resolver.js +3 -3
  209. package/dist/infra/config/loaders/resource-resolver.js.map +1 -1
  210. package/dist/infra/config/paths.d.ts +2 -2
  211. package/dist/infra/config/paths.d.ts.map +1 -1
  212. package/dist/infra/config/project/projectConfig.d.ts +5 -5
  213. package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
  214. package/dist/infra/config/project/projectConfig.js +10 -36
  215. package/dist/infra/config/project/projectConfig.js.map +1 -1
  216. package/dist/infra/config/project/projectConfigTransforms.d.ts +1 -1
  217. package/dist/infra/config/project/projectConfigTransforms.d.ts.map +1 -1
  218. package/dist/infra/config/project/resolvedSettings.js +2 -2
  219. package/dist/infra/config/project/resolvedSettings.js.map +1 -1
  220. package/dist/infra/config/resolveConfigValue.d.ts +1 -1
  221. package/dist/infra/config/resolveConfigValue.d.ts.map +1 -1
  222. package/dist/infra/config/resolveConfigValue.js +14 -32
  223. package/dist/infra/config/resolveConfigValue.js.map +1 -1
  224. package/dist/infra/config/resolvedConfig.d.ts +7 -10
  225. package/dist/infra/config/resolvedConfig.d.ts.map +1 -1
  226. package/dist/infra/config/types.d.ts +4 -48
  227. package/dist/infra/config/types.d.ts.map +1 -1
  228. package/dist/infra/config/types.js +3 -0
  229. package/dist/infra/config/types.js.map +1 -1
  230. package/dist/infra/mock/scenario.d.ts.map +1 -1
  231. package/dist/infra/mock/scenario.js +3 -3
  232. package/dist/infra/mock/scenario.js.map +1 -1
  233. package/dist/infra/mock/types.d.ts +3 -2
  234. package/dist/infra/mock/types.d.ts.map +1 -1
  235. package/dist/infra/opencode/client.d.ts.map +1 -1
  236. package/dist/infra/opencode/client.js +12 -0
  237. package/dist/infra/opencode/client.js.map +1 -1
  238. package/dist/infra/task/clone-base-branch.d.ts +2 -0
  239. package/dist/infra/task/clone-base-branch.d.ts.map +1 -1
  240. package/dist/infra/task/clone-base-branch.js +13 -5
  241. package/dist/infra/task/clone-base-branch.js.map +1 -1
  242. package/dist/infra/task/clone.d.ts +1 -0
  243. package/dist/infra/task/clone.d.ts.map +1 -1
  244. package/dist/infra/task/clone.js +29 -5
  245. package/dist/infra/task/clone.js.map +1 -1
  246. package/dist/shared/prompts/en/score_interactive_policy.md +17 -0
  247. package/dist/shared/prompts/index.d.ts +1 -1
  248. package/dist/shared/prompts/index.d.ts.map +1 -1
  249. package/dist/shared/prompts/index.js +2 -2
  250. package/dist/shared/prompts/index.js.map +1 -1
  251. package/dist/shared/prompts/ja/score_interactive_policy.md +17 -0
  252. package/package.json +7 -6
  253. package/builtins/en/pieces/takt-default-review-fix.yaml +0 -235
  254. package/builtins/ja/pieces/takt-default-team-leader.yaml +0 -416
  255. package/dist/core/models/persisted-global-config.d.ts.map +0 -1
  256. package/dist/core/models/persisted-global-config.js +0 -5
  257. package/dist/core/models/persisted-global-config.js.map +0 -1
  258. package/dist/faceted-prompting/compose.d.ts +0 -18
  259. package/dist/faceted-prompting/compose.d.ts.map +0 -1
  260. package/dist/faceted-prompting/compose.js +0 -45
  261. package/dist/faceted-prompting/compose.js.map +0 -1
  262. package/dist/faceted-prompting/data-engine.d.ts +0 -49
  263. package/dist/faceted-prompting/data-engine.d.ts.map +0 -1
  264. package/dist/faceted-prompting/data-engine.js +0 -85
  265. package/dist/faceted-prompting/data-engine.js.map +0 -1
  266. package/dist/faceted-prompting/escape.d.ts +0 -14
  267. package/dist/faceted-prompting/escape.d.ts.map +0 -1
  268. package/dist/faceted-prompting/escape.js +0 -16
  269. package/dist/faceted-prompting/escape.js.map +0 -1
  270. package/dist/faceted-prompting/index.d.ts +0 -18
  271. package/dist/faceted-prompting/index.d.ts.map +0 -1
  272. package/dist/faceted-prompting/index.js +0 -18
  273. package/dist/faceted-prompting/index.js.map +0 -1
  274. package/dist/faceted-prompting/resolve.d.ts +0 -73
  275. package/dist/faceted-prompting/resolve.d.ts.map +0 -1
  276. package/dist/faceted-prompting/resolve.js +0 -160
  277. package/dist/faceted-prompting/resolve.js.map +0 -1
  278. package/dist/faceted-prompting/scope.d.ts +0 -47
  279. package/dist/faceted-prompting/scope.d.ts.map +0 -1
  280. package/dist/faceted-prompting/scope.js +0 -69
  281. package/dist/faceted-prompting/scope.js.map +0 -1
  282. package/dist/faceted-prompting/template.d.ts +0 -27
  283. package/dist/faceted-prompting/template.d.ts.map +0 -1
  284. package/dist/faceted-prompting/template.js +0 -49
  285. package/dist/faceted-prompting/template.js.map +0 -1
  286. package/dist/faceted-prompting/truncation.d.ts +0 -36
  287. package/dist/faceted-prompting/truncation.d.ts.map +0 -1
  288. package/dist/faceted-prompting/truncation.js +0 -63
  289. package/dist/faceted-prompting/truncation.js.map +0 -1
  290. package/dist/faceted-prompting/types.d.ts +0 -44
  291. package/dist/faceted-prompting/types.d.ts.map +0 -1
  292. package/dist/faceted-prompting/types.js +0 -10
  293. package/dist/faceted-prompting/types.js.map +0 -1
  294. package/dist/infra/config/global/globalMigratedProjectLocalFallback.d.ts +0 -6
  295. package/dist/infra/config/global/globalMigratedProjectLocalFallback.d.ts.map +0 -1
  296. package/dist/infra/config/global/globalMigratedProjectLocalFallback.js +0 -34
  297. package/dist/infra/config/global/globalMigratedProjectLocalFallback.js.map +0 -1
  298. package/dist/infra/config/migratedProjectLocalDefaults.d.ts +0 -4
  299. package/dist/infra/config/migratedProjectLocalDefaults.d.ts.map +0 -1
  300. package/dist/infra/config/migratedProjectLocalDefaults.js +0 -11
  301. package/dist/infra/config/migratedProjectLocalDefaults.js.map +0 -1
  302. package/dist/infra/config/migratedProjectLocalKeys.d.ts +0 -42
  303. package/dist/infra/config/migratedProjectLocalKeys.d.ts.map +0 -1
  304. package/dist/infra/config/migratedProjectLocalKeys.js +0 -17
  305. package/dist/infra/config/migratedProjectLocalKeys.js.map +0 -1
package/README.md CHANGED
@@ -12,7 +12,7 @@ TAKT is built with TAKT itself (dogfooding).
12
12
 
13
13
  **Batteries included** — Architecture, security, and AI antipattern review criteria are built in. Ship code that meets a quality bar from day one.
14
14
 
15
- **Practical** — A tool for daily development, not demos. Talk to AI to refine requirements, queue tasks, and run them. Automatic worktree isolation, PR creation, and retry on failure.
15
+ **Practical** — A tool for daily development, not demos. Talk to AI to refine requirements, queue tasks, and run them. Worktree isolation on task execution, PR creation, and retry on failure.
16
16
 
17
17
  **Reproducible** — Execution paths are declared in YAML, keeping results consistent. Pieces are shareable — a workflow built by one team member can be used by anyone else to run the same quality process. Every step is logged in NDJSON for full traceability from task to PR.
18
18
 
@@ -39,7 +39,7 @@ Optional:
39
39
  npm install -g takt
40
40
  ```
41
41
 
42
- ### Talk to AI, then execute
42
+ ### Talk to AI and queue tasks
43
43
 
44
44
  ```
45
45
  $ takt
@@ -55,21 +55,24 @@ Select piece:
55
55
  [AI clarifies requirements and organizes the task]
56
56
 
57
57
  > /go
58
- ```
59
58
 
60
- TAKT creates an isolated worktree, runs the piece (plan → implement → review → fix loop), and offers to create a PR when done.
59
+ Proposed task:
60
+ ...
61
61
 
62
- ### Queue tasks, then batch execute
62
+ What would you like to do?
63
+ Execute now
64
+ Create GitHub Issue
65
+ ❯ Queue as task # ← normal flow
66
+ Continue conversation
67
+ ```
63
68
 
64
- Use `takt` to queue multiple tasks, then execute them all at once:
69
+ Choosing "Queue as task" saves the task to `.takt/tasks/`. Run `takt run` to execute TAKT creates an isolated worktree, runs the piece (plan implement → review → fix loop), and offers to create a PR when done.
65
70
 
66
71
  ```bash
67
- # Queue tasks through conversation
68
- takt
69
- > Refactor the auth module
70
- > /go # queues the task
72
+ # Execute queued tasks
73
+ takt run
71
74
 
72
- # Or queue from GitHub Issues
75
+ # You can also queue from GitHub Issues
73
76
  takt add #6
74
77
  takt add #12
75
78
 
@@ -77,6 +80,8 @@ takt add #12
77
80
  takt run
78
81
  ```
79
82
 
83
+ > **"Execute now"** runs the piece directly in your current directory without worktree isolation. Useful for quick experiments, but note that changes go straight into your working tree.
84
+
80
85
  ### Manage results
81
86
 
82
87
  ```bash
@@ -256,7 +261,7 @@ await engine.run();
256
261
  | [Task Management](./docs/task-management.md) | Task queuing, execution, isolation |
257
262
  | [Data Flow](./docs/data-flow.md) | Internal data flow and architecture diagrams |
258
263
  | [CI/CD Integration](./docs/ci-cd.md) | GitHub Actions and pipeline mode |
259
- | [Provider Sandbox](./docs/provider-sandbox.md) | Sandbox configuration for providers |
264
+ | [Provider Sandbox & Permissions](./docs/provider-sandbox.md) | Sandbox, permission modes, and network access for Codex / OpenCode / Claude |
260
265
  | [Changelog](./CHANGELOG.md) ([日本語](./docs/CHANGELOG.ja.md)) | Version history |
261
266
  | [Security Policy](./SECURITY.md) | Vulnerability reporting |
262
267
 
@@ -2,17 +2,35 @@
2
2
  # Location: ~/.takt/config.yaml
3
3
 
4
4
  # =====================================
5
- # General settings (piece-independent)
5
+ # General settings
6
6
  # =====================================
7
- # Note: this template contains global-only settings for ~/.takt/config.yaml.
8
7
  language: en # UI language: en | ja
9
8
 
9
+ # Default provider and model
10
+ # provider: claude # Default provider: claude | codex | opencode | cursor | copilot | mock
11
+ # model: sonnet # Default model (passed directly to provider)
12
+
10
13
  # Execution control
11
14
  # worktree_dir: ~/takt-worktrees # Base directory for shared clone execution
12
15
  # prevent_sleep: false # Prevent macOS idle sleep while running
13
16
  # auto_fetch: false # Fetch before clone to keep shared clones up-to-date
17
+ # base_branch: main # Base branch to clone from (default: current branch)
18
+ # concurrency: 1 # Number of tasks to run concurrently in takt run (1-10)
19
+ # task_poll_interval_ms: 500 # Polling interval in ms for picking up new tasks (100-5000)
20
+
21
+ # PR / branch
22
+ # auto_pr: false # Auto-create PR after worktree execution
23
+ # draft_pr: false # Create PR as draft
24
+ # branch_name_strategy: romaji # Branch name generation: romaji | ai
25
+
26
+ # Pipeline execution
27
+ # pipeline:
28
+ # default_branch_prefix: "takt/" # Branch prefix for pipeline-created branches
29
+ # commit_message_template: "{title}" # Commit message template. Variables: {title}, {issue}
30
+ # pr_body_template: "{report}" # PR body template. Variables: {issue_body}, {report}, {issue}
14
31
 
15
32
  # Output / notifications
33
+ # minimal_output: false # Suppress detailed agent output
16
34
  # notification_sound: true # Master switch for sounds
17
35
  # notification_sound_events: # Per-event sound toggle (unset means true)
18
36
  # iteration_limit: true
@@ -20,12 +38,63 @@ language: en # UI language: en | ja
20
38
  # piece_abort: true
21
39
  # run_complete: true
22
40
  # run_abort: true
23
- # verbose: false # Shortcut: enable trace/debug and set logging.level=debug
24
41
  # logging:
25
42
  # level: info # Log level for console and file output
26
43
  # trace: true # Generate human-readable execution trace report (trace.md)
27
44
  # debug: false # Enable debug.log + prompts.jsonl
28
- # provider_events: false # Persist provider stream events
45
+ # provider_events: false # Persist provider stream events
46
+ # usage_events: false # Persist usage event logs
47
+
48
+ # Analytics
49
+ # analytics:
50
+ # enabled: true # Enable local analytics collection
51
+ # events_path: ~/.takt/analytics/events # Custom events directory
52
+ # retention_days: 30 # Retention period for event files
53
+
54
+ # Interactive mode
55
+ # interactive_preview_movements: 3 # Number of movement previews in interactive mode (0-10)
56
+
57
+ # Per-persona provider/model overrides
58
+ # persona_providers:
59
+ # coder:
60
+ # provider: claude
61
+ # model: opus
62
+ # reviewer:
63
+ # provider: codex
64
+ # model: gpt-5.2-codex
65
+
66
+ # Provider-specific options (lowest priority, overridden by piece/movement)
67
+ # provider_options:
68
+ # codex:
69
+ # network_access: true
70
+ # claude:
71
+ # sandbox:
72
+ # allow_unsandboxed_commands: true
73
+
74
+ # Provider permission profiles
75
+ # provider_profiles:
76
+ # claude:
77
+ # default_permission_mode: edit
78
+ # codex:
79
+ # default_permission_mode: edit
80
+
81
+ # Runtime environment preparation
82
+ # runtime:
83
+ # prepare: [node, gradle, ./custom-script.sh]
84
+
85
+ # Piece-level overrides
86
+ # piece_overrides:
87
+ # quality_gates:
88
+ # - "All tests pass"
89
+ # quality_gates_edit_only: true
90
+ # movements:
91
+ # review:
92
+ # quality_gates:
93
+ # - "No security vulnerabilities"
94
+ # personas:
95
+ # coder:
96
+ # quality_gates:
97
+ # - "Code follows conventions"
29
98
 
30
99
  # Credentials (environment variables take priority)
31
100
  # anthropic_api_key: "sk-ant-..." # Claude API key
@@ -35,7 +104,14 @@ language: en # UI language: en | ja
35
104
  # groq_api_key: "..." # Groq API key
36
105
  # openrouter_api_key: "..." # OpenRouter API key
37
106
  # opencode_api_key: "..." # OpenCode API key
38
- # codex_cli_path: "/absolute/path/to/codex" # Absolute path to Codex CLI
107
+ # cursor_api_key: "..." # Cursor API key
108
+
109
+ # CLI paths
110
+ # codex_cli_path: "/absolute/path/to/codex" # Absolute path to Codex CLI
111
+ # claude_cli_path: "/absolute/path/to/claude" # Absolute path to Claude Code CLI
112
+ # cursor_cli_path: "/absolute/path/to/cursor" # Absolute path to cursor-agent CLI
113
+ # copilot_cli_path: "/absolute/path/to/copilot" # Absolute path to Copilot CLI
114
+ # copilot_github_token: "ghp_..." # Copilot GitHub token
39
115
 
40
116
  # Misc
41
117
  # bookmarks_file: ~/.takt/preferences/bookmarks.yaml # Bookmark file location
@@ -0,0 +1,32 @@
1
+ Analyze the implementation task and, if decomposition is appropriate, split into multiple parts for parallel execution.
2
+
3
+ **Important:** Reference the plan report: {report:plan.md}
4
+
5
+ **Steps:**
6
+
7
+ 1. Assess whether decomposition is appropriate
8
+ - Identify files to change and check inter-file dependencies
9
+ - If cross-cutting concerns exist (shared types, IDs, events), implement in a single part
10
+ - If few files are involved, or the task is a rename/refactoring, implement in a single part
11
+
12
+ 2. If decomposing: prioritize splitting along frontend and backend boundaries
13
+ - Splitting between frontend (UI, components, styles) and backend (API, logic, data layer) is the most natural decomposition axis
14
+ - When API contracts (request/response types) are defined, parallel implementation works well
15
+ - When API contracts are undecided, implement backend first in one part and defer frontend
16
+ - For frontend-only or backend-only tasks, group by layer/module
17
+ - If there are type or interface dependencies, keep both sides in the same group
18
+ - Never assign the same file to multiple parts
19
+ - Keep test files and implementation files in the same part
20
+
21
+ 3. Assign file ownership exclusively to each part
22
+ - Each part's instruction must clearly state:
23
+ - **Responsible files** (list of files to create/modify)
24
+ - **Reference-only files** (read-only, modification prohibited)
25
+ - **Implementation task** (what and how to implement)
26
+ - **Completion criteria** (implementation of responsible files is complete)
27
+ - If tests are already written, instruct parts to implement so existing tests pass
28
+ - Do not include build checks (all parts complete first, then build is verified together)
29
+
30
+ **Constraints:**
31
+ - Parts do not run tests (handled by subsequent movements)
32
+ - Do not modify files outside your responsibility (causes conflicts)
@@ -1,9 +1,11 @@
1
1
  Run tests, verify the build, and perform final approval.
2
2
 
3
3
  **Overall piece verification:**
4
- 1. Whether the plan and implementation results are consistent
5
- 2. Whether findings from each review movement have been addressed
6
- 3. Whether each task spec requirement has been achieved
4
+ 1. Check all reports in the report directory and verify overall piece consistency
5
+ - Does implementation match the plan?
6
+ - Were all review movement findings properly addressed?
7
+ - Was the original task objective achieved?
8
+ 2. Whether each task spec requirement has been achieved
7
9
  - Extract requirements one by one from the task spec
8
10
  - For each requirement, identify the implementing code (file:line)
9
11
  - Verify the code actually fulfills the requirement (read the file, run the test)
@@ -1,17 +1,19 @@
1
- Decompose the implementation task into subtasks by file ownership and execute them in parallel. Assign files exclusively to each part to prevent conflicts.
1
+ Analyze the implementation task and, if decomposition is appropriate, split into multiple parts for parallel execution.
2
2
 
3
3
  **Important:** Reference the plan report: {report:plan.md}
4
4
 
5
5
  **Steps:**
6
6
 
7
- 1. Identify files to create/modify
8
- - Reference the plan report and test scope to list all files to change
9
- - Review the actual codebase to fill in any missing information
7
+ 1. Assess whether decomposition is appropriate
8
+ - Identify files to change and check inter-file dependencies
9
+ - If cross-cutting concerns exist (shared types, IDs, events), implement in a single part
10
+ - If few files are involved, or the task is a rename/refactoring, implement in a single part
10
11
 
11
- 2. Group files by layer/module
12
+ 2. If decomposing: group files by layer/module
12
13
  - Create groups based on high cohesion (e.g., Domain layer / Infrastructure layer / API layer)
13
14
  - If there are type or interface dependencies, keep both sides in the same group
14
15
  - Never assign the same file to multiple parts
16
+ - Keep test files and implementation files in the same part
15
17
 
16
18
  3. Assign file ownership exclusively to each part
17
19
  - Each part's instruction must clearly state:
@@ -12,14 +12,13 @@ Refer only to files within the Report Directory shown in the Piece Context. Do n
12
12
  - Does a new status/state merge into an existing workflow?
13
13
  - Does a new option propagate through a call chain to the endpoint?
14
14
  - If any apply, create integration tests
15
- 5. Run the build (type check) to verify test code has no syntax errors
16
15
 
17
16
  **Test writing guidelines:**
18
17
  - Follow the project's existing test patterns (naming conventions, directory structure, helpers)
19
18
  - Write tests in Given-When-Then structure
20
19
  - One concept per test. Do not mix multiple concerns in a single test
21
20
  - Cover happy path, error cases, boundary values, and edge cases
22
- - Write tests that are expected to pass after implementation is complete
21
+ - Write tests that are expected to pass after implementation is complete (build errors and test failures are expected at this stage)
23
22
 
24
23
  **Scope output contract (create at the start):**
25
24
  ```markdown
@@ -55,5 +54,3 @@ Small / Medium / Large
55
54
  - {Summary of actions taken}
56
55
  ## Changes made
57
56
  - {List of test files created}
58
- ## Build results
59
- - {Build execution results}
@@ -408,6 +408,56 @@ Checklist:
408
408
  | Query side tests don't create data via Command | Recommended |
409
409
  | Integration tests consider Axon async processing | Required |
410
410
 
411
+ ## Master Data and CRUD
412
+
413
+ Not everything in a CQRS+ES system needs event sourcing. Master data (reference data) with simple characteristics is better implemented as plain CRUD — it's simpler and easier to maintain.
414
+
415
+ However, don't mechanically decide "it's master data, so CRUD". The more criteria below that apply, the more CRUD is suitable. Conversely, if even one requirement calls for CQRS+ES, consider adopting it.
416
+
417
+ **Criteria for determining CRUD is sufficient:**
418
+
419
+ | Aspect | Leans CRUD | Leans CQRS+ES |
420
+ |--------|-----------|---------------|
421
+ | Business requirements | Just "manage X" with no special mentions | Specific business rules or constraints |
422
+ | Logic evolution | Simple reference/update, no foreseeable complexity | State transitions or lifecycle may grow complex |
423
+ | Change history / audit | No need to track "who changed what when" | Change history or audit trail required |
424
+ | Domain events | Changes don't affect other aggregates or processes | Changes trigger downstream processes |
425
+ | Consistency scope | Self-contained, no cross-aggregate consistency needed | Must maintain consistency with other aggregates |
426
+ | Point-in-time queries | No "what was the state at time T" queries | Point-in-time queries required |
427
+
428
+ **Typical CRUD candidates:**
429
+ - Code masters such as prefecture/country codes
430
+ - Classification masters such as categories and tags
431
+ - Configuration values, constant tables
432
+
433
+ **Cases where CQRS+ES is justified:**
434
+ - Product master, but price change history tracking is needed
435
+ - Organization master, but changes trigger permission recalculation
436
+ - Business partner master, but has credit assessment state transitions
437
+
438
+ ```kotlin
439
+ // CRUD is sufficient: Simple category master
440
+ @Entity
441
+ data class Category(
442
+ @Id val categoryId: String,
443
+ val name: String,
444
+ val displayOrder: Int
445
+ )
446
+
447
+ // CQRS+ES is appropriate: Product with price change history tracking
448
+ data class Product(
449
+ val productId: String,
450
+ val currentPrice: Money
451
+ ) {
452
+ fun changePrice(newPrice: Money, reason: String): PriceChangedEvent {
453
+ require(newPrice.amount > BigDecimal.ZERO) { "Price must be positive" }
454
+ return PriceChangedEvent(productId, currentPrice, newPrice, reason)
455
+ }
456
+ }
457
+ ```
458
+
459
+ Even when implementing with CRUD, other aggregates in the CQRS+ES system reference CRUD entities by ID. The principle that CRUD entities don't directly access aggregate internal state still applies.
460
+
411
461
  ## Infrastructure Layer
412
462
 
413
463
  Check:
@@ -98,6 +98,56 @@ app.get('/user/:id', authorize('read:user'), (req, res) => {
98
98
  - Missing type checks → REJECT
99
99
  - No size limits set → REJECT
100
100
 
101
+ ## Logging & Masking
102
+
103
+ Prevent sensitive information from leaking into logs and responses.
104
+
105
+ **Never log:**
106
+ - Passwords, tokens, API keys
107
+ - Credit card numbers, personal identification numbers
108
+ - Session IDs, authentication header values
109
+ - Personal information (email, phone) unless necessary for debugging
110
+
111
+ **Masking patterns:**
112
+
113
+ ```typescript
114
+ // NG - Password exposed in logs
115
+ logger.info('User login attempt', { email, password })
116
+
117
+ // OK - Exclude sensitive fields
118
+ logger.info('User login attempt', { email })
119
+ ```
120
+
121
+ ```kotlin
122
+ // NG - Logging entire request object
123
+ logger.info("Request: {}", request)
124
+
125
+ // OK - Log only safe fields
126
+ logger.info("Request: userId={}, action={}", request.userId, request.action)
127
+ ```
128
+
129
+ **Structured logging field filtering:**
130
+
131
+ When passing objects to log output, ensure `toString()` or JSON serialization does not include sensitive fields.
132
+
133
+ ```kotlin
134
+ // NG - data class toString() includes password
135
+ data class UserCredentials(val email: String, val password: String)
136
+
137
+ // OK - Override toString() to mask sensitive fields
138
+ data class UserCredentials(val email: String, val password: String) {
139
+ override fun toString(): String = "UserCredentials(email=$email, password=***)"
140
+ }
141
+ ```
142
+
143
+ | Criteria | Verdict |
144
+ |----------|---------|
145
+ | Log output contains passwords, tokens, or API keys | REJECT |
146
+ | Error responses contain stack traces or internal paths | REJECT |
147
+ | data class toString() exposes sensitive fields | REJECT |
148
+ | Sensitive info can be output regardless of log level | REJECT |
149
+ | Debug logs contain PII but disabled in production | Warning. Risk of misconfiguration |
150
+
101
151
  ## Cryptography
102
152
 
103
153
  - Use of weak crypto algorithms → REJECT
@@ -0,0 +1,60 @@
1
+ # Task Decomposition Knowledge
2
+
3
+ ## Decomposition Feasibility
4
+
5
+ Before splitting a task into multiple parts, assess whether decomposition is appropriate. Conditions that prohibit decomposition and REJECT criteria are defined in the Task Decomposition Policy. This section explains the underlying reasoning.
6
+
7
+ ### Decision Criteria Table (Rationale)
8
+
9
+ | Perspective | Detection Pattern | Recommended Judgment | Rationale (Why) |
10
+ |-------------|-------------------|----------------------|-----------------|
11
+ | Shared contracts (ID/type) | A new ID/type is defined in one part and referenced by another | Do not decompose (single part) | Producer/consumer mismatches in type, naming, and handoff are common |
12
+ | Event chains | Both emitter and receiver must be changed together | Do not decompose (single part) | Bidirectional assumptions drift and cause runtime inconsistencies |
13
+ | Interface changes | Existing signature change + multiple call-site updates required | Do not decompose (single part) | Missed call-site updates easily lead to build/runtime failures |
14
+ | File ownership overlap | Same file assigned to multiple parts | Do not decompose (restructure plan) | Overwrites/conflicts create repeated REJECT in review cycles |
15
+ | Layer independence | API/Domain/Infra boundaries are clear and dependencies are one-way | Decomposition allowed | Clear boundaries reduce coupling across parts |
16
+
17
+ ### Detecting Cross-Cutting Concerns
18
+
19
+ When any of the following apply, independent parts cannot maintain consistency. Consolidate into a single part.
20
+
21
+ - A new ID, key, or type is generated in one module and consumed in another
22
+ - Both the event emitter and event receiver need changes
23
+ - An existing interface signature changes, requiring updates to all call sites
24
+
25
+ ## Grouping Priority
26
+
27
+ When decomposition is appropriate, use the following criteria to group files.
28
+
29
+ 1. **By dependency direction** — keep dependency source and target in the same part
30
+ 2. **By layer** — domain layer / infrastructure layer / API layer
31
+ 3. **By feature** — independent functional units
32
+
33
+ ## Failure Patterns
34
+
35
+ ### Part Overlap
36
+
37
+ When two parts own the same file or feature, sub-agents overwrite each other's changes, causing repeated REJECT in reviews.
38
+
39
+ ```
40
+ // NG: part-2 and part-3 own the same file
41
+ part-2: taskInstructionActions.ts — instruct confirmation dialog
42
+ part-3: taskInstructionActions.ts — requeue confirmation dialog
43
+
44
+ // OK: consolidate into one part
45
+ part-1: taskInstructionActions.ts — both instruct/requeue confirmation dialogs
46
+ ```
47
+
48
+ ### Shared Contract Mismatch
49
+
50
+ When part A generates an ID that part B consumes, both parts implement independently, leading to mismatches in ID name, type, or passing mechanism.
51
+
52
+ ```
53
+ // NG: shared contract across independent parts
54
+ part-1: generates phaseExecutionId
55
+ part-2: consumes phaseExecutionId
56
+ → part-1 uses string, part-2 expects number → integration error
57
+
58
+ // OK: single part for consistent implementation
59
+ part-1: implements phaseExecutionId from generation to consumption
60
+ ```
@@ -81,15 +81,7 @@ You are the **human proxy** in the automated piece. Before approval, verify the
81
81
  | Production ready | No mock/stub/TODO remaining? |
82
82
  | Operation | Actually works as expected? |
83
83
 
84
- ### 6. Backward Compatibility Code Detection
85
-
86
- **Backward compatibility code is unnecessary unless explicitly instructed.** REJECT if found:
87
-
88
- - Unused re-exports, `_var` renames, `// removed` comments
89
- - Fallbacks, old API maintenance, migration code
90
- - Legacy support kept "just in case"
91
-
92
- ### 7. Spec Compliance Final Check
84
+ ### 6. Spec Compliance Final Check
93
85
 
94
86
  **Final verification that changes comply with the project's documented specifications.**
95
87
 
@@ -115,66 +107,6 @@ Additions can be reverted, but restoring deleted flows is difficult.
115
107
  - A "UI fix" task includes structural changes to backend domain models
116
108
  - A "display change" task rewrites business logic flows
117
109
 
118
- ### 8. Piece Overall Review
119
-
120
- **Check all reports in the report directory and verify overall piece consistency.**
121
-
122
- Check:
123
- - Does implementation match the plan (00-plan.md)?
124
- - Were all review step issues properly addressed?
125
- - Was the original task objective achieved?
126
-
127
- **Piece-wide issues:**
128
- | Issue | Action |
129
- |-------|--------|
130
- | Plan-implementation gap | REJECT - Request plan revision or implementation fix |
131
- | Unaddressed review feedback | REJECT - Point out specific unaddressed items |
132
- | Deviation from original purpose | REJECT - Request return to objective |
133
- | Scope creep | REJECT - Deletions outside task order must be reverted |
134
-
135
- ### 9. Improvement Suggestion Check
136
-
137
- **Check review reports for unaddressed improvement suggestions.**
138
-
139
- Check:
140
- - "Improvement Suggestions" section in Architect report
141
- - Warnings and suggestions in AI Reviewer report
142
- - Recommendations in Security report
143
-
144
- **If there are unaddressed improvement suggestions:**
145
- - Judge if the improvement should be addressed in this task
146
- - If it should be addressed, **REJECT** and request fix
147
- - If it should be addressed in next task, record as "technical debt" in report
148
-
149
- **Judgment criteria:**
150
- | Type of suggestion | Decision |
151
- |--------------------|----------|
152
- | Minor fix in same file | Address now (REJECT) |
153
- | Fixable in seconds to minutes | Address now (REJECT) |
154
- | Redundant code / unnecessary expression removal | Address now (REJECT) |
155
- | Affects other features | Address in next task (record only) |
156
- | External impact (API changes, etc.) | Address in next task (record only) |
157
- | Requires significant refactoring (large scope) | Address in next task (record only) |
158
-
159
- ### Boy Scout Rule
160
-
161
- **"Functionally harmless" is not a free pass.** Classifying a near-zero-cost fix as "non-blocking" or "next task" is a compromise. There is no guarantee it will be addressed in a future task, and it accumulates as technical debt.
162
-
163
- **Principle:** If a reviewer found it and it can be fixed in minutes, make the coder fix it now. Do not settle for recording it as a "non-blocking improvement suggestion."
164
-
165
- ## Workaround Detection
166
-
167
- **REJECT** if any of the following remain:
168
-
169
- | Pattern | Example |
170
- |---------|---------|
171
- | TODO/FIXME | `// TODO: implement later` |
172
- | Commented out | Code that should be deleted remains |
173
- | Hardcoded | Values that should be config are hardcoded |
174
- | Mock data | Dummy data unusable in production |
175
- | console.log | Forgotten debug output |
176
- | Skipped tests | `@Disabled`, `.skip()` |
177
-
178
110
  ## Important
179
111
 
180
112
  - **Actually run**: Don't just look at files, execute and verify
@@ -0,0 +1,53 @@
1
+ # Task Decomposition Policy
2
+
3
+ Ensure decomposition quality for parallel parts.
4
+
5
+ ## Principles
6
+
7
+ | Principle | Criteria |
8
+ |-----------|----------|
9
+ | Explicit decomposition judgment | Evaluate the knowledge base criteria table before decomposing; state the judgment explicitly |
10
+ | File exclusivity | Each file is owned by exactly one part. No exceptions |
11
+ | Dependency direction | If parts have dependencies, merge them into a single part |
12
+ | Tests with implementation | Test files and corresponding implementation files belong to the same part |
13
+ | Quality gates aggregate | Build/test execution belongs in a part that aggregates all other parts' results |
14
+
15
+ ## File Exclusivity
16
+
17
+ When multiple parts edit the same file, sub-agents overwrite each other's changes.
18
+
19
+ | Criteria | Judgment |
20
+ |----------|----------|
21
+ | Same file appears in multiple parts' assignments | REJECT |
22
+ | Type definition file and consumer file in different parts | REJECT (merge into the type definition part) |
23
+ | Assigned files described as "touch as needed on failure" or similar vague expressions | REJECT (determine files upfront) |
24
+ | Test file and implementation file in different parts | REJECT |
25
+ | Wildcard assignments (`src/**/*`) overlapping with another part's scope | REJECT |
26
+
27
+ ## Conditions That Prohibit Decomposition
28
+
29
+ When any of the following apply, implement in a single part. Do not decompose.
30
+
31
+ | Criteria | Judgment |
32
+ |----------|----------|
33
+ | Broad rename or refactor | Single part |
34
+ | Shared types or IDs cross multiple parts | Single part |
35
+ | Fewer than 5 files to change | Single part |
36
+ | Existing interface signature change + updating all call sites | Single part |
37
+
38
+ ## Quality Gate Parts
39
+
40
+ Parts responsible for build/test execution follow different rules from implementation parts.
41
+
42
+ | Criteria | Judgment |
43
+ |----------|----------|
44
+ | Quality gate part includes implementation part files in its assignment | REJECT |
45
+ | Quality gate split into multiple parts | REJECT (merge into one) |
46
+ | Quality gate part's fix scope is "anything" | REJECT (specify target files upfront) |
47
+
48
+ ## Prohibited
49
+
50
+ - **Skipping decomposition judgment** - decomposing without evaluating the knowledge criteria table
51
+ - **Assigning the same file to multiple parts** - including via wildcard assignments
52
+ - **Separating dependent changes** - putting type definitions and consumers, or event emitters and receivers, in different parts
53
+ - **Parts with undefined file assignments** - vague assignments like "fix as needed" or "modify if required"
@@ -33,18 +33,20 @@ piece_categories:
33
33
  - terraform
34
34
  🔍 Review:
35
35
  pieces:
36
- - review
37
- - review-fix
38
- - frontend-review
39
- - frontend-review-fix
40
- - backend-review
41
- - backend-review-fix
42
- - dual-review
43
- - dual-review-fix
44
- - dual-cqrs-review
45
- - dual-cqrs-review-fix
46
- - backend-cqrs-review
47
- - backend-cqrs-review-fix
36
+ - review-default
37
+ - review-fix-default
38
+ - review-frontend
39
+ - review-fix-frontend
40
+ - review-backend
41
+ - review-fix-backend
42
+ - review-dual
43
+ - review-fix-dual
44
+ - review-dual-cqrs
45
+ - review-fix-dual-cqrs
46
+ - review-backend-cqrs
47
+ - review-fix-backend-cqrs
48
+ - review-takt-default
49
+ - review-fix-takt-default
48
50
  🧪 Testing:
49
51
  pieces:
50
52
  - unit-test
@@ -52,8 +54,8 @@ piece_categories:
52
54
  🎵 TAKT Development:
53
55
  pieces:
54
56
  - takt-default
55
- - takt-default-team-leader
56
- - takt-default-review-fix
57
+ - review-takt-default
58
+ - review-fix-takt-default
57
59
  Others:
58
60
  pieces:
59
61
  - research
@@ -15,7 +15,7 @@ loop_monitors:
15
15
  threshold: 3
16
16
  judge:
17
17
  persona: supervisor
18
- instruction_template: loop-monitor-reviewers-fix
18
+ instruction: loop-monitor-reviewers-fix
19
19
  rules:
20
20
  - condition: converging (findings decreasing, fixes applied)
21
21
  next: fix_both