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,413 +1,413 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://agentic-qe.dev/schemas/skill-output-template.json",
|
|
3
|
-
"skillName": "security-testing",
|
|
4
|
-
"version": "1.0.0",
|
|
5
|
-
"timestamp": "2026-02-02T14:30:00.000Z",
|
|
6
|
-
"status": "success",
|
|
7
|
-
"trustTier": 3,
|
|
8
|
-
"output": {
|
|
9
|
-
"summary": "Security assessment completed for target application. Found 3 critical, 5 high, and 12 medium severity vulnerabilities. OWASP Top 10 coverage: 8/10 categories tested. Immediate action required for SQL injection and broken access control findings.",
|
|
10
|
-
"score": {
|
|
11
|
-
"value": 45,
|
|
12
|
-
"max": 100,
|
|
13
|
-
"grade": "F",
|
|
14
|
-
"trend": "stable"
|
|
15
|
-
},
|
|
16
|
-
"findings": [
|
|
17
|
-
{
|
|
18
|
-
"id": "SEC-001",
|
|
19
|
-
"title": "SQL Injection in User Search Endpoint",
|
|
20
|
-
"description": "The /api/users/search endpoint is vulnerable to SQL injection through the 'query' parameter. User input is concatenated directly into SQL query without parameterization.",
|
|
21
|
-
"severity": "critical",
|
|
22
|
-
"category": "A03:2021-Injection",
|
|
23
|
-
"location": {
|
|
24
|
-
"file": "src/controllers/userController.js",
|
|
25
|
-
"line": 42,
|
|
26
|
-
"column": 15,
|
|
27
|
-
"url": "https://example.com/api/users/search"
|
|
28
|
-
},
|
|
29
|
-
"evidence": "const query = `SELECT * FROM users WHERE name LIKE '%${req.query.query}%'`;",
|
|
30
|
-
"cwe": "CWE-89",
|
|
31
|
-
"cvss": 9.8,
|
|
32
|
-
"owasp": "A03:2021",
|
|
33
|
-
"remediation": "Use parameterized queries: db.query('SELECT * FROM users WHERE name LIKE ?', [`%${query}%`])",
|
|
34
|
-
"falsePositive": false,
|
|
35
|
-
"confidence": 0.98
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"id": "SEC-002",
|
|
39
|
-
"title": "Broken Access Control - Horizontal Privilege Escalation",
|
|
40
|
-
"description": "Users can access other users' orders by manipulating the order ID in the URL. No ownership check is performed.",
|
|
41
|
-
"severity": "critical",
|
|
42
|
-
"category": "A01:2021-Broken-Access-Control",
|
|
43
|
-
"location": {
|
|
44
|
-
"file": "src/controllers/orderController.js",
|
|
45
|
-
"line": 28,
|
|
46
|
-
"url": "https://example.com/api/orders/:id"
|
|
47
|
-
},
|
|
48
|
-
"evidence": "GET /api/orders/12345 returns order data regardless of authenticated user",
|
|
49
|
-
"cwe": "CWE-639",
|
|
50
|
-
"cvss": 8.6,
|
|
51
|
-
"owasp": "A01:2021",
|
|
52
|
-
"remediation": "Add ownership validation: if (order.userId !== req.user.id) return res.status(403)",
|
|
53
|
-
"falsePositive": false,
|
|
54
|
-
"confidence": 0.95
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"id": "SEC-003",
|
|
58
|
-
"title": "Stored XSS in User Comments",
|
|
59
|
-
"description": "User comments are rendered without sanitization, allowing script injection that executes in other users' browsers.",
|
|
60
|
-
"severity": "critical",
|
|
61
|
-
"category": "A03:2021-Injection",
|
|
62
|
-
"location": {
|
|
63
|
-
"file": "src/views/comments.ejs",
|
|
64
|
-
"line": 15,
|
|
65
|
-
"url": "https://example.com/posts/1/comments"
|
|
66
|
-
},
|
|
67
|
-
"evidence": "<div class='comment'><%- comment.text %></div>",
|
|
68
|
-
"cwe": "CWE-79",
|
|
69
|
-
"cvss": 8.2,
|
|
70
|
-
"owasp": "A03:2021",
|
|
71
|
-
"remediation": "Use escaped output: <%= comment.text %> or sanitize with DOMPurify",
|
|
72
|
-
"falsePositive": false,
|
|
73
|
-
"confidence": 0.92
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"id": "SEC-004",
|
|
77
|
-
"title": "Passwords Stored in Plaintext",
|
|
78
|
-
"description": "User passwords are stored in the database without hashing. Database dump would expose all user credentials.",
|
|
79
|
-
"severity": "high",
|
|
80
|
-
"category": "A02:2021-Cryptographic-Failures",
|
|
81
|
-
"location": {
|
|
82
|
-
"file": "src/models/user.js",
|
|
83
|
-
"line": 35
|
|
84
|
-
},
|
|
85
|
-
"evidence": "this.password = password; // No hashing",
|
|
86
|
-
"cwe": "CWE-256",
|
|
87
|
-
"cvss": 7.5,
|
|
88
|
-
"owasp": "A02:2021",
|
|
89
|
-
"remediation": "Hash passwords with bcrypt: this.password = await bcrypt.hash(password, 12)",
|
|
90
|
-
"falsePositive": false,
|
|
91
|
-
"confidence": 0.99
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"id": "SEC-005",
|
|
95
|
-
"title": "Missing Rate Limiting on Login Endpoint",
|
|
96
|
-
"description": "The /api/auth/login endpoint has no rate limiting, allowing brute force password attacks.",
|
|
97
|
-
"severity": "high",
|
|
98
|
-
"category": "A07:2021-Identification-Authentication-Failures",
|
|
99
|
-
"location": {
|
|
100
|
-
"url": "https://example.com/api/auth/login"
|
|
101
|
-
},
|
|
102
|
-
"evidence": "100 login attempts in 10 seconds all returned 401 without blocking",
|
|
103
|
-
"cwe": "CWE-307",
|
|
104
|
-
"cvss": 7.3,
|
|
105
|
-
"owasp": "A07:2021",
|
|
106
|
-
"remediation": "Implement rate limiting with express-rate-limit: max 5 attempts per minute per IP",
|
|
107
|
-
"falsePositive": false,
|
|
108
|
-
"confidence": 0.97
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
"id": "SEC-006",
|
|
112
|
-
"title": "Sensitive Data Exposed in API Response",
|
|
113
|
-
"description": "GET /api/users/me returns password hash, SSN, and internal user ID in response.",
|
|
114
|
-
"severity": "high",
|
|
115
|
-
"category": "A01:2021-Broken-Access-Control",
|
|
116
|
-
"location": {
|
|
117
|
-
"file": "src/controllers/userController.js",
|
|
118
|
-
"line": 58,
|
|
119
|
-
"url": "https://example.com/api/users/me"
|
|
120
|
-
},
|
|
121
|
-
"evidence": "Response includes: { password: '$2b$...', ssn: '123-45-6789', internalId: 'INT-12345' }",
|
|
122
|
-
"cwe": "CWE-200",
|
|
123
|
-
"cvss": 6.5,
|
|
124
|
-
"owasp": "A01:2021",
|
|
125
|
-
"remediation": "Use DTOs to filter sensitive fields: return { id, name, email } only",
|
|
126
|
-
"falsePositive": false,
|
|
127
|
-
"confidence": 0.99
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"id": "SEC-007",
|
|
131
|
-
"title": "Verbose Error Messages Expose Stack Traces",
|
|
132
|
-
"description": "Application errors return full stack traces to clients, revealing internal file paths and technology stack.",
|
|
133
|
-
"severity": "medium",
|
|
134
|
-
"category": "A05:2021-Security-Misconfiguration",
|
|
135
|
-
"location": {
|
|
136
|
-
"file": "src/middleware/errorHandler.js",
|
|
137
|
-
"line": 12
|
|
138
|
-
},
|
|
139
|
-
"evidence": "res.status(500).json({ error: err.message, stack: err.stack })",
|
|
140
|
-
"cwe": "CWE-209",
|
|
141
|
-
"cvss": 5.3,
|
|
142
|
-
"owasp": "A05:2021",
|
|
143
|
-
"remediation": "In production: res.status(500).json({ error: 'Internal server error' })",
|
|
144
|
-
"falsePositive": false,
|
|
145
|
-
"confidence": 0.95
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"id": "SEC-008",
|
|
149
|
-
"title": "Outdated npm Dependencies with Known Vulnerabilities",
|
|
150
|
-
"description": "npm audit found 15 vulnerabilities in dependencies: 3 critical, 5 high, 7 moderate.",
|
|
151
|
-
"severity": "high",
|
|
152
|
-
"category": "A06:2021-Vulnerable-Components",
|
|
153
|
-
"location": {
|
|
154
|
-
"file": "package.json"
|
|
155
|
-
},
|
|
156
|
-
"evidence": "lodash@4.17.15 (CVE-2021-23337), axios@0.19.0 (CVE-2021-3749)",
|
|
157
|
-
"cwe": "CWE-1104",
|
|
158
|
-
"cvss": 7.4,
|
|
159
|
-
"owasp": "A06:2021",
|
|
160
|
-
"remediation": "Run npm audit fix --force and manually review breaking changes",
|
|
161
|
-
"falsePositive": false,
|
|
162
|
-
"confidence": 1.0
|
|
163
|
-
}
|
|
164
|
-
],
|
|
165
|
-
"recommendations": [
|
|
166
|
-
{
|
|
167
|
-
"id": "REC-001",
|
|
168
|
-
"title": "Implement Parameterized Queries Throughout Application",
|
|
169
|
-
"description": "Replace all raw SQL queries with parameterized queries using your ORM's query builder or prepared statements. This eliminates SQL injection vulnerabilities.",
|
|
170
|
-
"priority": "critical",
|
|
171
|
-
"effort": "medium",
|
|
172
|
-
"impact": 10,
|
|
173
|
-
"relatedFindings": ["SEC-001"],
|
|
174
|
-
"codeExample": "// Instead of:\nconst query = `SELECT * FROM users WHERE id = ${id}`;\n\n// Use:\nconst user = await User.findByPk(id);\n// Or:\nconst [rows] = await db.query('SELECT * FROM users WHERE id = ?', [id]);",
|
|
175
|
-
"resources": [
|
|
176
|
-
{
|
|
177
|
-
"title": "OWASP SQL Injection Prevention Cheat Sheet",
|
|
178
|
-
"url": "https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html"
|
|
179
|
-
}
|
|
180
|
-
]
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
"id": "REC-002",
|
|
184
|
-
"title": "Add Authorization Middleware for Resource Access",
|
|
185
|
-
"description": "Implement ownership validation middleware that checks if the authenticated user has permission to access the requested resource.",
|
|
186
|
-
"priority": "critical",
|
|
187
|
-
"effort": "medium",
|
|
188
|
-
"impact": 9,
|
|
189
|
-
"relatedFindings": ["SEC-002", "SEC-006"],
|
|
190
|
-
"codeExample": "const authorizeOwner = (resourceType) => async (req, res, next) => {\n const resource = await db[resourceType].findByPk(req.params.id);\n if (!resource || resource.userId !== req.user.id) {\n return res.status(403).json({ error: 'Forbidden' });\n }\n req.resource = resource;\n next();\n};",
|
|
191
|
-
"resources": [
|
|
192
|
-
{
|
|
193
|
-
"title": "OWASP Authorization Cheat Sheet",
|
|
194
|
-
"url": "https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html"
|
|
195
|
-
}
|
|
196
|
-
]
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
"id": "REC-003",
|
|
200
|
-
"title": "Implement Output Encoding and Content Security Policy",
|
|
201
|
-
"description": "Sanitize all user input before rendering in HTML. Implement CSP headers to prevent XSS even if sanitization is bypassed.",
|
|
202
|
-
"priority": "critical",
|
|
203
|
-
"effort": "medium",
|
|
204
|
-
"impact": 8,
|
|
205
|
-
"relatedFindings": ["SEC-003"],
|
|
206
|
-
"codeExample": "// Use escaped output in EJS:\n<%= comment.text %>\n\n// Add CSP header:\napp.use(helmet.contentSecurityPolicy({\n directives: {\n defaultSrc: [\"'self'\"],\n scriptSrc: [\"'self'\"]\n }\n}));",
|
|
207
|
-
"resources": [
|
|
208
|
-
{
|
|
209
|
-
"title": "OWASP XSS Prevention Cheat Sheet",
|
|
210
|
-
"url": "https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html"
|
|
211
|
-
}
|
|
212
|
-
]
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"id": "REC-004",
|
|
216
|
-
"title": "Hash Passwords with bcrypt",
|
|
217
|
-
"description": "Never store passwords in plaintext. Use bcrypt with a work factor of at least 12 for password hashing.",
|
|
218
|
-
"priority": "high",
|
|
219
|
-
"effort": "low",
|
|
220
|
-
"impact": 9,
|
|
221
|
-
"relatedFindings": ["SEC-004"],
|
|
222
|
-
"codeExample": "const bcrypt = require('bcrypt');\n\n// When creating user:\nuser.password = await bcrypt.hash(plainPassword, 12);\n\n// When verifying:\nconst match = await bcrypt.compare(plainPassword, user.password);",
|
|
223
|
-
"resources": [
|
|
224
|
-
{
|
|
225
|
-
"title": "OWASP Password Storage Cheat Sheet",
|
|
226
|
-
"url": "https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html"
|
|
227
|
-
}
|
|
228
|
-
]
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
"id": "REC-005",
|
|
232
|
-
"title": "Implement Rate Limiting on Authentication Endpoints",
|
|
233
|
-
"description": "Add rate limiting to prevent brute force attacks on login, password reset, and registration endpoints.",
|
|
234
|
-
"priority": "high",
|
|
235
|
-
"effort": "low",
|
|
236
|
-
"impact": 7,
|
|
237
|
-
"relatedFindings": ["SEC-005"],
|
|
238
|
-
"codeExample": "const rateLimit = require('express-rate-limit');\n\nconst authLimiter = rateLimit({\n windowMs: 60 * 1000, // 1 minute\n max: 5,\n message: { error: 'Too many attempts, please try again later' }\n});\n\napp.use('/api/auth', authLimiter);",
|
|
239
|
-
"resources": [
|
|
240
|
-
{
|
|
241
|
-
"title": "OWASP Brute Force Prevention",
|
|
242
|
-
"url": "https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#prevent-brute-force-attacks"
|
|
243
|
-
}
|
|
244
|
-
]
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
"id": "REC-006",
|
|
248
|
-
"title": "Update All npm Dependencies",
|
|
249
|
-
"description": "Run npm audit and update all packages with known vulnerabilities. Set up automated dependency scanning with Dependabot or Snyk.",
|
|
250
|
-
"priority": "high",
|
|
251
|
-
"effort": "medium",
|
|
252
|
-
"impact": 7,
|
|
253
|
-
"relatedFindings": ["SEC-008"],
|
|
254
|
-
"codeExample": "# Run security audit\nnpm audit\n\n# Auto-fix where possible\nnpm audit fix\n\n# Manual review for breaking changes\nnpm update lodash axios",
|
|
255
|
-
"resources": [
|
|
256
|
-
{
|
|
257
|
-
"title": "npm audit documentation",
|
|
258
|
-
"url": "https://docs.npmjs.com/cli/v8/commands/npm-audit"
|
|
259
|
-
}
|
|
260
|
-
]
|
|
261
|
-
}
|
|
262
|
-
],
|
|
263
|
-
"metrics": {
|
|
264
|
-
"total": 47,
|
|
265
|
-
"passed": 27,
|
|
266
|
-
"failed": 20,
|
|
267
|
-
"skipped": 0,
|
|
268
|
-
"coverage": 80,
|
|
269
|
-
"duration": 45230,
|
|
270
|
-
"custom": {
|
|
271
|
-
"owaspCategoriesTested": 8,
|
|
272
|
-
"criticalFindings": 3,
|
|
273
|
-
"highFindings": 5,
|
|
274
|
-
"mediumFindings": 12,
|
|
275
|
-
"lowFindings": 0,
|
|
276
|
-
"infoFindings": 0
|
|
277
|
-
}
|
|
278
|
-
},
|
|
279
|
-
"categories": {
|
|
280
|
-
"A01:2021-Broken-Access-Control": {
|
|
281
|
-
"score": 35,
|
|
282
|
-
"weight": 0.15,
|
|
283
|
-
"description": "Restrictions on authenticated users are not properly enforced",
|
|
284
|
-
"grade": "F",
|
|
285
|
-
"findingCount": 2
|
|
286
|
-
},
|
|
287
|
-
"A02:2021-Cryptographic-Failures": {
|
|
288
|
-
"score": 40,
|
|
289
|
-
"weight": 0.12,
|
|
290
|
-
"description": "Failures related to cryptography leading to sensitive data exposure",
|
|
291
|
-
"grade": "F",
|
|
292
|
-
"findingCount": 1
|
|
293
|
-
},
|
|
294
|
-
"A03:2021-Injection": {
|
|
295
|
-
"score": 25,
|
|
296
|
-
"weight": 0.15,
|
|
297
|
-
"description": "User-supplied data not validated, filtered, or sanitized",
|
|
298
|
-
"grade": "F",
|
|
299
|
-
"findingCount": 2
|
|
300
|
-
},
|
|
301
|
-
"A05:2021-Security-Misconfiguration": {
|
|
302
|
-
"score": 60,
|
|
303
|
-
"weight": 0.10,
|
|
304
|
-
"description": "Missing security hardening or improperly configured permissions",
|
|
305
|
-
"grade": "D",
|
|
306
|
-
"findingCount": 1
|
|
307
|
-
},
|
|
308
|
-
"A06:2021-Vulnerable-Components": {
|
|
309
|
-
"score": 45,
|
|
310
|
-
"weight": 0.10,
|
|
311
|
-
"description": "Using components with known vulnerabilities",
|
|
312
|
-
"grade": "F",
|
|
313
|
-
"findingCount": 1
|
|
314
|
-
},
|
|
315
|
-
"A07:2021-Identification-Authentication-Failures": {
|
|
316
|
-
"score": 50,
|
|
317
|
-
"weight": 0.12,
|
|
318
|
-
"description": "Confirmation of user identity, authentication, and session management",
|
|
319
|
-
"grade": "F",
|
|
320
|
-
"findingCount": 1
|
|
321
|
-
}
|
|
322
|
-
},
|
|
323
|
-
"artifacts": [
|
|
324
|
-
{
|
|
325
|
-
"type": "report",
|
|
326
|
-
"path": "tests/reports/security-scan-2026-02-02.html",
|
|
327
|
-
"format": "html",
|
|
328
|
-
"description": "Visual HTML report with OWASP Top 10 breakdown",
|
|
329
|
-
"sizeBytes": 245780,
|
|
330
|
-
"checksum": "sha256:a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
|
|
331
|
-
},
|
|
332
|
-
{
|
|
333
|
-
"type": "data",
|
|
334
|
-
"path": "tests/reports/security-findings-2026-02-02.json",
|
|
335
|
-
"format": "json",
|
|
336
|
-
"description": "Raw findings data for CI/CD integration",
|
|
337
|
-
"sizeBytes": 18432
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
"type": "log",
|
|
341
|
-
"path": "tests/reports/security-scan.log",
|
|
342
|
-
"format": "txt",
|
|
343
|
-
"description": "Detailed scan execution log",
|
|
344
|
-
"sizeBytes": 52100
|
|
345
|
-
}
|
|
346
|
-
],
|
|
347
|
-
"timeline": [
|
|
348
|
-
{
|
|
349
|
-
"timestamp": "2026-02-02T14:30:00.000Z",
|
|
350
|
-
"event": "Security scan started",
|
|
351
|
-
"type": "start"
|
|
352
|
-
},
|
|
353
|
-
{
|
|
354
|
-
"timestamp": "2026-02-02T14:30:05.000Z",
|
|
355
|
-
"event": "SAST analysis completed",
|
|
356
|
-
"type": "checkpoint",
|
|
357
|
-
"durationMs": 5000
|
|
358
|
-
},
|
|
359
|
-
{
|
|
360
|
-
"timestamp": "2026-02-02T14:30:20.000Z",
|
|
361
|
-
"event": "Dependency audit completed",
|
|
362
|
-
"type": "checkpoint",
|
|
363
|
-
"durationMs": 15000
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
"timestamp": "2026-02-02T14:30:35.000Z",
|
|
367
|
-
"event": "DAST scanning completed",
|
|
368
|
-
"type": "checkpoint",
|
|
369
|
-
"durationMs": 15000
|
|
370
|
-
},
|
|
371
|
-
{
|
|
372
|
-
"timestamp": "2026-02-02T14:30:45.000Z",
|
|
373
|
-
"event": "Report generation completed",
|
|
374
|
-
"type": "complete",
|
|
375
|
-
"durationMs": 10000
|
|
376
|
-
}
|
|
377
|
-
]
|
|
378
|
-
},
|
|
379
|
-
"metadata": {
|
|
380
|
-
"executionTimeMs": 45230,
|
|
381
|
-
"toolsUsed": ["semgrep", "npm-audit", "owasp-zap", "trivy"],
|
|
382
|
-
"agentId": "qe-security-scanner",
|
|
383
|
-
"modelUsed": "claude-3.5-sonnet",
|
|
384
|
-
"inputHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
385
|
-
"targetUrl": "https://example.com",
|
|
386
|
-
"targetPath": "src/",
|
|
387
|
-
"environment": "ci",
|
|
388
|
-
"retryCount": 0
|
|
389
|
-
},
|
|
390
|
-
"validation": {
|
|
391
|
-
"schemaValid": true,
|
|
392
|
-
"contentValid": true,
|
|
393
|
-
"confidence": 0.95,
|
|
394
|
-
"warnings": [
|
|
395
|
-
"Some findings may require manual verification"
|
|
396
|
-
],
|
|
397
|
-
"errors": [],
|
|
398
|
-
"validatorVersion": "1.0.0"
|
|
399
|
-
},
|
|
400
|
-
"learning": {
|
|
401
|
-
"patternsDetected": [
|
|
402
|
-
"sql-injection-string-concat",
|
|
403
|
-
"missing-authorization-check",
|
|
404
|
-
"xss-unescaped-output",
|
|
405
|
-
"plaintext-password-storage"
|
|
406
|
-
],
|
|
407
|
-
"reward": 0.85,
|
|
408
|
-
"feedbackLoop": {
|
|
409
|
-
"previousRunId": "550e8400-e29b-41d4-a716-446655440000",
|
|
410
|
-
"improvement": 0.15
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agentic-qe.dev/schemas/skill-output-template.json",
|
|
3
|
+
"skillName": "security-testing",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"timestamp": "2026-02-02T14:30:00.000Z",
|
|
6
|
+
"status": "success",
|
|
7
|
+
"trustTier": 3,
|
|
8
|
+
"output": {
|
|
9
|
+
"summary": "Security assessment completed for target application. Found 3 critical, 5 high, and 12 medium severity vulnerabilities. OWASP Top 10 coverage: 8/10 categories tested. Immediate action required for SQL injection and broken access control findings.",
|
|
10
|
+
"score": {
|
|
11
|
+
"value": 45,
|
|
12
|
+
"max": 100,
|
|
13
|
+
"grade": "F",
|
|
14
|
+
"trend": "stable"
|
|
15
|
+
},
|
|
16
|
+
"findings": [
|
|
17
|
+
{
|
|
18
|
+
"id": "SEC-001",
|
|
19
|
+
"title": "SQL Injection in User Search Endpoint",
|
|
20
|
+
"description": "The /api/users/search endpoint is vulnerable to SQL injection through the 'query' parameter. User input is concatenated directly into SQL query without parameterization.",
|
|
21
|
+
"severity": "critical",
|
|
22
|
+
"category": "A03:2021-Injection",
|
|
23
|
+
"location": {
|
|
24
|
+
"file": "src/controllers/userController.js",
|
|
25
|
+
"line": 42,
|
|
26
|
+
"column": 15,
|
|
27
|
+
"url": "https://example.com/api/users/search"
|
|
28
|
+
},
|
|
29
|
+
"evidence": "const query = `SELECT * FROM users WHERE name LIKE '%${req.query.query}%'`;",
|
|
30
|
+
"cwe": "CWE-89",
|
|
31
|
+
"cvss": 9.8,
|
|
32
|
+
"owasp": "A03:2021",
|
|
33
|
+
"remediation": "Use parameterized queries: db.query('SELECT * FROM users WHERE name LIKE ?', [`%${query}%`])",
|
|
34
|
+
"falsePositive": false,
|
|
35
|
+
"confidence": 0.98
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "SEC-002",
|
|
39
|
+
"title": "Broken Access Control - Horizontal Privilege Escalation",
|
|
40
|
+
"description": "Users can access other users' orders by manipulating the order ID in the URL. No ownership check is performed.",
|
|
41
|
+
"severity": "critical",
|
|
42
|
+
"category": "A01:2021-Broken-Access-Control",
|
|
43
|
+
"location": {
|
|
44
|
+
"file": "src/controllers/orderController.js",
|
|
45
|
+
"line": 28,
|
|
46
|
+
"url": "https://example.com/api/orders/:id"
|
|
47
|
+
},
|
|
48
|
+
"evidence": "GET /api/orders/12345 returns order data regardless of authenticated user",
|
|
49
|
+
"cwe": "CWE-639",
|
|
50
|
+
"cvss": 8.6,
|
|
51
|
+
"owasp": "A01:2021",
|
|
52
|
+
"remediation": "Add ownership validation: if (order.userId !== req.user.id) return res.status(403)",
|
|
53
|
+
"falsePositive": false,
|
|
54
|
+
"confidence": 0.95
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "SEC-003",
|
|
58
|
+
"title": "Stored XSS in User Comments",
|
|
59
|
+
"description": "User comments are rendered without sanitization, allowing script injection that executes in other users' browsers.",
|
|
60
|
+
"severity": "critical",
|
|
61
|
+
"category": "A03:2021-Injection",
|
|
62
|
+
"location": {
|
|
63
|
+
"file": "src/views/comments.ejs",
|
|
64
|
+
"line": 15,
|
|
65
|
+
"url": "https://example.com/posts/1/comments"
|
|
66
|
+
},
|
|
67
|
+
"evidence": "<div class='comment'><%- comment.text %></div>",
|
|
68
|
+
"cwe": "CWE-79",
|
|
69
|
+
"cvss": 8.2,
|
|
70
|
+
"owasp": "A03:2021",
|
|
71
|
+
"remediation": "Use escaped output: <%= comment.text %> or sanitize with DOMPurify",
|
|
72
|
+
"falsePositive": false,
|
|
73
|
+
"confidence": 0.92
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": "SEC-004",
|
|
77
|
+
"title": "Passwords Stored in Plaintext",
|
|
78
|
+
"description": "User passwords are stored in the database without hashing. Database dump would expose all user credentials.",
|
|
79
|
+
"severity": "high",
|
|
80
|
+
"category": "A02:2021-Cryptographic-Failures",
|
|
81
|
+
"location": {
|
|
82
|
+
"file": "src/models/user.js",
|
|
83
|
+
"line": 35
|
|
84
|
+
},
|
|
85
|
+
"evidence": "this.password = password; // No hashing",
|
|
86
|
+
"cwe": "CWE-256",
|
|
87
|
+
"cvss": 7.5,
|
|
88
|
+
"owasp": "A02:2021",
|
|
89
|
+
"remediation": "Hash passwords with bcrypt: this.password = await bcrypt.hash(password, 12)",
|
|
90
|
+
"falsePositive": false,
|
|
91
|
+
"confidence": 0.99
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "SEC-005",
|
|
95
|
+
"title": "Missing Rate Limiting on Login Endpoint",
|
|
96
|
+
"description": "The /api/auth/login endpoint has no rate limiting, allowing brute force password attacks.",
|
|
97
|
+
"severity": "high",
|
|
98
|
+
"category": "A07:2021-Identification-Authentication-Failures",
|
|
99
|
+
"location": {
|
|
100
|
+
"url": "https://example.com/api/auth/login"
|
|
101
|
+
},
|
|
102
|
+
"evidence": "100 login attempts in 10 seconds all returned 401 without blocking",
|
|
103
|
+
"cwe": "CWE-307",
|
|
104
|
+
"cvss": 7.3,
|
|
105
|
+
"owasp": "A07:2021",
|
|
106
|
+
"remediation": "Implement rate limiting with express-rate-limit: max 5 attempts per minute per IP",
|
|
107
|
+
"falsePositive": false,
|
|
108
|
+
"confidence": 0.97
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "SEC-006",
|
|
112
|
+
"title": "Sensitive Data Exposed in API Response",
|
|
113
|
+
"description": "GET /api/users/me returns password hash, SSN, and internal user ID in response.",
|
|
114
|
+
"severity": "high",
|
|
115
|
+
"category": "A01:2021-Broken-Access-Control",
|
|
116
|
+
"location": {
|
|
117
|
+
"file": "src/controllers/userController.js",
|
|
118
|
+
"line": 58,
|
|
119
|
+
"url": "https://example.com/api/users/me"
|
|
120
|
+
},
|
|
121
|
+
"evidence": "Response includes: { password: '$2b$...', ssn: '123-45-6789', internalId: 'INT-12345' }",
|
|
122
|
+
"cwe": "CWE-200",
|
|
123
|
+
"cvss": 6.5,
|
|
124
|
+
"owasp": "A01:2021",
|
|
125
|
+
"remediation": "Use DTOs to filter sensitive fields: return { id, name, email } only",
|
|
126
|
+
"falsePositive": false,
|
|
127
|
+
"confidence": 0.99
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "SEC-007",
|
|
131
|
+
"title": "Verbose Error Messages Expose Stack Traces",
|
|
132
|
+
"description": "Application errors return full stack traces to clients, revealing internal file paths and technology stack.",
|
|
133
|
+
"severity": "medium",
|
|
134
|
+
"category": "A05:2021-Security-Misconfiguration",
|
|
135
|
+
"location": {
|
|
136
|
+
"file": "src/middleware/errorHandler.js",
|
|
137
|
+
"line": 12
|
|
138
|
+
},
|
|
139
|
+
"evidence": "res.status(500).json({ error: err.message, stack: err.stack })",
|
|
140
|
+
"cwe": "CWE-209",
|
|
141
|
+
"cvss": 5.3,
|
|
142
|
+
"owasp": "A05:2021",
|
|
143
|
+
"remediation": "In production: res.status(500).json({ error: 'Internal server error' })",
|
|
144
|
+
"falsePositive": false,
|
|
145
|
+
"confidence": 0.95
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "SEC-008",
|
|
149
|
+
"title": "Outdated npm Dependencies with Known Vulnerabilities",
|
|
150
|
+
"description": "npm audit found 15 vulnerabilities in dependencies: 3 critical, 5 high, 7 moderate.",
|
|
151
|
+
"severity": "high",
|
|
152
|
+
"category": "A06:2021-Vulnerable-Components",
|
|
153
|
+
"location": {
|
|
154
|
+
"file": "package.json"
|
|
155
|
+
},
|
|
156
|
+
"evidence": "lodash@4.17.15 (CVE-2021-23337), axios@0.19.0 (CVE-2021-3749)",
|
|
157
|
+
"cwe": "CWE-1104",
|
|
158
|
+
"cvss": 7.4,
|
|
159
|
+
"owasp": "A06:2021",
|
|
160
|
+
"remediation": "Run npm audit fix --force and manually review breaking changes",
|
|
161
|
+
"falsePositive": false,
|
|
162
|
+
"confidence": 1.0
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"recommendations": [
|
|
166
|
+
{
|
|
167
|
+
"id": "REC-001",
|
|
168
|
+
"title": "Implement Parameterized Queries Throughout Application",
|
|
169
|
+
"description": "Replace all raw SQL queries with parameterized queries using your ORM's query builder or prepared statements. This eliminates SQL injection vulnerabilities.",
|
|
170
|
+
"priority": "critical",
|
|
171
|
+
"effort": "medium",
|
|
172
|
+
"impact": 10,
|
|
173
|
+
"relatedFindings": ["SEC-001"],
|
|
174
|
+
"codeExample": "// Instead of:\nconst query = `SELECT * FROM users WHERE id = ${id}`;\n\n// Use:\nconst user = await User.findByPk(id);\n// Or:\nconst [rows] = await db.query('SELECT * FROM users WHERE id = ?', [id]);",
|
|
175
|
+
"resources": [
|
|
176
|
+
{
|
|
177
|
+
"title": "OWASP SQL Injection Prevention Cheat Sheet",
|
|
178
|
+
"url": "https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html"
|
|
179
|
+
}
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"id": "REC-002",
|
|
184
|
+
"title": "Add Authorization Middleware for Resource Access",
|
|
185
|
+
"description": "Implement ownership validation middleware that checks if the authenticated user has permission to access the requested resource.",
|
|
186
|
+
"priority": "critical",
|
|
187
|
+
"effort": "medium",
|
|
188
|
+
"impact": 9,
|
|
189
|
+
"relatedFindings": ["SEC-002", "SEC-006"],
|
|
190
|
+
"codeExample": "const authorizeOwner = (resourceType) => async (req, res, next) => {\n const resource = await db[resourceType].findByPk(req.params.id);\n if (!resource || resource.userId !== req.user.id) {\n return res.status(403).json({ error: 'Forbidden' });\n }\n req.resource = resource;\n next();\n};",
|
|
191
|
+
"resources": [
|
|
192
|
+
{
|
|
193
|
+
"title": "OWASP Authorization Cheat Sheet",
|
|
194
|
+
"url": "https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html"
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"id": "REC-003",
|
|
200
|
+
"title": "Implement Output Encoding and Content Security Policy",
|
|
201
|
+
"description": "Sanitize all user input before rendering in HTML. Implement CSP headers to prevent XSS even if sanitization is bypassed.",
|
|
202
|
+
"priority": "critical",
|
|
203
|
+
"effort": "medium",
|
|
204
|
+
"impact": 8,
|
|
205
|
+
"relatedFindings": ["SEC-003"],
|
|
206
|
+
"codeExample": "// Use escaped output in EJS:\n<%= comment.text %>\n\n// Add CSP header:\napp.use(helmet.contentSecurityPolicy({\n directives: {\n defaultSrc: [\"'self'\"],\n scriptSrc: [\"'self'\"]\n }\n}));",
|
|
207
|
+
"resources": [
|
|
208
|
+
{
|
|
209
|
+
"title": "OWASP XSS Prevention Cheat Sheet",
|
|
210
|
+
"url": "https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html"
|
|
211
|
+
}
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": "REC-004",
|
|
216
|
+
"title": "Hash Passwords with bcrypt",
|
|
217
|
+
"description": "Never store passwords in plaintext. Use bcrypt with a work factor of at least 12 for password hashing.",
|
|
218
|
+
"priority": "high",
|
|
219
|
+
"effort": "low",
|
|
220
|
+
"impact": 9,
|
|
221
|
+
"relatedFindings": ["SEC-004"],
|
|
222
|
+
"codeExample": "const bcrypt = require('bcrypt');\n\n// When creating user:\nuser.password = await bcrypt.hash(plainPassword, 12);\n\n// When verifying:\nconst match = await bcrypt.compare(plainPassword, user.password);",
|
|
223
|
+
"resources": [
|
|
224
|
+
{
|
|
225
|
+
"title": "OWASP Password Storage Cheat Sheet",
|
|
226
|
+
"url": "https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html"
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"id": "REC-005",
|
|
232
|
+
"title": "Implement Rate Limiting on Authentication Endpoints",
|
|
233
|
+
"description": "Add rate limiting to prevent brute force attacks on login, password reset, and registration endpoints.",
|
|
234
|
+
"priority": "high",
|
|
235
|
+
"effort": "low",
|
|
236
|
+
"impact": 7,
|
|
237
|
+
"relatedFindings": ["SEC-005"],
|
|
238
|
+
"codeExample": "const rateLimit = require('express-rate-limit');\n\nconst authLimiter = rateLimit({\n windowMs: 60 * 1000, // 1 minute\n max: 5,\n message: { error: 'Too many attempts, please try again later' }\n});\n\napp.use('/api/auth', authLimiter);",
|
|
239
|
+
"resources": [
|
|
240
|
+
{
|
|
241
|
+
"title": "OWASP Brute Force Prevention",
|
|
242
|
+
"url": "https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#prevent-brute-force-attacks"
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"id": "REC-006",
|
|
248
|
+
"title": "Update All npm Dependencies",
|
|
249
|
+
"description": "Run npm audit and update all packages with known vulnerabilities. Set up automated dependency scanning with Dependabot or Snyk.",
|
|
250
|
+
"priority": "high",
|
|
251
|
+
"effort": "medium",
|
|
252
|
+
"impact": 7,
|
|
253
|
+
"relatedFindings": ["SEC-008"],
|
|
254
|
+
"codeExample": "# Run security audit\nnpm audit\n\n# Auto-fix where possible\nnpm audit fix\n\n# Manual review for breaking changes\nnpm update lodash axios",
|
|
255
|
+
"resources": [
|
|
256
|
+
{
|
|
257
|
+
"title": "npm audit documentation",
|
|
258
|
+
"url": "https://docs.npmjs.com/cli/v8/commands/npm-audit"
|
|
259
|
+
}
|
|
260
|
+
]
|
|
261
|
+
}
|
|
262
|
+
],
|
|
263
|
+
"metrics": {
|
|
264
|
+
"total": 47,
|
|
265
|
+
"passed": 27,
|
|
266
|
+
"failed": 20,
|
|
267
|
+
"skipped": 0,
|
|
268
|
+
"coverage": 80,
|
|
269
|
+
"duration": 45230,
|
|
270
|
+
"custom": {
|
|
271
|
+
"owaspCategoriesTested": 8,
|
|
272
|
+
"criticalFindings": 3,
|
|
273
|
+
"highFindings": 5,
|
|
274
|
+
"mediumFindings": 12,
|
|
275
|
+
"lowFindings": 0,
|
|
276
|
+
"infoFindings": 0
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"categories": {
|
|
280
|
+
"A01:2021-Broken-Access-Control": {
|
|
281
|
+
"score": 35,
|
|
282
|
+
"weight": 0.15,
|
|
283
|
+
"description": "Restrictions on authenticated users are not properly enforced",
|
|
284
|
+
"grade": "F",
|
|
285
|
+
"findingCount": 2
|
|
286
|
+
},
|
|
287
|
+
"A02:2021-Cryptographic-Failures": {
|
|
288
|
+
"score": 40,
|
|
289
|
+
"weight": 0.12,
|
|
290
|
+
"description": "Failures related to cryptography leading to sensitive data exposure",
|
|
291
|
+
"grade": "F",
|
|
292
|
+
"findingCount": 1
|
|
293
|
+
},
|
|
294
|
+
"A03:2021-Injection": {
|
|
295
|
+
"score": 25,
|
|
296
|
+
"weight": 0.15,
|
|
297
|
+
"description": "User-supplied data not validated, filtered, or sanitized",
|
|
298
|
+
"grade": "F",
|
|
299
|
+
"findingCount": 2
|
|
300
|
+
},
|
|
301
|
+
"A05:2021-Security-Misconfiguration": {
|
|
302
|
+
"score": 60,
|
|
303
|
+
"weight": 0.10,
|
|
304
|
+
"description": "Missing security hardening or improperly configured permissions",
|
|
305
|
+
"grade": "D",
|
|
306
|
+
"findingCount": 1
|
|
307
|
+
},
|
|
308
|
+
"A06:2021-Vulnerable-Components": {
|
|
309
|
+
"score": 45,
|
|
310
|
+
"weight": 0.10,
|
|
311
|
+
"description": "Using components with known vulnerabilities",
|
|
312
|
+
"grade": "F",
|
|
313
|
+
"findingCount": 1
|
|
314
|
+
},
|
|
315
|
+
"A07:2021-Identification-Authentication-Failures": {
|
|
316
|
+
"score": 50,
|
|
317
|
+
"weight": 0.12,
|
|
318
|
+
"description": "Confirmation of user identity, authentication, and session management",
|
|
319
|
+
"grade": "F",
|
|
320
|
+
"findingCount": 1
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"artifacts": [
|
|
324
|
+
{
|
|
325
|
+
"type": "report",
|
|
326
|
+
"path": "tests/reports/security-scan-2026-02-02.html",
|
|
327
|
+
"format": "html",
|
|
328
|
+
"description": "Visual HTML report with OWASP Top 10 breakdown",
|
|
329
|
+
"sizeBytes": 245780,
|
|
330
|
+
"checksum": "sha256:a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"type": "data",
|
|
334
|
+
"path": "tests/reports/security-findings-2026-02-02.json",
|
|
335
|
+
"format": "json",
|
|
336
|
+
"description": "Raw findings data for CI/CD integration",
|
|
337
|
+
"sizeBytes": 18432
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"type": "log",
|
|
341
|
+
"path": "tests/reports/security-scan.log",
|
|
342
|
+
"format": "txt",
|
|
343
|
+
"description": "Detailed scan execution log",
|
|
344
|
+
"sizeBytes": 52100
|
|
345
|
+
}
|
|
346
|
+
],
|
|
347
|
+
"timeline": [
|
|
348
|
+
{
|
|
349
|
+
"timestamp": "2026-02-02T14:30:00.000Z",
|
|
350
|
+
"event": "Security scan started",
|
|
351
|
+
"type": "start"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"timestamp": "2026-02-02T14:30:05.000Z",
|
|
355
|
+
"event": "SAST analysis completed",
|
|
356
|
+
"type": "checkpoint",
|
|
357
|
+
"durationMs": 5000
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"timestamp": "2026-02-02T14:30:20.000Z",
|
|
361
|
+
"event": "Dependency audit completed",
|
|
362
|
+
"type": "checkpoint",
|
|
363
|
+
"durationMs": 15000
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"timestamp": "2026-02-02T14:30:35.000Z",
|
|
367
|
+
"event": "DAST scanning completed",
|
|
368
|
+
"type": "checkpoint",
|
|
369
|
+
"durationMs": 15000
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"timestamp": "2026-02-02T14:30:45.000Z",
|
|
373
|
+
"event": "Report generation completed",
|
|
374
|
+
"type": "complete",
|
|
375
|
+
"durationMs": 10000
|
|
376
|
+
}
|
|
377
|
+
]
|
|
378
|
+
},
|
|
379
|
+
"metadata": {
|
|
380
|
+
"executionTimeMs": 45230,
|
|
381
|
+
"toolsUsed": ["semgrep", "npm-audit", "owasp-zap", "trivy"],
|
|
382
|
+
"agentId": "qe-security-scanner",
|
|
383
|
+
"modelUsed": "claude-3.5-sonnet",
|
|
384
|
+
"inputHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
385
|
+
"targetUrl": "https://example.com",
|
|
386
|
+
"targetPath": "src/",
|
|
387
|
+
"environment": "ci",
|
|
388
|
+
"retryCount": 0
|
|
389
|
+
},
|
|
390
|
+
"validation": {
|
|
391
|
+
"schemaValid": true,
|
|
392
|
+
"contentValid": true,
|
|
393
|
+
"confidence": 0.95,
|
|
394
|
+
"warnings": [
|
|
395
|
+
"Some findings may require manual verification"
|
|
396
|
+
],
|
|
397
|
+
"errors": [],
|
|
398
|
+
"validatorVersion": "1.0.0"
|
|
399
|
+
},
|
|
400
|
+
"learning": {
|
|
401
|
+
"patternsDetected": [
|
|
402
|
+
"sql-injection-string-concat",
|
|
403
|
+
"missing-authorization-check",
|
|
404
|
+
"xss-unescaped-output",
|
|
405
|
+
"plaintext-password-storage"
|
|
406
|
+
],
|
|
407
|
+
"reward": 0.85,
|
|
408
|
+
"feedbackLoop": {
|
|
409
|
+
"previousRunId": "550e8400-e29b-41d4-a716-446655440000",
|
|
410
|
+
"improvement": 0.15
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|