create-ai-project 1.20.9 → 1.22.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 (62) hide show
  1. package/.claude/agents-en/acceptance-test-generator.md +112 -50
  2. package/.claude/agents-en/task-decomposer.md +40 -4
  3. package/.claude/agents-en/ui-spec-designer.md +2 -0
  4. package/.claude/agents-en/work-planner.md +98 -29
  5. package/.claude/agents-ja/acceptance-test-generator.md +113 -49
  6. package/.claude/agents-ja/task-decomposer.md +44 -8
  7. package/.claude/agents-ja/ui-spec-designer.md +2 -0
  8. package/.claude/agents-ja/work-planner.md +96 -29
  9. package/.claude/commands-en/add-integration-tests.md +8 -0
  10. package/.claude/commands-en/build.md +75 -23
  11. package/.claude/commands-en/front-build.md +56 -25
  12. package/.claude/commands-en/front-plan.md +7 -6
  13. package/.claude/commands-en/front-review.md +81 -19
  14. package/.claude/commands-en/implement.md +36 -5
  15. package/.claude/commands-en/plan.md +9 -8
  16. package/.claude/commands-en/prepare-implementation.md +191 -0
  17. package/.claude/commands-en/project-inject.md +84 -56
  18. package/.claude/commands-en/review.md +79 -20
  19. package/.claude/commands-ja/add-integration-tests.md +8 -0
  20. package/.claude/commands-ja/build.md +77 -25
  21. package/.claude/commands-ja/front-build.md +59 -28
  22. package/.claude/commands-ja/front-plan.md +8 -7
  23. package/.claude/commands-ja/front-review.md +81 -19
  24. package/.claude/commands-ja/implement.md +36 -5
  25. package/.claude/commands-ja/plan.md +10 -9
  26. package/.claude/commands-ja/prepare-implementation.md +191 -0
  27. package/.claude/commands-ja/project-inject.md +84 -56
  28. package/.claude/commands-ja/review.md +79 -20
  29. package/.claude/skills-en/documentation-criteria/references/plan-template.md +22 -0
  30. package/.claude/skills-en/documentation-criteria/references/ui-spec-template.md +2 -0
  31. package/.claude/skills-en/frontend-typescript-testing/references/e2e.md +81 -7
  32. package/.claude/skills-en/integration-e2e-testing/SKILL.md +48 -23
  33. package/.claude/skills-en/integration-e2e-testing/references/e2e-design.md +31 -13
  34. package/.claude/skills-en/project-context/SKILL.md +2 -15
  35. package/.claude/skills-en/project-context/references/external-resources-api.md +76 -0
  36. package/.claude/skills-en/project-context/references/external-resources-backend.md +76 -0
  37. package/.claude/skills-en/project-context/references/external-resources-frontend.md +74 -0
  38. package/.claude/skills-en/project-context/references/external-resources-infra.md +76 -0
  39. package/.claude/skills-en/project-context/references/template.md +154 -0
  40. package/.claude/skills-en/subagents-orchestration-guide/SKILL.md +36 -14
  41. package/.claude/skills-en/task-analyzer/references/skills-index.yaml +0 -5
  42. package/.claude/skills-ja/documentation-criteria/references/plan-template.md +22 -0
  43. package/.claude/skills-ja/documentation-criteria/references/ui-spec-template.md +2 -0
  44. package/.claude/skills-ja/frontend-typescript-testing/references/e2e.md +81 -7
  45. package/.claude/skills-ja/integration-e2e-testing/SKILL.md +48 -23
  46. package/.claude/skills-ja/integration-e2e-testing/references/e2e-design.md +31 -13
  47. package/.claude/skills-ja/project-context/SKILL.md +2 -15
  48. package/.claude/skills-ja/project-context/references/external-resources-api.md +76 -0
  49. package/.claude/skills-ja/project-context/references/external-resources-backend.md +76 -0
  50. package/.claude/skills-ja/project-context/references/external-resources-frontend.md +74 -0
  51. package/.claude/skills-ja/project-context/references/external-resources-infra.md +76 -0
  52. package/.claude/skills-ja/project-context/references/template.md +154 -0
  53. package/.claude/skills-ja/subagents-orchestration-guide/SKILL.md +36 -14
  54. package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +0 -5
  55. package/.husky/pre-commit +1 -0
  56. package/CHANGELOG.md +55 -6
  57. package/README.ja.md +3 -2
  58. package/README.md +3 -2
  59. package/docs/guides/en/use-cases.md +18 -3
  60. package/docs/guides/ja/use-cases.md +18 -3
  61. package/package.json +2 -1
  62. package/scripts/check-skills-index.mjs +173 -0
@@ -18,34 +18,77 @@ description: 分解済みタスクを自律実行モードで実装
18
18
 
19
19
  ## 実行前提条件
20
20
 
21
- ### タスクファイル存在チェック
22
- ```bash
23
- # 計画書の確認
24
- ! ls -la docs/plans/*.md | grep -v template | tail -5
21
+ ### Implementation Readinessチェック
25
22
 
26
- # タスクファイルの確認
27
- ! ls docs/plans/tasks/*.md 2>/dev/null || echo "⚠️ タスクファイルが見つかりません"
28
- ```
23
+ タスク処理の前に、ゲート対象となる作業計画書を特定する。
24
+
25
+ **`$ARGUMENTS`が指定されている場合**は、それがユーザーから渡された作業計画書のパスである。自動解決を行わずそのまま使用する。`{plan-name}`はファイル名から `.md` 拡張子(および末尾に `-plan` がある場合はそれも)を除いて抽出する。
26
+
27
+ **`$ARGUMENTS`が空の場合**、タスクファイルから自動解決する:
28
+ 1. `docs/plans/tasks/`内で本レシピが消費可能なパターンに一致するタスクファイルを列挙する(subagents-orchestration-guideの「Layer-Aware Agent Routing」で `task-executor` を経由するルートに対応):
29
+ - `{plan-name}-task-*.md`(単層タスク。ルーティング表により backend 予約)
30
+ - `{plan-name}-backend-task-*.md`(複層計画の backend 部分)
31
+ - `{plan-name}-frontend-task-*.md` は本レシピでは消費**しない** — `task-executor-frontend` にルーティングされ、frontend build レシピが所有する
32
+ 2. マッチしたファイルから、以下のいずれかにマッチするものを除外する。これらは本実行の実装タスクではなく、他のワークフローフェーズに由来する: `*-task-prep-*.md`(readiness preflight タスク)、`_overview-*.md`(分解overviewファイル)、`*-phase*-completion.md`(フェーズ完了ファイル)、`review-fixes-*.md`(実装後レビュー修正)、`integration-tests-*-task-*.md`(統合テスト追加用スキャフォールディング)
33
+ 3. 残った各ファイルから、末尾の `-task-{NN}.md` または `-backend-task-{NN}.md` を取り除いて `{plan-name}` を抽出する
34
+ 4. 少なくとも1つのタスクファイルがマッチした場合、最も新しい mtime を持つ `{plan-name}` の `docs/plans/{plan-name}.md` を作業計画書とする。タイは辞書順最大の `{plan-name}` で解決する
35
+ 5. **消費可能なパターンが何もマッチせず、`docs/plans/tasks/`に `*-frontend-task-*.md` が存在する場合**: 停止してユーザーに報告する: 「frontend 命名のタスクファイルしか見つかりませんでした。frontend build レシピを実行する意図であればそちらに切り替えてください。計画が backend ならば、task-decomposer を再実行して backend 命名のタスクファイルを出力させるか、作業計画書のパスを `$ARGUMENTS` で指定してください。」
36
+ 6. 消費可能パターンも `*-frontend-task-*.md` も見つからない場合、**backendであることを積極的に示す信号が確認できた場合に限り** `docs/plans/`の最も新しい mtime の非テンプレート `.md` にフォールバックする。多くの計画書テンプレートには backend / frontend のいずれにも合致しない layer-neutral なパス(例: `src/presentation`、`src/app`)が含まれるため、frontend 信号の不在だけでは不十分 — backend の確証が必要である。計画書を読んで以下を確認する:
37
+
38
+ **Backend 信号(最低1つ必要)**:
39
+ - `## Impact Scope > ### Target Files`(または同等のセクション)の対象ファイルが backend マーカー(`**/api/**`、`**/server/**`、`**/services/**`、`**/backend/**`、`**/handlers/**`、`**/repositories/**`、または technical-spec スキルで宣言されたプロジェクト固有の backend パス)に**排他的に**マッチする
40
+ - 計画書の `## 関連ドキュメント` が、ファイル名から明示的に backend と特定できる Design Doc を参照している(例: `*-backend-design.md`、`backend-*-design.md`)
41
+ - 計画書のタイトル、`## 目的`、`## 背景` セクションが作業を backend と明示している(例: 「backend 実装」「APIエンドポイント」「データベースマイグレーション」「サーバーサイド」)
42
+
43
+ **Frontend 信号(1つでも該当すれば不適格扱いとなる。backend 信号が存在しても優先される)**:
44
+ - `## 関連ドキュメント` が `docs/ui-spec/*` を指している
45
+ - `## UI Specコンポーネント → タスクマッピング` セクションが存在する
46
+ - 対象ファイルが frontend パス(`**/components/**`、`**/pages/**`、`**/web/**`、`**/*.tsx`、`**/*.jsx`)に排他的に該当する
47
+ - 計画書のタイトルや目的が React、UI コンポーネント、画面、frontend を明示している
48
+
49
+ **判定**:
50
+ - backend 信号 ≥1 かつ frontend 信号 = 0 → 計画書を受容して進む
51
+ - それ以外(backend 信号がない、または frontend 信号が1つでもある、または layer-neutral なパスのみ)→ 停止して報告する: 「最も新しい作業計画書 `[path]` が backend 計画であることを確証できません(確認した信号と結果: [リスト])。意図する backend 計画書のパスを `$ARGUMENTS` で指定するか、task-decomposer を先に実行して `docs/plans/tasks/` に backend 命名のタスクファイルを出力してください。」
52
+ 7. `docs/plans/`に計画書が一切存在しない場合は、停止して報告する: 「作業計画書が見つかりません。作業計画書のパスを `$ARGUMENTS` で指定するか、計画フェーズを先に完了してください。」
53
+
54
+ 作業計画書のヘッダを読み、`Implementation Readiness: <status>`の行を見つける。以下のルールを適用する:
55
+
56
+ | ステータス | アクション |
57
+ |--------|--------|
58
+ | `ready` | Consumed Task Set の計算へ進む |
59
+ | `escalated` | 作業計画書のReadiness Reportセクションを読み、AskUserQuestionで残存ギャップをユーザーに提示する: 「Implementation Readinessが`escalated`で、以下の残存ギャップがあります: [リスト]。実行を継続しますか?(y/n)」。`y`なら進む、`n`なら停止 |
60
+ | `pending` | AskUserQuestionで提示する: 「Implementation Readinessが`pending`です。事前にreadiness preflightを実行して作業計画書の実装可能性を検証してから再開してください。preflightなしで継続しますか?(y/n)」。`y`なら進む、`n`なら停止 |
61
+ | 行が存在しない | `pending`として扱う — readinessマーカー導入前に作成された古い作業計画書は明示的にpreflightすべき |
62
+
63
+ ### Consumed Task Set
64
+
65
+ 本実行で消費する **Consumed Task Set** を計算する — 本レシピが所有・実行・後で削除する正確なファイル群。Implementation Readinessチェックと同じ消費可能パターンを使用する:
66
+
67
+ 1. Implementation Readinessチェックで解決した `{plan-name}` について、`docs/plans/tasks/`内で `{plan-name}-task-*.md` または `{plan-name}-backend-task-*.md` にマッチするタスクファイルを列挙する。`{plan-name}-frontend-task-*.md` は除外する — frontend build レシピが所有する
68
+ 2. 以下にマッチするファイルを除外する: `*-task-prep-*.md`、`_overview-*.md`、`*-phase*-completion.md`、`review-fixes-*.md`、`integration-tests-*-task-*.md`(これらは他のワークフローフェーズに由来する)
69
+
70
+ 本レシピ内で「タスクファイル」と参照する箇所すべて — タスク生成判定フロー、タスク実行サイクルの反復、最終クリーンアップ — はこのセットを使用する。`docs/plans/tasks/*.md` を制限なく glob しない。
29
71
 
30
72
  ### タスク生成判定フロー
31
73
 
32
- タスクファイルの存在状態を確認し、適切な対応を決定:
74
+ Consumed Task Set を確認し、適切な対応を決定する。注: 本セクションに到達するということは、上記の readiness check が作業計画書を解決済み(Steps 1-6 が成功)であることを意味する。「計画書なし」の状態は readiness check の Step 7 が既に終了させており、本表には到達しない。
33
75
 
34
76
  | 状態 | 判定基準 | 次のアクション |
35
77
  |------|---------|--------------|
36
- | タスク存在 | tasks/ディレクトリに.mdファイルあり | ユーザーの実行指示をバッチ承認として自律実行へ移行 |
37
- | タスクなし+計画書あり | 計画書は存在するがタスクファイルなし | ユーザーに確認 → task-decomposer実行 |
38
- | 両方なし+Design Docあり | 計画書・タスクファイルなし、docs/design/*.mdあり | work-plannerでDesign Docから作業計画書を作成し、タスク分解へ進む |
39
- | 両方なし | 計画書・タスクファイル・Design Docすべてなし | 前提条件未達成をユーザーに報告して停止 |
78
+ | タスク存在 | Consumed Task Set が非空 | ユーザーの実行指示をバッチ承認として自律実行へ移行 |
79
+ | タスクなし + `$ARGUMENTS`で計画書指定 | `$ARGUMENTS`が提供され Consumed Task Set が空 | ユーザーに確認 → task-decomposer実行 |
80
+ | タスクなし + 計画書を自動解決 | Consumed Task Set が空かつ計画書が自動解決(readiness check の Step 6 経由)で得られ、backend 信号 ≥1 かつ frontend 信号 = 0 が確認済み | ユーザーに確認 → task-decomposer実行(Step 6 のレイヤー検証で frontend / 不確定な計画は既に除外されているため安全) |
81
+
82
+ Design Doc から作業計画書がまだない状態で着手したい場合は、先に計画レシピを実行して計画書を生成してから本レシピを再起動する — 上記 readiness check は意図的に自動生成を行わず、レイヤー判断を明示的に保つ。
40
83
 
41
84
  ## タスク分解フェーズ(条件付き実行)
42
85
 
43
- タスクファイルが存在しない場合:
86
+ Consumed Task Set が空の場合:
44
87
 
45
88
  ### 1. ユーザー確認
46
89
  ```
47
- タスクファイルが見つかりません。
48
- 作業計画書: docs/plans/[計画書名].md
90
+ Consumed Task Set にタスクファイルがありません。
91
+ 作業計画書: docs/plans/[plan-name].md
49
92
 
50
93
  計画書からタスクを生成しますか? (y/n):
51
94
  ```
@@ -54,20 +97,17 @@ description: 分解済みタスクを自律実行モードで実装
54
97
  Agentツールでtask-decomposerを呼び出す:
55
98
  - `subagent_type`: "task-decomposer"
56
99
  - `description`: "作業計画をタスクに分解"
57
- - `prompt`: "作業計画書を読み込み、1コミット粒度の独立したタスクに分解。入力: docs/plans/[計画書名].md。出力: docs/plans/tasks/配下に個別タスクファイル生成。粒度: 1タスク = 1コミット = 独立して実行可能"
100
+ - `prompt`: "作業計画書を読み込み、1コミット粒度の独立したタスクに分解。入力: docs/plans/[plan-name].md。出力: docs/plans/tasks/配下に個別タスクファイル生成。粒度: 1タスク = 1コミット = 独立して実行可能"
58
101
 
59
102
  ### 3. 生成確認
60
- ```bash
61
- # 生成されたタスクファイルを確認
62
- ! ls -la docs/plans/tasks/*.md | head -10
63
- ```
103
+ 上記「Consumed Task Set」セクションの制限パターンを使って Consumed Task Set を再計算し、非空であることを確認する。依然として空の場合はユーザーにエスカレーション — task-decomposer が静かに失敗したか、想定パターンに合致しないファイルを生成した可能性がある。
64
104
 
65
- **フロー**: タスク生成 → 自律実行(この順序で実行)
105
+ **フロー**: タスク生成 → Consumed Task Set 再計算 → 自律実行(この順序)
66
106
 
67
107
  ## 実行前チェックリスト
68
108
 
69
- - [ ] docs/plans/tasks/にタスクファイルが存在することを確認
70
- - [ ] タスクの実行順序(依存関係)を特定
109
+ - [ ] Consumed Task Set が非空であることを確認(上記「Consumed Task Set」セクションで計算)
110
+ - [ ] Consumed Task Set 内のタスク実行順序(依存関係)を特定
71
111
  - [ ] **環境チェック**: タスク単位のコミットサイクルを実行可能か?
72
112
  - コミット機能が利用不可 → 自律実行モード前にエスカレーション
73
113
  - その他の環境(テスト、品質ツール) → サブエージェントがエスカレーション
@@ -75,7 +115,7 @@ Agentツールでtask-decomposerを呼び出す:
75
115
  ## タスク実行サイクル(4ステップサイクル)
76
116
  **必須実行サイクル**: `task-executor → エスカレーションチェック → quality-fixer → commit`
77
117
 
78
- 各タスクで必須:
118
+ Consumed Task Set 内の各タスクで必須:
79
119
  1. **TaskCreateでタスク登録**: 作業ステップを登録。必ず含める: 最初に「ロード済みスキルから具体ルールを抽出」、最後に「抽出ルールを最終JSON前に検証」
80
120
  2. **task-executor を呼び出す**: タスク実装を実行(レイヤー横断 の場合は subagents-orchestration-guide の レイヤー別エージェントルーティング 参照)
81
121
  3. **task-executor レスポンスをチェック**:
@@ -126,7 +166,18 @@ Escalate when the required fix or investigation falls outside that scope.
126
166
  - 続いて quality-fixer、その後 fail した verifier のみ再実行。
127
167
  - 2サイクル後も fail が残る場合 → 残存指摘事項を添えてユーザーにエスカレーション
128
168
 
129
- 4. **全て合格** → 完了レポートへ
169
+ 4. **全て合格** → 最終クリーンアップへ
170
+
171
+ ## 最終クリーンアップ
172
+
173
+ 完了レポートの前に、本レシピが消費した実装タスクファイルを削除する。作業内容はコミット済みで、`docs/plans/`はレシピ実行間で保持しない一時的な作業状態である:
174
+
175
+ - Consumed Task Set 内のすべてのファイルを削除する
176
+ - `docs/plans/tasks/{plan-name}-phase*-completion.md` にマッチするすべてのファイルを削除する(task-decomposer が生成した本 `{plan-name}` のフェーズ完了ファイル)
177
+ - 該当する `docs/plans/tasks/_overview-{plan-name}.md` が存在する場合は削除する
178
+ - 作業計画書本体(`docs/plans/{plan-name}.md`)は保持する — 最終レビュー後に削除するかはユーザーが判断する
179
+
180
+ タスクファイルを削除できない場合(ファイルシステムエラー)、失敗を報告するが完了レポートをブロックしない。
130
181
 
131
182
  ## 出力例
132
183
  実装フェーズが完了しました。
@@ -134,6 +185,7 @@ Escalate when the required fix or investigation falls outside that scope.
134
185
  - 実装されたタスク: [タスク数]件
135
186
  - 品質チェック: すべて通過
136
187
  - コミット: [コミット数]件作成
188
+ - クリーンアップ: docs/plans/tasks/ からタスクファイルを削除済み
137
189
 
138
190
  **責務境界**:
139
191
  - スコープ内: タスク分解から実装完了まで
@@ -14,40 +14,64 @@ description: フロントエンド実装を自律実行モードで実行
14
14
 
15
15
  **重要**: 全てのコミット前にquality-fixer-frontendを実行。
16
16
 
17
- 作業計画: $ARGUMENTS
17
+ 作業計画書: $ARGUMENTS
18
18
 
19
19
  ## 実行前提条件
20
20
 
21
- ### タスクファイル存在チェック
22
- ```bash
23
- # 作業計画書を確認
24
- ! ls -la docs/plans/*.md | grep -v template | tail -5
21
+ ### Implementation Readinessチェック
25
22
 
26
- # タスクファイルを確認
27
- ! ls docs/plans/tasks/*.md 2>/dev/null || echo "⚠️ タスクファイルが見つかりません"
28
- ```
23
+ タスク処理の前に、ゲート対象となる作業計画書を特定する。
24
+
25
+ **`$ARGUMENTS`が指定されている場合**は、それがユーザーから渡された作業計画書のパスである。自動解決を行わずそのまま使用する。`{plan-name}`はファイル名から `.md` 拡張子(および末尾に `-plan` がある場合はそれも)を除いて抽出する。
26
+
27
+ **`$ARGUMENTS`が空の場合**、タスクファイルから自動解決する:
28
+ 1. `docs/plans/tasks/`内で本レシピが消費可能な唯一のパターンに一致するタスクファイルを列挙する(subagents-orchestration-guideの「Layer-Aware Agent Routing」により、`task-executor-frontend` が所有するファイル名サフィックスはこの形のみ):
29
+ - `{plan-name}-frontend-task-*.md`
30
+ - 素の `{plan-name}-task-*.md` は消費**しない** — ルーティング表により backend 予約のファイル名で、backend build レシピが所有する。`{plan-name}-backend-task-*.md` も同様に消費しない。
31
+ 2. マッチしたファイルから、以下のいずれかにマッチするものを除外する。これらは本実行の実装タスクではなく、他のワークフローフェーズに由来する: `*-task-prep-*.md`(readiness preflight タスク)、`_overview-*.md`(分解overviewファイル)、`*-phase*-completion.md`(フェーズ完了ファイル)、`review-fixes-*.md`(実装後レビュー修正)、`integration-tests-*-task-*.md`(統合テスト追加用スキャフォールディング)
32
+ 3. 残った各ファイルから、末尾の `-frontend-task-{NN}.md` を取り除いて `{plan-name}` を抽出する
33
+ 4. 少なくとも1つのタスクファイルがマッチした場合、最も新しい mtime を持つ `{plan-name}` の `docs/plans/{plan-name}.md` を作業計画書とする。タイは辞書順最大の `{plan-name}` で解決する
34
+ 5. `*-frontend-task-*.md` が見つからず、かつ `docs/plans/`に非テンプレートの作業計画書が存在する場合、最も新しい計画書を自動採用してはならない — frontend タスクは明示的に命名されている必要がある。停止して報告する: 「`docs/plans/tasks/`に `*-frontend-task-*.md` が見つかりませんでした。本レシピを frontend 計画に対して実行する意図であれば、task-decomposer を再実行して frontend 命名のタスクファイルを出力させるか、作業計画書のパスを `$ARGUMENTS` で指定してください。計画が backend ならば、backend build レシピを使用してください。」
35
+
36
+ 作業計画書のヘッダを読み、`Implementation Readiness: <status>`の行を見つける。以下のルールを適用する:
37
+
38
+ | ステータス | アクション |
39
+ |--------|--------|
40
+ | `ready` | Consumed Task Set の計算へ進む |
41
+ | `escalated` | 作業計画書のReadiness Reportセクションを読み、AskUserQuestionで残存ギャップをユーザーに提示する: 「Implementation Readinessが`escalated`で、以下の残存ギャップがあります: [リスト]。実行を継続しますか?(y/n)」。`y`なら進む、`n`なら停止 |
42
+ | `pending` | AskUserQuestionで提示する: 「Implementation Readinessが`pending`です。事前にreadiness preflightを実行して作業計画書の実装可能性を検証してから再開してください。preflightなしで継続しますか?(y/n)」。`y`なら進む、`n`なら停止 |
43
+ | 行が存在しない | `pending`として扱う — readinessマーカー導入前に作成された古い作業計画書は明示的にpreflightすべき |
44
+
45
+ ### Consumed Task Set
46
+
47
+ 本実行で消費する **Consumed Task Set** を計算する — 本レシピが所有・実行・後で削除する正確なファイル群。ルーティング表により、消費可能なパターンは1つだけ:
48
+
49
+ 1. Implementation Readinessチェックで解決した `{plan-name}` について、`docs/plans/tasks/`内で `{plan-name}-frontend-task-*.md` にマッチするタスクファイルを列挙する。`{plan-name}-task-*.md` および `{plan-name}-backend-task-*.md` は除外する — `task-executor` にルーティングされ、backend build レシピが所有する
50
+ 2. 以下にマッチするファイルを除外する: `*-task-prep-*.md`、`_overview-*.md`、`*-phase*-completion.md`、`review-fixes-*.md`、`integration-tests-*-task-*.md`(これらは他のワークフローフェーズに由来する)
51
+
52
+ 本レシピ内で「タスクファイル」と参照する箇所すべて — タスク生成判定フロー、タスク実行サイクルの反復、最終クリーンアップ — はこのセットを使用する。`docs/plans/tasks/*.md` を制限なく glob しない。
29
53
 
30
54
  ### タスク生成判定フロー
31
55
 
32
- タスクファイルの存在状態を分析し、必要なアクションを決定:
56
+ Consumed Task Set を確認し、適切な対応を決定する。注: `$ARGUMENTS`が空かつ `*-frontend-task-*.md` が存在しない場合は、上記の readiness check が既に実行を停止している — 以下の表で「タスクなし」が関わる行は、ユーザーが明示的に `$ARGUMENTS` を指定した場合にのみ発火する。
33
57
 
34
58
  | 状態 | 基準 | 次のアクション |
35
59
  |------|------|--------------|
36
- | タスク存在 | tasks/ディレクトリに.mdファイルあり | ユーザーの実行指示をバッチ承認として自律実行へ移行 |
37
- | タスクなし+計画あり | 計画書は存在するがタスクファイルなし | ユーザー確認 → task-decomposer実行 |
38
- | どちらもなし+Design Docあり | 計画書・タスクファイルなし、docs/design/*.mdあり | work-plannerでDesign Docから作業計画書を作成し、タスク分解へ進む |
39
- | どちらもなし | 計画書・タスクファイル・Design Docすべてなし | 前提条件未達成をユーザーに報告して停止 |
60
+ | タスク存在 | Consumed Task Set が非空 | ユーザーの実行指示をバッチ承認として自律実行へ移行 |
61
+ | タスクなし + `$ARGUMENTS`で計画書指定 | `$ARGUMENTS`が提供され Consumed Task Set が空 | ユーザーに確認 → task-decomposer実行(frontend命名ルールにより `*-frontend-task-*.md` を出力する) |
62
+ | どちらもなし+Design Docあり + `$ARGUMENTS`提供 | `$ARGUMENTS`が提供され、計画書なし、Consumed Task Setなし、ただし docs/design/*.md が存在 | work-plannerでDesign Docから作業計画書を作成し、タスク分解へ進む |
63
+ | どちらもなし | `$ARGUMENTS`なし、計画書なし、Consumed Task Setなし、Design Docなし | 前提条件未達成をユーザーに報告して停止 |
40
64
 
41
65
  ## タスク分解フェーズ(条件付き)
42
66
 
43
- タスクファイルが存在しない場合:
67
+ Consumed Task Set が空の場合:
44
68
 
45
69
  ### 1. ユーザー確認
46
70
  ```
47
- タスクファイルが見つかりません。
48
- 作業計画: docs/plans/[plan-name].md
71
+ Consumed Task Set にタスクファイルがありません。
72
+ 作業計画書: docs/plans/[plan-name].md
49
73
 
50
- 作業計画からタスクを生成しますか? (y/n):
74
+ 作業計画書からタスクを生成しますか? (y/n):
51
75
  ```
52
76
 
53
77
  ### 2. タスク分解(承認された場合)
@@ -57,17 +81,14 @@ Agentツールでtask-decomposerを呼び出す:
57
81
  - `prompt`: "作業計画を読み込み、アトミックなタスクに分解。入力: docs/plans/[plan-name].md。出力: docs/plans/tasks/配下に個別タスクファイル。粒度: 1タスク = 1コミット = 独立実行可能"
58
82
 
59
83
  ### 3. 生成確認
60
- ```bash
61
- # 生成されたタスクファイルを確認
62
- ! ls -la docs/plans/tasks/*.md | head -10
63
- ```
84
+ 上記「Consumed Task Set」セクションの制限パターンを使って Consumed Task Set を再計算し、非空であることを確認する。依然として空の場合はユーザーにエスカレーション — task-decomposer が静かに失敗したか、想定パターンに合致しないファイルを生成した可能性がある。
64
85
 
65
- **フロー**: タスク生成 → 自律実行(この順序で実行)
86
+ **フロー**: タスク生成 → Consumed Task Set 再計算 → 自律実行(この順序)
66
87
 
67
88
  ## 実行前チェックリスト
68
89
 
69
- - [ ] docs/plans/tasks/にタスクファイルが存在することを確認
70
- - [ ] タスクの実行順序(依存関係)を特定
90
+ - [ ] Consumed Task Set が非空であることを確認(上記「Consumed Task Set」セクションで計算)
91
+ - [ ] Consumed Task Set 内のタスク実行順序(依存関係)を特定
71
92
  - [ ] **環境チェック**: タスク単位のコミットサイクルを実行可能か?
72
93
  - コミット機能が利用不可 → 自律実行モード前にエスカレーション
73
94
  - その他の環境(テスト、品質ツール) → サブエージェントがエスカレーション
@@ -75,7 +96,7 @@ Agentツールでtask-decomposerを呼び出す:
75
96
  ## タスク実行サイクル(4ステップサイクル)
76
97
  **必須実行サイクル**: `task-executor-frontend → エスカレーションチェック → quality-fixer-frontend → commit`
77
98
 
78
- 各タスクで必須:
99
+ Consumed Task Set 内の各タスクで必須:
79
100
  1. **TaskCreateでタスク登録**: 作業ステップを登録。必ず含める: 最初に「ロード済みスキルから具体ルールを抽出」、最後に「抽出ルールを最終JSON前に検証」
80
101
  2. **Agent tool** (subagent_type: "task-executor-frontend") → タスクファイルパスを prompt に渡し、構造化レスポンスを受け取る
81
102
  3. **task-executor-frontend レスポンスをチェック**:
@@ -104,8 +125,6 @@ Use loaded skills to execute that scope.
104
125
  Escalate when the required fix or investigation falls outside that scope.
105
126
  ```
106
127
 
107
- ! ls -la docs/plans/*.md | head -10
108
-
109
128
  承認ステータスを確認してから進む。確認後、自律実行モードを開始。要件変更を検出したら即座に停止。
110
129
 
111
130
  ## 実装後検証(全タスク完了後)
@@ -128,7 +147,18 @@ Escalate when the required fix or investigation falls outside that scope.
128
147
  - 続いて quality-fixer-frontend、その後 fail した verifier のみ再実行。
129
148
  - 2サイクル後も fail が残る場合 → 残存指摘事項を添えてユーザーにエスカレーション
130
149
 
131
- 4. **全て合格** → 完了レポートへ
150
+ 4. **全て合格** → 最終クリーンアップへ
151
+
152
+ ## 最終クリーンアップ
153
+
154
+ 完了レポートの前に、本レシピが消費した実装タスクファイルを削除する。作業内容はコミット済みで、`docs/plans/`はレシピ実行間で保持しない一時的な作業状態である:
155
+
156
+ - Consumed Task Set 内のすべてのファイルを削除する
157
+ - `docs/plans/tasks/{plan-name}-phase*-completion.md` にマッチするすべてのファイルを削除する(task-decomposer が生成した本 `{plan-name}` のフェーズ完了ファイル)
158
+ - 該当する `docs/plans/tasks/_overview-{plan-name}.md` が存在する場合は削除する
159
+ - 作業計画書本体(`docs/plans/{plan-name}.md`)は保持する — 最終レビュー後に削除するかはユーザーが判断する
160
+
161
+ タスクファイルを削除できない場合(ファイルシステムエラー)、失敗を報告するが完了レポートをブロックしない。
132
162
 
133
163
  ## 出力例
134
164
  フロントエンド実装フェーズ完了。
@@ -136,3 +166,4 @@ Escalate when the required fix or investigation falls outside that scope.
136
166
  - 実装タスク: [件数] タスク
137
167
  - 品質チェック: 全てパス
138
168
  - コミット: [件数] コミット作成
169
+ - クリーンアップ: docs/plans/tasks/ からタスクファイルを削除済み
@@ -43,17 +43,18 @@ Agentツールでacceptance-test-generatorを呼び出す:
43
43
  - UI Specあり: `prompt: "[パス]のDesign Docからテストスケルトンを生成。UI Specは[ui-specパス]。"`
44
44
  - UI Specなし: `prompt: "[パス]のDesign Docからテストスケルトンを生成。"`
45
45
 
46
- 統合テストファイルパス、E2Eテストファイルパス(またはnull)、およびe2eAbsenceReasonを、subagents-orchestration-guideの「acceptance-test-generator → work-planner」セクションに従いwork-plannerに渡す。
46
+ レーン別のテストファイルパスと不在理由を、subagents-orchestration-guideの「acceptance-test-generator → work-planner」セクションに従いwork-plannerに渡す。
47
47
 
48
48
  ### Step 3: 作業計画書作成
49
49
  Agentツールでwork-plannerを呼び出す:
50
50
  - `subagent_type`: "work-planner"
51
51
  - `description`: "作業計画書作成"
52
- - ステップ2でテストスケルトンを生成した場合:
53
- - `generatedFiles.e2e`がnullでない場合:
54
- `prompt`: "[パス]のDesign Docから作業計画を作成。統合テストファイル: [ステップ2の統合テストパス]。E2Eテストファイル: [ステップ2のE2Eテストパス]。統合テストは各フェーズ実装と同時に作成、E2Eテストは最終フェーズでのみ実行。"
55
- - `generatedFiles.e2e`がnullの場合:
56
- `prompt`: "[パス]のDesign Docから作業計画を作成。統合テストファイル: [ステップ2の統合テストパス]。E2Eテストスケルトンは生成されませんでした(理由: [e2eAbsenceReason])。統合テストは各フェーズ実装と同時に作成。"
52
+ - ステップ2でテストスケルトンを生成した場合、各レーンの状態を列挙する形でプロンプトを構築する:
53
+ - 必ず含める: "統合テストファイル: [パス または 'not generated']"
54
+ - E2Eの各レーン(`fixtureE2e`、`serviceE2e`)について:
55
+ - `generatedFiles.<lane>`がnullでない場合: "[lane] テストファイル: [パス]"
56
+ - `generatedFiles.<lane>`がnullの場合: "[lane] スケルトンは生成されませんでした(理由: [e2eAbsenceReason.<lane>]"
57
+ - 配置ガイダンスを末尾に付加する: "統合テストは各フェーズ実装と同時に作成。fixture-e2eテストはUI機能フェーズと並行して作成。service-integration-e2eテストは最終フェーズでのみ実行。"
57
58
  - テストスケルトンを生成しなかった場合:
58
59
  `prompt`: "[パス]のDesign Docから作業計画を作成。"
59
60
 
@@ -67,7 +68,7 @@ Agentツールでwork-plannerを呼び出す:
67
68
  計画内容承認後、以下の標準レスポンスで終了
68
69
  ```
69
70
  フロントエンド計画フェーズ完了。
70
- - 作業計画: docs/plans/[計画名].md
71
+ - 作業計画: docs/plans/[plan-name].md
71
72
  - ステータス: 承認済み
72
73
 
73
74
  実装は別途指示してください。
@@ -14,9 +14,10 @@ description: Design Doc準拠検証とセキュリティ検証、必要に応じ
14
14
 
15
15
  - 準拠検証 → code-reviewerが実行
16
16
  - セキュリティ検証 → security-reviewerが実行
17
- - 修正実装 → task-executor-frontendが実行
18
- - 品質チェックquality-fixer-frontendが実行
19
- - 再検証 → code-reviewer / security-reviewerが実行
17
+ - **コード側修正パス**: 修正実装 → task-executor-frontend、品質チェック → quality-fixer-frontend、再検証 → code-reviewer / security-reviewer
18
+ - **設計側更新パス**: DD改訂 technical-designer-frontend(updateモード)、DDレビュー → document-reviewer、複数DDの整合性 → design-sync(複数DD存在時のみ)、再検証 → code-reviewer
19
+
20
+ オーケストレーターはサブエージェントを呼び出し、構造化JSONを渡す。設計側パスは、コードが正しいのにDesign Docが古くなっていた不整合(コードがDDに違反したケースではない)に適用される。
20
21
 
21
22
  Design Doc(省略時は直近のもの): $ARGUMENTS
22
23
 
@@ -59,7 +60,24 @@ Agent toolでsecurity-reviewerを呼び出す:
59
60
  - `approved` または `approved_with_notes` → 合格
60
61
  - `needs_revision` → 不合格
61
62
 
62
- **両方の結果をサブエージェントの出力フィールドのみを使用して独立に報告**(サブエージェントのレスポンスにないフィールドを追加しない):
63
+ **両方の結果をサブエージェントの出力フィールドのみを使用して独立に報告**(サブエージェントのレスポンスにないフィールドを追加しない)。
64
+
65
+ **早期終了(ルーティング対象なし)**: code-reviewer の `verdict` が `pass` かつ `acceptanceCriteria[]` のすべてのエントリが `status: "fulfilled"` かつ `identifierMismatches[]` が空かつ `qualityFindings[]` が空かつ security-reviewer の `findings[]` が空の場合、Steps 5-10 をスキップして直接 Step 11 へ進む — ルーティング対象がないため。クリーンな結果をユーザーに提示する。
66
+
67
+ それ以外の場合、ユーザー提示の前に、オーケストレーターは以下のルールで finding ごとに推奨ルートを計算する(このルール自体は内部用 — ユーザー向けプロンプトには含めない)。ルールは code-reviewer の既存構造化フィールドのみを参照する。「DDの意図」のような解釈は不安定な推論を避けるため意図的に行わない:
68
+
69
+ | Finding ソース | 既存フィールドから検出可能なパターン | 推奨ルート |
70
+ |---------------|----------------------------------|----------|
71
+ | `acceptanceCriteria[]` で `status: "partially_fulfilled"` または `"unfulfilled"` | 引用された `gap` から、コードがACを満たしていないことが示される — 追加実装が必要 | `c`(コード側修正) |
72
+ | `acceptanceCriteria[]` で `status: "partially_fulfilled"` または `"unfulfilled"` | 引用された `gap` から、ACテキスト自体が実装済み(チームが受け入れた)挙動から乖離していることが示される — 実装が要件を満たしていないのではなく、DDのAC文言が誤った意図を捉えているケース(ACを読み、引用された `location` と比較して検証する) | `d`(設計側更新 — ACテキストが古い) |
73
+ | `identifierMismatches[]` | `codeValue` が `designDocValue` のリネームとして妥当(camelCase ↔ kebab-case ↔ snake_case、略語の展開/省略、同じ概念を指す意味的なリネーム)— 引用された `location` を確認してコードが新名称を一貫して使用していることを検証 | `d`(設計側更新 — DDが古い可能性が高い) |
74
+ | `identifierMismatches[]` | それ以外の identifier mismatch(型違い、cardinality違い、完全欠落など) | `c`(コード側修正) |
75
+ | `qualityFindings[]` | 全カテゴリ(`dd_violation`、`maintainability`、`reliability`、`coverage_gap`) | `c`(コード側修正) |
76
+ | security-reviewer `findings[]` | 全カテゴリ(`confirmed_risk`、`defense_gap`、`hardening`、`policy`) | `c`(コード側修正) |
77
+
78
+ 各 finding に対しユーザーが推奨を上書き可能。`status: "fulfilled"` の AC 項目はルーティング対象外(対応不要)。
79
+
80
+ ユーザーへの提示形式(finding ごとに推奨ルートをラベル付け、ルートでグルーピング):
63
81
 
64
82
  ```
65
83
  Code Compliance: [code-reviewerのcomplianceRate]
@@ -67,30 +85,57 @@ Code Compliance: [code-reviewerのcomplianceRate]
67
85
  Identifier Match Rate: [code-reviewerのidentifierMatchRate]
68
86
  Acceptance Criteria:
69
87
  - [fulfilled] [item] (confidence: [high/medium/low])
70
- - [partially_fulfilled] [item]: [gap] — [suggestion]
71
- - [unfulfilled] [item]: [gap] — [suggestion]
88
+ - [partially_fulfilled] [item]: [gap] — [suggestion] [recommended: c | d]
89
+ - [unfulfilled] [item]: [gap] — [suggestion] [recommended: c | d]
72
90
  Identifier Mismatches:
73
- - [identifier]: DD=[designDocValue] Code=[codeValue] at [location]
91
+ - [identifier]: DD=[designDocValue] Code=[codeValue] at [location] [recommended: c | d]
74
92
  Quality Findings:
75
- - [category] [location]: [description] — [rationale]
93
+ - [category] [location]: [description] — [rationale] [recommended: c]
76
94
 
77
95
  Security Review: [security-reviewerのstatus]
78
96
  Findings by category:
79
- - [confirmed_risk] [location]: [description] — [rationale]
80
- - [defense_gap] [location]: [description] — [rationale]
81
- - [hardening] [location]: [description] — [rationale]
82
- - [policy] [location]: [description] — [rationale]
97
+ - [confirmed_risk] [location]: [description] — [rationale] [recommended: c]
98
+ - [defense_gap] [location]: [description] — [rationale] [recommended: c]
99
+ - [hardening] [location]: [description] — [rationale] [recommended: c]
100
+ - [policy] [location]: [description] — [rationale] [recommended: c]
83
101
  Notes: [security-reviewerのnotes、存在する場合]
84
102
 
85
- 修正を実行しますか? (y/n):
103
+ 不整合の解消 — finding ごとに推奨ルートを承認または上書きする:
104
+ c) コード側修正 — コードがDesign Docに違反; コードを修正して合わせる
105
+ d) 設計側更新 — コードは正しい; Design Docが古いので改訂する
106
+ s) スキップ — 現状を受け入れて変更しない
86
107
  ```
87
108
 
88
- 両方合格でユーザーが`n`を選択: Steps 5-10をスキップし、Step 11へ。
109
+ AskUserQuestionを使用する。デフォルト提示は **「すべての推奨ルートを承認」** — オーケストレーターの推奨が正しい典型ケース向けの単一確認。ユーザーが上書きしたい場合は finding ごとに c/d/s を収集する。すべてに対し `s` を選択した場合: Steps 5-10をスキップしてStep 11へ進む。
89
110
 
90
111
  ### Step 5: タスクテンプレートの読み込み
91
112
 
92
113
  documentation-criteriaスキルを読み込み、Step 6用のタスクファイルテンプレート(references/task-template.md)を取得。
93
114
 
115
+ ### Step 5d: 設計側更新
116
+
117
+ ユーザーが少なくとも1つのfindingを `d` にルーティングした場合のみ、本ステップを実行する。すべてのルートが `c` または `s` の場合は、Step 6 へ直接スキップする。
118
+
119
+ 1. Agent tool で technical-designer-frontend を update モードで呼び出す:
120
+ - `subagent_type`: "technical-designer-frontend"
121
+ - `description`: "レビューfindingsからのDesign Doc更新"
122
+ - `prompt`: "[path]のDesign Docをupdateモードで更新する。実装は以下の点で乖離しており、チームはコード側ではなく設計側で受け入れる判断をした: [`d` ルートのfindingsを $STEP_2_OUTPUT の codeLocation と designDocValue 付きでリスト化]。該当セクションに現在のコードの挙動を反映し、履歴エントリを追加する。"
123
+
124
+ 2. document-reviewer を呼び出して更新後の Design Doc を検証する:
125
+ - `subagent_type`: "document-reviewer"
126
+ - `description`: "更新後Design Docのレビュー"
127
+ - `prompt`: "[path]の更新後Design Docの整合性と完成度をレビュー。"
128
+
129
+ 3. 複数のDesign Docが存在する場合(`ls docs/design/*.md | grep -v template | wc -l > 1`)、design-syncを呼び出す:
130
+ - `subagent_type`: "design-sync"
131
+ - `description`: "DD間整合性チェック"
132
+ - `prompt`: "source_design: [更新後DDのパス]。更新後の全Design Doc間の矛盾を検出。"
133
+ - `sync_status: conflicts_found` の場合: 矛盾をユーザーに提示し、影響を受けるDDに対して technical-designer-frontend を再起動して解消する。
134
+
135
+ 4. Step 5d 完了後:
136
+ - ユーザーが選択した `c` ルートがゼロの場合(すべて `d`、すべて `s`、または `c` を含まない `d` + `s` の混在)→ Steps 6-8 をスキップし、Step 9 で再検証へ進む
137
+ - `d` と `c` の両方が選択された場合 → 更新後のDDに対して `c` ルートのfindingsを再評価し、DD改訂で満たされたものは除外する。残った `c` ルートのfindings で Step 6 へ進む
138
+
94
139
  ### Step 6: タスクファイル作成
95
140
 
96
141
  `docs/plans/tasks/review-fixes-YYYYMMDD.md` にタスクファイルを作成。
@@ -113,7 +158,7 @@ Agent toolでquality-fixer-frontendを呼び出す:
113
158
  Agent toolでcode-reviewerを呼び出す:
114
159
  - `subagent_type`: "code-reviewer"
115
160
  - `description`: "準拠の再検証"
116
- - `prompt`: "修正後のDesign Doc準拠を再検証。Design Doc: [path]. Implementation files: [file list]. 前回の準拠問題: $STEP_2_OUTPUT。各問題が解決されたことを確認。"
161
+ - `prompt`: "修正後のDesign Doc準拠を再検証。Design Doc: [path]. Implementation files: [file list]. 前回の準拠問題: $STEP_2_OUTPUT。各問題が解決されたこと(コード側または設計側いずれかで)を確認。"
117
162
 
118
163
  ### Step 10: security-reviewer再検証
119
164
 
@@ -122,7 +167,16 @@ Agent toolでsecurity-reviewerを呼び出す(セキュリティ修正が実
122
167
  - `description`: "セキュリティの再検証"
123
168
  - `prompt`: "修正後のセキュリティを再検証。前回の検出結果: $STEP_3_OUTPUT。Design Doc: [path]. Implementation files: [file list]。"
124
169
 
125
- ### Step 11: 最終レポート
170
+ ### Step 11: 最終クリーンアップとレポート
171
+
172
+ 本レシピが作成したreview-fix用タスクファイル(存在すれば)を削除する。作業内容はコミット済みで、`docs/plans/`はレシピ実行間で保持しない一時的な作業状態である:
173
+
174
+ - `docs/plans/tasks/review-fixes-YYYYMMDD.md` が存在すれば削除する
175
+
176
+ タスクファイルを削除できない場合(ファイルシステムエラー)、失敗を報告するが最終レポートをブロックしない。
177
+
178
+ その後、最終レポートを提示する:
179
+
126
180
  ```
127
181
  Code Compliance:
128
182
  初回: [X]%
@@ -135,9 +189,11 @@ Security Review:
135
189
 
136
190
  残存課題:
137
191
  - [手動対応が必要な項目]
192
+
193
+ クリーンアップ: review-fixesタスクファイルを削除済み
138
194
  ```
139
195
 
140
- ## 自動修正可能な項目
196
+ ## 自動修正可能な項目(コード側パス)
141
197
  - 単純な未実装受入条件
142
198
  - エラーハンドリング追加
143
199
  - 契約定義の修正
@@ -147,10 +203,16 @@ Security Review:
147
203
  ## 自動修正不可な項目
148
204
  - 根本的なビジネスロジック変更
149
205
  - アーキテクチャレベルの修正
150
- - Design Doc自体の不備
151
206
  - コミット済みシークレット(blocked → 人間の判断が必要)
152
207
 
153
- **スコープ**: Design Doc準拠検証、セキュリティレビュー、自動修正。
208
+ ## 設計側更新の対象
209
+ 設計側パスに適した不整合(コードが正しく、DDが古くなったケース):
210
+ - 新しい命名がチームの現行命名を反映している identifier rename
211
+ - 元の要件意図に対し、DDが捉えた挙動より実装の方が合致している挙動変更
212
+ - 新しい構造が妥当で、DDが旧構造を文書化していたままのコンポーネント分割・統合
213
+ - 実装は既に満たしているがDDに列挙されていなかった新規AC
214
+
215
+ **スコープ**: Design Doc準拠検証、セキュリティレビュー、コード側自動修正、および設計側更新ルーティング。
154
216
 
155
217
  ## サブエージェントのスコープ境界
156
218
 
@@ -58,6 +58,19 @@ requirement-analyzerの`crossLayerScope`がレイヤー横断(backend + fronte
58
58
 
59
59
  **フロー厳守**: subagents-orchestration-guideスキルの「自律実行中のタスク管理」に従い、TaskCreate/TaskUpdateで4ステップを管理する
60
60
 
61
+ ## Implementation Readinessチェック(work-planner承認とtask-decomposerの間)
62
+
63
+ work-plannerが完了しユーザーから一括承認を得た後、task-decomposerを呼び出す前に作業計画書のヘッダを読み、`Implementation Readiness: <status>`の行を見つける。以下のルールを適用する:
64
+
65
+ | ステータス | アクション |
66
+ |--------|--------|
67
+ | `ready` | task-decomposerに進む |
68
+ | `escalated` | 作業計画書のReadiness Reportセクションを読み、AskUserQuestionで残存ギャップをユーザーに提示する: 「Implementation Readinessが`escalated`で、以下の残存ギャップがあります: [リスト]。実行を継続しますか?(y/n)」。`y`なら進む、`n`なら停止 |
69
+ | `pending` | AskUserQuestionで提示する: 「Implementation Readinessが`pending`です。事前にreadiness preflightを実行して作業計画書の実装可能性を検証してから再開してください。preflightなしで継続しますか?(y/n)」。`y`なら進む、`n`なら停止 |
70
+ | 行が存在しない | `pending`として扱う — readinessマーカー導入前に作成された古い作業計画書は明示的にpreflightすべき |
71
+
72
+ このチェックは全規模(Small / Medium / Large)に適用される。本レシピは規模に依存しないオーケストレーターであるため。
73
+
61
74
  ## サブエージェントのスコープ境界
62
75
 
63
76
  本レシピから呼び出すサブエージェントプロンプトの末尾に以下のブロックを必ず付与する:
@@ -101,11 +114,29 @@ subagents-orchestration-guideスキルの「自律実行中のタスク管理」
101
114
  - `blocked` → ユーザーにエスカレーション
102
115
 
103
116
  ### テスト情報の伝達
104
- acceptance-test-generator実行後、work-planner(subagent_type: "work-planner")呼び出し時には以下を伝達:
105
- - 統合テストファイルパス(`generatedFiles.integration`から取得)
106
- - E2Eテストファイルパスまたはnull(`generatedFiles.e2e`から取得)
107
- - E2E不在理由(`e2eAbsenceReason`、E2Eがnullの場合)
108
- - 統合テストは実装と同時に作成、E2Eテストは全実装完了後に実行(E2Eパスが提供された場合)
117
+ acceptance-test-generator実行後、work-planner(subagent_type: "work-planner")呼び出し時にはレーン別に伝達する:
118
+ - 統合テストファイルパス(`generatedFiles.integration`から取得)または null
119
+ - fixture-e2eテストファイルパス(`generatedFiles.fixtureE2e`から取得)または null
120
+ - service-integration-e2eテストファイルパス(`generatedFiles.serviceE2e`から取得)または null
121
+ - レーン別の不在理由(`e2eAbsenceReason.fixtureE2e` / `e2eAbsenceReason.serviceE2e`、当該レーンが null の場合)
122
+ - タイミングの明示: 統合テストは各フェーズ実装と並行して作成、fixture-e2eテストはUI機能フェーズと並行して作成、service-integration-e2eテストは最終フェーズでのみ実行
123
+
124
+ ### 最終クリーンアップ
125
+
126
+ 完了レポートの前に、本レシピが消費した実装タスクファイルを削除する。作業内容はコミット済みで、`docs/plans/`はレシピ実行間で保持しない一時的な作業状態である。
127
+
128
+ 本レシピは規模に依存せず、単層・複層のいずれの計画も実行する可能性があるため、クリーンアップはtask-decomposerの「Layer-aware naming」が出力するすべてのタスク命名パターンを対象とする:
129
+
130
+ - 本実行で使用した作業計画書パスから導出した `{plan-name}` について、以下のいずれかにマッチするファイルすべてを削除する:
131
+ - `docs/plans/tasks/{plan-name}-task-*.md`(単層タスク)
132
+ - `docs/plans/tasks/{plan-name}-backend-task-*.md`(複層計画のbackend部分)
133
+ - `docs/plans/tasks/{plan-name}-frontend-task-*.md`(複層計画のfrontend部分)
134
+ - 上記マッチから、以下のパターンに該当するものは除外する: `*-task-prep-*.md`、`_overview-*.md`、`*-phase*-completion.md`、`review-fixes-*.md`、`integration-tests-*-task-*.md`(これらは他のワークフローフェーズに由来する)
135
+ - `docs/plans/tasks/{plan-name}-phase*-completion.md` にマッチするファイルすべてを削除する(task-decomposerが生成したフェーズ完了ファイル)
136
+ - 該当する `docs/plans/tasks/_overview-{plan-name}.md` が存在する場合は削除する
137
+ - 作業計画書本体(`docs/plans/{plan-name}.md`)は保持する — 最終レビュー後に削除するかはユーザーが判断する
138
+
139
+ タスクファイルを削除できない場合(ファイルシステムエラー)、失敗を報告するが完了レポートをブロックしない。
109
140
 
110
141
  ## 実行方法
111
142
 
@@ -36,20 +36,21 @@ description: 設計書から作業計画書を作成し計画承認を取得
36
36
  - 設計書の存在を確認し、ない場合はその旨をユーザーに通知
37
37
  - 複数ある場合は選択肢を提示($ARGUMENTS で指定可能)
38
38
 
39
- 2. **E2Eテストスケルトンの生成確認**
40
- - E2Eテストスケルトンを先に生成するかユーザーに確認
41
- - 生成を希望する場合: acceptance-test-generator でテストスケルトンを生成
39
+ 2. **テストスケルトンの生成確認**
40
+ - テストスケルトン(統合 + E2Eレーン)を先に生成するかユーザーに確認
41
+ - 生成を希望する場合: acceptance-test-generator を呼び出す
42
42
  - 生成結果を subagents-orchestration-guideスキル の連携仕様に従って次工程に引き継ぐ
43
43
 
44
44
  3. **作業計画書の作成**
45
45
  Agentツールでwork-plannerを呼び出す:
46
46
  - `subagent_type`: "work-planner"
47
47
  - `description`: "作業計画書作成"
48
- - ステップ2でテストスケルトンを生成した場合:
49
- - `generatedFiles.e2e`がnullでない場合:
50
- `prompt`: "[パス]のDesign Docから作業計画を作成。統合テストファイル: [ステップ2の統合テストパス]。E2Eテストファイル: [ステップ2のE2Eテストパス]。統合テストは各フェーズ実装と同時に作成、E2Eテストは最終フェーズでのみ実行。"
51
- - `generatedFiles.e2e`がnullの場合:
52
- `prompt`: "[パス]のDesign Docから作業計画を作成。統合テストファイル: [ステップ2の統合テストパス]。E2Eテストスケルトンは生成されませんでした(理由: [e2eAbsenceReason])。統合テストは各フェーズ実装と同時に作成。"
48
+ - ステップ2でテストスケルトンを生成した場合、各レーンの状態を列挙する形でプロンプトを構築する:
49
+ - 必ず含める: "統合テストファイル: [パス または 'not generated']"
50
+ - E2Eの各レーン(`fixtureE2e`、`serviceE2e`)について:
51
+ - `generatedFiles.<lane>`がnullでない場合: "[lane] テストファイル: [パス]"
52
+ - `generatedFiles.<lane>`がnullの場合: "[lane] スケルトンは生成されませんでした(理由: [e2eAbsenceReason.<lane>]"
53
+ - 配置ガイダンスを末尾に付加する: "統合テストは各フェーズ実装と同時に作成。fixture-e2eテストはUI機能フェーズと並行して作成。service-integration-e2eテストは最終フェーズでのみ実行。"
53
54
  - テストスケルトンを生成しなかった場合:
54
55
  `prompt`: "[パス]のDesign Docから作業計画を作成。"
55
56
 
@@ -64,7 +65,7 @@ description: 設計書から作業計画書を作成し計画承認を取得
64
65
  ✅ **必須**: 計画内容の承認後は以下の定型応答で終了
65
66
  ```
66
67
  計画フェーズが完了しました。
67
- - 作業計画書: docs/plans/[計画書名].md
68
+ - 作業計画書: docs/plans/[plan-name].md
68
69
  - 状態: 承認済み
69
70
 
70
71
  実装は別途ご指示ください。