create-ai-project 1.23.4 → 1.23.5

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 (59) hide show
  1. package/.claude/agents-en/acceptance-test-generator.md +6 -30
  2. package/.claude/agents-en/code-reviewer.md +15 -24
  3. package/.claude/agents-en/code-verifier.md +3 -32
  4. package/.claude/agents-en/codebase-analyzer.md +10 -78
  5. package/.claude/agents-en/document-reviewer.md +10 -57
  6. package/.claude/agents-en/integration-test-reviewer.md +6 -37
  7. package/.claude/agents-en/investigator.md +6 -59
  8. package/.claude/agents-en/quality-fixer-frontend.md +1 -5
  9. package/.claude/agents-en/quality-fixer.md +1 -5
  10. package/.claude/agents-en/requirement-analyzer.md +3 -14
  11. package/.claude/agents-en/rule-advisor.md +3 -16
  12. package/.claude/agents-en/scope-discoverer.md +5 -29
  13. package/.claude/agents-en/security-reviewer.md +2 -13
  14. package/.claude/agents-en/skill-creator.md +3 -6
  15. package/.claude/agents-en/skill-reviewer.md +7 -43
  16. package/.claude/agents-en/solver.md +9 -24
  17. package/.claude/agents-en/task-decomposer.md +17 -0
  18. package/.claude/agents-en/task-executor-frontend.md +14 -19
  19. package/.claude/agents-en/task-executor.md +14 -19
  20. package/.claude/agents-en/ui-analyzer.md +16 -115
  21. package/.claude/agents-en/verifier.md +9 -53
  22. package/.claude/agents-ja/acceptance-test-generator.md +6 -30
  23. package/.claude/agents-ja/code-reviewer.md +15 -24
  24. package/.claude/agents-ja/code-verifier.md +3 -32
  25. package/.claude/agents-ja/codebase-analyzer.md +10 -78
  26. package/.claude/agents-ja/document-reviewer.md +10 -57
  27. package/.claude/agents-ja/integration-test-reviewer.md +6 -37
  28. package/.claude/agents-ja/investigator.md +6 -59
  29. package/.claude/agents-ja/quality-fixer-frontend.md +1 -5
  30. package/.claude/agents-ja/quality-fixer.md +1 -5
  31. package/.claude/agents-ja/requirement-analyzer.md +3 -14
  32. package/.claude/agents-ja/rule-advisor.md +3 -16
  33. package/.claude/agents-ja/scope-discoverer.md +5 -29
  34. package/.claude/agents-ja/security-reviewer.md +2 -13
  35. package/.claude/agents-ja/skill-creator.md +3 -6
  36. package/.claude/agents-ja/skill-reviewer.md +7 -43
  37. package/.claude/agents-ja/solver.md +9 -24
  38. package/.claude/agents-ja/task-decomposer.md +17 -0
  39. package/.claude/agents-ja/task-executor-frontend.md +14 -19
  40. package/.claude/agents-ja/task-executor.md +14 -19
  41. package/.claude/agents-ja/ui-analyzer.md +16 -115
  42. package/.claude/agents-ja/verifier.md +9 -53
  43. package/.claude/skills-en/documentation-criteria/references/plan-template.md +1 -1
  44. package/.claude/skills-en/documentation-criteria/references/task-template.md +8 -0
  45. package/.claude/skills-en/frontend-technical-spec/SKILL.md +4 -8
  46. package/.claude/skills-en/frontend-typescript-rules/SKILL.md +4 -2
  47. package/.claude/skills-en/frontend-typescript-testing/SKILL.md +5 -11
  48. package/.claude/skills-en/technical-spec/SKILL.md +4 -3
  49. package/.claude/skills-en/typescript-testing/SKILL.md +4 -4
  50. package/.claude/skills-ja/documentation-criteria/references/plan-template.md +1 -1
  51. package/.claude/skills-ja/documentation-criteria/references/task-template.md +8 -0
  52. package/.claude/skills-ja/frontend-technical-spec/SKILL.md +4 -8
  53. package/.claude/skills-ja/frontend-typescript-rules/SKILL.md +4 -2
  54. package/.claude/skills-ja/frontend-typescript-testing/SKILL.md +5 -11
  55. package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +3 -3
  56. package/.claude/skills-ja/technical-spec/SKILL.md +4 -3
  57. package/.claude/skills-ja/typescript-testing/SKILL.md +4 -4
  58. package/CHANGELOG.md +8 -0
  59. package/package.json +1 -1
@@ -119,74 +119,21 @@ skills: project-context, technical-spec, coding-standards
119
119
 
120
120
  ```json
121
121
  {
122
- "problemSummary": {
123
- "phenomenon": "観察された現象の客観的記述",
124
- "context": "発生条件、環境、タイミング",
125
- "scope": "影響範囲"
126
- },
122
+ "problemSummary": {"phenomenon": "観察された現象の客観的記述", "context": "発生条件、環境、タイミング", "scope": "影響範囲"},
127
123
  "investigationSources": [
128
- {
129
- "type": "code|history|dependency|config|document|external",
130
- "location": "調査した場所",
131
- "findings": "発見した事実(解釈を含めない)"
132
- }
124
+ {"type": "code|history|dependency|config|document|external", "location": "調査した場所", "findings": "発見した事実(解釈を含めない)"}
133
125
  ],
134
126
  "externalResearch": [
135
- {
136
- "query": "検索したクエリ",
137
- "source": "情報源",
138
- "findings": "発見した関連情報",
139
- "relevance": "この問題との関連性"
140
- }
127
+ {"query": "検索したクエリ", "source": "情報源", "findings": "発見した関連情報", "relevance": "この問題との関連性"}
141
128
  ],
142
129
  "pathMap": [
143
- {
144
- "symptomId": "S1",
145
- "symptom": "観察された症状の記述",
146
- "trigger": "この症状を引き起こすトリガー",
147
- "paths": [
148
- {
149
- "pathId": "S1-P1",
150
- "description": "パスの説明(例: メインのデータ取得パス)",
151
- "nodes": [
152
- {
153
- "nodeId": "S1-P1-N1",
154
- "location": "file:line",
155
- "description": "このノードが行うこと"
156
- }
157
- ]
158
- }
159
- ]
160
- }
130
+ {"symptomId": "S1", "symptom": "観察された症状の記述", "trigger": "この症状を引き起こすトリガー", "paths": [{"pathId": "S1-P1", "description": "パスの説明(例: メインのデータ取得パス)", "nodes": [{"nodeId": "S1-P1-N1", "location": "file:line", "description": "このノードが行うこと"}]}]}
161
131
  ],
162
132
  "failurePoints": [
163
- {
164
- "id": "FP1",
165
- "nodeId": "S1-P1-N1",
166
- "symptomId": "S1",
167
- "description": "障害の内容",
168
- "causeCategory": "typo|logic_error|missing_constraint|design_gap|external_factor",
169
- "location": "file:line",
170
- "upstreamDependency": "このノードが依存しているもの",
171
- "symptomExplained": "この障害が観察された症状にどうつながるか",
172
- "causalChain": ["観察された障害", "→ 直接原因", "→ 根本原因(停止条件)"],
173
- "checkStatus": "supported|weakened|blocked|not_reached",
174
- "evidence": [
175
- {"type": "supporting|contradicting", "detail": "証拠の詳細", "source": "情報源の場所", "strength": "direct|indirect|circumstantial"}
176
- ],
177
- "comparisonAnalysis": {
178
- "normalImplementation": "正常動作する実装のパス(見つからない場合はnull)",
179
- "keyDifferences": ["差分"]
180
- }
181
- }
133
+ {"id": "FP1", "nodeId": "S1-P1-N1", "symptomId": "S1", "description": "障害の内容", "causeCategory": "typo|logic_error|missing_constraint|design_gap|external_factor", "location": "file:line", "upstreamDependency": "このノードが依存しているもの", "symptomExplained": "この障害が観察された症状にどうつながるか", "causalChain": ["観察された障害", "→ 直接原因", "→ 根本原因(停止条件)"], "checkStatus": "supported|weakened|blocked|not_reached", "evidence": [{"type": "supporting|contradicting", "detail": "証拠の詳細", "source": "情報源の場所", "strength": "direct|indirect|circumstantial"}], "comparisonAnalysis": {"normalImplementation": "正常動作する実装のパス(見つからない場合はnull)", "keyDifferences": ["差分"]}}
182
134
  ],
183
135
  "impactAnalysis": [
184
- {
185
- "failurePointId": "FP1",
186
- "impactScope": ["影響を受けるファイルパス"],
187
- "recurrenceRisk": "low|medium|high",
188
- "riskRationale": "リスク判定の根拠"
189
- }
136
+ {"failurePointId": "FP1", "impactScope": ["影響を受けるファイルパス"], "recurrenceRisk": "low|medium|high", "riskRationale": "リスク判定の根拠"}
190
137
  ],
191
138
  "unexploredAreas": [
192
139
  {"area": "未探索領域", "reason": "調査できなかった理由", "potentialRelevance": "関連性"}
@@ -199,11 +199,7 @@ package.json からフロントエンドビルドコマンドを自動検出し
199
199
  全レスポンスは `status` を共有し、`task_file` 提供時には `taskFileMechanisms` オブジェクトを含める:
200
200
 
201
201
  ```json
202
- "taskFileMechanisms": {
203
- "provided": true,
204
- "executed": ["mechanism names that were found and executed"],
205
- "skipped": [{"mechanism": "mechanism name", "reason": "tool not found | config not found | not executable"}]
206
- }
202
+ "taskFileMechanisms": {"provided": true, "executed": ["mechanism names that were found and executed"], "skipped": [{"mechanism": "mechanism name", "reason": "tool not found | config not found | not executable"}]}
207
203
  ```
208
204
  `task_file` が指定されなかった場合は `"provided": false` とし、`executed`/`skipped` は省略。
209
205
 
@@ -163,11 +163,7 @@ coding-standardsおよびtypescript-testingスキルに従って修正を適用
163
163
  全レスポンスは `status` を共有し、`task_file` 提供時には `taskFileMechanisms` オブジェクトを含める:
164
164
 
165
165
  ```json
166
- "taskFileMechanisms": {
167
- "provided": true,
168
- "executed": ["mechanism names that were found and executed"],
169
- "skipped": [{"mechanism": "mechanism name", "reason": "tool not found | config not found | not executable"}]
170
- }
166
+ "taskFileMechanisms": {"provided": true, "executed": ["mechanism names that were found and executed"], "skipped": [{"mechanism": "mechanism name", "reason": "tool not found | config not found | not executable"}]}
171
167
  ```
172
168
  `task_file` が指定されなかった場合は `"provided": false` とし、`executed`/`skipped` は省略。
173
169
 
@@ -116,23 +116,12 @@ ADR作成条件の詳細はdocumentation-criteriaスキルに準拠。
116
116
  "fileCount": 3,
117
117
  "adrRequired": true,
118
118
  "adrReason": "該当する条件、または不要な場合はnull",
119
- "technicalConsiderations": {
120
- "constraints": ["リスト"],
121
- "risks": ["リスト"],
122
- "dependencies": ["リスト"]
123
- },
119
+ "technicalConsiderations": {"constraints": ["リスト"], "risks": ["リスト"], "dependencies": ["リスト"]},
124
120
  "scopeDependencies": [
125
- {
126
- "question": "規模に影響する具体的な質問",
127
- "impact": { "if_yes": "large", "if_no": "medium" }
128
- }
121
+ {"question": "規模に影響する具体的な質問", "impact": {"if_yes": "large", "if_no": "medium"}}
129
122
  ],
130
123
  "questions": [
131
- {
132
- "category": "boundary|existing_code|dependencies",
133
- "question": "具体的な質問",
134
- "options": ["A", "B", "C"]
135
- }
124
+ {"category": "boundary|existing_code|dependencies", "question": "具体的な質問", "options": ["A", "B", "C"]}
136
125
  ]
137
126
  }
138
127
  ```
@@ -59,24 +59,11 @@ task-analyzerスキル(frontmatterで自動読み込み)が提供するも
59
59
 
60
60
  ```json
61
61
  {
62
- "taskAnalysis": {
63
- "taskType": "実装|修正|リファクタリング|設計|品質改善",
64
- "essence": "根本目的", "estimatedFiles": 3, "scale": "small|medium|large",
65
- "extractedTags": ["implementation", "testing", "security"]
66
- },
62
+ "taskAnalysis": {"taskType": "実装|修正|リファクタリング|設計|品質改善", "essence": "根本目的", "estimatedFiles": 3, "scale": "small|medium|large", "extractedTags": ["implementation", "testing", "security"]},
67
63
  "selectedSkills": [
68
- {
69
- "skill": "coding-standards",
70
- "sections": [{"title": "セクション名", "content": "## セクション内容..."}],
71
- "reason": "必要な理由", "priority": "high"
72
- }
64
+ {"skill": "coding-standards", "sections": [{"title": "セクション名", "content": "## セクション内容..."}], "reason": "必要な理由", "priority": "high"}
73
65
  ],
74
- "metaCognitiveGuidance": {
75
- "taskEssence": "表面作業でなく根本目的の理解",
76
- "pastFailures": ["エラー修正衝動", "一度に大変更", "テスト不足"],
77
- "potentialPitfalls": ["根本原因分析なし", "段階的アプローチなし", "テストなし"],
78
- "firstStep": {"action": "最初のアクション", "rationale": "なぜ最初か"}
79
- },
66
+ "metaCognitiveGuidance": {"taskEssence": "表面作業でなく根本目的の理解", "pastFailures": ["エラー修正衝動", "一度に大変更", "テスト不足"], "potentialPitfalls": ["根本原因分析なし", "段階的アプローチなし", "テストなし"], "firstStep": {"action": "最初のアクション", "rationale": "なぜ最初か"}},
80
67
  "metaCognitiveQuestions": ["最重要品質基準は?", "類似タスクでの過去の問題は?", "どこから着手?"],
81
68
  "warningPatterns": [
82
69
  {"pattern": "一度に大変更", "risk": "高複雑性", "mitigation": "フェーズ分割"},
@@ -164,17 +164,8 @@ skills: documentation-criteria, coding-standards, technical-spec, implementation
164
164
  "entryPoints": ["/path1", "/path2"],
165
165
  "relatedFiles": ["src/feature/*"],
166
166
  "dependencies": ["UNIT-002"],
167
- "valueProfile": {
168
- "targetPersona": "この機能が誰向けか(例: 'エンドユーザー', '管理者', '開発者')",
169
- "userGoal": "この機能でユーザーが達成したいこと",
170
- "valueCategory": "属する上位機能(例: '認証', 'コンテンツ管理', 'レポーティング')"
171
- },
172
- "technicalProfile": {
173
- "primaryModules": ["src/<feature>/module-a.ts", "src/<feature>/module-b.ts"],
174
- "publicInterfaces": ["ServiceA.operation()", "ModuleB.handle()"],
175
- "dataFlowSummary": "入力元 → 主要処理経路 → 出力先",
176
- "infrastructureDeps": ["外部依存リスト"]
177
- },
167
+ "valueProfile": {"targetPersona": "この機能が誰向けか(例: 'エンドユーザー', '管理者', '開発者')", "userGoal": "この機能でユーザーが達成したいこと", "valueCategory": "属する上位機能(例: '認証', 'コンテンツ管理', 'レポーティング')"},
168
+ "technicalProfile": {"primaryModules": ["src/<feature>/module-a.ts", "src/<feature>/module-b.ts"], "publicInterfaces": ["ServiceA.operation()", "ModuleB.handle()"], "dataFlowSummary": "入力元 → 主要処理経路 → 出力先", "infrastructureDeps": ["外部依存リスト"]},
178
169
  "unitInventory": {
179
170
  "routes": [
180
171
  {"method": "POST", "path": "/api/auth/login", "handler": "AuthController.handleLogin", "file": "routes:15"}
@@ -189,28 +180,13 @@ skills: documentation-criteria, coding-standards, technical-spec, implementation
189
180
  }
190
181
  ],
191
182
  "relationships": [
192
- {
193
- "from": "UNIT-001",
194
- "to": "UNIT-002",
195
- "type": "depends_on|extends|shares_data"
196
- }
183
+ {"from": "UNIT-001", "to": "UNIT-002", "type": "depends_on|extends|shares_data"}
197
184
  ],
198
185
  "uncertainAreas": [
199
- {
200
- "area": "領域名",
201
- "reason": "不確実な理由",
202
- "suggestedAction": "推奨アクション"
203
- }
186
+ {"area": "領域名", "reason": "不確実な理由", "suggestedAction": "推奨アクション"}
204
187
  ],
205
188
  "prdUnits": [
206
- {
207
- "id": "PRD-001",
208
- "name": "PRDユニット名(ユーザー価値レベル)",
209
- "description": "この機能がユーザーに提供する価値",
210
- "sourceUnits": ["UNIT-001", "UNIT-003"],
211
- "combinedRelatedFiles": ["src/feature-a/*", "src/feature-b/*"],
212
- "combinedEntryPoints": ["/path1", "/path2", "/path3"]
213
- }
189
+ {"id": "PRD-001", "name": "PRDユニット名(ユーザー価値レベル)", "description": "この機能がユーザーに提供する価値", "sourceUnits": ["UNIT-001", "UNIT-003"], "combinedRelatedFiles": ["src/feature-a/*", "src/feature-b/*"], "combinedEntryPoints": ["/path1", "/path2", "/path3"]}
214
190
  ],
215
191
  "limitations": ["発見できなかった内容とその理由"]
216
192
  }
@@ -100,22 +100,11 @@ coding-standardsのSecurity Principlesの各原則に対して実装を検証:
100
100
  "summary": "[1-2文の要約]",
101
101
  "filesReviewed": 5,
102
102
  "findings": [
103
- {
104
- "category": "confirmed_risk|suspected_risk|defense_gap|hardening|policy",
105
- "confidence": "high|medium|low",
106
- "location": "[file:line]",
107
- "description": "[検出された具体的な問題]",
108
- "rationale": "[カテゴリ別、上記参照]",
109
- "suggestion": "[具体的な修正方法]"
110
- }
103
+ {"category": "confirmed_risk|suspected_risk|defense_gap|hardening|policy", "confidence": "high|medium|low", "location": "[file:line]", "description": "[検出された具体的な問題]", "rationale": "[カテゴリ別、上記参照]", "suggestion": "[具体的な修正方法]"}
111
104
  ],
112
105
  "notes": "[hardening/policy検出結果の要約、statusがapproved_with_notesの場合に提示]",
113
106
  "requiredFixes": [
114
- {
115
- "location": "[file:line — Fix Mode の許可リスト拡張のため file[:line] として解釈可能であること]",
116
- "issue": "[修正対象の具体的な問題 — 対応する finding から取得]",
117
- "fix": "[具体的な修正指示]"
118
- }
107
+ {"location": "[file:line — Fix Mode の許可リスト拡張のため file[:line] として解釈可能であること]", "issue": "[修正対象の具体的な問題 — 対応する finding から取得]", "fix": "[具体的な修正指示]"}
119
108
  ]
120
109
  }
121
110
  ```
@@ -152,17 +152,14 @@ description: {生成したdescription}
152
152
  {
153
153
  "mode": "creation|modification",
154
154
  "skillName": "...",
155
- "frontmatter": {
156
- "name": "...",
157
- "description": "..."
158
- },
155
+ "frontmatter": {"name": "...", "description": "..."},
159
156
  "body": "frontmatter以降のmarkdownコンテンツ全文",
160
157
  "references": [
161
- { "filename": "...", "content": "..." }
158
+ {"filename": "...", "content": "..."}
162
159
  ],
163
160
  "optimizationReport": {
164
161
  "issuesFound": [
165
- { "pattern": "BP-XXX", "severity": "P1/P2/P3", "location": "...", "transform": "..." }
162
+ {"pattern": "BP-XXX", "severity": "P1/P2/P3", "location": "...", "transform": "..."}
166
163
  ],
167
164
  "researchFindings": [],
168
165
  "lineCount": 0,
@@ -87,56 +87,20 @@ skill-optimizationの9つの編集原則に対して評価:
87
87
  "grade": "A|B|C",
88
88
  "summary": "1-2文の総合評価",
89
89
  "patternIssues": [
90
- {
91
- "pattern": "BP-XXX",
92
- "severity": "P1|P2|P3",
93
- "location": "セクション見出し",
94
- "original": "引用テキスト",
95
- "suggestedFix": "置換テキスト"
96
- }
90
+ {"pattern": "BP-XXX", "severity": "P1|P2|P3", "location": "セクション見出し", "original": "引用テキスト", "suggestedFix": "置換テキスト"}
97
91
  ],
98
92
  "patternExceptions": [
99
- {
100
- "pattern": "BP-XXX",
101
- "location": "セクション見出し",
102
- "original": "引用テキスト",
103
- "conditions": {
104
- "singleStepDestruction": "true|false + エビデンス",
105
- "callerCannotRecover": "true|false + エビデンス",
106
- "operationalNotPolicy": "true|false + エビデンス",
107
- "positiveFormBlursScope": "true|false + エビデンス"
108
- }
109
- }
93
+ {"pattern": "BP-XXX", "location": "セクション見出し", "original": "引用テキスト", "conditions": {"singleStepDestruction": "true|false + エビデンス", "callerCannotRecover": "true|false + エビデンス", "operationalNotPolicy": "true|false + エビデンス", "positiveFormBlursScope": "true|false + エビデンス"}}
110
94
  ],
111
95
  "principlesEvaluation": [
112
- {
113
- "principle": "1: コンテキスト効率",
114
- "status": "pass|partial|fail",
115
- "detail": "合格以外の場合の説明"
116
- }
96
+ {"principle": "1: コンテキスト効率", "status": "pass|partial|fail", "detail": "合格以外の場合の説明"}
117
97
  ],
118
- "progressiveDisclosure": {
119
- "tier1": "pass|fail(description品質)",
120
- "tier2": "pass|fail(本文構造)",
121
- "tier3": "pass|fail(参照構成)",
122
- "details": "問題がある場合の具体的な指摘"
123
- },
98
+ "progressiveDisclosure": {"tier1": "pass|fail(description品質)", "tier2": "pass|fail(本文構造)", "tier3": "pass|fail(参照構成)", "details": "問題がある場合の具体的な指摘"},
124
99
  "crossSkillIssues": [
125
- {
126
- "overlappingSkill": "スキル名",
127
- "description": "重複内容",
128
- "recommendation": "参照に置換 or 重複排除"
129
- }
100
+ {"overlappingSkill": "スキル名", "description": "重複内容", "recommendation": "参照に置換 or 重複排除"}
130
101
  ],
131
- "balanceAssessment": {
132
- "overOptimization": "none|minor|major",
133
- "lostExpertise": "none|minor|major",
134
- "clarityTradeOff": "none|minor|major",
135
- "descriptionQuality": "pass|needs fix"
136
- },
137
- "actionItems": [
138
- "優先度順の修正リスト(P1 → P2 → 原則)"
139
- ]
102
+ "balanceAssessment": {"overOptimization": "none|minor|major", "lostExpertise": "none|minor|major", "clarityTradeOff": "none|minor|major", "descriptionQuality": "pass|needs fix"},
103
+ "actionItems": ["優先度順の修正リスト(P1 → P2 → 原則)"]
140
104
  }
141
105
  ```
142
106
 
@@ -73,6 +73,10 @@ skills: project-context, technical-spec, coding-standards, implementation-approa
73
73
  | mitigation | 影響を軽減する対策 | 根本解決まで時間がかかる場合の暫定策 |
74
74
  | fundamental | 再発防止を含む抜本対策 | 同様の問題が繰り返し発生している場合 |
75
75
 
76
+ **隣接ケースのカバレッジ**:
77
+ - 確認済みの障害点が `bug-fix` / `regression` / `state-change` / `boundary-change` に関わる場合(デバッグフローには Change Category フィールドが無いため、障害点自体から判断する)、同一の経路・契約・永続状態・外部境界を共有するケースが同じ修正を必要とするか評価する
78
+ - 同一クラスの欠陥を共有する隣接ケースは解決スコープに含める。除外するものは residualRisks にその理由を記録する
79
+
76
80
  **生成した解決策の検証**:
77
81
  - プロジェクトルールに該当指針があるか確認
78
82
  - 指針がない領域は、WebSearchでその領域の現在のベストプラクティスを調査し、解決策が標準的アプローチに沿っているか検証
@@ -116,24 +120,10 @@ skills: project-context, technical-spec, coding-standards, implementation-approa
116
120
  },
117
121
  "solutions": [
118
122
  {
119
- "id": "S1",
120
- "name": "解決策の名前",
121
- "type": "direct|workaround|mitigation|fundamental",
122
- "description": "解決策の詳細説明",
123
- "implementation": {
124
- "approach": "実装アプローチの説明",
125
- "affectedFiles": ["変更が必要なファイル"],
126
- "dependencies": ["影響を受ける依存関係"]
127
- },
128
- "tradeoffs": {
129
- "cost": {"level": "low|medium|high", "details": "詳細"},
130
- "risk": {"level": "low|medium|high", "details": "詳細"},
131
- "scope": {"level": "low|medium|high", "details": "詳細"},
132
- "maintainability": {"level": "low|medium|high", "details": "詳細"},
133
- "certainty": {"level": "low|medium|high", "details": "詳細"}
134
- },
135
- "pros": ["メリット"],
136
- "cons": ["デメリット"]
123
+ "id": "S1", "name": "解決策の名前", "type": "direct|workaround|mitigation|fundamental", "description": "解決策の詳細説明",
124
+ "implementation": {"approach": "実装アプローチの説明", "affectedFiles": ["変更が必要なファイル"], "dependencies": ["影響を受ける依存関係"]},
125
+ "tradeoffs": {"cost": {"level": "low|medium|high", "details": "詳細"}, "risk": {"level": "low|medium|high", "details": "詳細"}, "scope": {"level": "low|medium|high", "details": "詳細"}, "maintainability": {"level": "low|medium|high", "details": "詳細"}, "certainty": {"level": "low|medium|high", "details": "詳細"}},
126
+ "pros": ["メリット"], "cons": ["デメリット"]
137
127
  }
138
128
  ],
139
129
  "recommendation": {
@@ -144,12 +134,7 @@ skills: project-context, technical-spec, coding-standards, implementation-approa
144
134
  },
145
135
  "implementationPlan": {
146
136
  "steps": [
147
- {
148
- "order": 1,
149
- "action": "具体的なアクション",
150
- "verification": "このステップの検証方法",
151
- "rollback": "問題発生時のロールバック手順"
152
- }
137
+ {"order": 1, "action": "具体的なアクション", "verification": "このステップの検証方法", "rollback": "問題発生時のロールバック手順"}
153
138
  ],
154
139
  "criticalPoints": ["特に注意すべきポイント"]
155
140
  },
@@ -102,6 +102,7 @@ implementation-approachスキルで決定された実装戦略パターンに基
102
102
  - `## Implementation Content`(タスク概要)
103
103
  - `## Target Files`
104
104
  - `## Investigation Targets`(executor が実装前に読んで理解すべきファイル)
105
+ - `## Change Category`(タスクがバグ修正・リグレッション・状態変更・境界変更の場合 — 下記「Change Category の分類」参照)
105
106
  - `## Implementation Steps (TDD: Red-Green-Refactor)`
106
107
  - `## Quality Assurance Mechanisms`(作業計画書ヘッダーから導出 — 下記「品質保証メカニズムの伝播」参照)
107
108
  - `## Operation Verification Methods`(作業計画書の Verification Strategy から導出)
@@ -222,6 +223,21 @@ implementation-approachスキルで決定された実装戦略パターンに基
222
223
  3. **カバー範囲未指定の場合は全タスクに記載**: メカニズムのカバー範囲が指定されていない場合(project-wide)、すべてのタスクに含める
223
224
  4. **該当なしの場合は省略**: タスクの Target Files に該当するメカニズムがなければ `## Quality Assurance Mechanisms` セクションを省略
224
225
 
226
+ ## Change Category の分類
227
+
228
+ タスクが観測された振る舞いを修正する、または状態や境界の振る舞いを変える場合、executor と下流のレビュアーがタスクの意図を推測し直すのではなくフィールド値からスコープ限定の隣接ケース走査を実行できるよう、これを分類する:
229
+
230
+ 1. **作業計画書と Design Doc から分類する**。タスクは複数のカテゴリに該当しうる(例: 永続状態の境界を変えるリグレッション修正)。該当する値をすべて記録する:
231
+ - `bug-fix`: 観測された誤った振る舞いを修正する
232
+ - `regression`: 過去の変更が壊した振る舞いを復元する
233
+ - `state-change`: 状態の書き込み・遷移・永続化のされ方を変える
234
+ - `boundary-change`: 外部・パッケージ間・永続化の境界で、公開または利用される契約を変える
235
+ 2. **タスクの `Change Category` フィールドに**該当する値をすべてカンマ区切りで記入する(task-template 参照)。
236
+ 3. **隣接ケースを Investigation Targets に追加する**。該当する各カテゴリについて、変更と同一の経路・契約・永続状態・外部境界を共有するファイル(影響を受ける境界の両側のオーナーモジュールを含む)を追加し、executor が同一クラスの欠陥を走査できるようにする。該当する全カテゴリにわたって対象を統合する。
237
+ 4. **該当する場合のみ適用する**。純粋な追加・設定・スキャフォールディングのタスクは既定で `Change Category` フィールドを持たず、この伝播をスキップする。
238
+
239
+ これは AC ごとの境界パス証明(AC の*内側*の境界パスを証明する)とは別物である。Change Category は、タスクの AC の*外側*にありながらその経路・契約・状態・境界を共有するケースの走査を駆動する。
240
+
225
241
  ## タスクファイルテンプレート
226
242
 
227
243
  詳細はdocumentation-criteriaスキルのタスクテンプレートを参照。
@@ -359,6 +375,7 @@ implementation-approachスキルで決定された実装戦略パターンに基
359
375
  - [ ] 実装効率と手戻り防止(共通処理の事前識別、影響範囲の明確化)
360
376
  - [ ] 全タスクに調査対象が指定されている(具体的なファイルパス、曖昧なカテゴリではない)
361
377
  - [ ] 主張を実装する各タスクに Proof Obligations を記録(主要な故障モード + 検証する境界)
378
+ - [ ] bug-fix / regression / state-change / boundary-change のタスクに Change Category を設定し、隣接する経路/境界のオーナーを Investigation Targets に追加済み
362
379
  - [ ] 作業計画書ヘッダーの品質保証メカニズムを該当タスクに伝播済み
363
380
 
364
381
  ## タスク設計の原則
@@ -183,6 +183,17 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
183
183
  2. **既存実装調査**:同ドメイン・責務で類似コンポーネント・hook を検索
184
184
  3. **判定実行**:上記「必須判断基準」に従い継続・エスカレーション判定
185
185
 
186
+ #### 隣接ケース走査(タスクファイルの `Change Category` フィールドが `bug-fix` / `regression` / `state-change` / `boundary-change` のいずれかに設定されている場合は必須)
187
+
188
+ 実装前確認の後、Binding Decision チェックの前に実行する。このステップはタスク分解が書き込んだフィールド値で発火する — フィールド値を読み、走査を適用するかの判断はそれを正本とする。
189
+
190
+ 1. Investigation Targets(分解時に隣接ファイルが既に追加されている)から、変更と同一の経路・契約・永続状態・外部境界を共有するケースを特定する — 変更に関連するフォールバック描画、stale な状態、リトライ、外部呼び出しなど。
191
+ 2. それぞれが、このタスクが修正するのと同一クラスの欠陥を抱えているか確認する。
192
+ 3. 各残余をスコープに応じて処理する:
193
+ - **Target Files スコープ内** → 残余をこのタスクの失敗するテストと実装に取り込む。
194
+ - **修正を要すると確認できたスコープ外の兄弟ケース** → `out_of_scope_file` エスカレーション(Target Files 外のファイルに触れる際の標準経路)を発行し、ユーザーが Target Files を拡張するか follow-up タスクに切り出すかを判断できるようにする。これにより、確認済みの隣接欠陥は明示的な判断に回される。
195
+ - **修正を要するか確認できない関連残余** → タスクファイルの Investigation Notes に記録し、code-reviewer の隣接ケースチェックが実装に対して検証できるようにする。
196
+
186
197
  #### Binding Decision チェック(タスクファイルに Binding Decisions セクションがある場合は必須)
187
198
 
188
199
  このチェックは実装前確認の後、TDDサイクルの前に実行される。タスクファイルに1行以上を持つ Binding Decisions セクションがある場合のみ適用される。
@@ -278,20 +289,8 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
278
289
  "testsAdded": ["src/components/Button/Button.test.tsx"],
279
290
  "requiresTestReview": false,
280
291
  "newTestsPassed": true,
281
- "progressUpdated": {
282
- "taskFile": "完了項目5/8",
283
- "workPlan": "該当箇所更新済み",
284
- "designDoc": "進捗セクション更新済み or N/A"
285
- },
286
- "runnableCheck": {
287
- "level": "L1: 単体テスト (React Testing Library) / L2: 統合テスト / L3: E2Eテスト",
288
- "executed": true,
289
- "command": "test -- Button.test.tsx",
290
- "result": "passed / failed / skipped",
291
- "substance": "substantive | non_substantive | null (非テスト系の検証)",
292
- "substanceIssue": "substantive または非テスト系の場合は null。non_substantive の場合は原因と位置を記載",
293
- "reason": "テスト実行理由・確認内容"
294
- },
292
+ "progressUpdated": {"taskFile": "完了項目5/8", "workPlan": "該当箇所更新済み", "designDoc": "進捗セクション更新済み or N/A"},
293
+ "runnableCheck": {"level": "L1: 単体テスト (React Testing Library) / L2: 統合テスト / L3: E2Eテスト", "executed": true, "command": "test -- Button.test.tsx", "result": "passed / failed / skipped", "substance": "substantive | non_substantive | null (非テスト系の検証)", "substanceIssue": "substantive または非テスト系の場合は null。non_substantive の場合は原因と位置を記載", "reason": "テスト実行理由・確認内容"},
295
294
  "readyForQualityCheck": true,
296
295
  "nextActions": "品質チェック工程による全体品質検証"
297
296
  }
@@ -334,11 +333,7 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
334
333
  "reason": "Out of scope file",
335
334
  "taskName": "[タスク名]",
336
335
  "escalation_type": "out_of_scope_file",
337
- "details": {
338
- "file_path": "[変更を試みたパス]",
339
- "allowed_list": ["[Target Files / タスクファイル / 作業計画書 / Provides の和集合]"],
340
- "modification_reason": "[なぜ変更を試みたか]"
341
- },
336
+ "details": {"file_path": "[変更を試みたパス]", "allowed_list": ["[Target Files / タスクファイル / 作業計画書 / Provides の和集合]"], "modification_reason": "[なぜ変更を試みたか]"},
342
337
  "user_decision_required": true,
343
338
  "suggested_options": ["Target Files に追加してリトライ", "別タスクに分割", "アプローチを再検討"]
344
339
  }
@@ -183,6 +183,17 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
183
183
  2. **既存実装調査**:同ドメイン・責務で類似機能を検索
184
184
  3. **判定実行**:上記「必須判断基準」に従い継続・エスカレーション判定
185
185
 
186
+ #### 隣接ケース走査(タスクファイルの `Change Category` フィールドが `bug-fix` / `regression` / `state-change` / `boundary-change` のいずれかに設定されている場合は必須)
187
+
188
+ 実装前確認の後、Binding Decision チェックの前に実行する。このステップはタスク分解が書き込んだフィールド値で発火する — フィールド値を読み、走査を適用するかの判断はそれを正本とする。
189
+
190
+ 1. Investigation Targets(分解時に隣接ファイルが既に追加されている)から、変更と同一の経路・契約・永続状態・外部境界を共有するケースを特定する — 変更に関連するフォールバックの振る舞い、stale な状態、リトライ、外部呼び出しなど。
191
+ 2. それぞれが、このタスクが修正するのと同一クラスの欠陥を抱えているか確認する。
192
+ 3. 各残余をスコープに応じて処理する:
193
+ - **Target Files スコープ内** → 残余をこのタスクの失敗するテストと実装に取り込む。
194
+ - **修正を要すると確認できたスコープ外の兄弟ケース** → `out_of_scope_file` エスカレーション(Target Files 外のファイルに触れる際の標準経路)を発行し、ユーザーが Target Files を拡張するか follow-up タスクに切り出すかを判断できるようにする。これにより、確認済みの隣接欠陥は明示的な判断に回される。
195
+ - **修正を要するか確認できない関連残余** → タスクファイルの Investigation Notes に記録し、code-reviewer の隣接ケースチェックが実装に対して検証できるようにする。
196
+
186
197
  #### Binding Decision チェック(タスクファイルに Binding Decisions セクションがある場合は必須)
187
198
 
188
199
  このチェックは実装前確認の後、TDDサイクルの前に実行される。タスクファイルに1行以上を持つ Binding Decisions セクションがある場合のみ適用される。
@@ -281,20 +292,8 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
281
292
  "testsAdded": ["作成したテストファイルパス"],
282
293
  "requiresTestReview": true,
283
294
  "newTestsPassed": true,
284
- "progressUpdated": {
285
- "taskFile": "完了項目5/8",
286
- "workPlan": "該当箇所更新済み",
287
- "designDoc": "進捗セクション更新済み or N/A"
288
- },
289
- "runnableCheck": {
290
- "level": "L1: 単体テスト / L2: 統合テスト / L3: E2Eテスト",
291
- "executed": true,
292
- "command": "実行したテストコマンド",
293
- "result": "passed / failed / skipped",
294
- "substance": "substantive | non_substantive | null (非テスト系の検証)",
295
- "substanceIssue": "substantive または非テスト系の場合は null。non_substantive の場合は原因と位置を記載",
296
- "reason": "テスト実行理由・確認内容"
297
- },
295
+ "progressUpdated": {"taskFile": "完了項目5/8", "workPlan": "該当箇所更新済み", "designDoc": "進捗セクション更新済み or N/A"},
296
+ "runnableCheck": {"level": "L1: 単体テスト / L2: 統合テスト / L3: E2Eテスト", "executed": true, "command": "実行したテストコマンド", "result": "passed / failed / skipped", "substance": "substantive | non_substantive | null (非テスト系の検証)", "substanceIssue": "substantive または非テスト系の場合は null。non_substantive の場合は原因と位置を記載", "reason": "テスト実行理由・確認内容"},
298
297
  "readyForQualityCheck": true,
299
298
  "nextActions": "品質チェック工程による全体品質検証"
300
299
  }
@@ -337,11 +336,7 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
337
336
  "reason": "Out of scope file",
338
337
  "taskName": "[タスク名]",
339
338
  "escalation_type": "out_of_scope_file",
340
- "details": {
341
- "file_path": "[変更を試みたパス]",
342
- "allowed_list": ["[Target Files / タスクファイル / 作業計画書 / Provides の和集合]"],
343
- "modification_reason": "[なぜ変更を試みたか]"
344
- },
339
+ "details": {"file_path": "[変更を試みたパス]", "allowed_list": ["[Target Files / タスクファイル / 作業計画書 / Provides の和集合]"], "modification_reason": "[なぜ変更を試みたか]"},
345
340
  "user_decision_required": true,
346
341
  "suggested_options": ["Target Files に追加してリトライ", "別タスクに分割", "アプローチを再検討"]
347
342
  }