takt 0.2.0 → 0.2.1

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 (123) hide show
  1. package/README.md +55 -15
  2. package/dist/agents/runner.d.ts +3 -1
  3. package/dist/agents/runner.d.ts.map +1 -1
  4. package/dist/agents/runner.js +15 -0
  5. package/dist/agents/runner.js.map +1 -1
  6. package/dist/claude/client.d.ts +3 -1
  7. package/dist/claude/client.d.ts.map +1 -1
  8. package/dist/claude/client.js +17 -0
  9. package/dist/claude/client.js.map +1 -1
  10. package/dist/cli.d.ts +9 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +64 -18
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/addTask.d.ts.map +1 -1
  15. package/dist/commands/addTask.js +27 -9
  16. package/dist/commands/addTask.js.map +1 -1
  17. package/dist/commands/help.d.ts.map +1 -1
  18. package/dist/commands/help.js +5 -3
  19. package/dist/commands/help.js.map +1 -1
  20. package/dist/commands/index.d.ts +1 -0
  21. package/dist/commands/index.d.ts.map +1 -1
  22. package/dist/commands/index.js +1 -0
  23. package/dist/commands/index.js.map +1 -1
  24. package/dist/commands/reviewTasks.d.ts +32 -0
  25. package/dist/commands/reviewTasks.d.ts.map +1 -0
  26. package/dist/commands/reviewTasks.js +198 -0
  27. package/dist/commands/reviewTasks.js.map +1 -0
  28. package/dist/commands/taskExecution.d.ts +16 -2
  29. package/dist/commands/taskExecution.d.ts.map +1 -1
  30. package/dist/commands/taskExecution.js +75 -39
  31. package/dist/commands/taskExecution.js.map +1 -1
  32. package/dist/commands/watchTasks.d.ts.map +1 -1
  33. package/dist/commands/watchTasks.js +6 -36
  34. package/dist/commands/watchTasks.js.map +1 -1
  35. package/dist/commands/workflowExecution.d.ts +5 -1
  36. package/dist/commands/workflowExecution.d.ts.map +1 -1
  37. package/dist/commands/workflowExecution.js +35 -12
  38. package/dist/commands/workflowExecution.js.map +1 -1
  39. package/dist/config/initialization.d.ts +2 -0
  40. package/dist/config/initialization.d.ts.map +1 -1
  41. package/dist/config/initialization.js +12 -2
  42. package/dist/config/initialization.js.map +1 -1
  43. package/dist/config/paths.d.ts +1 -1
  44. package/dist/config/paths.d.ts.map +1 -1
  45. package/dist/config/paths.js +1 -1
  46. package/dist/config/paths.js.map +1 -1
  47. package/dist/config/sessionStore.d.ts +5 -0
  48. package/dist/config/sessionStore.d.ts.map +1 -1
  49. package/dist/config/sessionStore.js +1 -1
  50. package/dist/config/sessionStore.js.map +1 -1
  51. package/dist/config/workflowLoader.d.ts.map +1 -1
  52. package/dist/config/workflowLoader.js +1 -0
  53. package/dist/config/workflowLoader.js.map +1 -1
  54. package/dist/models/schemas.d.ts +22 -0
  55. package/dist/models/schemas.d.ts.map +1 -1
  56. package/dist/models/schemas.js +8 -0
  57. package/dist/models/schemas.js.map +1 -1
  58. package/dist/models/types.d.ts +8 -2
  59. package/dist/models/types.d.ts.map +1 -1
  60. package/dist/prompt/index.d.ts +60 -11
  61. package/dist/prompt/index.d.ts.map +1 -1
  62. package/dist/prompt/index.js +246 -72
  63. package/dist/prompt/index.js.map +1 -1
  64. package/dist/providers/claude.d.ts.map +1 -1
  65. package/dist/providers/claude.js +2 -0
  66. package/dist/providers/claude.js.map +1 -1
  67. package/dist/providers/index.d.ts +3 -1
  68. package/dist/providers/index.d.ts.map +1 -1
  69. package/dist/providers/index.js.map +1 -1
  70. package/dist/task/autoCommit.d.ts +28 -0
  71. package/dist/task/autoCommit.d.ts.map +1 -0
  72. package/dist/task/autoCommit.js +68 -0
  73. package/dist/task/autoCommit.js.map +1 -0
  74. package/dist/task/index.d.ts +2 -1
  75. package/dist/task/index.d.ts.map +1 -1
  76. package/dist/task/index.js +2 -1
  77. package/dist/task/index.js.map +1 -1
  78. package/dist/task/worktree.d.ts +39 -0
  79. package/dist/task/worktree.d.ts.map +1 -1
  80. package/dist/task/worktree.js +111 -2
  81. package/dist/task/worktree.js.map +1 -1
  82. package/dist/utils/debug.d.ts +6 -1
  83. package/dist/utils/debug.d.ts.map +1 -1
  84. package/dist/utils/debug.js +30 -24
  85. package/dist/utils/debug.js.map +1 -1
  86. package/dist/utils/index.d.ts +1 -0
  87. package/dist/utils/index.d.ts.map +1 -1
  88. package/dist/utils/index.js +1 -0
  89. package/dist/utils/index.js.map +1 -1
  90. package/dist/utils/session.d.ts +20 -0
  91. package/dist/utils/session.d.ts.map +1 -1
  92. package/dist/utils/session.js +32 -3
  93. package/dist/utils/session.js.map +1 -1
  94. package/dist/utils/text.d.ts +22 -0
  95. package/dist/utils/text.d.ts.map +1 -0
  96. package/dist/utils/text.js +54 -0
  97. package/dist/utils/text.js.map +1 -0
  98. package/dist/workflow/engine.d.ts +5 -6
  99. package/dist/workflow/engine.d.ts.map +1 -1
  100. package/dist/workflow/engine.js +32 -12
  101. package/dist/workflow/engine.js.map +1 -1
  102. package/dist/workflow/index.d.ts +2 -2
  103. package/dist/workflow/index.d.ts.map +1 -1
  104. package/dist/workflow/index.js +2 -2
  105. package/dist/workflow/index.js.map +1 -1
  106. package/dist/workflow/instruction-builder.d.ts +31 -2
  107. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  108. package/dist/workflow/instruction-builder.js +69 -1
  109. package/dist/workflow/instruction-builder.js.map +1 -1
  110. package/dist/workflow/transitions.d.ts.map +1 -1
  111. package/dist/workflow/transitions.js +1 -0
  112. package/dist/workflow/transitions.js.map +1 -1
  113. package/dist/workflow/types.d.ts +5 -1
  114. package/dist/workflow/types.d.ts.map +1 -1
  115. package/package.json +1 -1
  116. package/resources/global/en/workflows/default.yaml +22 -1
  117. package/resources/global/en/workflows/simple.yaml +18 -1
  118. package/resources/global/ja/agents/default/ai-reviewer.md +24 -1
  119. package/resources/global/ja/agents/default/architect.md +37 -4
  120. package/resources/global/ja/agents/default/coder.md +1 -0
  121. package/resources/global/ja/workflows/default.yaml +27 -2
  122. package/resources/global/ja/workflows/expert-review.yaml +169 -10
  123. package/resources/global/ja/workflows/simple.yaml +18 -1
@@ -39,6 +39,7 @@ steps:
39
39
  | Situation | Judgment |
40
40
  |-----------|----------|
41
41
  | Requirements clear and implementable | DONE |
42
+ | User is asking a question (not an implementation task) | ANSWER |
42
43
  | Requirements unclear, insufficient info | BLOCKED |
43
44
 
44
45
  ## Output Format
@@ -46,6 +47,7 @@ steps:
46
47
  | Situation | Tag |
47
48
  |-----------|-----|
48
49
  | Analysis complete | `[PLANNER:DONE]` |
50
+ | Question answered | `[PLANNER:ANSWER]` |
49
51
  | Insufficient info | `[PLANNER:BLOCKED]` |
50
52
 
51
53
  ### Output Examples
@@ -55,6 +57,13 @@ steps:
55
57
  [PLANNER:DONE]
56
58
  ```
57
59
 
60
+ **ANSWER case:**
61
+ ```
62
+ {Answer to the question}
63
+
64
+ [PLANNER:ANSWER]
65
+ ```
66
+
58
67
  **BLOCKED case:**
59
68
  ```
60
69
  [PLANNER:BLOCKED]
@@ -80,10 +89,15 @@ steps:
80
89
  ## Instructions
81
90
  Analyze the task and create an implementation plan.
82
91
 
92
+ **Judgment criteria:**
93
+ - If the user input is an implementation task → create a plan and output `[PLANNER:DONE]`
94
+ - If the user input is a question → research, answer, and output `[PLANNER:ANSWER]`
95
+ - If there is insufficient information → output `[PLANNER:BLOCKED]`
96
+
83
97
  **Note:** If returned from implement step (Previous Response exists),
84
98
  review and revise the plan based on that feedback (replan).
85
99
 
86
- **Tasks:**
100
+ **Tasks (for implementation tasks):**
87
101
  1. Understand the requirements
88
102
  2. Identify impact scope
89
103
  3. Decide implementation approach
@@ -117,6 +131,8 @@ steps:
117
131
  transitions:
118
132
  - condition: done
119
133
  next_step: implement
134
+ - condition: answer
135
+ next_step: COMPLETE
120
136
  - condition: blocked
121
137
  next_step: ABORT
122
138
 
@@ -131,6 +147,7 @@ steps:
131
147
  - Bash
132
148
  - WebSearch
133
149
  - WebFetch
150
+ permission_mode: acceptEdits
134
151
  status_rules_prompt: |
135
152
  # ⚠️ REQUIRED: Status Output Rules ⚠️
136
153
 
@@ -360,6 +377,7 @@ steps:
360
377
  - Bash
361
378
  - WebSearch
362
379
  - WebFetch
380
+ permission_mode: acceptEdits
363
381
  status_rules_prompt: |
364
382
  # ⚠️ REQUIRED: Status Output Rules ⚠️
365
383
 
@@ -545,6 +563,7 @@ steps:
545
563
  - Bash
546
564
  - WebSearch
547
565
  - WebFetch
566
+ permission_mode: acceptEdits
548
567
  status_rules_prompt: |
549
568
  # ⚠️ REQUIRED: Status Output Rules ⚠️
550
569
 
@@ -727,6 +746,7 @@ steps:
727
746
  - Bash
728
747
  - WebSearch
729
748
  - WebFetch
749
+ permission_mode: acceptEdits
730
750
  status_rules_prompt: |
731
751
  # ⚠️ REQUIRED: Status Output Rules ⚠️
732
752
 
@@ -796,6 +816,7 @@ steps:
796
816
  - Bash
797
817
  - WebSearch
798
818
  - WebFetch
819
+ permission_mode: acceptEdits
799
820
  status_rules_prompt: |
800
821
  # ⚠️ REQUIRED: Status Output Rules ⚠️
801
822
 
@@ -40,6 +40,7 @@ steps:
40
40
  | Situation | Judgment |
41
41
  |-----------|----------|
42
42
  | Requirements clear and implementable | DONE |
43
+ | User is asking a question (not an implementation task) | ANSWER |
43
44
  | Requirements unclear, insufficient info | BLOCKED |
44
45
 
45
46
  ## Output Format
@@ -47,6 +48,7 @@ steps:
47
48
  | Situation | Tag |
48
49
  |-----------|-----|
49
50
  | Analysis complete | `[PLANNER:DONE]` |
51
+ | Question answered | `[PLANNER:ANSWER]` |
50
52
  | Insufficient info | `[PLANNER:BLOCKED]` |
51
53
 
52
54
  ### Output Examples
@@ -56,6 +58,13 @@ steps:
56
58
  [PLANNER:DONE]
57
59
  ```
58
60
 
61
+ **ANSWER case:**
62
+ ```
63
+ {Answer to the question}
64
+
65
+ [PLANNER:ANSWER]
66
+ ```
67
+
59
68
  **BLOCKED case:**
60
69
  ```
61
70
  [PLANNER:BLOCKED]
@@ -81,10 +90,15 @@ steps:
81
90
  ## Instructions
82
91
  Analyze the task and create an implementation plan.
83
92
 
93
+ **Judgment criteria:**
94
+ - If the user input is an implementation task → create a plan and output `[PLANNER:DONE]`
95
+ - If the user input is a question → research, answer, and output `[PLANNER:ANSWER]`
96
+ - If there is insufficient information → output `[PLANNER:BLOCKED]`
97
+
84
98
  **Note:** If returned from implement step (Previous Response exists),
85
99
  review and revise the plan based on that feedback (replan).
86
100
 
87
- **Tasks:**
101
+ **Tasks (for implementation tasks):**
88
102
  1. Understand the requirements
89
103
  2. Identify impact scope
90
104
  3. Decide implementation approach
@@ -118,6 +132,8 @@ steps:
118
132
  transitions:
119
133
  - condition: done
120
134
  next_step: implement
135
+ - condition: answer
136
+ next_step: COMPLETE
121
137
  - condition: blocked
122
138
  next_step: ABORT
123
139
 
@@ -132,6 +148,7 @@ steps:
132
148
  - Bash
133
149
  - WebSearch
134
150
  - WebFetch
151
+ permission_mode: acceptEdits
135
152
  status_rules_prompt: |
136
153
  # ⚠️ REQUIRED: Status Output Rules ⚠️
137
154
 
@@ -51,11 +51,15 @@ AI生成コードには特有の特徴があります:
51
51
  | 古いパターン | 学習データからの非推奨アプローチの使用 |
52
52
  | 過剰エンジニアリング | タスクに不要な抽象化レイヤーの追加 |
53
53
  | 過小エンジニアリング | 現実的なシナリオのエラーハンドリングの欠如 |
54
+ | 配線忘れ | 機構は実装されているが、エントリポイントから渡されていない |
54
55
 
55
56
  **検証アプローチ:**
56
57
  1. このコードは実際にコンパイル/実行できるか?
57
58
  2. インポートされたモジュール/関数は存在するか?
58
59
  3. このライブラリバージョンでAPIは正しく使用されているか?
60
+ 4. 新しいパラメータ/フィールドが追加された場合、呼び出し元から実際に渡されているか?
61
+ - AIは個々のファイル内では正しく実装するが、ファイル横断の結合を忘れがち
62
+ - `options.xxx ?? fallback` で常にフォールバックが使われていないか grep で確認
59
63
 
60
64
  ### 3. コピペパターン検出
61
65
 
@@ -96,7 +100,26 @@ AI生成コードには特有の特徴があります:
96
100
 
97
101
  **原則:** 最良のコードは、問題を解決する最小限のコード。
98
102
 
99
- ### 6. 決定トレーサビリティレビュー
103
+ ### 6. デッドコード検出
104
+
105
+ **AIは新しいコードを追加するが、不要になったコードの削除を忘れることが多い。**
106
+
107
+ | パターン | 例 |
108
+ |---------|-----|
109
+ | 未使用の関数・メソッド | リファクタリング後に残った旧実装 |
110
+ | 未使用の変数・定数 | 条件変更で不要になった定義 |
111
+ | 到達不能コード | 早期returnの後に残った処理、常に真/偽になる条件分岐 |
112
+ | 未使用のインポート・依存 | 削除された機能のimport文やパッケージ依存 |
113
+ | 孤立したエクスポート・公開API | 実体が消えたのにre-exportやindex登録が残っている |
114
+ | 未使用のインターフェース・型定義 | 実装側が変更されたのに残った古い型 |
115
+ | 無効化されたコード | コメントアウトされたまま放置されたコード |
116
+
117
+ **検証アプローチ:**
118
+ 1. 変更・削除されたコードを参照している箇所がないか grep で確認
119
+ 2. 公開モジュール(index ファイル等)のエクスポート一覧と実体が一致しているか確認
120
+ 3. 新規追加されたコードに対応する古いコードが残っていないか確認
121
+
122
+ ### 7. 決定トレーサビリティレビュー
100
123
 
101
124
  **Coderの決定ログが妥当か検証する。**
102
125
 
@@ -384,7 +384,40 @@ function createOrder(data: OrderData) {
384
384
  - 3回の重複 → 即抽出
385
385
  - ドメインが異なる重複 → 抽象化しない(例: 顧客用バリデーションと管理者用バリデーションは別物)
386
386
 
387
- ### 8. 品質特性
387
+ ### 8. 呼び出しチェーン検証
388
+
389
+ **新しいパラメータ・フィールドが追加された場合、変更ファイル内だけでなく呼び出し元も検証する。**
390
+
391
+ **検証手順:**
392
+ 1. 新しいオプショナルパラメータや interface フィールドを見つけたら、`Grep` で全呼び出し元を検索
393
+ 2. 全呼び出し元が新しいパラメータを渡しているか確認
394
+ 3. フォールバック値(`?? default`)がある場合、フォールバックが使われるケースが意図通りか確認
395
+
396
+ **危険パターン:**
397
+
398
+ | パターン | 問題 | 検出方法 |
399
+ |---------|------|---------|
400
+ | `options.xxx ?? fallback` で全呼び出し元が `xxx` を省略 | 機能が実装されているのに常にフォールバック | grep で呼び出し元を確認 |
401
+ | テストがモックで直接値をセット | 実際の呼び出しチェーンを経由しない | テストの構築方法を確認 |
402
+ | `executeXxx()` が内部で使う `options` を引数で受け取らない | 上位から値を渡す口がない | 関数シグネチャを確認 |
403
+
404
+ **具体例:**
405
+
406
+ ```typescript
407
+ // ❌ 配線漏れ: projectCwd を受け取る口がない
408
+ export async function executeWorkflow(config, cwd, task) {
409
+ const engine = new WorkflowEngine(config, cwd, task); // options なし
410
+ }
411
+
412
+ // ✅ 配線済み: projectCwd を渡せる
413
+ export async function executeWorkflow(config, cwd, task, options?) {
414
+ const engine = new WorkflowEngine(config, cwd, task, options);
415
+ }
416
+ ```
417
+
418
+ **このパターンを見つけたら REJECT。** 個々のファイルが正しくても、結合されていなければ機能しない。
419
+
420
+ ### 9. 品質特性
388
421
 
389
422
  | 特性 | 確認観点 |
390
423
  |------|---------|
@@ -392,7 +425,7 @@ function createOrder(data: OrderData) {
392
425
  | Maintainability | 変更・修正が容易か |
393
426
  | Observability | ログ・監視が可能な設計か |
394
427
 
395
- ### 9. 大局観
428
+ ### 10. 大局観
396
429
 
397
430
  **注意**: 細かい「クリーンコード」の指摘に終始しない。
398
431
 
@@ -403,7 +436,7 @@ function createOrder(data: OrderData) {
403
436
  - ビジネス要件と整合しているか
404
437
  - 命名がドメインと一貫しているか
405
438
 
406
- ### 10. 変更スコープの評価
439
+ ### 11. 変更スコープの評価
407
440
 
408
441
  **変更スコープを確認し、レポートに記載する(ブロッキングではない)。**
409
442
 
@@ -422,7 +455,7 @@ function createOrder(data: OrderData) {
422
455
  **提案として記載すること(ブロッキングではない):**
423
456
  - 分割可能な場合は分割案を提示
424
457
 
425
- ### 11. 堂々巡りの検出
458
+ ### 12. 堂々巡りの検出
426
459
 
427
460
  レビュー回数が渡される場合(例: 「レビュー回数: 3回目」)、回数に応じて判断を変える。
428
461
 
@@ -90,6 +90,7 @@
90
90
  | 構文エラー | ビルド・コンパイル |
91
91
  | テスト | テスト実行 |
92
92
  | 要求充足 | 元のタスク要求と照合 |
93
+ | デッドコード | 変更・削除した機能を参照する未使用コードが残っていないか確認(未使用の関数、変数、インポート、エクスポート、型定義、到達不能コード) |
93
94
 
94
95
  **すべて確認してから `[DONE]` を出力。**
95
96
 
@@ -39,6 +39,7 @@ steps:
39
39
  | 状況 | 判定 |
40
40
  |------|------|
41
41
  | 要件が明確で実装可能 | DONE |
42
+ | ユーザーが質問をしている(実装タスクではない) | ANSWER |
42
43
  | 要件が不明確、情報不足 | BLOCKED |
43
44
 
44
45
  ## 出力フォーマット
@@ -46,6 +47,7 @@ steps:
46
47
  | 状況 | タグ |
47
48
  |------|------|
48
49
  | 分析完了 | `[PLANNER:DONE]` |
50
+ | 質問への回答 | `[PLANNER:ANSWER]` |
49
51
  | 情報不足 | `[PLANNER:BLOCKED]` |
50
52
 
51
53
  ### 出力例
@@ -55,6 +57,13 @@ steps:
55
57
  [PLANNER:DONE]
56
58
  ```
57
59
 
60
+ **ANSWER の場合:**
61
+ ```
62
+ {質問への回答}
63
+
64
+ [PLANNER:ANSWER]
65
+ ```
66
+
58
67
  **BLOCKED の場合:**
59
68
  ```
60
69
  [PLANNER:BLOCKED]
@@ -80,10 +89,15 @@ steps:
80
89
  ## Instructions
81
90
  タスクを分析し、実装方針を立ててください。
82
91
 
92
+ **判断基準:**
93
+ - ユーザーの入力が実装タスクの場合 → 計画を立てて `[PLANNER:DONE]`
94
+ - ユーザーの入力が質問の場合 → 調査・回答して `[PLANNER:ANSWER]`
95
+ - 情報不足の場合 → `[PLANNER:BLOCKED]`
96
+
83
97
  **注意:** Previous Responseがある場合は差し戻しのため、
84
98
  その内容を踏まえて計画を見直してください(replan)。
85
99
 
86
- **やること:**
100
+ **やること(実装タスクの場合):**
87
101
  1. タスクの要件を理解する
88
102
  2. 影響範囲を特定する
89
103
  3. 実装アプローチを決める
@@ -117,6 +131,8 @@ steps:
117
131
  transitions:
118
132
  - condition: done
119
133
  next_step: implement
134
+ - condition: answer
135
+ next_step: COMPLETE
120
136
  - condition: blocked
121
137
  next_step: ABORT
122
138
 
@@ -131,6 +147,7 @@ steps:
131
147
  - Bash
132
148
  - WebSearch
133
149
  - WebFetch
150
+ permission_mode: acceptEdits
134
151
  status_rules_prompt: |
135
152
  # ⚠️ 必須: ステータス出力ルール ⚠️
136
153
 
@@ -319,7 +336,9 @@ steps:
319
336
  - 構造・設計の妥当性
320
337
  - コード品質
321
338
  - 変更スコープの適切性
322
- - **テストカバレッジ**: 実装に対応する単体テストが追加されているか
339
+ - テストカバレッジ
340
+ - デッドコード
341
+ - 呼び出しチェーン検証
323
342
 
324
343
  **レポート出力:** 上記の `Report File` に出力してください。
325
344
  - ファイルが存在しない場合: 新規作成
@@ -339,6 +358,8 @@ steps:
339
358
  - [x] コード品質
340
359
  - [x] 変更スコープ
341
360
  - [x] テストカバレッジ
361
+ - [x] デッドコード
362
+ - [x] 呼び出しチェーン検証
342
363
 
343
364
  ## 問題点(REJECTの場合)
344
365
  | # | 場所 | 問題 | 修正案 |
@@ -372,6 +393,7 @@ steps:
372
393
  - Bash
373
394
  - WebSearch
374
395
  - WebFetch
396
+ permission_mode: acceptEdits
375
397
  status_rules_prompt: |
376
398
  # ⚠️ 必須: ステータス出力ルール ⚠️
377
399
 
@@ -556,6 +578,7 @@ steps:
556
578
  - Bash
557
579
  - WebSearch
558
580
  - WebFetch
581
+ permission_mode: acceptEdits
559
582
  status_rules_prompt: |
560
583
  # ⚠️ 必須: ステータス出力ルール ⚠️
561
584
 
@@ -737,6 +760,7 @@ steps:
737
760
  - Bash
738
761
  - WebSearch
739
762
  - WebFetch
763
+ permission_mode: acceptEdits
740
764
  status_rules_prompt: |
741
765
  # ⚠️ 必須: ステータス出力ルール ⚠️
742
766
 
@@ -805,6 +829,7 @@ steps:
805
829
  - Bash
806
830
  - WebSearch
807
831
  - WebFetch
832
+ permission_mode: acceptEdits
808
833
  status_rules_prompt: |
809
834
  # ⚠️ 必須: ステータス出力ルール ⚠️
810
835
 
@@ -2,9 +2,9 @@
2
2
  # CQRS+ES、フロントエンド、セキュリティ、QAの専門家によるレビューワークフロー
3
3
  #
4
4
  # フロー:
5
- # plan -> implement -> cqrs_es_review -> frontend_review -> ai_review -> security_review -> qa_review -> supervise -> COMPLETE
6
- # ↓ ↓ ↓ ↓ ↓ ↓
7
- # fix_cqrs_es fix_frontend ai_fix fix_security fix_qa fix_supervisor
5
+ # plan -> implement -> architect_review -> cqrs_es_review -> frontend_review -> ai_review -> security_review -> qa_review -> supervise -> COMPLETE
6
+ # ↓ ↓ ↓ ↓ ↓ ↓
7
+ # fix_architect fix_cqrs_es fix_frontend ai_fix fix_security fix_qa fix_supervisor
8
8
  #
9
9
  # 修正時の戻り先はCoderが判断:
10
10
  # - fix_security: MINOR→security_review, MAJOR→cqrs_es_review
@@ -196,12 +196,169 @@ steps:
196
196
  進行できない場合は [CODER:BLOCKED] を出力し、planに戻ります。
197
197
  transitions:
198
198
  - condition: done
199
+ next_step: architect_review
200
+ - condition: blocked
201
+ next_step: plan
202
+
203
+ # ===========================================
204
+ # Phase 2: Architecture Review
205
+ # ===========================================
206
+ - name: architect_review
207
+ agent: ~/.takt/agents/default/architect.md
208
+ allowed_tools:
209
+ - Read
210
+ - Glob
211
+ - Grep
212
+ - WebSearch
213
+ - WebFetch
214
+ status_rules_prompt: |
215
+ # ⚠️ 必須: ステータス出力ルール ⚠️
216
+
217
+ **このタグがないとワークフローが停止します。**
218
+ 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
219
+
220
+ ## 判定基準
221
+
222
+ | 状況 | 判定 |
223
+ |------|------|
224
+ | 構造に問題がある | REJECT |
225
+ | 設計原則違反がある | REJECT |
226
+ | 呼び出しチェーンの配線漏れ | REJECT |
227
+ | テストが不十分 | REJECT |
228
+ | 改善すべき点がある(軽微) | IMPROVE |
229
+ | 問題なし | APPROVE |
230
+
231
+ ## 出力フォーマット
232
+
233
+ | 状況 | タグ |
234
+ |------|------|
235
+ | 問題なし | `[ARCHITECT:APPROVE]` |
236
+ | 軽微な改善必要 | `[ARCHITECT:IMPROVE]` |
237
+ | 構造的な修正必要 | `[ARCHITECT:REJECT]` |
238
+ instruction_template: |
239
+ ## Workflow Context
240
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
241
+ - Step Iteration: {step_iteration}(このステップの実行回数)
242
+ - Step: architect_review (アーキテクチャレビュー)
243
+ - Report Directory: .takt/reports/{report_dir}/
244
+ - Report File: .takt/reports/{report_dir}/03-architect-review.md
245
+
246
+ ## Original User Request (ワークフロー開始時の元の要求)
247
+ {task}
248
+
249
+ ## Git Diff
250
+ ```diff
251
+ {git_diff}
252
+ ```
253
+
254
+ ## Instructions
255
+ **アーキテクチャと設計**のレビューに集中してください。
256
+
257
+ **レビュー観点:**
258
+ - 構造・設計の妥当性
259
+ - コード品質
260
+ - 変更スコープの適切性
261
+ - テストカバレッジ
262
+ - デッドコード
263
+ - 呼び出しチェーン検証
264
+
265
+ **レポート出力:** 上記の `Report File` に出力してください。
266
+ - ファイルが存在しない場合: 新規作成
267
+ - ファイルが存在する場合: `## Iteration {step_iteration}` セクションを追記
268
+
269
+ **レポートフォーマット:**
270
+ ```markdown
271
+ # アーキテクチャレビュー
272
+
273
+ ## 結果: APPROVE / IMPROVE / REJECT
274
+
275
+ ## サマリー
276
+ {1-2文で結果を要約}
277
+
278
+ ## 確認した観点
279
+ - [x] 構造・設計
280
+ - [x] コード品質
281
+ - [x] 変更スコープ
282
+ - [x] テストカバレッジ
283
+ - [x] デッドコード
284
+ - [x] 呼び出しチェーン検証
285
+
286
+ ## 問題点(REJECTの場合)
287
+ | # | 場所 | 問題 | 修正案 |
288
+ |---|------|------|--------|
289
+ | 1 | `src/file.ts:42` | 問題の説明 | 修正方法 |
290
+
291
+ ## 改善提案(任意・ブロッキングではない)
292
+ - {将来的な改善提案}
293
+ ```
294
+
295
+ **認知負荷軽減ルール:**
296
+ - APPROVE + 問題なし → サマリーのみ(5行以内)
297
+ - APPROVE + 軽微な提案 → サマリー + 改善提案(15行以内)
298
+ - REJECT → 問題点を表形式で(30行以内)
299
+ transitions:
300
+ - condition: approved
199
301
  next_step: cqrs_es_review
302
+ - condition: improve
303
+ next_step: fix_architect
304
+ - condition: rejected
305
+ next_step: fix_architect
306
+
307
+ - name: fix_architect
308
+ agent: ~/.takt/agents/default/coder.md
309
+ allowed_tools:
310
+ - Read
311
+ - Glob
312
+ - Grep
313
+ - Edit
314
+ - Write
315
+ - Bash
316
+ - WebSearch
317
+ - WebFetch
318
+ permission_mode: acceptEdits
319
+ status_rules_prompt: |
320
+ # ⚠️ 必須: ステータス出力ルール ⚠️
321
+
322
+ **このタグがないとワークフローが停止します。**
323
+ 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
324
+
325
+ ## 出力フォーマット
326
+
327
+ | 状況 | タグ |
328
+ |------|------|
329
+ | 修正完了 | `[CODER:DONE]` |
330
+ | 進行不可 | `[CODER:BLOCKED]` |
331
+ instruction_template: |
332
+ ## Workflow Context
333
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
334
+ - Step Iteration: {step_iteration}(このステップの実行回数)
335
+ - Step: fix_architect
336
+
337
+ ## Architect Feedback (これが最新の指示です - 優先して対応してください)
338
+ {previous_response}
339
+
340
+ ## Original User Request (ワークフロー開始時の元の要求 - 参考情報)
341
+ {task}
342
+
343
+ ## Additional User Inputs
344
+ {user_inputs}
345
+
346
+ ## Instructions
347
+ **重要**: Architectのフィードバックに対応してください。
348
+ 「Original User Request」は参考情報であり、最新の指示ではありません。
349
+ セッションの会話履歴を確認し、Architectの指摘事項を修正してください。
350
+
351
+ 完了時は [CODER:DONE] を含めてください。
352
+ 進行できない場合は [CODER:BLOCKED] を含めてください。
353
+ pass_previous_response: true
354
+ transitions:
355
+ - condition: done
356
+ next_step: architect_review
200
357
  - condition: blocked
201
358
  next_step: plan
202
359
 
203
360
  # ===========================================
204
- # Phase 2: CQRS+ES Review
361
+ # Phase 3: CQRS+ES Review
205
362
  # ===========================================
206
363
  - name: cqrs_es_review
207
364
  agent: ~/.takt/agents/expert-review/cqrs-es-reviewer.md
@@ -229,7 +386,7 @@ steps:
229
386
  - Step Iteration: {step_iteration}(このステップの実行回数)
230
387
  - Step: cqrs_es_review (CQRS+ES専門レビュー)
231
388
  - Report Directory: .takt/reports/{report_dir}/
232
- - Report File: .takt/reports/{report_dir}/03-cqrs-es-review.md
389
+ - Report File: .takt/reports/{report_dir}/04-cqrs-es-review.md
233
390
 
234
391
  ## Original User Request
235
392
  {task}
@@ -376,7 +533,7 @@ steps:
376
533
  - Step Iteration: {step_iteration}(このステップの実行回数)
377
534
  - Step: frontend_review (フロントエンド専門レビュー)
378
535
  - Report Directory: .takt/reports/{report_dir}/
379
- - Report File: .takt/reports/{report_dir}/04-frontend-review.md
536
+ - Report File: .takt/reports/{report_dir}/05-frontend-review.md
380
537
 
381
538
  ## Original User Request
382
539
  {task}
@@ -523,7 +680,7 @@ steps:
523
680
  - Step Iteration: {step_iteration}(このステップの実行回数)
524
681
  - Step: ai_review (AI生成コードレビュー)
525
682
  - Report Directory: .takt/reports/{report_dir}/
526
- - Report File: .takt/reports/{report_dir}/05-ai-review.md
683
+ - Report File: .takt/reports/{report_dir}/06-ai-review.md
527
684
 
528
685
  ## Original User Request (ワークフロー開始時の元の要求)
529
686
  {task}
@@ -664,7 +821,7 @@ steps:
664
821
  - Step Iteration: {step_iteration}(このステップの実行回数)
665
822
  - Step: security_review (セキュリティ専門レビュー)
666
823
  - Report Directory: .takt/reports/{report_dir}/
667
- - Report File: .takt/reports/{report_dir}/06-security-review.md
824
+ - Report File: .takt/reports/{report_dir}/07-security-review.md
668
825
 
669
826
  ## Original User Request
670
827
  {task}
@@ -818,7 +975,7 @@ steps:
818
975
  - Step Iteration: {step_iteration}(このステップの実行回数)
819
976
  - Step: qa_review (QA専門レビュー)
820
977
  - Report Directory: .takt/reports/{report_dir}/
821
- - Report File: .takt/reports/{report_dir}/07-qa-review.md
978
+ - Report File: .takt/reports/{report_dir}/08-qa-review.md
822
979
 
823
980
  ## Original User Request
824
981
  {task}
@@ -978,7 +1135,7 @@ steps:
978
1135
  - Step: supervise (最終確認)
979
1136
  - Report Directory: .takt/reports/{report_dir}/
980
1137
  - Report Files:
981
- - Validation: .takt/reports/{report_dir}/08-supervisor-validation.md
1138
+ - Validation: .takt/reports/{report_dir}/09-supervisor-validation.md
982
1139
  - Summary: .takt/reports/{report_dir}/summary.md
983
1140
 
984
1141
  ## Original User Request
@@ -991,6 +1148,7 @@ steps:
991
1148
 
992
1149
  ## Previous Reviews Summary
993
1150
  このステップに到達したということは、以下のレビューがすべてAPPROVEされています:
1151
+ - Architecture Review: APPROVED
994
1152
  - CQRS+ES Review: APPROVED
995
1153
  - Frontend Review: APPROVED
996
1154
  - AI Review: APPROVED
@@ -1054,6 +1212,7 @@ steps:
1054
1212
  ## レビュー結果
1055
1213
  | レビュー | 結果 |
1056
1214
  |---------|------|
1215
+ | Architecture | ✅ APPROVE |
1057
1216
  | CQRS+ES | ✅ APPROVE |
1058
1217
  | Frontend | ✅ APPROVE |
1059
1218
  | AI Review | ✅ APPROVE |