takt 0.1.4 → 0.1.6

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 (82) hide show
  1. package/dist/agents/runner.d.ts +1 -1
  2. package/dist/agents/runner.d.ts.map +1 -1
  3. package/dist/agents/runner.js +13 -34
  4. package/dist/agents/runner.js.map +1 -1
  5. package/dist/claude/client.d.ts.map +1 -1
  6. package/dist/claude/client.js +4 -1
  7. package/dist/claude/client.js.map +1 -1
  8. package/dist/claude/executor.d.ts.map +1 -1
  9. package/dist/claude/executor.js +1 -0
  10. package/dist/claude/executor.js.map +1 -1
  11. package/dist/claude/types.d.ts +2 -0
  12. package/dist/claude/types.d.ts.map +1 -1
  13. package/dist/cli.d.ts +2 -3
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +5 -8
  16. package/dist/cli.js.map +1 -1
  17. package/dist/commands/help.d.ts.map +1 -1
  18. package/dist/commands/help.js +4 -8
  19. package/dist/commands/help.js.map +1 -1
  20. package/dist/commands/index.d.ts +1 -1
  21. package/dist/commands/index.d.ts.map +1 -1
  22. package/dist/commands/index.js.map +1 -1
  23. package/dist/commands/taskExecution.d.ts +1 -6
  24. package/dist/commands/taskExecution.d.ts.map +1 -1
  25. package/dist/commands/taskExecution.js +2 -6
  26. package/dist/commands/taskExecution.js.map +1 -1
  27. package/dist/commands/workflowExecution.d.ts +0 -2
  28. package/dist/commands/workflowExecution.d.ts.map +1 -1
  29. package/dist/commands/workflowExecution.js +34 -13
  30. package/dist/commands/workflowExecution.js.map +1 -1
  31. package/dist/mock/client.d.ts +27 -0
  32. package/dist/mock/client.d.ts.map +1 -0
  33. package/dist/mock/client.js +56 -0
  34. package/dist/mock/client.js.map +1 -0
  35. package/dist/models/schemas.d.ts +6 -0
  36. package/dist/models/schemas.d.ts.map +1 -1
  37. package/dist/models/schemas.js +4 -4
  38. package/dist/models/schemas.js.map +1 -1
  39. package/dist/models/types.d.ts +6 -4
  40. package/dist/models/types.d.ts.map +1 -1
  41. package/dist/providers/claude.d.ts +11 -0
  42. package/dist/providers/claude.d.ts.map +1 -0
  43. package/dist/providers/claude.js +37 -0
  44. package/dist/providers/claude.js.map +1 -0
  45. package/dist/providers/codex.d.ts +11 -0
  46. package/dist/providers/codex.d.ts.map +1 -0
  47. package/dist/providers/codex.js +29 -0
  48. package/dist/providers/codex.js.map +1 -0
  49. package/dist/providers/index.d.ts +39 -0
  50. package/dist/providers/index.d.ts.map +1 -0
  51. package/dist/providers/index.js +32 -0
  52. package/dist/providers/index.js.map +1 -0
  53. package/dist/providers/mock.d.ts +11 -0
  54. package/dist/providers/mock.d.ts.map +1 -0
  55. package/dist/providers/mock.js +24 -0
  56. package/dist/providers/mock.js.map +1 -0
  57. package/dist/workflow/engine.d.ts.map +1 -1
  58. package/dist/workflow/engine.js +6 -3
  59. package/dist/workflow/engine.js.map +1 -1
  60. package/dist/workflow/instruction-builder.d.ts +5 -2
  61. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  62. package/dist/workflow/instruction-builder.js +4 -2
  63. package/dist/workflow/instruction-builder.js.map +1 -1
  64. package/dist/workflow/state-manager.d.ts +4 -0
  65. package/dist/workflow/state-manager.d.ts.map +1 -1
  66. package/dist/workflow/state-manager.js +10 -0
  67. package/dist/workflow/state-manager.js.map +1 -1
  68. package/package.json +1 -1
  69. package/resources/global/en/agents/default/architect.md +67 -6
  70. package/resources/global/en/agents/default/coder.md +155 -1
  71. package/resources/global/en/workflows/default.yaml +36 -16
  72. package/resources/global/en/workflows/expert-review.yaml +47 -23
  73. package/resources/global/en/workflows/magi.yaml +10 -0
  74. package/resources/global/en/workflows/research.yaml +16 -3
  75. package/resources/global/ja/agents/default/architect.md +62 -1
  76. package/resources/global/ja/agents/default/coder.md +156 -2
  77. package/resources/global/ja/agents/expert-review/cqrs-es-reviewer.md +328 -8
  78. package/resources/global/ja/agents/expert-review/frontend-reviewer.md +303 -33
  79. package/resources/global/ja/workflows/default.yaml +36 -16
  80. package/resources/global/ja/workflows/expert-review.yaml +47 -23
  81. package/resources/global/ja/workflows/magi.yaml +10 -0
  82. package/resources/global/ja/workflows/research.yaml +16 -3
@@ -36,6 +36,15 @@
36
36
 
37
37
  ### 1. コンポーネント設計
38
38
 
39
+ **原則: 1ファイルにベタ書きしない。必ずコンポーネント分割する。**
40
+
41
+ **分離が必須なケース:**
42
+ - 独自のstateを持つ → 必ず分離
43
+ - 50行超のJSX → 分離
44
+ - 再利用可能 → 分離
45
+ - 責務が複数 → 分離
46
+ - ページ内の独立したセクション → 分離
47
+
39
48
  **必須チェック:**
40
49
 
41
50
  | 基準 | 判定 |
@@ -60,8 +69,44 @@
60
69
  | Layout | 配置・構造 | `PageLayout`, `Grid` |
61
70
  | Utility | 共通機能 | `ErrorBoundary`, `Portal` |
62
71
 
72
+ **ディレクトリ構成:**
73
+ ```
74
+ features/{feature-name}/
75
+ ├── components/
76
+ │ ├── {feature}-view.tsx # メインビュー(子を組み合わせる)
77
+ │ ├── {sub-component}.tsx # サブコンポーネント
78
+ │ └── index.ts
79
+ ├── hooks/
80
+ ├── types.ts
81
+ └── index.ts
82
+ ```
83
+
63
84
  ### 2. 状態管理
64
85
 
86
+ **原則: 子コンポーネントは自身で状態を変更しない。イベントを親にバブリングし、親が状態を操作する。**
87
+
88
+ ```tsx
89
+ // ❌ 子が自分で状態を変更
90
+ const ChildBad = ({ initialValue }: { initialValue: string }) => {
91
+ const [value, setValue] = useState(initialValue)
92
+ return <input value={value} onChange={e => setValue(e.target.value)} />
93
+ }
94
+
95
+ // ✅ 親が状態を管理、子はコールバックで通知
96
+ const ChildGood = ({ value, onChange }: { value: string; onChange: (v: string) => void }) => {
97
+ return <input value={value} onChange={e => onChange(e.target.value)} />
98
+ }
99
+
100
+ const Parent = () => {
101
+ const [value, setValue] = useState('')
102
+ return <ChildGood value={value} onChange={setValue} />
103
+ }
104
+ ```
105
+
106
+ **例外(子がローカルstate持ってOK):**
107
+ - UI専用の一時状態(ホバー、フォーカス、アニメーション)
108
+ - 親に伝える必要がない完全にローカルな状態
109
+
65
110
  **必須チェック:**
66
111
 
67
112
  | 基準 | 判定 |
@@ -81,36 +126,81 @@
81
126
  | 複数コンポーネントで共有 | Context or 状態管理ライブラリ |
82
127
  | サーバーデータのキャッシュ | TanStack Query等のデータフェッチライブラリ |
83
128
 
84
- ### 3. パフォーマンス
129
+ ### 3. データ取得
85
130
 
86
- **必須チェック:**
131
+ **原則: API呼び出しはルート(View)コンポーネントで行い、子コンポーネントにはpropsで渡す。**
87
132
 
88
- | 基準 | 判定 |
89
- |------|------|
90
- | 不要な再レンダリング | 最適化が必要 |
91
- | 大きなリストの仮想化なし | 警告 |
92
- | 画像の最適化なし | 警告 |
93
- | バンドルに未使用コード | tree-shakingを確認 |
94
- | メモ化の過剰使用 | 本当に必要か確認 |
133
+ ```tsx
134
+ // ✅ CORRECT - ルートでデータ取得、子に渡す
135
+ const OrderDetailView = () => {
136
+ const { data: order, isLoading, error } = useGetOrder(orderId)
137
+ const { data: items } = useListOrderItems(orderId)
138
+
139
+ if (isLoading) return <Skeleton />
140
+ if (error) return <ErrorDisplay error={error} />
141
+
142
+ return (
143
+ <OrderSummary
144
+ order={order}
145
+ items={items}
146
+ onItemSelect={handleItemSelect}
147
+ />
148
+ )
149
+ }
95
150
 
96
- **最適化チェックリスト:**
97
- - [ ] `React.memo` / `useMemo` / `useCallback` は適切か
98
- - [ ] 大きなリストは仮想スクロール対応か
99
- - [ ] Code Splittingは適切か
100
- - [ ] 画像はlazy loadingされているか
151
+ // ❌ WRONG - 子コンポーネントが自分でデータ取得
152
+ const OrderSummary = ({ orderId }) => {
153
+ const { data: order } = useGetOrder(orderId)
154
+ // ...
155
+ }
156
+ ```
101
157
 
102
- **アンチパターン:**
158
+ **理由:**
159
+ - データフローが明示的で追跡しやすい
160
+ - 子コンポーネントは純粋なプレゼンテーション(テストしやすい)
161
+ - 子コンポーネントに隠れた依存関係がなくなる
162
+
163
+ **UIの状態変更でパラメータが変わる場合(週切り替え、フィルタ等):**
164
+
165
+ 状態もViewレベルで管理し、コンポーネントにはコールバックを渡す。
103
166
 
104
167
  ```tsx
105
- // Bad: レンダリングごとに新しいオブジェクト
106
- <Child style={{ color: 'red' }} />
168
+ // CORRECT - 状態もViewで管理
169
+ const ScheduleView = () => {
170
+ const [currentWeek, setCurrentWeek] = useState(startOfWeek(new Date()))
171
+ const { data } = useListSchedules({
172
+ from: format(currentWeek, 'yyyy-MM-dd'),
173
+ to: format(endOfWeek(currentWeek), 'yyyy-MM-dd'),
174
+ })
175
+
176
+ return (
177
+ <WeeklyCalendar
178
+ schedules={data?.items ?? []}
179
+ currentWeek={currentWeek}
180
+ onWeekChange={setCurrentWeek}
181
+ />
182
+ )
183
+ }
107
184
 
108
- // Good: 定数化 or useMemo
109
- const style = useMemo(() => ({ color: 'red' }), []);
110
- <Child style={style} />
185
+ // WRONG - コンポーネント内で状態管理+データ取得
186
+ const WeeklyCalendar = ({ facilityId }) => {
187
+ const [currentWeek, setCurrentWeek] = useState(...)
188
+ const { data } = useListSchedules({ facilityId, from, to })
189
+ // ...
190
+ }
111
191
  ```
112
192
 
113
- ### 4. データフェッチ
193
+ **例外(コンポーネント内フェッチが許容されるケース):**
194
+
195
+ | ケース | 理由 |
196
+ |--------|------|
197
+ | 無限スクロール | スクロール位置というUI内部状態に依存 |
198
+ | 検索オートコンプリート | 入力値に依存したリアルタイム検索 |
199
+ | 独立したウィジェット | 通知バッジ、天気等。親のデータと完全に無関係 |
200
+ | リアルタイム更新 | WebSocket/Pollingでの自動更新 |
201
+ | モーダル内の詳細取得 | 開いたときだけ追加データを取得 |
202
+
203
+ **判断基準: 「親が管理する意味がない / 親に影響を与えない」ケースのみ許容。**
114
204
 
115
205
  **必須チェック:**
116
206
 
@@ -122,20 +212,195 @@ const style = useMemo(() => ({ color: 'red' }), []);
122
212
  | キャンセル処理なし | 警告 |
123
213
  | N+1クエリ的なフェッチ | REJECT |
124
214
 
125
- **推奨パターン:**
215
+ ### 4. 共有コンポーネントと抽象化
216
+
217
+ **原則: 同じパターンのUIは共有コンポーネント化する。インラインスタイルのコピペは禁止。**
218
+
219
+ ```tsx
220
+ // ❌ WRONG - インラインスタイルのコピペ
221
+ <button className="p-2 text-[var(--text-secondary)] hover:...">
222
+ <X className="w-5 h-5" />
223
+ </button>
224
+
225
+ // ✅ CORRECT - 共有コンポーネント使用
226
+ <IconButton onClick={onClose} aria-label="閉じる">
227
+ <X className="w-5 h-5" />
228
+ </IconButton>
229
+ ```
230
+
231
+ **共有コンポーネント化すべきパターン:**
232
+ - アイコンボタン(閉じる、編集、削除等)
233
+ - ローディング/エラー表示
234
+ - ステータスバッジ
235
+ - タブ切り替え
236
+ - ラベル+値の表示(詳細画面)
237
+ - 検索入力
238
+ - カラー凡例
239
+
240
+ **過度な汎用化を避ける:**
241
+
242
+ ```tsx
243
+ // ❌ WRONG - IconButtonに無理やりステッパー用バリアントを追加
244
+ export const iconButtonVariants = cva('...', {
245
+ variants: {
246
+ variant: {
247
+ default: '...',
248
+ outlined: '...', // ← ステッパー専用、他で使わない
249
+ },
250
+ size: {
251
+ medium: 'p-2',
252
+ stepper: 'w-8 h-8', // ← outlinedとセットでしか使わない
253
+ },
254
+ },
255
+ })
256
+
257
+ // ✅ CORRECT - 用途別に専用コンポーネント
258
+ export function StepperButton(props) {
259
+ return (
260
+ <button className="w-8 h-8 rounded-full border ..." {...props}>
261
+ <Plus className="w-4 h-4" />
262
+ </button>
263
+ )
264
+ }
265
+ ```
266
+
267
+ **別コンポーネントにすべきサイン:**
268
+ - 「このvariantはこのsizeとセット」のような暗黙の制約がある
269
+ - 追加したvariantが元のコンポーネントの用途と明らかに違う
270
+ - 使う側のprops指定が複雑になる
271
+
272
+ ### 5. 抽象化レベルの評価
273
+
274
+ **条件分岐の肥大化検出:**
275
+
276
+ | パターン | 判定 |
277
+ |---------|------|
278
+ | 同じ条件分岐が3箇所以上 | 共通コンポーネントに抽出 → **REJECT** |
279
+ | propsによる分岐が5種類以上 | コンポーネント分割を検討 |
280
+ | render内の三項演算子のネスト | 早期リターンまたはコンポーネント分離 → **REJECT** |
281
+ | 型による分岐レンダリング | ポリモーフィックコンポーネントを検討 |
282
+
283
+ **抽象度の不一致検出:**
284
+
285
+ | パターン | 問題 | 修正案 |
286
+ |---------|------|--------|
287
+ | データ取得ロジックがJSXに混在 | 読みにくい | カスタムフックに抽出 |
288
+ | ビジネスロジックがコンポーネントに混在 | 責務違反 | hooks/utilsに分離 |
289
+ | スタイル計算ロジックが散在 | 保守困難 | ユーティリティ関数に抽出 |
290
+ | 同じ変換処理が複数箇所に | DRY違反 | 共通関数に抽出 |
291
+
292
+ **良い抽象化の例:**
293
+ ```tsx
294
+ // ❌ 条件分岐が肥大化
295
+ function UserBadge({ user }) {
296
+ if (user.role === 'admin') {
297
+ return <span className="bg-red-500">管理者</span>
298
+ } else if (user.role === 'moderator') {
299
+ return <span className="bg-yellow-500">モデレーター</span>
300
+ } else if (user.role === 'premium') {
301
+ return <span className="bg-purple-500">プレミアム</span>
302
+ } else {
303
+ return <span className="bg-gray-500">一般</span>
304
+ }
305
+ }
306
+
307
+ // ✅ Mapで抽象化
308
+ const ROLE_CONFIG = {
309
+ admin: { label: '管理者', className: 'bg-red-500' },
310
+ moderator: { label: 'モデレーター', className: 'bg-yellow-500' },
311
+ premium: { label: 'プレミアム', className: 'bg-purple-500' },
312
+ default: { label: '一般', className: 'bg-gray-500' },
313
+ }
314
+
315
+ function UserBadge({ user }) {
316
+ const config = ROLE_CONFIG[user.role] ?? ROLE_CONFIG.default
317
+ return <span className={config.className}>{config.label}</span>
318
+ }
319
+ ```
320
+
126
321
  ```tsx
127
- // Good: データフェッチはルートで
128
- function UserPage() {
129
- const { data, isLoading, error } = useQuery(['user', id], fetchUser);
322
+ // 抽象度が混在
323
+ function OrderList() {
324
+ const [orders, setOrders] = useState([])
325
+ useEffect(() => {
326
+ fetch('/api/orders')
327
+ .then(res => res.json())
328
+ .then(data => setOrders(data))
329
+ }, [])
330
+
331
+ return orders.map(order => (
332
+ <div>{order.total.toLocaleString()}円</div>
333
+ ))
334
+ }
130
335
 
131
- if (isLoading) return <Skeleton />;
132
- if (error) return <ErrorDisplay error={error} />;
336
+ // 抽象度を揃える
337
+ function OrderList() {
338
+ const { data: orders } = useOrders() // データ取得を隠蔽
133
339
 
134
- return <UserProfile user={data} />;
340
+ return orders.map(order => (
341
+ <OrderItem key={order.id} order={order} />
342
+ ))
135
343
  }
136
344
  ```
137
345
 
138
- ### 5. アクセシビリティ
346
+ ### 6. データと表示形式の責務分離
347
+
348
+ **原則: バックエンドは「データ」を返し、フロントエンドが「表示形式」に変換する。**
349
+
350
+ ```tsx
351
+ // ✅ フロントエンド: 表示形式に変換
352
+ export function formatPrice(amount: number): string {
353
+ return `¥${amount.toLocaleString()}`
354
+ }
355
+
356
+ export function formatDate(date: Date): string {
357
+ return format(date, 'yyyy年M月d日')
358
+ }
359
+ ```
360
+
361
+ **理由:**
362
+ - 表示形式はUI要件であり、バックエンドの責務ではない
363
+ - 国際化対応が容易
364
+ - フロントエンドが柔軟に表示を変更できる
365
+
366
+ **必須チェック:**
367
+
368
+ | 基準 | 判定 |
369
+ |------|------|
370
+ | バックエンドが表示用文字列を返している | 設計見直しを提案 |
371
+ | 同じフォーマット処理が複数箇所にコピペ | ユーティリティ関数に統一 |
372
+ | コンポーネント内でインラインフォーマット | 関数に抽出 |
373
+
374
+ ### 7. パフォーマンス
375
+
376
+ **必須チェック:**
377
+
378
+ | 基準 | 判定 |
379
+ |------|------|
380
+ | 不要な再レンダリング | 最適化が必要 |
381
+ | 大きなリストの仮想化なし | 警告 |
382
+ | 画像の最適化なし | 警告 |
383
+ | バンドルに未使用コード | tree-shakingを確認 |
384
+ | メモ化の過剰使用 | 本当に必要か確認 |
385
+
386
+ **最適化チェックリスト:**
387
+ - [ ] `React.memo` / `useMemo` / `useCallback` は適切か
388
+ - [ ] 大きなリストは仮想スクロール対応か
389
+ - [ ] Code Splittingは適切か
390
+ - [ ] 画像はlazy loadingされているか
391
+
392
+ **アンチパターン:**
393
+
394
+ ```tsx
395
+ // ❌ レンダリングごとに新しいオブジェクト
396
+ <Child style={{ color: 'red' }} />
397
+
398
+ // ✅ 定数化 or useMemo
399
+ const style = useMemo(() => ({ color: 'red' }), []);
400
+ <Child style={style} />
401
+ ```
402
+
403
+ ### 8. アクセシビリティ
139
404
 
140
405
  **必須チェック:**
141
406
 
@@ -154,7 +419,7 @@ function UserPage() {
154
419
  - [ ] スクリーンリーダーで意味が通じるか
155
420
  - [ ] カラーコントラストは十分か
156
421
 
157
- ### 6. TypeScript/型安全性
422
+ ### 9. TypeScript/型安全性
158
423
 
159
424
  **必須チェック:**
160
425
 
@@ -165,7 +430,7 @@ function UserPage() {
165
430
  | Props型定義なし | REJECT |
166
431
  | イベントハンドラの型が不適切 | 修正が必要 |
167
432
 
168
- ### 7. フロントエンドセキュリティ
433
+ ### 10. フロントエンドセキュリティ
169
434
 
170
435
  **必須チェック:**
171
436
 
@@ -176,7 +441,7 @@ function UserPage() {
176
441
  | 機密情報のフロントエンド保存 | REJECT |
177
442
  | CSRFトークンの未使用 | 要確認 |
178
443
 
179
- ### 8. テスタビリティ
444
+ ### 11. テスタビリティ
180
445
 
181
446
  **必須チェック:**
182
447
 
@@ -186,7 +451,7 @@ function UserPage() {
186
451
  | テスト困難な構造 | 分離を検討 |
187
452
  | ビジネスロジックのUIへの埋め込み | REJECT |
188
453
 
189
- ### 9. アンチパターン検出
454
+ ### 12. アンチパターン検出
190
455
 
191
456
  以下を見つけたら **REJECT**:
192
457
 
@@ -198,6 +463,8 @@ function UserPage() {
198
463
  | useEffect地獄 | 依存関係が複雑すぎる |
199
464
  | Premature Optimization | 不要なメモ化 |
200
465
  | Magic Strings | ハードコードされた文字列 |
466
+ | Hidden Dependencies | 子コンポーネントの隠れたAPI呼び出し |
467
+ | Over-generalization | 無理やり汎用化したコンポーネント |
201
468
 
202
469
  ## 判定基準
203
470
 
@@ -206,6 +473,7 @@ function UserPage() {
206
473
  | コンポーネント設計に問題 | REJECT |
207
474
  | 状態管理に問題 | REJECT |
208
475
  | アクセシビリティ違反 | REJECT |
476
+ | 抽象化レベルの不一致 | REJECT |
209
477
  | パフォーマンス問題 | REJECT(重大な場合) |
210
478
  | 軽微な改善点のみ | APPROVE(改善提案は付記) |
211
479
 
@@ -223,3 +491,5 @@ function UserPage() {
223
491
  - **アクセシビリティは後付け困難**: 最初から組み込む
224
492
  - **過度な抽象化を警戒**: シンプルに保つ
225
493
  - **フレームワークの作法に従う**: 独自パターンより標準的なアプローチ
494
+ - **データ取得はルートで**: 子コンポーネントに隠れた依存を作らない
495
+ - **制御されたコンポーネント**: 状態の流れは単方向
@@ -1,5 +1,15 @@
1
1
  # Default TAKT Workflow
2
2
  # Plan -> Coder -> Architect Review -> AI Review -> Security Review -> Supervisor Approval
3
+ #
4
+ # Template Variables:
5
+ # {iteration} - Workflow-wide turn count (total steps executed across all agents)
6
+ # {max_iterations} - Maximum iterations allowed for the workflow
7
+ # {step_iteration} - Per-step iteration count (how many times THIS step has been executed)
8
+ # {task} - Original user request
9
+ # {previous_response} - Output from the previous step
10
+ # {git_diff} - Current uncommitted changes (git diff)
11
+ # {user_inputs} - Accumulated user inputs during workflow
12
+ # {report_dir} - Report directory name (e.g., "20250126-143052-task-summary")
3
13
 
4
14
  name: default
5
15
  description: Standard development workflow with planning and specialized reviews
@@ -55,7 +65,8 @@ steps:
55
65
  ```
56
66
  instruction_template: |
57
67
  ## Workflow Context
58
- - Iteration: {iteration}/{max_iterations}
68
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
69
+ - Step Iteration: {step_iteration}(このステップの実行回数)
59
70
  - Step: plan (タスク分析)
60
71
  - Report Directory: .takt/reports/{report_dir}/
61
72
  - Report File: .takt/reports/{report_dir}/00-plan.md
@@ -79,7 +90,7 @@ steps:
79
90
 
80
91
  **レポート出力:** 上記の `Report File` に出力してください。
81
92
  - ファイルが存在しない場合: 新規作成
82
- - ファイルが存在する場合: `## Iteration {iteration}` セクションを追記
93
+ - ファイルが存在する場合: `## Iteration {step_iteration}` セクションを追記
83
94
 
84
95
  **レポートフォーマット:**
85
96
  ```markdown
@@ -155,7 +166,8 @@ steps:
155
166
  ```
156
167
  instruction_template: |
157
168
  ## Workflow Context
158
- - Iteration: {iteration}/{max_iterations}
169
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
170
+ - Step Iteration: {step_iteration}(このステップの実行回数)
159
171
  - Step: implement
160
172
  - Report Directory: .takt/reports/{report_dir}/
161
173
  - Report Files:
@@ -174,7 +186,7 @@ steps:
174
186
 
175
187
  **レポート出力:** 上記の `Report Files` に出力してください。
176
188
  - ファイルが存在しない場合: 新規作成
177
- - ファイルが存在する場合: `## Iteration {iteration}` セクションを追記
189
+ - ファイルが存在する場合: `## Iteration {step_iteration}` セクションを追記
178
190
 
179
191
  **Scopeレポートフォーマット(実装開始時に作成):**
180
192
  ```markdown
@@ -279,7 +291,8 @@ steps:
279
291
  ```
280
292
  instruction_template: |
281
293
  ## Workflow Context
282
- - Iteration: {iteration}/{max_iterations}
294
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
295
+ - Step Iteration: {step_iteration}(このステップの実行回数)
283
296
  - Step: review (アーキテクチャレビュー)
284
297
  - Report Directory: .takt/reports/{report_dir}/
285
298
  - Report File: .takt/reports/{report_dir}/03-architect-review.md
@@ -299,7 +312,7 @@ steps:
299
312
 
300
313
  **レポート出力:** 上記の `Report File` に出力してください。
301
314
  - ファイルが存在しない場合: 新規作成
302
- - ファイルが存在する場合: `## Iteration {iteration}` セクションを追記
315
+ - ファイルが存在する場合: `## Iteration {step_iteration}` セクションを追記
303
316
 
304
317
  **レポートフォーマット:**
305
318
  ```markdown
@@ -382,7 +395,8 @@ steps:
382
395
  ```
383
396
  instruction_template: |
384
397
  ## Workflow Context
385
- - Iteration: {iteration}/{max_iterations}
398
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
399
+ - Step Iteration: {step_iteration}(このステップの実行回数)
386
400
  - Step: improve
387
401
 
388
402
  ## Architect Feedback (これが最新の指示です - 優先して対応してください)
@@ -462,7 +476,8 @@ steps:
462
476
  ```
463
477
  instruction_template: |
464
478
  ## Workflow Context
465
- - Iteration: {iteration}/{max_iterations}
479
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
480
+ - Step Iteration: {step_iteration}(このステップの実行回数)
466
481
  - Step: ai_review (AI生成コードレビュー)
467
482
  - Report Directory: .takt/reports/{report_dir}/
468
483
  - Report File: .takt/reports/{report_dir}/04-ai-review.md
@@ -484,7 +499,7 @@ steps:
484
499
 
485
500
  **レポート出力:** 上記の `Report File` に出力してください。
486
501
  - ファイルが存在しない場合: 新規作成
487
- - ファイルが存在する場合: `## Iteration {iteration}` セクションを追記
502
+ - ファイルが存在する場合: `## Iteration {step_iteration}` セクションを追記
488
503
 
489
504
  **レポートフォーマット:**
490
505
  ```markdown
@@ -563,7 +578,8 @@ steps:
563
578
  ```
564
579
  instruction_template: |
565
580
  ## Workflow Context
566
- - Iteration: {iteration}/{max_iterations}
581
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
582
+ - Step Iteration: {step_iteration}(このステップの実行回数)
567
583
  - Step: ai_fix
568
584
 
569
585
  ## AI Review Feedback (これが最新の指示です - 優先して対応してください)
@@ -638,7 +654,8 @@ steps:
638
654
  ```
639
655
  instruction_template: |
640
656
  ## Workflow Context
641
- - Iteration: {iteration}/{max_iterations}
657
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
658
+ - Step Iteration: {step_iteration}(このステップの実行回数)
642
659
  - Step: security_review
643
660
  - Report Directory: .takt/reports/{report_dir}/
644
661
  - Report File: .takt/reports/{report_dir}/05-security-review.md
@@ -660,7 +677,7 @@ steps:
660
677
 
661
678
  **レポート出力:** 上記の `Report File` に出力してください。
662
679
  - ファイルが存在しない場合: 新規作成
663
- - ファイルが存在する場合: `## Iteration {iteration}` セクションを追記
680
+ - ファイルが存在する場合: `## Iteration {step_iteration}` セクションを追記
664
681
 
665
682
  **レポートフォーマット:**
666
683
  ```markdown
@@ -742,7 +759,8 @@ steps:
742
759
  ```
743
760
  instruction_template: |
744
761
  ## Workflow Context
745
- - Iteration: {iteration}/{max_iterations}
762
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
763
+ - Step Iteration: {step_iteration}(このステップの実行回数)
746
764
  - Step: security_fix
747
765
 
748
766
  ## Security Review Feedback (これが最新の指示です - 優先して対応してください)
@@ -810,7 +828,8 @@ steps:
810
828
  ```
811
829
  instruction_template: |
812
830
  ## Workflow Context
813
- - Iteration: {iteration}/{max_iterations}
831
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
832
+ - Step Iteration: {step_iteration}(このステップの実行回数)
814
833
  - Step: fix
815
834
 
816
835
  ## Architect Feedback (これが最新の指示です - 優先して対応してください)
@@ -889,7 +908,8 @@ steps:
889
908
  ```
890
909
  instruction_template: |
891
910
  ## Workflow Context
892
- - Iteration: {iteration}/{max_iterations}
911
+ - Iteration: {iteration}/{max_iterations}(ワークフロー全体)
912
+ - Step Iteration: {step_iteration}(このステップの実行回数)
893
913
  - Step: supervise (final verification)
894
914
  - Report Directory: .takt/reports/{report_dir}/
895
915
  - Report Files:
@@ -917,7 +937,7 @@ steps:
917
937
 
918
938
  **レポート出力:** 上記の `Report Files` に出力してください。
919
939
  - ファイルが存在しない場合: 新規作成
920
- - ファイルが存在する場合: `## Iteration {iteration}` セクションを追記
940
+ - ファイルが存在する場合: `## Iteration {step_iteration}` セクションを追記
921
941
 
922
942
  **Validationレポートフォーマット:**
923
943
  ```markdown