codex-workflows 0.6.7 → 0.6.9
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.
- package/.agents/skills/ai-development-guide/SKILL.md +5 -3
- package/.agents/skills/ai-development-guide/references/frontend.md +11 -19
- package/.agents/skills/coding-rules/references/typescript.md +17 -12
- package/.agents/skills/documentation-criteria/references/plan-template.md +1 -1
- package/.agents/skills/documentation-criteria/references/task-template.md +8 -0
- package/.agents/skills/integration-e2e-testing/SKILL.md +1 -1
- package/.agents/skills/recipe-build/SKILL.md +10 -3
- package/.agents/skills/recipe-front-build/SKILL.md +10 -3
- package/.agents/skills/recipe-fullstack-build/SKILL.md +10 -3
- package/.agents/skills/recipe-fullstack-implement/SKILL.md +1 -1
- package/.agents/skills/recipe-prepare-implementation/SKILL.md +1 -0
- package/.agents/skills/subagents-orchestration-guide/SKILL.md +9 -6
- package/.agents/skills/task-analyzer/references/skills-index.yaml +1 -1
- package/.agents/skills/testing/SKILL.md +5 -5
- package/.agents/skills/testing/references/typescript.md +2 -6
- package/.codex/agents/acceptance-test-generator.toml +61 -96
- package/.codex/agents/code-reviewer.toml +4 -57
- package/.codex/agents/code-verifier.toml +1 -47
- package/.codex/agents/codebase-analyzer.toml +1 -106
- package/.codex/agents/design-sync.toml +2 -64
- package/.codex/agents/document-reviewer.toml +3 -78
- package/.codex/agents/integration-test-reviewer.toml +1 -26
- package/.codex/agents/investigator.toml +1 -73
- package/.codex/agents/quality-fixer-frontend.toml +4 -105
- package/.codex/agents/quality-fixer.toml +4 -122
- package/.codex/agents/requirement-analyzer.toml +1 -29
- package/.codex/agents/rule-advisor.toml +1 -79
- package/.codex/agents/scope-discoverer.toml +1 -70
- package/.codex/agents/security-reviewer.toml +1 -19
- package/.codex/agents/solver.toml +5 -54
- package/.codex/agents/task-decomposer.toml +18 -0
- package/.codex/agents/task-executor-frontend.toml +16 -142
- package/.codex/agents/task-executor.toml +16 -142
- package/.codex/agents/ui-analyzer.toml +1 -157
- package/.codex/agents/verifier.toml +2 -65
- package/package.json +1 -1
|
@@ -185,123 +185,22 @@ Before setting status to blocked, confirm specifications in this order:
|
|
|
185
185
|
|
|
186
186
|
**When incomplete implementation is detected**:
|
|
187
187
|
```json
|
|
188
|
-
{
|
|
189
|
-
"status": "stub_detected",
|
|
190
|
-
"summary": "Incomplete frontend implementation detected in changed code before quality checks.",
|
|
191
|
-
"stubFindings": [
|
|
192
|
-
{
|
|
193
|
-
"file": "src/components/CheckoutButton.tsx",
|
|
194
|
-
"indicator": "placeholder handler",
|
|
195
|
-
"details": "onClick handler still contains placeholder logic for required submission flow"
|
|
196
|
-
}
|
|
197
|
-
],
|
|
198
|
-
"nextActions": "Return to task-executor-frontend and complete the implementation before re-running quality-fixer-frontend."
|
|
199
|
-
}
|
|
188
|
+
{"status":"stub_detected","summary":"Incomplete frontend implementation detected in changed code before quality checks.","stubFindings":[{"file":"src/components/CheckoutButton.tsx","indicator":"placeholder handler","details":"onClick handler still contains placeholder logic for required submission flow"}],"nextActions":"Return to task-executor-frontend and complete the implementation before re-running quality-fixer-frontend."}
|
|
200
189
|
```
|
|
201
190
|
|
|
202
191
|
**When quality check succeeds**:
|
|
203
192
|
```json
|
|
204
|
-
{
|
|
205
|
-
"status": "approved",
|
|
206
|
-
"summary": "Overall frontend quality check completed. All checks passed.",
|
|
207
|
-
"checksPerformed": {
|
|
208
|
-
"lint_format": {
|
|
209
|
-
"status": "passed",
|
|
210
|
-
"commands": ["<detected-lint-command>"],
|
|
211
|
-
"autoFixed": true
|
|
212
|
-
},
|
|
213
|
-
"typescript": {
|
|
214
|
-
"status": "passed",
|
|
215
|
-
"commands": ["<detected-build-command>"]
|
|
216
|
-
},
|
|
217
|
-
"tests": {
|
|
218
|
-
"status": "passed",
|
|
219
|
-
"commands": ["<detected-test-command>"],
|
|
220
|
-
"testsRun": 42,
|
|
221
|
-
"testsPassed": 42,
|
|
222
|
-
"coverage": "85%"
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
"fixesApplied": [
|
|
226
|
-
{
|
|
227
|
-
"type": "auto",
|
|
228
|
-
"category": "format",
|
|
229
|
-
"description": "Auto-fixed indentation and semicolons",
|
|
230
|
-
"filesCount": 5
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
"type": "manual",
|
|
234
|
-
"category": "type",
|
|
235
|
-
"description": "Replaced any type with unknown + type guards",
|
|
236
|
-
"filesCount": 3
|
|
237
|
-
}
|
|
238
|
-
],
|
|
239
|
-
"taskFileMechanisms": {
|
|
240
|
-
"provided": true,
|
|
241
|
-
"executed": ["mechanism names that were found and executed"],
|
|
242
|
-
"skipped": [
|
|
243
|
-
{
|
|
244
|
-
"mechanism": "mechanism name",
|
|
245
|
-
"reason": "tool not found / config not found / not executable"
|
|
246
|
-
}
|
|
247
|
-
]
|
|
248
|
-
},
|
|
249
|
-
"metrics": {
|
|
250
|
-
"totalErrors": 0,
|
|
251
|
-
"totalWarnings": 0,
|
|
252
|
-
"executionTime": "3m 30s"
|
|
253
|
-
},
|
|
254
|
-
"nextActions": "Ready to commit"
|
|
255
|
-
}
|
|
193
|
+
{"status":"approved","summary":"Overall frontend quality check completed. All checks passed.","checksPerformed":{"lint_format":{"status":"passed","commands":["<detected-lint-command>"],"autoFixed":true},"typescript":{"status":"passed","commands":["<detected-build-command>"]},"tests":{"status":"passed","commands":["<detected-test-command>"],"testsRun":42,"testsPassed":42,"coverage":"85%"}},"fixesApplied":[{"type":"auto","category":"format","description":"Auto-fixed indentation and semicolons","filesCount":5},{"type":"manual","category":"type","description":"Replaced any type with unknown + type guards","filesCount":3}],"taskFileMechanisms":{"provided":true,"executed":["mechanism names that were found and executed"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"metrics":{"totalErrors":0,"totalWarnings":0,"executionTime":"3m 30s"},"nextActions":"Ready to commit"}
|
|
256
194
|
```
|
|
257
195
|
|
|
258
196
|
**blocked response format (specification conflict)**:
|
|
259
197
|
```json
|
|
260
|
-
{
|
|
261
|
-
"status": "blocked",
|
|
262
|
-
"reason": "Cannot determine due to unclear specification",
|
|
263
|
-
"blockingIssues": [{
|
|
264
|
-
"type": "ux_specification_conflict",
|
|
265
|
-
"details": "Test expectation and implementation contradict on user interaction behavior",
|
|
266
|
-
"test_expects": "Button disabled on form error",
|
|
267
|
-
"implementation_behavior": "Button enabled, shows error on click",
|
|
268
|
-
"why_cannot_judge": "Correct UX specification unknown"
|
|
269
|
-
}],
|
|
270
|
-
"attemptedFixes": [
|
|
271
|
-
"Fix attempt 1: Tried aligning test to implementation",
|
|
272
|
-
"Fix attempt 2: Tried aligning implementation to test",
|
|
273
|
-
"Fix attempt 3: Tried inferring specification from Design Doc"
|
|
274
|
-
],
|
|
275
|
-
"taskFileMechanisms": {
|
|
276
|
-
"provided": true,
|
|
277
|
-
"executed": ["mechanisms executed before blocking"],
|
|
278
|
-
"skipped": [{ "mechanism": "mechanism name", "reason": "tool not found / config not found / not executable" }]
|
|
279
|
-
},
|
|
280
|
-
"needsUserDecision": "Please confirm the correct button disabled behavior"
|
|
281
|
-
}
|
|
198
|
+
{"status":"blocked","reason":"Cannot determine due to unclear specification","blockingIssues":[{"type":"ux_specification_conflict","details":"Test expectation and implementation contradict on user interaction behavior","test_expects":"Button disabled on form error","implementation_behavior":"Button enabled, shows error on click","why_cannot_judge":"Correct UX specification unknown"}],"attemptedFixes":["Fix attempt 1: Tried aligning test to implementation","Fix attempt 2: Tried aligning implementation to test","Fix attempt 3: Tried inferring specification from Design Doc"],"taskFileMechanisms":{"provided":true,"executed":["mechanisms executed before blocking"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"needsUserDecision":"Please confirm the correct button disabled behavior"}
|
|
282
199
|
```
|
|
283
200
|
|
|
284
201
|
**blocked response format (missing prerequisites)**:
|
|
285
202
|
```json
|
|
286
|
-
{
|
|
287
|
-
"status": "blocked",
|
|
288
|
-
"reason": "Execution prerequisites not met",
|
|
289
|
-
"missingPrerequisites": [
|
|
290
|
-
{
|
|
291
|
-
"type": "browser_runtime",
|
|
292
|
-
"description": "Playwright browsers are not installed for E2E execution",
|
|
293
|
-
"affectedChecks": ["test:e2e"],
|
|
294
|
-
"resolutionSteps": ["Install the required browser runtime", "Re-run the E2E check command"]
|
|
295
|
-
}
|
|
296
|
-
],
|
|
297
|
-
"taskFileMechanisms": {
|
|
298
|
-
"provided": true,
|
|
299
|
-
"executed": ["mechanisms executed before blocking"],
|
|
300
|
-
"skipped": [{ "mechanism": "mechanism name", "reason": "tool not found / config not found / not executable" }]
|
|
301
|
-
},
|
|
302
|
-
"checksSkipped": 1,
|
|
303
|
-
"checksPassedWithoutPrerequisites": 2
|
|
304
|
-
}
|
|
203
|
+
{"status":"blocked","reason":"Execution prerequisites not met","missingPrerequisites":[{"type":"browser_runtime","description":"Playwright browsers are not installed for E2E execution","affectedChecks":["test:e2e"],"resolutionSteps":["Install the required browser runtime","Re-run the E2E check command"]}],"taskFileMechanisms":{"provided":true,"executed":["mechanisms executed before blocking"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"checksSkipped":1,"checksPassedWithoutPrerequisites":2}
|
|
305
204
|
```
|
|
306
205
|
|
|
307
206
|
Allowed `type` values: `seed_data`, `library`, `environment_variable`, `running_service`, `browser_runtime`, `external_dependency`, `other`
|
|
@@ -158,140 +158,22 @@ Return one of the following as the final response (see Output Format for schemas
|
|
|
158
158
|
|
|
159
159
|
**When incomplete implementation is detected**:
|
|
160
160
|
```json
|
|
161
|
-
{
|
|
162
|
-
"status": "stub_detected",
|
|
163
|
-
"summary": "Incomplete implementation detected in changed code before quality checks.",
|
|
164
|
-
"stubFindings": [
|
|
165
|
-
{
|
|
166
|
-
"file": "src/example.ts",
|
|
167
|
-
"indicator": "TODO marker",
|
|
168
|
-
"details": "TODO comment defers required business logic in the task scope"
|
|
169
|
-
}
|
|
170
|
-
],
|
|
171
|
-
"nextActions": "Return to task-executor and complete the implementation before re-running quality-fixer."
|
|
172
|
-
}
|
|
161
|
+
{"status":"stub_detected","summary":"Incomplete implementation detected in changed code before quality checks.","stubFindings":[{"file":"src/example.ts","indicator":"TODO marker","details":"TODO comment defers required business logic in the task scope"}],"nextActions":"Return to task-executor and complete the implementation before re-running quality-fixer."}
|
|
173
162
|
```
|
|
174
163
|
|
|
175
164
|
**When quality check succeeds**:
|
|
176
165
|
```json
|
|
177
|
-
{
|
|
178
|
-
"status": "approved",
|
|
179
|
-
"summary": "Overall quality check completed. All checks passed.",
|
|
180
|
-
"checksPerformed": {
|
|
181
|
-
"phase1_linting": {
|
|
182
|
-
"status": "passed",
|
|
183
|
-
"commands": ["linting", "formatting"],
|
|
184
|
-
"autoFixed": true
|
|
185
|
-
},
|
|
186
|
-
"phase2_structure": {
|
|
187
|
-
"status": "passed",
|
|
188
|
-
"commands": ["unused code check", "dependency check"]
|
|
189
|
-
},
|
|
190
|
-
"phase3_build": {
|
|
191
|
-
"status": "passed",
|
|
192
|
-
"commands": ["build"]
|
|
193
|
-
},
|
|
194
|
-
"phase4_tests": {
|
|
195
|
-
"status": "passed",
|
|
196
|
-
"commands": ["test"],
|
|
197
|
-
"testsRun": 42,
|
|
198
|
-
"testsPassed": 42
|
|
199
|
-
},
|
|
200
|
-
"phase5_code_recheck": {
|
|
201
|
-
"status": "passed",
|
|
202
|
-
"commands": ["code quality re-check"]
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
"fixesApplied": [
|
|
206
|
-
{
|
|
207
|
-
"type": "auto",
|
|
208
|
-
"category": "format",
|
|
209
|
-
"description": "Auto-fixed indentation and style",
|
|
210
|
-
"filesCount": 5
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
"type": "manual",
|
|
214
|
-
"category": "correctness",
|
|
215
|
-
"description": "Improved correctness guarantees",
|
|
216
|
-
"filesCount": 2
|
|
217
|
-
}
|
|
218
|
-
],
|
|
219
|
-
"taskFileMechanisms": {
|
|
220
|
-
"provided": true,
|
|
221
|
-
"executed": ["mechanism names that were found and executed"],
|
|
222
|
-
"skipped": [
|
|
223
|
-
{
|
|
224
|
-
"mechanism": "mechanism name",
|
|
225
|
-
"reason": "tool not found / config not found / not executable"
|
|
226
|
-
}
|
|
227
|
-
]
|
|
228
|
-
},
|
|
229
|
-
"metrics": {
|
|
230
|
-
"totalErrors": 0,
|
|
231
|
-
"totalWarnings": 0,
|
|
232
|
-
"executionTime": "2m 15s"
|
|
233
|
-
},
|
|
234
|
-
"nextActions": "Ready to commit"
|
|
235
|
-
}
|
|
166
|
+
{"status":"approved","summary":"Overall quality check completed. All checks passed.","checksPerformed":{"phase1_linting":{"status":"passed","commands":["linting","formatting"],"autoFixed":true},"phase2_structure":{"status":"passed","commands":["unused code check","dependency check"]},"phase3_build":{"status":"passed","commands":["build"]},"phase4_tests":{"status":"passed","commands":["test"],"testsRun":42,"testsPassed":42},"phase5_code_recheck":{"status":"passed","commands":["code quality re-check"]}},"fixesApplied":[{"type":"auto","category":"format","description":"Auto-fixed indentation and style","filesCount":5},{"type":"manual","category":"correctness","description":"Improved correctness guarantees","filesCount":2}],"taskFileMechanisms":{"provided":true,"executed":["mechanism names that were found and executed"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"metrics":{"totalErrors":0,"totalWarnings":0,"executionTime":"2m 15s"},"nextActions":"Ready to commit"}
|
|
236
167
|
```
|
|
237
168
|
|
|
238
169
|
**blocked response format (specification conflict)**:
|
|
239
170
|
```json
|
|
240
|
-
{
|
|
241
|
-
"status": "blocked",
|
|
242
|
-
"reason": "Cannot determine due to unclear specification",
|
|
243
|
-
"blockingIssues": [{
|
|
244
|
-
"type": "specification_conflict",
|
|
245
|
-
"details": "Test expectation and implementation contradict",
|
|
246
|
-
"test_expects": "500 error",
|
|
247
|
-
"implementation_returns": "400 error",
|
|
248
|
-
"why_cannot_judge": "Correct specification unknown"
|
|
249
|
-
}],
|
|
250
|
-
"attemptedFixes": [
|
|
251
|
-
"Fix attempt 1: Tried aligning test to implementation",
|
|
252
|
-
"Fix attempt 2: Tried aligning implementation to test",
|
|
253
|
-
"Fix attempt 3: Tried inferring specification from related documentation"
|
|
254
|
-
],
|
|
255
|
-
"taskFileMechanisms": {
|
|
256
|
-
"provided": true,
|
|
257
|
-
"executed": ["mechanisms executed before blocking"],
|
|
258
|
-
"skipped": [
|
|
259
|
-
{
|
|
260
|
-
"mechanism": "mechanism name",
|
|
261
|
-
"reason": "tool not found / config not found / not executable"
|
|
262
|
-
}
|
|
263
|
-
]
|
|
264
|
-
},
|
|
265
|
-
"needsUserDecision": "Please confirm the correct error code"
|
|
266
|
-
}
|
|
171
|
+
{"status":"blocked","reason":"Cannot determine due to unclear specification","blockingIssues":[{"type":"specification_conflict","details":"Test expectation and implementation contradict","test_expects":"500 error","implementation_returns":"400 error","why_cannot_judge":"Correct specification unknown"}],"attemptedFixes":["Fix attempt 1: Tried aligning test to implementation","Fix attempt 2: Tried aligning implementation to test","Fix attempt 3: Tried inferring specification from related documentation"],"taskFileMechanisms":{"provided":true,"executed":["mechanisms executed before blocking"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"needsUserDecision":"Please confirm the correct error code"}
|
|
267
172
|
```
|
|
268
173
|
|
|
269
174
|
**blocked response format (missing prerequisites)**:
|
|
270
175
|
```json
|
|
271
|
-
{
|
|
272
|
-
"status": "blocked",
|
|
273
|
-
"reason": "Execution prerequisites not met",
|
|
274
|
-
"missingPrerequisites": [
|
|
275
|
-
{
|
|
276
|
-
"type": "seed_data",
|
|
277
|
-
"description": "E2E database is missing required seeded user records",
|
|
278
|
-
"affectedChecks": ["test:e2e"],
|
|
279
|
-
"resolutionSteps": ["Run the project seed script for E2E fixtures", "Start the dependent local services"]
|
|
280
|
-
}
|
|
281
|
-
],
|
|
282
|
-
"taskFileMechanisms": {
|
|
283
|
-
"provided": true,
|
|
284
|
-
"executed": ["mechanisms executed before blocking"],
|
|
285
|
-
"skipped": [
|
|
286
|
-
{
|
|
287
|
-
"mechanism": "mechanism name",
|
|
288
|
-
"reason": "tool not found / config not found / not executable"
|
|
289
|
-
}
|
|
290
|
-
]
|
|
291
|
-
},
|
|
292
|
-
"checksSkipped": 1,
|
|
293
|
-
"checksPassedWithoutPrerequisites": 3
|
|
294
|
-
}
|
|
176
|
+
{"status":"blocked","reason":"Execution prerequisites not met","missingPrerequisites":[{"type":"seed_data","description":"E2E database is missing required seeded user records","affectedChecks":["test:e2e"],"resolutionSteps":["Run the project seed script for E2E fixtures","Start the dependent local services"]}],"taskFileMechanisms":{"provided":true,"executed":["mechanisms executed before blocking"],"skipped":[{"mechanism":"mechanism name","reason":"tool not found / config not found / not executable"}]},"checksSkipped":1,"checksPassedWithoutPrerequisites":3}
|
|
295
177
|
```
|
|
296
178
|
|
|
297
179
|
Allowed `type` values: `seed_data`, `library`, `environment_variable`, `running_service`, `external_dependency`, `other`
|
|
@@ -120,35 +120,7 @@ Return the JSON result as the final response. See Output Format for the schema.
|
|
|
120
120
|
**JSON format is mandatory.**
|
|
121
121
|
|
|
122
122
|
```json
|
|
123
|
-
{
|
|
124
|
-
"taskType": "feature|fix|refactor|performance|security",
|
|
125
|
-
"purpose": "Essential purpose of request (1-2 sentences)",
|
|
126
|
-
"scale": "small|medium|large",
|
|
127
|
-
"confidence": "confirmed|provisional",
|
|
128
|
-
"affectedFiles": ["path/to/file1.ts", "path/to/file2.ts"],
|
|
129
|
-
"affectedLayers": ["backend", "frontend"],
|
|
130
|
-
"fileCount": 3,
|
|
131
|
-
"adrRequired": true,
|
|
132
|
-
"adrReason": "specific condition met, or null if not required",
|
|
133
|
-
"technicalConsiderations": {
|
|
134
|
-
"constraints": ["list"],
|
|
135
|
-
"risks": ["list"],
|
|
136
|
-
"dependencies": ["list"]
|
|
137
|
-
},
|
|
138
|
-
"scopeDependencies": [
|
|
139
|
-
{
|
|
140
|
-
"question": "specific question that affects scale",
|
|
141
|
-
"impact": { "if_yes": "large", "if_no": "medium" }
|
|
142
|
-
}
|
|
143
|
-
],
|
|
144
|
-
"questions": [
|
|
145
|
-
{
|
|
146
|
-
"category": "boundary|existing_code|dependencies",
|
|
147
|
-
"question": "specific question",
|
|
148
|
-
"options": ["A", "B", "C"]
|
|
149
|
-
}
|
|
150
|
-
]
|
|
151
|
-
}
|
|
123
|
+
{"taskType":"feature|fix|refactor|performance|security","purpose":"Essential purpose of request (1-2 sentences)","scale":"small|medium|large","confidence":"confirmed|provisional","affectedFiles":["path/to/file1.ts","path/to/file2.ts"],"affectedLayers":["backend","frontend"],"fileCount":3,"adrRequired":true,"adrReason":"specific condition met, or null if not required","technicalConsiderations":{"constraints":["list"],"risks":["list"],"dependencies":["list"]},"scopeDependencies":[{"question":"specific question that affects scale","impact":{"if_yes":"large","if_no":"medium"}}],"questions":[{"category":"boundary|existing_code|dependencies","question":"specific question","options":["A","B","C"]}]}
|
|
152
124
|
```
|
|
153
125
|
|
|
154
126
|
**Field descriptions**:
|
|
@@ -73,85 +73,7 @@ Return the JSON result as the final response. See Output Format for the schema.
|
|
|
73
73
|
Return structured JSON:
|
|
74
74
|
|
|
75
75
|
```json
|
|
76
|
-
{
|
|
77
|
-
"taskAnalysis": {
|
|
78
|
-
"taskType": "implementation|fix|refactoring|design|quality-improvement",
|
|
79
|
-
"essence": "Fundamental purpose of the task",
|
|
80
|
-
"estimatedFiles": 3,
|
|
81
|
-
"scale": "small|medium|large",
|
|
82
|
-
"extractedTags": ["implementation", "testing", "security"]
|
|
83
|
-
},
|
|
84
|
-
"selectedRules": [
|
|
85
|
-
{
|
|
86
|
-
"file": "coding-rules",
|
|
87
|
-
"sections": [
|
|
88
|
-
{
|
|
89
|
-
"title": "Function Design",
|
|
90
|
-
"content": "## Function Design\\n\\n### Basic Principles\\n- Single responsibility principle\\n..."
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"title": "Error Handling",
|
|
94
|
-
"content": "## Error Handling\\n\\n### Error Classification\\n..."
|
|
95
|
-
}
|
|
96
|
-
],
|
|
97
|
-
"reason": "Core implementation rules needed",
|
|
98
|
-
"priority": "high"
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"file": "testing",
|
|
102
|
-
"sections": [
|
|
103
|
-
{
|
|
104
|
-
"title": "Red-Green-Refactor Process",
|
|
105
|
-
"content": "## Red-Green-Refactor Process\\n\\n1. Red: Write failing test\\n..."
|
|
106
|
-
}
|
|
107
|
-
],
|
|
108
|
-
"reason": "TDD practice required",
|
|
109
|
-
"priority": "high"
|
|
110
|
-
}
|
|
111
|
-
],
|
|
112
|
-
"metaCognitiveGuidance": {
|
|
113
|
-
"taskEssence": "Understanding fundamental purpose, not surface work",
|
|
114
|
-
"ruleAdequacy": "Evaluation of whether selected rules match task characteristics",
|
|
115
|
-
"pastFailures": [
|
|
116
|
-
"error-fixing impulse",
|
|
117
|
-
"large changes at once",
|
|
118
|
-
"insufficient testing"
|
|
119
|
-
],
|
|
120
|
-
"potentialPitfalls": [
|
|
121
|
-
"Error-fixing impulse without root cause analysis",
|
|
122
|
-
"Large changes without phased approach",
|
|
123
|
-
"Implementation without tests"
|
|
124
|
-
],
|
|
125
|
-
"firstStep": {
|
|
126
|
-
"action": "Specific first action to take",
|
|
127
|
-
"rationale": "Why this should be done first"
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
"metaCognitiveQuestions": [
|
|
131
|
-
"What is the most important quality criterion for this task?",
|
|
132
|
-
"What problems occurred in similar tasks in the past?",
|
|
133
|
-
"Which part should be tackled first?",
|
|
134
|
-
"Is there a possibility of exceeding initial assumptions?"
|
|
135
|
-
],
|
|
136
|
-
"warningPatterns": [
|
|
137
|
-
{
|
|
138
|
-
"pattern": "Large changes at once",
|
|
139
|
-
"risk": "High complexity, difficult debugging",
|
|
140
|
-
"mitigation": "Split into phases"
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
"pattern": "Implementation without tests",
|
|
144
|
-
"risk": "Quality degradation",
|
|
145
|
-
"mitigation": "Follow Red-Green-Refactor"
|
|
146
|
-
}
|
|
147
|
-
],
|
|
148
|
-
"criticalRules": [
|
|
149
|
-
"Complete static checking before proceeding",
|
|
150
|
-
"User approval mandatory before implementation",
|
|
151
|
-
"No commits before quality check completion"
|
|
152
|
-
],
|
|
153
|
-
"confidence": "high|medium|low"
|
|
154
|
-
}
|
|
76
|
+
{"taskAnalysis":{"taskType":"implementation|fix|refactoring|design|quality-improvement","essence":"Fundamental purpose of the task","estimatedFiles":3,"scale":"small|medium|large","extractedTags":["implementation","testing","security"]},"selectedRules":[{"file":"coding-rules","sections":[{"title":"Function Design","content":"## Function Design\\n\\n### Basic Principles\\n- Single responsibility principle\\n..."},{"title":"Error Handling","content":"## Error Handling\\n\\n### Error Classification\\n..."}],"reason":"Core implementation rules needed","priority":"high"},{"file":"testing","sections":[{"title":"Red-Green-Refactor Process","content":"## Red-Green-Refactor Process\\n\\n1. Red: Write failing test\\n..."}],"reason":"TDD practice required","priority":"high"}],"metaCognitiveGuidance":{"taskEssence":"Understanding fundamental purpose, not surface work","ruleAdequacy":"Evaluation of whether selected rules match task characteristics","pastFailures":["error-fixing impulse","large changes at once","insufficient testing"],"potentialPitfalls":["Error-fixing impulse without root cause analysis","Large changes without phased approach","Implementation without tests"],"firstStep":{"action":"Specific first action to take","rationale":"Why this should be done first"}},"metaCognitiveQuestions":["What is the most important quality criterion for this task?","What problems occurred in similar tasks in the past?","Which part should be tackled first?","Is there a possibility of exceeding initial assumptions?"],"warningPatterns":[{"pattern":"Large changes at once","risk":"High complexity, difficult debugging","mitigation":"Split into phases"},{"pattern":"Implementation without tests","risk":"Quality degradation","mitigation":"Follow Red-Green-Refactor"}],"criticalRules":["Complete static checking before proceeding","User approval mandatory before implementation","No commits before quality check completion"],"confidence":"high|medium|low"}
|
|
155
77
|
```
|
|
156
78
|
|
|
157
79
|
## Skill Selection Priority
|
|
@@ -162,76 +162,7 @@ Note: These signals are informational only during steps 1-6. Keep all discovered
|
|
|
162
162
|
### Essential Output
|
|
163
163
|
|
|
164
164
|
```json
|
|
165
|
-
{
|
|
166
|
-
"targetPath": "/path/to/project",
|
|
167
|
-
"referenceArchitecture": "layered|mvc|clean|hexagonal|none",
|
|
168
|
-
"existingPrd": "path or null",
|
|
169
|
-
"saturationReached": true,
|
|
170
|
-
"discoveredUnits": [
|
|
171
|
-
{
|
|
172
|
-
"id": "UNIT-001",
|
|
173
|
-
"name": "Unit Name",
|
|
174
|
-
"description": "Brief description",
|
|
175
|
-
"confidence": "high|medium|low",
|
|
176
|
-
"triangulationStrength": "strong|moderate|weak",
|
|
177
|
-
"sourceCount": 3,
|
|
178
|
-
"entryPoints": ["/path1", "/path2"],
|
|
179
|
-
"relatedFiles": ["src/feature/*"],
|
|
180
|
-
"dependencies": ["UNIT-002"],
|
|
181
|
-
"valueProfile": {
|
|
182
|
-
"targetPersona": "Who this feature serves (e.g., 'end user', 'admin', 'developer')",
|
|
183
|
-
"userGoal": "What the user is trying to accomplish with this feature",
|
|
184
|
-
"valueCategory": "High-level capability this belongs to (e.g., 'Authentication', 'Content Management', 'Reporting')",
|
|
185
|
-
"groupingKey": {
|
|
186
|
-
"targetPersona": "end-user",
|
|
187
|
-
"userGoal": "sign-in",
|
|
188
|
-
"valueCategory": "authentication"
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
"technicalProfile": {
|
|
192
|
-
"primaryModules": ["src/auth/service.ts", "src/auth/controller.ts"],
|
|
193
|
-
"publicInterfaces": ["AuthService.login()", "AuthController.handleLogin()"],
|
|
194
|
-
"dataFlowSummary": "Request → Controller → Service → Repository → DB",
|
|
195
|
-
"infrastructureDeps": ["database", "redis-cache"]
|
|
196
|
-
},
|
|
197
|
-
"unitInventory": {
|
|
198
|
-
"routes": ["POST /login -> AuthController.handleLogin (src/auth/controller.ts:24)"],
|
|
199
|
-
"testFiles": ["src/auth/service.test.ts"],
|
|
200
|
-
"publicExports": ["AuthService (src/auth/service.ts:10)"]
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
],
|
|
204
|
-
"relationships": [
|
|
205
|
-
{
|
|
206
|
-
"from": "UNIT-001",
|
|
207
|
-
"to": "UNIT-002",
|
|
208
|
-
"type": "depends_on|extends|shares_data"
|
|
209
|
-
}
|
|
210
|
-
],
|
|
211
|
-
"uncertainAreas": [
|
|
212
|
-
{
|
|
213
|
-
"area": "Area name",
|
|
214
|
-
"reason": "Why uncertain",
|
|
215
|
-
"suggestedAction": "What to do"
|
|
216
|
-
}
|
|
217
|
-
],
|
|
218
|
-
"prdUnits": [
|
|
219
|
-
{
|
|
220
|
-
"id": "PRD-001",
|
|
221
|
-
"name": "PRD unit name (user-value level)",
|
|
222
|
-
"description": "What this capability delivers to the user",
|
|
223
|
-
"groupingKey": {
|
|
224
|
-
"targetPersona": "end-user",
|
|
225
|
-
"userGoal": "sign-in",
|
|
226
|
-
"valueCategory": "authentication"
|
|
227
|
-
},
|
|
228
|
-
"sourceUnits": ["UNIT-001", "UNIT-003"],
|
|
229
|
-
"combinedRelatedFiles": ["src/feature-a/*", "src/feature-b/*"],
|
|
230
|
-
"combinedEntryPoints": ["/path1", "/path2", "/path3"]
|
|
231
|
-
}
|
|
232
|
-
],
|
|
233
|
-
"limitations": ["What could not be discovered and why"]
|
|
234
|
-
}
|
|
165
|
+
{"targetPath":"/path/to/project","referenceArchitecture":"layered|mvc|clean|hexagonal|none","existingPrd":"path or null","saturationReached":true,"discoveredUnits":[{"id":"UNIT-001","name":"Unit Name","description":"Brief description","confidence":"high|medium|low","triangulationStrength":"strong|moderate|weak","sourceCount":3,"entryPoints":["/path1","/path2"],"relatedFiles":["src/feature/*"],"dependencies":["UNIT-002"],"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')","groupingKey":{"targetPersona":"end-user","userGoal":"sign-in","valueCategory":"authentication"}},"technicalProfile":{"primaryModules":["src/auth/service.ts","src/auth/controller.ts"],"publicInterfaces":["AuthService.login()","AuthController.handleLogin()"],"dataFlowSummary":"Request → Controller → Service → Repository → DB","infrastructureDeps":["database","redis-cache"]},"unitInventory":{"routes":["POST /login -> AuthController.handleLogin (src/auth/controller.ts:24)"],"testFiles":["src/auth/service.test.ts"],"publicExports":["AuthService (src/auth/service.ts:10)"]}}],"relationships":[{"from":"UNIT-001","to":"UNIT-002","type":"depends_on|extends|shares_data"}],"uncertainAreas":[{"area":"Area name","reason":"Why uncertain","suggestedAction":"What to do"}],"prdUnits":[{"id":"PRD-001","name":"PRD unit name (user-value level)","description":"What this capability delivers to the user","groupingKey":{"targetPersona":"end-user","userGoal":"sign-in","valueCategory":"authentication"},"sourceUnits":["UNIT-001","UNIT-003"],"combinedRelatedFiles":["src/feature-a/*","src/feature-b/*"],"combinedEntryPoints":["/path1","/path2","/path3"]}],"limitations":["What could not be discovered and why"]}
|
|
235
166
|
```
|
|
236
167
|
|
|
237
168
|
## Completion Criteria
|
|
@@ -107,25 +107,7 @@ Return the JSON result as the final response. See Output Format for the schema.
|
|
|
107
107
|
## Output Format
|
|
108
108
|
|
|
109
109
|
```json
|
|
110
|
-
{
|
|
111
|
-
"status": "approved|approved_with_notes|needs_revision|blocked",
|
|
112
|
-
"summary": "[1-2 sentence summary]",
|
|
113
|
-
"filesReviewed": 5,
|
|
114
|
-
"findings": [
|
|
115
|
-
{
|
|
116
|
-
"category": "confirmed_risk|defense_gap|hardening|policy",
|
|
117
|
-
"confidence": "high|medium|low",
|
|
118
|
-
"location": "[file:line]",
|
|
119
|
-
"description": "[specific issue found]",
|
|
120
|
-
"rationale": "[category-specific, see Category-Specific Rationale]",
|
|
121
|
-
"suggestion": "[specific fix]"
|
|
122
|
-
}
|
|
123
|
-
],
|
|
124
|
-
"notes": "[summary of hardening/policy findings for completion report, present when status is approved_with_notes]",
|
|
125
|
-
"requiredFixes": [
|
|
126
|
-
"[specific fix 1 — only confirmed_risk and qualifying defense_gap items]"
|
|
127
|
-
]
|
|
128
|
-
}
|
|
110
|
+
{"status":"approved|approved_with_notes|needs_revision|blocked","summary":"[1-2 sentence summary]","filesReviewed":5,"findings":[{"category":"confirmed_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]"}],"notes":"[summary of hardening/policy findings for completion report, present when status is approved_with_notes]","requiredFixes":["[specific fix 1 — only confirmed_risk and qualifying defense_gap items]"]}
|
|
129
111
|
```
|
|
130
112
|
|
|
131
113
|
## Status Determination
|
|
@@ -92,6 +92,10 @@ Generate at least 3 solutions from the following perspectives:
|
|
|
92
92
|
| mitigation | Measures to reduce impact | Temporary measure while waiting for root fix |
|
|
93
93
|
| fundamental | Comprehensive fix including recurrence prevention | When similar problems have occurred repeatedly |
|
|
94
94
|
|
|
95
|
+
**Adjacent Case Coverage**:
|
|
96
|
+
- When the investigated incident is a bug or regression, or when a confirmed failure point affects a state transition, persisted state, or external boundary, evaluate cases sharing the same path, contract, persisted state, or external boundary for the same class of defect.
|
|
97
|
+
- Include adjacent cases in the solution scope when they share the defect class. Record why any are excluded in `uncertaintyHandling.residualRisks`.
|
|
98
|
+
|
|
95
99
|
**Generated Solution Verification**:
|
|
96
100
|
- Check if project rules have applicable guidelines
|
|
97
101
|
- For areas without guidelines, research current best practices via web search to verify solutions align with standard approaches
|
|
@@ -126,60 +130,7 @@ Return the JSON result as the final response. See Output Format for the schema.
|
|
|
126
130
|
## Output Format
|
|
127
131
|
|
|
128
132
|
```json
|
|
129
|
-
{
|
|
130
|
-
"inputSummary": {
|
|
131
|
-
"identifiedFailurePoints": [
|
|
132
|
-
{"failurePointId": "FP1", "description": "Failure point description", "status": "confirmed|probable|possible"}
|
|
133
|
-
],
|
|
134
|
-
"failurePointRelationships": [
|
|
135
|
-
{"from": "FP1", "to": "FP2", "relationship": "independent|upstream_of|downstream_of|amplifies|same_boundary"}
|
|
136
|
-
],
|
|
137
|
-
"coverageAssessment": "sufficient|partial|insufficient"
|
|
138
|
-
},
|
|
139
|
-
"solutions": [
|
|
140
|
-
{
|
|
141
|
-
"id": "S1",
|
|
142
|
-
"name": "Solution name",
|
|
143
|
-
"type": "direct|workaround|mitigation|fundamental",
|
|
144
|
-
"description": "Detailed solution description",
|
|
145
|
-
"implementation": {
|
|
146
|
-
"approach": "Implementation approach description",
|
|
147
|
-
"affectedFiles": ["Files requiring changes"],
|
|
148
|
-
"dependencies": ["Affected dependencies"]
|
|
149
|
-
},
|
|
150
|
-
"tradeoffs": {
|
|
151
|
-
"cost": {"level": "low|medium|high", "details": "Details"},
|
|
152
|
-
"risk": {"level": "low|medium|high", "details": "Details"},
|
|
153
|
-
"scope": {"level": "low|medium|high", "details": "Details"},
|
|
154
|
-
"maintainability": {"level": "low|medium|high", "details": "Details"},
|
|
155
|
-
"certainty": {"level": "low|medium|high", "details": "Details"}
|
|
156
|
-
},
|
|
157
|
-
"pros": ["Advantages"],
|
|
158
|
-
"cons": ["Disadvantages"]
|
|
159
|
-
}
|
|
160
|
-
],
|
|
161
|
-
"recommendation": {
|
|
162
|
-
"selectedSolutionId": "S1",
|
|
163
|
-
"rationale": "Detailed selection rationale",
|
|
164
|
-
"alternativeIfRejected": "Alternative solution ID if recommendation rejected",
|
|
165
|
-
"conditions": "Conditions under which this recommendation is appropriate"
|
|
166
|
-
},
|
|
167
|
-
"implementationPlan": {
|
|
168
|
-
"steps": [
|
|
169
|
-
{
|
|
170
|
-
"order": 1,
|
|
171
|
-
"action": "Specific action",
|
|
172
|
-
"verification": "How to verify this step",
|
|
173
|
-
"rollback": "Rollback procedure if problems occur"
|
|
174
|
-
}
|
|
175
|
-
],
|
|
176
|
-
"criticalPoints": ["Points requiring special attention"]
|
|
177
|
-
},
|
|
178
|
-
"uncertaintyHandling": {
|
|
179
|
-
"residualRisks": ["Risks that may remain after resolution"],
|
|
180
|
-
"monitoringPlan": "Monitoring plan after resolution"
|
|
181
|
-
}
|
|
182
|
-
}
|
|
133
|
+
{"inputSummary":{"identifiedFailurePoints":[{"failurePointId":"FP1","description":"Failure point description","status":"confirmed|probable|possible"}],"failurePointRelationships":[{"from":"FP1","to":"FP2","relationship":"independent|upstream_of|downstream_of|amplifies|same_boundary"}],"coverageAssessment":"sufficient|partial|insufficient"},"solutions":[{"id":"S1","name":"Solution name","type":"direct|workaround|mitigation|fundamental","description":"Detailed solution description","implementation":{"approach":"Implementation approach description","affectedFiles":["Files requiring changes"],"dependencies":["Affected dependencies"]},"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"}},"pros":["Advantages"],"cons":["Disadvantages"]}],"recommendation":{"selectedSolutionId":"S1","rationale":"Detailed selection rationale","alternativeIfRejected":"Alternative solution ID if recommendation rejected","conditions":"Conditions under which this recommendation is appropriate"},"implementationPlan":{"steps":[{"order":1,"action":"Specific action","verification":"How to verify this step","rollback":"Rollback procedure if problems occur"}],"criticalPoints":["Points requiring special attention"]},"uncertaintyHandling":{"residualRisks":["Risks that may remain after resolution"],"monitoringPlan":"Monitoring plan after resolution"}}
|
|
183
134
|
```
|
|
184
135
|
|
|
185
136
|
## Completion Criteria
|
|
@@ -121,6 +121,7 @@ Decompose tasks based on implementation strategy patterns determined in implemen
|
|
|
121
121
|
- Task overview
|
|
122
122
|
- Target files
|
|
123
123
|
- Investigation Targets
|
|
124
|
+
- Change Category when the task is a bug fix, regression, state-change, or boundary-change
|
|
124
125
|
- Investigation Notes
|
|
125
126
|
- Concrete implementation steps
|
|
126
127
|
- Operation Verification Methods
|
|
@@ -164,6 +165,18 @@ Decompose tasks based on implementation strategy patterns determined in implemen
|
|
|
164
165
|
9. **Propagate Proof Obligations**
|
|
165
166
|
When the work plan or referenced test skeletons include Primary failure mode or Proof obligation annotations, copy the applicable obligations into each generated task that implements or verifies the claim. If no skeleton exists, derive the primary failure mode from the acceptance criterion and Verification Strategy. Each obligation must state the AC ID or claim identifier, claim, failure mode, boundary to exercise, state assertion expectation, permitted mock boundary rationale, and residual uncertainty if any.
|
|
166
167
|
|
|
168
|
+
10. **Classify Change Category for Adjacent Case Sweep**
|
|
169
|
+
When a task corrects observed behavior or changes a path, contract, persisted state, or external boundary, classify it so executors and reviewers can run a scoped adjacent-case sweep from a concrete field instead of re-inferring intent.
|
|
170
|
+
|
|
171
|
+
- `bug-fix`: corrects observed incorrect behavior
|
|
172
|
+
- `regression`: restores behavior a prior change broke
|
|
173
|
+
- `state-change`: changes how state is written, transitioned, or persisted
|
|
174
|
+
- `boundary-change`: changes a published or consumed contract at an external, cross-package, or persisted boundary
|
|
175
|
+
|
|
176
|
+
A task can match more than one category. Populate the task's `Change Category` field with every matched value, comma-separated.
|
|
177
|
+
|
|
178
|
+
For every matched category, extend Investigation Targets with 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. Union targets across all matched categories. Omit `Change Category` only when the task neither corrects observed behavior nor changes a path, contract, persisted state, or external boundary. Additive, config-only, and scaffolding work is not exempt when it changes one of those dimensions.
|
|
179
|
+
|
|
167
180
|
## Verification Strategy Propagation
|
|
168
181
|
|
|
169
182
|
Verification Strategy defines what correctness means at design time. L1/L2/L3 (from implementation-approach) define task-level verification depth at execution time. Use both.
|
|
@@ -250,6 +263,10 @@ When the work plan includes a `Connection Map` section:
|
|
|
250
263
|
3. For tasks on one side of a boundary, include an Operation Verification Method that observes the expected signal from the other side.
|
|
251
264
|
4. Propagate only boundary rows explicitly mapped in the work plan.
|
|
252
265
|
|
|
266
|
+
## Change Category Classification
|
|
267
|
+
|
|
268
|
+
This is distinct from per-AC boundary-path proof. Proof obligations prove the boundary path within an acceptance criterion; Change Category drives a sweep of cases outside the task's explicit ACs that share its path, contract, persisted state, or external boundary. Use Step 10 as the single procedural source for classification and Investigation Target extension.
|
|
269
|
+
|
|
253
270
|
## Task File Template
|
|
254
271
|
|
|
255
272
|
See task template in documentation-criteria skill for details.
|
|
@@ -349,6 +366,7 @@ Please execute decomposed tasks according to the order.
|
|
|
349
366
|
- [ ] Impact scope and boundaries definition for each task
|
|
350
367
|
- [ ] Appropriate granularity (1-5 files/task)
|
|
351
368
|
- [ ] Investigation Targets specified for every task
|
|
369
|
+
- [ ] Change Category set for bug-fix, regression, state-change, or boundary-change tasks, with adjacent path/boundary owners added to Investigation Targets
|
|
352
370
|
- [ ] Quality Assurance Mechanisms propagated to relevant tasks when present in the plan header
|
|
353
371
|
- [ ] ADR Bindings rows propagated to relevant tasks when present in the work plan
|
|
354
372
|
- [ ] ADR source includes section hint
|