@dzhechkov/keysarium 1.7.18 → 1.7.20

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 (55) hide show
  1. package/.dz-manifest.json +172 -32
  2. package/README.md +3 -3
  3. package/package.json +1 -1
  4. package/sbom.json +391 -41
  5. package/src/commands/init.js +10 -0
  6. package/src/commands/update.js +30 -3
  7. package/src/utils.js +6 -0
  8. package/templates/.claude/agents/code-goal-planner.md +441 -3
  9. package/templates/.claude/skills/feature-adr/SKILL.md +9 -7
  10. package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +1 -1
  11. package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +1 -1
  12. package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +11 -9
  13. package/templates/.claude/skills/feature-adr/references/agentic-qe/UPSTREAM-MANIFEST.json +290 -70
  14. package/templates/.claude/skills/feature-adr/references/agentic-qe/{chaos-engineering-resilience.md → qe-ref-chaos-engineering-resilience/REFERENCE.md} +13 -0
  15. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -0
  16. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/schemas/output.json +1205 -0
  17. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/scripts/validate-config.json +47 -0
  18. package/templates/.claude/skills/feature-adr/references/agentic-qe/{mutation-testing.md → qe-ref-mutation-testing/REFERENCE.md} +39 -1
  19. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/config.json +14 -0
  20. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/evals/mutation-testing.yaml +651 -0
  21. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/references/mutation-operators.md +38 -0
  22. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/schemas/output.json +707 -0
  23. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/scripts/validate-config.json +44 -0
  24. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/test-data/sample-output.json +295 -0
  25. package/templates/.claude/skills/feature-adr/references/agentic-qe/{performance-testing.md → qe-ref-performance-testing/REFERENCE.md} +35 -1
  26. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/config.json +18 -0
  27. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/evals/performance-testing.yaml +771 -0
  28. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/references/k6-patterns.md +72 -0
  29. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/schemas/output.json +1184 -0
  30. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/scripts/validate-config.json +55 -0
  31. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/REFERENCE.md +222 -0
  32. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -0
  33. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/schemas/output.json +505 -0
  34. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/scripts/validate-config.json +25 -0
  35. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/01-flag-detection.md +202 -0
  36. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/02-core-agents.md +428 -0
  37. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/03-batch1-results.md +101 -0
  38. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/04-conditional-agents.md +125 -0
  39. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/05-decision-synthesis.md +136 -0
  40. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/06-report-generation.md +181 -0
  41. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/07-learning-persistence.md +157 -0
  42. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/08-feedback-loop.md +122 -0
  43. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/09-final-output.md +140 -0
  44. package/templates/.claude/skills/feature-adr/references/agentic-qe/{security-testing.md → qe-ref-security-testing/REFERENCE.md} +44 -1
  45. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/config.json +13 -0
  46. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/evals/security-testing.yaml +789 -0
  47. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/references/compliance-agent-commands.md +131 -0
  48. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/references/owasp-top-10.md +66 -0
  49. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/schemas/output.json +879 -0
  50. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/scripts/validate-config.json +45 -0
  51. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/templates/security-report.md +44 -0
  52. package/templates/.claude/skills/feature-adr/references/agentic-qe/{tdd-london-chicago.md → qe-ref-tdd-london-chicago/REFERENCE.md} +21 -1
  53. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-tdd-london-chicago/schemas/output.json +444 -0
  54. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-tdd-london-chicago/scripts/validate-config.json +43 -0
  55. package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-production-swarm.md +0 -108
@@ -0,0 +1,651 @@
1
+ # =============================================================================
2
+ # Mutation Testing Skill Evaluation Test Suite v1.0.0
3
+ # Path: .claude/skills/mutation-testing/evals/mutation-testing.yaml
4
+ # =============================================================================
5
+ #
6
+ # This evaluation suite validates mutation testing skill behavior through:
7
+ # 1. Input/expected-output test cases for mutation operators
8
+ # 2. Multi-model consistency testing
9
+ # 3. Semantic validation of mutation analysis quality
10
+ # 4. AQE MCP integration for shared learning
11
+ #
12
+ # Schema: .claude/skills/.validation/schemas/skill-eval.schema.json
13
+ # =============================================================================
14
+
15
+ skill: mutation-testing
16
+ version: 1.0.0
17
+ description: >
18
+ Comprehensive evaluation test suite for the mutation-testing skill.
19
+ Tests mutation score calculation, operator detection, surviving mutant
20
+ analysis, and test improvement recommendations across multiple models
21
+ to ensure consistent, high-quality mutation analysis output.
22
+
23
+ # =============================================================================
24
+ # Multi-Model Configuration
25
+ # =============================================================================
26
+
27
+ models_to_test:
28
+ - claude-sonnet-4-6 # Primary (high accuracy expected)
29
+ - claude-haiku-4-5 # Fast model (minimum quality floor)
30
+
31
+ # =============================================================================
32
+ # MCP Integration Configuration
33
+ # =============================================================================
34
+
35
+ mcp_integration:
36
+ enabled: true
37
+ namespace: skill-validation/mutation-testing
38
+
39
+ query_patterns: true
40
+ track_outcomes: true
41
+ store_patterns: true
42
+ share_learning: true
43
+ update_quality_gate: true
44
+
45
+ target_agents:
46
+ - qe-learning-coordinator
47
+ - qe-queen-coordinator
48
+ - qe-mutation-tester
49
+
50
+ # =============================================================================
51
+ # ReasoningBank Learning Configuration
52
+ # =============================================================================
53
+
54
+ learning:
55
+ store_success_patterns: true
56
+ store_failure_patterns: true
57
+ pattern_ttl_days: 90
58
+ min_confidence_to_store: 0.7
59
+ cross_model_comparison: true
60
+
61
+ # =============================================================================
62
+ # Result Format Configuration
63
+ # =============================================================================
64
+
65
+ result_format:
66
+ json_output: true
67
+ markdown_report: true
68
+ include_raw_output: false
69
+ include_timing: true
70
+ include_token_usage: true
71
+
72
+ # =============================================================================
73
+ # Environment Setup
74
+ # =============================================================================
75
+
76
+ setup:
77
+ required_tools:
78
+ - jq
79
+ environment_variables:
80
+ MUTATION_TIMEOUT_MS: "30000"
81
+ fixtures:
82
+ - name: simple_arithmetic_code
83
+ content: |
84
+ function calculateTotal(price, quantity) {
85
+ return price * quantity;
86
+ }
87
+ - name: conditional_code
88
+ content: |
89
+ function isAdult(age) {
90
+ return age >= 18;
91
+ }
92
+ - name: complex_code
93
+ content: |
94
+ function processOrder(order) {
95
+ if (order.quantity <= 0) {
96
+ throw new Error('Invalid quantity');
97
+ }
98
+ let discount = 0;
99
+ if (order.quantity >= 10 && order.isPremium) {
100
+ discount = 0.1;
101
+ }
102
+ return order.price * order.quantity * (1 - discount);
103
+ }
104
+
105
+ # =============================================================================
106
+ # Test Cases
107
+ # =============================================================================
108
+
109
+ test_cases:
110
+ # -------------------------------------------------------------------------
111
+ # Basic Functionality Tests
112
+ # -------------------------------------------------------------------------
113
+
114
+ - id: tc001_basic_mutation_analysis
115
+ description: "Skill analyzes simple code and identifies potential mutations"
116
+ category: basic
117
+ priority: critical
118
+
119
+ input:
120
+ code: |
121
+ function add(a, b) {
122
+ return a + b;
123
+ }
124
+ context:
125
+ language: javascript
126
+ prompt: |
127
+ Analyze this code for mutation testing. Identify what mutations
128
+ could be applied and what tests would be needed to kill them.
129
+
130
+ expected_output:
131
+ must_contain:
132
+ - "mutation"
133
+ - "arithmetic"
134
+ - "+"
135
+ must_not_contain:
136
+ - "unable to analyze"
137
+ - "error"
138
+ finding_count:
139
+ min: 1
140
+ max: 10
141
+
142
+ validation:
143
+ schema_check: true
144
+ keyword_match_threshold: 0.8
145
+ reasoning_quality_min: 0.7
146
+
147
+ - id: tc002_mutation_score_calculation
148
+ description: "Skill correctly calculates mutation score from kill/survive data"
149
+ category: basic
150
+ priority: critical
151
+
152
+ input:
153
+ prompt: |
154
+ Given these mutation testing results:
155
+ - Total mutants: 100
156
+ - Killed: 85
157
+ - Survived: 12
158
+ - Timeout: 2
159
+ - No Coverage: 1
160
+
161
+ Calculate the mutation score and assess the test suite quality.
162
+
163
+ expected_output:
164
+ must_contain:
165
+ - "85"
166
+ - "mutation score"
167
+ - "quality"
168
+ must_match_regex:
169
+ - "8[0-9](\\.\\d+)?%" # Score around 85%
170
+
171
+ validation:
172
+ schema_check: true
173
+ keyword_match_threshold: 0.9
174
+
175
+ # -------------------------------------------------------------------------
176
+ # Arithmetic Operator Tests (AOR)
177
+ # -------------------------------------------------------------------------
178
+
179
+ - id: tc003_arithmetic_operator_mutation
180
+ description: "Skill identifies arithmetic operator mutations (+, -, *, /)"
181
+ category: operators
182
+ priority: high
183
+
184
+ input:
185
+ code: |
186
+ function calculateTotal(price, quantity, tax) {
187
+ const subtotal = price * quantity;
188
+ const taxAmount = subtotal * tax;
189
+ return subtotal + taxAmount;
190
+ }
191
+ context:
192
+ language: javascript
193
+ prompt: |
194
+ Perform mutation analysis focusing on arithmetic operators.
195
+ Identify all AOR (Arithmetic Operator Replacement) mutations.
196
+
197
+ expected_output:
198
+ must_contain:
199
+ - "arithmetic"
200
+ - "*"
201
+ - "+"
202
+ - "mutant"
203
+ must_not_contain:
204
+ - "no mutations"
205
+
206
+ validation:
207
+ schema_check: true
208
+ keyword_match_threshold: 0.8
209
+
210
+ # -------------------------------------------------------------------------
211
+ # Relational Operator Tests (ROR)
212
+ # -------------------------------------------------------------------------
213
+
214
+ - id: tc004_relational_operator_mutation
215
+ description: "Skill identifies relational operator mutations (>, <, >=, <=, ==, !=)"
216
+ category: operators
217
+ priority: high
218
+
219
+ input:
220
+ code: |
221
+ function isEligible(age, income) {
222
+ if (age >= 18 && income > 30000) {
223
+ return true;
224
+ }
225
+ if (age < 65 && income <= 100000) {
226
+ return true;
227
+ }
228
+ return false;
229
+ }
230
+ context:
231
+ language: javascript
232
+ prompt: |
233
+ Analyze this code for relational operator mutations (ROR).
234
+ Identify boundary conditions that need testing.
235
+
236
+ expected_output:
237
+ must_contain:
238
+ - "relational"
239
+ - ">="
240
+ - "boundary"
241
+ - "18"
242
+ must_not_contain:
243
+ - "unable"
244
+
245
+ validation:
246
+ schema_check: true
247
+ keyword_match_threshold: 0.8
248
+ reasoning_quality_min: 0.7
249
+
250
+ - id: tc005_boundary_mutation_detection
251
+ description: "Skill detects boundary value mutations (>= to >, etc.)"
252
+ category: operators
253
+ priority: critical
254
+
255
+ input:
256
+ code: |
257
+ function getDiscount(quantity) {
258
+ if (quantity >= 10) {
259
+ return 0.1; // 10% discount
260
+ }
261
+ return 0;
262
+ }
263
+ context:
264
+ language: javascript
265
+ prompt: |
266
+ This code has a boundary condition at quantity=10.
267
+ What mutation would test if the boundary is correctly tested?
268
+ What test case would kill that mutant?
269
+
270
+ expected_output:
271
+ must_contain:
272
+ - "10"
273
+ - "boundary"
274
+ - ">="
275
+ - ">"
276
+ must_not_contain:
277
+ - "no boundary"
278
+
279
+ validation:
280
+ schema_check: true
281
+ reasoning_quality_min: 0.8
282
+
283
+ # -------------------------------------------------------------------------
284
+ # Logical Operator Tests (LCR/LOD)
285
+ # -------------------------------------------------------------------------
286
+
287
+ - id: tc006_logical_operator_mutation
288
+ description: "Skill identifies logical operator mutations (&&, ||, !)"
289
+ category: operators
290
+ priority: high
291
+
292
+ input:
293
+ code: |
294
+ function canAccess(user) {
295
+ return user.isActive && (user.role === 'admin' || user.hasPermission);
296
+ }
297
+ context:
298
+ language: javascript
299
+ prompt: |
300
+ Analyze this code for logical connector replacements (LCR).
301
+ What happens if && is changed to || or vice versa?
302
+
303
+ expected_output:
304
+ must_contain:
305
+ - "logical"
306
+ - "&&"
307
+ - "||"
308
+ must_not_contain:
309
+ - "no logical"
310
+
311
+ validation:
312
+ schema_check: true
313
+ keyword_match_threshold: 0.8
314
+
315
+ # -------------------------------------------------------------------------
316
+ # Conditional Operator Tests (COR)
317
+ # -------------------------------------------------------------------------
318
+
319
+ - id: tc007_conditional_mutation
320
+ description: "Skill identifies conditional/decision mutations"
321
+ category: operators
322
+ priority: high
323
+
324
+ input:
325
+ code: |
326
+ function processPayment(payment) {
327
+ if (payment.amount > 0) {
328
+ if (payment.verified) {
329
+ return 'approved';
330
+ }
331
+ return 'pending';
332
+ }
333
+ return 'rejected';
334
+ }
335
+ context:
336
+ language: javascript
337
+ prompt: |
338
+ Analyze conditional mutations for this payment processing code.
339
+ Consider mutations like replacing conditions with true/false.
340
+
341
+ expected_output:
342
+ must_contain:
343
+ - "conditional"
344
+ - "if"
345
+ - "true"
346
+ - "false"
347
+
348
+ validation:
349
+ schema_check: true
350
+ keyword_match_threshold: 0.7
351
+
352
+ # -------------------------------------------------------------------------
353
+ # Return Value Tests (RVR)
354
+ # -------------------------------------------------------------------------
355
+
356
+ - id: tc008_return_value_mutation
357
+ description: "Skill identifies return value mutations"
358
+ category: operators
359
+ priority: medium
360
+
361
+ input:
362
+ code: |
363
+ function getStatus(code) {
364
+ if (code === 200) return 'success';
365
+ if (code === 404) return 'not found';
366
+ if (code >= 500) return 'error';
367
+ return 'unknown';
368
+ }
369
+ context:
370
+ language: javascript
371
+ prompt: |
372
+ Analyze return value mutations for this status code handler.
373
+ What mutations could be applied to the return statements?
374
+
375
+ expected_output:
376
+ must_contain:
377
+ - "return"
378
+ - "mutation"
379
+ - "success"
380
+ - "error"
381
+
382
+ validation:
383
+ schema_check: true
384
+ keyword_match_threshold: 0.7
385
+
386
+ # -------------------------------------------------------------------------
387
+ # Surviving Mutant Analysis Tests
388
+ # -------------------------------------------------------------------------
389
+
390
+ - id: tc009_surviving_mutant_analysis
391
+ description: "Skill analyzes surviving mutants and suggests test improvements"
392
+ category: analysis
393
+ priority: critical
394
+
395
+ input:
396
+ prompt: |
397
+ The following mutant survived:
398
+ - File: src/validator.ts
399
+ - Line: 45
400
+ - Original: if (age >= 18)
401
+ - Mutated: if (age > 18)
402
+ - Tests that cover this line: ['should validate adult', 'should validate minor']
403
+
404
+ Why did this mutant survive and what test would kill it?
405
+
406
+ expected_output:
407
+ must_contain:
408
+ - "boundary"
409
+ - "18"
410
+ - "test"
411
+ - "exactly"
412
+ must_not_contain:
413
+ - "cannot determine"
414
+
415
+ validation:
416
+ schema_check: true
417
+ reasoning_quality_min: 0.8
418
+
419
+ - id: tc010_weak_test_identification
420
+ description: "Skill identifies weak tests based on surviving mutants"
421
+ category: analysis
422
+ priority: high
423
+
424
+ input:
425
+ prompt: |
426
+ Mutation testing results for auth.test.js:
427
+ - 50 mutants generated in auth.js
428
+ - 35 killed by auth.test.js
429
+ - 15 survived
430
+
431
+ Surviving mutant operators:
432
+ - 8 relational (ROR)
433
+ - 5 boundary (BOR)
434
+ - 2 logical (LCR)
435
+
436
+ Analyze what makes auth.test.js weak and how to improve it.
437
+
438
+ expected_output:
439
+ must_contain:
440
+ - "weak"
441
+ - "boundary"
442
+ - "relational"
443
+ - "improve"
444
+ recommendation_count:
445
+ min: 1
446
+
447
+ validation:
448
+ schema_check: true
449
+ reasoning_quality_min: 0.7
450
+
451
+ # -------------------------------------------------------------------------
452
+ # Edge Cases
453
+ # -------------------------------------------------------------------------
454
+
455
+ - id: tc011_empty_code_handling
456
+ description: "Skill handles empty or minimal code gracefully"
457
+ category: edge_cases
458
+ priority: medium
459
+
460
+ input:
461
+ code: |
462
+ // Empty function
463
+ function noop() {}
464
+ context:
465
+ language: javascript
466
+ prompt: Analyze this code for mutation testing.
467
+
468
+ expected_output:
469
+ must_contain:
470
+ - "no mutation"
471
+ must_not_contain:
472
+ - "error"
473
+ - "crash"
474
+
475
+ validation:
476
+ schema_check: true
477
+ allow_partial: true
478
+
479
+ - id: tc012_complex_nested_conditions
480
+ description: "Skill handles complex nested conditions"
481
+ category: edge_cases
482
+ priority: medium
483
+
484
+ input:
485
+ code: |
486
+ function complexValidation(data) {
487
+ if (data && data.type === 'A') {
488
+ if (data.value > 0 && data.value <= 100) {
489
+ if (data.status === 'active' || data.override) {
490
+ return data.priority >= 1 && data.priority <= 5;
491
+ }
492
+ }
493
+ }
494
+ return false;
495
+ }
496
+ context:
497
+ language: javascript
498
+ prompt: |
499
+ Analyze all possible mutations in this complex nested validation.
500
+ Prioritize by impact.
501
+
502
+ expected_output:
503
+ must_contain:
504
+ - "nested"
505
+ - "condition"
506
+ - "mutation"
507
+ finding_count:
508
+ min: 5
509
+
510
+ validation:
511
+ schema_check: true
512
+ keyword_match_threshold: 0.7
513
+
514
+ # -------------------------------------------------------------------------
515
+ # Multi-Language Support
516
+ # -------------------------------------------------------------------------
517
+
518
+ - id: tc013_python_mutation_analysis
519
+ description: "Skill correctly analyzes Python code mutations"
520
+ category: language_support
521
+ priority: medium
522
+
523
+ input:
524
+ code: |
525
+ def calculate_price(base_price, discount_percent, tax_rate):
526
+ discount = base_price * (discount_percent / 100)
527
+ subtotal = base_price - discount
528
+ tax = subtotal * tax_rate
529
+ return subtotal + tax
530
+ context:
531
+ language: python
532
+ prompt: Analyze this Python code for mutation testing.
533
+
534
+ expected_output:
535
+ must_contain:
536
+ - "mutation"
537
+ - "arithmetic"
538
+ - "python"
539
+
540
+ validation:
541
+ schema_check: true
542
+
543
+ - id: tc014_typescript_mutation_analysis
544
+ description: "Skill correctly analyzes TypeScript code mutations"
545
+ category: language_support
546
+ priority: medium
547
+
548
+ input:
549
+ code: |
550
+ interface Order {
551
+ quantity: number;
552
+ price: number;
553
+ isPremium: boolean;
554
+ }
555
+
556
+ function calculateDiscount(order: Order): number {
557
+ if (order.quantity >= 10 && order.isPremium) {
558
+ return order.price * 0.15;
559
+ }
560
+ if (order.quantity >= 5) {
561
+ return order.price * 0.05;
562
+ }
563
+ return 0;
564
+ }
565
+ context:
566
+ language: typescript
567
+ prompt: Analyze this TypeScript code for mutation testing.
568
+
569
+ expected_output:
570
+ must_contain:
571
+ - "mutation"
572
+ - "typescript"
573
+ - "boundary"
574
+
575
+ validation:
576
+ schema_check: true
577
+
578
+ # -------------------------------------------------------------------------
579
+ # Integration with Coverage
580
+ # -------------------------------------------------------------------------
581
+
582
+ - id: tc015_coverage_mutation_correlation
583
+ description: "Skill correlates coverage with mutation score"
584
+ category: integration
585
+ priority: high
586
+
587
+ input:
588
+ prompt: |
589
+ Coverage report shows:
590
+ - Line coverage: 95%
591
+ - Branch coverage: 88%
592
+
593
+ Mutation testing shows:
594
+ - Mutation score: 65%
595
+
596
+ Analyze the gap between coverage and mutation score.
597
+ Why can high coverage coexist with low mutation score?
598
+
599
+ expected_output:
600
+ must_contain:
601
+ - "coverage"
602
+ - "mutation"
603
+ - "assertion"
604
+ - "quality"
605
+ must_not_contain:
606
+ - "coverage equals"
607
+
608
+ validation:
609
+ schema_check: true
610
+ reasoning_quality_min: 0.8
611
+ grading_rubric:
612
+ completeness: 0.4
613
+ accuracy: 0.4
614
+ actionability: 0.2
615
+
616
+ # =============================================================================
617
+ # Success Criteria
618
+ # =============================================================================
619
+
620
+ success_criteria:
621
+ # Minimum 90% of tests must pass
622
+ pass_rate: 0.9
623
+
624
+ # All critical tests must pass
625
+ critical_pass_rate: 1.0
626
+
627
+ # Minimum reasoning quality
628
+ avg_reasoning_quality: 0.7
629
+
630
+ # Maximum 5 minutes for full suite
631
+ max_execution_time_ms: 300000
632
+
633
+ # Maximum 15% variance between models
634
+ cross_model_variance: 0.15
635
+
636
+ # =============================================================================
637
+ # Metadata
638
+ # =============================================================================
639
+
640
+ metadata:
641
+ author: "@agentic-qe"
642
+ created: "2026-02-02"
643
+ last_updated: "2026-02-02"
644
+ coverage_target: >
645
+ Comprehensive mutation operator coverage (AOR, ROR, LCR, COR, RVR),
646
+ surviving mutant analysis, weak test identification, multi-language
647
+ support, and coverage correlation analysis.
648
+ related_skills:
649
+ - test-design-techniques
650
+ - coverage-analysis
651
+ - tdd-london-chicago
@@ -0,0 +1,38 @@
1
+ # Mutation Operators Reference
2
+
3
+ ## Arithmetic Operators
4
+ | Original | Mutant | What It Tests |
5
+ |----------|--------|--------------|
6
+ | `a + b` | `a - b` | Addition logic |
7
+ | `a * b` | `a / b` | Multiplication logic |
8
+ | `a % b` | `a * b` | Modulo logic |
9
+
10
+ ## Conditional Operators
11
+ | Original | Mutant | What It Tests |
12
+ |----------|--------|--------------|
13
+ | `a > b` | `a >= b` | Off-by-one in boundaries |
14
+ | `a >= b` | `a > b` | Boundary inclusion |
15
+ | `a === b` | `a !== b` | Equality checks |
16
+ | `a && b` | `a \|\| b` | Logical conjunction |
17
+
18
+ ## Statement Mutations
19
+ | Original | Mutant | What It Tests |
20
+ |----------|--------|--------------|
21
+ | `return x` | `return !x` | Return value negation |
22
+ | `if (cond)` | `if (true)` | Condition relevance |
23
+ | `if (cond)` | `if (false)` | Dead code detection |
24
+ | `statement` | _(removed)_ | Statement necessity |
25
+
26
+ ## Common Surviving Mutants and Fixes
27
+
28
+ **`>=` to `>` survives**: Add boundary test with exact boundary value
29
+ **`&&` to `||` survives**: Add test where only one condition is true
30
+ **Removed `return` survives**: Function's return value isn't being checked
31
+ **`+1` to `-1` survives**: Increment/decrement logic untested
32
+
33
+ ## Stryker Configuration Tips
34
+ - `--testRunner jest` — explicit when multiple runners installed
35
+ - `--concurrency 2` — prevents OOM in containers
36
+ - `--mutate 'src/**/*.ts,!src/**/*.d.ts'` — skip type definitions
37
+ - `--timeoutMS 60000` — increase for slow test suites
38
+ - `--thresholds.high 80 --thresholds.low 60` — score quality bands