agentic-qe 3.7.9 → 3.7.11
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/.claude/skills/.validation/README.md +111 -111
- package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
- package/.claude/skills/.validation/examples/performance-testing-output.example.json +252 -252
- package/.claude/skills/.validation/examples/security-testing-output.example.json +413 -413
- package/.claude/skills/.validation/examples/testability-scoring-output.example.json +350 -350
- package/.claude/skills/.validation/schemas/skill-eval.schema.json +462 -462
- package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
- package/.claude/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
- package/.claude/skills/.validation/schemas/skill-output.template.json +610 -610
- package/.claude/skills/.validation/skill-validation-mcp-integration.md +250 -250
- package/.claude/skills/.validation/templates/eval.template.yaml +366 -366
- package/.claude/skills/.validation/templates/schemas/output.json +145 -145
- package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
- package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
- package/.claude/skills/.validation/test-data/invalid-output.json +5 -5
- package/.claude/skills/.validation/test-data/minimal-output.json +9 -9
- package/.claude/skills/.validation/test-data/sample-output.json +73 -73
- package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
- package/.claude/skills/a11y-ally/schemas/output.json +549 -549
- package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
- package/.claude/skills/accessibility-testing/schemas/output.json +776 -776
- package/.claude/skills/accessibility-testing/test-data/sample-output.json +191 -191
- package/.claude/skills/agentic-quality-engineering/schemas/output.json +577 -577
- package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
- package/.claude/skills/api-testing-patterns/schemas/output.json +845 -845
- package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
- package/.claude/skills/brutal-honesty-review/schemas/output.json +291 -291
- package/.claude/skills/bug-reporting-excellence/schemas/output.json +288 -288
- package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
- package/.claude/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
- package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
- package/.claude/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
- package/.claude/skills/code-review-quality/schemas/output.json +264 -264
- package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
- package/.claude/skills/compatibility-testing/schemas/output.json +551 -551
- package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
- package/.claude/skills/compliance-testing/schemas/output.json +845 -845
- package/.claude/skills/consultancy-practices/schemas/output.json +282 -282
- package/.claude/skills/contract-testing/evals/contract-testing.yaml +748 -748
- package/.claude/skills/contract-testing/schemas/output.json +638 -638
- package/.claude/skills/database-testing/evals/database-testing.yaml +968 -968
- package/.claude/skills/database-testing/schemas/output.json +1446 -1446
- package/.claude/skills/debug-loop/SKILL.md +61 -61
- package/.claude/skills/enterprise-integration-testing/SKILL.md +735 -735
- package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -158
- package/.claude/skills/enterprise-integration-testing/schemas/output.json +74 -74
- package/.claude/skills/enterprise-integration-testing/scripts/validate-config.json +25 -25
- package/.claude/skills/iterative-loop/SKILL.md +371 -371
- package/.claude/skills/localization-testing/evals/localization-testing.yaml +544 -544
- package/.claude/skills/localization-testing/schemas/output.json +325 -325
- package/.claude/skills/middleware-testing-patterns/SKILL.md +798 -798
- package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -153
- package/.claude/skills/middleware-testing-patterns/schemas/output.json +58 -58
- package/.claude/skills/middleware-testing-patterns/scripts/validate-config.json +25 -25
- package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
- package/.claude/skills/mobile-testing/schemas/output.json +318 -318
- package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
- package/.claude/skills/mutation-testing/schemas/output.json +707 -707
- package/.claude/skills/mutation-testing/test-data/sample-output.json +295 -295
- package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
- package/.claude/skills/n8n-expression-testing/schemas/output.json +369 -369
- package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
- package/.claude/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
- package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
- package/.claude/skills/n8n-security-testing/schemas/output.json +293 -293
- package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
- package/.claude/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
- package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
- package/.claude/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
- package/.claude/skills/observability-testing-patterns/SKILL.md +930 -930
- package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -157
- package/.claude/skills/observability-testing-patterns/schemas/output.json +58 -58
- package/.claude/skills/observability-testing-patterns/scripts/validate-config.json +25 -25
- package/.claude/skills/pentest-validation/SKILL.md +268 -268
- package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
- package/.claude/skills/pentest-validation/schemas/output.json +281 -281
- package/.claude/skills/performance-analysis/evals/performance-analysis.yaml +144 -144
- package/.claude/skills/performance-analysis/schemas/output.json +588 -588
- package/.claude/skills/performance-testing/evals/performance-testing.yaml +772 -772
- package/.claude/skills/performance-testing/schemas/output.json +1184 -1184
- package/.claude/skills/pr-review/SKILL.md +61 -61
- package/.claude/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
- package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -211
- package/.claude/skills/qcsd-cicd-swarm/schemas/output.json +86 -86
- package/.claude/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -30
- package/.claude/skills/qcsd-development-swarm/SKILL.md +2154 -2154
- package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -162
- package/.claude/skills/qcsd-development-swarm/schemas/output.json +72 -72
- package/.claude/skills/qcsd-development-swarm/scripts/validate-config.json +25 -25
- package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
- package/.claude/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
- package/.claude/skills/qcsd-production-swarm/SKILL.md +2781 -2781
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
- package/.claude/skills/qcsd-production-swarm/schemas/output.json +505 -505
- package/.claude/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
- package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
- package/.claude/skills/qe-chaos-resilience/schemas/output.json +314 -314
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
- package/.claude/skills/qe-code-intelligence/schemas/output.json +315 -315
- package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
- package/.claude/skills/qe-contract-testing/schemas/output.json +295 -295
- package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
- package/.claude/skills/qe-coverage-analysis/schemas/output.json +286 -286
- package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
- package/.claude/skills/qe-defect-intelligence/schemas/output.json +283 -283
- package/.claude/skills/qe-iterative-loop/schemas/output.json +264 -264
- package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
- package/.claude/skills/qe-learning-optimization/schemas/output.json +288 -288
- package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
- package/.claude/skills/qe-quality-assessment/schemas/output.json +550 -550
- package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
- package/.claude/skills/qe-requirements-validation/schemas/output.json +587 -587
- package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
- package/.claude/skills/qe-security-compliance/schemas/output.json +498 -498
- package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
- package/.claude/skills/qe-test-execution/schemas/output.json +529 -529
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
- package/.claude/skills/qe-test-generation/schemas/output.json +439 -439
- package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
- package/.claude/skills/qe-visual-accessibility/schemas/output.json +491 -491
- package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
- package/.claude/skills/quality-metrics/schemas/output.json +403 -403
- package/.claude/skills/refactoring-patterns/schemas/output.json +475 -475
- package/.claude/skills/regression-testing/evals/regression-testing.yaml +504 -504
- package/.claude/skills/regression-testing/schemas/output.json +311 -311
- package/.claude/skills/release/SKILL.md +347 -347
- package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
- package/.claude/skills/risk-based-testing/schemas/output.json +480 -480
- package/.claude/skills/security-testing/evals/security-testing.yaml +789 -789
- package/.claude/skills/security-testing/schemas/output.json +879 -879
- package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
- package/.claude/skills/security-visual-testing/schemas/output.json +486 -486
- package/.claude/skills/sfdipot-product-factors/SKILL.md +239 -239
- package/.claude/skills/sherlock-review/schemas/output.json +297 -297
- package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
- package/.claude/skills/shift-left-testing/schemas/output.json +459 -459
- package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
- package/.claude/skills/shift-right-testing/schemas/output.json +418 -418
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/tdd-london-chicago/schemas/output.json +444 -444
- package/.claude/skills/technical-writing/schemas/output.json +268 -268
- package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
- package/.claude/skills/test-automation-strategy/schemas/output.json +444 -444
- package/.claude/skills/test-data-management/evals/test-data-management.yaml +504 -504
- package/.claude/skills/test-data-management/schemas/output.json +284 -284
- package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
- package/.claude/skills/test-design-techniques/schemas/output.json +295 -295
- package/.claude/skills/test-environment-management/schemas/output.json +310 -310
- package/.claude/skills/test-idea-rewriting/SKILL.md +229 -229
- package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
- package/.claude/skills/test-reporting-analytics/schemas/output.json +329 -329
- package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
- package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -84
- package/.claude/skills/testability-scoring/schemas/output.json +606 -606
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
- package/.claude/skills/verification-quality/evals/verification-quality.yaml +150 -150
- package/.claude/skills/verification-quality/schemas/output.json +432 -432
- package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
- package/.claude/skills/visual-testing-advanced/schemas/output.json +294 -294
- package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
- package/.claude/skills/wms-testing-patterns/schemas/output.json +150 -150
- package/.claude/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
- package/CHANGELOG.md +36 -0
- package/README.md +171 -901
- package/assets/agents/v3/helpers/quality-criteria/evidence-classification.md +116 -116
- package/assets/agents/v3/helpers/quality-criteria/htsm-categories.md +139 -139
- package/assets/governance/constitution.md +202 -202
- package/assets/governance/shards/chaos-resilience.shard.md +221 -221
- package/assets/governance/shards/code-intelligence.shard.md +178 -178
- package/assets/governance/shards/contract-testing.shard.md +206 -206
- package/assets/governance/shards/coverage-analysis.shard.md +146 -146
- package/assets/governance/shards/defect-intelligence.shard.md +182 -182
- package/assets/governance/shards/learning-optimization.shard.md +248 -248
- package/assets/governance/shards/quality-assessment.shard.md +165 -165
- package/assets/governance/shards/requirements-validation.shard.md +177 -177
- package/assets/governance/shards/security-compliance.shard.md +196 -196
- package/assets/governance/shards/test-execution.shard.md +156 -156
- package/assets/governance/shards/test-generation.shard.md +128 -128
- package/assets/governance/shards/visual-accessibility.shard.md +209 -209
- package/assets/hooks/cross-phase-memory.yaml +253 -253
- package/assets/patterns/adr-051-booster-patterns.json +78 -78
- package/assets/patterns/adr-051-embedding-patterns.json +147 -147
- package/assets/patterns/adr-051-integration-summary.json +62 -62
- package/assets/patterns/adr-051-reasoning-patterns.json +166 -166
- package/assets/patterns/adr-051-router-patterns.json +113 -113
- package/assets/patterns/index.json +136 -136
- package/assets/skills/.validation/README.md +111 -111
- package/assets/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
- package/assets/skills/.validation/examples/performance-testing-output.example.json +252 -252
- package/assets/skills/.validation/examples/security-testing-output.example.json +413 -413
- package/assets/skills/.validation/examples/testability-scoring-output.example.json +350 -350
- package/assets/skills/.validation/schemas/skill-eval.schema.json +462 -462
- package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
- package/assets/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
- package/assets/skills/.validation/schemas/skill-output.template.json +610 -610
- package/assets/skills/.validation/skill-validation-mcp-integration.md +250 -250
- package/assets/skills/.validation/templates/eval.template.yaml +366 -366
- package/assets/skills/.validation/templates/schemas/output.json +145 -145
- package/assets/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
- package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
- package/assets/skills/.validation/test-data/invalid-output.json +5 -5
- package/assets/skills/.validation/test-data/minimal-output.json +9 -9
- package/assets/skills/.validation/test-data/sample-output.json +73 -73
- package/assets/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
- package/assets/skills/a11y-ally/schemas/output.json +549 -549
- package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
- package/assets/skills/accessibility-testing/schemas/output.json +776 -776
- package/assets/skills/accessibility-testing/test-data/sample-output.json +191 -191
- package/assets/skills/agentic-quality-engineering/schemas/output.json +577 -577
- package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
- package/assets/skills/api-testing-patterns/schemas/output.json +845 -845
- package/assets/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
- package/assets/skills/brutal-honesty-review/schemas/output.json +291 -291
- package/assets/skills/bug-reporting-excellence/schemas/output.json +288 -288
- package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
- package/assets/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
- package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
- package/assets/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
- package/assets/skills/code-review-quality/schemas/output.json +264 -264
- package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
- package/assets/skills/compatibility-testing/schemas/output.json +551 -551
- package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
- package/assets/skills/compliance-testing/schemas/output.json +845 -845
- package/assets/skills/consultancy-practices/schemas/output.json +282 -282
- package/assets/skills/contract-testing/evals/contract-testing.yaml +748 -748
- package/assets/skills/contract-testing/schemas/output.json +638 -638
- package/assets/skills/database-testing/evals/database-testing.yaml +968 -968
- package/assets/skills/database-testing/schemas/output.json +1446 -1446
- package/assets/skills/debug-loop/SKILL.md +61 -61
- package/assets/skills/enterprise-integration-testing/SKILL.md +735 -735
- package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -158
- package/assets/skills/enterprise-integration-testing/schemas/output.json +74 -74
- package/assets/skills/enterprise-integration-testing/scripts/validate-config.json +25 -25
- package/assets/skills/localization-testing/evals/localization-testing.yaml +544 -544
- package/assets/skills/localization-testing/schemas/output.json +325 -325
- package/assets/skills/middleware-testing-patterns/SKILL.md +798 -798
- package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -153
- package/assets/skills/middleware-testing-patterns/schemas/output.json +58 -58
- package/assets/skills/middleware-testing-patterns/scripts/validate-config.json +25 -25
- package/assets/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
- package/assets/skills/mobile-testing/schemas/output.json +318 -318
- package/assets/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
- package/assets/skills/mutation-testing/schemas/output.json +707 -707
- package/assets/skills/mutation-testing/test-data/sample-output.json +295 -295
- package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
- package/assets/skills/n8n-expression-testing/schemas/output.json +369 -369
- package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
- package/assets/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
- package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
- package/assets/skills/n8n-security-testing/schemas/output.json +293 -293
- package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
- package/assets/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
- package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
- package/assets/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
- package/assets/skills/observability-testing-patterns/SKILL.md +930 -930
- package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -157
- package/assets/skills/observability-testing-patterns/schemas/output.json +58 -58
- package/assets/skills/observability-testing-patterns/scripts/validate-config.json +25 -25
- package/assets/skills/pentest-validation/SKILL.md +268 -268
- package/assets/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
- package/assets/skills/pentest-validation/schemas/output.json +281 -281
- package/assets/skills/performance-testing/evals/performance-testing.yaml +772 -772
- package/assets/skills/performance-testing/schemas/output.json +1184 -1184
- package/assets/skills/pr-review/SKILL.md +61 -61
- package/assets/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
- package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -211
- package/assets/skills/qcsd-cicd-swarm/schemas/output.json +86 -86
- package/assets/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -30
- package/assets/skills/qcsd-development-swarm/SKILL.md +2154 -2154
- package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -162
- package/assets/skills/qcsd-development-swarm/schemas/output.json +72 -72
- package/assets/skills/qcsd-development-swarm/scripts/validate-config.json +25 -25
- package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
- package/assets/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
- package/assets/skills/qcsd-production-swarm/SKILL.md +2781 -2781
- package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
- package/assets/skills/qcsd-production-swarm/schemas/output.json +505 -505
- package/assets/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
- package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
- package/assets/skills/qe-chaos-resilience/schemas/output.json +314 -314
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
- package/assets/skills/qe-code-intelligence/schemas/output.json +315 -315
- package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
- package/assets/skills/qe-contract-testing/schemas/output.json +295 -295
- package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
- package/assets/skills/qe-coverage-analysis/schemas/output.json +286 -286
- package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
- package/assets/skills/qe-defect-intelligence/schemas/output.json +283 -283
- package/assets/skills/qe-iterative-loop/schemas/output.json +264 -264
- package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
- package/assets/skills/qe-learning-optimization/schemas/output.json +288 -288
- package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
- package/assets/skills/qe-quality-assessment/schemas/output.json +550 -550
- package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
- package/assets/skills/qe-requirements-validation/schemas/output.json +587 -587
- package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
- package/assets/skills/qe-security-compliance/schemas/output.json +498 -498
- package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
- package/assets/skills/qe-test-execution/schemas/output.json +529 -529
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
- package/assets/skills/qe-test-generation/schemas/output.json +439 -439
- package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
- package/assets/skills/qe-visual-accessibility/schemas/output.json +491 -491
- package/assets/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
- package/assets/skills/quality-metrics/schemas/output.json +403 -403
- package/assets/skills/refactoring-patterns/schemas/output.json +475 -475
- package/assets/skills/regression-testing/evals/regression-testing.yaml +504 -504
- package/assets/skills/regression-testing/schemas/output.json +311 -311
- package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
- package/assets/skills/risk-based-testing/schemas/output.json +480 -480
- package/assets/skills/security-testing/evals/security-testing.yaml +789 -789
- package/assets/skills/security-testing/schemas/output.json +879 -879
- package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
- package/assets/skills/security-visual-testing/schemas/output.json +486 -486
- package/assets/skills/sfdipot-product-factors/SKILL.md +239 -239
- package/assets/skills/sherlock-review/schemas/output.json +297 -297
- package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
- package/assets/skills/shift-left-testing/schemas/output.json +459 -459
- package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
- package/assets/skills/shift-right-testing/schemas/output.json +418 -418
- package/assets/skills/tdd-london-chicago/schemas/output.json +444 -444
- package/assets/skills/technical-writing/schemas/output.json +268 -268
- package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
- package/assets/skills/test-automation-strategy/schemas/output.json +444 -444
- package/assets/skills/test-data-management/evals/test-data-management.yaml +504 -504
- package/assets/skills/test-data-management/schemas/output.json +284 -284
- package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
- package/assets/skills/test-design-techniques/schemas/output.json +295 -295
- package/assets/skills/test-environment-management/schemas/output.json +310 -310
- package/assets/skills/test-idea-rewriting/SKILL.md +229 -229
- package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
- package/assets/skills/test-reporting-analytics/schemas/output.json +329 -329
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
- package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -84
- package/assets/skills/testability-scoring/schemas/output.json +606 -606
- package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
- package/assets/skills/verification-quality/evals/verification-quality.yaml +150 -150
- package/assets/skills/verification-quality/schemas/output.json +432 -432
- package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
- package/assets/skills/visual-testing-advanced/schemas/output.json +294 -294
- package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
- package/assets/skills/wms-testing-patterns/schemas/output.json +150 -150
- package/assets/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
- package/assets/templates/validation-summary.json +56 -56
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +1 -0
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts.map +1 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.js +16 -3
- package/dist/agents/claim-verifier/verifiers/output-verifier.js.map +1 -1
- package/dist/cli/bundle.js +488 -75
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +11 -9
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/governance/adversarial-defense-integration.d.ts +29 -0
- package/dist/governance/adversarial-defense-integration.d.ts.map +1 -1
- package/dist/governance/adversarial-defense-integration.js +85 -1
- package/dist/governance/adversarial-defense-integration.js.map +1 -1
- package/dist/governance/continue-gate-integration.d.ts +7 -5
- package/dist/governance/continue-gate-integration.d.ts.map +1 -1
- package/dist/governance/continue-gate-integration.js +72 -15
- package/dist/governance/continue-gate-integration.js.map +1 -1
- package/dist/governance/deterministic-gateway-integration.d.ts +5 -0
- package/dist/governance/deterministic-gateway-integration.d.ts.map +1 -1
- package/dist/governance/deterministic-gateway-integration.js +35 -1
- package/dist/governance/deterministic-gateway-integration.js.map +1 -1
- package/dist/governance/evolution-pipeline-integration.d.ts +5 -0
- package/dist/governance/evolution-pipeline-integration.d.ts.map +1 -1
- package/dist/governance/evolution-pipeline-integration.js +57 -1
- package/dist/governance/evolution-pipeline-integration.js.map +1 -1
- package/dist/governance/memory-write-gate-integration.d.ts +6 -3
- package/dist/governance/memory-write-gate-integration.d.ts.map +1 -1
- package/dist/governance/memory-write-gate-integration.js +48 -10
- package/dist/governance/memory-write-gate-integration.js.map +1 -1
- package/dist/governance/proof-envelope-integration.d.ts +1 -0
- package/dist/governance/proof-envelope-integration.d.ts.map +1 -1
- package/dist/governance/proof-envelope-integration.js +37 -0
- package/dist/governance/proof-envelope-integration.js.map +1 -1
- package/dist/governance/shard-retriever-integration.d.ts +10 -0
- package/dist/governance/shard-retriever-integration.d.ts.map +1 -1
- package/dist/governance/shard-retriever-integration.js +50 -1
- package/dist/governance/shard-retriever-integration.js.map +1 -1
- package/dist/governance/trust-accumulator-integration.d.ts +5 -0
- package/dist/governance/trust-accumulator-integration.d.ts.map +1 -1
- package/dist/governance/trust-accumulator-integration.js +35 -2
- package/dist/governance/trust-accumulator-integration.js.map +1 -1
- package/dist/init/phases/10-workers.js +2 -2
- package/dist/init/phases/10-workers.js.map +1 -1
- package/dist/mcp/bundle.js +478 -62
- package/dist/mcp/protocol-server.js +2 -2
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +1 -0
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/shared/language-detector.js +1 -1
- package/dist/shared/language-detector.js.map +1 -1
- package/dist/shared/parsers/multi-language-parser.d.ts.map +1 -1
- package/dist/shared/parsers/multi-language-parser.js +55 -16
- package/dist/shared/parsers/multi-language-parser.js.map +1 -1
- package/dist/shared/sql-safety.d.ts.map +1 -1
- package/dist/shared/sql-safety.js +7 -1
- package/dist/shared/sql-safety.js.map +1 -1
- package/package.json +6 -2
- package/scripts/prepare-assets.sh +8 -0
|
@@ -1,696 +1,696 @@
|
|
|
1
|
-
# =============================================================================
|
|
2
|
-
# AQE API Testing Patterns Skill Evaluation Test Suite v1.0.0
|
|
3
|
-
# Per ADR-056 - Trust Tier 3 Validation
|
|
4
|
-
# =============================================================================
|
|
5
|
-
#
|
|
6
|
-
# This evaluation suite validates the api-testing-patterns skill behavior:
|
|
7
|
-
# - REST API testing patterns
|
|
8
|
-
# - GraphQL API testing patterns
|
|
9
|
-
# - Contract testing (Pact)
|
|
10
|
-
# - Authentication/Authorization testing
|
|
11
|
-
# - Error handling and validation
|
|
12
|
-
# - Pagination and filtering
|
|
13
|
-
# - Integration with QE agents
|
|
14
|
-
#
|
|
15
|
-
# Schema: .claude/skills/.validation/schemas/skill-eval.schema.json
|
|
16
|
-
# Runner: scripts/run-skill-eval.ts
|
|
17
|
-
#
|
|
18
|
-
# =============================================================================
|
|
19
|
-
|
|
20
|
-
skill: api-testing-patterns
|
|
21
|
-
version: 1.0.0
|
|
22
|
-
description: >
|
|
23
|
-
Comprehensive evaluation suite for the api-testing-patterns skill.
|
|
24
|
-
Tests core API testing patterns across REST, GraphQL, contract testing,
|
|
25
|
-
and various critical scenarios to ensure consistent, high-quality output
|
|
26
|
-
across multiple models.
|
|
27
|
-
|
|
28
|
-
# =============================================================================
|
|
29
|
-
# Multi-Model Configuration
|
|
30
|
-
# =============================================================================
|
|
31
|
-
|
|
32
|
-
models_to_test:
|
|
33
|
-
- claude-sonnet-4 # Primary model (high accuracy expected)
|
|
34
|
-
- claude-3-haiku # Fast model (minimum quality bar)
|
|
35
|
-
- gpt-4o # Cross-vendor validation
|
|
36
|
-
|
|
37
|
-
# =============================================================================
|
|
38
|
-
# MCP Integration Configuration
|
|
39
|
-
# =============================================================================
|
|
40
|
-
|
|
41
|
-
mcp_integration:
|
|
42
|
-
enabled: true
|
|
43
|
-
namespace: skill-validation
|
|
44
|
-
|
|
45
|
-
query_patterns: true
|
|
46
|
-
track_outcomes: true
|
|
47
|
-
store_patterns: true
|
|
48
|
-
share_learning: true
|
|
49
|
-
update_quality_gate: true
|
|
50
|
-
|
|
51
|
-
target_agents:
|
|
52
|
-
- qe-learning-coordinator
|
|
53
|
-
- qe-queen-coordinator
|
|
54
|
-
- qe-api-contract-validator
|
|
55
|
-
|
|
56
|
-
# =============================================================================
|
|
57
|
-
# ReasoningBank Learning Configuration
|
|
58
|
-
# =============================================================================
|
|
59
|
-
|
|
60
|
-
learning:
|
|
61
|
-
store_success_patterns: true
|
|
62
|
-
store_failure_patterns: true
|
|
63
|
-
pattern_ttl_days: 90
|
|
64
|
-
min_confidence_to_store: 0.7
|
|
65
|
-
cross_model_comparison: true
|
|
66
|
-
|
|
67
|
-
# =============================================================================
|
|
68
|
-
# Result Format Configuration
|
|
69
|
-
# =============================================================================
|
|
70
|
-
|
|
71
|
-
result_format:
|
|
72
|
-
json_output: true
|
|
73
|
-
markdown_report: true
|
|
74
|
-
include_raw_output: false
|
|
75
|
-
include_timing: true
|
|
76
|
-
include_token_usage: true
|
|
77
|
-
|
|
78
|
-
# =============================================================================
|
|
79
|
-
# Environment Setup
|
|
80
|
-
# =============================================================================
|
|
81
|
-
|
|
82
|
-
setup:
|
|
83
|
-
required_tools:
|
|
84
|
-
- jq
|
|
85
|
-
environment_variables:
|
|
86
|
-
AQE_VALIDATION_MODE: "eval"
|
|
87
|
-
fixtures:
|
|
88
|
-
- name: sample_openapi_spec
|
|
89
|
-
path: fixtures/openapi-sample.yaml
|
|
90
|
-
content: |
|
|
91
|
-
openapi: "3.0.3"
|
|
92
|
-
info:
|
|
93
|
-
title: Sample API
|
|
94
|
-
version: "1.0.0"
|
|
95
|
-
paths:
|
|
96
|
-
/users:
|
|
97
|
-
get:
|
|
98
|
-
operationId: getUsers
|
|
99
|
-
responses:
|
|
100
|
-
"200":
|
|
101
|
-
description: List of users
|
|
102
|
-
/users/{id}:
|
|
103
|
-
get:
|
|
104
|
-
operationId: getUserById
|
|
105
|
-
parameters:
|
|
106
|
-
- name: id
|
|
107
|
-
in: path
|
|
108
|
-
required: true
|
|
109
|
-
schema:
|
|
110
|
-
type: string
|
|
111
|
-
responses:
|
|
112
|
-
"200":
|
|
113
|
-
description: User found
|
|
114
|
-
"404":
|
|
115
|
-
description: User not found
|
|
116
|
-
- name: sample_express_api
|
|
117
|
-
path: fixtures/express-api.js
|
|
118
|
-
content: |
|
|
119
|
-
const express = require('express');
|
|
120
|
-
const app = express();
|
|
121
|
-
|
|
122
|
-
app.get('/api/users', (req, res) => {
|
|
123
|
-
const users = db.query('SELECT * FROM users');
|
|
124
|
-
res.json(users);
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
app.post('/api/orders', (req, res) => {
|
|
128
|
-
const { productId, quantity } = req.body;
|
|
129
|
-
if (!productId) return res.status(400).json({ error: 'productId required' });
|
|
130
|
-
const order = orderService.create({ productId, quantity });
|
|
131
|
-
res.status(201).json(order);
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
app.get('/api/orders/:id', auth.required, (req, res) => {
|
|
135
|
-
const order = orderService.findById(req.params.id);
|
|
136
|
-
if (!order) return res.status(404).json({ error: 'Not found' });
|
|
137
|
-
if (order.userId !== req.user.id) return res.status(403).json({ error: 'Forbidden' });
|
|
138
|
-
res.json(order);
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
# =============================================================================
|
|
142
|
-
# Test Cases
|
|
143
|
-
# =============================================================================
|
|
144
|
-
|
|
145
|
-
test_cases:
|
|
146
|
-
# -------------------------------------------------------------------------
|
|
147
|
-
# Basic Functionality Tests
|
|
148
|
-
# -------------------------------------------------------------------------
|
|
149
|
-
|
|
150
|
-
- id: tc001_basic_rest_analysis
|
|
151
|
-
description: "Skill analyzes basic REST API and identifies test patterns"
|
|
152
|
-
category: basic
|
|
153
|
-
priority: critical
|
|
154
|
-
|
|
155
|
-
input:
|
|
156
|
-
prompt: |
|
|
157
|
-
Analyze this REST API endpoint and recommend API testing patterns:
|
|
158
|
-
```javascript
|
|
159
|
-
app.get('/api/users', (req, res) => {
|
|
160
|
-
const users = db.query('SELECT * FROM users');
|
|
161
|
-
res.json(users);
|
|
162
|
-
});
|
|
163
|
-
```
|
|
164
|
-
context:
|
|
165
|
-
language: javascript
|
|
166
|
-
framework: express
|
|
167
|
-
apiType: rest
|
|
168
|
-
|
|
169
|
-
expected_output:
|
|
170
|
-
must_contain:
|
|
171
|
-
- "GET"
|
|
172
|
-
- "test"
|
|
173
|
-
- "users"
|
|
174
|
-
- "response"
|
|
175
|
-
must_not_contain:
|
|
176
|
-
- "unable to analyze"
|
|
177
|
-
- "error"
|
|
178
|
-
- "TODO"
|
|
179
|
-
|
|
180
|
-
validation:
|
|
181
|
-
schema_check: true
|
|
182
|
-
keyword_match_threshold: 0.8
|
|
183
|
-
reasoning_quality_min: 0.7
|
|
184
|
-
|
|
185
|
-
- id: tc002_contract_testing_recommendation
|
|
186
|
-
description: "Skill recommends consumer-driven contracts for microservices"
|
|
187
|
-
category: contract
|
|
188
|
-
priority: critical
|
|
189
|
-
|
|
190
|
-
input:
|
|
191
|
-
prompt: |
|
|
192
|
-
I have a checkout-service that calls orders-api and payments-api.
|
|
193
|
-
What API testing patterns should I use to ensure these services
|
|
194
|
-
work correctly together?
|
|
195
|
-
context:
|
|
196
|
-
architecture: microservices
|
|
197
|
-
services:
|
|
198
|
-
- checkout-service
|
|
199
|
-
- orders-api
|
|
200
|
-
- payments-api
|
|
201
|
-
|
|
202
|
-
expected_output:
|
|
203
|
-
must_contain:
|
|
204
|
-
- "contract"
|
|
205
|
-
- "consumer"
|
|
206
|
-
- "provider"
|
|
207
|
-
must_match_regex:
|
|
208
|
-
- "(?i)(pact|consumer-driven|contract test)"
|
|
209
|
-
|
|
210
|
-
validation:
|
|
211
|
-
schema_check: true
|
|
212
|
-
keyword_match_threshold: 0.8
|
|
213
|
-
reasoning_quality_min: 0.8
|
|
214
|
-
|
|
215
|
-
- id: tc003_graphql_testing_patterns
|
|
216
|
-
description: "Skill provides GraphQL-specific testing patterns"
|
|
217
|
-
category: graphql
|
|
218
|
-
priority: high
|
|
219
|
-
|
|
220
|
-
input:
|
|
221
|
-
prompt: |
|
|
222
|
-
Analyze this GraphQL API for testing patterns:
|
|
223
|
-
```graphql
|
|
224
|
-
type Query {
|
|
225
|
-
user(id: ID!): User
|
|
226
|
-
users(limit: Int, offset: Int): [User!]!
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
type Mutation {
|
|
230
|
-
createUser(input: CreateUserInput!): User!
|
|
231
|
-
updateUser(id: ID!, input: UpdateUserInput!): User
|
|
232
|
-
}
|
|
233
|
-
```
|
|
234
|
-
context:
|
|
235
|
-
apiType: graphql
|
|
236
|
-
|
|
237
|
-
expected_output:
|
|
238
|
-
must_contain:
|
|
239
|
-
- "query"
|
|
240
|
-
- "mutation"
|
|
241
|
-
- "GraphQL"
|
|
242
|
-
must_not_contain:
|
|
243
|
-
- "REST"
|
|
244
|
-
- "HTTP method"
|
|
245
|
-
|
|
246
|
-
validation:
|
|
247
|
-
schema_check: true
|
|
248
|
-
keyword_match_threshold: 0.7
|
|
249
|
-
|
|
250
|
-
# -------------------------------------------------------------------------
|
|
251
|
-
# Authentication Testing
|
|
252
|
-
# -------------------------------------------------------------------------
|
|
253
|
-
|
|
254
|
-
- id: tc004_auth_testing_patterns
|
|
255
|
-
description: "Skill identifies authentication testing scenarios"
|
|
256
|
-
category: auth
|
|
257
|
-
priority: critical
|
|
258
|
-
|
|
259
|
-
input:
|
|
260
|
-
code: |
|
|
261
|
-
app.get('/api/orders/:id', auth.required, (req, res) => {
|
|
262
|
-
const order = orderService.findById(req.params.id);
|
|
263
|
-
if (!order) return res.status(404).json({ error: 'Not found' });
|
|
264
|
-
if (order.userId !== req.user.id) return res.status(403).json({ error: 'Forbidden' });
|
|
265
|
-
res.json(order);
|
|
266
|
-
});
|
|
267
|
-
context:
|
|
268
|
-
language: javascript
|
|
269
|
-
framework: express
|
|
270
|
-
|
|
271
|
-
expected_output:
|
|
272
|
-
must_contain:
|
|
273
|
-
- "401"
|
|
274
|
-
- "403"
|
|
275
|
-
- "auth"
|
|
276
|
-
- "token"
|
|
277
|
-
must_match_regex:
|
|
278
|
-
- "(?i)(unauthorized|forbidden|access)"
|
|
279
|
-
|
|
280
|
-
validation:
|
|
281
|
-
schema_check: true
|
|
282
|
-
keyword_match_threshold: 0.8
|
|
283
|
-
grading_rubric:
|
|
284
|
-
completeness: 0.4
|
|
285
|
-
accuracy: 0.4
|
|
286
|
-
actionability: 0.2
|
|
287
|
-
|
|
288
|
-
- id: tc005_expired_token_scenario
|
|
289
|
-
description: "Skill identifies expired token testing scenario"
|
|
290
|
-
category: auth
|
|
291
|
-
priority: high
|
|
292
|
-
|
|
293
|
-
input:
|
|
294
|
-
prompt: |
|
|
295
|
-
For a JWT-authenticated API, what test scenarios should I cover
|
|
296
|
-
for authentication failures?
|
|
297
|
-
context:
|
|
298
|
-
authType: jwt
|
|
299
|
-
|
|
300
|
-
expected_output:
|
|
301
|
-
must_contain:
|
|
302
|
-
- "expired"
|
|
303
|
-
- "invalid"
|
|
304
|
-
- "token"
|
|
305
|
-
must_match_regex:
|
|
306
|
-
- "(?i)(expire|timeout|invalid.*token)"
|
|
307
|
-
|
|
308
|
-
validation:
|
|
309
|
-
schema_check: true
|
|
310
|
-
keyword_match_threshold: 0.7
|
|
311
|
-
|
|
312
|
-
# -------------------------------------------------------------------------
|
|
313
|
-
# Error Handling Tests
|
|
314
|
-
# -------------------------------------------------------------------------
|
|
315
|
-
|
|
316
|
-
- id: tc006_error_handling_patterns
|
|
317
|
-
description: "Skill recommends error handling test scenarios"
|
|
318
|
-
category: error_handling
|
|
319
|
-
priority: high
|
|
320
|
-
|
|
321
|
-
input:
|
|
322
|
-
prompt: |
|
|
323
|
-
What error handling scenarios should I test for this API endpoint?
|
|
324
|
-
```javascript
|
|
325
|
-
app.post('/api/orders', async (req, res) => {
|
|
326
|
-
try {
|
|
327
|
-
const order = await orderService.create(req.body);
|
|
328
|
-
res.status(201).json(order);
|
|
329
|
-
} catch (error) {
|
|
330
|
-
if (error.code === 'VALIDATION_ERROR') {
|
|
331
|
-
return res.status(400).json({ error: error.message });
|
|
332
|
-
}
|
|
333
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
334
|
-
}
|
|
335
|
-
});
|
|
336
|
-
```
|
|
337
|
-
context:
|
|
338
|
-
language: javascript
|
|
339
|
-
|
|
340
|
-
expected_output:
|
|
341
|
-
must_contain:
|
|
342
|
-
- "400"
|
|
343
|
-
- "500"
|
|
344
|
-
- "error"
|
|
345
|
-
- "validation"
|
|
346
|
-
must_not_contain:
|
|
347
|
-
- "no errors"
|
|
348
|
-
- "perfect"
|
|
349
|
-
|
|
350
|
-
validation:
|
|
351
|
-
schema_check: true
|
|
352
|
-
keyword_match_threshold: 0.8
|
|
353
|
-
|
|
354
|
-
- id: tc007_input_validation_testing
|
|
355
|
-
description: "Skill identifies input validation test cases"
|
|
356
|
-
category: validation
|
|
357
|
-
priority: high
|
|
358
|
-
|
|
359
|
-
input:
|
|
360
|
-
code: |
|
|
361
|
-
app.post('/api/users', (req, res) => {
|
|
362
|
-
const { email, password, age } = req.body;
|
|
363
|
-
if (!email) return res.status(400).json({ error: 'Email required' });
|
|
364
|
-
if (!password || password.length < 8) return res.status(400).json({ error: 'Password must be 8+ chars' });
|
|
365
|
-
if (age && (age < 0 || age > 150)) return res.status(400).json({ error: 'Invalid age' });
|
|
366
|
-
// Create user...
|
|
367
|
-
});
|
|
368
|
-
context:
|
|
369
|
-
language: javascript
|
|
370
|
-
|
|
371
|
-
expected_output:
|
|
372
|
-
must_contain:
|
|
373
|
-
- "required"
|
|
374
|
-
- "validation"
|
|
375
|
-
- "email"
|
|
376
|
-
- "password"
|
|
377
|
-
must_match_regex:
|
|
378
|
-
- "(?i)(boundary|range|length)"
|
|
379
|
-
finding_count:
|
|
380
|
-
min: 1
|
|
381
|
-
|
|
382
|
-
validation:
|
|
383
|
-
schema_check: true
|
|
384
|
-
keyword_match_threshold: 0.7
|
|
385
|
-
|
|
386
|
-
# -------------------------------------------------------------------------
|
|
387
|
-
# Pagination and Filtering Tests
|
|
388
|
-
# -------------------------------------------------------------------------
|
|
389
|
-
|
|
390
|
-
- id: tc008_pagination_testing
|
|
391
|
-
description: "Skill recommends pagination testing patterns"
|
|
392
|
-
category: pagination
|
|
393
|
-
priority: medium
|
|
394
|
-
|
|
395
|
-
input:
|
|
396
|
-
prompt: |
|
|
397
|
-
This API supports pagination. What test scenarios should I cover?
|
|
398
|
-
```javascript
|
|
399
|
-
app.get('/api/products', (req, res) => {
|
|
400
|
-
const { page = 1, limit = 20, sort = 'name' } = req.query;
|
|
401
|
-
const products = productService.find({ page, limit, sort });
|
|
402
|
-
res.json({
|
|
403
|
-
data: products,
|
|
404
|
-
pagination: { page, limit, total: products.total }
|
|
405
|
-
});
|
|
406
|
-
});
|
|
407
|
-
```
|
|
408
|
-
context:
|
|
409
|
-
language: javascript
|
|
410
|
-
|
|
411
|
-
expected_output:
|
|
412
|
-
must_contain:
|
|
413
|
-
- "page"
|
|
414
|
-
- "limit"
|
|
415
|
-
- "boundary"
|
|
416
|
-
must_match_regex:
|
|
417
|
-
- "(?i)(first.*page|last.*page|empty|zero)"
|
|
418
|
-
|
|
419
|
-
validation:
|
|
420
|
-
schema_check: true
|
|
421
|
-
keyword_match_threshold: 0.7
|
|
422
|
-
|
|
423
|
-
- id: tc009_filtering_testing
|
|
424
|
-
description: "Skill recommends filter/search testing patterns"
|
|
425
|
-
category: filtering
|
|
426
|
-
priority: medium
|
|
427
|
-
|
|
428
|
-
input:
|
|
429
|
-
prompt: |
|
|
430
|
-
How should I test filtering and search functionality?
|
|
431
|
-
```javascript
|
|
432
|
-
app.get('/api/products', (req, res) => {
|
|
433
|
-
const { category, minPrice, maxPrice, search } = req.query;
|
|
434
|
-
const filters = { category, minPrice, maxPrice, search };
|
|
435
|
-
const products = productService.search(filters);
|
|
436
|
-
res.json(products);
|
|
437
|
-
});
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
expected_output:
|
|
441
|
-
must_contain:
|
|
442
|
-
- "filter"
|
|
443
|
-
- "search"
|
|
444
|
-
must_match_regex:
|
|
445
|
-
- "(?i)(empty.*result|no.*match|invalid.*filter)"
|
|
446
|
-
|
|
447
|
-
validation:
|
|
448
|
-
schema_check: true
|
|
449
|
-
|
|
450
|
-
# -------------------------------------------------------------------------
|
|
451
|
-
# Idempotency and Concurrency Tests
|
|
452
|
-
# -------------------------------------------------------------------------
|
|
453
|
-
|
|
454
|
-
- id: tc010_idempotency_testing
|
|
455
|
-
description: "Skill identifies idempotency testing patterns"
|
|
456
|
-
category: idempotency
|
|
457
|
-
priority: high
|
|
458
|
-
|
|
459
|
-
input:
|
|
460
|
-
prompt: |
|
|
461
|
-
My payment API uses idempotency keys. What test scenarios should I cover?
|
|
462
|
-
```javascript
|
|
463
|
-
app.post('/api/payments', async (req, res) => {
|
|
464
|
-
const idempotencyKey = req.headers['idempotency-key'];
|
|
465
|
-
if (idempotencyKey) {
|
|
466
|
-
const existing = await cache.get(idempotencyKey);
|
|
467
|
-
if (existing) return res.json(existing);
|
|
468
|
-
}
|
|
469
|
-
const payment = await paymentService.process(req.body);
|
|
470
|
-
if (idempotencyKey) await cache.set(idempotencyKey, payment);
|
|
471
|
-
res.status(201).json(payment);
|
|
472
|
-
});
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
expected_output:
|
|
476
|
-
must_contain:
|
|
477
|
-
- "idempotency"
|
|
478
|
-
- "duplicate"
|
|
479
|
-
- "key"
|
|
480
|
-
must_match_regex:
|
|
481
|
-
- "(?i)(same.*result|repeat|retry)"
|
|
482
|
-
|
|
483
|
-
validation:
|
|
484
|
-
schema_check: true
|
|
485
|
-
keyword_match_threshold: 0.8
|
|
486
|
-
|
|
487
|
-
- id: tc011_concurrency_testing
|
|
488
|
-
description: "Skill identifies race condition testing scenarios"
|
|
489
|
-
category: concurrency
|
|
490
|
-
priority: high
|
|
491
|
-
|
|
492
|
-
input:
|
|
493
|
-
prompt: |
|
|
494
|
-
How do I test for race conditions in this inventory API?
|
|
495
|
-
```javascript
|
|
496
|
-
app.post('/api/orders', async (req, res) => {
|
|
497
|
-
const product = await productService.findById(req.body.productId);
|
|
498
|
-
if (product.stock < req.body.quantity) {
|
|
499
|
-
return res.status(400).json({ error: 'Insufficient stock' });
|
|
500
|
-
}
|
|
501
|
-
await productService.decrementStock(req.body.productId, req.body.quantity);
|
|
502
|
-
const order = await orderService.create(req.body);
|
|
503
|
-
res.status(201).json(order);
|
|
504
|
-
});
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
expected_output:
|
|
508
|
-
must_contain:
|
|
509
|
-
- "race"
|
|
510
|
-
- "concurrent"
|
|
511
|
-
- "parallel"
|
|
512
|
-
must_match_regex:
|
|
513
|
-
- "(?i)(lock|atomic|transaction)"
|
|
514
|
-
|
|
515
|
-
validation:
|
|
516
|
-
schema_check: true
|
|
517
|
-
keyword_match_threshold: 0.7
|
|
518
|
-
|
|
519
|
-
# -------------------------------------------------------------------------
|
|
520
|
-
# Integration Testing Patterns
|
|
521
|
-
# -------------------------------------------------------------------------
|
|
522
|
-
|
|
523
|
-
- id: tc012_integration_test_structure
|
|
524
|
-
description: "Skill recommends proper integration test structure"
|
|
525
|
-
category: integration
|
|
526
|
-
priority: high
|
|
527
|
-
|
|
528
|
-
input:
|
|
529
|
-
prompt: |
|
|
530
|
-
I need to write integration tests for my Express API that connects
|
|
531
|
-
to PostgreSQL and Redis. What patterns should I follow?
|
|
532
|
-
context:
|
|
533
|
-
framework: express
|
|
534
|
-
database: postgresql
|
|
535
|
-
cache: redis
|
|
536
|
-
|
|
537
|
-
expected_output:
|
|
538
|
-
must_contain:
|
|
539
|
-
- "database"
|
|
540
|
-
- "setup"
|
|
541
|
-
- "teardown"
|
|
542
|
-
must_match_regex:
|
|
543
|
-
- "(?i)(before|after|cleanup|seed)"
|
|
544
|
-
recommendation_count:
|
|
545
|
-
min: 1
|
|
546
|
-
|
|
547
|
-
validation:
|
|
548
|
-
schema_check: true
|
|
549
|
-
grading_rubric:
|
|
550
|
-
completeness: 0.3
|
|
551
|
-
accuracy: 0.4
|
|
552
|
-
actionability: 0.3
|
|
553
|
-
|
|
554
|
-
- id: tc013_supertest_pattern
|
|
555
|
-
description: "Skill demonstrates supertest usage for Node.js APIs"
|
|
556
|
-
category: integration
|
|
557
|
-
priority: medium
|
|
558
|
-
|
|
559
|
-
input:
|
|
560
|
-
prompt: |
|
|
561
|
-
Show me how to use supertest for testing this Express API endpoint:
|
|
562
|
-
```javascript
|
|
563
|
-
app.post('/api/users', (req, res) => {
|
|
564
|
-
const user = userService.create(req.body);
|
|
565
|
-
res.status(201).json(user);
|
|
566
|
-
});
|
|
567
|
-
```
|
|
568
|
-
context:
|
|
569
|
-
framework: express
|
|
570
|
-
testFramework: jest
|
|
571
|
-
|
|
572
|
-
expected_output:
|
|
573
|
-
must_contain:
|
|
574
|
-
- "supertest"
|
|
575
|
-
- "expect"
|
|
576
|
-
- "201"
|
|
577
|
-
must_match_regex:
|
|
578
|
-
- "(?i)(request|post|send)"
|
|
579
|
-
|
|
580
|
-
validation:
|
|
581
|
-
schema_check: true
|
|
582
|
-
|
|
583
|
-
# -------------------------------------------------------------------------
|
|
584
|
-
# Negative Tests (Should NOT find issues)
|
|
585
|
-
# -------------------------------------------------------------------------
|
|
586
|
-
|
|
587
|
-
- id: tc014_well_tested_api
|
|
588
|
-
description: "Skill acknowledges well-tested API without false positives"
|
|
589
|
-
category: negative
|
|
590
|
-
priority: high
|
|
591
|
-
|
|
592
|
-
input:
|
|
593
|
-
prompt: |
|
|
594
|
-
This API already has comprehensive tests. What additional tests might be needed?
|
|
595
|
-
- Unit tests for all service methods
|
|
596
|
-
- Integration tests for all endpoints
|
|
597
|
-
- Contract tests with all consumers
|
|
598
|
-
- Load tests for high-traffic endpoints
|
|
599
|
-
- Security tests for auth flows
|
|
600
|
-
context:
|
|
601
|
-
testCoverage: "comprehensive"
|
|
602
|
-
|
|
603
|
-
expected_output:
|
|
604
|
-
must_contain:
|
|
605
|
-
- "comprehensive"
|
|
606
|
-
must_not_contain:
|
|
607
|
-
- "critical gap"
|
|
608
|
-
- "missing"
|
|
609
|
-
- "no tests"
|
|
610
|
-
|
|
611
|
-
validation:
|
|
612
|
-
schema_check: true
|
|
613
|
-
finding_count:
|
|
614
|
-
max: 3 # Allow minor suggestions only
|
|
615
|
-
|
|
616
|
-
# -------------------------------------------------------------------------
|
|
617
|
-
# Edge Cases
|
|
618
|
-
# -------------------------------------------------------------------------
|
|
619
|
-
|
|
620
|
-
- id: tc015_empty_api_spec
|
|
621
|
-
description: "Skill handles empty or minimal API gracefully"
|
|
622
|
-
category: edge_cases
|
|
623
|
-
priority: medium
|
|
624
|
-
|
|
625
|
-
input:
|
|
626
|
-
prompt: "Analyze this API for testing patterns:"
|
|
627
|
-
context:
|
|
628
|
-
apiSpec: null
|
|
629
|
-
|
|
630
|
-
expected_output:
|
|
631
|
-
must_contain:
|
|
632
|
-
- "provide"
|
|
633
|
-
- "API"
|
|
634
|
-
must_not_contain:
|
|
635
|
-
- "exception"
|
|
636
|
-
- "crash"
|
|
637
|
-
|
|
638
|
-
validation:
|
|
639
|
-
schema_check: true
|
|
640
|
-
allow_partial: true
|
|
641
|
-
|
|
642
|
-
- id: tc016_large_api_spec
|
|
643
|
-
description: "Skill handles large API specifications"
|
|
644
|
-
category: edge_cases
|
|
645
|
-
priority: medium
|
|
646
|
-
skip: false
|
|
647
|
-
|
|
648
|
-
input:
|
|
649
|
-
file_path: fixtures/openapi-sample.yaml
|
|
650
|
-
context:
|
|
651
|
-
apiType: rest
|
|
652
|
-
|
|
653
|
-
expected_output:
|
|
654
|
-
must_contain:
|
|
655
|
-
- "endpoint"
|
|
656
|
-
- "test"
|
|
657
|
-
|
|
658
|
-
validation:
|
|
659
|
-
schema_check: true
|
|
660
|
-
|
|
661
|
-
timeout_ms: 60000
|
|
662
|
-
|
|
663
|
-
# =============================================================================
|
|
664
|
-
# Success Criteria
|
|
665
|
-
# =============================================================================
|
|
666
|
-
|
|
667
|
-
success_criteria:
|
|
668
|
-
# Minimum percentage of tests that must pass
|
|
669
|
-
pass_rate: 0.90
|
|
670
|
-
|
|
671
|
-
# Critical tests must have 100% pass rate
|
|
672
|
-
critical_pass_rate: 1.0
|
|
673
|
-
|
|
674
|
-
# Average reasoning quality across all tests
|
|
675
|
-
avg_reasoning_quality: 0.7
|
|
676
|
-
|
|
677
|
-
# Maximum time for entire suite (5 minutes)
|
|
678
|
-
max_execution_time_ms: 300000
|
|
679
|
-
|
|
680
|
-
# Maximum variance between different models (15%)
|
|
681
|
-
cross_model_variance: 0.15
|
|
682
|
-
|
|
683
|
-
# =============================================================================
|
|
684
|
-
# Metadata
|
|
685
|
-
# =============================================================================
|
|
686
|
-
|
|
687
|
-
metadata:
|
|
688
|
-
author: "@agentic-qe"
|
|
689
|
-
created: "2026-02-02"
|
|
690
|
-
last_updated: "2026-02-02"
|
|
691
|
-
coverage_target: >
|
|
692
|
-
Core API testing patterns including REST, GraphQL, contract testing,
|
|
693
|
-
authentication, error handling, pagination, idempotency, and concurrency.
|
|
694
|
-
Tests 16 scenarios across 8 categories.
|
|
695
|
-
adr_reference: "ADR-056"
|
|
696
|
-
trust_tier: 3
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# AQE API Testing Patterns Skill Evaluation Test Suite v1.0.0
|
|
3
|
+
# Per ADR-056 - Trust Tier 3 Validation
|
|
4
|
+
# =============================================================================
|
|
5
|
+
#
|
|
6
|
+
# This evaluation suite validates the api-testing-patterns skill behavior:
|
|
7
|
+
# - REST API testing patterns
|
|
8
|
+
# - GraphQL API testing patterns
|
|
9
|
+
# - Contract testing (Pact)
|
|
10
|
+
# - Authentication/Authorization testing
|
|
11
|
+
# - Error handling and validation
|
|
12
|
+
# - Pagination and filtering
|
|
13
|
+
# - Integration with QE agents
|
|
14
|
+
#
|
|
15
|
+
# Schema: .claude/skills/.validation/schemas/skill-eval.schema.json
|
|
16
|
+
# Runner: scripts/run-skill-eval.ts
|
|
17
|
+
#
|
|
18
|
+
# =============================================================================
|
|
19
|
+
|
|
20
|
+
skill: api-testing-patterns
|
|
21
|
+
version: 1.0.0
|
|
22
|
+
description: >
|
|
23
|
+
Comprehensive evaluation suite for the api-testing-patterns skill.
|
|
24
|
+
Tests core API testing patterns across REST, GraphQL, contract testing,
|
|
25
|
+
and various critical scenarios to ensure consistent, high-quality output
|
|
26
|
+
across multiple models.
|
|
27
|
+
|
|
28
|
+
# =============================================================================
|
|
29
|
+
# Multi-Model Configuration
|
|
30
|
+
# =============================================================================
|
|
31
|
+
|
|
32
|
+
models_to_test:
|
|
33
|
+
- claude-sonnet-4 # Primary model (high accuracy expected)
|
|
34
|
+
- claude-3-haiku # Fast model (minimum quality bar)
|
|
35
|
+
- gpt-4o # Cross-vendor validation
|
|
36
|
+
|
|
37
|
+
# =============================================================================
|
|
38
|
+
# MCP Integration Configuration
|
|
39
|
+
# =============================================================================
|
|
40
|
+
|
|
41
|
+
mcp_integration:
|
|
42
|
+
enabled: true
|
|
43
|
+
namespace: skill-validation
|
|
44
|
+
|
|
45
|
+
query_patterns: true
|
|
46
|
+
track_outcomes: true
|
|
47
|
+
store_patterns: true
|
|
48
|
+
share_learning: true
|
|
49
|
+
update_quality_gate: true
|
|
50
|
+
|
|
51
|
+
target_agents:
|
|
52
|
+
- qe-learning-coordinator
|
|
53
|
+
- qe-queen-coordinator
|
|
54
|
+
- qe-api-contract-validator
|
|
55
|
+
|
|
56
|
+
# =============================================================================
|
|
57
|
+
# ReasoningBank Learning Configuration
|
|
58
|
+
# =============================================================================
|
|
59
|
+
|
|
60
|
+
learning:
|
|
61
|
+
store_success_patterns: true
|
|
62
|
+
store_failure_patterns: true
|
|
63
|
+
pattern_ttl_days: 90
|
|
64
|
+
min_confidence_to_store: 0.7
|
|
65
|
+
cross_model_comparison: true
|
|
66
|
+
|
|
67
|
+
# =============================================================================
|
|
68
|
+
# Result Format Configuration
|
|
69
|
+
# =============================================================================
|
|
70
|
+
|
|
71
|
+
result_format:
|
|
72
|
+
json_output: true
|
|
73
|
+
markdown_report: true
|
|
74
|
+
include_raw_output: false
|
|
75
|
+
include_timing: true
|
|
76
|
+
include_token_usage: true
|
|
77
|
+
|
|
78
|
+
# =============================================================================
|
|
79
|
+
# Environment Setup
|
|
80
|
+
# =============================================================================
|
|
81
|
+
|
|
82
|
+
setup:
|
|
83
|
+
required_tools:
|
|
84
|
+
- jq
|
|
85
|
+
environment_variables:
|
|
86
|
+
AQE_VALIDATION_MODE: "eval"
|
|
87
|
+
fixtures:
|
|
88
|
+
- name: sample_openapi_spec
|
|
89
|
+
path: fixtures/openapi-sample.yaml
|
|
90
|
+
content: |
|
|
91
|
+
openapi: "3.0.3"
|
|
92
|
+
info:
|
|
93
|
+
title: Sample API
|
|
94
|
+
version: "1.0.0"
|
|
95
|
+
paths:
|
|
96
|
+
/users:
|
|
97
|
+
get:
|
|
98
|
+
operationId: getUsers
|
|
99
|
+
responses:
|
|
100
|
+
"200":
|
|
101
|
+
description: List of users
|
|
102
|
+
/users/{id}:
|
|
103
|
+
get:
|
|
104
|
+
operationId: getUserById
|
|
105
|
+
parameters:
|
|
106
|
+
- name: id
|
|
107
|
+
in: path
|
|
108
|
+
required: true
|
|
109
|
+
schema:
|
|
110
|
+
type: string
|
|
111
|
+
responses:
|
|
112
|
+
"200":
|
|
113
|
+
description: User found
|
|
114
|
+
"404":
|
|
115
|
+
description: User not found
|
|
116
|
+
- name: sample_express_api
|
|
117
|
+
path: fixtures/express-api.js
|
|
118
|
+
content: |
|
|
119
|
+
const express = require('express');
|
|
120
|
+
const app = express();
|
|
121
|
+
|
|
122
|
+
app.get('/api/users', (req, res) => {
|
|
123
|
+
const users = db.query('SELECT * FROM users');
|
|
124
|
+
res.json(users);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
app.post('/api/orders', (req, res) => {
|
|
128
|
+
const { productId, quantity } = req.body;
|
|
129
|
+
if (!productId) return res.status(400).json({ error: 'productId required' });
|
|
130
|
+
const order = orderService.create({ productId, quantity });
|
|
131
|
+
res.status(201).json(order);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
app.get('/api/orders/:id', auth.required, (req, res) => {
|
|
135
|
+
const order = orderService.findById(req.params.id);
|
|
136
|
+
if (!order) return res.status(404).json({ error: 'Not found' });
|
|
137
|
+
if (order.userId !== req.user.id) return res.status(403).json({ error: 'Forbidden' });
|
|
138
|
+
res.json(order);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
# =============================================================================
|
|
142
|
+
# Test Cases
|
|
143
|
+
# =============================================================================
|
|
144
|
+
|
|
145
|
+
test_cases:
|
|
146
|
+
# -------------------------------------------------------------------------
|
|
147
|
+
# Basic Functionality Tests
|
|
148
|
+
# -------------------------------------------------------------------------
|
|
149
|
+
|
|
150
|
+
- id: tc001_basic_rest_analysis
|
|
151
|
+
description: "Skill analyzes basic REST API and identifies test patterns"
|
|
152
|
+
category: basic
|
|
153
|
+
priority: critical
|
|
154
|
+
|
|
155
|
+
input:
|
|
156
|
+
prompt: |
|
|
157
|
+
Analyze this REST API endpoint and recommend API testing patterns:
|
|
158
|
+
```javascript
|
|
159
|
+
app.get('/api/users', (req, res) => {
|
|
160
|
+
const users = db.query('SELECT * FROM users');
|
|
161
|
+
res.json(users);
|
|
162
|
+
});
|
|
163
|
+
```
|
|
164
|
+
context:
|
|
165
|
+
language: javascript
|
|
166
|
+
framework: express
|
|
167
|
+
apiType: rest
|
|
168
|
+
|
|
169
|
+
expected_output:
|
|
170
|
+
must_contain:
|
|
171
|
+
- "GET"
|
|
172
|
+
- "test"
|
|
173
|
+
- "users"
|
|
174
|
+
- "response"
|
|
175
|
+
must_not_contain:
|
|
176
|
+
- "unable to analyze"
|
|
177
|
+
- "error"
|
|
178
|
+
- "TODO"
|
|
179
|
+
|
|
180
|
+
validation:
|
|
181
|
+
schema_check: true
|
|
182
|
+
keyword_match_threshold: 0.8
|
|
183
|
+
reasoning_quality_min: 0.7
|
|
184
|
+
|
|
185
|
+
- id: tc002_contract_testing_recommendation
|
|
186
|
+
description: "Skill recommends consumer-driven contracts for microservices"
|
|
187
|
+
category: contract
|
|
188
|
+
priority: critical
|
|
189
|
+
|
|
190
|
+
input:
|
|
191
|
+
prompt: |
|
|
192
|
+
I have a checkout-service that calls orders-api and payments-api.
|
|
193
|
+
What API testing patterns should I use to ensure these services
|
|
194
|
+
work correctly together?
|
|
195
|
+
context:
|
|
196
|
+
architecture: microservices
|
|
197
|
+
services:
|
|
198
|
+
- checkout-service
|
|
199
|
+
- orders-api
|
|
200
|
+
- payments-api
|
|
201
|
+
|
|
202
|
+
expected_output:
|
|
203
|
+
must_contain:
|
|
204
|
+
- "contract"
|
|
205
|
+
- "consumer"
|
|
206
|
+
- "provider"
|
|
207
|
+
must_match_regex:
|
|
208
|
+
- "(?i)(pact|consumer-driven|contract test)"
|
|
209
|
+
|
|
210
|
+
validation:
|
|
211
|
+
schema_check: true
|
|
212
|
+
keyword_match_threshold: 0.8
|
|
213
|
+
reasoning_quality_min: 0.8
|
|
214
|
+
|
|
215
|
+
- id: tc003_graphql_testing_patterns
|
|
216
|
+
description: "Skill provides GraphQL-specific testing patterns"
|
|
217
|
+
category: graphql
|
|
218
|
+
priority: high
|
|
219
|
+
|
|
220
|
+
input:
|
|
221
|
+
prompt: |
|
|
222
|
+
Analyze this GraphQL API for testing patterns:
|
|
223
|
+
```graphql
|
|
224
|
+
type Query {
|
|
225
|
+
user(id: ID!): User
|
|
226
|
+
users(limit: Int, offset: Int): [User!]!
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
type Mutation {
|
|
230
|
+
createUser(input: CreateUserInput!): User!
|
|
231
|
+
updateUser(id: ID!, input: UpdateUserInput!): User
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
context:
|
|
235
|
+
apiType: graphql
|
|
236
|
+
|
|
237
|
+
expected_output:
|
|
238
|
+
must_contain:
|
|
239
|
+
- "query"
|
|
240
|
+
- "mutation"
|
|
241
|
+
- "GraphQL"
|
|
242
|
+
must_not_contain:
|
|
243
|
+
- "REST"
|
|
244
|
+
- "HTTP method"
|
|
245
|
+
|
|
246
|
+
validation:
|
|
247
|
+
schema_check: true
|
|
248
|
+
keyword_match_threshold: 0.7
|
|
249
|
+
|
|
250
|
+
# -------------------------------------------------------------------------
|
|
251
|
+
# Authentication Testing
|
|
252
|
+
# -------------------------------------------------------------------------
|
|
253
|
+
|
|
254
|
+
- id: tc004_auth_testing_patterns
|
|
255
|
+
description: "Skill identifies authentication testing scenarios"
|
|
256
|
+
category: auth
|
|
257
|
+
priority: critical
|
|
258
|
+
|
|
259
|
+
input:
|
|
260
|
+
code: |
|
|
261
|
+
app.get('/api/orders/:id', auth.required, (req, res) => {
|
|
262
|
+
const order = orderService.findById(req.params.id);
|
|
263
|
+
if (!order) return res.status(404).json({ error: 'Not found' });
|
|
264
|
+
if (order.userId !== req.user.id) return res.status(403).json({ error: 'Forbidden' });
|
|
265
|
+
res.json(order);
|
|
266
|
+
});
|
|
267
|
+
context:
|
|
268
|
+
language: javascript
|
|
269
|
+
framework: express
|
|
270
|
+
|
|
271
|
+
expected_output:
|
|
272
|
+
must_contain:
|
|
273
|
+
- "401"
|
|
274
|
+
- "403"
|
|
275
|
+
- "auth"
|
|
276
|
+
- "token"
|
|
277
|
+
must_match_regex:
|
|
278
|
+
- "(?i)(unauthorized|forbidden|access)"
|
|
279
|
+
|
|
280
|
+
validation:
|
|
281
|
+
schema_check: true
|
|
282
|
+
keyword_match_threshold: 0.8
|
|
283
|
+
grading_rubric:
|
|
284
|
+
completeness: 0.4
|
|
285
|
+
accuracy: 0.4
|
|
286
|
+
actionability: 0.2
|
|
287
|
+
|
|
288
|
+
- id: tc005_expired_token_scenario
|
|
289
|
+
description: "Skill identifies expired token testing scenario"
|
|
290
|
+
category: auth
|
|
291
|
+
priority: high
|
|
292
|
+
|
|
293
|
+
input:
|
|
294
|
+
prompt: |
|
|
295
|
+
For a JWT-authenticated API, what test scenarios should I cover
|
|
296
|
+
for authentication failures?
|
|
297
|
+
context:
|
|
298
|
+
authType: jwt
|
|
299
|
+
|
|
300
|
+
expected_output:
|
|
301
|
+
must_contain:
|
|
302
|
+
- "expired"
|
|
303
|
+
- "invalid"
|
|
304
|
+
- "token"
|
|
305
|
+
must_match_regex:
|
|
306
|
+
- "(?i)(expire|timeout|invalid.*token)"
|
|
307
|
+
|
|
308
|
+
validation:
|
|
309
|
+
schema_check: true
|
|
310
|
+
keyword_match_threshold: 0.7
|
|
311
|
+
|
|
312
|
+
# -------------------------------------------------------------------------
|
|
313
|
+
# Error Handling Tests
|
|
314
|
+
# -------------------------------------------------------------------------
|
|
315
|
+
|
|
316
|
+
- id: tc006_error_handling_patterns
|
|
317
|
+
description: "Skill recommends error handling test scenarios"
|
|
318
|
+
category: error_handling
|
|
319
|
+
priority: high
|
|
320
|
+
|
|
321
|
+
input:
|
|
322
|
+
prompt: |
|
|
323
|
+
What error handling scenarios should I test for this API endpoint?
|
|
324
|
+
```javascript
|
|
325
|
+
app.post('/api/orders', async (req, res) => {
|
|
326
|
+
try {
|
|
327
|
+
const order = await orderService.create(req.body);
|
|
328
|
+
res.status(201).json(order);
|
|
329
|
+
} catch (error) {
|
|
330
|
+
if (error.code === 'VALIDATION_ERROR') {
|
|
331
|
+
return res.status(400).json({ error: error.message });
|
|
332
|
+
}
|
|
333
|
+
res.status(500).json({ error: 'Internal server error' });
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
```
|
|
337
|
+
context:
|
|
338
|
+
language: javascript
|
|
339
|
+
|
|
340
|
+
expected_output:
|
|
341
|
+
must_contain:
|
|
342
|
+
- "400"
|
|
343
|
+
- "500"
|
|
344
|
+
- "error"
|
|
345
|
+
- "validation"
|
|
346
|
+
must_not_contain:
|
|
347
|
+
- "no errors"
|
|
348
|
+
- "perfect"
|
|
349
|
+
|
|
350
|
+
validation:
|
|
351
|
+
schema_check: true
|
|
352
|
+
keyword_match_threshold: 0.8
|
|
353
|
+
|
|
354
|
+
- id: tc007_input_validation_testing
|
|
355
|
+
description: "Skill identifies input validation test cases"
|
|
356
|
+
category: validation
|
|
357
|
+
priority: high
|
|
358
|
+
|
|
359
|
+
input:
|
|
360
|
+
code: |
|
|
361
|
+
app.post('/api/users', (req, res) => {
|
|
362
|
+
const { email, password, age } = req.body;
|
|
363
|
+
if (!email) return res.status(400).json({ error: 'Email required' });
|
|
364
|
+
if (!password || password.length < 8) return res.status(400).json({ error: 'Password must be 8+ chars' });
|
|
365
|
+
if (age && (age < 0 || age > 150)) return res.status(400).json({ error: 'Invalid age' });
|
|
366
|
+
// Create user...
|
|
367
|
+
});
|
|
368
|
+
context:
|
|
369
|
+
language: javascript
|
|
370
|
+
|
|
371
|
+
expected_output:
|
|
372
|
+
must_contain:
|
|
373
|
+
- "required"
|
|
374
|
+
- "validation"
|
|
375
|
+
- "email"
|
|
376
|
+
- "password"
|
|
377
|
+
must_match_regex:
|
|
378
|
+
- "(?i)(boundary|range|length)"
|
|
379
|
+
finding_count:
|
|
380
|
+
min: 1
|
|
381
|
+
|
|
382
|
+
validation:
|
|
383
|
+
schema_check: true
|
|
384
|
+
keyword_match_threshold: 0.7
|
|
385
|
+
|
|
386
|
+
# -------------------------------------------------------------------------
|
|
387
|
+
# Pagination and Filtering Tests
|
|
388
|
+
# -------------------------------------------------------------------------
|
|
389
|
+
|
|
390
|
+
- id: tc008_pagination_testing
|
|
391
|
+
description: "Skill recommends pagination testing patterns"
|
|
392
|
+
category: pagination
|
|
393
|
+
priority: medium
|
|
394
|
+
|
|
395
|
+
input:
|
|
396
|
+
prompt: |
|
|
397
|
+
This API supports pagination. What test scenarios should I cover?
|
|
398
|
+
```javascript
|
|
399
|
+
app.get('/api/products', (req, res) => {
|
|
400
|
+
const { page = 1, limit = 20, sort = 'name' } = req.query;
|
|
401
|
+
const products = productService.find({ page, limit, sort });
|
|
402
|
+
res.json({
|
|
403
|
+
data: products,
|
|
404
|
+
pagination: { page, limit, total: products.total }
|
|
405
|
+
});
|
|
406
|
+
});
|
|
407
|
+
```
|
|
408
|
+
context:
|
|
409
|
+
language: javascript
|
|
410
|
+
|
|
411
|
+
expected_output:
|
|
412
|
+
must_contain:
|
|
413
|
+
- "page"
|
|
414
|
+
- "limit"
|
|
415
|
+
- "boundary"
|
|
416
|
+
must_match_regex:
|
|
417
|
+
- "(?i)(first.*page|last.*page|empty|zero)"
|
|
418
|
+
|
|
419
|
+
validation:
|
|
420
|
+
schema_check: true
|
|
421
|
+
keyword_match_threshold: 0.7
|
|
422
|
+
|
|
423
|
+
- id: tc009_filtering_testing
|
|
424
|
+
description: "Skill recommends filter/search testing patterns"
|
|
425
|
+
category: filtering
|
|
426
|
+
priority: medium
|
|
427
|
+
|
|
428
|
+
input:
|
|
429
|
+
prompt: |
|
|
430
|
+
How should I test filtering and search functionality?
|
|
431
|
+
```javascript
|
|
432
|
+
app.get('/api/products', (req, res) => {
|
|
433
|
+
const { category, minPrice, maxPrice, search } = req.query;
|
|
434
|
+
const filters = { category, minPrice, maxPrice, search };
|
|
435
|
+
const products = productService.search(filters);
|
|
436
|
+
res.json(products);
|
|
437
|
+
});
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
expected_output:
|
|
441
|
+
must_contain:
|
|
442
|
+
- "filter"
|
|
443
|
+
- "search"
|
|
444
|
+
must_match_regex:
|
|
445
|
+
- "(?i)(empty.*result|no.*match|invalid.*filter)"
|
|
446
|
+
|
|
447
|
+
validation:
|
|
448
|
+
schema_check: true
|
|
449
|
+
|
|
450
|
+
# -------------------------------------------------------------------------
|
|
451
|
+
# Idempotency and Concurrency Tests
|
|
452
|
+
# -------------------------------------------------------------------------
|
|
453
|
+
|
|
454
|
+
- id: tc010_idempotency_testing
|
|
455
|
+
description: "Skill identifies idempotency testing patterns"
|
|
456
|
+
category: idempotency
|
|
457
|
+
priority: high
|
|
458
|
+
|
|
459
|
+
input:
|
|
460
|
+
prompt: |
|
|
461
|
+
My payment API uses idempotency keys. What test scenarios should I cover?
|
|
462
|
+
```javascript
|
|
463
|
+
app.post('/api/payments', async (req, res) => {
|
|
464
|
+
const idempotencyKey = req.headers['idempotency-key'];
|
|
465
|
+
if (idempotencyKey) {
|
|
466
|
+
const existing = await cache.get(idempotencyKey);
|
|
467
|
+
if (existing) return res.json(existing);
|
|
468
|
+
}
|
|
469
|
+
const payment = await paymentService.process(req.body);
|
|
470
|
+
if (idempotencyKey) await cache.set(idempotencyKey, payment);
|
|
471
|
+
res.status(201).json(payment);
|
|
472
|
+
});
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
expected_output:
|
|
476
|
+
must_contain:
|
|
477
|
+
- "idempotency"
|
|
478
|
+
- "duplicate"
|
|
479
|
+
- "key"
|
|
480
|
+
must_match_regex:
|
|
481
|
+
- "(?i)(same.*result|repeat|retry)"
|
|
482
|
+
|
|
483
|
+
validation:
|
|
484
|
+
schema_check: true
|
|
485
|
+
keyword_match_threshold: 0.8
|
|
486
|
+
|
|
487
|
+
- id: tc011_concurrency_testing
|
|
488
|
+
description: "Skill identifies race condition testing scenarios"
|
|
489
|
+
category: concurrency
|
|
490
|
+
priority: high
|
|
491
|
+
|
|
492
|
+
input:
|
|
493
|
+
prompt: |
|
|
494
|
+
How do I test for race conditions in this inventory API?
|
|
495
|
+
```javascript
|
|
496
|
+
app.post('/api/orders', async (req, res) => {
|
|
497
|
+
const product = await productService.findById(req.body.productId);
|
|
498
|
+
if (product.stock < req.body.quantity) {
|
|
499
|
+
return res.status(400).json({ error: 'Insufficient stock' });
|
|
500
|
+
}
|
|
501
|
+
await productService.decrementStock(req.body.productId, req.body.quantity);
|
|
502
|
+
const order = await orderService.create(req.body);
|
|
503
|
+
res.status(201).json(order);
|
|
504
|
+
});
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
expected_output:
|
|
508
|
+
must_contain:
|
|
509
|
+
- "race"
|
|
510
|
+
- "concurrent"
|
|
511
|
+
- "parallel"
|
|
512
|
+
must_match_regex:
|
|
513
|
+
- "(?i)(lock|atomic|transaction)"
|
|
514
|
+
|
|
515
|
+
validation:
|
|
516
|
+
schema_check: true
|
|
517
|
+
keyword_match_threshold: 0.7
|
|
518
|
+
|
|
519
|
+
# -------------------------------------------------------------------------
|
|
520
|
+
# Integration Testing Patterns
|
|
521
|
+
# -------------------------------------------------------------------------
|
|
522
|
+
|
|
523
|
+
- id: tc012_integration_test_structure
|
|
524
|
+
description: "Skill recommends proper integration test structure"
|
|
525
|
+
category: integration
|
|
526
|
+
priority: high
|
|
527
|
+
|
|
528
|
+
input:
|
|
529
|
+
prompt: |
|
|
530
|
+
I need to write integration tests for my Express API that connects
|
|
531
|
+
to PostgreSQL and Redis. What patterns should I follow?
|
|
532
|
+
context:
|
|
533
|
+
framework: express
|
|
534
|
+
database: postgresql
|
|
535
|
+
cache: redis
|
|
536
|
+
|
|
537
|
+
expected_output:
|
|
538
|
+
must_contain:
|
|
539
|
+
- "database"
|
|
540
|
+
- "setup"
|
|
541
|
+
- "teardown"
|
|
542
|
+
must_match_regex:
|
|
543
|
+
- "(?i)(before|after|cleanup|seed)"
|
|
544
|
+
recommendation_count:
|
|
545
|
+
min: 1
|
|
546
|
+
|
|
547
|
+
validation:
|
|
548
|
+
schema_check: true
|
|
549
|
+
grading_rubric:
|
|
550
|
+
completeness: 0.3
|
|
551
|
+
accuracy: 0.4
|
|
552
|
+
actionability: 0.3
|
|
553
|
+
|
|
554
|
+
- id: tc013_supertest_pattern
|
|
555
|
+
description: "Skill demonstrates supertest usage for Node.js APIs"
|
|
556
|
+
category: integration
|
|
557
|
+
priority: medium
|
|
558
|
+
|
|
559
|
+
input:
|
|
560
|
+
prompt: |
|
|
561
|
+
Show me how to use supertest for testing this Express API endpoint:
|
|
562
|
+
```javascript
|
|
563
|
+
app.post('/api/users', (req, res) => {
|
|
564
|
+
const user = userService.create(req.body);
|
|
565
|
+
res.status(201).json(user);
|
|
566
|
+
});
|
|
567
|
+
```
|
|
568
|
+
context:
|
|
569
|
+
framework: express
|
|
570
|
+
testFramework: jest
|
|
571
|
+
|
|
572
|
+
expected_output:
|
|
573
|
+
must_contain:
|
|
574
|
+
- "supertest"
|
|
575
|
+
- "expect"
|
|
576
|
+
- "201"
|
|
577
|
+
must_match_regex:
|
|
578
|
+
- "(?i)(request|post|send)"
|
|
579
|
+
|
|
580
|
+
validation:
|
|
581
|
+
schema_check: true
|
|
582
|
+
|
|
583
|
+
# -------------------------------------------------------------------------
|
|
584
|
+
# Negative Tests (Should NOT find issues)
|
|
585
|
+
# -------------------------------------------------------------------------
|
|
586
|
+
|
|
587
|
+
- id: tc014_well_tested_api
|
|
588
|
+
description: "Skill acknowledges well-tested API without false positives"
|
|
589
|
+
category: negative
|
|
590
|
+
priority: high
|
|
591
|
+
|
|
592
|
+
input:
|
|
593
|
+
prompt: |
|
|
594
|
+
This API already has comprehensive tests. What additional tests might be needed?
|
|
595
|
+
- Unit tests for all service methods
|
|
596
|
+
- Integration tests for all endpoints
|
|
597
|
+
- Contract tests with all consumers
|
|
598
|
+
- Load tests for high-traffic endpoints
|
|
599
|
+
- Security tests for auth flows
|
|
600
|
+
context:
|
|
601
|
+
testCoverage: "comprehensive"
|
|
602
|
+
|
|
603
|
+
expected_output:
|
|
604
|
+
must_contain:
|
|
605
|
+
- "comprehensive"
|
|
606
|
+
must_not_contain:
|
|
607
|
+
- "critical gap"
|
|
608
|
+
- "missing"
|
|
609
|
+
- "no tests"
|
|
610
|
+
|
|
611
|
+
validation:
|
|
612
|
+
schema_check: true
|
|
613
|
+
finding_count:
|
|
614
|
+
max: 3 # Allow minor suggestions only
|
|
615
|
+
|
|
616
|
+
# -------------------------------------------------------------------------
|
|
617
|
+
# Edge Cases
|
|
618
|
+
# -------------------------------------------------------------------------
|
|
619
|
+
|
|
620
|
+
- id: tc015_empty_api_spec
|
|
621
|
+
description: "Skill handles empty or minimal API gracefully"
|
|
622
|
+
category: edge_cases
|
|
623
|
+
priority: medium
|
|
624
|
+
|
|
625
|
+
input:
|
|
626
|
+
prompt: "Analyze this API for testing patterns:"
|
|
627
|
+
context:
|
|
628
|
+
apiSpec: null
|
|
629
|
+
|
|
630
|
+
expected_output:
|
|
631
|
+
must_contain:
|
|
632
|
+
- "provide"
|
|
633
|
+
- "API"
|
|
634
|
+
must_not_contain:
|
|
635
|
+
- "exception"
|
|
636
|
+
- "crash"
|
|
637
|
+
|
|
638
|
+
validation:
|
|
639
|
+
schema_check: true
|
|
640
|
+
allow_partial: true
|
|
641
|
+
|
|
642
|
+
- id: tc016_large_api_spec
|
|
643
|
+
description: "Skill handles large API specifications"
|
|
644
|
+
category: edge_cases
|
|
645
|
+
priority: medium
|
|
646
|
+
skip: false
|
|
647
|
+
|
|
648
|
+
input:
|
|
649
|
+
file_path: fixtures/openapi-sample.yaml
|
|
650
|
+
context:
|
|
651
|
+
apiType: rest
|
|
652
|
+
|
|
653
|
+
expected_output:
|
|
654
|
+
must_contain:
|
|
655
|
+
- "endpoint"
|
|
656
|
+
- "test"
|
|
657
|
+
|
|
658
|
+
validation:
|
|
659
|
+
schema_check: true
|
|
660
|
+
|
|
661
|
+
timeout_ms: 60000
|
|
662
|
+
|
|
663
|
+
# =============================================================================
|
|
664
|
+
# Success Criteria
|
|
665
|
+
# =============================================================================
|
|
666
|
+
|
|
667
|
+
success_criteria:
|
|
668
|
+
# Minimum percentage of tests that must pass
|
|
669
|
+
pass_rate: 0.90
|
|
670
|
+
|
|
671
|
+
# Critical tests must have 100% pass rate
|
|
672
|
+
critical_pass_rate: 1.0
|
|
673
|
+
|
|
674
|
+
# Average reasoning quality across all tests
|
|
675
|
+
avg_reasoning_quality: 0.7
|
|
676
|
+
|
|
677
|
+
# Maximum time for entire suite (5 minutes)
|
|
678
|
+
max_execution_time_ms: 300000
|
|
679
|
+
|
|
680
|
+
# Maximum variance between different models (15%)
|
|
681
|
+
cross_model_variance: 0.15
|
|
682
|
+
|
|
683
|
+
# =============================================================================
|
|
684
|
+
# Metadata
|
|
685
|
+
# =============================================================================
|
|
686
|
+
|
|
687
|
+
metadata:
|
|
688
|
+
author: "@agentic-qe"
|
|
689
|
+
created: "2026-02-02"
|
|
690
|
+
last_updated: "2026-02-02"
|
|
691
|
+
coverage_target: >
|
|
692
|
+
Core API testing patterns including REST, GraphQL, contract testing,
|
|
693
|
+
authentication, error handling, pagination, idempotency, and concurrency.
|
|
694
|
+
Tests 16 scenarios across 8 categories.
|
|
695
|
+
adr_reference: "ADR-056"
|
|
696
|
+
trust_tier: 3
|