@dzhechkov/keysarium 1.7.15 → 1.7.18
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/.dz-manifest.json +213 -53
- package/README.md +29 -6
- package/README.ru.md +17 -0
- package/package.json +3 -3
- package/sbom.json +454 -54
- package/src/cli.js +32 -2
- package/src/commands/doctor.js +25 -1
- package/src/commands/init.js +46 -12
- package/src/utils.js +1 -0
- package/templates/.agents/skills/casarium/SKILL.md +29 -0
- package/templates/.claude/agents/code-goal-planner.md +9 -0
- package/templates/.claude/commands/casarium.md +3 -1
- package/templates/.claude/commands/cjm-prototype.md +2 -2
- package/templates/.claude/commands/research.md +4 -1
- package/templates/.claude/rules/checkpoint-protocol.md +2 -1
- package/templates/.claude/rules/research-quality.md +11 -6
- package/templates/.claude/shards/phase-2-research.shard.md +12 -8
- package/templates/.claude/shards/phase-25-cjm.shard.md +5 -3
- package/templates/.claude/skills/feature-adr/SKILL.md +17 -15
- package/templates/.claude/skills/feature-adr/modules/03-adr.md +1 -1
- package/templates/.claude/skills/feature-adr/modules/03.5-ideation-swarm.md +1 -1
- package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +2 -2
- package/templates/.claude/skills/feature-adr/modules/08-qe.md +1 -1
- package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +12 -12
- package/templates/.claude/skills/feature-adr/references/agentic-qe/LICENSE.agentic-qe +21 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +20 -16
- package/templates/.claude/skills/feature-adr/references/agentic-qe/UPSTREAM-MANIFEST.json +246 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/README.md +218 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{brutal-honesty-review.md → qe-ref-brutal-honesty-review/REFERENCE.md} +14 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/resources/assessment-rubrics.md +295 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/resources/review-template.md +102 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/schemas/output.json +291 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/assess-code.sh +179 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/assess-tests.sh +223 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/validate-config.json +34 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/REFERENCE.md +758 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/schemas/output.json +74 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/scripts/validate-config.json +25 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/REFERENCE.md +226 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/schemas/output.json +568 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/scripts/validate-config.json +25 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/01-flag-detection.md +57 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/02-core-agents.md +29 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/03-batch1-results.md +15 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/04-conditional-agents.md +23 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/05-decision-synthesis.md +29 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/06-report-generation.md +18 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/07-learning-persistence.md +29 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/08-final-output.md +18 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{qe-coverage-analysis.md → qe-ref-qe-coverage-analysis/REFERENCE.md} +42 -3
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/schemas/output.json +286 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/scripts/validate-config.json +42 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{qe-requirements-validation.md → qe-ref-qe-requirements-validation/REFERENCE.md} +13 -3
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/schemas/output.json +587 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/scripts/validate-config.json +37 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{regression-testing.md → qe-ref-regression-testing/REFERENCE.md} +30 -49
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/evals/regression-testing.yaml +504 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/schemas/output.json +311 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/scripts/validate-config.json +50 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{risk-based-testing.md → qe-ref-risk-based-testing/REFERENCE.md} +23 -52
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/evals/risk-based-testing.yaml +141 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/schemas/output.json +480 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/scripts/validate-config.json +25 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{shift-left-testing.md → qe-ref-shift-left-testing/REFERENCE.md} +33 -88
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/evals/shift-left-testing.yaml +145 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/schemas/output.json +459 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/scripts/validate-config.json +25 -0
- package/templates/CLAUDE.md +3 -1
- package/templates/docs/feature-adr/04-admin-guide.md +1 -1
- package/templates/docs/improvement-directions.md +3 -3
- package/templates/docs/keysarium/02-admin-guide.md +2 -2
- package/templates/docs/keysarium/03-user-guide.md +3 -3
- package/templates/docs/keysarium/05-architecture.md +9 -8
- package/templates/docs/keysarium/06-user-flows.md +4 -4
- package/templates/lib/platform-templates/copilot.md +1 -1
- package/templates/lib/platform-templates/opencode.md +1 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/enterprise-integration-testing.md +0 -111
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-ideation-swarm.md +0 -126
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agentic-qe.dev/schemas/risk-based-testing-output.json",
|
|
4
|
+
"title": "AQE Risk-Based Testing Skill Output Schema",
|
|
5
|
+
"description": "Schema for risk-based-testing skill output validation. Extends the base skill-output template with risk matrix, prioritization, and test allocation.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"skillName": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "risk-based-testing",
|
|
12
|
+
"description": "Must be 'risk-based-testing'"
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$"
|
|
17
|
+
},
|
|
18
|
+
"timestamp": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"format": "date-time"
|
|
21
|
+
},
|
|
22
|
+
"status": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": ["success", "partial", "failed", "skipped"]
|
|
25
|
+
},
|
|
26
|
+
"trustTier": {
|
|
27
|
+
"type": "integer",
|
|
28
|
+
"const": 3
|
|
29
|
+
},
|
|
30
|
+
"output": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"required": ["summary", "riskMatrix", "prioritization", "findings", "recommendations"],
|
|
33
|
+
"properties": {
|
|
34
|
+
"summary": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"minLength": 50,
|
|
37
|
+
"maxLength": 2000,
|
|
38
|
+
"description": "Human-readable summary of risk assessment"
|
|
39
|
+
},
|
|
40
|
+
"score": {
|
|
41
|
+
"$ref": "#/$defs/riskScore"
|
|
42
|
+
},
|
|
43
|
+
"riskMatrix": {
|
|
44
|
+
"$ref": "#/$defs/riskMatrix",
|
|
45
|
+
"description": "Complete risk assessment matrix"
|
|
46
|
+
},
|
|
47
|
+
"prioritization": {
|
|
48
|
+
"$ref": "#/$defs/prioritization",
|
|
49
|
+
"description": "Test prioritization based on risk"
|
|
50
|
+
},
|
|
51
|
+
"testAllocation": {
|
|
52
|
+
"$ref": "#/$defs/testAllocation",
|
|
53
|
+
"description": "Recommended test effort allocation"
|
|
54
|
+
},
|
|
55
|
+
"findings": {
|
|
56
|
+
"type": "array",
|
|
57
|
+
"items": {
|
|
58
|
+
"$ref": "#/$defs/riskFinding"
|
|
59
|
+
},
|
|
60
|
+
"maxItems": 200
|
|
61
|
+
},
|
|
62
|
+
"recommendations": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {
|
|
65
|
+
"$ref": "#/$defs/riskRecommendation"
|
|
66
|
+
},
|
|
67
|
+
"maxItems": 50
|
|
68
|
+
},
|
|
69
|
+
"mlAnalysis": {
|
|
70
|
+
"$ref": "#/$defs/mlRiskAnalysis",
|
|
71
|
+
"description": "ML-enhanced risk prediction"
|
|
72
|
+
},
|
|
73
|
+
"metrics": {
|
|
74
|
+
"$ref": "#/$defs/riskMetrics"
|
|
75
|
+
},
|
|
76
|
+
"artifacts": {
|
|
77
|
+
"type": "array",
|
|
78
|
+
"items": {
|
|
79
|
+
"$ref": "#/$defs/artifact"
|
|
80
|
+
},
|
|
81
|
+
"maxItems": 50
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"metadata": {
|
|
86
|
+
"$ref": "#/$defs/metadata"
|
|
87
|
+
},
|
|
88
|
+
"validation": {
|
|
89
|
+
"$ref": "#/$defs/validationResult"
|
|
90
|
+
},
|
|
91
|
+
"learning": {
|
|
92
|
+
"$ref": "#/$defs/learningData"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"$defs": {
|
|
96
|
+
"riskScore": {
|
|
97
|
+
"type": "object",
|
|
98
|
+
"required": ["value", "max"],
|
|
99
|
+
"properties": {
|
|
100
|
+
"value": {
|
|
101
|
+
"type": "number",
|
|
102
|
+
"minimum": 0,
|
|
103
|
+
"maximum": 100,
|
|
104
|
+
"description": "Overall risk mitigation score (100=all risks addressed)"
|
|
105
|
+
},
|
|
106
|
+
"max": {
|
|
107
|
+
"type": "number",
|
|
108
|
+
"const": 100
|
|
109
|
+
},
|
|
110
|
+
"grade": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"pattern": "^[A-F][+-]?$"
|
|
113
|
+
},
|
|
114
|
+
"riskPosture": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"enum": ["critical", "high", "moderate", "low", "minimal"],
|
|
117
|
+
"description": "Overall risk posture"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"riskMatrix": {
|
|
122
|
+
"type": "object",
|
|
123
|
+
"required": ["items"],
|
|
124
|
+
"properties": {
|
|
125
|
+
"items": {
|
|
126
|
+
"type": "array",
|
|
127
|
+
"items": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"required": ["id", "feature", "probability", "impact", "riskScore", "priority"],
|
|
130
|
+
"properties": {
|
|
131
|
+
"id": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"pattern": "^RISK-\\d{3,6}$"
|
|
134
|
+
},
|
|
135
|
+
"feature": {
|
|
136
|
+
"type": "string",
|
|
137
|
+
"description": "Feature or component name"
|
|
138
|
+
},
|
|
139
|
+
"description": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"description": "Risk description"
|
|
142
|
+
},
|
|
143
|
+
"probability": {
|
|
144
|
+
"type": "integer",
|
|
145
|
+
"minimum": 1,
|
|
146
|
+
"maximum": 5,
|
|
147
|
+
"description": "Probability of defect (1-5)"
|
|
148
|
+
},
|
|
149
|
+
"impact": {
|
|
150
|
+
"type": "integer",
|
|
151
|
+
"minimum": 1,
|
|
152
|
+
"maximum": 5,
|
|
153
|
+
"description": "Business impact if defect occurs (1-5)"
|
|
154
|
+
},
|
|
155
|
+
"riskScore": {
|
|
156
|
+
"type": "integer",
|
|
157
|
+
"minimum": 1,
|
|
158
|
+
"maximum": 25,
|
|
159
|
+
"description": "Calculated risk score (probability x impact)"
|
|
160
|
+
},
|
|
161
|
+
"priority": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"enum": ["critical", "high", "medium", "low"],
|
|
164
|
+
"description": "Testing priority based on risk"
|
|
165
|
+
},
|
|
166
|
+
"probabilityFactors": {
|
|
167
|
+
"type": "array",
|
|
168
|
+
"items": {
|
|
169
|
+
"type": "object",
|
|
170
|
+
"properties": {
|
|
171
|
+
"factor": {
|
|
172
|
+
"type": "string",
|
|
173
|
+
"enum": ["complexity", "change-rate", "developer-experience", "technical-debt", "dependencies", "age"]
|
|
174
|
+
},
|
|
175
|
+
"score": {
|
|
176
|
+
"type": "integer",
|
|
177
|
+
"minimum": 1,
|
|
178
|
+
"maximum": 5
|
|
179
|
+
},
|
|
180
|
+
"evidence": {
|
|
181
|
+
"type": "string"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
"description": "Factors contributing to probability"
|
|
186
|
+
},
|
|
187
|
+
"impactFactors": {
|
|
188
|
+
"type": "array",
|
|
189
|
+
"items": {
|
|
190
|
+
"type": "object",
|
|
191
|
+
"properties": {
|
|
192
|
+
"factor": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"enum": ["users-affected", "revenue", "safety", "reputation", "regulatory", "data-loss"]
|
|
195
|
+
},
|
|
196
|
+
"score": {
|
|
197
|
+
"type": "integer",
|
|
198
|
+
"minimum": 1,
|
|
199
|
+
"maximum": 5
|
|
200
|
+
},
|
|
201
|
+
"evidence": {
|
|
202
|
+
"type": "string"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
"description": "Factors contributing to impact"
|
|
207
|
+
},
|
|
208
|
+
"mitigations": {
|
|
209
|
+
"type": "array",
|
|
210
|
+
"items": {
|
|
211
|
+
"type": "string"
|
|
212
|
+
},
|
|
213
|
+
"description": "Risk mitigation strategies"
|
|
214
|
+
},
|
|
215
|
+
"testingStrategy": {
|
|
216
|
+
"type": "string",
|
|
217
|
+
"enum": ["comprehensive", "thorough", "standard", "smoke"],
|
|
218
|
+
"description": "Recommended testing depth"
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"criticalCount": {
|
|
224
|
+
"type": "integer",
|
|
225
|
+
"description": "Number of critical-priority risks"
|
|
226
|
+
},
|
|
227
|
+
"highCount": {
|
|
228
|
+
"type": "integer",
|
|
229
|
+
"description": "Number of high-priority risks"
|
|
230
|
+
},
|
|
231
|
+
"mediumCount": {
|
|
232
|
+
"type": "integer",
|
|
233
|
+
"description": "Number of medium-priority risks"
|
|
234
|
+
},
|
|
235
|
+
"lowCount": {
|
|
236
|
+
"type": "integer",
|
|
237
|
+
"description": "Number of low-priority risks"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
"prioritization": {
|
|
242
|
+
"type": "object",
|
|
243
|
+
"properties": {
|
|
244
|
+
"critical": {
|
|
245
|
+
"type": "array",
|
|
246
|
+
"items": {
|
|
247
|
+
"type": "string"
|
|
248
|
+
},
|
|
249
|
+
"description": "Features requiring comprehensive testing"
|
|
250
|
+
},
|
|
251
|
+
"high": {
|
|
252
|
+
"type": "array",
|
|
253
|
+
"items": {
|
|
254
|
+
"type": "string"
|
|
255
|
+
},
|
|
256
|
+
"description": "Features requiring thorough testing"
|
|
257
|
+
},
|
|
258
|
+
"medium": {
|
|
259
|
+
"type": "array",
|
|
260
|
+
"items": {
|
|
261
|
+
"type": "string"
|
|
262
|
+
},
|
|
263
|
+
"description": "Features requiring standard testing"
|
|
264
|
+
},
|
|
265
|
+
"low": {
|
|
266
|
+
"type": "array",
|
|
267
|
+
"items": {
|
|
268
|
+
"type": "string"
|
|
269
|
+
},
|
|
270
|
+
"description": "Features requiring smoke testing"
|
|
271
|
+
},
|
|
272
|
+
"testOrder": {
|
|
273
|
+
"type": "array",
|
|
274
|
+
"items": {
|
|
275
|
+
"type": "object",
|
|
276
|
+
"properties": {
|
|
277
|
+
"order": { "type": "integer" },
|
|
278
|
+
"feature": { "type": "string" },
|
|
279
|
+
"rationale": { "type": "string" }
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
"description": "Recommended test execution order"
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"testAllocation": {
|
|
287
|
+
"type": "object",
|
|
288
|
+
"properties": {
|
|
289
|
+
"totalEffort": {
|
|
290
|
+
"type": "string",
|
|
291
|
+
"description": "Total estimated testing effort"
|
|
292
|
+
},
|
|
293
|
+
"criticalAllocation": {
|
|
294
|
+
"type": "object",
|
|
295
|
+
"properties": {
|
|
296
|
+
"percentage": { "type": "number" },
|
|
297
|
+
"techniques": { "type": "array", "items": { "type": "string" } },
|
|
298
|
+
"estimatedTime": { "type": "string" }
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"highAllocation": {
|
|
302
|
+
"type": "object",
|
|
303
|
+
"properties": {
|
|
304
|
+
"percentage": { "type": "number" },
|
|
305
|
+
"techniques": { "type": "array", "items": { "type": "string" } },
|
|
306
|
+
"estimatedTime": { "type": "string" }
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
"mediumAllocation": {
|
|
310
|
+
"type": "object",
|
|
311
|
+
"properties": {
|
|
312
|
+
"percentage": { "type": "number" },
|
|
313
|
+
"techniques": { "type": "array", "items": { "type": "string" } },
|
|
314
|
+
"estimatedTime": { "type": "string" }
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
"lowAllocation": {
|
|
318
|
+
"type": "object",
|
|
319
|
+
"properties": {
|
|
320
|
+
"percentage": { "type": "number" },
|
|
321
|
+
"techniques": { "type": "array", "items": { "type": "string" } },
|
|
322
|
+
"estimatedTime": { "type": "string" }
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
"recommendedDistribution": {
|
|
326
|
+
"type": "object",
|
|
327
|
+
"properties": {
|
|
328
|
+
"critical": { "type": "number", "default": 60 },
|
|
329
|
+
"high": { "type": "number", "default": 25 },
|
|
330
|
+
"medium": { "type": "number", "default": 10 },
|
|
331
|
+
"low": { "type": "number", "default": 5 }
|
|
332
|
+
},
|
|
333
|
+
"description": "Recommended effort distribution percentages"
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
"riskFinding": {
|
|
338
|
+
"type": "object",
|
|
339
|
+
"required": ["id", "title", "type", "severity"],
|
|
340
|
+
"properties": {
|
|
341
|
+
"id": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"pattern": "^RBT-\\d{3,6}$"
|
|
344
|
+
},
|
|
345
|
+
"title": {
|
|
346
|
+
"type": "string",
|
|
347
|
+
"minLength": 10,
|
|
348
|
+
"maxLength": 200
|
|
349
|
+
},
|
|
350
|
+
"description": { "type": "string" },
|
|
351
|
+
"type": {
|
|
352
|
+
"type": "string",
|
|
353
|
+
"enum": ["unmitigated-risk", "coverage-gap", "incorrect-priority", "missing-assessment", "outdated-risk", "opportunity"]
|
|
354
|
+
},
|
|
355
|
+
"severity": {
|
|
356
|
+
"type": "string",
|
|
357
|
+
"enum": ["critical", "high", "medium", "low", "info"]
|
|
358
|
+
},
|
|
359
|
+
"affectedRisk": {
|
|
360
|
+
"type": "string",
|
|
361
|
+
"description": "Which risk item this finding affects"
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
"riskRecommendation": {
|
|
366
|
+
"type": "object",
|
|
367
|
+
"required": ["id", "title", "priority", "riskReduction"],
|
|
368
|
+
"properties": {
|
|
369
|
+
"id": {
|
|
370
|
+
"type": "string",
|
|
371
|
+
"pattern": "^REC-\\d{3,6}$"
|
|
372
|
+
},
|
|
373
|
+
"title": { "type": "string" },
|
|
374
|
+
"description": { "type": "string" },
|
|
375
|
+
"priority": {
|
|
376
|
+
"type": "string",
|
|
377
|
+
"enum": ["critical", "high", "medium", "low"]
|
|
378
|
+
},
|
|
379
|
+
"riskReduction": {
|
|
380
|
+
"type": "number",
|
|
381
|
+
"minimum": 0,
|
|
382
|
+
"maximum": 100,
|
|
383
|
+
"description": "Expected percentage reduction in risk"
|
|
384
|
+
},
|
|
385
|
+
"effort": {
|
|
386
|
+
"type": "string",
|
|
387
|
+
"enum": ["trivial", "low", "medium", "high", "major"]
|
|
388
|
+
},
|
|
389
|
+
"affectedRisks": {
|
|
390
|
+
"type": "array",
|
|
391
|
+
"items": { "type": "string" },
|
|
392
|
+
"description": "Risk IDs this addresses"
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
"mlRiskAnalysis": {
|
|
397
|
+
"type": "object",
|
|
398
|
+
"properties": {
|
|
399
|
+
"model": {
|
|
400
|
+
"type": "string",
|
|
401
|
+
"description": "ML model used"
|
|
402
|
+
},
|
|
403
|
+
"accuracy": {
|
|
404
|
+
"type": "number",
|
|
405
|
+
"minimum": 0,
|
|
406
|
+
"maximum": 100,
|
|
407
|
+
"description": "Model accuracy percentage"
|
|
408
|
+
},
|
|
409
|
+
"predictions": {
|
|
410
|
+
"type": "array",
|
|
411
|
+
"items": {
|
|
412
|
+
"type": "object",
|
|
413
|
+
"properties": {
|
|
414
|
+
"feature": { "type": "string" },
|
|
415
|
+
"predictedRisk": { "type": "number" },
|
|
416
|
+
"confidence": { "type": "number" },
|
|
417
|
+
"factors": { "type": "array", "items": { "type": "string" } }
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"historicalCorrelation": {
|
|
422
|
+
"type": "number",
|
|
423
|
+
"description": "How well predictions match historical bugs"
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
"riskMetrics": {
|
|
428
|
+
"type": "object",
|
|
429
|
+
"properties": {
|
|
430
|
+
"totalRisks": { "type": "integer" },
|
|
431
|
+
"averageRiskScore": { "type": "number" },
|
|
432
|
+
"maxRiskScore": { "type": "integer" },
|
|
433
|
+
"coverageByPriority": {
|
|
434
|
+
"type": "object",
|
|
435
|
+
"properties": {
|
|
436
|
+
"critical": { "type": "number" },
|
|
437
|
+
"high": { "type": "number" },
|
|
438
|
+
"medium": { "type": "number" },
|
|
439
|
+
"low": { "type": "number" }
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
"riskReductionTarget": { "type": "number" }
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
"artifact": {
|
|
446
|
+
"type": "object",
|
|
447
|
+
"required": ["type", "path"],
|
|
448
|
+
"properties": {
|
|
449
|
+
"type": { "type": "string" },
|
|
450
|
+
"path": { "type": "string" },
|
|
451
|
+
"format": { "type": "string" },
|
|
452
|
+
"description": { "type": "string" }
|
|
453
|
+
}
|
|
454
|
+
},
|
|
455
|
+
"metadata": {
|
|
456
|
+
"type": "object",
|
|
457
|
+
"properties": {
|
|
458
|
+
"executionTimeMs": { "type": "integer" },
|
|
459
|
+
"agentId": { "type": "string" },
|
|
460
|
+
"modelUsed": { "type": "string" },
|
|
461
|
+
"environment": { "type": "string" }
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
"validationResult": {
|
|
465
|
+
"type": "object",
|
|
466
|
+
"properties": {
|
|
467
|
+
"schemaValid": { "type": "boolean" },
|
|
468
|
+
"contentValid": { "type": "boolean" },
|
|
469
|
+
"confidence": { "type": "number" }
|
|
470
|
+
}
|
|
471
|
+
},
|
|
472
|
+
"learningData": {
|
|
473
|
+
"type": "object",
|
|
474
|
+
"properties": {
|
|
475
|
+
"patternsDetected": { "type": "array", "items": { "type": "string" } },
|
|
476
|
+
"reward": { "type": "number" }
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skillName": "risk-based-testing",
|
|
3
|
+
"skillVersion": "1.0.0",
|
|
4
|
+
"requiredTools": [
|
|
5
|
+
"jq"
|
|
6
|
+
],
|
|
7
|
+
"optionalTools": [],
|
|
8
|
+
"schemaPath": "schemas/output.json",
|
|
9
|
+
"requiredFields": [
|
|
10
|
+
"skillName",
|
|
11
|
+
"status",
|
|
12
|
+
"output"
|
|
13
|
+
],
|
|
14
|
+
"requiredNonEmptyFields": [],
|
|
15
|
+
"mustContainTerms": [],
|
|
16
|
+
"mustNotContainTerms": [],
|
|
17
|
+
"enumValidations": {
|
|
18
|
+
".status": [
|
|
19
|
+
"success",
|
|
20
|
+
"partial",
|
|
21
|
+
"failed",
|
|
22
|
+
"skipped"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -16,29 +16,32 @@ validation:
|
|
|
16
16
|
schema_path: schemas/output.json
|
|
17
17
|
validator_path: scripts/validate-config.json
|
|
18
18
|
eval_path: evals/shift-left-testing.yaml
|
|
19
|
-
|
|
20
19
|
---
|
|
21
20
|
|
|
21
|
+
<!-- Vendored from https://github.com/proffesor-for-testing/agentic-qe at 0a6de058575cbe292afe220df105cc74120f7674 (MIT, Copyright (c) 2025 Agentic QE Contributors), 2026-10-23. Bundled references do not install aqe, MCP tools, pattern memory, or fleet runtime. See ../LICENSE.agentic-qe and ../README.md. -->
|
|
22
|
+
|
|
23
|
+
## Keysarium execution adapter
|
|
24
|
+
|
|
25
|
+
This pinned upstream body is methodology inside the bundled feature-ADR pipeline. In Reference Mode, the feature-ADR module that loaded this file owns orchestration and checkpoints. Use the reasoning and output shape below with the host's available tools. Do not treat upstream `aqe` CLI/MCP calls, named agent roles, browser tools, or example absolute paths as installed capabilities. Name a missing capability or evidence in the checkpoint instead of reporting that an upstream step ran. The schemas and eval files are bundled for explicit validation; bundling them does not run those checks automatically.
|
|
26
|
+
|
|
27
|
+
Relative paths such as `schemas/output.json`, `evals/...` and `steps/...` resolve from this skill directory under `references/agentic-qe/`. When Direct Mode has a separately installed `aqe` runtime, follow the feature-ADR module's direct-mode branch and verify that each required runtime capability is actually available.
|
|
28
|
+
|
|
29
|
+
<!-- BEGIN AGENTIC-QE UPSTREAM BODY -->
|
|
30
|
+
|
|
22
31
|
# Shift-Left Testing
|
|
23
32
|
|
|
24
33
|
<default_to_action>
|
|
25
34
|
When implementing early testing practices:
|
|
26
35
|
1. VALIDATE requirements before coding (testability, BDD scenarios)
|
|
27
|
-
2. WRITE tests before implementation (TDD
|
|
36
|
+
2. WRITE tests before implementation (TDD)
|
|
28
37
|
3. AUTOMATE in CI pipeline (every commit triggers tests)
|
|
29
|
-
4.
|
|
30
|
-
5. FIX defects immediately - never let them accumulate
|
|
38
|
+
4. FIX defects immediately - never let them accumulate
|
|
31
39
|
|
|
32
40
|
**Quick Shift-Left Levels:**
|
|
33
41
|
- Level 1: Unit tests with each PR (developer responsibility)
|
|
34
42
|
- Level 2: TDD practice (tests before code)
|
|
35
43
|
- Level 3: BDD/Example mapping in refinement (requirements testing)
|
|
36
44
|
- Level 4: Risk analysis in design (architecture testing)
|
|
37
|
-
|
|
38
|
-
**Critical Success Factors:**
|
|
39
|
-
- Defects found in requirements cost 1x; in production cost 100x
|
|
40
|
-
- Every commit must run automated tests
|
|
41
|
-
- Quality is built in, not tested in
|
|
42
45
|
</default_to_action>
|
|
43
46
|
|
|
44
47
|
## Quick Reference Card
|
|
@@ -49,24 +52,6 @@ When implementing early testing practices:
|
|
|
49
52
|
- Starting TDD practice
|
|
50
53
|
- Improving requirements quality
|
|
51
54
|
|
|
52
|
-
### Cost of Defects by Phase
|
|
53
|
-
| Phase | Relative Cost | Example |
|
|
54
|
-
|-------|--------------|---------|
|
|
55
|
-
| Requirements | 1x | Fix doc: 30 min |
|
|
56
|
-
| Design | 5x | Redesign: few hours |
|
|
57
|
-
| Development | 10x | Code fix: 1 day |
|
|
58
|
-
| Testing | 20x | Fix + retest: 2 days |
|
|
59
|
-
| Production | 100x | Hotfix + rollback + investigation |
|
|
60
|
-
|
|
61
|
-
### Test Pyramid
|
|
62
|
-
```
|
|
63
|
-
/\ E2E (10%) - Critical user journeys
|
|
64
|
-
/ \
|
|
65
|
-
/ \ Integration (20%) - Component interactions
|
|
66
|
-
/ \
|
|
67
|
-
/________\ Unit (70%) - Fast, isolated, comprehensive
|
|
68
|
-
```
|
|
69
|
-
|
|
70
55
|
### Shift-Left Levels
|
|
71
56
|
| Level | Practice | When |
|
|
72
57
|
|-------|----------|------|
|
|
@@ -104,65 +89,6 @@ jobs:
|
|
|
104
89
|
|
|
105
90
|
---
|
|
106
91
|
|
|
107
|
-
## Level 2: TDD Practice
|
|
108
|
-
|
|
109
|
-
```javascript
|
|
110
|
-
// Red: Write failing test first
|
|
111
|
-
test('calculates discount for orders over $100', () => {
|
|
112
|
-
const order = new Order([{ price: 150 }]);
|
|
113
|
-
expect(order.discount).toBe(15); // 10% off
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
// Green: Minimal implementation
|
|
117
|
-
class Order {
|
|
118
|
-
get discount() {
|
|
119
|
-
return this.total > 100 ? this.total * 0.1 : 0;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Refactor: Improve while keeping green
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Level 3: BDD in Refinement
|
|
129
|
-
|
|
130
|
-
```gherkin
|
|
131
|
-
# Example mapping before coding
|
|
132
|
-
Feature: Loyalty Discount
|
|
133
|
-
Scenario: Gold member gets 15% discount
|
|
134
|
-
Given a customer with "gold" membership
|
|
135
|
-
When they checkout with $200 in cart
|
|
136
|
-
Then discount applied is $30
|
|
137
|
-
And order total is $170
|
|
138
|
-
|
|
139
|
-
Scenario: New customer gets no discount
|
|
140
|
-
Given a customer with no membership
|
|
141
|
-
When they checkout with $200 in cart
|
|
142
|
-
Then no discount is applied
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## Level 4: Risk Analysis in Design
|
|
148
|
-
|
|
149
|
-
```typescript
|
|
150
|
-
// During architecture review
|
|
151
|
-
await Task("Risk Analysis", {
|
|
152
|
-
phase: 'design',
|
|
153
|
-
component: 'payment-service',
|
|
154
|
-
questions: [
|
|
155
|
-
'What happens when payment gateway times out?',
|
|
156
|
-
'How do we handle duplicate submissions?',
|
|
157
|
-
'What if inventory changed during checkout?'
|
|
158
|
-
]
|
|
159
|
-
}, "qe-requirements-validator");
|
|
160
|
-
|
|
161
|
-
// Output: Testability requirements, failure mode tests
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
92
|
## Agent-Assisted Shift-Left
|
|
167
93
|
|
|
168
94
|
```typescript
|
|
@@ -226,6 +152,25 @@ const shiftLeftFleet = await FleetManager.coordinate({
|
|
|
226
152
|
|
|
227
153
|
## Remember
|
|
228
154
|
|
|
229
|
-
**Earlier = Cheaper.** Requirements defects cost 1x; production defects cost 100x. Test pyramid: 70% unit, 20% integration, 10% E2E. Every commit runs tests. TDD builds quality in.
|
|
230
|
-
|
|
231
155
|
**With Agents:** Agents validate requirements testability, generate tests from specs, and select optimal regression suites. Use agents to implement shift-left practices consistently.
|
|
156
|
+
|
|
157
|
+
## Skill Composition
|
|
158
|
+
|
|
159
|
+
- **TDD practice** → Use `/tdd-london-chicago` for specific TDD guidance
|
|
160
|
+
- **Generate tests** → Use `/qe-test-generation` for AI-powered test generation
|
|
161
|
+
- **CI/CD quality** → Use `/cicd-pipeline-qe-orchestrator` for pipeline setup
|
|
162
|
+
|
|
163
|
+
## Gotchas
|
|
164
|
+
|
|
165
|
+
- "Shift left" doesn't mean "only test left" — production monitoring (shift right) is still needed
|
|
166
|
+
- Agent generates tests before understanding requirements — tests for wrong behavior are worse than no tests
|
|
167
|
+
- CI pipeline tests that take >10 minutes kill the feedback loop — keep commit-stage tests under 5 minutes
|
|
168
|
+
- TDD discipline degrades when agent writes test+code simultaneously — enforce Red phase separation
|
|
169
|
+
- Shifting left without lightweight environments just shifts the bottleneck — fix environments first
|
|
170
|
+
<!-- END AGENTIC-QE UPSTREAM BODY -->
|
|
171
|
+
|
|
172
|
+
## Keysarium local addition: choosing test layers
|
|
173
|
+
|
|
174
|
+
The test pyramid is a planning aid: put fast checks near pure rules, integration checks at real boundaries, and end-to-end checks around essential journeys. The proportions depend on the system; a fixed percentage or universal cost multiplier is not an acceptance criterion.
|
|
175
|
+
|
|
176
|
+
Before coding, turn an ambiguous requirement into an example with an expected result. During implementation, make the smallest useful check fail before fixing the behavior. In CI, run the checks that can catch the defect at the earliest reliable layer and keep a separate path for slower whole-system evidence.
|