agentic-qe 3.6.2 → 3.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/.claude/agents/v3/qe-accessibility-auditor.md +14 -9
  2. package/.claude/agents/v3/qe-bdd-generator.md +14 -9
  3. package/.claude/agents/v3/qe-chaos-engineer.md +15 -10
  4. package/.claude/agents/v3/qe-code-complexity.md +14 -9
  5. package/.claude/agents/v3/qe-code-intelligence.md +14 -9
  6. package/.claude/agents/v3/qe-contract-validator.md +14 -9
  7. package/.claude/agents/v3/qe-coverage-specialist.md +14 -9
  8. package/.claude/agents/v3/qe-defect-predictor.md +14 -9
  9. package/.claude/agents/v3/qe-dependency-mapper.md +14 -9
  10. package/.claude/agents/v3/qe-deployment-advisor.md +14 -9
  11. package/.claude/agents/v3/qe-flaky-hunter.md +14 -9
  12. package/.claude/agents/v3/qe-fleet-commander.md +14 -9
  13. package/.claude/agents/v3/qe-gap-detector.md +14 -9
  14. package/.claude/agents/v3/qe-graphql-tester.md +14 -9
  15. package/.claude/agents/v3/qe-impact-analyzer.md +14 -9
  16. package/.claude/agents/v3/qe-kg-builder.md +14 -9
  17. package/.claude/agents/v3/qe-load-tester.md +14 -9
  18. package/.claude/agents/v3/qe-message-broker-tester.md +15 -10
  19. package/.claude/agents/v3/qe-metrics-optimizer.md +14 -9
  20. package/.claude/agents/v3/qe-middleware-validator.md +15 -10
  21. package/.claude/agents/v3/qe-mutation-tester.md +14 -9
  22. package/.claude/agents/v3/qe-odata-contract-tester.md +17 -12
  23. package/.claude/agents/v3/qe-performance-tester.md +14 -9
  24. package/.claude/agents/v3/qe-product-factors-assessor.md +19 -0
  25. package/.claude/agents/v3/qe-property-tester.md +14 -9
  26. package/.claude/agents/v3/qe-qx-partner.md +101 -14
  27. package/.claude/agents/v3/qe-regression-analyzer.md +14 -9
  28. package/.claude/agents/v3/qe-requirements-validator.md +14 -9
  29. package/.claude/agents/v3/qe-responsive-tester.md +14 -9
  30. package/.claude/agents/v3/qe-retry-handler.md +14 -9
  31. package/.claude/agents/v3/qe-risk-assessor.md +14 -9
  32. package/.claude/agents/v3/qe-root-cause-analyzer.md +14 -9
  33. package/.claude/agents/v3/qe-sap-idoc-tester.md +16 -11
  34. package/.claude/agents/v3/qe-sap-rfc-tester.md +15 -10
  35. package/.claude/agents/v3/qe-security-auditor.md +18 -9
  36. package/.claude/agents/v3/qe-security-scanner.md +15 -10
  37. package/.claude/agents/v3/qe-soap-tester.md +15 -10
  38. package/.claude/agents/v3/qe-sod-analyzer.md +17 -12
  39. package/.claude/agents/v3/qe-test-architect.md +14 -9
  40. package/.claude/agents/v3/qe-transfer-specialist.md +14 -9
  41. package/.claude/agents/v3/subagents/qe-code-reviewer.md +14 -9
  42. package/.claude/agents/v3/subagents/qe-integration-reviewer.md +14 -9
  43. package/.claude/agents/v3/subagents/qe-performance-reviewer.md +14 -9
  44. package/.claude/agents/v3/subagents/qe-security-reviewer.md +14 -9
  45. package/.claude/agents/v3/subagents/qe-tdd-green.md +14 -9
  46. package/.claude/agents/v3/subagents/qe-tdd-red.md +14 -9
  47. package/.claude/agents/v3/subagents/qe-tdd-refactor.md +14 -9
  48. package/.claude/agents/v3/templates/qx-report-template.html +26 -22
  49. package/.claude/skills/.validation/README.md +2 -2
  50. package/.claude/skills/.validation/skill-validation-mcp-integration.md +1 -1
  51. package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
  52. package/.claude/skills/TRUST-TIERS.md +55 -55
  53. package/.claude/skills/a11y-ally/SKILL.md +1 -1
  54. package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
  55. package/.claude/skills/a11y-ally/scripts/validate-config.json +42 -0
  56. package/.claude/skills/accessibility-testing/SKILL.md +1 -1
  57. package/.claude/skills/accessibility-testing/scripts/validate-config.json +56 -0
  58. package/.claude/skills/api-testing-patterns/SKILL.md +1 -1
  59. package/.claude/skills/api-testing-patterns/scripts/validate-config.json +61 -0
  60. package/.claude/skills/brutal-honesty-review/SKILL.md +1 -1
  61. package/.claude/skills/brutal-honesty-review/scripts/validate-config.json +34 -0
  62. package/.claude/skills/bug-reporting-excellence/SKILL.md +1 -1
  63. package/.claude/skills/bug-reporting-excellence/scripts/validate-config.json +34 -0
  64. package/.claude/skills/chaos-engineering-resilience/SKILL.md +1 -1
  65. package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
  66. package/.claude/skills/chaos-engineering-resilience/scripts/validate-config.json +47 -0
  67. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +1 -1
  68. package/.claude/skills/cicd-pipeline-qe-orchestrator/scripts/validate-config.json +42 -0
  69. package/.claude/skills/code-review-quality/SKILL.md +1 -1
  70. package/.claude/skills/code-review-quality/scripts/validate-config.json +34 -0
  71. package/.claude/skills/compatibility-testing/SKILL.md +1 -1
  72. package/.claude/skills/compatibility-testing/scripts/validate-config.json +44 -0
  73. package/.claude/skills/compliance-testing/SKILL.md +1 -1
  74. package/.claude/skills/compliance-testing/scripts/validate-config.json +39 -0
  75. package/.claude/skills/contract-testing/SKILL.md +1 -1
  76. package/.claude/skills/contract-testing/scripts/validate-config.json +59 -0
  77. package/.claude/skills/database-testing/SKILL.md +1 -1
  78. package/.claude/skills/database-testing/evals/database-testing.yaml +1 -1
  79. package/.claude/skills/database-testing/scripts/validate-config.json +48 -0
  80. package/.claude/skills/enterprise-integration-testing/SKILL.md +1 -1
  81. package/.claude/skills/localization-testing/SKILL.md +1 -1
  82. package/.claude/skills/localization-testing/evals/localization-testing.yaml +1 -1
  83. package/.claude/skills/localization-testing/scripts/validate-config.json +42 -0
  84. package/.claude/skills/middleware-testing-patterns/SKILL.md +1 -1
  85. package/.claude/skills/mobile-testing/SKILL.md +1 -1
  86. package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
  87. package/.claude/skills/mobile-testing/scripts/validate-config.json +43 -0
  88. package/.claude/skills/mutation-testing/SKILL.md +1 -1
  89. package/.claude/skills/mutation-testing/scripts/validate-config.json +44 -0
  90. package/.claude/skills/n8n-expression-testing/SKILL.md +1 -1
  91. package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
  92. package/.claude/skills/n8n-expression-testing/scripts/validate-config.json +39 -0
  93. package/.claude/skills/n8n-integration-testing-patterns/SKILL.md +1 -1
  94. package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
  95. package/.claude/skills/n8n-integration-testing-patterns/scripts/validate-config.json +34 -0
  96. package/.claude/skills/n8n-security-testing/SKILL.md +1 -1
  97. package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
  98. package/.claude/skills/n8n-security-testing/scripts/validate-config.json +34 -0
  99. package/.claude/skills/n8n-trigger-testing-strategies/SKILL.md +1 -1
  100. package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
  101. package/.claude/skills/n8n-trigger-testing-strategies/scripts/validate-config.json +34 -0
  102. package/.claude/skills/n8n-workflow-testing-fundamentals/SKILL.md +1 -1
  103. package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
  104. package/.claude/skills/n8n-workflow-testing-fundamentals/scripts/validate-config.json +35 -0
  105. package/.claude/skills/observability-testing-patterns/SKILL.md +1 -1
  106. package/.claude/skills/pentest-validation/SKILL.md +1 -1
  107. package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
  108. package/.claude/skills/pentest-validation/scripts/validate-config.json +12 -0
  109. package/.claude/skills/performance-analysis/SKILL.md +1 -1
  110. package/.claude/skills/performance-analysis/scripts/validate-config.json +36 -0
  111. package/.claude/skills/performance-testing/SKILL.md +1 -1
  112. package/.claude/skills/performance-testing/evals/performance-testing.yaml +1 -1
  113. package/.claude/skills/performance-testing/scripts/validate-config.json +55 -0
  114. package/.claude/skills/qcsd-cicd-swarm/SKILL.md +1 -1
  115. package/.claude/skills/qcsd-development-swarm/SKILL.md +1 -1
  116. package/.claude/skills/qcsd-ideation-swarm/SKILL.md +1 -1
  117. package/.claude/skills/qcsd-ideation-swarm/scripts/validate-config.json +25 -0
  118. package/.claude/skills/qcsd-refinement-swarm/SKILL.md +1 -1
  119. package/.claude/skills/qcsd-refinement-swarm/scripts/validate-config.json +25 -0
  120. package/.claude/skills/qe-chaos-resilience/SKILL.md +1 -1
  121. package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
  122. package/.claude/skills/qe-chaos-resilience/scripts/validate-config.json +43 -0
  123. package/.claude/skills/qe-code-intelligence/SKILL.md +1 -1
  124. package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
  125. package/.claude/skills/qe-code-intelligence/scripts/validate-config.json +41 -0
  126. package/.claude/skills/qe-contract-testing/SKILL.md +1 -1
  127. package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +1 -1
  128. package/.claude/skills/qe-contract-testing/scripts/validate-config.json +42 -0
  129. package/.claude/skills/qe-coverage-analysis/SKILL.md +1 -1
  130. package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
  131. package/.claude/skills/qe-coverage-analysis/scripts/validate-config.json +42 -0
  132. package/.claude/skills/qe-defect-intelligence/SKILL.md +1 -1
  133. package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
  134. package/.claude/skills/qe-defect-intelligence/scripts/validate-config.json +40 -0
  135. package/.claude/skills/qe-iterative-loop/SKILL.md +1 -1
  136. package/.claude/skills/qe-iterative-loop/scripts/validate-config.json +40 -0
  137. package/.claude/skills/qe-learning-optimization/SKILL.md +1 -1
  138. package/.claude/skills/qe-learning-optimization/scripts/validate-config.json +25 -0
  139. package/.claude/skills/qe-quality-assessment/SKILL.md +1 -1
  140. package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
  141. package/.claude/skills/qe-quality-assessment/scripts/validate-config.json +47 -0
  142. package/.claude/skills/qe-requirements-validation/SKILL.md +1 -1
  143. package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
  144. package/.claude/skills/qe-requirements-validation/scripts/validate-config.json +37 -0
  145. package/.claude/skills/qe-security-compliance/SKILL.md +1 -1
  146. package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +1 -1
  147. package/.claude/skills/qe-security-compliance/scripts/validate-config.json +41 -0
  148. package/.claude/skills/qe-test-execution/SKILL.md +1 -1
  149. package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
  150. package/.claude/skills/qe-test-execution/scripts/validate-config.json +37 -0
  151. package/.claude/skills/qe-test-generation/SKILL.md +1 -1
  152. package/.claude/skills/qe-test-generation/scripts/validate-config.json +25 -0
  153. package/.claude/skills/qe-visual-accessibility/SKILL.md +1 -1
  154. package/.claude/skills/qe-visual-accessibility/scripts/validate-config.json +25 -0
  155. package/.claude/skills/quality-metrics/SKILL.md +1 -1
  156. package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
  157. package/.claude/skills/quality-metrics/scripts/validate-config.json +43 -0
  158. package/.claude/skills/refactoring-patterns/SKILL.md +1 -1
  159. package/.claude/skills/refactoring-patterns/scripts/validate-config.json +35 -0
  160. package/.claude/skills/regression-testing/SKILL.md +1 -1
  161. package/.claude/skills/regression-testing/evals/regression-testing.yaml +1 -1
  162. package/.claude/skills/regression-testing/scripts/validate-config.json +50 -0
  163. package/.claude/skills/risk-based-testing/SKILL.md +1 -1
  164. package/.claude/skills/risk-based-testing/scripts/validate-config.json +25 -0
  165. package/.claude/skills/security-testing/SKILL.md +1 -1
  166. package/.claude/skills/security-testing/evals/security-testing.yaml +1 -1
  167. package/.claude/skills/security-testing/scripts/validate-config.json +45 -0
  168. package/.claude/skills/security-visual-testing/SKILL.md +1 -1
  169. package/.claude/skills/security-visual-testing/scripts/validate-config.json +45 -0
  170. package/.claude/skills/sherlock-review/SKILL.md +1 -1
  171. package/.claude/skills/sherlock-review/scripts/validate-config.json +35 -0
  172. package/.claude/skills/shift-left-testing/SKILL.md +1 -1
  173. package/.claude/skills/shift-left-testing/scripts/validate-config.json +25 -0
  174. package/.claude/skills/shift-right-testing/SKILL.md +1 -1
  175. package/.claude/skills/shift-right-testing/scripts/validate-config.json +25 -0
  176. package/.claude/skills/skill-builder/SKILL.md +2 -2
  177. package/.claude/skills/skills-manifest.json +1 -1
  178. package/.claude/skills/tdd-london-chicago/SKILL.md +1 -1
  179. package/.claude/skills/tdd-london-chicago/scripts/validate-config.json +43 -0
  180. package/.claude/skills/test-automation-strategy/SKILL.md +1 -1
  181. package/.claude/skills/test-automation-strategy/scripts/validate-config.json +39 -0
  182. package/.claude/skills/test-data-management/SKILL.md +1 -1
  183. package/.claude/skills/test-data-management/evals/test-data-management.yaml +1 -1
  184. package/.claude/skills/test-data-management/scripts/validate-config.json +41 -0
  185. package/.claude/skills/test-design-techniques/SKILL.md +1 -1
  186. package/.claude/skills/test-design-techniques/scripts/validate-config.json +36 -0
  187. package/.claude/skills/test-reporting-analytics/SKILL.md +1 -1
  188. package/.claude/skills/test-reporting-analytics/scripts/validate-config.json +36 -0
  189. package/.claude/skills/testability-scoring/SKILL.md +1 -1
  190. package/.claude/skills/testability-scoring/scripts/validate-config.json +42 -0
  191. package/.claude/skills/trust-tier-manifest.json +106 -106
  192. package/.claude/skills/verification-quality/scripts/validate-config.json +36 -0
  193. package/.claude/skills/visual-testing-advanced/SKILL.md +1 -1
  194. package/.claude/skills/visual-testing-advanced/scripts/validate-config.json +38 -0
  195. package/.claude/skills/wms-testing-patterns/SKILL.md +1 -1
  196. package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -0
  197. package/.claude/skills/wms-testing-patterns/schemas/output.json +150 -0
  198. package/.claude/skills/wms-testing-patterns/scripts/validate-config.json +51 -0
  199. package/README.md +20 -20
  200. package/package.json +6 -6
  201. package/scripts/migrate-validators.cjs +171 -0
  202. package/scripts/postinstall.cjs +57 -0
  203. package/scripts/preinstall.cjs +28 -8
  204. package/scripts/test-schema-validation.js +2 -2
  205. package/scripts/update-skill-manifest.ts +3 -3
  206. package/scripts/validate-skill.cjs +384 -0
  207. package/scripts/validate-tier3.cjs +61 -0
  208. package/scripts/validator-lib.cjs +274 -0
  209. package/v3/CHANGELOG.md +21 -0
  210. package/v3/assets/agents/v3/qe-product-factors-assessor.md +19 -0
  211. package/v3/assets/agents/v3/qe-qx-partner.md +27 -0
  212. package/v3/assets/skills/.validation/README.md +1 -1
  213. package/v3/assets/skills/.validation/skill-validation-mcp-integration.md +1 -1
  214. package/v3/assets/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
  215. package/v3/assets/skills/accessibility-testing/SKILL.md +1 -1
  216. package/v3/assets/skills/accessibility-testing/scripts/validate-config.json +56 -0
  217. package/v3/assets/skills/api-testing-patterns/SKILL.md +1 -1
  218. package/v3/assets/skills/api-testing-patterns/scripts/validate-config.json +61 -0
  219. package/v3/assets/skills/bug-reporting-excellence/SKILL.md +1 -1
  220. package/v3/assets/skills/bug-reporting-excellence/scripts/validate-config.json +34 -0
  221. package/v3/assets/skills/chaos-engineering-resilience/SKILL.md +1 -1
  222. package/v3/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
  223. package/v3/assets/skills/chaos-engineering-resilience/scripts/validate-config.json +47 -0
  224. package/v3/assets/skills/code-review-quality/SKILL.md +1 -1
  225. package/v3/assets/skills/code-review-quality/scripts/validate-config.json +34 -0
  226. package/v3/assets/skills/compatibility-testing/SKILL.md +1 -1
  227. package/v3/assets/skills/compatibility-testing/scripts/validate-config.json +44 -0
  228. package/v3/assets/skills/compliance-testing/SKILL.md +1 -1
  229. package/v3/assets/skills/compliance-testing/scripts/validate-config.json +39 -0
  230. package/v3/assets/skills/contract-testing/SKILL.md +1 -1
  231. package/v3/assets/skills/contract-testing/scripts/validate-config.json +59 -0
  232. package/v3/assets/skills/database-testing/SKILL.md +1 -1
  233. package/v3/assets/skills/database-testing/evals/database-testing.yaml +1 -1
  234. package/v3/assets/skills/database-testing/scripts/validate-config.json +48 -0
  235. package/v3/assets/skills/enterprise-integration-testing/SKILL.md +1 -1
  236. package/v3/assets/skills/localization-testing/SKILL.md +1 -1
  237. package/v3/assets/skills/localization-testing/evals/localization-testing.yaml +1 -1
  238. package/v3/assets/skills/localization-testing/scripts/validate-config.json +42 -0
  239. package/v3/assets/skills/middleware-testing-patterns/SKILL.md +1 -1
  240. package/v3/assets/skills/mobile-testing/SKILL.md +1 -1
  241. package/v3/assets/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
  242. package/v3/assets/skills/mobile-testing/scripts/validate-config.json +43 -0
  243. package/v3/assets/skills/mutation-testing/SKILL.md +1 -1
  244. package/v3/assets/skills/mutation-testing/scripts/validate-config.json +44 -0
  245. package/v3/assets/skills/observability-testing-patterns/SKILL.md +1 -1
  246. package/v3/assets/skills/pentest-validation/SKILL.md +1 -1
  247. package/v3/assets/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
  248. package/v3/assets/skills/performance-testing/SKILL.md +1 -1
  249. package/v3/assets/skills/performance-testing/evals/performance-testing.yaml +1 -1
  250. package/v3/assets/skills/performance-testing/scripts/validate-config.json +55 -0
  251. package/v3/assets/skills/qcsd-cicd-swarm/SKILL.md +1 -1
  252. package/v3/assets/skills/qcsd-development-swarm/SKILL.md +1 -1
  253. package/v3/assets/skills/qcsd-ideation-swarm/SKILL.md +1 -1
  254. package/v3/assets/skills/qcsd-refinement-swarm/SKILL.md +1 -1
  255. package/v3/assets/skills/qe-chaos-resilience/SKILL.md +1 -1
  256. package/v3/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
  257. package/v3/assets/skills/qe-chaos-resilience/scripts/validate-config.json +43 -0
  258. package/v3/assets/skills/qe-code-intelligence/SKILL.md +1 -1
  259. package/v3/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
  260. package/v3/assets/skills/qe-code-intelligence/scripts/validate-config.json +41 -0
  261. package/v3/assets/skills/qe-contract-testing/SKILL.md +1 -1
  262. package/v3/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +1 -1
  263. package/v3/assets/skills/qe-contract-testing/scripts/validate-config.json +42 -0
  264. package/v3/assets/skills/qe-coverage-analysis/SKILL.md +1 -1
  265. package/v3/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
  266. package/v3/assets/skills/qe-coverage-analysis/scripts/validate-config.json +42 -0
  267. package/v3/assets/skills/qe-defect-intelligence/SKILL.md +1 -1
  268. package/v3/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
  269. package/v3/assets/skills/qe-defect-intelligence/scripts/validate-config.json +40 -0
  270. package/v3/assets/skills/qe-iterative-loop/SKILL.md +1 -1
  271. package/v3/assets/skills/qe-iterative-loop/scripts/validate-config.json +40 -0
  272. package/v3/assets/skills/qe-learning-optimization/SKILL.md +1 -1
  273. package/v3/assets/skills/qe-learning-optimization/scripts/validate-config.json +25 -0
  274. package/v3/assets/skills/qe-quality-assessment/SKILL.md +1 -1
  275. package/v3/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
  276. package/v3/assets/skills/qe-quality-assessment/scripts/validate-config.json +47 -0
  277. package/v3/assets/skills/qe-requirements-validation/SKILL.md +1 -1
  278. package/v3/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
  279. package/v3/assets/skills/qe-requirements-validation/scripts/validate-config.json +37 -0
  280. package/v3/assets/skills/qe-security-compliance/SKILL.md +1 -1
  281. package/v3/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +1 -1
  282. package/v3/assets/skills/qe-security-compliance/scripts/validate-config.json +41 -0
  283. package/v3/assets/skills/qe-test-execution/SKILL.md +1 -1
  284. package/v3/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
  285. package/v3/assets/skills/qe-test-execution/scripts/validate-config.json +37 -0
  286. package/v3/assets/skills/qe-test-generation/SKILL.md +1 -1
  287. package/v3/assets/skills/qe-test-generation/scripts/validate-config.json +25 -0
  288. package/v3/assets/skills/qe-visual-accessibility/SKILL.md +1 -1
  289. package/v3/assets/skills/qe-visual-accessibility/scripts/validate-config.json +25 -0
  290. package/v3/assets/skills/quality-metrics/SKILL.md +1 -1
  291. package/v3/assets/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
  292. package/v3/assets/skills/quality-metrics/scripts/validate-config.json +43 -0
  293. package/v3/assets/skills/refactoring-patterns/SKILL.md +1 -1
  294. package/v3/assets/skills/refactoring-patterns/scripts/validate-config.json +35 -0
  295. package/v3/assets/skills/regression-testing/SKILL.md +1 -1
  296. package/v3/assets/skills/regression-testing/evals/regression-testing.yaml +1 -1
  297. package/v3/assets/skills/regression-testing/scripts/validate-config.json +50 -0
  298. package/v3/assets/skills/risk-based-testing/SKILL.md +1 -1
  299. package/v3/assets/skills/risk-based-testing/scripts/validate-config.json +25 -0
  300. package/v3/assets/skills/security-testing/SKILL.md +1 -1
  301. package/v3/assets/skills/security-testing/evals/security-testing.yaml +1 -1
  302. package/v3/assets/skills/security-testing/scripts/validate-config.json +45 -0
  303. package/v3/assets/skills/security-visual-testing/SKILL.md +1 -1
  304. package/v3/assets/skills/shift-left-testing/SKILL.md +1 -1
  305. package/v3/assets/skills/shift-left-testing/scripts/validate-config.json +25 -0
  306. package/v3/assets/skills/shift-right-testing/SKILL.md +1 -1
  307. package/v3/assets/skills/shift-right-testing/scripts/validate-config.json +25 -0
  308. package/v3/assets/skills/tdd-london-chicago/SKILL.md +1 -1
  309. package/v3/assets/skills/tdd-london-chicago/scripts/validate-config.json +43 -0
  310. package/v3/assets/skills/test-automation-strategy/SKILL.md +1 -1
  311. package/v3/assets/skills/test-automation-strategy/scripts/validate-config.json +39 -0
  312. package/v3/assets/skills/test-data-management/SKILL.md +1 -1
  313. package/v3/assets/skills/test-data-management/evals/test-data-management.yaml +1 -1
  314. package/v3/assets/skills/test-data-management/scripts/validate-config.json +41 -0
  315. package/v3/assets/skills/test-design-techniques/SKILL.md +1 -1
  316. package/v3/assets/skills/test-design-techniques/scripts/validate-config.json +36 -0
  317. package/v3/assets/skills/test-reporting-analytics/SKILL.md +1 -1
  318. package/v3/assets/skills/test-reporting-analytics/scripts/validate-config.json +36 -0
  319. package/v3/assets/skills/verification-quality/SKILL.md +0 -6
  320. package/v3/assets/skills/verification-quality/scripts/validate-config.json +36 -0
  321. package/v3/assets/skills/visual-testing-advanced/SKILL.md +1 -1
  322. package/v3/assets/skills/visual-testing-advanced/scripts/validate-config.json +38 -0
  323. package/v3/assets/skills/wms-testing-patterns/SKILL.md +1 -1
  324. package/v3/dist/adapters/claude-flow/model-router-bridge.js +3 -3
  325. package/v3/dist/adapters/claude-flow/model-router-bridge.js.map +1 -1
  326. package/v3/dist/adapters/claude-flow/pretrain-bridge.js +4 -4
  327. package/v3/dist/adapters/claude-flow/pretrain-bridge.js.map +1 -1
  328. package/v3/dist/adapters/claude-flow/trajectory-bridge.js +4 -4
  329. package/v3/dist/adapters/claude-flow/trajectory-bridge.js.map +1 -1
  330. package/v3/dist/cli/bundle.js +135 -153
  331. package/v3/dist/cli/commands/claude-flow-setup.js +3 -3
  332. package/v3/dist/cli/commands/claude-flow-setup.js.map +1 -1
  333. package/v3/dist/cli/commands/completions.d.ts.map +1 -1
  334. package/v3/dist/cli/commands/completions.js +2 -1
  335. package/v3/dist/cli/commands/completions.js.map +1 -1
  336. package/v3/dist/cli/commands/hooks.js +8 -8
  337. package/v3/dist/cli/commands/hooks.js.map +1 -1
  338. package/v3/dist/cli/completions/index.d.ts.map +1 -1
  339. package/v3/dist/cli/completions/index.js +4 -3
  340. package/v3/dist/cli/completions/index.js.map +1 -1
  341. package/v3/dist/domains/code-intelligence/services/metric-collector/test-counter.js +5 -5
  342. package/v3/dist/domains/code-intelligence/services/metric-collector/test-counter.js.map +1 -1
  343. package/v3/dist/init/enhancements/claude-flow-adapter.d.ts.map +1 -1
  344. package/v3/dist/init/enhancements/claude-flow-adapter.js +15 -12
  345. package/v3/dist/init/enhancements/claude-flow-adapter.js.map +1 -1
  346. package/v3/dist/init/enhancements/detector.js +2 -2
  347. package/v3/dist/init/enhancements/detector.js.map +1 -1
  348. package/v3/dist/init/init-wizard.d.ts.map +1 -1
  349. package/v3/dist/init/init-wizard.js +17 -33
  350. package/v3/dist/init/init-wizard.js.map +1 -1
  351. package/v3/dist/init/phases/07-hooks.js +9 -9
  352. package/v3/dist/init/phases/07-hooks.js.map +1 -1
  353. package/v3/dist/init/phases/10-workers.d.ts.map +1 -1
  354. package/v3/dist/init/phases/10-workers.js +74 -85
  355. package/v3/dist/init/phases/10-workers.js.map +1 -1
  356. package/v3/dist/kernel/hybrid-backend.d.ts.map +1 -1
  357. package/v3/dist/kernel/hybrid-backend.js +4 -1
  358. package/v3/dist/kernel/hybrid-backend.js.map +1 -1
  359. package/v3/dist/kernel/memory-backend.d.ts.map +1 -1
  360. package/v3/dist/kernel/memory-backend.js +3 -0
  361. package/v3/dist/kernel/memory-backend.js.map +1 -1
  362. package/v3/dist/mcp/bundle.js +1339 -18
  363. package/v3/dist/mcp/tools/index.d.ts +2 -1
  364. package/v3/dist/mcp/tools/index.d.ts.map +1 -1
  365. package/v3/dist/mcp/tools/index.js +5 -1
  366. package/v3/dist/mcp/tools/index.js.map +1 -1
  367. package/v3/dist/mcp/tools/qx-analysis/analyze.d.ts +33 -0
  368. package/v3/dist/mcp/tools/qx-analysis/analyze.d.ts.map +1 -0
  369. package/v3/dist/mcp/tools/qx-analysis/analyze.js +679 -0
  370. package/v3/dist/mcp/tools/qx-analysis/analyze.js.map +1 -0
  371. package/v3/dist/mcp/tools/qx-analysis/heuristics-engine.d.ts +38 -0
  372. package/v3/dist/mcp/tools/qx-analysis/heuristics-engine.d.ts.map +1 -0
  373. package/v3/dist/mcp/tools/qx-analysis/heuristics-engine.js +458 -0
  374. package/v3/dist/mcp/tools/qx-analysis/heuristics-engine.js.map +1 -0
  375. package/v3/dist/mcp/tools/qx-analysis/impact-analyzer.d.ts +16 -0
  376. package/v3/dist/mcp/tools/qx-analysis/impact-analyzer.d.ts.map +1 -0
  377. package/v3/dist/mcp/tools/qx-analysis/impact-analyzer.js +175 -0
  378. package/v3/dist/mcp/tools/qx-analysis/impact-analyzer.js.map +1 -0
  379. package/v3/dist/mcp/tools/qx-analysis/index.d.ts +27 -0
  380. package/v3/dist/mcp/tools/qx-analysis/index.d.ts.map +1 -0
  381. package/v3/dist/mcp/tools/qx-analysis/index.js +34 -0
  382. package/v3/dist/mcp/tools/qx-analysis/index.js.map +1 -0
  383. package/v3/dist/mcp/tools/qx-analysis/oracle-detector.d.ts +22 -0
  384. package/v3/dist/mcp/tools/qx-analysis/oracle-detector.d.ts.map +1 -0
  385. package/v3/dist/mcp/tools/qx-analysis/oracle-detector.js +194 -0
  386. package/v3/dist/mcp/tools/qx-analysis/oracle-detector.js.map +1 -0
  387. package/v3/dist/mcp/tools/qx-analysis/types.d.ts +278 -0
  388. package/v3/dist/mcp/tools/qx-analysis/types.d.ts.map +1 -0
  389. package/v3/dist/mcp/tools/qx-analysis/types.js +46 -0
  390. package/v3/dist/mcp/tools/qx-analysis/types.js.map +1 -0
  391. package/v3/dist/mcp/tools/registry.d.ts +1 -0
  392. package/v3/dist/mcp/tools/registry.d.ts.map +1 -1
  393. package/v3/dist/mcp/tools/registry.js +5 -0
  394. package/v3/dist/mcp/tools/registry.js.map +1 -1
  395. package/v3/package.json +5 -5
  396. package/.claude/skills/.validation/templates/validate.template.sh +0 -1060
  397. package/.claude/skills/.validation/templates/validator-lib.sh +0 -1031
  398. package/.claude/skills/a11y-ally/scripts/validate.sh +0 -690
  399. package/.claude/skills/accessibility-testing/scripts/validate.sh +0 -943
  400. package/.claude/skills/api-testing-patterns/scripts/validate.sh +0 -931
  401. package/.claude/skills/brutal-honesty-review/scripts/validate.sh +0 -130
  402. package/.claude/skills/bug-reporting-excellence/scripts/validate.sh +0 -108
  403. package/.claude/skills/chaos-engineering-resilience/scripts/validate.sh +0 -1107
  404. package/.claude/skills/cicd-pipeline-qe-orchestrator/scripts/validate.sh +0 -310
  405. package/.claude/skills/code-review-quality/scripts/validate.sh +0 -113
  406. package/.claude/skills/compatibility-testing/scripts/validate.sh +0 -605
  407. package/.claude/skills/compliance-testing/scripts/validate.sh +0 -888
  408. package/.claude/skills/contract-testing/scripts/validate.sh +0 -1033
  409. package/.claude/skills/database-testing/scripts/validate.sh +0 -1099
  410. package/.claude/skills/localization-testing/scripts/validate.sh +0 -131
  411. package/.claude/skills/mobile-testing/scripts/validate.sh +0 -127
  412. package/.claude/skills/mutation-testing/scripts/validate.sh +0 -992
  413. package/.claude/skills/n8n-expression-testing/scripts/validate.sh +0 -162
  414. package/.claude/skills/n8n-integration-testing-patterns/scripts/validate.sh +0 -104
  415. package/.claude/skills/n8n-security-testing/scripts/validate.sh +0 -120
  416. package/.claude/skills/n8n-trigger-testing-strategies/scripts/validate.sh +0 -121
  417. package/.claude/skills/n8n-workflow-testing-fundamentals/scripts/validate.sh +0 -126
  418. package/.claude/skills/pentest-validation/scripts/validate.sh +0 -402
  419. package/.claude/skills/performance-analysis/scripts/validate.sh +0 -63
  420. package/.claude/skills/performance-testing/scripts/validate.sh +0 -1090
  421. package/.claude/skills/qcsd-ideation-swarm/scripts/validate.sh +0 -56
  422. package/.claude/skills/qcsd-refinement-swarm/scripts/validate.sh +0 -56
  423. package/.claude/skills/qe-chaos-resilience/scripts/validate.sh +0 -401
  424. package/.claude/skills/qe-code-intelligence/scripts/validate.sh +0 -408
  425. package/.claude/skills/qe-contract-testing/scripts/validate.sh +0 -421
  426. package/.claude/skills/qe-coverage-analysis/scripts/validate.sh +0 -453
  427. package/.claude/skills/qe-defect-intelligence/scripts/validate.sh +0 -466
  428. package/.claude/skills/qe-iterative-loop/scripts/validate.sh +0 -474
  429. package/.claude/skills/qe-learning-optimization/scripts/validate.sh +0 -56
  430. package/.claude/skills/qe-quality-assessment/scripts/validate.sh +0 -352
  431. package/.claude/skills/qe-requirements-validation/scripts/validate.sh +0 -275
  432. package/.claude/skills/qe-security-compliance/scripts/validate.sh +0 -305
  433. package/.claude/skills/qe-test-execution/scripts/validate.sh +0 -323
  434. package/.claude/skills/qe-test-generation/scripts/validate.sh +0 -56
  435. package/.claude/skills/qe-visual-accessibility/scripts/validate.sh +0 -56
  436. package/.claude/skills/quality-metrics/scripts/validate.sh +0 -434
  437. package/.claude/skills/refactoring-patterns/scripts/validate.sh +0 -241
  438. package/.claude/skills/regression-testing/scripts/validate.sh +0 -130
  439. package/.claude/skills/risk-based-testing/scripts/validate.sh +0 -56
  440. package/.claude/skills/security-testing/scripts/validate.sh +0 -967
  441. package/.claude/skills/security-visual-testing/scripts/validate.sh +0 -748
  442. package/.claude/skills/sherlock-review/scripts/validate.sh +0 -115
  443. package/.claude/skills/shift-left-testing/scripts/validate.sh +0 -56
  444. package/.claude/skills/shift-right-testing/scripts/validate.sh +0 -56
  445. package/.claude/skills/tdd-london-chicago/scripts/validate.sh +0 -214
  446. package/.claude/skills/test-automation-strategy/scripts/validate.sh +0 -195
  447. package/.claude/skills/test-data-management/scripts/validate.sh +0 -137
  448. package/.claude/skills/test-design-techniques/scripts/validate.sh +0 -91
  449. package/.claude/skills/test-reporting-analytics/scripts/validate.sh +0 -77
  450. package/.claude/skills/testability-scoring/scripts/validate.sh +0 -891
  451. package/.claude/skills/verification-quality/scripts/validate.sh +0 -77
  452. package/.claude/skills/visual-testing-advanced/scripts/validate.sh +0 -77
  453. package/v3/assets/skills/.validation/templates/validate.template.sh +0 -1060
  454. package/v3/assets/skills/.validation/templates/validator-lib.sh +0 -1031
  455. package/v3/assets/skills/accessibility-testing/scripts/validate.sh +0 -943
  456. package/v3/assets/skills/api-testing-patterns/scripts/validate.sh +0 -931
  457. package/v3/assets/skills/aqe-v2-v3-migration/skill.md +0 -326
  458. package/v3/assets/skills/bug-reporting-excellence/scripts/validate.sh +0 -108
  459. package/v3/assets/skills/chaos-engineering-resilience/scripts/validate.sh +0 -1107
  460. package/v3/assets/skills/code-review-quality/scripts/validate.sh +0 -113
  461. package/v3/assets/skills/compatibility-testing/scripts/validate.sh +0 -605
  462. package/v3/assets/skills/compliance-testing/scripts/validate.sh +0 -888
  463. package/v3/assets/skills/contract-testing/scripts/validate.sh +0 -1033
  464. package/v3/assets/skills/database-testing/scripts/validate.sh +0 -1099
  465. package/v3/assets/skills/localization-testing/scripts/validate.sh +0 -131
  466. package/v3/assets/skills/mobile-testing/scripts/validate.sh +0 -127
  467. package/v3/assets/skills/mutation-testing/scripts/validate.sh +0 -992
  468. package/v3/assets/skills/n8n-expression-testing/scripts/validate.sh +0 -162
  469. package/v3/assets/skills/n8n-integration-testing-patterns/scripts/validate.sh +0 -104
  470. package/v3/assets/skills/n8n-security-testing/scripts/validate.sh +0 -120
  471. package/v3/assets/skills/n8n-trigger-testing-strategies/scripts/validate.sh +0 -121
  472. package/v3/assets/skills/n8n-workflow-testing-fundamentals/scripts/validate.sh +0 -126
  473. package/v3/assets/skills/pentest-validation/scripts/validate.sh +0 -402
  474. package/v3/assets/skills/performance-testing/scripts/validate.sh +0 -1090
  475. package/v3/assets/skills/qe-chaos-resilience/scripts/validate.sh +0 -401
  476. package/v3/assets/skills/qe-code-intelligence/scripts/validate.sh +0 -408
  477. package/v3/assets/skills/qe-contract-testing/scripts/validate.sh +0 -421
  478. package/v3/assets/skills/qe-coverage-analysis/scripts/validate.sh +0 -453
  479. package/v3/assets/skills/qe-defect-intelligence/scripts/validate.sh +0 -466
  480. package/v3/assets/skills/qe-iterative-loop/scripts/validate.sh +0 -474
  481. package/v3/assets/skills/qe-learning-optimization/scripts/validate.sh +0 -56
  482. package/v3/assets/skills/qe-quality-assessment/scripts/validate.sh +0 -352
  483. package/v3/assets/skills/qe-requirements-validation/scripts/validate.sh +0 -275
  484. package/v3/assets/skills/qe-security-compliance/scripts/validate.sh +0 -305
  485. package/v3/assets/skills/qe-test-execution/scripts/validate.sh +0 -323
  486. package/v3/assets/skills/qe-test-generation/scripts/validate.sh +0 -56
  487. package/v3/assets/skills/qe-visual-accessibility/scripts/validate.sh +0 -56
  488. package/v3/assets/skills/quality-metrics/scripts/validate.sh +0 -434
  489. package/v3/assets/skills/refactoring-patterns/scripts/validate.sh +0 -241
  490. package/v3/assets/skills/regression-testing/scripts/validate.sh +0 -130
  491. package/v3/assets/skills/risk-based-testing/scripts/validate.sh +0 -56
  492. package/v3/assets/skills/security-testing/scripts/validate.sh +0 -967
  493. package/v3/assets/skills/security-visual-testing/scripts/validate.sh +0 -748
  494. package/v3/assets/skills/shift-left-testing/scripts/validate.sh +0 -56
  495. package/v3/assets/skills/shift-right-testing/scripts/validate.sh +0 -56
  496. package/v3/assets/skills/tdd-london-chicago/scripts/validate.sh +0 -214
  497. package/v3/assets/skills/test-automation-strategy/scripts/validate.sh +0 -195
  498. package/v3/assets/skills/test-data-management/scripts/validate.sh +0 -137
  499. package/v3/assets/skills/test-design-techniques/scripts/validate.sh +0 -91
  500. package/v3/assets/skills/test-reporting-analytics/scripts/validate.sh +0 -77
  501. package/v3/assets/skills/verification-quality/scripts/validate.sh +0 -77
  502. package/v3/assets/skills/visual-testing-advanced/scripts/validate.sh +0 -77
@@ -0,0 +1,679 @@
1
+ /**
2
+ * Agentic QE v3 - QX Analysis MCP Tool
3
+ *
4
+ * qe/qx/analyze - Comprehensive Quality Experience analysis
5
+ *
6
+ * Combines heuristics engine, oracle detector, and impact analyzer
7
+ * for programmatic QX analysis matching V2 quality.
8
+ *
9
+ * QX Methodology by Lalitkumar Bhamare / Tales of Testing
10
+ */
11
+ import { MCPToolBase } from '../base';
12
+ import { QXHeuristicsEngine } from './heuristics-engine';
13
+ import { OracleDetector } from './oracle-detector';
14
+ import { ImpactAnalyzer } from './impact-analyzer';
15
+ import { QXHeuristic, } from './types';
16
+ // ============================================================================
17
+ // Schema
18
+ // ============================================================================
19
+ const QX_ANALYZE_SCHEMA = {
20
+ type: 'object',
21
+ properties: {
22
+ target: {
23
+ type: 'string',
24
+ description: 'Target URL or identifier to analyze',
25
+ },
26
+ context: {
27
+ type: 'object',
28
+ description: 'Pre-collected QX context (optional)',
29
+ },
30
+ mode: {
31
+ type: 'string',
32
+ description: 'Analysis mode: full, quick, or targeted',
33
+ enum: ['full', 'quick', 'targeted'],
34
+ default: 'full',
35
+ },
36
+ heuristics: {
37
+ type: 'array',
38
+ description: 'Specific heuristics to apply (default: all)',
39
+ },
40
+ minOracleSeverity: {
41
+ type: 'string',
42
+ description: 'Minimum oracle problem severity to report',
43
+ enum: ['low', 'medium', 'high', 'critical'],
44
+ default: 'medium',
45
+ },
46
+ includeCreativity: {
47
+ type: 'boolean',
48
+ description: 'Include creativity analysis from diverse domains',
49
+ default: true,
50
+ },
51
+ includeDesign: {
52
+ type: 'boolean',
53
+ description: 'Include design quality analysis',
54
+ default: true,
55
+ },
56
+ },
57
+ required: ['target'],
58
+ };
59
+ // ============================================================================
60
+ // Tool Implementation
61
+ // ============================================================================
62
+ export class QXAnalyzeTool extends MCPToolBase {
63
+ config = {
64
+ name: 'qe/qx/analyze',
65
+ description: 'Comprehensive Quality Experience (QX) analysis combining QA and UX perspectives. ' +
66
+ 'Applies 23+ programmatic heuristics, detects oracle problems, and analyzes impacts. ' +
67
+ 'QX = Marriage between QA (Quality Advocacy) and UX (User Experience).',
68
+ domain: 'quality-assessment',
69
+ schema: QX_ANALYZE_SCHEMA,
70
+ streaming: true,
71
+ timeout: 180000,
72
+ };
73
+ async execute(params, context) {
74
+ const { target, context: qxContext = this.createMinimalContext(target), mode = 'full', heuristics, minOracleSeverity = 'medium', includeCreativity = true, includeDesign = true, } = params;
75
+ try {
76
+ this.emitStream(context, {
77
+ status: 'starting',
78
+ message: `Starting QX analysis for: ${target}`,
79
+ phase: 'initialization',
80
+ });
81
+ // 1. Analyze problem
82
+ this.emitStream(context, { status: 'analyzing', phase: 'problem-analysis' });
83
+ const problemAnalysis = this.analyzeProblem(qxContext);
84
+ if (this.isAborted(context)) {
85
+ return { success: false, error: 'Operation aborted' };
86
+ }
87
+ // 2. Analyze user needs
88
+ this.emitStream(context, { status: 'analyzing', phase: 'user-needs' });
89
+ const userNeeds = this.analyzeUserNeeds(qxContext, problemAnalysis);
90
+ // 3. Analyze business needs
91
+ this.emitStream(context, { status: 'analyzing', phase: 'business-needs' });
92
+ const businessNeeds = this.analyzeBusinessNeeds(qxContext, problemAnalysis);
93
+ // 4. Analyze creativity (optional)
94
+ this.emitStream(context, { status: 'analyzing', phase: 'creativity' });
95
+ const creativityAnalysis = includeCreativity
96
+ ? this.analyzeCreativity(qxContext, problemAnalysis)
97
+ : this.createMinimalCreativityAnalysis();
98
+ // 5. Analyze design (optional)
99
+ this.emitStream(context, { status: 'analyzing', phase: 'design' });
100
+ const designAnalysis = includeDesign
101
+ ? this.analyzeDesign(qxContext)
102
+ : this.createMinimalDesignAnalysis();
103
+ // 6. Detect oracle problems
104
+ this.emitStream(context, { status: 'analyzing', phase: 'oracle-detection' });
105
+ const oracleDetector = new OracleDetector(minOracleSeverity);
106
+ const oracleProblems = oracleDetector.detect(qxContext, userNeeds, businessNeeds);
107
+ // 7. Analyze impacts
108
+ this.emitStream(context, { status: 'analyzing', phase: 'impact-analysis' });
109
+ const impactAnalyzer = new ImpactAnalyzer();
110
+ const impactAnalysis = impactAnalyzer.analyze(qxContext, problemAnalysis);
111
+ // 8. Apply heuristics
112
+ this.emitStream(context, { status: 'analyzing', phase: 'heuristics', count: 23 });
113
+ const heuristicsEngine = new QXHeuristicsEngine({
114
+ enabledHeuristics: heuristics || Object.values(QXHeuristic),
115
+ });
116
+ const heuristicResults = await heuristicsEngine.applyAll(qxContext, problemAnalysis, userNeeds, businessNeeds);
117
+ // 9. Generate recommendations
118
+ this.emitStream(context, { status: 'analyzing', phase: 'recommendations' });
119
+ const recommendations = this.generateRecommendations(problemAnalysis, userNeeds, businessNeeds, oracleProblems, impactAnalysis, heuristicResults);
120
+ // 10. Calculate overall score
121
+ const overallScore = this.calculateOverallScore(problemAnalysis, userNeeds, businessNeeds, creativityAnalysis, designAnalysis, impactAnalysis, heuristicResults);
122
+ const grade = this.scoreToGrade(overallScore);
123
+ const result = {
124
+ overallScore,
125
+ grade,
126
+ timestamp: new Date().toISOString(),
127
+ target,
128
+ problemAnalysis,
129
+ userNeeds,
130
+ businessNeeds,
131
+ creativityAnalysis,
132
+ designAnalysis,
133
+ oracleProblems,
134
+ impactAnalysis,
135
+ heuristics: heuristicResults,
136
+ recommendations,
137
+ context: qxContext,
138
+ };
139
+ this.emitStream(context, {
140
+ status: 'complete',
141
+ score: overallScore,
142
+ grade,
143
+ heuristicsApplied: heuristicResults.length,
144
+ oracleProblemsFound: oracleProblems.length,
145
+ });
146
+ return {
147
+ success: true,
148
+ data: result,
149
+ metadata: this.createMetadata(context.startTime, context.requestId),
150
+ };
151
+ }
152
+ catch (error) {
153
+ return {
154
+ success: false,
155
+ error: `QX analysis failed: ${error instanceof Error ? error.message : String(error)}`,
156
+ };
157
+ }
158
+ }
159
+ // ============================================================================
160
+ // Analysis Methods (Ported from V2)
161
+ // ============================================================================
162
+ analyzeProblem(context) {
163
+ const title = context.title || 'Untitled page';
164
+ const description = context.metadata?.description || '';
165
+ const hasError = context.errorIndicators?.hasErrorMessages || false;
166
+ let problemStatement = `Evaluate quality experience of "${title}"`;
167
+ if (description) {
168
+ problemStatement += ` - ${description.substring(0, 100)}`;
169
+ }
170
+ const totalElements = context.domMetrics?.totalElements || 0;
171
+ const interactiveElements = context.domMetrics?.interactiveElements || 0;
172
+ const forms = context.domMetrics?.forms || 0;
173
+ let complexity;
174
+ if (totalElements > 500 || interactiveElements > 50 || forms > 3) {
175
+ complexity = 'complex';
176
+ }
177
+ else if (totalElements > 200 || interactiveElements > 20 || forms > 1) {
178
+ complexity = 'moderate';
179
+ }
180
+ else {
181
+ complexity = 'simple';
182
+ }
183
+ const breakdown = [];
184
+ if (context.domMetrics?.semanticStructure?.hasNav)
185
+ breakdown.push('Navigation structure');
186
+ if (forms > 0)
187
+ breakdown.push(`Form interactions (${forms} forms)`);
188
+ if (interactiveElements > 0)
189
+ breakdown.push(`User interactions (${interactiveElements} elements)`);
190
+ if (context.accessibility)
191
+ breakdown.push('Accessibility compliance');
192
+ if (context.performance)
193
+ breakdown.push('Performance metrics');
194
+ const potentialFailures = [];
195
+ // Domain-specific failure modes
196
+ const titleLower = title.toLowerCase();
197
+ if (titleLower.includes('health') || titleLower.includes('care') || titleLower.includes('nhs')) {
198
+ potentialFailures.push({
199
+ description: 'Healthcare information may not be accessible to users with visual impairments',
200
+ severity: 'high',
201
+ likelihood: 'likely',
202
+ });
203
+ potentialFailures.push({
204
+ description: 'Patient journey complexity may cause confusion during registration or booking',
205
+ severity: 'medium',
206
+ likelihood: 'possible',
207
+ });
208
+ potentialFailures.push({
209
+ description: 'Emergency contact information may not be prominently visible',
210
+ severity: 'high',
211
+ likelihood: 'possible',
212
+ });
213
+ }
214
+ // Generic failure modes based on context
215
+ if (!context.domMetrics?.semanticStructure?.hasMain) {
216
+ potentialFailures.push({
217
+ description: 'Missing main content landmark - users may struggle to find primary content',
218
+ severity: 'medium',
219
+ likelihood: 'likely',
220
+ });
221
+ }
222
+ if (context.accessibility && (context.accessibility.altTextsCoverage || 0) < 80) {
223
+ potentialFailures.push({
224
+ description: 'Poor image alt text coverage - screen reader users affected',
225
+ severity: 'high',
226
+ likelihood: 'very-likely',
227
+ });
228
+ }
229
+ if (hasError) {
230
+ potentialFailures.push({
231
+ description: 'Visible error messages detected - potential usability issues',
232
+ severity: 'medium',
233
+ likelihood: 'likely',
234
+ });
235
+ }
236
+ if (context.performance && (context.performance.loadTime || 0) > 3000) {
237
+ potentialFailures.push({
238
+ description: 'Slow load time - user frustration and abandonment risk',
239
+ severity: 'high',
240
+ likelihood: 'very-likely',
241
+ });
242
+ }
243
+ // Ensure Rule of Three
244
+ while (potentialFailures.length < 3) {
245
+ if (complexity === 'complex') {
246
+ potentialFailures.push({
247
+ description: 'Complex interaction flows may confuse first-time users',
248
+ severity: 'medium',
249
+ likelihood: 'possible',
250
+ });
251
+ }
252
+ else if (complexity === 'moderate') {
253
+ potentialFailures.push({
254
+ description: 'Multiple interactive elements increase cognitive load',
255
+ severity: 'low',
256
+ likelihood: 'possible',
257
+ });
258
+ }
259
+ else {
260
+ potentialFailures.push({
261
+ description: 'Limited interactivity may not meet user expectations',
262
+ severity: 'low',
263
+ likelihood: 'possible',
264
+ });
265
+ }
266
+ }
267
+ let clarityScore = 50;
268
+ if (title && title !== 'Untitled page')
269
+ clarityScore += 15;
270
+ if (description)
271
+ clarityScore += 15;
272
+ if (breakdown.length >= 3)
273
+ clarityScore += 10;
274
+ if (context.domMetrics?.semanticStructure?.hasMain)
275
+ clarityScore += 10;
276
+ clarityScore = Math.min(100, clarityScore);
277
+ return {
278
+ problemStatement,
279
+ complexity,
280
+ breakdown,
281
+ potentialFailures: potentialFailures.slice(0, 5),
282
+ clarityScore,
283
+ };
284
+ }
285
+ analyzeUserNeeds(context, problemAnalysis) {
286
+ const needs = [];
287
+ const challenges = [];
288
+ const semantic = context.domMetrics?.semanticStructure;
289
+ const accessibility = context.accessibility;
290
+ const interactiveElements = context.domMetrics?.interactiveElements || 0;
291
+ const forms = context.domMetrics?.forms || 0;
292
+ // Must-have features
293
+ if (semantic?.hasNav) {
294
+ needs.push({ description: 'Clear navigation to find content', priority: 'must-have', addressed: true });
295
+ }
296
+ else {
297
+ challenges.push('Missing navigation structure - users cannot easily explore site');
298
+ needs.push({ description: 'Clear navigation to find content', priority: 'must-have', addressed: false });
299
+ }
300
+ if (interactiveElements > 0) {
301
+ needs.push({ description: 'Interactive elements for engagement', priority: 'must-have', addressed: true });
302
+ }
303
+ if (accessibility && (accessibility.focusableElementsCount || 0) > 0) {
304
+ needs.push({ description: 'Keyboard navigation support', priority: 'must-have', addressed: true });
305
+ }
306
+ else {
307
+ challenges.push('Limited keyboard navigation - inaccessible to some users');
308
+ needs.push({ description: 'Keyboard navigation support', priority: 'must-have', addressed: false });
309
+ }
310
+ // Should-have features
311
+ if (semantic?.hasHeader) {
312
+ needs.push({ description: 'Consistent page header for orientation', priority: 'should-have', addressed: true });
313
+ }
314
+ if (semantic?.hasFooter) {
315
+ needs.push({ description: 'Footer with supporting information', priority: 'should-have', addressed: true });
316
+ }
317
+ if (accessibility && (accessibility.altTextsCoverage || 0) > 50) {
318
+ needs.push({ description: 'Image descriptions for screen readers', priority: 'should-have', addressed: true });
319
+ }
320
+ else if (accessibility && (accessibility.altTextsCoverage || 0) < 50) {
321
+ challenges.push('Poor alt text coverage - images not accessible');
322
+ needs.push({ description: 'Image descriptions for screen readers', priority: 'should-have', addressed: false });
323
+ }
324
+ if (context.performance && (context.performance.loadTime || 0) < 3000) {
325
+ needs.push({ description: 'Fast page load time', priority: 'should-have', addressed: true });
326
+ }
327
+ else if (context.performance && (context.performance.loadTime || 0) >= 3000) {
328
+ challenges.push('Slow load time - user frustration risk');
329
+ needs.push({ description: 'Fast page load time', priority: 'should-have', addressed: false });
330
+ }
331
+ // Nice-to-have features
332
+ if (semantic?.hasAside) {
333
+ needs.push({ description: 'Supplementary content sections', priority: 'nice-to-have', addressed: true });
334
+ }
335
+ if (accessibility && (accessibility.landmarkRoles || 0) > 3) {
336
+ needs.push({ description: 'Rich ARIA landmarks for navigation', priority: 'nice-to-have', addressed: true });
337
+ }
338
+ if (forms > 0) {
339
+ needs.push({ description: 'Form interactions for user input', priority: 'nice-to-have', addressed: true });
340
+ }
341
+ // Determine suitability
342
+ const addressedMustHaves = needs.filter((n) => n.priority === 'must-have' && n.addressed).length;
343
+ let suitability;
344
+ if (challenges.length === 0 && addressedMustHaves >= 3) {
345
+ suitability = 'excellent';
346
+ }
347
+ else if (challenges.length <= 1 && addressedMustHaves >= 2) {
348
+ suitability = 'good';
349
+ }
350
+ else if (challenges.length <= 2 && addressedMustHaves >= 2) {
351
+ suitability = 'adequate';
352
+ }
353
+ else {
354
+ suitability = 'poor';
355
+ }
356
+ let alignmentScore = 40;
357
+ alignmentScore += addressedMustHaves * 10;
358
+ alignmentScore += needs.filter((n) => n.priority === 'should-have' && n.addressed).length * 5;
359
+ alignmentScore += needs.filter((n) => n.priority === 'nice-to-have' && n.addressed).length * 2;
360
+ alignmentScore -= challenges.length * 8;
361
+ alignmentScore = Math.max(0, Math.min(100, alignmentScore));
362
+ return { needs, suitability, challenges, alignmentScore };
363
+ }
364
+ analyzeBusinessNeeds(context, problemAnalysis) {
365
+ const forms = context.domMetrics?.forms || 0;
366
+ const interactiveElements = context.domMetrics?.interactiveElements || 0;
367
+ const performance = context.performance;
368
+ const hasErrors = context.errorIndicators?.hasErrorMessages || false;
369
+ let primaryGoal;
370
+ let kpisAffected = [];
371
+ if (forms > 2) {
372
+ primaryGoal = 'business-ease';
373
+ kpisAffected = ['Form completion rate', 'Lead generation', 'User sign-ups'];
374
+ }
375
+ else if (interactiveElements > 30) {
376
+ primaryGoal = 'user-experience';
377
+ kpisAffected = ['Time on site', 'Click-through rate', 'User engagement'];
378
+ }
379
+ else {
380
+ primaryGoal = 'balanced';
381
+ kpisAffected = ['Content consumption', 'Bounce rate', 'Page views'];
382
+ }
383
+ // Domain-specific KPIs
384
+ const titleLower = (context.title || '').toLowerCase();
385
+ if (titleLower.includes('health') || titleLower.includes('care')) {
386
+ kpisAffected.push('Patient satisfaction', 'Appointment completion rate', 'Information accessibility');
387
+ }
388
+ const crossTeamImpact = [];
389
+ if (forms > 0) {
390
+ crossTeamImpact.push({ team: 'Marketing', impactType: 'positive', description: 'Form conversion optimization needed' });
391
+ crossTeamImpact.push({ team: 'Development', impactType: 'neutral', description: 'Form validation and submission handling' });
392
+ }
393
+ if (context.accessibility && (context.accessibility.altTextsCoverage || 0) < 100) {
394
+ crossTeamImpact.push({ team: 'Content', impactType: 'negative', description: 'Image alt text creation required' });
395
+ }
396
+ if (performance && (performance.loadTime || 0) > 2000) {
397
+ crossTeamImpact.push({ team: 'Engineering', impactType: 'negative', description: 'Performance optimization needed' });
398
+ }
399
+ if (problemAnalysis.complexity === 'complex') {
400
+ crossTeamImpact.push({ team: 'QA', impactType: 'neutral', description: 'Comprehensive testing strategy required' });
401
+ }
402
+ let compromisesUX = false;
403
+ if (hasErrors)
404
+ compromisesUX = true;
405
+ if (context.accessibility && (context.accessibility.altTextsCoverage || 0) < 50)
406
+ compromisesUX = true;
407
+ if (performance && (performance.loadTime || 0) > 4000)
408
+ compromisesUX = true;
409
+ let alignmentScore = 50;
410
+ if (kpisAffected.length > 0)
411
+ alignmentScore += 15;
412
+ if (crossTeamImpact.length > 0)
413
+ alignmentScore += 10;
414
+ if (!compromisesUX)
415
+ alignmentScore += 20;
416
+ alignmentScore = Math.min(100, alignmentScore);
417
+ return {
418
+ primaryGoal,
419
+ kpisAffected,
420
+ crossTeamImpact,
421
+ compromisesUX,
422
+ impactsKPIs: kpisAffected.length > 0,
423
+ alignmentScore,
424
+ };
425
+ }
426
+ analyzeCreativity(context, problemAnalysis) {
427
+ const innovativeApproaches = [];
428
+ if (problemAnalysis.complexity === 'complex' || problemAnalysis.complexity === 'moderate') {
429
+ innovativeApproaches.push({
430
+ description: 'Question fundamental assumptions about user mental models and expected workflows',
431
+ inspirationSource: 'philosophy',
432
+ applicability: 'high',
433
+ novelty: 'moderately-novel',
434
+ });
435
+ if (context.errorIndicators?.hasErrorMessages) {
436
+ innovativeApproaches.push({
437
+ description: 'Apply diagnostic testing - systematically isolate error sources through controlled scenarios',
438
+ inspirationSource: 'medicine',
439
+ applicability: 'high',
440
+ novelty: 'moderately-novel',
441
+ });
442
+ }
443
+ }
444
+ if (context.domMetrics?.forms && context.domMetrics.forms > 0) {
445
+ innovativeApproaches.push({
446
+ description: 'Test checkout/form flows like fashion retail - focus on friction points, abandonment triggers',
447
+ inspirationSource: 'e-commerce',
448
+ applicability: 'high',
449
+ novelty: 'incremental',
450
+ });
451
+ }
452
+ innovativeApproaches.push({
453
+ description: 'Analyze through diverse demographic lenses (age, gender, culture, ability) for inclusive testing',
454
+ inspirationSource: 'social science',
455
+ applicability: 'high',
456
+ novelty: 'moderately-novel',
457
+ });
458
+ if (context.domMetrics?.interactiveElements && context.domMetrics.interactiveElements > 20) {
459
+ innovativeApproaches.push({
460
+ description: 'Test for "game-breaking" exploits - unexpected interaction sequences, boundary conditions',
461
+ inspirationSource: 'gaming',
462
+ applicability: 'medium',
463
+ novelty: 'highly-novel',
464
+ });
465
+ }
466
+ const domainsExplored = [...new Set(innovativeApproaches.map((a) => a.inspirationSource))];
467
+ const perspectives = [
468
+ 'Unexperienced user perspective (fresh eyes)',
469
+ 'Power user perspective (efficiency focus)',
470
+ 'Accessibility perspective (assistive tech users)',
471
+ 'International perspective (cultural differences)',
472
+ ];
473
+ let creativityScore = 50;
474
+ creativityScore += innovativeApproaches.length * 8;
475
+ creativityScore += domainsExplored.length * 5;
476
+ creativityScore = Math.min(100, creativityScore);
477
+ return {
478
+ innovativeApproaches,
479
+ domainsExplored,
480
+ perspectives,
481
+ creativityScore,
482
+ notes: [
483
+ 'Creativity draws from diverse domains to uncover unconventional testing approaches',
484
+ 'Higher complexity problems benefit from cross-disciplinary inspiration',
485
+ `Applied ${innovativeApproaches.length} creative approaches from ${domainsExplored.length} domains`,
486
+ ],
487
+ };
488
+ }
489
+ analyzeDesign(context) {
490
+ const clearElements = [];
491
+ const unclearElements = [];
492
+ if (context.domMetrics?.semanticStructure?.hasNav) {
493
+ clearElements.push('Navigation structure clearly defined with semantic <nav> element');
494
+ }
495
+ if (context.domMetrics?.semanticStructure?.hasMain) {
496
+ clearElements.push('Main content area clearly identified');
497
+ }
498
+ if (context.domMetrics?.semanticStructure?.hasHeader && context.domMetrics?.semanticStructure?.hasFooter) {
499
+ clearElements.push('Header and footer provide clear page structure');
500
+ }
501
+ const ariaLabels = context.accessibility?.ariaLabelsCount || 0;
502
+ const interactiveElements = context.domMetrics?.interactiveElements || 0;
503
+ if (interactiveElements > 0 && ariaLabels < interactiveElements * 0.5) {
504
+ unclearElements.push('Many interactive elements lack ARIA labels for clarity');
505
+ }
506
+ let exactnessScore = 50 + clearElements.length * 15 - unclearElements.length * 10;
507
+ exactnessScore = Math.max(0, Math.min(100, exactnessScore));
508
+ const clarity = exactnessScore >= 80 ? 'excellent' : exactnessScore >= 60 ? 'good' : exactnessScore >= 40 ? 'adequate' : 'poor';
509
+ const intuitivePatterns = [];
510
+ const culturalIssues = [];
511
+ let followsConventions = true;
512
+ if (context.domMetrics?.semanticStructure?.hasNav) {
513
+ intuitivePatterns.push('Standard navigation placement');
514
+ }
515
+ if (context.domMetrics?.semanticStructure?.hasHeader) {
516
+ intuitivePatterns.push('Header follows common layout conventions');
517
+ }
518
+ if (!context.domMetrics?.semanticStructure?.hasNav && interactiveElements > 10) {
519
+ followsConventions = false;
520
+ culturalIssues.push('Non-standard navigation pattern may confuse users from different regions');
521
+ }
522
+ let intuitiveScore = 50 + intuitivePatterns.length * 15;
523
+ if (!followsConventions)
524
+ intuitiveScore -= 20;
525
+ intuitiveScore = Math.max(0, Math.min(100, intuitiveScore));
526
+ const overallDesignScore = Math.round((exactnessScore + intuitiveScore) / 2);
527
+ return {
528
+ exactness: {
529
+ clarity,
530
+ clearElements,
531
+ unclearElements,
532
+ score: exactnessScore,
533
+ },
534
+ intuitive: {
535
+ followsConventions,
536
+ intuitivePatterns,
537
+ culturalIssues,
538
+ score: intuitiveScore,
539
+ },
540
+ counterIntuitive: {
541
+ deviations: [],
542
+ innovativeJustification: false,
543
+ freshEyesPerspective: true,
544
+ issuesCount: 0,
545
+ },
546
+ overallDesignScore,
547
+ };
548
+ }
549
+ generateRecommendations(problemAnalysis, userNeeds, businessNeeds, oracleProblems, impactAnalysis, heuristics) {
550
+ const recommendations = [];
551
+ let priority = 1;
552
+ // High-severity issues from heuristics
553
+ for (const heuristic of heuristics) {
554
+ for (const issue of heuristic.issues) {
555
+ if (issue.severity === 'critical' || issue.severity === 'high') {
556
+ recommendations.push({
557
+ principle: heuristic.name,
558
+ recommendation: issue.description,
559
+ severity: issue.severity,
560
+ impact: issue.severity === 'critical' ? 90 : 75,
561
+ effort: 'medium',
562
+ priority: priority++,
563
+ category: 'qx',
564
+ });
565
+ }
566
+ }
567
+ for (const rec of heuristic.recommendations) {
568
+ recommendations.push({
569
+ principle: heuristic.name,
570
+ recommendation: rec,
571
+ severity: 'medium',
572
+ impact: 60,
573
+ effort: 'medium',
574
+ priority: priority++,
575
+ category: 'qx',
576
+ });
577
+ }
578
+ }
579
+ // Oracle problem resolutions
580
+ for (const oracle of oracleProblems) {
581
+ recommendations.push({
582
+ principle: `Oracle: ${oracle.type}`,
583
+ recommendation: oracle.description,
584
+ severity: oracle.severity,
585
+ impact: oracle.severity === 'critical' ? 95 : oracle.severity === 'high' ? 80 : 60,
586
+ effort: 'high',
587
+ priority: priority++,
588
+ category: 'process',
589
+ evidence: oracle.resolutionApproach,
590
+ });
591
+ }
592
+ // User needs challenges
593
+ for (const challenge of userNeeds.challenges) {
594
+ recommendations.push({
595
+ principle: 'User Needs',
596
+ recommendation: challenge,
597
+ severity: 'medium',
598
+ impact: 65,
599
+ effort: 'medium',
600
+ priority: priority++,
601
+ category: 'ux',
602
+ });
603
+ }
604
+ // Sort by severity and impact
605
+ return recommendations
606
+ .sort((a, b) => {
607
+ const severityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
608
+ const severityDiff = severityOrder[a.severity] - severityOrder[b.severity];
609
+ if (severityDiff !== 0)
610
+ return severityDiff;
611
+ return b.impact - a.impact;
612
+ })
613
+ .slice(0, 15);
614
+ }
615
+ calculateOverallScore(problemAnalysis, userNeeds, businessNeeds, creativityAnalysis, designAnalysis, impactAnalysis, heuristics) {
616
+ const heuristicsAvg = heuristics.reduce((sum, h) => sum + h.score, 0) / heuristics.length || 0;
617
+ const score = problemAnalysis.clarityScore * 0.1 +
618
+ userNeeds.alignmentScore * 0.2 +
619
+ businessNeeds.alignmentScore * 0.15 +
620
+ creativityAnalysis.creativityScore * 0.1 +
621
+ designAnalysis.overallDesignScore * 0.15 +
622
+ (100 - impactAnalysis.overallImpactScore) * 0.1 +
623
+ heuristicsAvg * 0.2;
624
+ return Math.round(Math.max(0, Math.min(100, score)));
625
+ }
626
+ scoreToGrade(score) {
627
+ if (score >= 90)
628
+ return 'A';
629
+ if (score >= 80)
630
+ return 'B';
631
+ if (score >= 70)
632
+ return 'C';
633
+ if (score >= 60)
634
+ return 'D';
635
+ return 'F';
636
+ }
637
+ createMinimalContext(target) {
638
+ return {
639
+ url: target,
640
+ title: target,
641
+ };
642
+ }
643
+ createMinimalCreativityAnalysis() {
644
+ return {
645
+ innovativeApproaches: [],
646
+ domainsExplored: [],
647
+ perspectives: [],
648
+ creativityScore: 50,
649
+ notes: ['Creativity analysis skipped'],
650
+ };
651
+ }
652
+ createMinimalDesignAnalysis() {
653
+ return {
654
+ exactness: { clarity: 'adequate', clearElements: [], unclearElements: [], score: 50 },
655
+ intuitive: { followsConventions: true, intuitivePatterns: [], culturalIssues: [], score: 50 },
656
+ counterIntuitive: { deviations: [], innovativeJustification: false, freshEyesPerspective: false, issuesCount: 0 },
657
+ overallDesignScore: 50,
658
+ };
659
+ }
660
+ // Helper methods from base class
661
+ emitStream(context, data) {
662
+ if (context.streaming && context.onStream) {
663
+ context.onStream(data);
664
+ }
665
+ }
666
+ isAborted(context) {
667
+ return context.abortSignal?.aborted || false;
668
+ }
669
+ createMetadata(startTime, requestId) {
670
+ return {
671
+ executionTime: Date.now() - startTime,
672
+ timestamp: new Date().toISOString(),
673
+ requestId,
674
+ };
675
+ }
676
+ }
677
+ // Export singleton instance
678
+ export const qxAnalyzeTool = new QXAnalyzeTool();
679
+ //# sourceMappingURL=analyze.js.map