agentic-qe 3.4.0 → 3.4.2

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 (498) hide show
  1. package/.claude/skills/.validation/README.md +111 -0
  2. package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +530 -0
  3. package/.claude/skills/.validation/examples/performance-testing-output.example.json +252 -0
  4. package/.claude/skills/.validation/examples/security-testing-output.example.json +413 -0
  5. package/.claude/skills/.validation/examples/testability-scoring-output.example.json +350 -0
  6. package/.claude/skills/.validation/schemas/skill-eval.schema.json +452 -0
  7. package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +341 -0
  8. package/.claude/skills/.validation/schemas/skill-output-meta.schema.json +199 -0
  9. package/.claude/skills/.validation/schemas/skill-output.template.json +610 -0
  10. package/.claude/skills/.validation/skill-validation-mcp-integration.md +250 -0
  11. package/.claude/skills/.validation/templates/eval.template.yaml +366 -0
  12. package/.claude/skills/.validation/templates/schemas/output.json +145 -0
  13. package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +725 -0
  14. package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +225 -0
  15. package/.claude/skills/.validation/templates/validate.template.sh +1060 -0
  16. package/.claude/skills/.validation/templates/validator-lib.sh +1031 -0
  17. package/.claude/skills/.validation/test-data/invalid-output.json +5 -0
  18. package/.claude/skills/.validation/test-data/minimal-output.json +9 -0
  19. package/.claude/skills/.validation/test-data/sample-output.json +73 -0
  20. package/.claude/skills/TRUST-TIERS.md +158 -0
  21. package/.claude/skills/a11y-ally/SKILL.md +1664 -1658
  22. package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +376 -0
  23. package/.claude/skills/a11y-ally/schemas/output.json +549 -0
  24. package/.claude/skills/a11y-ally/scripts/validate.sh +690 -0
  25. package/.claude/skills/accessibility-testing/SKILL.md +8 -1
  26. package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -0
  27. package/.claude/skills/accessibility-testing/schemas/output.json +776 -0
  28. package/.claude/skills/accessibility-testing/scripts/validate.sh +943 -0
  29. package/.claude/skills/accessibility-testing/test-data/sample-output.json +191 -0
  30. package/.claude/skills/agentic-quality-engineering/SKILL.md +4 -0
  31. package/.claude/skills/agentic-quality-engineering/schemas/output.json +577 -0
  32. package/.claude/skills/api-testing-patterns/SKILL.md +5 -0
  33. package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -0
  34. package/.claude/skills/api-testing-patterns/schemas/output.json +845 -0
  35. package/.claude/skills/api-testing-patterns/scripts/validate.sh +931 -0
  36. package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +513 -0
  37. package/.claude/skills/aqe-v2-v3-migration/skill.md +4 -0
  38. package/.claude/skills/brutal-honesty-review/SKILL.md +5 -0
  39. package/.claude/skills/brutal-honesty-review/schemas/output.json +291 -0
  40. package/.claude/skills/brutal-honesty-review/scripts/validate.sh +130 -0
  41. package/.claude/skills/bug-reporting-excellence/SKILL.md +5 -0
  42. package/.claude/skills/bug-reporting-excellence/schemas/output.json +288 -0
  43. package/.claude/skills/bug-reporting-excellence/scripts/validate.sh +108 -0
  44. package/.claude/skills/chaos-engineering-resilience/SKILL.md +5 -0
  45. package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -0
  46. package/.claude/skills/chaos-engineering-resilience/schemas/output.json +1205 -0
  47. package/.claude/skills/chaos-engineering-resilience/scripts/validate.sh +1107 -0
  48. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -0
  49. package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -0
  50. package/.claude/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -0
  51. package/.claude/skills/cicd-pipeline-qe-orchestrator/scripts/validate.sh +310 -0
  52. package/.claude/skills/code-review-quality/SKILL.md +5 -0
  53. package/.claude/skills/code-review-quality/schemas/output.json +264 -0
  54. package/.claude/skills/code-review-quality/scripts/validate.sh +113 -0
  55. package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -0
  56. package/.claude/skills/compatibility-testing/schemas/output.json +551 -0
  57. package/.claude/skills/compatibility-testing/scripts/validate.sh +605 -0
  58. package/.claude/skills/compliance-testing/SKILL.md +7 -0
  59. package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1107 -0
  60. package/.claude/skills/compliance-testing/schemas/output.json +845 -0
  61. package/.claude/skills/compliance-testing/scripts/validate.sh +888 -0
  62. package/.claude/skills/consultancy-practices/SKILL.md +4 -0
  63. package/.claude/skills/consultancy-practices/schemas/output.json +282 -0
  64. package/.claude/skills/context-driven-testing/SKILL.md +3 -0
  65. package/.claude/skills/contract-testing/SKILL.md +5 -0
  66. package/.claude/skills/contract-testing/evals/contract-testing.yaml +748 -0
  67. package/.claude/skills/contract-testing/schemas/output.json +638 -0
  68. package/.claude/skills/contract-testing/scripts/validate.sh +1033 -0
  69. package/.claude/skills/database-testing/SKILL.md +5 -0
  70. package/.claude/skills/database-testing/evals/database-testing.yaml +968 -0
  71. package/.claude/skills/database-testing/schemas/output.json +1446 -0
  72. package/.claude/skills/database-testing/scripts/validate.sh +1099 -0
  73. package/.claude/skills/exploratory-testing-advanced/SKILL.md +3 -0
  74. package/.claude/skills/holistic-testing-pact/SKILL.md +3 -0
  75. package/.claude/skills/localization-testing/SKILL.md +6 -0
  76. package/.claude/skills/localization-testing/evals/localization-testing.yaml +544 -0
  77. package/.claude/skills/localization-testing/schemas/output.json +325 -0
  78. package/.claude/skills/localization-testing/scripts/validate.sh +131 -0
  79. package/.claude/skills/mobile-testing/SKILL.md +6 -0
  80. package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +537 -0
  81. package/.claude/skills/mobile-testing/schemas/output.json +318 -0
  82. package/.claude/skills/mobile-testing/scripts/validate.sh +127 -0
  83. package/.claude/skills/mutation-testing/SKILL.md +8 -1
  84. package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +652 -0
  85. package/.claude/skills/mutation-testing/schemas/output.json +707 -0
  86. package/.claude/skills/mutation-testing/scripts/validate.sh +992 -0
  87. package/.claude/skills/mutation-testing/test-data/sample-output.json +295 -0
  88. package/.claude/skills/n8n-expression-testing/SKILL.md +6 -0
  89. package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -0
  90. package/.claude/skills/n8n-expression-testing/schemas/output.json +369 -0
  91. package/.claude/skills/n8n-expression-testing/scripts/validate.sh +162 -0
  92. package/.claude/skills/n8n-integration-testing-patterns/SKILL.md +6 -0
  93. package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -0
  94. package/.claude/skills/n8n-integration-testing-patterns/schemas/output.json +291 -0
  95. package/.claude/skills/n8n-integration-testing-patterns/scripts/validate.sh +104 -0
  96. package/.claude/skills/n8n-security-testing/SKILL.md +6 -0
  97. package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -0
  98. package/.claude/skills/n8n-security-testing/schemas/output.json +293 -0
  99. package/.claude/skills/n8n-security-testing/scripts/validate.sh +120 -0
  100. package/.claude/skills/n8n-trigger-testing-strategies/SKILL.md +6 -0
  101. package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -0
  102. package/.claude/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -0
  103. package/.claude/skills/n8n-trigger-testing-strategies/scripts/validate.sh +121 -0
  104. package/.claude/skills/n8n-workflow-testing-fundamentals/SKILL.md +6 -0
  105. package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -0
  106. package/.claude/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -0
  107. package/.claude/skills/n8n-workflow-testing-fundamentals/scripts/validate.sh +126 -0
  108. package/.claude/skills/performance-analysis/SKILL.md +6 -0
  109. package/.claude/skills/performance-analysis/evals/performance-analysis.yaml +144 -0
  110. package/.claude/skills/performance-analysis/schemas/output.json +588 -0
  111. package/.claude/skills/performance-analysis/scripts/validate.sh +63 -0
  112. package/.claude/skills/performance-testing/SKILL.md +5 -0
  113. package/.claude/skills/performance-testing/evals/performance-testing.yaml +772 -0
  114. package/.claude/skills/performance-testing/schemas/output.json +1184 -0
  115. package/.claude/skills/performance-testing/scripts/validate.sh +1090 -0
  116. package/.claude/skills/qcsd-ideation-swarm/SKILL.md +1759 -1753
  117. package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
  118. package/.claude/skills/qcsd-ideation-swarm/schemas/output.json +568 -0
  119. package/.claude/skills/qcsd-ideation-swarm/scripts/validate.sh +56 -0
  120. package/.claude/skills/qe-chaos-resilience/SKILL.md +6 -0
  121. package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -0
  122. package/.claude/skills/qe-chaos-resilience/schemas/output.json +314 -0
  123. package/.claude/skills/qe-chaos-resilience/scripts/validate.sh +401 -0
  124. package/.claude/skills/qe-code-intelligence/SKILL.md +6 -0
  125. package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -0
  126. package/.claude/skills/qe-code-intelligence/schemas/output.json +315 -0
  127. package/.claude/skills/qe-code-intelligence/scripts/validate.sh +408 -0
  128. package/.claude/skills/qe-contract-testing/SKILL.md +6 -0
  129. package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -0
  130. package/.claude/skills/qe-contract-testing/schemas/output.json +295 -0
  131. package/.claude/skills/qe-contract-testing/scripts/validate.sh +421 -0
  132. package/.claude/skills/qe-coverage-analysis/SKILL.md +6 -0
  133. package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -0
  134. package/.claude/skills/qe-coverage-analysis/schemas/output.json +286 -0
  135. package/.claude/skills/qe-coverage-analysis/scripts/validate.sh +453 -0
  136. package/.claude/skills/qe-defect-intelligence/SKILL.md +6 -0
  137. package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -0
  138. package/.claude/skills/qe-defect-intelligence/schemas/output.json +283 -0
  139. package/.claude/skills/qe-defect-intelligence/scripts/validate.sh +466 -0
  140. package/.claude/skills/qe-iterative-loop/SKILL.md +445 -440
  141. package/.claude/skills/qe-iterative-loop/schemas/output.json +264 -0
  142. package/.claude/skills/qe-iterative-loop/scripts/validate.sh +474 -0
  143. package/.claude/skills/qe-learning-optimization/SKILL.md +6 -0
  144. package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -0
  145. package/.claude/skills/qe-learning-optimization/schemas/output.json +288 -0
  146. package/.claude/skills/qe-learning-optimization/scripts/validate.sh +56 -0
  147. package/.claude/skills/qe-quality-assessment/SKILL.md +6 -0
  148. package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -0
  149. package/.claude/skills/qe-quality-assessment/schemas/output.json +550 -0
  150. package/.claude/skills/qe-quality-assessment/scripts/validate.sh +352 -0
  151. package/.claude/skills/qe-requirements-validation/SKILL.md +6 -0
  152. package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -0
  153. package/.claude/skills/qe-requirements-validation/schemas/output.json +587 -0
  154. package/.claude/skills/qe-requirements-validation/scripts/validate.sh +275 -0
  155. package/.claude/skills/qe-security-compliance/SKILL.md +6 -0
  156. package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -0
  157. package/.claude/skills/qe-security-compliance/schemas/output.json +498 -0
  158. package/.claude/skills/qe-security-compliance/scripts/validate.sh +305 -0
  159. package/.claude/skills/qe-test-execution/SKILL.md +6 -0
  160. package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -0
  161. package/.claude/skills/qe-test-execution/schemas/output.json +529 -0
  162. package/.claude/skills/qe-test-execution/scripts/validate.sh +323 -0
  163. package/.claude/skills/qe-test-generation/SKILL.md +6 -0
  164. package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -0
  165. package/.claude/skills/qe-test-generation/schemas/output.json +439 -0
  166. package/.claude/skills/qe-test-generation/scripts/validate.sh +56 -0
  167. package/.claude/skills/qe-visual-accessibility/SKILL.md +6 -0
  168. package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -0
  169. package/.claude/skills/qe-visual-accessibility/schemas/output.json +491 -0
  170. package/.claude/skills/qe-visual-accessibility/scripts/validate.sh +56 -0
  171. package/.claude/skills/quality-metrics/SKILL.md +6 -0
  172. package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +494 -0
  173. package/.claude/skills/quality-metrics/schemas/output.json +403 -0
  174. package/.claude/skills/quality-metrics/scripts/validate.sh +434 -0
  175. package/.claude/skills/refactoring-patterns/SKILL.md +5 -0
  176. package/.claude/skills/refactoring-patterns/schemas/output.json +475 -0
  177. package/.claude/skills/refactoring-patterns/scripts/validate.sh +241 -0
  178. package/.claude/skills/regression-testing/SKILL.md +6 -0
  179. package/.claude/skills/regression-testing/evals/regression-testing.yaml +504 -0
  180. package/.claude/skills/regression-testing/schemas/output.json +311 -0
  181. package/.claude/skills/regression-testing/scripts/validate.sh +130 -0
  182. package/.claude/skills/risk-based-testing/SKILL.md +6 -0
  183. package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -0
  184. package/.claude/skills/risk-based-testing/schemas/output.json +480 -0
  185. package/.claude/skills/risk-based-testing/scripts/validate.sh +56 -0
  186. package/.claude/skills/security-testing/SKILL.md +5 -0
  187. package/.claude/skills/security-testing/evals/security-testing.yaml +789 -0
  188. package/.claude/skills/security-testing/schemas/output.json +879 -0
  189. package/.claude/skills/security-testing/scripts/validate.sh +967 -0
  190. package/.claude/skills/security-visual-testing/SKILL.md +223 -217
  191. package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -0
  192. package/.claude/skills/security-visual-testing/schemas/output.json +486 -0
  193. package/.claude/skills/security-visual-testing/scripts/validate.sh +748 -0
  194. package/.claude/skills/sherlock-review/SKILL.md +5 -0
  195. package/.claude/skills/sherlock-review/schemas/output.json +297 -0
  196. package/.claude/skills/sherlock-review/scripts/validate.sh +115 -0
  197. package/.claude/skills/shift-left-testing/SKILL.md +6 -0
  198. package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -0
  199. package/.claude/skills/shift-left-testing/schemas/output.json +459 -0
  200. package/.claude/skills/shift-left-testing/scripts/validate.sh +56 -0
  201. package/.claude/skills/shift-right-testing/SKILL.md +6 -0
  202. package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -0
  203. package/.claude/skills/shift-right-testing/schemas/output.json +418 -0
  204. package/.claude/skills/shift-right-testing/scripts/validate.sh +56 -0
  205. package/.claude/skills/six-thinking-hats/SKILL.md +3 -0
  206. package/.claude/skills/tdd-london-chicago/SKILL.md +5 -0
  207. package/.claude/skills/tdd-london-chicago/schemas/output.json +444 -0
  208. package/.claude/skills/tdd-london-chicago/scripts/validate.sh +214 -0
  209. package/.claude/skills/technical-writing/SKILL.md +4 -0
  210. package/.claude/skills/technical-writing/schemas/output.json +268 -0
  211. package/.claude/skills/test-automation-strategy/SKILL.md +6 -0
  212. package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -0
  213. package/.claude/skills/test-automation-strategy/schemas/output.json +444 -0
  214. package/.claude/skills/test-automation-strategy/scripts/validate.sh +195 -0
  215. package/.claude/skills/test-data-management/SKILL.md +6 -0
  216. package/.claude/skills/test-data-management/evals/test-data-management.yaml +504 -0
  217. package/.claude/skills/test-data-management/schemas/output.json +284 -0
  218. package/.claude/skills/test-data-management/scripts/validate.sh +137 -0
  219. package/.claude/skills/test-design-techniques/SKILL.md +6 -0
  220. package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -0
  221. package/.claude/skills/test-design-techniques/schemas/output.json +295 -0
  222. package/.claude/skills/test-design-techniques/scripts/validate.sh +91 -0
  223. package/.claude/skills/test-environment-management/SKILL.md +4 -0
  224. package/.claude/skills/test-environment-management/schemas/output.json +310 -0
  225. package/.claude/skills/test-reporting-analytics/SKILL.md +6 -0
  226. package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -0
  227. package/.claude/skills/test-reporting-analytics/schemas/output.json +329 -0
  228. package/.claude/skills/test-reporting-analytics/scripts/validate.sh +77 -0
  229. package/.claude/skills/testability-scoring/SKILL.md +5 -0
  230. package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +814 -0
  231. package/.claude/skills/testability-scoring/schemas/output.json +606 -0
  232. package/.claude/skills/testability-scoring/scripts/validate.sh +891 -0
  233. package/.claude/skills/trust-tier-manifest.json +2333 -0
  234. package/.claude/skills/verification-quality/SKILL.md +6 -0
  235. package/.claude/skills/verification-quality/evals/verification-quality.yaml +150 -0
  236. package/.claude/skills/verification-quality/schemas/output.json +432 -0
  237. package/.claude/skills/verification-quality/scripts/validate.sh +77 -0
  238. package/.claude/skills/visual-testing-advanced/SKILL.md +6 -0
  239. package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -0
  240. package/.claude/skills/visual-testing-advanced/schemas/output.json +294 -0
  241. package/.claude/skills/visual-testing-advanced/scripts/validate.sh +77 -0
  242. package/.claude/skills/xp-practices/SKILL.md +3 -0
  243. package/CHANGELOG.md +23 -0
  244. package/README.md +39 -2
  245. package/package.json +4 -1
  246. package/scripts/run-skill-eval.ts +1097 -0
  247. package/scripts/test-schema-validation.js +301 -0
  248. package/scripts/update-skill-manifest.ts +751 -0
  249. package/scripts/validate-skill-frontmatter.js +141 -0
  250. package/v3/CHANGELOG.md +21 -0
  251. package/v3/README.md +43 -3
  252. package/v3/assets/agents/v3/qe-test-idea-rewriter.md +375 -375
  253. package/v3/assets/skills/.validation/README.md +111 -0
  254. package/v3/assets/skills/.validation/examples/chaos-engineering-output.example.json +530 -0
  255. package/v3/assets/skills/.validation/examples/performance-testing-output.example.json +252 -0
  256. package/v3/assets/skills/.validation/examples/security-testing-output.example.json +413 -0
  257. package/v3/assets/skills/.validation/examples/testability-scoring-output.example.json +350 -0
  258. package/v3/assets/skills/.validation/schemas/skill-eval.schema.json +452 -0
  259. package/v3/assets/skills/.validation/schemas/skill-frontmatter.schema.json +341 -0
  260. package/v3/assets/skills/.validation/schemas/skill-output-meta.schema.json +199 -0
  261. package/v3/assets/skills/.validation/schemas/skill-output.template.json +610 -0
  262. package/v3/assets/skills/.validation/skill-validation-mcp-integration.md +250 -0
  263. package/v3/assets/skills/.validation/templates/eval.template.yaml +366 -0
  264. package/v3/assets/skills/.validation/templates/schemas/output.json +145 -0
  265. package/v3/assets/skills/.validation/templates/security-testing-eval.template.yaml +725 -0
  266. package/v3/assets/skills/.validation/templates/skill-frontmatter.example.yaml +225 -0
  267. package/v3/assets/skills/.validation/templates/validate.template.sh +1060 -0
  268. package/v3/assets/skills/.validation/templates/validator-lib.sh +1031 -0
  269. package/v3/assets/skills/.validation/test-data/invalid-output.json +5 -0
  270. package/v3/assets/skills/.validation/test-data/minimal-output.json +9 -0
  271. package/v3/assets/skills/.validation/test-data/sample-output.json +73 -0
  272. package/v3/assets/skills/accessibility-testing/SKILL.md +8 -1
  273. package/v3/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -0
  274. package/v3/assets/skills/accessibility-testing/schemas/output.json +776 -0
  275. package/v3/assets/skills/accessibility-testing/scripts/validate.sh +943 -0
  276. package/v3/assets/skills/accessibility-testing/test-data/sample-output.json +191 -0
  277. package/v3/assets/skills/agentic-quality-engineering/SKILL.md +4 -0
  278. package/v3/assets/skills/agentic-quality-engineering/schemas/output.json +577 -0
  279. package/v3/assets/skills/api-testing-patterns/SKILL.md +5 -0
  280. package/v3/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -0
  281. package/v3/assets/skills/api-testing-patterns/schemas/output.json +845 -0
  282. package/v3/assets/skills/api-testing-patterns/scripts/validate.sh +931 -0
  283. package/v3/assets/skills/aqe-v2-v3-migration/schemas/output.json +513 -0
  284. package/v3/assets/skills/aqe-v2-v3-migration/skill.md +20 -16
  285. package/v3/assets/skills/bug-reporting-excellence/SKILL.md +5 -0
  286. package/v3/assets/skills/bug-reporting-excellence/schemas/output.json +288 -0
  287. package/v3/assets/skills/bug-reporting-excellence/scripts/validate.sh +108 -0
  288. package/v3/assets/skills/chaos-engineering-resilience/SKILL.md +5 -0
  289. package/v3/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -0
  290. package/v3/assets/skills/chaos-engineering-resilience/schemas/output.json +1205 -0
  291. package/v3/assets/skills/chaos-engineering-resilience/scripts/validate.sh +1107 -0
  292. package/v3/assets/skills/code-review-quality/SKILL.md +5 -0
  293. package/v3/assets/skills/code-review-quality/schemas/output.json +264 -0
  294. package/v3/assets/skills/code-review-quality/scripts/validate.sh +113 -0
  295. package/v3/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -0
  296. package/v3/assets/skills/compatibility-testing/schemas/output.json +551 -0
  297. package/v3/assets/skills/compatibility-testing/scripts/validate.sh +605 -0
  298. package/v3/assets/skills/compliance-testing/SKILL.md +7 -0
  299. package/v3/assets/skills/compliance-testing/evals/compliance-testing.yaml +1107 -0
  300. package/v3/assets/skills/compliance-testing/schemas/output.json +845 -0
  301. package/v3/assets/skills/compliance-testing/scripts/validate.sh +888 -0
  302. package/v3/assets/skills/consultancy-practices/SKILL.md +4 -0
  303. package/v3/assets/skills/consultancy-practices/schemas/output.json +282 -0
  304. package/v3/assets/skills/context-driven-testing/SKILL.md +3 -0
  305. package/v3/assets/skills/contract-testing/SKILL.md +5 -0
  306. package/v3/assets/skills/contract-testing/evals/contract-testing.yaml +748 -0
  307. package/v3/assets/skills/contract-testing/schemas/output.json +638 -0
  308. package/v3/assets/skills/contract-testing/scripts/validate.sh +1033 -0
  309. package/v3/assets/skills/database-testing/SKILL.md +5 -0
  310. package/v3/assets/skills/database-testing/evals/database-testing.yaml +968 -0
  311. package/v3/assets/skills/database-testing/schemas/output.json +1446 -0
  312. package/v3/assets/skills/database-testing/scripts/validate.sh +1099 -0
  313. package/v3/assets/skills/exploratory-testing-advanced/SKILL.md +3 -0
  314. package/v3/assets/skills/holistic-testing-pact/SKILL.md +3 -0
  315. package/v3/assets/skills/localization-testing/SKILL.md +6 -0
  316. package/v3/assets/skills/localization-testing/evals/localization-testing.yaml +544 -0
  317. package/v3/assets/skills/localization-testing/schemas/output.json +325 -0
  318. package/v3/assets/skills/localization-testing/scripts/validate.sh +131 -0
  319. package/v3/assets/skills/mobile-testing/SKILL.md +6 -0
  320. package/v3/assets/skills/mobile-testing/evals/mobile-testing.yaml +537 -0
  321. package/v3/assets/skills/mobile-testing/schemas/output.json +318 -0
  322. package/v3/assets/skills/mobile-testing/scripts/validate.sh +127 -0
  323. package/v3/assets/skills/mutation-testing/SKILL.md +8 -1
  324. package/v3/assets/skills/mutation-testing/evals/mutation-testing.yaml +652 -0
  325. package/v3/assets/skills/mutation-testing/schemas/output.json +707 -0
  326. package/v3/assets/skills/mutation-testing/scripts/validate.sh +992 -0
  327. package/v3/assets/skills/mutation-testing/test-data/sample-output.json +295 -0
  328. package/v3/assets/skills/n8n-expression-testing/scripts/validate.sh +162 -0
  329. package/v3/assets/skills/n8n-integration-testing-patterns/scripts/validate.sh +104 -0
  330. package/v3/assets/skills/n8n-security-testing/scripts/validate.sh +120 -0
  331. package/v3/assets/skills/n8n-trigger-testing-strategies/scripts/validate.sh +121 -0
  332. package/v3/assets/skills/n8n-workflow-testing-fundamentals/scripts/validate.sh +126 -0
  333. package/v3/assets/skills/performance-testing/SKILL.md +5 -0
  334. package/v3/assets/skills/performance-testing/evals/performance-testing.yaml +772 -0
  335. package/v3/assets/skills/performance-testing/schemas/output.json +1184 -0
  336. package/v3/assets/skills/performance-testing/scripts/validate.sh +1090 -0
  337. package/v3/assets/skills/qe-chaos-resilience/SKILL.md +6 -0
  338. package/v3/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -0
  339. package/v3/assets/skills/qe-chaos-resilience/schemas/output.json +314 -0
  340. package/v3/assets/skills/qe-chaos-resilience/scripts/validate.sh +401 -0
  341. package/v3/assets/skills/qe-code-intelligence/SKILL.md +6 -0
  342. package/v3/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -0
  343. package/v3/assets/skills/qe-code-intelligence/schemas/output.json +315 -0
  344. package/v3/assets/skills/qe-code-intelligence/scripts/validate.sh +408 -0
  345. package/v3/assets/skills/qe-contract-testing/SKILL.md +6 -0
  346. package/v3/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -0
  347. package/v3/assets/skills/qe-contract-testing/schemas/output.json +295 -0
  348. package/v3/assets/skills/qe-contract-testing/scripts/validate.sh +421 -0
  349. package/v3/assets/skills/qe-coverage-analysis/SKILL.md +6 -0
  350. package/v3/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -0
  351. package/v3/assets/skills/qe-coverage-analysis/schemas/output.json +286 -0
  352. package/v3/assets/skills/qe-coverage-analysis/scripts/validate.sh +453 -0
  353. package/v3/assets/skills/qe-defect-intelligence/SKILL.md +6 -0
  354. package/v3/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -0
  355. package/v3/assets/skills/qe-defect-intelligence/schemas/output.json +283 -0
  356. package/v3/assets/skills/qe-defect-intelligence/scripts/validate.sh +466 -0
  357. package/v3/assets/skills/qe-iterative-loop/SKILL.md +445 -443
  358. package/v3/assets/skills/qe-iterative-loop/schemas/output.json +264 -0
  359. package/v3/assets/skills/qe-iterative-loop/scripts/validate.sh +474 -0
  360. package/v3/assets/skills/qe-learning-optimization/SKILL.md +6 -0
  361. package/v3/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -0
  362. package/v3/assets/skills/qe-learning-optimization/schemas/output.json +288 -0
  363. package/v3/assets/skills/qe-learning-optimization/scripts/validate.sh +56 -0
  364. package/v3/assets/skills/qe-quality-assessment/SKILL.md +6 -0
  365. package/v3/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -0
  366. package/v3/assets/skills/qe-quality-assessment/schemas/output.json +550 -0
  367. package/v3/assets/skills/qe-quality-assessment/scripts/validate.sh +352 -0
  368. package/v3/assets/skills/qe-requirements-validation/SKILL.md +6 -0
  369. package/v3/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -0
  370. package/v3/assets/skills/qe-requirements-validation/schemas/output.json +587 -0
  371. package/v3/assets/skills/qe-requirements-validation/scripts/validate.sh +275 -0
  372. package/v3/assets/skills/qe-security-compliance/SKILL.md +6 -0
  373. package/v3/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -0
  374. package/v3/assets/skills/qe-security-compliance/schemas/output.json +498 -0
  375. package/v3/assets/skills/qe-security-compliance/scripts/validate.sh +305 -0
  376. package/v3/assets/skills/qe-test-execution/SKILL.md +6 -0
  377. package/v3/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -0
  378. package/v3/assets/skills/qe-test-execution/schemas/output.json +529 -0
  379. package/v3/assets/skills/qe-test-execution/scripts/validate.sh +323 -0
  380. package/v3/assets/skills/qe-test-generation/SKILL.md +6 -0
  381. package/v3/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -0
  382. package/v3/assets/skills/qe-test-generation/schemas/output.json +439 -0
  383. package/v3/assets/skills/qe-test-generation/scripts/validate.sh +56 -0
  384. package/v3/assets/skills/qe-visual-accessibility/SKILL.md +6 -0
  385. package/v3/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -0
  386. package/v3/assets/skills/qe-visual-accessibility/schemas/output.json +491 -0
  387. package/v3/assets/skills/qe-visual-accessibility/scripts/validate.sh +56 -0
  388. package/v3/assets/skills/quality-metrics/SKILL.md +6 -0
  389. package/v3/assets/skills/quality-metrics/evals/quality-metrics.yaml +494 -0
  390. package/v3/assets/skills/quality-metrics/schemas/output.json +403 -0
  391. package/v3/assets/skills/quality-metrics/scripts/validate.sh +434 -0
  392. package/v3/assets/skills/refactoring-patterns/SKILL.md +5 -0
  393. package/v3/assets/skills/refactoring-patterns/schemas/output.json +475 -0
  394. package/v3/assets/skills/refactoring-patterns/scripts/validate.sh +241 -0
  395. package/v3/assets/skills/regression-testing/SKILL.md +6 -0
  396. package/v3/assets/skills/regression-testing/evals/regression-testing.yaml +504 -0
  397. package/v3/assets/skills/regression-testing/schemas/output.json +311 -0
  398. package/v3/assets/skills/regression-testing/scripts/validate.sh +130 -0
  399. package/v3/assets/skills/risk-based-testing/SKILL.md +6 -0
  400. package/v3/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -0
  401. package/v3/assets/skills/risk-based-testing/schemas/output.json +480 -0
  402. package/v3/assets/skills/risk-based-testing/scripts/validate.sh +56 -0
  403. package/v3/assets/skills/security-testing/SKILL.md +5 -0
  404. package/v3/assets/skills/security-testing/evals/security-testing.yaml +789 -0
  405. package/v3/assets/skills/security-testing/schemas/output.json +879 -0
  406. package/v3/assets/skills/security-testing/scripts/validate.sh +967 -0
  407. package/v3/assets/skills/shift-left-testing/SKILL.md +6 -0
  408. package/v3/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -0
  409. package/v3/assets/skills/shift-left-testing/schemas/output.json +459 -0
  410. package/v3/assets/skills/shift-left-testing/scripts/validate.sh +56 -0
  411. package/v3/assets/skills/shift-right-testing/SKILL.md +6 -0
  412. package/v3/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -0
  413. package/v3/assets/skills/shift-right-testing/schemas/output.json +418 -0
  414. package/v3/assets/skills/shift-right-testing/scripts/validate.sh +56 -0
  415. package/v3/assets/skills/six-thinking-hats/SKILL.md +3 -0
  416. package/v3/assets/skills/tdd-london-chicago/SKILL.md +5 -0
  417. package/v3/assets/skills/tdd-london-chicago/schemas/output.json +444 -0
  418. package/v3/assets/skills/tdd-london-chicago/scripts/validate.sh +214 -0
  419. package/v3/assets/skills/technical-writing/SKILL.md +4 -0
  420. package/v3/assets/skills/technical-writing/schemas/output.json +268 -0
  421. package/v3/assets/skills/test-automation-strategy/SKILL.md +6 -0
  422. package/v3/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -0
  423. package/v3/assets/skills/test-automation-strategy/schemas/output.json +444 -0
  424. package/v3/assets/skills/test-automation-strategy/scripts/validate.sh +195 -0
  425. package/v3/assets/skills/test-data-management/SKILL.md +6 -0
  426. package/v3/assets/skills/test-data-management/evals/test-data-management.yaml +504 -0
  427. package/v3/assets/skills/test-data-management/schemas/output.json +284 -0
  428. package/v3/assets/skills/test-data-management/scripts/validate.sh +137 -0
  429. package/v3/assets/skills/test-design-techniques/SKILL.md +6 -0
  430. package/v3/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -0
  431. package/v3/assets/skills/test-design-techniques/schemas/output.json +295 -0
  432. package/v3/assets/skills/test-design-techniques/scripts/validate.sh +91 -0
  433. package/v3/assets/skills/test-environment-management/SKILL.md +4 -0
  434. package/v3/assets/skills/test-environment-management/schemas/output.json +310 -0
  435. package/v3/assets/skills/test-reporting-analytics/SKILL.md +6 -0
  436. package/v3/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -0
  437. package/v3/assets/skills/test-reporting-analytics/schemas/output.json +329 -0
  438. package/v3/assets/skills/test-reporting-analytics/scripts/validate.sh +77 -0
  439. package/v3/assets/skills/verification-quality/SKILL.md +6 -0
  440. package/v3/assets/skills/verification-quality/evals/verification-quality.yaml +150 -0
  441. package/v3/assets/skills/verification-quality/schemas/output.json +432 -0
  442. package/v3/assets/skills/verification-quality/scripts/validate.sh +77 -0
  443. package/v3/assets/skills/visual-testing-advanced/SKILL.md +6 -0
  444. package/v3/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -0
  445. package/v3/assets/skills/visual-testing-advanced/schemas/output.json +294 -0
  446. package/v3/assets/skills/visual-testing-advanced/scripts/validate.sh +77 -0
  447. package/v3/assets/skills/xp-practices/SKILL.md +3 -0
  448. package/v3/assets/templates/validation-report.md.hbs +139 -0
  449. package/v3/assets/templates/validation-summary.json +56 -0
  450. package/v3/dist/cli/bundle.js +11853 -5316
  451. package/v3/dist/cli/commands/eval.d.ts +18 -0
  452. package/v3/dist/cli/commands/eval.d.ts.map +1 -0
  453. package/v3/dist/cli/commands/eval.js +505 -0
  454. package/v3/dist/cli/commands/eval.js.map +1 -0
  455. package/v3/dist/cli/commands/validate-swarm.d.ts +16 -0
  456. package/v3/dist/cli/commands/validate-swarm.d.ts.map +1 -0
  457. package/v3/dist/cli/commands/validate-swarm.js +251 -0
  458. package/v3/dist/cli/commands/validate-swarm.js.map +1 -0
  459. package/v3/dist/cli/commands/validate.d.ts +14 -0
  460. package/v3/dist/cli/commands/validate.d.ts.map +1 -0
  461. package/v3/dist/cli/commands/validate.js +408 -0
  462. package/v3/dist/cli/commands/validate.js.map +1 -0
  463. package/v3/dist/cli/index.js +6 -0
  464. package/v3/dist/cli/index.js.map +1 -1
  465. package/v3/dist/index.d.ts +2 -0
  466. package/v3/dist/index.d.ts.map +1 -1
  467. package/v3/dist/index.js +10 -0
  468. package/v3/dist/index.js.map +1 -1
  469. package/v3/dist/init/skills-installer.d.ts +6 -0
  470. package/v3/dist/init/skills-installer.d.ts.map +1 -1
  471. package/v3/dist/init/skills-installer.js +48 -0
  472. package/v3/dist/init/skills-installer.js.map +1 -1
  473. package/v3/dist/learning/index.d.ts +2 -0
  474. package/v3/dist/learning/index.d.ts.map +1 -1
  475. package/v3/dist/learning/index.js +4 -0
  476. package/v3/dist/learning/index.js.map +1 -1
  477. package/v3/dist/learning/skill-validation-learner.d.ts +264 -0
  478. package/v3/dist/learning/skill-validation-learner.d.ts.map +1 -0
  479. package/v3/dist/learning/skill-validation-learner.js +515 -0
  480. package/v3/dist/learning/skill-validation-learner.js.map +1 -0
  481. package/v3/dist/mcp/bundle.js +10043 -3630
  482. package/v3/dist/validation/index.d.ts +19 -0
  483. package/v3/dist/validation/index.d.ts.map +1 -0
  484. package/v3/dist/validation/index.js +31 -0
  485. package/v3/dist/validation/index.js.map +1 -0
  486. package/v3/dist/validation/parallel-eval-runner.d.ts +307 -0
  487. package/v3/dist/validation/parallel-eval-runner.d.ts.map +1 -0
  488. package/v3/dist/validation/parallel-eval-runner.js +566 -0
  489. package/v3/dist/validation/parallel-eval-runner.js.map +1 -0
  490. package/v3/dist/validation/swarm-skill-validator.d.ts +282 -0
  491. package/v3/dist/validation/swarm-skill-validator.d.ts.map +1 -0
  492. package/v3/dist/validation/swarm-skill-validator.js +460 -0
  493. package/v3/dist/validation/swarm-skill-validator.js.map +1 -0
  494. package/v3/dist/validation/validation-result-aggregator.d.ts +232 -0
  495. package/v3/dist/validation/validation-result-aggregator.d.ts.map +1 -0
  496. package/v3/dist/validation/validation-result-aggregator.js +630 -0
  497. package/v3/dist/validation/validation-result-aggregator.js.map +1 -0
  498. package/v3/package.json +1 -1
@@ -0,0 +1,748 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # AQE Skill Validator: security-visual-testing v1.0.0
4
+ # Validates combined security and visual testing skill output per ADR-056
5
+ # =============================================================================
6
+ #
7
+ # This validator checks:
8
+ # 1. JSON schema compliance (security findings, visual diffs, combined scores)
9
+ # 2. Required tools availability (imagemagick, playwright, semgrep)
10
+ # 3. Security and visual findings structure
11
+ # 4. Cross-domain issue validation
12
+ # 5. Combined scoring accuracy
13
+ #
14
+ # Usage: ./validate.sh <output-file> [options]
15
+ #
16
+ # Options:
17
+ # --self-test Run validator self-test mode
18
+ # --verbose Enable verbose output
19
+ # --json Output results as JSON only
20
+ # --list-tools Show available validation tools
21
+ # --help Show this help message
22
+ #
23
+ # Exit Codes:
24
+ # 0 - Validation passed
25
+ # 1 - Validation failed
26
+ # 2 - Validation skipped (missing required tools)
27
+ #
28
+ # =============================================================================
29
+
30
+ set -euo pipefail
31
+
32
+ # Get script directory
33
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
34
+
35
+ # Navigate to skill directory and project root
36
+ SKILL_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
37
+ PROJECT_ROOT="$(cd "$SKILL_DIR/../../.." && pwd)"
38
+
39
+ # Source validator library - check multiple locations
40
+ VALIDATOR_LIB=""
41
+ for lib_path in \
42
+ "$PROJECT_ROOT/.claude/skills/.validation/templates/validator-lib.sh" \
43
+ "$SKILL_DIR/scripts/validator-lib.sh" \
44
+ "$SCRIPT_DIR/validator-lib.sh"; do
45
+ if [[ -f "$lib_path" ]]; then
46
+ VALIDATOR_LIB="$lib_path"
47
+ break
48
+ fi
49
+ done
50
+
51
+ if [[ -n "$VALIDATOR_LIB" ]]; then
52
+ # shellcheck source=/dev/null
53
+ source "$VALIDATOR_LIB"
54
+ else
55
+ echo "ERROR: Validator library not found"
56
+ echo "Searched:"
57
+ echo " - $PROJECT_ROOT/.claude/skills/.validation/templates/validator-lib.sh"
58
+ echo " - $SKILL_DIR/scripts/validator-lib.sh"
59
+ echo " - $SCRIPT_DIR/validator-lib.sh"
60
+ exit 1
61
+ fi
62
+
63
+ # =============================================================================
64
+ # SKILL-SPECIFIC CONFIGURATION
65
+ # =============================================================================
66
+
67
+ SKILL_NAME="security-visual-testing"
68
+ SKILL_VERSION="1.0.0"
69
+
70
+ # Required tools (validation FAILS with exit 2 if missing)
71
+ REQUIRED_TOOLS=("jq")
72
+
73
+ # Optional tools (validation continues with warnings if missing)
74
+ OPTIONAL_TOOLS=("imagemagick" "playwright" "semgrep" "ajv" "jsonschema" "python3")
75
+
76
+ # Path to output JSON schema
77
+ SCHEMA_PATH="$SKILL_DIR/schemas/output.json"
78
+
79
+ # =============================================================================
80
+ # CONTENT VALIDATION CONFIGURATION
81
+ # =============================================================================
82
+
83
+ # Required fields in output
84
+ REQUIRED_FIELDS=("skillName" "status" "output" "output.summary" "output.securityFindings" "output.visualDiffs")
85
+
86
+ # Fields that must have non-null, non-empty values
87
+ REQUIRED_NON_EMPTY_FIELDS=("output.summary")
88
+
89
+ # Terms that MUST appear in output
90
+ MUST_CONTAIN_TERMS=("security" "visual" "findings")
91
+
92
+ # Terms that must NOT appear in output
93
+ MUST_NOT_CONTAIN_TERMS=("TODO" "placeholder" "FIXME")
94
+
95
+ # Enum validations
96
+ ENUM_VALIDATIONS=(
97
+ ".status:success,partial,failed,skipped"
98
+ )
99
+
100
+ # =============================================================================
101
+ # Argument Parsing
102
+ # =============================================================================
103
+
104
+ OUTPUT_FILE=""
105
+ SELF_TEST=false
106
+ VERBOSE=false
107
+ JSON_ONLY=false
108
+ LIST_TOOLS=false
109
+
110
+ while [[ $# -gt 0 ]]; do
111
+ case "$1" in
112
+ --self-test) SELF_TEST=true; shift ;;
113
+ --verbose|-v) VERBOSE=true; export AQE_DEBUG=1; shift ;;
114
+ --json) JSON_ONLY=true; shift ;;
115
+ --list-tools) LIST_TOOLS=true; shift ;;
116
+ -h|--help)
117
+ cat << 'HELP_EOF'
118
+ AQE Security-Visual Testing Skill Validator v1.0.0
119
+
120
+ Usage: ./validate.sh <output-file> [options]
121
+ ./validate.sh --self-test [--verbose]
122
+ ./validate.sh --list-tools
123
+
124
+ Arguments:
125
+ <output-file> Path to skill output JSON file to validate
126
+
127
+ Options:
128
+ --self-test Run validator self-test mode
129
+ --verbose, -v Enable verbose/debug output
130
+ --json Output results as JSON only (for CI integration)
131
+ --list-tools Show available validation tools and exit
132
+ --help, -h Show this help message
133
+
134
+ Exit Codes:
135
+ 0 - Validation passed
136
+ 1 - Validation failed
137
+ 2 - Validation skipped (missing required tools)
138
+
139
+ Tool Requirements:
140
+ Required: jq (JSON parsing)
141
+ Optional: imagemagick (image diff), playwright (visual testing), semgrep (security scanning)
142
+
143
+ Examples:
144
+ ./validate.sh output.json # Validate output file
145
+ ./validate.sh output.json --json # JSON output for CI
146
+ ./validate.sh --self-test --verbose # Self-test with debug
147
+ ./validate.sh --list-tools # Show available tools
148
+
149
+ HELP_EOF
150
+ exit 0
151
+ ;;
152
+ -*)
153
+ error "Unknown option: $1"
154
+ echo "Use --help for usage information"
155
+ exit 1
156
+ ;;
157
+ *)
158
+ OUTPUT_FILE="$1"
159
+ shift
160
+ ;;
161
+ esac
162
+ done
163
+
164
+ # Handle --list-tools mode
165
+ if [[ "$LIST_TOOLS" == "true" ]]; then
166
+ echo "=============================================="
167
+ echo "Available Validation Tools for $SKILL_NAME"
168
+ echo "=============================================="
169
+ echo ""
170
+ echo "Required tools:"
171
+ for tool in "${REQUIRED_TOOLS[@]}"; do
172
+ if command_exists "$tool"; then
173
+ echo " [OK] $tool"
174
+ else
175
+ echo " [MISSING] $tool"
176
+ fi
177
+ done
178
+ echo ""
179
+ echo "Optional tools:"
180
+ for tool in "${OPTIONAL_TOOLS[@]}"; do
181
+ if command_exists "$tool"; then
182
+ echo " [OK] $tool"
183
+ else
184
+ echo " [MISSING] $tool"
185
+ fi
186
+ done
187
+ exit 0
188
+ fi
189
+
190
+ # =============================================================================
191
+ # Self-Test Mode
192
+ # =============================================================================
193
+
194
+ if [[ "$SELF_TEST" == "true" ]]; then
195
+ echo "=============================================="
196
+ info "Running $SKILL_NAME Validator Self-Test"
197
+ echo "=============================================="
198
+ echo ""
199
+
200
+ self_test_passed=true
201
+ self_test_warnings=0
202
+
203
+ # Step 1: Check Required Tools
204
+ echo "--- Step 1: Required Tools ---"
205
+ for tool in "${REQUIRED_TOOLS[@]}"; do
206
+ if command_exists "$tool"; then
207
+ success "Required tool available: $tool"
208
+ else
209
+ error "Required tool MISSING: $tool"
210
+ self_test_passed=false
211
+ fi
212
+ done
213
+ echo ""
214
+
215
+ # Step 2: Check Optional Tools
216
+ echo "--- Step 2: Optional Tools ---"
217
+ for tool in "${OPTIONAL_TOOLS[@]}"; do
218
+ if command_exists "$tool"; then
219
+ success "Optional tool available: $tool"
220
+ else
221
+ warn "Optional tool missing: $tool"
222
+ ((self_test_warnings++)) || true
223
+ fi
224
+ done
225
+ echo ""
226
+
227
+ # Step 3: Check Schema File
228
+ echo "--- Step 3: Schema File ---"
229
+ if [[ -f "$SCHEMA_PATH" ]]; then
230
+ success "Schema file exists: $SCHEMA_PATH"
231
+ if validate_json "$SCHEMA_PATH" 2>/dev/null; then
232
+ success "Schema file is valid JSON"
233
+ else
234
+ error "Schema file is NOT valid JSON"
235
+ self_test_passed=false
236
+ fi
237
+ else
238
+ error "Schema file not found: $SCHEMA_PATH"
239
+ self_test_passed=false
240
+ fi
241
+ echo ""
242
+
243
+ # Summary
244
+ echo "=============================================="
245
+ echo "Self-Test Summary for $SKILL_NAME"
246
+ echo "=============================================="
247
+
248
+ if [[ "$self_test_passed" == "true" ]]; then
249
+ if [[ $self_test_warnings -gt 0 ]]; then
250
+ warn "Self-test PASSED with $self_test_warnings warning(s)"
251
+ exit 0
252
+ else
253
+ success "Self-test PASSED"
254
+ exit 0
255
+ fi
256
+ else
257
+ error "Self-test FAILED"
258
+ exit 1
259
+ fi
260
+ fi
261
+
262
+ # =============================================================================
263
+ # SKILL-SPECIFIC VALIDATION FUNCTIONS
264
+ # =============================================================================
265
+
266
+ # Validate security findings structure
267
+ # Returns: 0 if valid, 1 if invalid
268
+ validate_security_findings() {
269
+ local output_file="$1"
270
+
271
+ local sec_findings
272
+ sec_findings=$(json_get "$output_file" ".output.securityFindings" 2>/dev/null)
273
+
274
+ if [[ -z "$sec_findings" ]] || [[ "$sec_findings" == "null" ]]; then
275
+ error "Missing securityFindings in output"
276
+ return 1
277
+ fi
278
+
279
+ # Check for required fields in securityFindings
280
+ local total_findings
281
+ total_findings=$(json_get "$output_file" ".output.securityFindings.totalFindings" 2>/dev/null)
282
+
283
+ if [[ -z "$total_findings" ]] || [[ "$total_findings" == "null" ]]; then
284
+ error "securityFindings missing totalFindings"
285
+ return 1
286
+ fi
287
+
288
+ # Check for security score
289
+ local sec_score
290
+ sec_score=$(json_get "$output_file" ".output.securityFindings.score" 2>/dev/null)
291
+
292
+ if [[ -z "$sec_score" ]] || [[ "$sec_score" == "null" ]]; then
293
+ error "securityFindings missing score"
294
+ return 1
295
+ fi
296
+
297
+ debug "Found $total_findings security findings with score: $sec_score"
298
+ return 0
299
+ }
300
+
301
+ # Validate visual diffs structure
302
+ # Returns: 0 if valid, 1 if invalid
303
+ validate_visual_diffs() {
304
+ local output_file="$1"
305
+
306
+ local visual_diffs
307
+ visual_diffs=$(json_get "$output_file" ".output.visualDiffs" 2>/dev/null)
308
+
309
+ if [[ -z "$visual_diffs" ]] || [[ "$visual_diffs" == "null" ]]; then
310
+ error "Missing visualDiffs in output"
311
+ return 1
312
+ fi
313
+
314
+ # Check for required fields
315
+ local comparisons
316
+ comparisons=$(json_get "$output_file" ".output.visualDiffs.totalComparisons" 2>/dev/null)
317
+
318
+ if [[ -z "$comparisons" ]] || [[ "$comparisons" == "null" ]]; then
319
+ error "visualDiffs missing totalComparisons"
320
+ return 1
321
+ fi
322
+
323
+ # Check for visual score
324
+ local vis_score
325
+ vis_score=$(json_get "$output_file" ".output.visualDiffs.score" 2>/dev/null)
326
+
327
+ if [[ -z "$vis_score" ]] || [[ "$vis_score" == "null" ]]; then
328
+ error "visualDiffs missing score"
329
+ return 1
330
+ fi
331
+
332
+ debug "Found $comparisons visual comparisons with score: $vis_score"
333
+ return 0
334
+ }
335
+
336
+ # Validate combined scoring
337
+ # Returns: 0 if valid, 1 if invalid
338
+ validate_combined_score() {
339
+ local output_file="$1"
340
+
341
+ local combined
342
+ combined=$(json_get "$output_file" ".output.combinedScore.value" 2>/dev/null)
343
+
344
+ if [[ -z "$combined" ]] || [[ "$combined" == "null" ]]; then
345
+ error "Missing combinedScore.value in output"
346
+ return 1
347
+ fi
348
+
349
+ # Validate combined score is between 0 and 100
350
+ if (( $(echo "$combined < 0 || $combined > 100" | bc -l 2>/dev/null || echo "0") )); then
351
+ error "Invalid combinedScore: $combined (must be 0-100)"
352
+ return 1
353
+ fi
354
+
355
+ debug "Combined score: $combined"
356
+ return 0
357
+ }
358
+
359
+ # Main skill-specific validation function
360
+ validate_skill_specific() {
361
+ local output_file="$1"
362
+ local has_errors=false
363
+
364
+ debug "Running security-visual-testing specific validations..."
365
+
366
+ if ! validate_security_findings "$output_file"; then
367
+ has_errors=true
368
+ else
369
+ success "Security findings validation passed"
370
+ fi
371
+
372
+ if ! validate_visual_diffs "$output_file"; then
373
+ has_errors=true
374
+ else
375
+ success "Visual diffs validation passed"
376
+ fi
377
+
378
+ if ! validate_combined_score "$output_file"; then
379
+ has_errors=true
380
+ else
381
+ success "Combined score validation passed"
382
+ fi
383
+
384
+ if [[ "$has_errors" == "true" ]]; then
385
+ return 1
386
+ fi
387
+
388
+ return 0
389
+ }
390
+
391
+ # Override base template validations as needed
392
+ validate_tools() {
393
+ if [[ ${#REQUIRED_TOOLS[@]} -eq 0 ]]; then
394
+ debug "No required tools specified"
395
+ return 0
396
+ fi
397
+
398
+ local missing=()
399
+ for tool in "${REQUIRED_TOOLS[@]}"; do
400
+ if ! command_exists "$tool"; then
401
+ missing+=("$tool")
402
+ fi
403
+ done
404
+
405
+ if [[ ${#missing[@]} -gt 0 ]]; then
406
+ error "Missing required tools: ${missing[*]}"
407
+ return 1
408
+ fi
409
+
410
+ debug "All required tools available"
411
+ return 0
412
+ }
413
+
414
+ validate_schema() {
415
+ local output_file="$1"
416
+
417
+ if [[ -z "$SCHEMA_PATH" ]]; then
418
+ debug "No schema path configured, skipping schema validation"
419
+ return 2
420
+ fi
421
+
422
+ if [[ ! -f "$SCHEMA_PATH" ]]; then
423
+ warn "Schema file not found: $SCHEMA_PATH"
424
+ return 2
425
+ fi
426
+
427
+ debug "Validating against schema: $SCHEMA_PATH"
428
+
429
+ local result
430
+ result=$(validate_json_schema "$SCHEMA_PATH" "$output_file" 2>&1)
431
+ local status=$?
432
+
433
+ case $status in
434
+ 0)
435
+ success "Schema validation passed"
436
+ return 0
437
+ ;;
438
+ 1)
439
+ error "Schema validation failed"
440
+ if [[ "$VERBOSE" == "true" ]]; then
441
+ echo "$result" | while read -r line; do
442
+ echo " $line"
443
+ done
444
+ fi
445
+ return 1
446
+ ;;
447
+ 2)
448
+ warn "Schema validation skipped (no validator available)"
449
+ return 2
450
+ ;;
451
+ esac
452
+ }
453
+
454
+ validate_required_fields() {
455
+ local output_file="$1"
456
+ local missing=()
457
+ local empty=()
458
+
459
+ for field in "${REQUIRED_FIELDS[@]}"; do
460
+ local value
461
+ value=$(json_get "$output_file" ".$field" 2>/dev/null)
462
+ if [[ -z "$value" ]] || [[ "$value" == "null" ]]; then
463
+ missing+=("$field")
464
+ fi
465
+ done
466
+
467
+ for field in "${REQUIRED_NON_EMPTY_FIELDS[@]}"; do
468
+ local value
469
+ value=$(json_get "$output_file" ".$field" 2>/dev/null)
470
+ if [[ -z "$value" ]] || [[ "$value" == "null" ]] || [[ "$value" == "" ]]; then
471
+ empty+=("$field")
472
+ fi
473
+ done
474
+
475
+ local has_errors=false
476
+
477
+ if [[ ${#missing[@]} -gt 0 ]]; then
478
+ error "Missing required fields: ${missing[*]}"
479
+ has_errors=true
480
+ fi
481
+
482
+ if [[ ${#empty[@]} -gt 0 ]]; then
483
+ error "Empty required fields: ${empty[*]}"
484
+ has_errors=true
485
+ fi
486
+
487
+ if [[ "$has_errors" == "true" ]]; then
488
+ return 1
489
+ fi
490
+
491
+ success "All required fields present and valid"
492
+ return 0
493
+ }
494
+
495
+ validate_enum_fields() {
496
+ local output_file="$1"
497
+
498
+ if [[ ${#ENUM_VALIDATIONS[@]} -eq 0 ]]; then
499
+ return 0
500
+ fi
501
+
502
+ local has_errors=false
503
+
504
+ for validation in "${ENUM_VALIDATIONS[@]}"; do
505
+ local field_path="${validation%%:*}"
506
+ local allowed_values="${validation#*:}"
507
+
508
+ local actual_value
509
+ actual_value=$(json_get "$output_file" "$field_path" 2>/dev/null)
510
+
511
+ if [[ -z "$actual_value" ]] || [[ "$actual_value" == "null" ]]; then
512
+ continue
513
+ fi
514
+
515
+ local found=false
516
+ IFS=',' read -ra allowed_array <<< "$allowed_values"
517
+ for allowed in "${allowed_array[@]}"; do
518
+ if [[ "$actual_value" == "$allowed" ]]; then
519
+ found=true
520
+ break
521
+ fi
522
+ done
523
+
524
+ if [[ "$found" == "false" ]]; then
525
+ error "Invalid value for $field_path: '$actual_value' (allowed: $allowed_values)"
526
+ has_errors=true
527
+ fi
528
+ done
529
+
530
+ if [[ "$has_errors" == "true" ]]; then
531
+ return 1
532
+ fi
533
+
534
+ success "All enum fields have valid values"
535
+ return 0
536
+ }
537
+
538
+ validate_content_terms() {
539
+ local output_file="$1"
540
+ local content
541
+ content=$(cat "$output_file")
542
+
543
+ local has_errors=false
544
+
545
+ if [[ ${#MUST_CONTAIN_TERMS[@]} -gt 0 ]]; then
546
+ local missing_terms=()
547
+ for term in "${MUST_CONTAIN_TERMS[@]}"; do
548
+ if ! grep -qi "$term" <<< "$content"; then
549
+ missing_terms+=("$term")
550
+ fi
551
+ done
552
+
553
+ if [[ ${#missing_terms[@]} -gt 0 ]]; then
554
+ error "Output missing required terms: ${missing_terms[*]}"
555
+ has_errors=true
556
+ else
557
+ success "All required terms found"
558
+ fi
559
+ fi
560
+
561
+ if [[ ${#MUST_NOT_CONTAIN_TERMS[@]} -gt 0 ]]; then
562
+ local found_forbidden=()
563
+ for term in "${MUST_NOT_CONTAIN_TERMS[@]}"; do
564
+ if grep -qi "$term" <<< "$content"; then
565
+ found_forbidden+=("$term")
566
+ fi
567
+ done
568
+
569
+ if [[ ${#found_forbidden[@]} -gt 0 ]]; then
570
+ error "Output contains forbidden terms: ${found_forbidden[*]}"
571
+ has_errors=true
572
+ else
573
+ success "No forbidden terms found"
574
+ fi
575
+ fi
576
+
577
+ if [[ "$has_errors" == "true" ]]; then
578
+ return 1
579
+ fi
580
+
581
+ return 0
582
+ }
583
+
584
+ # =============================================================================
585
+ # Main Validation Flow
586
+ # =============================================================================
587
+
588
+ main() {
589
+ if [[ -z "$OUTPUT_FILE" ]]; then
590
+ error "No output file specified"
591
+ echo "Usage: $0 <output-file> [options]"
592
+ exit 1
593
+ fi
594
+
595
+ if [[ ! -f "$OUTPUT_FILE" ]]; then
596
+ error "Output file not found: $OUTPUT_FILE"
597
+ exit 1
598
+ fi
599
+
600
+ if [[ "$JSON_ONLY" != "true" ]]; then
601
+ echo "=============================================="
602
+ info "Validating $SKILL_NAME Output"
603
+ echo "=============================================="
604
+ echo ""
605
+ echo " Skill: $SKILL_NAME v$SKILL_VERSION"
606
+ echo " File: $OUTPUT_FILE"
607
+ echo ""
608
+ fi
609
+
610
+ local tool_status="passed"
611
+ local json_status="passed"
612
+ local schema_status="passed"
613
+ local fields_status="passed"
614
+ local enums_status="passed"
615
+ local content_status="passed"
616
+ local specific_status="passed"
617
+ local error_count=0
618
+
619
+ # Step 1: Check Required Tools
620
+ [[ "$JSON_ONLY" != "true" ]] && echo "--- Step 1: Tool Availability ---"
621
+
622
+ if ! validate_tools; then
623
+ tool_status="failed"
624
+ ((error_count++)) || true
625
+ exit $EXIT_SKIP
626
+ fi
627
+
628
+ [[ "$JSON_ONLY" != "true" ]] && success "Tool check passed" && echo ""
629
+
630
+ # Step 2: Validate JSON Syntax
631
+ [[ "$JSON_ONLY" != "true" ]] && echo "--- Step 2: JSON Syntax ---"
632
+
633
+ if ! validate_json "$OUTPUT_FILE"; then
634
+ json_status="failed"
635
+ ((error_count++)) || true
636
+ exit $EXIT_FAIL
637
+ fi
638
+
639
+ [[ "$JSON_ONLY" != "true" ]] && success "JSON syntax valid" && echo ""
640
+
641
+ # Step 3: Validate Against Schema
642
+ [[ "$JSON_ONLY" != "true" ]] && echo "--- Step 3: Schema Validation ---"
643
+
644
+ local schema_exit_code
645
+ validate_schema "$OUTPUT_FILE" && schema_exit_code=0 || schema_exit_code=$?
646
+
647
+ case $schema_exit_code in
648
+ 0) [[ "$JSON_ONLY" != "true" ]] && echo "" ;;
649
+ 1) schema_status="failed"; ((error_count++)) || true; [[ "$JSON_ONLY" != "true" ]] && echo "" ;;
650
+ 2) schema_status="skipped"; [[ "$JSON_ONLY" != "true" ]] && echo "" ;;
651
+ esac
652
+
653
+ # Step 4: Validate Required Fields
654
+ [[ "$JSON_ONLY" != "true" ]] && echo "--- Step 4: Required Fields ---"
655
+
656
+ if ! validate_required_fields "$OUTPUT_FILE"; then
657
+ fields_status="failed"
658
+ ((error_count++)) || true
659
+ fi
660
+
661
+ [[ "$JSON_ONLY" != "true" ]] && echo ""
662
+
663
+ # Step 5: Validate Enum Values
664
+ [[ "$JSON_ONLY" != "true" ]] && echo "--- Step 5: Enum Validation ---"
665
+
666
+ if ! validate_enum_fields "$OUTPUT_FILE"; then
667
+ enums_status="failed"
668
+ ((error_count++)) || true
669
+ fi
670
+
671
+ [[ "$JSON_ONLY" != "true" ]] && echo ""
672
+
673
+ # Step 6: Validate Content Terms
674
+ [[ "$JSON_ONLY" != "true" ]] && echo "--- Step 6: Content Terms ---"
675
+
676
+ if ! validate_content_terms "$OUTPUT_FILE"; then
677
+ content_status="failed"
678
+ ((error_count++)) || true
679
+ fi
680
+
681
+ [[ "$JSON_ONLY" != "true" ]] && echo ""
682
+
683
+ # Step 7: Skill-Specific Validation
684
+ [[ "$JSON_ONLY" != "true" ]] && echo "--- Step 7: Skill-Specific Validation ---"
685
+
686
+ if ! validate_skill_specific "$OUTPUT_FILE"; then
687
+ specific_status="failed"
688
+ ((error_count++)) || true
689
+ fi
690
+
691
+ [[ "$JSON_ONLY" != "true" ]] && echo ""
692
+
693
+ # Determine Overall Status
694
+ local overall_status="passed"
695
+ local content_overall="passed"
696
+
697
+ if [[ "$fields_status" == "failed" ]] || \
698
+ [[ "$enums_status" == "failed" ]] || \
699
+ [[ "$content_status" == "failed" ]] || \
700
+ [[ "$specific_status" == "failed" ]]; then
701
+ content_overall="failed"
702
+ fi
703
+
704
+ if [[ "$json_status" == "failed" ]] || \
705
+ [[ "$schema_status" == "failed" ]] || \
706
+ [[ "$content_overall" == "failed" ]]; then
707
+ overall_status="failed"
708
+ elif [[ "$schema_status" == "skipped" ]]; then
709
+ overall_status="partial"
710
+ fi
711
+
712
+ # Output Results
713
+ if [[ "$JSON_ONLY" != "true" ]]; then
714
+ echo "=============================================="
715
+ echo "Validation Summary for $SKILL_NAME"
716
+ echo "=============================================="
717
+ echo ""
718
+ echo " Tools: $tool_status"
719
+ echo " JSON Syntax: $json_status"
720
+ echo " Schema: $schema_status"
721
+ echo " Required Fields: $fields_status"
722
+ echo " Enum Values: $enums_status"
723
+ echo " Content Terms: $content_status"
724
+ echo " Skill-Specific: $specific_status"
725
+ echo ""
726
+ echo " Overall: $overall_status"
727
+ echo " Errors: $error_count"
728
+ echo "=============================================="
729
+ echo ""
730
+ fi
731
+
732
+ case "$overall_status" in
733
+ "passed")
734
+ [[ "$JSON_ONLY" != "true" ]] && success "Validation PASSED"
735
+ exit $EXIT_PASS
736
+ ;;
737
+ "partial")
738
+ [[ "$JSON_ONLY" != "true" ]] && warn "Validation PARTIAL"
739
+ exit $EXIT_PASS
740
+ ;;
741
+ "failed")
742
+ [[ "$JSON_ONLY" != "true" ]] && error "Validation FAILED"
743
+ exit $EXIT_FAIL
744
+ ;;
745
+ esac
746
+ }
747
+
748
+ main