create-ai-project 1.23.3 → 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 (77) hide show
  1. package/.claude/agents-en/acceptance-test-generator.md +8 -31
  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 +4 -8
  9. package/.claude/agents-en/quality-fixer.md +4 -8
  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 +19 -1
  18. package/.claude/agents-en/task-executor-frontend.md +15 -20
  19. package/.claude/agents-en/task-executor.md +15 -20
  20. package/.claude/agents-en/ui-analyzer.md +16 -115
  21. package/.claude/agents-en/verifier.md +9 -53
  22. package/.claude/agents-en/work-planner.md +2 -5
  23. package/.claude/agents-ja/acceptance-test-generator.md +8 -31
  24. package/.claude/agents-ja/code-reviewer.md +15 -24
  25. package/.claude/agents-ja/code-verifier.md +3 -32
  26. package/.claude/agents-ja/codebase-analyzer.md +10 -78
  27. package/.claude/agents-ja/document-reviewer.md +10 -57
  28. package/.claude/agents-ja/integration-test-reviewer.md +6 -37
  29. package/.claude/agents-ja/investigator.md +6 -59
  30. package/.claude/agents-ja/quality-fixer-frontend.md +4 -8
  31. package/.claude/agents-ja/quality-fixer.md +4 -8
  32. package/.claude/agents-ja/requirement-analyzer.md +3 -14
  33. package/.claude/agents-ja/rule-advisor.md +3 -16
  34. package/.claude/agents-ja/scope-discoverer.md +5 -29
  35. package/.claude/agents-ja/security-reviewer.md +2 -13
  36. package/.claude/agents-ja/skill-creator.md +3 -6
  37. package/.claude/agents-ja/skill-reviewer.md +7 -43
  38. package/.claude/agents-ja/solver.md +9 -24
  39. package/.claude/agents-ja/task-decomposer.md +19 -1
  40. package/.claude/agents-ja/task-executor-frontend.md +15 -20
  41. package/.claude/agents-ja/task-executor.md +15 -20
  42. package/.claude/agents-ja/ui-analyzer.md +16 -115
  43. package/.claude/agents-ja/verifier.md +9 -53
  44. package/.claude/agents-ja/work-planner.md +2 -5
  45. package/.claude/commands-en/build.md +6 -15
  46. package/.claude/commands-en/front-build.md +4 -13
  47. package/.claude/commands-en/implement.md +2 -15
  48. package/.claude/commands-en/plan.md +7 -2
  49. package/.claude/commands-en/prepare-implementation.md +7 -17
  50. package/.claude/commands-en/sync-skills.md +3 -3
  51. package/.claude/commands-ja/build.md +7 -16
  52. package/.claude/commands-ja/front-build.md +4 -13
  53. package/.claude/commands-ja/implement.md +2 -15
  54. package/.claude/commands-ja/plan.md +6 -1
  55. package/.claude/commands-ja/prepare-implementation.md +8 -18
  56. package/.claude/commands-ja/sync-skills.md +3 -3
  57. package/.claude/skills-en/documentation-criteria/references/plan-template.md +1 -3
  58. package/.claude/skills-en/documentation-criteria/references/task-template.md +8 -0
  59. package/.claude/skills-en/frontend-technical-spec/SKILL.md +4 -8
  60. package/.claude/skills-en/frontend-typescript-rules/SKILL.md +4 -2
  61. package/.claude/skills-en/frontend-typescript-testing/SKILL.md +5 -11
  62. package/.claude/skills-en/integration-e2e-testing/SKILL.md +2 -0
  63. package/.claude/skills-en/subagents-orchestration-guide/SKILL.md +2 -7
  64. package/.claude/skills-en/technical-spec/SKILL.md +4 -3
  65. package/.claude/skills-en/typescript-testing/SKILL.md +4 -4
  66. package/.claude/skills-ja/documentation-criteria/references/plan-template.md +1 -3
  67. package/.claude/skills-ja/documentation-criteria/references/task-template.md +8 -0
  68. package/.claude/skills-ja/frontend-technical-spec/SKILL.md +4 -8
  69. package/.claude/skills-ja/frontend-typescript-rules/SKILL.md +4 -2
  70. package/.claude/skills-ja/frontend-typescript-testing/SKILL.md +5 -11
  71. package/.claude/skills-ja/integration-e2e-testing/SKILL.md +2 -0
  72. package/.claude/skills-ja/subagents-orchestration-guide/SKILL.md +2 -7
  73. package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +3 -3
  74. package/.claude/skills-ja/technical-spec/SKILL.md +4 -3
  75. package/.claude/skills-ja/typescript-testing/SKILL.md +4 -4
  76. package/CHANGELOG.md +16 -0
  77. package/package.json +1 -1
@@ -163,11 +163,7 @@ Final message: exactly one JSON object matching the schema below (begins with `{
163
163
  All responses share `status` plus a `taskFileMechanisms` object when `task_file` is provided:
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
  When `task_file` is not provided, set `"provided": false` and omit `executed`/`skipped`.
173
169
 
@@ -205,10 +201,10 @@ Minimal example (`blocked` — Variant B, missing prerequisites):
205
201
  During execution, report progress between tool calls using this format:
206
202
 
207
203
  ```markdown
208
- 📋 Phase [Number]: [Phase Name]
204
+ Phase [Number]: [Phase Name]
209
205
 
210
206
  Executed Command: [Command]
211
- Result: Errors [Count] / ⚠️ Warnings [Count] / Pass
207
+ Result: Errors [Count] / Warnings [Count] / Pass
212
208
 
213
209
  Issues requiring fixes:
214
210
  1. [Issue Summary]
@@ -217,7 +213,7 @@ Issues requiring fixes:
217
213
  - Fix Method: [Specific Fix Approach]
218
214
 
219
215
  [After Fix Implementation]
220
- Phase [Number] Complete! Proceeding to next phase.
216
+ Phase [Number] Complete! Proceeding to next phase.
221
217
  ```
222
218
 
223
219
  This is intermediate output only. The final response must be the JSON result (Step 6).
@@ -116,23 +116,12 @@ Final message: exactly one JSON object matching the schema below (begins with `{
116
116
  "fileCount": 3,
117
117
  "adrRequired": true,
118
118
  "adrReason": "specific condition met, or null if not required",
119
- "technicalConsiderations": {
120
- "constraints": ["list"],
121
- "risks": ["list"],
122
- "dependencies": ["list"]
123
- },
119
+ "technicalConsiderations": {"constraints": ["list"], "risks": ["list"], "dependencies": ["list"]},
124
120
  "scopeDependencies": [
125
- {
126
- "question": "specific question that affects scale",
127
- "impact": { "if_yes": "large", "if_no": "medium" }
128
- }
121
+ {"question": "specific question that affects scale", "impact": {"if_yes": "large", "if_no": "medium"}}
129
122
  ],
130
123
  "questions": [
131
- {
132
- "category": "boundary|existing_code|dependencies",
133
- "question": "specific question",
134
- "options": ["A", "B", "C"]
135
- }
124
+ {"category": "boundary|existing_code|dependencies", "question": "specific question", "options": ["A", "B", "C"]}
136
125
  ]
137
126
  }
138
127
  ```
@@ -59,24 +59,11 @@ Return structured JSON:
59
59
 
60
60
  ```json
61
61
  {
62
- "taskAnalysis": {
63
- "taskType": "implementation|fix|refactoring|design|quality-improvement",
64
- "essence": "Fundamental purpose", "estimatedFiles": 3, "scale": "small|medium|large",
65
- "extractedTags": ["implementation", "testing", "security"]
66
- },
62
+ "taskAnalysis": {"taskType": "implementation|fix|refactoring|design|quality-improvement", "essence": "Fundamental purpose", "estimatedFiles": 3, "scale": "small|medium|large", "extractedTags": ["implementation", "testing", "security"]},
67
63
  "selectedSkills": [
68
- {
69
- "skill": "coding-standards",
70
- "sections": [{"title": "Section Name", "content": "## Section content..."}],
71
- "reason": "Why needed", "priority": "high"
72
- }
64
+ {"skill": "coding-standards", "sections": [{"title": "Section Name", "content": "## Section content..."}], "reason": "Why needed", "priority": "high"}
73
65
  ],
74
- "metaCognitiveGuidance": {
75
- "taskEssence": "Understanding fundamental purpose, not surface work",
76
- "pastFailures": ["error-fixing impulse", "large changes at once", "insufficient testing"],
77
- "potentialPitfalls": ["No root cause analysis", "No phased approach", "No tests"],
78
- "firstStep": {"action": "First action", "rationale": "Why first"}
79
- },
66
+ "metaCognitiveGuidance": {"taskEssence": "Understanding fundamental purpose, not surface work", "pastFailures": ["error-fixing impulse", "large changes at once", "insufficient testing"], "potentialPitfalls": ["No root cause analysis", "No phased approach", "No tests"], "firstStep": {"action": "First action", "rationale": "Why first"}},
80
67
  "metaCognitiveQuestions": ["Most important quality criterion?", "Past problems in similar tasks?", "Which part first?"],
81
68
  "warningPatterns": [
82
69
  {"pattern": "Large changes at once", "risk": "High complexity", "mitigation": "Split into phases"},
@@ -164,17 +164,8 @@ Final message: exactly one JSON object matching the schema below (begins with `{
164
164
  "entryPoints": ["/path1", "/path2"],
165
165
  "relatedFiles": ["src/feature/*"],
166
166
  "dependencies": ["UNIT-002"],
167
- "valueProfile": {
168
- "targetPersona": "Who this feature serves (e.g., 'end user', 'admin', 'developer')",
169
- "userGoal": "What the user is trying to accomplish with this feature",
170
- "valueCategory": "High-level capability this belongs to (e.g., 'Authentication', 'Content Management', 'Reporting')"
171
- },
172
- "technicalProfile": {
173
- "primaryModules": ["src/<feature>/module-a.ts", "src/<feature>/module-b.ts"],
174
- "publicInterfaces": ["ServiceA.operation()", "ModuleB.handle()"],
175
- "dataFlowSummary": "Input source → core processing path → output destination",
176
- "infrastructureDeps": ["external dependency list"]
177
- },
167
+ "valueProfile": {"targetPersona": "Who this feature serves (e.g., 'end user', 'admin', 'developer')", "userGoal": "What the user is trying to accomplish with this feature", "valueCategory": "High-level capability this belongs to (e.g., 'Authentication', 'Content Management', 'Reporting')"},
168
+ "technicalProfile": {"primaryModules": ["src/<feature>/module-a.ts", "src/<feature>/module-b.ts"], "publicInterfaces": ["ServiceA.operation()", "ModuleB.handle()"], "dataFlowSummary": "Input source → core processing path → output destination", "infrastructureDeps": ["external dependency list"]},
178
169
  "unitInventory": {
179
170
  "routes": [
180
171
  {"method": "POST", "path": "/api/auth/login", "handler": "AuthController.handleLogin", "file": "routes:15"}
@@ -189,28 +180,13 @@ Final message: exactly one JSON object matching the schema below (begins with `{
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": "Area name",
201
- "reason": "Why uncertain",
202
- "suggestedAction": "What to do"
203
- }
186
+ {"area": "Area name", "reason": "Why uncertain", "suggestedAction": "What to do"}
204
187
  ],
205
188
  "prdUnits": [
206
- {
207
- "id": "PRD-001",
208
- "name": "PRD unit name (user-value level)",
209
- "description": "What this capability delivers to the user",
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 unit name (user-value level)", "description": "What this capability delivers to the user", "sourceUnits": ["UNIT-001", "UNIT-003"], "combinedRelatedFiles": ["src/feature-a/*", "src/feature-b/*"], "combinedEntryPoints": ["/path1", "/path2", "/path3"]}
214
190
  ],
215
191
  "limitations": ["What could not be discovered and why"]
216
192
  }
@@ -100,22 +100,11 @@ Final message: exactly one JSON object matching the schema below (begins with `{
100
100
  "summary": "[1-2 sentence summary]",
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": "[specific issue found]",
108
- "rationale": "[category-specific, see Category-Specific Rationale]",
109
- "suggestion": "[specific fix]"
110
- }
103
+ {"category": "confirmed_risk|suspected_risk|defense_gap|hardening|policy", "confidence": "high|medium|low", "location": "[file:line]", "description": "[specific issue found]", "rationale": "[category-specific, see Category-Specific Rationale]", "suggestion": "[specific fix]"}
111
104
  ],
112
105
  "notes": "[summary of hardening/policy findings for completion report, present when status is approved_with_notes]",
113
106
  "requiredFixes": [
114
- {
115
- "location": "[file:line — parseable as file[:line] for Fix Mode allowed-list expansion]",
116
- "issue": "[specific issue to fix — drawn from the corresponding finding]",
117
- "fix": "[specific fix instruction]"
118
- }
107
+ {"location": "[file:line — parseable as file[:line] for Fix Mode allowed-list expansion]", "issue": "[specific issue to fix — drawn from the corresponding finding]", "fix": "[specific fix instruction]"}
119
108
  ]
120
109
  }
121
110
  ```
@@ -152,17 +152,14 @@ Return results as structured JSON:
152
152
  {
153
153
  "mode": "creation|modification",
154
154
  "skillName": "...",
155
- "frontmatter": {
156
- "name": "...",
157
- "description": "..."
158
- },
155
+ "frontmatter": {"name": "...", "description": "..."},
159
156
  "body": "full markdown content after frontmatter",
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 @@ Return results as structured JSON:
87
87
  "grade": "A|B|C",
88
88
  "summary": "1-2 sentence overall assessment",
89
89
  "patternIssues": [
90
- {
91
- "pattern": "BP-XXX",
92
- "severity": "P1|P2|P3",
93
- "location": "section heading",
94
- "original": "quoted text",
95
- "suggestedFix": "replacement text"
96
- }
90
+ {"pattern": "BP-XXX", "severity": "P1|P2|P3", "location": "section heading", "original": "quoted text", "suggestedFix": "replacement text"}
97
91
  ],
98
92
  "patternExceptions": [
99
- {
100
- "pattern": "BP-XXX",
101
- "location": "section heading",
102
- "original": "quoted text",
103
- "conditions": {
104
- "singleStepDestruction": "true|false + evidence",
105
- "callerCannotRecover": "true|false + evidence",
106
- "operationalNotPolicy": "true|false + evidence",
107
- "positiveFormBlursScope": "true|false + evidence"
108
- }
109
- }
93
+ {"pattern": "BP-XXX", "location": "section heading", "original": "quoted text", "conditions": {"singleStepDestruction": "true|false + evidence", "callerCannotRecover": "true|false + evidence", "operationalNotPolicy": "true|false + evidence", "positiveFormBlursScope": "true|false + evidence"}}
110
94
  ],
111
95
  "principlesEvaluation": [
112
- {
113
- "principle": "1: Context efficiency",
114
- "status": "pass|partial|fail",
115
- "detail": "explanation if not pass"
116
- }
96
+ {"principle": "1: Context efficiency", "status": "pass|partial|fail", "detail": "explanation if not pass"}
117
97
  ],
118
- "progressiveDisclosure": {
119
- "tier1": "pass|fail (description quality)",
120
- "tier2": "pass|fail (body structure)",
121
- "tier3": "pass|fail (reference organization)",
122
- "details": "specific issues if any"
123
- },
98
+ "progressiveDisclosure": {"tier1": "pass|fail (description quality)", "tier2": "pass|fail (body structure)", "tier3": "pass|fail (reference organization)", "details": "specific issues if any"},
124
99
  "crossSkillIssues": [
125
- {
126
- "overlappingSkill": "skill-name",
127
- "description": "what overlaps",
128
- "recommendation": "reference or deduplicate"
129
- }
100
+ {"overlappingSkill": "skill-name", "description": "what overlaps", "recommendation": "reference or deduplicate"}
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
- "Prioritized list of fixes (P1 first, then P2, then principles)"
139
- ]
102
+ "balanceAssessment": {"overOptimization": "none|minor|major", "lostExpertise": "none|minor|major", "clarityTradeOff": "none|minor|major", "descriptionQuality": "pass|needs fix"},
103
+ "actionItems": ["Prioritized list of fixes (P1 first, then P2, then principles)"]
140
104
  }
141
105
  ```
142
106
 
@@ -73,6 +73,10 @@ Generate at least 3 solutions from the following perspectives:
73
73
  | mitigation | Measures to reduce impact | Temporary measure while waiting for root fix |
74
74
  | fundamental | Comprehensive fix including recurrence prevention | When similar problems have occurred repeatedly |
75
75
 
76
+ **Adjacent Case Coverage**:
77
+ - When the confirmed failure point concerns a `bug-fix`, `regression`, `state-change`, or `boundary-change` (the debugging flow carries no Change Category field, so judge these from the failure point itself), evaluate whether cases sharing the same path, contract, persisted state, or external boundary need the same fix
78
+ - Include those adjacent cases in the solution scope when they share the same class of defect; record in residualRisks why any are excluded
79
+
76
80
  **Generated Solution Verification**:
77
81
  - Check if project rules have applicable guidelines
78
82
  - For areas without guidelines, research current best practices via WebSearch to verify solutions align with standard approaches
@@ -116,24 +120,10 @@ Final message: exactly one JSON object matching the schema below (begins with `{
116
120
  },
117
121
  "solutions": [
118
122
  {
119
- "id": "S1",
120
- "name": "Solution name",
121
- "type": "direct|workaround|mitigation|fundamental",
122
- "description": "Detailed solution description",
123
- "implementation": {
124
- "approach": "Implementation approach description",
125
- "affectedFiles": ["Files requiring changes"],
126
- "dependencies": ["Affected dependencies"]
127
- },
128
- "tradeoffs": {
129
- "cost": {"level": "low|medium|high", "details": "Details"},
130
- "risk": {"level": "low|medium|high", "details": "Details"},
131
- "scope": {"level": "low|medium|high", "details": "Details"},
132
- "maintainability": {"level": "low|medium|high", "details": "Details"},
133
- "certainty": {"level": "low|medium|high", "details": "Details"}
134
- },
135
- "pros": ["Advantages"],
136
- "cons": ["Disadvantages"]
123
+ "id": "S1", "name": "Solution name", "type": "direct|workaround|mitigation|fundamental", "description": "Detailed solution description",
124
+ "implementation": {"approach": "Implementation approach description", "affectedFiles": ["Files requiring changes"], "dependencies": ["Affected dependencies"]},
125
+ "tradeoffs": {"cost": {"level": "low|medium|high", "details": "Details"}, "risk": {"level": "low|medium|high", "details": "Details"}, "scope": {"level": "low|medium|high", "details": "Details"}, "maintainability": {"level": "low|medium|high", "details": "Details"}, "certainty": {"level": "low|medium|high", "details": "Details"}},
126
+ "pros": ["Advantages"], "cons": ["Disadvantages"]
137
127
  }
138
128
  ],
139
129
  "recommendation": {
@@ -144,12 +134,7 @@ Final message: exactly one JSON object matching the schema below (begins with `{
144
134
  },
145
135
  "implementationPlan": {
146
136
  "steps": [
147
- {
148
- "order": 1,
149
- "action": "Specific action",
150
- "verification": "How to verify this step",
151
- "rollback": "Rollback procedure if problems occur"
152
- }
137
+ {"order": 1, "action": "Specific action", "verification": "How to verify this step", "rollback": "Rollback procedure if problems occur"}
153
138
  ],
154
139
  "criticalPoints": ["Points requiring special attention"]
155
140
  },
@@ -65,6 +65,7 @@ Decompose tasks based on implementation strategy patterns determined in implemen
65
65
  2. **Plan Analysis and Overall Design**
66
66
  - Confirm phase structure
67
67
  - Extract task list
68
+ - Skip any task already checked off (`[x]`) and annotated as committed (e.g. a Phase 0 resolved by the prepare-implementation recipe) — its work is already in the codebase. Generate task files only for outstanding (`[ ]`) tasks so completed work is not regenerated or re-executed
68
69
  - Identify dependencies
69
70
  - **Overall Optimization Considerations**
70
71
  - Identify common processing (prevent redundant implementation)
@@ -101,6 +102,7 @@ Decompose tasks based on implementation strategy patterns determined in implemen
101
102
  - Task overview
102
103
  - Target files
103
104
  - **Investigation Targets** (what the executor must read and understand before implementing)
105
+ - **Change Category** (when the task is a bug fix / regression / state-change / boundary-change — see Change Category Classification below)
104
106
  - Concrete implementation steps
105
107
  - **Quality Assurance Mechanisms** (derived from work plan header — see Quality Assurance Mechanism Propagation below)
106
108
  - **Operation Verification Methods** (derived from Verification Strategy in work plan)
@@ -221,6 +223,21 @@ When the work plan header includes a Quality Assurance Mechanisms table, propaga
221
223
  3. **Include all if coverage is unspecified**: If a mechanism has no specific file coverage (applies project-wide), include it in every task
222
224
  4. **Omit when no match**: If no mechanisms match a task's target files, omit the "Quality Assurance Mechanisms" section from that task
223
225
 
226
+ ## Change Category Classification
227
+
228
+ When a task corrects observed behavior or alters how state or a boundary behaves, classify it so the executor and downstream reviewers run a scoped adjacent-case sweep from the field value, rather than re-inferring the task's intent:
229
+
230
+ 1. **Classify from the work plan and Design Doc**. A task can match more than one category (e.g., a regression fix that changes a persisted-state boundary); record every value that applies:
231
+ - `bug-fix`: corrects observed incorrect behavior
232
+ - `regression`: restores behavior a prior change broke
233
+ - `state-change`: alters how state is written, transitioned, or persisted
234
+ - `boundary-change`: changes a published or consumed contract at an external, cross-package, or persisted boundary
235
+ 2. **Populate the task's `Change Category` field** with all matched values, comma-separated (see task template).
236
+ 3. **Extend Investigation Targets with the adjacent cases**. For every matched category, add the files sharing the same path, contract, persisted state, or external boundary as the change — including the owner module on both sides of an affected boundary — so the executor can sweep them for the same class of defect. Union the targets across all matched categories.
237
+ 4. **Apply only on a match**. Purely additive, config, or scaffolding tasks default to no `Change Category` field and skip this propagation.
238
+
239
+ This is distinct from per-AC boundary-path proof (which proves a boundary path *within* an AC): Change Category drives a sweep of cases that sit *outside* the task's ACs but share its path, contract, state, or boundary.
240
+
224
241
  ## Task File Template
225
242
 
226
243
  See task template in documentation-criteria skill for details.
@@ -287,7 +304,7 @@ Task 3: [Content]
287
304
  ### Decomposition Completion Report
288
305
 
289
306
  ```markdown
290
- 📋 Task Decomposition Complete
307
+ Task Decomposition Complete
291
308
 
292
309
  Plan Document: [Filename]
293
310
  Overall Design Document: _overview-[plan-name].md
@@ -358,6 +375,7 @@ Please execute decomposed tasks according to the order.
358
375
  - [ ] Implementation efficiency and rework prevention (pre-identification of common processing, clarification of impact scope)
359
376
  - [ ] Investigation Targets specified for every task (specific file paths, not vague categories)
360
377
  - [ ] Proof Obligations recorded for each claim-implementing task (primary failure mode + boundary to exercise)
378
+ - [ ] Change Category set for bug-fix / regression / state-change / boundary-change tasks, with adjacent path/boundary owners added to Investigation Targets
361
379
  - [ ] Quality Assurance Mechanisms from work plan header propagated to relevant tasks
362
380
 
363
381
  ## Task Design Principles
@@ -116,7 +116,7 @@ Internal detail optimization (variable names, logic order); specs not in Design
116
116
 
117
117
  ## Responsibilities, Authority, and Boundaries
118
118
 
119
- **In scope**: Read task files from `docs/plans/tasks/`, review dependency deliverables listed in task "Metadata", create React function components and React Testing Library tests, co-locate tests with components, apply Red→Green→Refactor TDD, update progress checkboxes (task file always; work plan and overall design only when those files exist — at small scale only the task file exists), produce research deliverables specified in `Provides`. State transitions: `[ ]` → `[🔄]` → `[x]`.
119
+ **In scope**: Read task files from `docs/plans/tasks/`, review dependency deliverables listed in task "Metadata", create React function components and React Testing Library tests, co-locate tests with components, apply Red→Green→Refactor TDD, update progress checkboxes (task file always; work plan and overall design only when those files exist — at small scale only the task file exists), produce research deliverables specified in `Provides`. State transitions: `[ ]` → `[x]`.
120
120
 
121
121
  **Out of scope (always)**: Overall quality checks (delegated to quality assurance), commit creation (after quality checks), forcing implementation when Design Doc cannot be satisfied (always escalate), class components (deprecated in modern React).
122
122
 
@@ -183,6 +183,17 @@ This gate runs only when the task file's "Investigation Targets" section lists a
183
183
  2. **Investigate existing implementations**: Search for similar components/hooks in same domain/responsibility
184
184
  3. **Execute determination**: Determine continue/escalation per "Mandatory Judgment Criteria" above
185
185
 
186
+ #### Adjacent Case Sweep (Required when the task file has a `Change Category` field set to one or more of `bug-fix`, `regression`, `state-change`, `boundary-change`)
187
+
188
+ Runs after Pre-implementation Verification, before the Binding Decision Check. This step fires on the field value the task decomposition wrote — read the field value and treat it as authoritative for whether the sweep applies.
189
+
190
+ 1. From the Investigation Targets (the decomposition already extended them with the adjacent files), identify the cases sharing the same path, contract, persisted state, or external boundary as the change — fallback rendering, stale state, retries, and external calls related to the change.
191
+ 2. Check each for the same class of defect this task corrects.
192
+ 3. Disposition each residual by scope:
193
+ - **Within Target Files scope** → fold the residual into this task's failing tests and implementation.
194
+ - **A confirmed out-of-scope sibling that needs the same fix** → raise the `out_of_scope_file` escalation (the standard path for a file outside Target Files), letting the user expand Target Files or split off a follow-up task. This routes a confirmed adjacent defect to an explicit decision.
195
+ - **A related residual not confirmed to need the same fix** → record it in the task file's Investigation Notes so code-reviewer's adjacent-case check verifies it against the implementation.
196
+
186
197
  #### Binding Decision Check (Required when the task file has a Binding Decisions section)
187
198
 
188
199
  This check runs after Pre-implementation Verification and before the TDD cycle. It applies only when the task file contains a Binding Decisions section with one or more rows.
@@ -278,20 +289,8 @@ Report in the following JSON format upon task completion (**without executing qu
278
289
  "testsAdded": ["src/components/Button/Button.test.tsx"],
279
290
  "requiresTestReview": false,
280
291
  "newTestsPassed": true,
281
- "progressUpdated": {
282
- "taskFile": "5/8 items completed",
283
- "workPlan": "Relevant sections updated",
284
- "designDoc": "Progress section updated or N/A"
285
- },
286
- "runnableCheck": {
287
- "level": "L1: Unit test (React Testing Library) / L2: Integration test / L3: E2E test",
288
- "executed": true,
289
- "command": "test -- Button.test.tsx",
290
- "result": "passed / failed / skipped",
291
- "substance": "substantive | non_substantive | null (non-test verification)",
292
- "substanceIssue": "null when substantive or non-test; cause and location when non_substantive",
293
- "reason": "Test execution reason/verification content"
294
- },
292
+ "progressUpdated": {"taskFile": "5/8 items completed", "workPlan": "Relevant sections updated", "designDoc": "Progress section updated or N/A"},
293
+ "runnableCheck": {"level": "L1: Unit test (React Testing Library) / L2: Integration test / L3: E2E test", "executed": true, "command": "test -- Button.test.tsx", "result": "passed / failed / skipped", "substance": "substantive | non_substantive | null (non-test verification)", "substanceIssue": "null when substantive or non-test; cause and location when non_substantive", "reason": "Test execution reason/verification content"},
295
294
  "readyForQualityCheck": true,
296
295
  "nextActions": "Overall quality verification by quality assurance process"
297
296
  }
@@ -334,11 +333,7 @@ Minimal example (out_of_scope_file):
334
333
  "reason": "Out of scope file",
335
334
  "taskName": "[task name]",
336
335
  "escalation_type": "out_of_scope_file",
337
- "details": {
338
- "file_path": "[path attempted]",
339
- "allowed_list": ["[union of Target Files, task file, work plan, Provides]"],
340
- "modification_reason": "[why modification was attempted]"
341
- },
336
+ "details": {"file_path": "[path attempted]", "allowed_list": ["[union of Target Files, task file, work plan, Provides]"], "modification_reason": "[why modification was attempted]"},
342
337
  "user_decision_required": true,
343
338
  "suggested_options": ["Add to Target files and retry", "Split into separate task", "Reconsider approach"]
344
339
  }
@@ -116,7 +116,7 @@ Internal detail optimization (variable names, processing order); specs not in De
116
116
 
117
117
  ## Responsibilities, Authority, and Boundaries
118
118
 
119
- **In scope**: Read task files from `docs/plans/tasks/`, review dependency deliverables listed in task "Metadata", create implementation and tests, apply Red→Green→Refactor TDD, update progress checkboxes (task file always; work plan and overall design only when those files exist — at small scale only the task file exists), produce research deliverables specified in `Provides`. State transitions: `[ ]` → `[🔄]` → `[x]`.
119
+ **In scope**: Read task files from `docs/plans/tasks/`, review dependency deliverables listed in task "Metadata", create implementation and tests, apply Red→Green→Refactor TDD, update progress checkboxes (task file always; work plan and overall design only when those files exist — at small scale only the task file exists), produce research deliverables specified in `Provides`. State transitions: `[ ]` → `[x]`.
120
120
 
121
121
  **Out of scope (always)**: Overall quality checks (delegated to quality assurance), commit creation (after quality checks), forcing implementation when Design Doc cannot be satisfied (always escalate).
122
122
 
@@ -183,6 +183,17 @@ This gate runs only when the task file's "Investigation Targets" section lists a
183
183
  2. **Investigate existing implementations**: Search for similar functions in same domain/responsibility
184
184
  3. **Execute determination**: Determine continue/escalation per "Mandatory Judgment Criteria" above
185
185
 
186
+ #### Adjacent Case Sweep (Required when the task file has a `Change Category` field set to one or more of `bug-fix`, `regression`, `state-change`, `boundary-change`)
187
+
188
+ Runs after Pre-implementation Verification, before the Binding Decision Check. This step fires on the field value the task decomposition wrote — read the field value and treat it as authoritative for whether the sweep applies.
189
+
190
+ 1. From the Investigation Targets (the decomposition already extended them with the adjacent files), identify the cases sharing the same path, contract, persisted state, or external boundary as the change — fallback behavior, stale state, retries, and external calls related to the change.
191
+ 2. Check each for the same class of defect this task corrects.
192
+ 3. Disposition each residual by scope:
193
+ - **Within Target Files scope** → fold the residual into this task's failing tests and implementation.
194
+ - **A confirmed out-of-scope sibling that needs the same fix** → raise the `out_of_scope_file` escalation (the standard path for a file outside Target Files), letting the user expand Target Files or split off a follow-up task. This routes a confirmed adjacent defect to an explicit decision.
195
+ - **A related residual not confirmed to need the same fix** → record it in the task file's Investigation Notes so code-reviewer's adjacent-case check verifies it against the implementation.
196
+
186
197
  #### Binding Decision Check (Required when the task file has a Binding Decisions section)
187
198
 
188
199
  This check runs after Pre-implementation Verification and before the TDD cycle. It applies only when the task file contains a Binding Decisions section with one or more rows.
@@ -281,20 +292,8 @@ Report in the following JSON format upon task completion (**without executing qu
281
292
  "testsAdded": ["created/test/file/path"],
282
293
  "requiresTestReview": true,
283
294
  "newTestsPassed": true,
284
- "progressUpdated": {
285
- "taskFile": "5/8 items completed",
286
- "workPlan": "Relevant sections updated",
287
- "designDoc": "Progress section updated or N/A"
288
- },
289
- "runnableCheck": {
290
- "level": "L1: Unit test / L2: Integration test / L3: E2E test",
291
- "executed": true,
292
- "command": "Executed test command",
293
- "result": "passed / failed / skipped",
294
- "substance": "substantive | non_substantive | null (non-test verification)",
295
- "substanceIssue": "null when substantive or non-test; cause and location when non_substantive",
296
- "reason": "Test execution reason/verification content"
297
- },
295
+ "progressUpdated": {"taskFile": "5/8 items completed", "workPlan": "Relevant sections updated", "designDoc": "Progress section updated or N/A"},
296
+ "runnableCheck": {"level": "L1: Unit test / L2: Integration test / L3: E2E test", "executed": true, "command": "Executed test command", "result": "passed / failed / skipped", "substance": "substantive | non_substantive | null (non-test verification)", "substanceIssue": "null when substantive or non-test; cause and location when non_substantive", "reason": "Test execution reason/verification content"},
298
297
  "readyForQualityCheck": true,
299
298
  "nextActions": "Overall quality verification by quality assurance process"
300
299
  }
@@ -337,11 +336,7 @@ Minimal example (out_of_scope_file):
337
336
  "reason": "Out of scope file",
338
337
  "taskName": "[task name]",
339
338
  "escalation_type": "out_of_scope_file",
340
- "details": {
341
- "file_path": "[path attempted]",
342
- "allowed_list": ["[union of Target Files, task file, work plan, Provides]"],
343
- "modification_reason": "[why modification was attempted]"
344
- },
339
+ "details": {"file_path": "[path attempted]", "allowed_list": ["[union of Target Files, task file, work plan, Provides]"], "modification_reason": "[why modification was attempted]"},
345
340
  "user_decision_required": true,
346
341
  "suggested_options": ["Add to Target files and retry", "Split into separate task", "Reconsider approach"]
347
342
  }