takt 0.40.0 → 0.42.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 (457) hide show
  1. package/README.md +58 -28
  2. package/builtins/en/config.yaml +2 -0
  3. package/builtins/en/facets/instructions/_system/fallback-notice.md +16 -0
  4. package/builtins/en/facets/instructions/ai-antipattern-fix.md +2 -14
  5. package/builtins/en/facets/instructions/ai-antipattern-review.md +5 -11
  6. package/builtins/en/facets/instructions/implement-after-tests.md +6 -7
  7. package/builtins/en/facets/instructions/implement.md +6 -7
  8. package/builtins/en/facets/instructions/review-arch.md +4 -36
  9. package/builtins/en/facets/instructions/review-cqrs-es.md +7 -23
  10. package/builtins/en/facets/instructions/review-frontend.md +6 -32
  11. package/builtins/en/facets/instructions/review-qa.md +5 -31
  12. package/builtins/en/facets/instructions/review-requirements.md +6 -24
  13. package/builtins/en/facets/instructions/review-security.md +13 -36
  14. package/builtins/en/facets/instructions/review-terraform.md +4 -28
  15. package/builtins/en/facets/instructions/review-test.md +8 -29
  16. package/builtins/en/facets/instructions/supervise.md +17 -35
  17. package/builtins/en/facets/instructions/write-tests-first.md +5 -0
  18. package/builtins/en/facets/knowledge/architecture.md +13 -13
  19. package/builtins/en/facets/knowledge/cqrs-es.md +66 -0
  20. package/builtins/en/facets/knowledge/frontend.md +17 -2
  21. package/builtins/en/facets/knowledge/react.md +3 -0
  22. package/builtins/en/facets/output-contracts/frontend-review.md +1 -0
  23. package/builtins/en/facets/policies/ai-antipattern.md +19 -0
  24. package/builtins/en/facets/policies/coding.md +85 -3
  25. package/builtins/en/facets/policies/qa.md +3 -1
  26. package/builtins/en/facets/policies/review.md +35 -3
  27. package/builtins/en/facets/policies/testing.md +33 -0
  28. package/builtins/en/workflows/auto-improvement-loop.yaml +40 -10
  29. package/builtins/ja/INSTRUCTION_STYLE_GUIDE.md +38 -3
  30. package/builtins/ja/config.yaml +2 -0
  31. package/builtins/ja/facets/instructions/_system/fallback-notice.md +16 -0
  32. package/builtins/ja/facets/instructions/ai-antipattern-fix.md +4 -16
  33. package/builtins/ja/facets/instructions/ai-antipattern-review.md +7 -13
  34. package/builtins/ja/facets/instructions/implement-after-tests.md +6 -7
  35. package/builtins/ja/facets/instructions/implement.md +6 -7
  36. package/builtins/ja/facets/instructions/review-arch.md +5 -37
  37. package/builtins/ja/facets/instructions/review-cqrs-es.md +7 -23
  38. package/builtins/ja/facets/instructions/review-frontend.md +6 -32
  39. package/builtins/ja/facets/instructions/review-qa.md +5 -31
  40. package/builtins/ja/facets/instructions/review-requirements.md +10 -28
  41. package/builtins/ja/facets/instructions/review-security.md +13 -36
  42. package/builtins/ja/facets/instructions/review-terraform.md +5 -29
  43. package/builtins/ja/facets/instructions/review-test.md +8 -29
  44. package/builtins/ja/facets/instructions/supervise.md +15 -33
  45. package/builtins/ja/facets/instructions/write-tests-first.md +5 -0
  46. package/builtins/ja/facets/knowledge/architecture.md +13 -13
  47. package/builtins/ja/facets/knowledge/cqrs-es.md +66 -0
  48. package/builtins/ja/facets/knowledge/frontend.md +17 -2
  49. package/builtins/ja/facets/knowledge/react.md +3 -0
  50. package/builtins/ja/facets/output-contracts/frontend-review.md +1 -0
  51. package/builtins/ja/facets/policies/ai-antipattern.md +19 -0
  52. package/builtins/ja/facets/policies/coding.md +85 -3
  53. package/builtins/ja/facets/policies/qa.md +3 -1
  54. package/builtins/ja/facets/policies/review.md +35 -3
  55. package/builtins/ja/facets/policies/testing.md +33 -0
  56. package/builtins/ja/workflows/auto-improvement-loop.yaml +40 -10
  57. package/builtins/schemas/followup-task.json +65 -10
  58. package/dist/agents/decompose-task-usecase.d.ts.map +1 -1
  59. package/dist/agents/decompose-task-usecase.js +3 -2
  60. package/dist/agents/decompose-task-usecase.js.map +1 -1
  61. package/dist/agents/judge-status-usecase.d.ts.map +1 -1
  62. package/dist/agents/judge-status-usecase.js +4 -3
  63. package/dist/agents/judge-status-usecase.js.map +1 -1
  64. package/dist/agents/provider-call-options.d.ts +4 -0
  65. package/dist/agents/provider-call-options.d.ts.map +1 -0
  66. package/dist/agents/provider-call-options.js +9 -0
  67. package/dist/agents/provider-call-options.js.map +1 -0
  68. package/dist/agents/runner.js +1 -1
  69. package/dist/agents/runner.js.map +1 -1
  70. package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts +1 -0
  71. package/dist/agents/structured-caller/prompt-based-structured-caller.d.ts.map +1 -1
  72. package/dist/agents/structured-caller/prompt-based-structured-caller.js +67 -38
  73. package/dist/agents/structured-caller/prompt-based-structured-caller.js.map +1 -1
  74. package/dist/app/cli/program.js +1 -1
  75. package/dist/app/cli/program.js.map +1 -1
  76. package/dist/core/models/assistant-config.d.ts +4 -0
  77. package/dist/core/models/assistant-config.d.ts.map +1 -0
  78. package/dist/core/models/assistant-config.js +4 -0
  79. package/dist/core/models/assistant-config.js.map +1 -0
  80. package/dist/core/models/config-schemas.d.ts +120 -0
  81. package/dist/core/models/config-schemas.d.ts.map +1 -1
  82. package/dist/core/models/config-schemas.js +9 -2
  83. package/dist/core/models/config-schemas.js.map +1 -1
  84. package/dist/core/models/config-types.d.ts +23 -2
  85. package/dist/core/models/config-types.d.ts.map +1 -1
  86. package/dist/core/models/index.d.ts +1 -1
  87. package/dist/core/models/index.d.ts.map +1 -1
  88. package/dist/core/models/index.js.map +1 -1
  89. package/dist/core/models/part.d.ts +5 -0
  90. package/dist/core/models/part.d.ts.map +1 -1
  91. package/dist/core/models/provider-profiles.d.ts +1 -1
  92. package/dist/core/models/provider-profiles.d.ts.map +1 -1
  93. package/dist/core/models/response.d.ts +9 -0
  94. package/dist/core/models/response.d.ts.map +1 -1
  95. package/dist/core/models/response.js +1 -1
  96. package/dist/core/models/response.js.map +1 -1
  97. package/dist/core/models/schema-base.d.ts +85 -0
  98. package/dist/core/models/schema-base.d.ts.map +1 -1
  99. package/dist/core/models/schema-base.js +40 -2
  100. package/dist/core/models/schema-base.js.map +1 -1
  101. package/dist/core/models/status.d.ts +1 -1
  102. package/dist/core/models/status.d.ts.map +1 -1
  103. package/dist/core/models/status.js +1 -1
  104. package/dist/core/models/status.js.map +1 -1
  105. package/dist/core/models/types.d.ts +3 -3
  106. package/dist/core/models/types.d.ts.map +1 -1
  107. package/dist/core/models/workflow-condition-expression.d.ts +12 -0
  108. package/dist/core/models/workflow-condition-expression.d.ts.map +1 -0
  109. package/dist/core/models/workflow-condition-expression.js +26 -0
  110. package/dist/core/models/workflow-condition-expression.js.map +1 -0
  111. package/dist/core/models/workflow-provider-options.d.ts +8 -0
  112. package/dist/core/models/workflow-provider-options.d.ts.map +1 -1
  113. package/dist/core/models/workflow-provider-options.js.map +1 -1
  114. package/dist/core/models/workflow-schemas.d.ts +592 -30
  115. package/dist/core/models/workflow-schemas.d.ts.map +1 -1
  116. package/dist/core/models/workflow-schemas.js +59 -5
  117. package/dist/core/models/workflow-schemas.js.map +1 -1
  118. package/dist/core/models/workflow-system-input-types.d.ts +9 -1
  119. package/dist/core/models/workflow-system-input-types.d.ts.map +1 -1
  120. package/dist/core/models/workflow-system-schemas.d.ts +8 -1
  121. package/dist/core/models/workflow-system-schemas.d.ts.map +1 -1
  122. package/dist/core/models/workflow-system-schemas.js +13 -1
  123. package/dist/core/models/workflow-system-schemas.js.map +1 -1
  124. package/dist/core/models/workflow-types.d.ts +35 -2
  125. package/dist/core/models/workflow-types.d.ts.map +1 -1
  126. package/dist/core/models/workflow-types.js.map +1 -1
  127. package/dist/core/workflow/arpeggio/types.d.ts +3 -0
  128. package/dist/core/workflow/arpeggio/types.d.ts.map +1 -1
  129. package/dist/core/workflow/engine/ArpeggioRunner.d.ts +3 -6
  130. package/dist/core/workflow/engine/ArpeggioRunner.d.ts.map +1 -1
  131. package/dist/core/workflow/engine/ArpeggioRunner.js +40 -19
  132. package/dist/core/workflow/engine/ArpeggioRunner.js.map +1 -1
  133. package/dist/core/workflow/engine/OptionsBuilder.d.ts +1 -0
  134. package/dist/core/workflow/engine/OptionsBuilder.d.ts.map +1 -1
  135. package/dist/core/workflow/engine/OptionsBuilder.js +14 -5
  136. package/dist/core/workflow/engine/OptionsBuilder.js.map +1 -1
  137. package/dist/core/workflow/engine/ParallelRunner.d.ts +4 -6
  138. package/dist/core/workflow/engine/ParallelRunner.d.ts.map +1 -1
  139. package/dist/core/workflow/engine/ParallelRunner.js +55 -12
  140. package/dist/core/workflow/engine/ParallelRunner.js.map +1 -1
  141. package/dist/core/workflow/engine/StepExecutor.d.ts +10 -7
  142. package/dist/core/workflow/engine/StepExecutor.d.ts.map +1 -1
  143. package/dist/core/workflow/engine/StepExecutor.js +81 -11
  144. package/dist/core/workflow/engine/StepExecutor.js.map +1 -1
  145. package/dist/core/workflow/engine/TeamLeaderRunner.d.ts +3 -5
  146. package/dist/core/workflow/engine/TeamLeaderRunner.d.ts.map +1 -1
  147. package/dist/core/workflow/engine/TeamLeaderRunner.js +30 -7
  148. package/dist/core/workflow/engine/TeamLeaderRunner.js.map +1 -1
  149. package/dist/core/workflow/engine/WorkflowCallExecutor.d.ts.map +1 -1
  150. package/dist/core/workflow/engine/WorkflowCallExecutor.js +1 -0
  151. package/dist/core/workflow/engine/WorkflowCallExecutor.js.map +1 -1
  152. package/dist/core/workflow/engine/WorkflowCallRunner.d.ts +3 -6
  153. package/dist/core/workflow/engine/WorkflowCallRunner.d.ts.map +1 -1
  154. package/dist/core/workflow/engine/WorkflowCallRunner.js +1 -1
  155. package/dist/core/workflow/engine/WorkflowCallRunner.js.map +1 -1
  156. package/dist/core/workflow/engine/WorkflowEngine.d.ts +1 -0
  157. package/dist/core/workflow/engine/WorkflowEngine.d.ts.map +1 -1
  158. package/dist/core/workflow/engine/WorkflowEngine.js +47 -21
  159. package/dist/core/workflow/engine/WorkflowEngine.js.map +1 -1
  160. package/dist/core/workflow/engine/WorkflowEngineSetup.d.ts +4 -1
  161. package/dist/core/workflow/engine/WorkflowEngineSetup.d.ts.map +1 -1
  162. package/dist/core/workflow/engine/WorkflowEngineSetup.js +1 -0
  163. package/dist/core/workflow/engine/WorkflowEngineSetup.js.map +1 -1
  164. package/dist/core/workflow/engine/WorkflowEngineStepCoordinator.d.ts +9 -27
  165. package/dist/core/workflow/engine/WorkflowEngineStepCoordinator.d.ts.map +1 -1
  166. package/dist/core/workflow/engine/WorkflowEngineStepCoordinator.js +6 -6
  167. package/dist/core/workflow/engine/WorkflowEngineStepCoordinator.js.map +1 -1
  168. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts +6 -6
  169. package/dist/core/workflow/engine/WorkflowRunLoop.d.ts.map +1 -1
  170. package/dist/core/workflow/engine/WorkflowRunLoop.js +171 -9
  171. package/dist/core/workflow/engine/WorkflowRunLoop.js.map +1 -1
  172. package/dist/core/workflow/engine/engine-provider-options.d.ts +1 -1
  173. package/dist/core/workflow/engine/engine-provider-options.d.ts.map +1 -1
  174. package/dist/core/workflow/engine/state-manager.d.ts +1 -0
  175. package/dist/core/workflow/engine/state-manager.d.ts.map +1 -1
  176. package/dist/core/workflow/engine/state-manager.js +11 -0
  177. package/dist/core/workflow/engine/state-manager.js.map +1 -1
  178. package/dist/core/workflow/engine/structured-output-normalizer.d.ts +23 -0
  179. package/dist/core/workflow/engine/structured-output-normalizer.d.ts.map +1 -0
  180. package/dist/core/workflow/engine/structured-output-normalizer.js +13 -0
  181. package/dist/core/workflow/engine/structured-output-normalizer.js.map +1 -0
  182. package/dist/core/workflow/engine/team-leader-part-runner.d.ts +2 -1
  183. package/dist/core/workflow/engine/team-leader-part-runner.d.ts.map +1 -1
  184. package/dist/core/workflow/engine/team-leader-part-runner.js +17 -6
  185. package/dist/core/workflow/engine/team-leader-part-runner.js.map +1 -1
  186. package/dist/core/workflow/instruction/InstructionBuilder.d.ts.map +1 -1
  187. package/dist/core/workflow/instruction/InstructionBuilder.js +7 -0
  188. package/dist/core/workflow/instruction/InstructionBuilder.js.map +1 -1
  189. package/dist/core/workflow/instruction/fallback-notice.d.ts +3 -0
  190. package/dist/core/workflow/instruction/fallback-notice.d.ts.map +1 -0
  191. package/dist/core/workflow/instruction/fallback-notice.js +20 -0
  192. package/dist/core/workflow/instruction/fallback-notice.js.map +1 -0
  193. package/dist/core/workflow/instruction/instruction-context.d.ts +3 -1
  194. package/dist/core/workflow/instruction/instruction-context.d.ts.map +1 -1
  195. package/dist/core/workflow/instruction/instruction-context.js.map +1 -1
  196. package/dist/core/workflow/observability/workflowSpans.d.ts +28 -0
  197. package/dist/core/workflow/observability/workflowSpans.d.ts.map +1 -0
  198. package/dist/core/workflow/observability/workflowSpans.js +107 -0
  199. package/dist/core/workflow/observability/workflowSpans.js.map +1 -0
  200. package/dist/core/workflow/permission-profile-resolution.d.ts.map +1 -1
  201. package/dist/core/workflow/permission-profile-resolution.js +1 -0
  202. package/dist/core/workflow/permission-profile-resolution.js.map +1 -1
  203. package/dist/core/workflow/phase-runner.d.ts +4 -4
  204. package/dist/core/workflow/phase-runner.d.ts.map +1 -1
  205. package/dist/core/workflow/phase-runner.js.map +1 -1
  206. package/dist/core/workflow/promotion/PromotionEvaluator.d.ts +13 -0
  207. package/dist/core/workflow/promotion/PromotionEvaluator.d.ts.map +1 -0
  208. package/dist/core/workflow/promotion/PromotionEvaluator.js +40 -0
  209. package/dist/core/workflow/promotion/PromotionEvaluator.js.map +1 -0
  210. package/dist/core/workflow/promotion/promotion-runtime.d.ts +11 -0
  211. package/dist/core/workflow/promotion/promotion-runtime.d.ts.map +1 -0
  212. package/dist/core/workflow/promotion/promotion-runtime.js +112 -0
  213. package/dist/core/workflow/promotion/promotion-runtime.js.map +1 -0
  214. package/dist/core/workflow/provider-options-trace.d.ts +3 -2
  215. package/dist/core/workflow/provider-options-trace.d.ts.map +1 -1
  216. package/dist/core/workflow/provider-resolution.js +10 -10
  217. package/dist/core/workflow/provider-resolution.js.map +1 -1
  218. package/dist/core/workflow/report-phase-runner.d.ts +5 -1
  219. package/dist/core/workflow/report-phase-runner.d.ts.map +1 -1
  220. package/dist/core/workflow/report-phase-runner.js +24 -5
  221. package/dist/core/workflow/report-phase-runner.js.map +1 -1
  222. package/dist/core/workflow/status-judgment-phase.d.ts.map +1 -1
  223. package/dist/core/workflow/status-judgment-phase.js +7 -3
  224. package/dist/core/workflow/status-judgment-phase.js.map +1 -1
  225. package/dist/core/workflow/system/system-step-effect-runner.d.ts.map +1 -1
  226. package/dist/core/workflow/system/system-step-effect-runner.js +20 -2
  227. package/dist/core/workflow/system/system-step-effect-runner.js.map +1 -1
  228. package/dist/core/workflow/types.d.ts +18 -3
  229. package/dist/core/workflow/types.d.ts.map +1 -1
  230. package/dist/features/interactive/assistantInitFiles.d.ts +2 -0
  231. package/dist/features/interactive/assistantInitFiles.d.ts.map +1 -0
  232. package/dist/features/interactive/assistantInitFiles.js +110 -0
  233. package/dist/features/interactive/assistantInitFiles.js.map +1 -0
  234. package/dist/features/interactive/conversationLoop.d.ts +5 -1
  235. package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
  236. package/dist/features/interactive/conversationLoop.js +23 -3
  237. package/dist/features/interactive/conversationLoop.js.map +1 -1
  238. package/dist/features/interactive/interactive-summary.d.ts +1 -1
  239. package/dist/features/interactive/interactive-summary.d.ts.map +1 -1
  240. package/dist/features/interactive/interactive-summary.js +4 -3
  241. package/dist/features/interactive/interactive-summary.js.map +1 -1
  242. package/dist/features/interactive/interactive.d.ts +5 -3
  243. package/dist/features/interactive/interactive.d.ts.map +1 -1
  244. package/dist/features/interactive/interactive.js +4 -0
  245. package/dist/features/interactive/interactive.js.map +1 -1
  246. package/dist/features/interactive/promptSections.d.ts +2 -0
  247. package/dist/features/interactive/promptSections.d.ts.map +1 -1
  248. package/dist/features/interactive/promptSections.js +7 -1
  249. package/dist/features/interactive/promptSections.js.map +1 -1
  250. package/dist/features/interactive/slashCommandRegistry.d.ts.map +1 -1
  251. package/dist/features/interactive/slashCommandRegistry.js +1 -0
  252. package/dist/features/interactive/slashCommandRegistry.js.map +1 -1
  253. package/dist/features/tasks/add/issueTask.d.ts +1 -14
  254. package/dist/features/tasks/add/issueTask.d.ts.map +1 -1
  255. package/dist/features/tasks/add/issueTask.js +124 -20
  256. package/dist/features/tasks/add/issueTask.js.map +1 -1
  257. package/dist/features/tasks/execute/workflowExecution.d.ts.map +1 -1
  258. package/dist/features/tasks/execute/workflowExecution.js +15 -1
  259. package/dist/features/tasks/execute/workflowExecution.js.map +1 -1
  260. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts +5 -1
  261. package/dist/features/tasks/execute/workflowExecutionBootstrap.d.ts.map +1 -1
  262. package/dist/features/tasks/execute/workflowExecutionBootstrap.js +8 -1
  263. package/dist/features/tasks/execute/workflowExecutionBootstrap.js.map +1 -1
  264. package/dist/features/tasks/execute/workflowExecutionEvents.d.ts.map +1 -1
  265. package/dist/features/tasks/execute/workflowExecutionEvents.js +18 -2
  266. package/dist/features/tasks/execute/workflowExecutionEvents.js.map +1 -1
  267. package/dist/infra/claude/client.d.ts.map +1 -1
  268. package/dist/infra/claude/client.js +5 -0
  269. package/dist/infra/claude/client.js.map +1 -1
  270. package/dist/infra/claude/executor.d.ts.map +1 -1
  271. package/dist/infra/claude/executor.js +56 -20
  272. package/dist/infra/claude/executor.js.map +1 -1
  273. package/dist/infra/claude/mcp-config.d.ts +7 -0
  274. package/dist/infra/claude/mcp-config.d.ts.map +1 -0
  275. package/dist/infra/claude/mcp-config.js +30 -0
  276. package/dist/infra/claude/mcp-config.js.map +1 -0
  277. package/dist/infra/claude/types.d.ts +2 -1
  278. package/dist/infra/claude/types.d.ts.map +1 -1
  279. package/dist/infra/claude-headless/client.d.ts.map +1 -1
  280. package/dist/infra/claude-headless/client.js +15 -43
  281. package/dist/infra/claude-headless/client.js.map +1 -1
  282. package/dist/infra/claude-headless/headless-spawn.d.ts +1 -0
  283. package/dist/infra/claude-headless/headless-spawn.d.ts.map +1 -1
  284. package/dist/infra/claude-headless/headless-spawn.js +16 -0
  285. package/dist/infra/claude-headless/headless-spawn.js.map +1 -1
  286. package/dist/infra/claude-headless/result-response.d.ts.map +1 -1
  287. package/dist/infra/claude-headless/result-response.js +34 -0
  288. package/dist/infra/claude-headless/result-response.js.map +1 -1
  289. package/dist/infra/claude-terminal/client.d.ts +4 -0
  290. package/dist/infra/claude-terminal/client.d.ts.map +1 -0
  291. package/dist/infra/claude-terminal/client.js +314 -0
  292. package/dist/infra/claude-terminal/client.js.map +1 -0
  293. package/dist/infra/claude-terminal/command.d.ts +4 -0
  294. package/dist/infra/claude-terminal/command.d.ts.map +1 -0
  295. package/dist/infra/claude-terminal/command.js +50 -0
  296. package/dist/infra/claude-terminal/command.js.map +1 -0
  297. package/dist/infra/claude-terminal/response-normalizer.d.ts +14 -0
  298. package/dist/infra/claude-terminal/response-normalizer.d.ts.map +1 -0
  299. package/dist/infra/claude-terminal/response-normalizer.js +118 -0
  300. package/dist/infra/claude-terminal/response-normalizer.js.map +1 -0
  301. package/dist/infra/claude-terminal/tmux-backend.d.ts +7 -0
  302. package/dist/infra/claude-terminal/tmux-backend.d.ts.map +1 -0
  303. package/dist/infra/claude-terminal/tmux-backend.js +177 -0
  304. package/dist/infra/claude-terminal/tmux-backend.js.map +1 -0
  305. package/dist/infra/claude-terminal/transcript-reader.d.ts +13 -0
  306. package/dist/infra/claude-terminal/transcript-reader.d.ts.map +1 -0
  307. package/dist/infra/claude-terminal/transcript-reader.js +329 -0
  308. package/dist/infra/claude-terminal/transcript-reader.js.map +1 -0
  309. package/dist/infra/claude-terminal/types.d.ts +106 -0
  310. package/dist/infra/claude-terminal/types.d.ts.map +1 -0
  311. package/dist/infra/claude-terminal/types.js +2 -0
  312. package/dist/infra/claude-terminal/types.js.map +1 -0
  313. package/dist/infra/codex/client.d.ts +1 -0
  314. package/dist/infra/codex/client.d.ts.map +1 -1
  315. package/dist/infra/codex/client.js +21 -1
  316. package/dist/infra/codex/client.js.map +1 -1
  317. package/dist/infra/config/configNormalizers.d.ts +20 -2
  318. package/dist/infra/config/configNormalizers.d.ts.map +1 -1
  319. package/dist/infra/config/configNormalizers.js +68 -3
  320. package/dist/infra/config/configNormalizers.js.map +1 -1
  321. package/dist/infra/config/env/global-current-env-specs.d.ts.map +1 -1
  322. package/dist/infra/config/env/global-current-env-specs.js +5 -0
  323. package/dist/infra/config/env/global-current-env-specs.js.map +1 -1
  324. package/dist/infra/config/env/project-current-env-specs.d.ts.map +1 -1
  325. package/dist/infra/config/env/project-current-env-specs.js +5 -0
  326. package/dist/infra/config/env/project-current-env-specs.js.map +1 -1
  327. package/dist/infra/config/global/globalConfigCore.d.ts.map +1 -1
  328. package/dist/infra/config/global/globalConfigCore.js +4 -1
  329. package/dist/infra/config/global/globalConfigCore.js.map +1 -1
  330. package/dist/infra/config/global/globalConfigSerializer.d.ts.map +1 -1
  331. package/dist/infra/config/global/globalConfigSerializer.js +10 -1
  332. package/dist/infra/config/global/globalConfigSerializer.js.map +1 -1
  333. package/dist/infra/config/global/initialization.d.ts +1 -1
  334. package/dist/infra/config/global/initialization.d.ts.map +1 -1
  335. package/dist/infra/config/global/initialization.js +1 -0
  336. package/dist/infra/config/global/initialization.js.map +1 -1
  337. package/dist/infra/config/loaders/workflowParser.d.ts.map +1 -1
  338. package/dist/infra/config/loaders/workflowParser.js +2 -1
  339. package/dist/infra/config/loaders/workflowParser.js.map +1 -1
  340. package/dist/infra/config/loaders/workflowRuleNormalizer.d.ts.map +1 -1
  341. package/dist/infra/config/loaders/workflowRuleNormalizer.js +8 -9
  342. package/dist/infra/config/loaders/workflowRuleNormalizer.js.map +1 -1
  343. package/dist/infra/config/loaders/workflowStepNormalizer.d.ts.map +1 -1
  344. package/dist/infra/config/loaders/workflowStepNormalizer.js +21 -0
  345. package/dist/infra/config/loaders/workflowStepNormalizer.js.map +1 -1
  346. package/dist/infra/config/observabilityConfig.d.ts +13 -0
  347. package/dist/infra/config/observabilityConfig.d.ts.map +1 -0
  348. package/dist/infra/config/observabilityConfig.js +52 -0
  349. package/dist/infra/config/observabilityConfig.js.map +1 -0
  350. package/dist/infra/config/project/projectConfig.d.ts.map +1 -1
  351. package/dist/infra/config/project/projectConfig.js +28 -3
  352. package/dist/infra/config/project/projectConfig.js.map +1 -1
  353. package/dist/infra/config/providerOptions.d.ts +9 -2
  354. package/dist/infra/config/providerOptions.d.ts.map +1 -1
  355. package/dist/infra/config/providerOptions.js +66 -4
  356. package/dist/infra/config/providerOptions.js.map +1 -1
  357. package/dist/infra/config/providerOptionsContract.d.ts +3 -3
  358. package/dist/infra/config/providerOptionsContract.d.ts.map +1 -1
  359. package/dist/infra/config/providerOptionsContract.js +17 -0
  360. package/dist/infra/config/providerOptionsContract.js.map +1 -1
  361. package/dist/infra/config/resolveConfigValue.d.ts.map +1 -1
  362. package/dist/infra/config/resolveConfigValue.js +18 -0
  363. package/dist/infra/config/resolveConfigValue.js.map +1 -1
  364. package/dist/infra/config/resolvedConfig.d.ts +2 -1
  365. package/dist/infra/config/resolvedConfig.d.ts.map +1 -1
  366. package/dist/infra/config/traced/tracedConfigSchema.d.ts.map +1 -1
  367. package/dist/infra/config/traced/tracedConfigSchema.js +16 -0
  368. package/dist/infra/config/traced/tracedConfigSchema.js.map +1 -1
  369. package/dist/infra/git/format.d.ts.map +1 -1
  370. package/dist/infra/git/format.js +75 -8
  371. package/dist/infra/git/format.js.map +1 -1
  372. package/dist/infra/git/index.d.ts +1 -1
  373. package/dist/infra/git/index.d.ts.map +1 -1
  374. package/dist/infra/git/types.d.ts +5 -0
  375. package/dist/infra/git/types.d.ts.map +1 -1
  376. package/dist/infra/github/pr.d.ts.map +1 -1
  377. package/dist/infra/github/pr.js +174 -28
  378. package/dist/infra/github/pr.js.map +1 -1
  379. package/dist/infra/mock/client.d.ts.map +1 -1
  380. package/dist/infra/mock/client.js +2 -0
  381. package/dist/infra/mock/client.js.map +1 -1
  382. package/dist/infra/mock/scenario.d.ts.map +1 -1
  383. package/dist/infra/mock/scenario.js +11 -0
  384. package/dist/infra/mock/scenario.js.map +1 -1
  385. package/dist/infra/mock/types.d.ts +9 -0
  386. package/dist/infra/mock/types.d.ts.map +1 -1
  387. package/dist/infra/observability/otelFoundation.d.ts +6 -0
  388. package/dist/infra/observability/otelFoundation.d.ts.map +1 -0
  389. package/dist/infra/observability/otelFoundation.js +89 -0
  390. package/dist/infra/observability/otelFoundation.js.map +1 -0
  391. package/dist/infra/opencode/client.d.ts +1 -0
  392. package/dist/infra/opencode/client.d.ts.map +1 -1
  393. package/dist/infra/opencode/client.js +41 -15
  394. package/dist/infra/opencode/client.js.map +1 -1
  395. package/dist/infra/opencode/types.d.ts +1 -0
  396. package/dist/infra/opencode/types.d.ts.map +1 -1
  397. package/dist/infra/providers/claude-terminal.d.ts +6 -0
  398. package/dist/infra/providers/claude-terminal.d.ts.map +1 -0
  399. package/dist/infra/providers/claude-terminal.js +70 -0
  400. package/dist/infra/providers/claude-terminal.js.map +1 -0
  401. package/dist/infra/providers/index.d.ts.map +1 -1
  402. package/dist/infra/providers/index.js +2 -0
  403. package/dist/infra/providers/index.js.map +1 -1
  404. package/dist/infra/providers/opencode.d.ts.map +1 -1
  405. package/dist/infra/providers/opencode.js +1 -0
  406. package/dist/infra/providers/opencode.js.map +1 -1
  407. package/dist/infra/providers/provider-capabilities.d.ts +1 -0
  408. package/dist/infra/providers/provider-capabilities.d.ts.map +1 -1
  409. package/dist/infra/providers/provider-capabilities.js +16 -0
  410. package/dist/infra/providers/provider-capabilities.js.map +1 -1
  411. package/dist/infra/rate-limit/detection.d.ts +15 -0
  412. package/dist/infra/rate-limit/detection.d.ts.map +1 -0
  413. package/dist/infra/rate-limit/detection.js +58 -0
  414. package/dist/infra/rate-limit/detection.js.map +1 -0
  415. package/dist/infra/task/clone-base-branch.d.ts +11 -0
  416. package/dist/infra/task/clone-base-branch.d.ts.map +1 -1
  417. package/dist/infra/task/clone-base-branch.js +34 -4
  418. package/dist/infra/task/clone-base-branch.js.map +1 -1
  419. package/dist/infra/task/clone.d.ts +1 -1
  420. package/dist/infra/task/clone.d.ts.map +1 -1
  421. package/dist/infra/task/clone.js +1 -1
  422. package/dist/infra/task/clone.js.map +1 -1
  423. package/dist/infra/task/index.d.ts +1 -1
  424. package/dist/infra/task/index.d.ts.map +1 -1
  425. package/dist/infra/task/index.js +1 -1
  426. package/dist/infra/task/index.js.map +1 -1
  427. package/dist/infra/workflow/structured-output/followup-task-normalizer.d.ts +3 -0
  428. package/dist/infra/workflow/structured-output/followup-task-normalizer.d.ts.map +1 -0
  429. package/dist/infra/workflow/structured-output/followup-task-normalizer.js +206 -0
  430. package/dist/infra/workflow/structured-output/followup-task-normalizer.js.map +1 -0
  431. package/dist/infra/workflow/system/system-enqueue-effect.d.ts +2 -2
  432. package/dist/infra/workflow/system/system-enqueue-effect.d.ts.map +1 -1
  433. package/dist/infra/workflow/system/system-enqueue-effect.js +9 -4
  434. package/dist/infra/workflow/system/system-enqueue-effect.js.map +1 -1
  435. package/dist/shared/constants.d.ts +1 -0
  436. package/dist/shared/constants.d.ts.map +1 -1
  437. package/dist/shared/constants.js +1 -0
  438. package/dist/shared/constants.js.map +1 -1
  439. package/dist/shared/i18n/labels_en.yaml +3 -1
  440. package/dist/shared/i18n/labels_ja.yaml +3 -1
  441. package/dist/shared/prompts/en/perform_phase1_message.md +11 -1
  442. package/dist/shared/prompts/ja/perform_phase1_message.md +11 -1
  443. package/dist/shared/types/provider.d.ts +1 -1
  444. package/dist/shared/types/provider.d.ts.map +1 -1
  445. package/dist/shared/utils/debug.d.ts +2 -0
  446. package/dist/shared/utils/debug.d.ts.map +1 -1
  447. package/dist/shared/utils/debug.js +1 -0
  448. package/dist/shared/utils/debug.js.map +1 -1
  449. package/dist/shared/utils/delay.d.ts +2 -0
  450. package/dist/shared/utils/delay.d.ts.map +1 -0
  451. package/dist/shared/utils/delay.js +4 -0
  452. package/dist/shared/utils/delay.js.map +1 -0
  453. package/dist/shared/utils/index.d.ts +1 -0
  454. package/dist/shared/utils/index.d.ts.map +1 -1
  455. package/dist/shared/utils/index.js +1 -0
  456. package/dist/shared/utils/index.js.map +1 -1
  457. package/package.json +4 -2
package/README.md CHANGED
@@ -2,35 +2,53 @@
2
2
 
3
3
  🇯🇵 [日本語ドキュメント](./docs/README.ja.md) | 💬 [Discord Community](https://discord.gg/R2Xz3uYWxD)
4
4
 
5
- **T**AKT **A**gent **K**oordination **T**opology — Give your AI coding agents structured review loops, managed prompts, and guardrails — so they deliver quality code, not just code.
5
+ **T**AKT **A**gent **K**oordination **T**opology — Orchestrate multiple AI agents with structured review loops, managed prompts, and guardrails.
6
6
 
7
- TAKT runs AI agents (Claude Code, Codex, OpenCode, Cursor, GitHub Copilot CLI) through YAML-defined workflows with built-in review cycles. You talk to AI to define what you want, queue tasks, and let TAKT handle the execution planning, implementation, multi-stage review, and fix loops all governed by declarative workflow files.
7
+ Talk to AI to define what you want, queue it as a task, and run it with `takt run`. Planning, implementation, review, and fix loops are defined in YAML workflow files, so the process is not left to the agent's discretion. TAKT coordinates Claude Code, Codex, OpenCode, Cursor, and GitHub Copilot CLI as agents with different roles, permissions, and context.
8
+
9
+ TAKT is built primarily for AI coding workflows, but the same model applies beyond coding: any task where multiple AI agents need to coordinate, or where review, judgment, and feedback loops can improve task quality.
8
10
 
9
11
  TAKT is built with TAKT itself (dogfooding).
10
12
 
11
13
  ## Why TAKT
12
14
 
13
- **Batteries included** Architecture, security, and AI antipattern review criteria are built in. Ship code that meets a quality bar from day one.
15
+ AI coding agents are powerful, but they do not automatically create a stable development process. In long-running work, they forget instructions, accumulate polluted context, blur implementation and review responsibilities, and often force humans to repeat the same feedback again and again. That wears people down.
16
+
17
+ Adding more rules to prompts, `CLAUDE.md`, or skills can help, but it cannot enforce the process. Whether the rules are followed is still left to the agent's behavior.
18
+
19
+ TAKT treats AI agents as something to be controlled from the outside, not simply trusted.
14
20
 
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.
21
+ Workflows define the phases, and each step receives its own persona, policy, knowledge, instruction, and output contract. TAKT manages implementation, review, fix, and re-review flows declaratively. By separating responsibilities, knowledge, and constraints, then giving each agent only what it needs for the current step, TAKT improves task quality without bloating context.
16
22
 
17
- **Reproducible** Execution paths are declared in YAML, keeping results consistent. Workflows 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.
23
+ Reviews cannot be silently skipped. Findings route work back to fix steps, and human judgment can be requested when needed. Tasks run in isolated worktrees, and each step leaves logs and reports so the path from task to PR remains traceable.
18
24
 
19
- **Multi-agent** Orchestrate multiple agents with different personas, permissions, and review criteria. Run parallel reviewers, route failures back to implementers, aggregate results with declarative rules. Prompts are managed as independent facets (persona, policy, knowledge, instruction) that compose freely across workflows ([Faceted Prompting](./docs/faceted-prompting.md)).
25
+ At its core, TAKT runs reusable agent processes built from roles, phases, judgments, and feedback loops.
26
+
27
+ The goal is simple: make development processes reusable, reviewable, and reproducible without depending on constant human intervention.
20
28
 
21
29
  ## Requirements
22
30
 
23
- Choose one:
31
+ The provider you choose determines whether you need to install an external CLI or can run on Node.js alone via a TypeScript SDK.
32
+
33
+ These providers run via SDK (no CLI required, Node.js only):
34
+
35
+ - `claude-sdk` — `@anthropic-ai/claude-agent-sdk`
36
+ - `codex` — `@openai/codex-sdk`
37
+ - `opencode` — `@opencode-ai/sdk`
24
38
 
25
- - **Provider CLIs**: [Claude Code](https://claude.ai/code) (default `claude` provider), [Codex](https://github.com/openai/codex), [OpenCode](https://opencode.ai), [Cursor Agent](https://docs.cursor.com/), or [GitHub Copilot CLI](https://docs.github.com/en/copilot/github-copilot-in-the-cli) installed
26
- - **Direct API**: OpenAI / OpenCode API Key (no CLI required)
39
+ These providers require an external CLI:
40
+
41
+ - `claude` — [Claude Code](https://claude.ai/code)
42
+ - `claude-terminal` — [Claude Code](https://claude.ai/code) driven in an interactive terminal session (also requires [`tmux`](https://github.com/tmux/tmux))
43
+ - `copilot` — [GitHub Copilot CLI](https://docs.github.com/en/copilot/github-copilot-in-the-cli)
44
+ - `cursor` — [Cursor Agent](https://docs.cursor.com/)
27
45
 
28
46
  Optional:
29
47
 
30
48
  - [GitHub CLI](https://cli.github.com/) (`gh`) — for `takt #N` (GitHub Issue tasks)
31
49
  - [GitLab CLI](https://gitlab.com/gitlab-org/cli) (`glab`) — for GitLab Issue/MR integration (auto-detected from remote URL)
32
50
 
33
- > **OAuth and API key usage:** Whether OAuth or API key access is permitted varies by provider and use case. Check each provider's terms of service before using TAKT.
51
+ > **OAuth usage:** Whether OAuth is permitted varies by provider and use case. Check each provider's terms of service before using TAKT.
34
52
 
35
53
  ## Quick Start
36
54
 
@@ -92,7 +110,7 @@ takt list
92
110
 
93
111
  ## How It Works
94
112
 
95
- TAKT uses a music metaphor — the name itself comes from the German word for "beat" or "baton stroke," used in conducting to keep an orchestra in time. TAKT uses **workflow** and **step** consistently in both user-facing and implementation-facing terminology.
113
+ The name TAKT comes from the German word for "beat" or "baton stroke," used in conducting to keep an orchestra in time. TAKT uses **workflow** and **step** consistently in both user-facing and implementation-facing terminology.
96
114
 
97
115
  A workflow is defined by a sequence of steps. Use `steps`, `initial_step`, and `max_steps`. Each step specifies a persona (who), permissions (what's allowed), and rules (what happens next). Here's a minimal example:
98
116
 
@@ -137,10 +155,12 @@ When the same workflow name exists in multiple locations, TAKT resolves in this
137
155
 
138
156
  | Workflow | Use Case |
139
157
  |-------|----------|
140
- | `default` | Standard development. Test-first with AI antipattern review and parallel review (architecture + supervisor). |
141
- | `frontend-mini` | Frontend-focused mini configuration. |
142
- | `backend-mini` | Backend-focused mini configuration. |
143
- | `dual-mini` | Frontend + backend mini configuration. |
158
+ | `default` | Standard development workflow. Test-first with AI antipattern review and parallel review (architecture + supervisor). |
159
+ | `frontend` | Frontend development workflow. |
160
+ | `backend` | Backend development workflow. |
161
+ | `dual` | Combined frontend + backend workflow. |
162
+ | `takt-default` | The workflow used to develop TAKT itself. Directly applicable to other CLI tool development. |
163
+ | `*-mini` series | Lightweight variants of each workflow (`default-mini` / `frontend-mini` / `backend-mini` / `dual-mini`). Omits `write_tests`. |
144
164
 
145
165
  See the [Builtin Catalog](./docs/builtin-catalog.md) for all workflows and personas.
146
166
 
@@ -164,7 +184,7 @@ See the [CLI Reference](./docs/cli-reference.md) for all commands and options.
164
184
  Minimal `~/.takt/config.yaml`:
165
185
 
166
186
  ```yaml
167
- provider: claude # claude, claude-sdk, codex, opencode, cursor, or copilot
187
+ provider: claude # claude, claude-sdk, claude-terminal, codex, opencode, cursor, or copilot
168
188
  model: sonnet # passed directly to provider
169
189
  language: en # en or ja
170
190
  ```
@@ -202,7 +222,7 @@ You are a code reviewer specialized in security.
202
222
 
203
223
  Reference it in your workflow: `persona: my-reviewer`
204
224
 
205
- See the [Workflow Guide](./docs/workflows.md) and [Agent Guide](./docs/agents.md) for details.
225
+ See the [Workflow Guide](./docs/workflows.md) for details. The list of builtin personas is in the [Builtin Catalog](./docs/builtin-catalog.md).
206
226
 
207
227
  ## CI/CD
208
228
 
@@ -243,35 +263,45 @@ See the [CI/CD Guide](./docs/ci-cd.md) for full setup instructions.
243
263
 
244
264
  Workflow definitions are stored under `workflows/`.
245
265
 
246
- ## API Usage
266
+ ## Adopting Spec-Driven Development
247
267
 
248
- ```typescript
249
- import { WorkflowEngine, loadWorkflow } from 'takt';
268
+ TAKT enforces phase transitions declaratively as a YAML state machine, formalizes the artifact of each phase with output contracts, and routes deviations back via parallel review and fix loops. This structure is particularly well-suited for users who follow Spec-Driven Development (SDD) and keep the spec at the center of the process. Once the spec is well-defined, the AI cannot silently skip a phase, drop an acceptance criterion, or claim "done" without passing the verification gate.
250
269
 
251
- const config = loadWorkflow('default', process.cwd());
252
- if (!config) throw new Error('Workflow not found');
270
+ For users who want to adopt SDD, the community provides [j5ik2o/takt-sdd](https://github.com/j5ik2o/takt-sdd) as a ready-made implementation. It ships pieces for Requirements → Gap Analysis → Design → Tasks → Implementation → Validation, plus an OpenSpec-style change-proposal flow. Install in one command:
253
271
 
254
- const engine = new WorkflowEngine(config, process.cwd(), 'My task');
255
- await engine.run();
272
+ ```bash
273
+ npx create-takt-sdd
256
274
  ```
257
275
 
276
+ See [External Integrations](./docs/external-integrations.md) for other community integrations.
277
+
258
278
  ## Documentation
259
279
 
260
280
  | Document | Description |
261
281
  |----------|-------------|
262
282
  | [CLI Reference](./docs/cli-reference.md) | All commands and options |
263
283
  | [Configuration](./docs/configuration.md) | Global and project settings |
284
+ | [Design Philosophy](./docs/design-philosophy.md) | Why TAKT is built around workflows, facets, feedback loops, and traceability |
264
285
  | [Workflow Guide](./docs/workflows.md) | Creating and customizing workflows |
265
- | [Agent Guide](./docs/agents.md) | Custom agent configuration |
266
286
  | [Builtin Catalog](./docs/builtin-catalog.md) | All builtin workflows and personas |
267
287
  | [Faceted Prompting](./docs/faceted-prompting.md) | Prompt design methodology |
268
288
  | [Repertoire Packages](./docs/repertoire.md) | Installing and sharing packages |
269
289
  | [Task Management](./docs/task-management.md) | Task queuing, execution, isolation |
270
- | [Data Flow](./docs/data-flow.md) | Internal data flow and architecture diagrams |
271
290
  | [CI/CD Integration](./docs/ci-cd.md) | GitHub Actions and pipeline mode |
272
- | [Provider Sandbox & Permissions](./docs/provider-sandbox.md) | Sandbox, permission modes, and network access for Codex / OpenCode / Claude |
291
+ | [External Integrations](./docs/external-integrations.md) | Community examples that extend TAKT without modifying core (audit trails, etc.) |
273
292
  | [Changelog](./CHANGELOG.md) ([日本語](./docs/CHANGELOG.ja.md)) | Version history |
274
- | [Security Policy](./SECURITY.md) | Vulnerability reporting |
293
+
294
+ ## Sponsors
295
+
296
+ TAKT is supported by [CodeRabbit](https://coderabbit.link/nrslib) through its Open Source Support Program.
297
+
298
+ <a href="https://coderabbit.link/nrslib">
299
+ <picture>
300
+ <source media="(prefers-color-scheme: dark)" srcset="https://victorious-bubble-f69a016683.media.strapiapp.com/White_Typemark_79b9189d19.svg">
301
+ <source media="(prefers-color-scheme: light)" srcset="https://victorious-bubble-f69a016683.media.strapiapp.com/Orange_Typemark_43bf516c9d.svg">
302
+ <img alt="CodeRabbit" src="https://victorious-bubble-f69a016683.media.strapiapp.com/Orange_Typemark_43bf516c9d.svg" height="40">
303
+ </picture>
304
+ </a>
275
305
 
276
306
  ## Community
277
307
 
@@ -74,6 +74,8 @@ language: en # UI language: en | ja
74
74
  # provider_options:
75
75
  # codex:
76
76
  # network_access: true
77
+ # opencode:
78
+ # variant: high
77
79
  # claude:
78
80
  # sandbox:
79
81
  # allow_unsandboxed_commands: true
@@ -0,0 +1,16 @@
1
+ ## Notice: This Step Is A Fallback Execution
2
+
3
+ The previous step execution was interrupted by an external condition ({{fallback_reason}}) and is being retried in a new session.
4
+ The previous session context is not carried into this session.
5
+
6
+ - Interrupted step: {{step_name}}
7
+ - Original iteration: {{original_iteration}}
8
+ - Interruption reason: {{fallback_reason_detail}}
9
+ - Previous provider/model: {{previous_provider}} / {{previous_model}}
10
+ - Current provider/model: {{current_provider}} / {{current_model}}
11
+
12
+ Previous work that remains on disk as files or reports is available, but chat context is not. Rebuild context as needed:
13
+
14
+ 1. Inspect existing reports under {{report_dir}}
15
+ 2. Inspect the latest commit or working tree diff
16
+ 3. If context is still missing, execute from the step instruction
@@ -1,16 +1,9 @@
1
1
  **This is AI Review iteration #{step_iteration}.**
2
- Use reports in the Report Directory as the primary source of truth. If additional context is needed, you may consult Previous Response and conversation history as secondary sources (Previous Response may be unavailable). If information conflicts, prioritize reports in the Report Directory and actual file contents.
3
-
4
- From the 2nd iteration onward, it means the previous fixes were not actually applied.
5
- **Your belief that they were "already fixed" is incorrect.**
6
2
 
7
- **First, acknowledge the following:**
8
- - The files you thought were "fixed" are actually not fixed
9
- - Your understanding of the previous work is wrong
10
- - You need to rethink from scratch
3
+ Use reports in the Report Directory as the primary source of truth. If additional context is needed, you may consult Previous Response and conversation history as secondary sources (Previous Response may be unavailable). If information conflicts, prioritize reports in the Report Directory and actual file contents.
11
4
 
12
5
  **Required actions:**
13
- 1. Open all flagged files with the Read tool (discard assumptions and verify the facts)
6
+ 1. Open all flagged files with the Read tool
14
7
  2. Search for the problem areas with grep to confirm they exist
15
8
  3. Fix the confirmed issues with the Edit tool
16
9
  4. Run tests to verify
@@ -20,11 +13,6 @@ From the 2nd iteration onward, it means the previous fixes were not actually app
20
13
  - NG: "It has already been fixed"
21
14
  - OK: "After checking file X at L123, I found issue Y and fixed it to Z"
22
15
 
23
- **Strictly prohibited:**
24
- - Reporting "already fixed" without opening the file
25
- - Making judgments based on assumptions
26
- - Leaving issues that the AI Reviewer REJECTed unresolved
27
-
28
16
  **Handling "no fix needed" (required)**
29
17
  - Do not judge "no fix needed" unless you can show verification results for the target file for each AI Review finding
30
18
  - If the finding relates to "generated output" or "spec synchronization", output the tag corresponding to "unable to determine" unless you can verify the source/spec
@@ -3,15 +3,9 @@
3
3
  On the first iteration, review comprehensively and report all issues that need to be flagged.
4
4
  From the 2nd iteration onward, prioritize verifying whether previously REJECTed items have been fixed.
5
5
 
6
- Review the code for AI-specific issues:
7
- - Verification of assumptions
8
- - Plausible but incorrect patterns
9
- - Compatibility with the existing codebase
10
- - Scope creep detection
11
- - Scope shrinkage detection (missing task requirements)
6
+ Review the diff for AI-specific issues.
12
7
 
13
- ## Judgment Procedure
14
-
15
- 1. Review the change diff and detect issues based on the AI-specific criteria above
16
- 2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
17
- 3. If there is even one blocking issue, judge as REJECT
8
+ Procedure:
9
+ 1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
10
+ 2. List every `##` section in each of them (do not cherry-pick)
11
+ 3. Match the criteria in each listed section against the diff and detect any issues
@@ -42,13 +42,12 @@ Small / Medium / Large
42
42
  ```
43
43
 
44
44
  **Pre-completion self-check (required):**
45
- Before running build and tests, verify the following:
46
- - If new parameters/fields were added, grep to confirm they are actually passed from call sites
47
- - For any `??`, `||`, `= defaultValue` usage, confirm fallback is truly necessary
48
- - Verify no replaced code/exports remain after refactoring
49
- - Verify no features outside the task specification were added
50
- - Verify no if/else blocks call the same function with only argument differences
51
- - Verify new code matches existing implementation patterns (API call style, type definition style, etc.)
45
+
46
+ Before running build and tests, audit your work against Policy with the following procedure.
47
+
48
+ 1. Open the Policy Source path with the Read tool and obtain the full content
49
+ 2. List every `##` section (do not cherry-pick)
50
+ 3. Match the REJECT criteria in each listed section against your implementation
52
51
 
53
52
  **Required output (include headings)**
54
53
  ## Work results
@@ -41,13 +41,12 @@ Small / Medium / Large
41
41
  ```
42
42
 
43
43
  **Pre-completion self-check (required):**
44
- Before running build and tests, verify the following:
45
- - If new parameters/fields were added, grep to confirm they are actually passed from call sites
46
- - For any `??`, `||`, `= defaultValue` usage, confirm fallback is truly necessary
47
- - Verify no replaced code/exports remain after refactoring
48
- - Verify no features outside the task specification were added
49
- - Verify no if/else blocks call the same function with only argument differences
50
- - Verify new code matches existing implementation patterns (API call style, type definition style, etc.)
44
+
45
+ Before running build and tests, audit your work against Policy with the following procedure.
46
+
47
+ 1. Open the Policy Source path with the Read tool and obtain the full content
48
+ 2. List every `##` section (do not cherry-pick)
49
+ 3. Match the REJECT criteria in each listed section against your implementation
51
50
 
52
51
  **Required output (include headings)**
53
52
  ## Work results
@@ -1,39 +1,7 @@
1
1
  Focus on reviewing **architecture and design**.
2
2
  Do not review AI-specific issues (already covered by the ai-antipattern-review-1st step).
3
3
 
4
- **Review criteria:**
5
- - Structural and design validity
6
- - Modularization (high cohesion, low coupling, no circular dependencies)
7
- - Functionalization (single responsibility per function, operation discoverability, consistent abstraction level)
8
- - Code quality
9
- - Appropriateness of change scope
10
- - Test coverage
11
- - Dead code
12
- - Call chain verification
13
- - Scattered hardcoding of contract strings (file names, config key names)
14
-
15
-
16
- **Design decisions reference:**
17
- Review {report:coder-decisions.md} to understand the recorded design decisions.
18
- - Do not flag intentionally documented decisions as FP
19
- - However, also evaluate whether the design decisions themselves are sound, and flag any problems
20
-
21
- **Previous finding tracking (required):**
22
- - First, inspect the review result previously produced by this step and its timestamped history in the Report Directory, treating the unversioned file as the latest result and the most recent timestamped file as the previous result
23
- - If "Previous Response" is available, use it only as supporting context; use report history as the source of truth for finding state transitions
24
- - Assign `finding_id` to each finding and classify current status as `new / persists / resolved / reopened`
25
- - If status is `persists`, provide concrete unresolved evidence (file/line)
26
- - Do not drop open findings from the prior report when producing the current report
27
-
28
- ## Judgment Procedure
29
-
30
- 1. First, extract previous open findings and preliminarily classify as `new / persists / resolved / reopened`
31
- 2. Review the change diff and detect issues based on the architecture and design criteria above
32
- - Cross-check changes against REJECT criteria tables defined in knowledge
33
- - If you find a DRY violation, require it to be fixed
34
- - Before proposing a fix, verify that the consolidation target fits existing responsibility boundaries, contracts, and public API shape
35
- - If you require a new wrapper, helper, or public API, explain why that abstraction target is the natural one
36
- - If the proposed abstraction goes beyond the task spec or plan, state why the additional scope is necessary and justified
37
- - When citing build, test, or functional verification as evidence, record the verified target, what was checked, and the observed result in the report
38
- 3. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
39
- 4. If there is even one blocking issue (`new`, `persists`, or `reopened`), judge as REJECT
4
+ Procedure:
5
+ 1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
6
+ 2. List every `##` section in each of them (do not cherry-pick)
7
+ 3. Match the criteria in each listed section against the diff and detect any issues
@@ -1,25 +1,9 @@
1
- Review the changes from the perspective of CQRS (Command Query Responsibility Segregation) and Event Sourcing.
2
- AI-specific issue review is not needed (already covered by the ai-antipattern-review-1st step).
1
+ Focus on reviewing **CQRS (Command Query Responsibility Segregation) and Event Sourcing**.
2
+ Do not review AI-specific issues (already covered by the ai-antipattern-review-1st step).
3
3
 
4
- **Review criteria:**
5
- - Aggregate design validity
6
- - Event design (granularity, naming, schema)
7
- - Command/Query separation
8
- - Projection design
9
- - Eventual consistency considerations
4
+ Procedure:
5
+ 1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
6
+ 2. List every `##` section in each of them (do not cherry-pick)
7
+ 3. Match the criteria in each listed section against the diff and detect any issues
10
8
 
11
- **Note**: If this project does not use the CQRS+ES pattern,
12
- review from a general domain design perspective instead.
13
-
14
-
15
- **Design decisions reference:**
16
- Review {report:coder-decisions.md} to understand the recorded design decisions.
17
- - Do not flag intentionally documented decisions as FP
18
- - However, also evaluate whether the design decisions themselves are sound, and flag any problems
19
-
20
- ## Judgment Procedure
21
-
22
- 1. Review the change diff and detect issues based on the CQRS and Event Sourcing criteria above
23
- - Cross-check changes against REJECT criteria tables defined in knowledge
24
- 2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
25
- 3. If there is even one blocking issue, judge as REJECT
9
+ **Note:** If this project does not use the CQRS+ES pattern, review from a general domain design perspective instead.
@@ -1,34 +1,8 @@
1
- Review the changes from a frontend development perspective.
1
+ Focus on reviewing **frontend development**.
2
2
 
3
- **Review criteria:**
4
- - Design fidelity (top priority when a design reference is provided)
5
- - Component design (separation of concerns, granularity)
6
- - State management (local vs. global decisions)
7
- - Performance (re-renders, memoization)
8
- - Accessibility (keyboard navigation, ARIA)
9
- - Data fetching patterns
10
- - Reachability wiring for user-facing features (routes, entry paths, launch conditions)
11
- - TypeScript type safety
3
+ Procedure:
4
+ 1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
5
+ 2. List every `##` section in each of them (do not cherry-pick)
6
+ 3. Match the criteria in each listed section against the diff and detect any issues
12
7
 
13
- **Design fidelity check (when a design reference exists):**
14
- 1. Identify the design reference from the task order's referenced materials
15
- 2. Compare design elements (layout, wording, colors, spacing) against implementation element by element
16
- 3. For any discrepancy, check the decisions log to determine if it was intentional
17
- 4. Report unintentional discrepancies as blocking issues
18
-
19
- **Note**: If this project does not include a frontend,
20
- proceed as no issues found.
21
-
22
-
23
- **Design decisions reference:**
24
- Review {report:coder-decisions.md} to understand the recorded design decisions.
25
- - Do not flag intentionally documented decisions as FP
26
- - However, also evaluate whether the design decisions themselves are sound, and flag any problems
27
-
28
- ## Judgment Procedure
29
-
30
- 1. Review the change diff and detect issues based on the frontend development criteria above
31
- - Cross-check changes against REJECT criteria tables defined in knowledge
32
- - When new screens or user-facing features are added, verify that entry points and caller wiring were updated as well
33
- 2. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
34
- 3. If there is even one blocking issue, judge as REJECT
8
+ **Note:** If this project does not include a frontend, proceed as no issues found.
@@ -1,32 +1,6 @@
1
- Review the changes from a quality assurance perspective.
1
+ Focus on reviewing **quality assurance (test strategy, coverage, error handling, maintainability)**.
2
2
 
3
- **Review criteria:**
4
- - Test coverage and quality
5
- - Test strategy (unit/integration/E2E)
6
- - Error handling
7
- - Logging and monitoring
8
- - Maintainability
9
-
10
-
11
- **Design decisions reference:**
12
- Review {report:coder-decisions.md} to understand the recorded design decisions.
13
- - Do not flag intentionally documented decisions as FP
14
- - However, also evaluate whether the design decisions themselves are sound, and flag any problems
15
-
16
- **Previous finding tracking (required):**
17
- - First, inspect the review result previously produced by this step and its timestamped history in the Report Directory, treating the unversioned file as the latest result and the most recent timestamped file as the previous result
18
- - If "Previous Response" is available, use it only as supporting context; use report history as the source of truth for finding state transitions
19
- - Assign `finding_id` to each finding and classify current status as `new / persists / resolved / reopened`
20
- - If status is `persists`, provide concrete unresolved evidence (file/line)
21
- - Do not drop open findings from the prior report when producing the current report
22
-
23
- ## Judgment Procedure
24
-
25
- 1. First, extract previous open findings and preliminarily classify as `new / persists / resolved / reopened`
26
- 2. Review the change diff and detect issues based on the quality assurance criteria above
27
- - Cross-check changes against REJECT criteria tables defined in knowledge
28
- - Even if tests pass, verify whether any additional change outside the task or plan is justified
29
- - If review-driven follow-up changes expand the design, evaluate whether that extra change is actually necessary
30
- - When citing build, test, or functional verification as evidence, record the verified target, what was checked, and the observed result in the report
31
- 3. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
32
- 4. If there is even one blocking issue (`new`, `persists`, or `reopened`), judge as REJECT
3
+ Procedure:
4
+ 1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
5
+ 2. List every `##` section in each of them (do not cherry-pick)
6
+ 3. Match the criteria in each listed section against the diff and detect any issues
@@ -1,25 +1,11 @@
1
- Review the changes from a requirements fulfillment perspective.
1
+ Focus on reviewing **requirements fulfillment**.
2
2
 
3
- **Review criteria:**
4
- - Whether each requested requirement has been implemented
5
- - Whether implicit requirements (naturally expected behaviors) are satisfied
6
- - Whether changes outside the scope (scope creep) have crept in
7
- - Whether there are any partial or missing implementations
3
+ Procedure:
4
+ 1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
5
+ 2. List every `##` section in each of them (do not cherry-pick)
6
+ 3. Match the criteria in each listed section against the diff and detect any issues
8
7
 
9
-
10
- **Design decisions reference:**
11
- Review {report:coder-decisions.md} to understand the recorded design decisions.
12
- - Do not flag intentionally documented decisions as FP
13
- - However, also evaluate whether the design decisions themselves are sound, and flag any problems
14
-
15
- **Previous finding tracking (required):**
16
- - First, inspect the review result previously produced by this step and its timestamped history in the Report Directory, treating the unversioned file as the latest result and the most recent timestamped file as the previous result
17
- - If "Previous Response" is available, use it only as supporting context; use report history as the source of truth for finding state transitions
18
- - Assign `finding_id` to each finding and classify current status as `new / persists / resolved / reopened`
19
- - If status is `persists`, provide concrete unresolved evidence (file/line)
20
- - Do not drop open findings from the prior report when producing the current report
21
-
22
- ## Judgment Procedure
8
+ ## Step-Specific Additional Procedure
23
9
 
24
10
  1. Read `order.md`, the task body, `plan.md`, and `coder-decisions.md`, then extract the requirements one by one
25
11
  2. If a sentence contains multiple conditions or paths, split it into the smallest independently verifiable units
@@ -29,7 +15,3 @@ Review {report:coder-decisions.md} to understand the recorded design decisions.
29
15
  - Do not mark a row `satisfied` without concrete code evidence
30
16
  - Do not mark a row `satisfied` when only part of the cases is covered
31
17
  5. List out-of-scope changes and judge whether they are justified or unnecessary
32
- 6. Reclassify prior findings into `new / persists / resolved / reopened`
33
- 7. When citing build, test, or functional verification as evidence, record the verified target, what was checked, and the observed result in the report
34
- 8. For each detected issue, classify it as blocking/non-blocking based on the Policy's scope table and judgment rules
35
- 9. If there is even one blocking issue in `new`, `persists`, or `reopened`, judge as REJECT
@@ -1,39 +1,16 @@
1
- Review the changes from a security perspective. Check for the following vulnerabilities:
2
- - Injection attacks (SQL, command, XSS)
3
- - Authentication and authorization flaws
4
- - Data exposure risks
5
- - Cryptographic weaknesses
1
+ Focus on reviewing **security**.
6
2
 
7
- **Primary sources to review:**
8
- - Review `order.md` to understand requirements and prohibitions.
9
- - Review `plan.md` to understand intended scope and design direction.
10
- - Review {report:coder-decisions.md} to understand the recorded design decisions.
11
- - Do not dismiss documented decisions as FP by default. Re-evaluate them against `order.md`, `plan.md`, and the actual code.
3
+ Procedure:
4
+ 1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
5
+ 2. List every `##` section in each of them (do not cherry-pick)
6
+ 3. Match the criteria in each listed section against the diff and detect any issues
12
7
 
13
- **Previous finding tracking (required):**
14
- - First, inspect the review result previously produced by this step and its timestamped history in the Report Directory, treating the unversioned file as the latest result and the most recent timestamped file as the previous result
15
- - If "Previous Response" is available, use it only as supporting context; use report history as the source of truth for finding state transitions
16
- - Assign `finding_id` to each finding and classify current status as `new / persists / resolved / reopened`
17
- - If status is `persists`, provide concrete unresolved evidence (file/line)
18
- - Do not drop open findings from the prior report when producing the current report
8
+ ## Step-Specific Notes
19
9
 
20
- **Important:**
21
- - Do not treat documented precedence rules, extension points, or configuration override behavior as vulnerabilities by themselves.
22
- - Do not assume that removing an interactive confirmation or warning automatically means a security boundary regression.
23
- - To issue a blocking finding, make the exploit path concrete: who controls what input, and what newly becomes possible.
24
-
25
- ## Judgment Procedure
26
-
27
- 1. Cross-check `order.md`, `plan.md`, `coder-decisions.md`, and the actual code to determine whether the behavior is intentional product behavior
28
- 2. Review the change diff and extract issue candidates by cross-checking changes against REJECT criteria in knowledge
29
- 3. For each candidate, verify the concrete exploit path
30
- - Which actor controls the input or configuration
31
- - Whether the change enables new privilege, data access, code execution, or prompt modification
32
- - Whether the impact exceeds the existing documented precedence or extension model
33
- 4. When configuration precedence, local/global shadowing, or non-interactive selection is involved, additionally verify:
34
- - Whether the behavior is intended by `order.md` or `plan.md`
35
- - Whether explicit selectors or arguments already make the user's intent clear
36
- - Whether there is an actual trust-boundary break or new attack capability, rather than merely an override relationship
37
- 5. When citing build, test, or functional verification as evidence, record the verified target, what was checked, and the observed result in the report
38
- 6. For each detected issue, classify it as blocking or non-blocking based on the Policy scope table and judgment rules
39
- 7. If there is even one blocking issue, judge as REJECT
10
+ - Do not treat documented precedence rules, extension points, or configuration override behavior as vulnerabilities by themselves
11
+ - Do not assume that removing an interactive confirmation or warning automatically means a security boundary regression
12
+ - To issue a blocking finding, make the exploit path concrete: which actor controls what input, and what newly becomes possible
13
+ - When configuration precedence, local/global shadowing, or non-interactive selection is involved, additionally verify:
14
+ - Whether the behavior is intended by `order.md` or `plan.md`
15
+ - Whether explicit selectors or arguments already make the user's intent clear
16
+ - Whether there is an actual trust-boundary break or new attack capability, rather than merely an override relationship
@@ -1,31 +1,7 @@
1
1
  Focus on reviewing **Terraform convention compliance**.
2
2
  Do not review AI-specific issues (already covered by the ai-antipattern-review-1st step).
3
3
 
4
- **Review criteria:**
5
- - Variable declaration compliance (type, description, sensitive)
6
- - Resource naming consistency (name_prefix pattern)
7
- - File organization compliance (one file per concern)
8
- - Security configurations (IMDSv2, encryption, access control, IAM least privilege)
9
- - Tag management (default_tags, no duplication)
10
- - Lifecycle rule appropriateness
11
- - Cost trade-off documentation
12
- - Unused variables / outputs / data sources
13
-
14
-
15
- **Design decisions reference:**
16
- Review {report:coder-decisions.md} to understand the recorded design decisions.
17
- - Do not flag intentionally documented decisions as FP
18
- - However, also evaluate whether the design decisions themselves are sound, and flag any problems
19
-
20
- **Previous finding tracking (required):**
21
- - First, extract open findings from "Previous Response"
22
- - Assign `finding_id` to each finding and classify current status as `new / persists / resolved`
23
- - If status is `persists`, provide concrete unresolved evidence (file/line)
24
-
25
- ## Judgment Procedure
26
-
27
- 1. First, extract previous open findings and preliminarily classify as `new / persists / resolved`
28
- 2. Review the change diff and detect issues based on Terraform convention criteria
29
- - Cross-check changes against REJECT criteria tables defined in knowledge
30
- 3. For each detected issue, classify as blocking/non-blocking based on Policy's scope determination table and judgment rules
31
- 4. If there is even one blocking issue (`new` or `persists`), judge as REJECT
4
+ Procedure:
5
+ 1. Open the Knowledge and Policy Source paths with the Read tool and obtain the full content
6
+ 2. List every `##` section in each of them (do not cherry-pick)
7
+ 3. Match the criteria in each listed section against the diff and detect any issues