agentic-qe 3.8.1 → 3.8.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 (448) hide show
  1. package/.claude/agents/v3/qe-security-scanner.md +2 -2
  2. package/.claude/commands/claude-flow-help.md +1 -1
  3. package/.claude/helpers/github-setup.sh +4 -4
  4. package/.claude/helpers/post-commit +1 -1
  5. package/.claude/helpers/pre-commit +1 -1
  6. package/.claude/helpers/quick-start.sh +4 -4
  7. package/.claude/helpers/setup-mcp.sh +3 -3
  8. package/.claude/helpers/statusline-v3.cjs +1 -1
  9. package/.claude/helpers/validation-pipeline.cjs +625 -0
  10. package/.claude/skills/README.md +29 -7
  11. package/.claude/skills/TRUST-TIERS.md +26 -10
  12. package/.claude/skills/a11y-ally/SKILL.md +10 -2
  13. package/.claude/skills/accessibility-testing/SKILL.md +2 -1
  14. package/.claude/skills/agentic-quality-engineering/SKILL.md +1 -2
  15. package/.claude/skills/api-testing-patterns/SKILL.md +8 -0
  16. package/.claude/skills/api-testing-patterns/config.json +14 -0
  17. package/.claude/skills/api-testing-patterns/templates/api-test-scaffold.md +87 -0
  18. package/.claude/skills/brutal-honesty-review/SKILL.md +0 -1
  19. package/.claude/skills/bug-reporting-excellence/SKILL.md +14 -1
  20. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +0 -1
  21. package/.claude/skills/code-review-quality/SKILL.md +14 -1
  22. package/.claude/skills/compatibility-testing/SKILL.md +1 -54
  23. package/.claude/skills/compliance-testing/SKILL.md +8 -1
  24. package/.claude/skills/compliance-testing/config.json +13 -0
  25. package/.claude/skills/consultancy-practices/SKILL.md +1 -33
  26. package/.claude/skills/context-driven-testing/SKILL.md +0 -42
  27. package/.claude/skills/contract-testing/SKILL.md +12 -0
  28. package/.claude/skills/contract-testing/config.json +13 -0
  29. package/.claude/skills/contract-testing/references/agent-commands.md +103 -0
  30. package/.claude/skills/contract-testing/references/provider-states.md +45 -0
  31. package/.claude/skills/coverage-drop-investigator/SKILL.md +90 -0
  32. package/.claude/skills/coverage-guard/SKILL.md +82 -0
  33. package/.claude/skills/coverage-guard/scripts/check-coverage.sh +42 -0
  34. package/.claude/skills/database-testing/SKILL.md +0 -10
  35. package/.claude/skills/debug-loop/SKILL.md +1 -1
  36. package/.claude/skills/e2e-flow-verifier/SKILL.md +78 -0
  37. package/.claude/skills/enterprise-integration-testing/SKILL.md +1 -1
  38. package/.claude/skills/exploratory-testing-advanced/SKILL.md +8 -1
  39. package/.claude/skills/exploratory-testing-advanced/references/heuristic-cheatsheet.md +48 -0
  40. package/.claude/skills/freeze-tests/SKILL.md +67 -0
  41. package/.claude/skills/freeze-tests/scripts/block-test-edits.sh +27 -0
  42. package/.claude/skills/holistic-testing-pact/SKILL.md +0 -1
  43. package/.claude/skills/iterative-loop/SKILL.md +6 -6
  44. package/.claude/skills/localization-testing/SKILL.md +0 -18
  45. package/.claude/skills/mobile-testing/SKILL.md +2 -50
  46. package/.claude/skills/mutation-testing/SKILL.md +26 -1
  47. package/.claude/skills/mutation-testing/config.json +14 -0
  48. package/.claude/skills/mutation-testing/references/mutation-operators.md +38 -0
  49. package/.claude/skills/mutation-testing/run-history.json +6 -0
  50. package/.claude/skills/n8n-expression-testing/SKILL.md +0 -1
  51. package/.claude/skills/n8n-integration-testing-patterns/SKILL.md +0 -1
  52. package/.claude/skills/n8n-security-testing/SKILL.md +0 -1
  53. package/.claude/skills/n8n-trigger-testing-strategies/SKILL.md +0 -1
  54. package/.claude/skills/n8n-workflow-testing-fundamentals/SKILL.md +0 -1
  55. package/.claude/skills/no-skip/SKILL.md +74 -0
  56. package/.claude/skills/no-skip/scripts/check-skips.sh +28 -0
  57. package/.claude/skills/pair-programming/SKILL.md +1 -1
  58. package/.claude/skills/pentest-validation/SKILL.md +2 -3
  59. package/.claude/skills/performance-testing/SKILL.md +21 -0
  60. package/.claude/skills/performance-testing/config.json +18 -0
  61. package/.claude/skills/performance-testing/references/k6-patterns.md +72 -0
  62. package/.claude/skills/performance-testing/run-history.json +6 -0
  63. package/.claude/skills/pr-review/SKILL.md +3 -3
  64. package/.claude/skills/qcsd-cicd-swarm/SKILL.md +1 -2
  65. package/.claude/skills/qcsd-development-swarm/SKILL.md +1 -2
  66. package/.claude/skills/qcsd-ideation-swarm/SKILL.md +1 -2
  67. package/.claude/skills/qcsd-production-swarm/SKILL.md +1 -2
  68. package/.claude/skills/qcsd-production-swarm/steps/01-flag-detection.md +1 -1
  69. package/.claude/skills/qcsd-production-swarm/steps/07-learning-persistence.md +2 -2
  70. package/.claude/skills/qcsd-refinement-swarm/SKILL.md +1 -2
  71. package/.claude/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +1 -1
  72. package/.claude/skills/qe-chaos-resilience/SKILL.md +2 -3
  73. package/.claude/skills/qe-code-intelligence/SKILL.md +9 -2
  74. package/.claude/skills/qe-coverage-analysis/SKILL.md +28 -2
  75. package/.claude/skills/qe-coverage-analysis/run-history.json +6 -0
  76. package/.claude/skills/qe-defect-intelligence/SKILL.md +1 -2
  77. package/.claude/skills/qe-iterative-loop/SKILL.md +0 -1
  78. package/.claude/skills/qe-learning-optimization/SKILL.md +1 -2
  79. package/.claude/skills/qe-quality-assessment/SKILL.md +29 -3
  80. package/.claude/skills/qe-quality-assessment/run-history.json +6 -0
  81. package/.claude/skills/qe-requirements-validation/SKILL.md +1 -2
  82. package/.claude/skills/qe-test-execution/SKILL.md +9 -2
  83. package/.claude/skills/qe-test-generation/SKILL.md +15 -2
  84. package/.claude/skills/qe-test-generation/config.json +14 -0
  85. package/.claude/skills/qe-test-generation/templates/test-scaffold-jest.md +72 -0
  86. package/.claude/skills/qe-visual-accessibility/SKILL.md +1 -2
  87. package/.claude/skills/quality-metrics/SKILL.md +3 -78
  88. package/.claude/skills/refactoring-patterns/SKILL.md +0 -1
  89. package/.claude/skills/regression-testing/SKILL.md +13 -49
  90. package/.claude/skills/risk-based-testing/SKILL.md +6 -52
  91. package/.claude/skills/security-testing/SKILL.md +30 -0
  92. package/.claude/skills/security-testing/config.json +13 -0
  93. package/.claude/skills/security-testing/references/compliance-agent-commands.md +131 -0
  94. package/.claude/skills/security-testing/references/owasp-top-10.md +66 -0
  95. package/.claude/skills/security-testing/run-history.json +6 -0
  96. package/.claude/skills/security-testing/templates/security-report.md +44 -0
  97. package/.claude/skills/security-visual-testing/SKILL.md +0 -1
  98. package/.claude/skills/security-watch/SKILL.md +93 -0
  99. package/.claude/skills/security-watch/scripts/scan-security.sh +46 -0
  100. package/.claude/skills/sherlock-review/SKILL.md +0 -1
  101. package/.claude/skills/shift-left-testing/SKILL.md +16 -88
  102. package/.claude/skills/shift-right-testing/SKILL.md +0 -1
  103. package/.claude/skills/six-thinking-hats/SKILL.md +0 -1
  104. package/.claude/skills/skill-stats/SKILL.md +79 -0
  105. package/.claude/skills/skills-manifest.json +1 -1
  106. package/.claude/skills/strict-tdd/SKILL.md +72 -0
  107. package/.claude/skills/strict-tdd/scripts/enforce-red-phase.sh +36 -0
  108. package/.claude/skills/tdd-london-chicago/SKILL.md +8 -1
  109. package/.claude/skills/technical-writing/SKILL.md +0 -1
  110. package/.claude/skills/test-automation-strategy/SKILL.md +13 -65
  111. package/.claude/skills/test-data-management/SKILL.md +1 -105
  112. package/.claude/skills/test-design-techniques/SKILL.md +2 -152
  113. package/.claude/skills/test-environment-management/SKILL.md +0 -48
  114. package/.claude/skills/test-failure-investigator/SKILL.md +99 -0
  115. package/.claude/skills/test-metrics-dashboard/SKILL.md +97 -0
  116. package/.claude/skills/test-reporting-analytics/SKILL.md +0 -1
  117. package/.claude/skills/trust-tier-manifest.json +135 -61
  118. package/.claude/skills/validation-pipeline/SKILL.md +5 -6
  119. package/.claude/skills/verification-quality/SKILL.md +15 -1
  120. package/.claude/skills/visual-testing-advanced/SKILL.md +0 -1
  121. package/.claude/skills/xp-practices/SKILL.md +2 -110
  122. package/.opencode/agents/collective-intelligence-coordinator.yaml +52 -0
  123. package/.opencode/agents/ddd-domain-expert.yaml +49 -0
  124. package/.opencode/agents/memory-specialist.yaml +49 -0
  125. package/.opencode/agents/performance-engineer.yaml +53 -0
  126. package/.opencode/agents/qe-accessibility-auditor.yaml +118 -0
  127. package/.opencode/agents/qe-api-contract-validator.yaml +85 -0
  128. package/.opencode/agents/qe-bdd-generator.yaml +83 -0
  129. package/.opencode/agents/qe-chaos-engineer.yaml +114 -0
  130. package/.opencode/agents/qe-code-complexity.yaml +82 -0
  131. package/.opencode/agents/qe-code-intelligence.yaml +80 -0
  132. package/.opencode/agents/qe-coverage-analyzer.yaml +75 -0
  133. package/.opencode/agents/qe-defect-predictor.yaml +81 -0
  134. package/.opencode/agents/qe-dependency-mapper.yaml +81 -0
  135. package/.opencode/agents/qe-deployment-advisor.yaml +82 -0
  136. package/.opencode/agents/qe-devils-advocate.yaml +63 -0
  137. package/.opencode/agents/qe-flaky-hunter.yaml +116 -0
  138. package/.opencode/agents/qe-fleet-commander.yaml +83 -0
  139. package/.opencode/agents/qe-gap-detector.yaml +81 -0
  140. package/.opencode/agents/qe-graphql-tester.yaml +84 -0
  141. package/.opencode/agents/qe-impact-analyzer.yaml +81 -0
  142. package/.opencode/agents/qe-integration-architect.yaml +46 -0
  143. package/.opencode/agents/qe-integration-tester.yaml +84 -0
  144. package/.opencode/agents/qe-kg-builder.yaml +75 -0
  145. package/.opencode/agents/qe-learning-coordinator.yaml +82 -0
  146. package/.opencode/agents/qe-load-tester.yaml +84 -0
  147. package/.opencode/agents/qe-message-broker-tester.yaml +94 -0
  148. package/.opencode/agents/qe-metrics-optimizer.yaml +81 -0
  149. package/.opencode/agents/qe-middleware-validator.yaml +92 -0
  150. package/.opencode/agents/qe-mutation-tester.yaml +84 -0
  151. package/.opencode/agents/qe-odata-contract-tester.yaml +98 -0
  152. package/.opencode/agents/qe-parallel-executor.yaml +79 -0
  153. package/.opencode/agents/qe-pattern-learner.yaml +80 -0
  154. package/.opencode/agents/qe-pentest-validator.yaml +137 -0
  155. package/.opencode/agents/qe-performance-tester.yaml +83 -0
  156. package/.opencode/agents/qe-product-factors-assessor.yaml +116 -0
  157. package/.opencode/agents/qe-property-tester.yaml +82 -0
  158. package/.opencode/agents/qe-quality-criteria-recommender.yaml +111 -0
  159. package/.opencode/agents/qe-quality-gate.yaml +80 -0
  160. package/.opencode/agents/qe-queen-coordinator.yaml +59 -0
  161. package/.opencode/agents/qe-qx-partner.yaml +75 -0
  162. package/.opencode/agents/qe-regression-analyzer.yaml +90 -0
  163. package/.opencode/agents/qe-requirements-validator.yaml +111 -0
  164. package/.opencode/agents/qe-responsive-tester.yaml +85 -0
  165. package/.opencode/agents/qe-retry-handler.yaml +82 -0
  166. package/.opencode/agents/qe-risk-assessor.yaml +81 -0
  167. package/.opencode/agents/qe-root-cause-analyzer.yaml +82 -0
  168. package/.opencode/agents/qe-sap-idoc-tester.yaml +104 -0
  169. package/.opencode/agents/qe-sap-rfc-tester.yaml +94 -0
  170. package/.opencode/agents/qe-security-auditor.yaml +90 -0
  171. package/.opencode/agents/qe-security-scanner.yaml +80 -0
  172. package/.opencode/agents/qe-soap-tester.yaml +93 -0
  173. package/.opencode/agents/qe-sod-analyzer.yaml +96 -0
  174. package/.opencode/agents/qe-tdd-specialist.yaml +84 -0
  175. package/.opencode/agents/qe-test-generator.yaml +78 -0
  176. package/.opencode/agents/qe-test-idea-rewriter.yaml +88 -0
  177. package/.opencode/agents/qe-transfer-specialist.yaml +81 -0
  178. package/.opencode/agents/qe-visual-tester.yaml +82 -0
  179. package/.opencode/agents/security-architect.yaml +51 -0
  180. package/.opencode/agents/security-auditor.yaml +50 -0
  181. package/.opencode/permissions.yaml +74 -0
  182. package/.opencode/skills/qcsd-cicd-swarm.yaml +45 -0
  183. package/.opencode/skills/qcsd-development-swarm.yaml +45 -0
  184. package/.opencode/skills/qcsd-ideation-swarm.yaml +45 -0
  185. package/.opencode/skills/qcsd-production-swarm.yaml +45 -0
  186. package/.opencode/skills/qcsd-refinement-swarm.yaml +45 -0
  187. package/.opencode/skills/qe-a11y-ally.yaml +45 -0
  188. package/.opencode/skills/qe-accessibility-testing.yaml +45 -0
  189. package/.opencode/skills/qe-agentic-jujutsu.yaml +45 -0
  190. package/.opencode/skills/qe-agentic-quality-engineering.yaml +45 -0
  191. package/.opencode/skills/qe-api-testing-patterns.yaml +45 -0
  192. package/.opencode/skills/qe-aqe-v2-v3-migration.yaml +45 -0
  193. package/.opencode/skills/qe-brutal-honesty-review.yaml +45 -0
  194. package/.opencode/skills/qe-bug-reporting-excellence.yaml +45 -0
  195. package/.opencode/skills/qe-chaos-engineering-resilience.yaml +30 -0
  196. package/.opencode/skills/qe-chaos-resilience.yaml +45 -0
  197. package/.opencode/skills/qe-cicd-pipeline-qe-orchestrator.yaml +45 -0
  198. package/.opencode/skills/qe-code-intelligence.yaml +45 -0
  199. package/.opencode/skills/qe-code-review-quality.yaml +45 -0
  200. package/.opencode/skills/qe-compatibility-testing.yaml +35 -0
  201. package/.opencode/skills/qe-compliance-testing.yaml +35 -0
  202. package/.opencode/skills/qe-consultancy-practices.yaml +45 -0
  203. package/.opencode/skills/qe-context-driven-testing.yaml +45 -0
  204. package/.opencode/skills/qe-coverage-analysis.yaml +45 -0
  205. package/.opencode/skills/qe-database-testing.yaml +40 -0
  206. package/.opencode/skills/qe-debug-loop.yaml +45 -0
  207. package/.opencode/skills/qe-defect-intelligence.yaml +45 -0
  208. package/.opencode/skills/qe-enterprise-integration-testing.yaml +45 -0
  209. package/.opencode/skills/qe-exploratory-testing-advanced.yaml +45 -0
  210. package/.opencode/skills/qe-github-code-review.yaml +45 -0
  211. package/.opencode/skills/qe-github-multi-repo.yaml +45 -0
  212. package/.opencode/skills/qe-github-project-management.yaml +45 -0
  213. package/.opencode/skills/qe-github-release-management.yaml +45 -0
  214. package/.opencode/skills/qe-github-workflow-automation.yaml +45 -0
  215. package/.opencode/skills/qe-holistic-testing-pact.yaml +45 -0
  216. package/.opencode/skills/qe-iterative-loop.yaml +45 -0
  217. package/.opencode/skills/qe-learning-optimization.yaml +45 -0
  218. package/.opencode/skills/qe-localization-testing.yaml +40 -0
  219. package/.opencode/skills/qe-middleware-testing-patterns.yaml +45 -0
  220. package/.opencode/skills/qe-mobile-testing.yaml +35 -0
  221. package/.opencode/skills/qe-mutation-testing.yaml +35 -0
  222. package/.opencode/skills/qe-n8n-expression-testing.yaml +45 -0
  223. package/.opencode/skills/qe-n8n-integration-testing-patterns.yaml +45 -0
  224. package/.opencode/skills/qe-n8n-security-testing.yaml +45 -0
  225. package/.opencode/skills/qe-n8n-trigger-testing-strategies.yaml +45 -0
  226. package/.opencode/skills/qe-n8n-workflow-testing-fundamentals.yaml +45 -0
  227. package/.opencode/skills/qe-observability-testing-patterns.yaml +45 -0
  228. package/.opencode/skills/qe-pair-programming.yaml +45 -0
  229. package/.opencode/skills/qe-pentest-validation.yaml +45 -0
  230. package/.opencode/skills/qe-performance-analysis.yaml +45 -0
  231. package/.opencode/skills/qe-performance-testing.yaml +45 -0
  232. package/.opencode/skills/qe-pr-review.yaml +45 -0
  233. package/.opencode/skills/qe-quality-assessment.yaml +45 -0
  234. package/.opencode/skills/qe-quality-metrics.yaml +45 -0
  235. package/.opencode/skills/qe-refactoring-patterns.yaml +40 -0
  236. package/.opencode/skills/qe-regression-testing.yaml +40 -0
  237. package/.opencode/skills/qe-release.yaml +45 -0
  238. package/.opencode/skills/qe-requirements-validation.yaml +45 -0
  239. package/.opencode/skills/qe-risk-based-testing.yaml +45 -0
  240. package/.opencode/skills/qe-security-testing.yaml +45 -0
  241. package/.opencode/skills/qe-security-visual-testing.yaml +45 -0
  242. package/.opencode/skills/qe-sfdipot-product-factors.yaml +45 -0
  243. package/.opencode/skills/qe-sherlock-review.yaml +45 -0
  244. package/.opencode/skills/qe-shift-left-testing.yaml +45 -0
  245. package/.opencode/skills/qe-shift-right-testing.yaml +45 -0
  246. package/.opencode/skills/qe-six-thinking-hats.yaml +45 -0
  247. package/.opencode/skills/qe-skill-builder.yaml +45 -0
  248. package/.opencode/skills/qe-sparc-methodology.yaml +45 -0
  249. package/.opencode/skills/qe-stream-chain.yaml +45 -0
  250. package/.opencode/skills/qe-tdd-london-chicago.yaml +45 -0
  251. package/.opencode/skills/qe-technical-writing.yaml +45 -0
  252. package/.opencode/skills/qe-test-automation-strategy.yaml +35 -0
  253. package/.opencode/skills/qe-test-data-management.yaml +45 -0
  254. package/.opencode/skills/qe-test-design-techniques.yaml +40 -0
  255. package/.opencode/skills/qe-test-environment-management.yaml +40 -0
  256. package/.opencode/skills/qe-test-execution.yaml +45 -0
  257. package/.opencode/skills/qe-test-generation.yaml +45 -0
  258. package/.opencode/skills/qe-test-idea-rewriting.yaml +45 -0
  259. package/.opencode/skills/qe-test-reporting-analytics.yaml +45 -0
  260. package/.opencode/skills/qe-testability-scoring.yaml +45 -0
  261. package/.opencode/skills/qe-verification-quality.yaml +45 -0
  262. package/.opencode/skills/qe-visual-accessibility.yaml +45 -0
  263. package/.opencode/skills/qe-visual-testing-advanced.yaml +40 -0
  264. package/.opencode/skills/qe-wms-testing-patterns.yaml +45 -0
  265. package/.opencode/skills/qe-xp-practices.yaml +45 -0
  266. package/.opencode/tools/qe-defect-scan.ts +79 -0
  267. package/.opencode/tools/qe-fleet-status.ts +59 -0
  268. package/.opencode/tools/qe-full-audit.ts +81 -0
  269. package/.opencode/tools/qe-learning-report.ts +74 -0
  270. package/.opencode/tools/qe-test-and-verify.ts +97 -0
  271. package/CHANGELOG.md +50 -0
  272. package/README.md +5 -1
  273. package/assets/agents/v3/qe-security-scanner.md +2 -2
  274. package/assets/helpers/statusline-v3.cjs +1 -1
  275. package/assets/helpers/validation-pipeline.cjs +625 -0
  276. package/assets/skills/README.md +173 -0
  277. package/assets/skills/TRUST-TIERS.md +174 -0
  278. package/assets/skills/a11y-ally/SKILL.md +10 -2
  279. package/assets/skills/accessibility-testing/SKILL.md +2 -1
  280. package/assets/skills/agentic-quality-engineering/SKILL.md +1 -2
  281. package/assets/skills/api-testing-patterns/SKILL.md +8 -0
  282. package/assets/skills/api-testing-patterns/config.json +14 -0
  283. package/assets/skills/api-testing-patterns/templates/api-test-scaffold.md +87 -0
  284. package/assets/skills/brutal-honesty-review/SKILL.md +0 -1
  285. package/assets/skills/bug-reporting-excellence/SKILL.md +14 -1
  286. package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +0 -1
  287. package/assets/skills/code-review-quality/SKILL.md +14 -1
  288. package/assets/skills/compatibility-testing/SKILL.md +1 -54
  289. package/assets/skills/compliance-testing/SKILL.md +8 -1
  290. package/assets/skills/compliance-testing/config.json +13 -0
  291. package/assets/skills/consultancy-practices/SKILL.md +1 -33
  292. package/assets/skills/context-driven-testing/SKILL.md +0 -42
  293. package/assets/skills/contract-testing/SKILL.md +12 -0
  294. package/assets/skills/contract-testing/config.json +13 -0
  295. package/assets/skills/contract-testing/references/agent-commands.md +103 -0
  296. package/assets/skills/contract-testing/references/provider-states.md +45 -0
  297. package/assets/skills/coverage-drop-investigator/SKILL.md +90 -0
  298. package/assets/skills/coverage-guard/SKILL.md +82 -0
  299. package/assets/skills/coverage-guard/scripts/check-coverage.sh +42 -0
  300. package/assets/skills/database-testing/SKILL.md +0 -10
  301. package/assets/skills/debug-loop/SKILL.md +1 -1
  302. package/assets/skills/e2e-flow-verifier/SKILL.md +78 -0
  303. package/assets/skills/enterprise-integration-testing/SKILL.md +1 -1
  304. package/assets/skills/exploratory-testing-advanced/SKILL.md +8 -1
  305. package/assets/skills/exploratory-testing-advanced/references/heuristic-cheatsheet.md +48 -0
  306. package/assets/skills/freeze-tests/SKILL.md +67 -0
  307. package/assets/skills/freeze-tests/scripts/block-test-edits.sh +27 -0
  308. package/assets/skills/holistic-testing-pact/SKILL.md +0 -1
  309. package/assets/skills/localization-testing/SKILL.md +0 -18
  310. package/assets/skills/mobile-testing/SKILL.md +2 -50
  311. package/assets/skills/mutation-testing/SKILL.md +26 -1
  312. package/assets/skills/mutation-testing/config.json +14 -0
  313. package/assets/skills/mutation-testing/references/mutation-operators.md +38 -0
  314. package/assets/skills/mutation-testing/run-history.json +6 -0
  315. package/assets/skills/n8n-expression-testing/SKILL.md +0 -1
  316. package/assets/skills/n8n-integration-testing-patterns/SKILL.md +0 -1
  317. package/assets/skills/n8n-security-testing/SKILL.md +0 -1
  318. package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +0 -1
  319. package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +0 -1
  320. package/assets/skills/no-skip/SKILL.md +74 -0
  321. package/assets/skills/no-skip/scripts/check-skips.sh +28 -0
  322. package/assets/skills/pair-programming/SKILL.md +1 -1
  323. package/assets/skills/pentest-validation/SKILL.md +2 -3
  324. package/assets/skills/performance-testing/SKILL.md +21 -0
  325. package/assets/skills/performance-testing/config.json +18 -0
  326. package/assets/skills/performance-testing/references/k6-patterns.md +72 -0
  327. package/assets/skills/performance-testing/run-history.json +6 -0
  328. package/assets/skills/pr-review/SKILL.md +3 -3
  329. package/assets/skills/qcsd-cicd-swarm/SKILL.md +1 -2
  330. package/assets/skills/qcsd-development-swarm/SKILL.md +1 -2
  331. package/assets/skills/qcsd-ideation-swarm/SKILL.md +1 -2
  332. package/assets/skills/qcsd-production-swarm/SKILL.md +1 -2
  333. package/assets/skills/qcsd-production-swarm/steps/01-flag-detection.md +1 -1
  334. package/assets/skills/qcsd-production-swarm/steps/07-learning-persistence.md +2 -2
  335. package/assets/skills/qcsd-refinement-swarm/SKILL.md +1 -2
  336. package/assets/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +1 -1
  337. package/assets/skills/qe-chaos-resilience/SKILL.md +2 -3
  338. package/assets/skills/qe-code-intelligence/SKILL.md +9 -2
  339. package/assets/skills/qe-coverage-analysis/SKILL.md +28 -2
  340. package/assets/skills/qe-coverage-analysis/run-history.json +6 -0
  341. package/assets/skills/qe-defect-intelligence/SKILL.md +1 -2
  342. package/assets/skills/qe-iterative-loop/SKILL.md +0 -1
  343. package/assets/skills/qe-learning-optimization/SKILL.md +1 -2
  344. package/assets/skills/qe-quality-assessment/SKILL.md +29 -3
  345. package/assets/skills/qe-quality-assessment/run-history.json +6 -0
  346. package/assets/skills/qe-requirements-validation/SKILL.md +1 -2
  347. package/assets/skills/qe-test-execution/SKILL.md +9 -2
  348. package/assets/skills/qe-test-generation/SKILL.md +15 -2
  349. package/assets/skills/qe-test-generation/config.json +14 -0
  350. package/assets/skills/qe-test-generation/templates/test-scaffold-jest.md +72 -0
  351. package/assets/skills/qe-visual-accessibility/SKILL.md +1 -2
  352. package/assets/skills/quality-metrics/SKILL.md +3 -78
  353. package/assets/skills/refactoring-patterns/SKILL.md +0 -1
  354. package/assets/skills/regression-testing/SKILL.md +13 -49
  355. package/assets/skills/risk-based-testing/SKILL.md +6 -52
  356. package/assets/skills/security-testing/SKILL.md +30 -0
  357. package/assets/skills/security-testing/config.json +13 -0
  358. package/assets/skills/security-testing/references/compliance-agent-commands.md +131 -0
  359. package/assets/skills/security-testing/references/owasp-top-10.md +66 -0
  360. package/assets/skills/security-testing/run-history.json +6 -0
  361. package/assets/skills/security-testing/templates/security-report.md +44 -0
  362. package/assets/skills/security-visual-testing/SKILL.md +0 -1
  363. package/assets/skills/security-watch/SKILL.md +93 -0
  364. package/assets/skills/security-watch/scripts/scan-security.sh +46 -0
  365. package/assets/skills/sherlock-review/SKILL.md +0 -1
  366. package/assets/skills/shift-left-testing/SKILL.md +16 -88
  367. package/assets/skills/shift-right-testing/SKILL.md +0 -1
  368. package/assets/skills/six-thinking-hats/SKILL.md +0 -1
  369. package/assets/skills/skill-stats/SKILL.md +79 -0
  370. package/assets/skills/strict-tdd/SKILL.md +72 -0
  371. package/assets/skills/strict-tdd/scripts/enforce-red-phase.sh +36 -0
  372. package/assets/skills/tdd-london-chicago/SKILL.md +8 -1
  373. package/assets/skills/technical-writing/SKILL.md +0 -1
  374. package/assets/skills/test-automation-strategy/SKILL.md +13 -65
  375. package/assets/skills/test-data-management/SKILL.md +1 -105
  376. package/assets/skills/test-design-techniques/SKILL.md +2 -152
  377. package/assets/skills/test-environment-management/SKILL.md +0 -48
  378. package/assets/skills/test-failure-investigator/SKILL.md +99 -0
  379. package/assets/skills/test-metrics-dashboard/SKILL.md +97 -0
  380. package/assets/skills/test-reporting-analytics/SKILL.md +0 -1
  381. package/assets/skills/trust-tier-manifest.json +135 -61
  382. package/assets/skills/validation-pipeline/SKILL.md +5 -6
  383. package/assets/skills/verification-quality/SKILL.md +15 -1
  384. package/assets/skills/visual-testing-advanced/SKILL.md +0 -1
  385. package/assets/skills/xp-practices/SKILL.md +2 -110
  386. package/dist/adapters/claude-flow/detect.d.ts +5 -0
  387. package/dist/adapters/claude-flow/detect.js +38 -18
  388. package/dist/adapters/claude-flow/model-router-bridge.js +4 -3
  389. package/dist/adapters/claude-flow/pretrain-bridge.js +5 -4
  390. package/dist/adapters/claude-flow/trajectory-bridge.js +5 -4
  391. package/dist/cli/bundle.js +262 -79
  392. package/dist/cli/commands/claude-flow-setup.js +4 -4
  393. package/dist/domains/learning-optimization/coordinator.d.ts +6 -1
  394. package/dist/domains/learning-optimization/coordinator.js +26 -4
  395. package/dist/domains/learning-optimization/plugin.d.ts +2 -0
  396. package/dist/domains/learning-optimization/plugin.js +2 -0
  397. package/dist/governance/adversarial-defense-integration.js +1 -0
  398. package/dist/governance/continue-gate-integration.d.ts +1 -0
  399. package/dist/governance/continue-gate-integration.js +1 -0
  400. package/dist/governance/deterministic-gateway-integration.d.ts +1 -0
  401. package/dist/governance/deterministic-gateway-integration.js +1 -0
  402. package/dist/governance/evolution-pipeline-integration.d.ts +1 -0
  403. package/dist/governance/evolution-pipeline-integration.js +1 -0
  404. package/dist/governance/memory-write-gate-integration.d.ts +1 -0
  405. package/dist/governance/memory-write-gate-integration.js +1 -0
  406. package/dist/governance/proof-envelope-integration.d.ts +1 -0
  407. package/dist/governance/proof-envelope-integration.js +1 -0
  408. package/dist/governance/shard-retriever-integration.d.ts +1 -0
  409. package/dist/governance/shard-retriever-integration.js +1 -0
  410. package/dist/governance/trust-accumulator-integration.d.ts +1 -0
  411. package/dist/governance/trust-accumulator-integration.js +1 -0
  412. package/dist/init/agents-installer.js +28 -1
  413. package/dist/init/enhancements/claude-flow-adapter.js +15 -2
  414. package/dist/init/init-wizard-hooks.js +3 -3
  415. package/dist/init/kiro-installer.js +10 -4
  416. package/dist/init/opencode-installer.d.ts +13 -1
  417. package/dist/init/opencode-installer.js +52 -14
  418. package/dist/init/phases/07-hooks.js +21 -7
  419. package/dist/init/settings-merge.d.ts +1 -1
  420. package/dist/init/settings-merge.js +12 -13
  421. package/dist/init/skills-installer.d.ts +10 -0
  422. package/dist/init/skills-installer.js +68 -6
  423. package/dist/integrations/ruvector/sona-persistence.d.ts +6 -0
  424. package/dist/integrations/ruvector/sona-persistence.js +26 -1
  425. package/dist/mcp/bundle.js +98 -37
  426. package/dist/mcp/entry.js +6 -6
  427. package/dist/migration/agent-compat.js +2 -2
  428. package/package.json +9 -4
  429. package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +0 -513
  430. package/.claude/skills/aqe-v2-v3-migration/skill.md +0 -326
  431. package/.claude/skills/qe-contract-testing/SKILL.md +0 -224
  432. package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +0 -513
  433. package/.claude/skills/qe-contract-testing/schemas/output.json +0 -295
  434. package/.claude/skills/qe-contract-testing/scripts/validate-config.json +0 -42
  435. package/.claude/skills/qe-security-compliance/SKILL.md +0 -261
  436. package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +0 -595
  437. package/.claude/skills/qe-security-compliance/schemas/output.json +0 -498
  438. package/.claude/skills/qe-security-compliance/scripts/validate-config.json +0 -41
  439. package/assets/skills/aqe-v2-v3-migration/schemas/output.json +0 -513
  440. package/assets/skills/aqe-v2-v3-migration/skill.md +0 -326
  441. package/assets/skills/qe-contract-testing/SKILL.md +0 -224
  442. package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +0 -513
  443. package/assets/skills/qe-contract-testing/schemas/output.json +0 -295
  444. package/assets/skills/qe-contract-testing/scripts/validate-config.json +0 -42
  445. package/assets/skills/qe-security-compliance/SKILL.md +0 -261
  446. package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +0 -595
  447. package/assets/skills/qe-security-compliance/schemas/output.json +0 -498
  448. package/assets/skills/qe-security-compliance/scripts/validate-config.json +0 -41
@@ -0,0 +1,625 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Validation Pipeline Helper
4
+ *
5
+ * Runs structured validation pipelines against documents with sequential
6
+ * step execution, gate enforcement, per-step scoring, and weighted rollup.
7
+ *
8
+ * Usage:
9
+ * node validation-pipeline.cjs <pipeline> <file> [options]
10
+ * node validation-pipeline.cjs requirements docs/requirements.md
11
+ * node validation-pipeline.cjs requirements docs/requirements.md --steps format-check,completeness-check
12
+ * node validation-pipeline.cjs requirements docs/requirements.md --continue-on-failure --json
13
+ */
14
+ 'use strict';
15
+
16
+ const fs = require('fs');
17
+ const path = require('path');
18
+
19
+ // ---------------------------------------------------------------------------
20
+ // Types (documented in SKILL.md output schema)
21
+ // ---------------------------------------------------------------------------
22
+
23
+ /**
24
+ * @typedef {'pass'|'fail'|'warn'} Status
25
+ * @typedef {'blocking'|'warning'|'info'} Severity
26
+ * @typedef {'format'|'content'|'quality'|'traceability'|'compliance'} Category
27
+ *
28
+ * @typedef {Object} Finding
29
+ * @property {'HIGH'|'MEDIUM'|'LOW'|'INFO'} level
30
+ * @property {string} message
31
+ * @property {string} [evidence]
32
+ * @property {string} stepId
33
+ *
34
+ * @typedef {Object} StepResult
35
+ * @property {string} id
36
+ * @property {string} name
37
+ * @property {Category} category
38
+ * @property {Severity} severity
39
+ * @property {Status} status
40
+ * @property {number} score
41
+ * @property {Finding[]} findings
42
+ * @property {number} durationMs
43
+ *
44
+ * @typedef {Object} PipelineResult
45
+ * @property {string} pipelineId
46
+ * @property {string} pipelineName
47
+ * @property {Status} overall
48
+ * @property {number} score
49
+ * @property {StepResult[]} steps
50
+ * @property {Finding[]} blockers
51
+ * @property {boolean} halted
52
+ * @property {string} [haltedAt]
53
+ * @property {number} totalDuration
54
+ * @property {string} timestamp
55
+ */
56
+
57
+ // ---------------------------------------------------------------------------
58
+ // Category weights (from SKILL.md)
59
+ // ---------------------------------------------------------------------------
60
+
61
+ const CATEGORY_WEIGHTS = {
62
+ format: 0.10,
63
+ content: 0.30,
64
+ quality: 0.25,
65
+ traceability: 0.20,
66
+ compliance: 0.15,
67
+ };
68
+
69
+ // ---------------------------------------------------------------------------
70
+ // Requirements pipeline — 13 steps
71
+ // ---------------------------------------------------------------------------
72
+
73
+ /** @type {Array<{id: string, name: string, category: Category, severity: Severity, check: (content: string, prior: StepResult[]) => {score: number, findings: Finding[]}}>} */
74
+ const REQUIREMENTS_STEPS = [
75
+ {
76
+ id: 'format-check',
77
+ name: 'Format Check',
78
+ category: 'format',
79
+ severity: 'blocking',
80
+ check(content, _prior) {
81
+ const findings = [];
82
+ const lines = content.split('\n');
83
+ const headings = lines.filter(l => /^#{1,3}\s/.test(l));
84
+
85
+ if (lines.length < 10) {
86
+ findings.push({ level: 'HIGH', message: 'Document too short (< 10 lines)', stepId: 'format-check' });
87
+ }
88
+ if (headings.length === 0) {
89
+ findings.push({ level: 'HIGH', message: 'No headings found — missing required sections', stepId: 'format-check' });
90
+ }
91
+ const score = findings.length === 0 ? 100 : Math.max(0, 100 - findings.length * 40);
92
+ return { score, findings };
93
+ },
94
+ },
95
+ {
96
+ id: 'completeness-check',
97
+ name: 'Completeness Check',
98
+ category: 'content',
99
+ severity: 'blocking',
100
+ check(content, _prior) {
101
+ const findings = [];
102
+ const lower = content.toLowerCase();
103
+
104
+ const requiredSections = ['acceptance criteria', 'requirements', 'user stor'];
105
+ const found = requiredSections.filter(s => lower.includes(s));
106
+ if (found.length === 0) {
107
+ findings.push({ level: 'HIGH', message: 'No acceptance criteria or requirements section found', stepId: 'completeness-check' });
108
+ }
109
+
110
+ // Check for empty sections (heading followed immediately by another heading)
111
+ const lines = content.split('\n');
112
+ for (let i = 0; i < lines.length - 1; i++) {
113
+ if (/^#{1,3}\s/.test(lines[i]) && /^#{1,3}\s/.test(lines[i + 1])) {
114
+ findings.push({ level: 'MEDIUM', message: `Empty section: ${lines[i].trim()}`, stepId: 'completeness-check' });
115
+ }
116
+ }
117
+
118
+ const score = findings.length === 0 ? 100 : Math.max(0, 100 - findings.filter(f => f.level === 'HIGH').length * 40 - findings.filter(f => f.level === 'MEDIUM').length * 10);
119
+ return { score, findings };
120
+ },
121
+ },
122
+ {
123
+ id: 'invest-criteria',
124
+ name: 'INVEST Criteria',
125
+ category: 'quality',
126
+ severity: 'warning',
127
+ check(content, _prior) {
128
+ const findings = [];
129
+ const lower = content.toLowerCase();
130
+
131
+ // Check for signs of INVEST qualities
132
+ const checks = [
133
+ { name: 'Independent', pattern: /depend(s|ent|ency)/i, inverse: true, msg: 'Requirements may have undeclared dependencies' },
134
+ { name: 'Testable', pattern: /test|verif|assert|expect/i, inverse: false, msg: 'No testability indicators found' },
135
+ { name: 'Small', heuristic: () => content.length > 20000, msg: 'Document is very large — requirements may not be small enough' },
136
+ ];
137
+
138
+ let issues = 0;
139
+ for (const c of checks) {
140
+ if (c.heuristic) {
141
+ if (c.heuristic()) { findings.push({ level: 'MEDIUM', message: c.msg, stepId: 'invest-criteria' }); issues++; }
142
+ } else if (c.inverse ? c.pattern.test(lower) : !c.pattern.test(lower)) {
143
+ findings.push({ level: 'MEDIUM', message: c.msg, stepId: 'invest-criteria' }); issues++;
144
+ }
145
+ }
146
+
147
+ const score = Math.max(0, 100 - issues * 20);
148
+ return { score, findings };
149
+ },
150
+ },
151
+ {
152
+ id: 'smart-acceptance',
153
+ name: 'SMART Acceptance Criteria',
154
+ category: 'quality',
155
+ severity: 'warning',
156
+ check(content, _prior) {
157
+ const findings = [];
158
+
159
+ // Look for acceptance criteria sections
160
+ const acMatch = content.match(/acceptance criteria[\s\S]*?(?=\n#{1,3}\s|$)/i);
161
+ if (!acMatch) {
162
+ findings.push({ level: 'MEDIUM', message: 'No acceptance criteria section found for SMART evaluation', stepId: 'smart-acceptance' });
163
+ return { score: 50, findings };
164
+ }
165
+
166
+ const ac = acMatch[0];
167
+ if (!/\d/.test(ac)) {
168
+ findings.push({ level: 'MEDIUM', message: 'Acceptance criteria lack measurable values (no numbers found)', stepId: 'smart-acceptance' });
169
+ }
170
+ if (!/when|given|then|if/i.test(ac)) {
171
+ findings.push({ level: 'LOW', message: 'Acceptance criteria lack specific conditions (no when/given/then)', stepId: 'smart-acceptance' });
172
+ }
173
+
174
+ const score = Math.max(0, 100 - findings.length * 25);
175
+ return { score, findings };
176
+ },
177
+ },
178
+ {
179
+ id: 'testability-score',
180
+ name: 'Testability Score',
181
+ category: 'quality',
182
+ severity: 'warning',
183
+ check(content, _prior) {
184
+ const findings = [];
185
+
186
+ // Count requirements-like statements
187
+ const reqs = content.match(/shall|must|should|will/gi) || [];
188
+ const testable = content.match(/test|verify|assert|expect|check|validate|confirm/gi) || [];
189
+
190
+ if (reqs.length > 0 && testable.length === 0) {
191
+ findings.push({ level: 'MEDIUM', message: `${reqs.length} requirement statements but no testability language found`, stepId: 'testability-score' });
192
+ }
193
+
194
+ const ratio = reqs.length > 0 ? testable.length / reqs.length : 1;
195
+ const score = Math.min(100, Math.round(ratio * 100));
196
+ return { score, findings };
197
+ },
198
+ },
199
+ {
200
+ id: 'vague-term-detection',
201
+ name: 'Vague Term Detection',
202
+ category: 'content',
203
+ severity: 'info',
204
+ check(content, _prior) {
205
+ const findings = [];
206
+ const vagueTerms = ['should', 'might', 'various', 'etc', 'some', 'many', 'few', 'often', 'usually', 'approximately', 'fairly', 'quite'];
207
+
208
+ for (const term of vagueTerms) {
209
+ const regex = new RegExp(`\\b${term}\\b`, 'gi');
210
+ const matches = content.match(regex);
211
+ if (matches && matches.length > 2) {
212
+ findings.push({ level: 'LOW', message: `Vague term "${term}" used ${matches.length} times`, stepId: 'vague-term-detection' });
213
+ }
214
+ }
215
+
216
+ const score = Math.max(0, 100 - findings.length * 10);
217
+ return { score, findings };
218
+ },
219
+ },
220
+ {
221
+ id: 'information-density',
222
+ name: 'Information Density',
223
+ category: 'content',
224
+ severity: 'info',
225
+ check(content, _prior) {
226
+ const findings = [];
227
+ const sentences = content.split(/[.!?]+/).filter(s => s.trim().length > 0);
228
+
229
+ // Detect filler sentences (very short or very generic)
230
+ let fillerCount = 0;
231
+ for (const s of sentences) {
232
+ const words = s.trim().split(/\s+/);
233
+ if (words.length <= 3 && !/^#{1,3}/.test(s.trim())) {
234
+ fillerCount++;
235
+ }
236
+ }
237
+
238
+ if (fillerCount > sentences.length * 0.2) {
239
+ findings.push({ level: 'LOW', message: `${fillerCount}/${sentences.length} sentences appear to be filler (≤3 words)`, stepId: 'information-density' });
240
+ }
241
+
242
+ const ratio = sentences.length > 0 ? 1 - fillerCount / sentences.length : 1;
243
+ const score = Math.round(ratio * 100);
244
+ return { score, findings };
245
+ },
246
+ },
247
+ {
248
+ id: 'traceability-check',
249
+ name: 'Traceability Check',
250
+ category: 'traceability',
251
+ severity: 'warning',
252
+ check(content, _prior) {
253
+ const findings = [];
254
+
255
+ // Look for requirement IDs (REQ-xxx, US-xxx, FR-xxx, etc.)
256
+ const reqIds = content.match(/\b(REQ|US|FR|NFR|UC|TC|TS)-\d+/g) || [];
257
+ if (reqIds.length === 0) {
258
+ findings.push({ level: 'MEDIUM', message: 'No requirement IDs found (e.g., REQ-001, US-101) — traceability not possible', stepId: 'traceability-check' });
259
+ }
260
+
261
+ // Check for test references
262
+ const testRefs = content.match(/\b(TC|TS|TEST)-\d+/g) || [];
263
+ if (reqIds.length > 0 && testRefs.length === 0) {
264
+ findings.push({ level: 'LOW', message: `${reqIds.length} requirement IDs found but no test case references`, stepId: 'traceability-check' });
265
+ }
266
+
267
+ const score = reqIds.length > 0 ? (testRefs.length > 0 ? 100 : 60) : 30;
268
+ return { score, findings };
269
+ },
270
+ },
271
+ {
272
+ id: 'implementation-leakage',
273
+ name: 'Implementation Leakage',
274
+ category: 'quality',
275
+ severity: 'warning',
276
+ check(content, _prior) {
277
+ const findings = [];
278
+ const implTerms = [
279
+ { term: 'database', pattern: /\b(MySQL|PostgreSQL|MongoDB|Redis|SQLite|DynamoDB)\b/gi },
280
+ { term: 'framework', pattern: /\b(React|Angular|Vue|Express|Django|Rails|Spring)\b/gi },
281
+ { term: 'language', pattern: /\b(use Java|use Python|use TypeScript|implement in|code in)\b/gi },
282
+ { term: 'API detail', pattern: /\b(REST endpoint|GraphQL mutation|POST \/api\/|GET \/api\/)\b/gi },
283
+ ];
284
+
285
+ for (const { term, pattern } of implTerms) {
286
+ const matches = content.match(pattern);
287
+ if (matches) {
288
+ findings.push({ level: 'MEDIUM', message: `Implementation leakage (${term}): "${matches[0]}" — requirements should not prescribe implementation`, stepId: 'implementation-leakage' });
289
+ }
290
+ }
291
+
292
+ const score = Math.max(0, 100 - findings.length * 20);
293
+ return { score, findings };
294
+ },
295
+ },
296
+ {
297
+ id: 'domain-compliance',
298
+ name: 'Domain Compliance',
299
+ category: 'compliance',
300
+ severity: 'info',
301
+ check(content, _prior) {
302
+ const findings = [];
303
+
304
+ // Basic check: document uses consistent terminology
305
+ const terms = new Map();
306
+ const words = content.match(/\b[A-Z][a-z]+(?:\s[A-Z][a-z]+)*\b/g) || [];
307
+ for (const w of words) {
308
+ terms.set(w, (terms.get(w) || 0) + 1);
309
+ }
310
+
311
+ // Flag terms that appear only once (potential inconsistency)
312
+ const singleUse = [...terms.entries()].filter(([, c]) => c === 1 && terms.size > 10);
313
+ if (singleUse.length > terms.size * 0.5) {
314
+ findings.push({ level: 'INFO', message: `Many terms used only once (${singleUse.length}/${terms.size}) — potential terminology inconsistency`, stepId: 'domain-compliance' });
315
+ }
316
+
317
+ const score = findings.length === 0 ? 100 : 70;
318
+ return { score, findings };
319
+ },
320
+ },
321
+ {
322
+ id: 'dependency-analysis',
323
+ name: 'Dependency Analysis',
324
+ category: 'traceability',
325
+ severity: 'info',
326
+ check(content, _prior) {
327
+ const findings = [];
328
+
329
+ const reqIds = content.match(/\b(REQ|US|FR|NFR|UC)-\d+/g) || [];
330
+ const depKeywords = content.match(/\b(depends on|requires|blocks|blocked by|prerequisite|after)\b/gi) || [];
331
+
332
+ if (reqIds.length > 3 && depKeywords.length === 0) {
333
+ findings.push({ level: 'LOW', message: `${reqIds.length} requirements found but no dependency language — cross-requirement dependencies may be undeclared`, stepId: 'dependency-analysis' });
334
+ }
335
+
336
+ const score = reqIds.length <= 3 ? 100 : (depKeywords.length > 0 ? 100 : 60);
337
+ return { score, findings };
338
+ },
339
+ },
340
+ {
341
+ id: 'bdd-scenario-generation',
342
+ name: 'BDD Scenario Generation',
343
+ category: 'quality',
344
+ severity: 'warning',
345
+ check(content, _prior) {
346
+ const findings = [];
347
+
348
+ // Check if Given/When/Then already present
349
+ const bddPatterns = content.match(/\b(Given|When|Then|And|But)\b/g) || [];
350
+ if (bddPatterns.length > 0) {
351
+ return { score: 100, findings: [] };
352
+ }
353
+
354
+ // Check if requirements are specific enough to derive BDD scenarios
355
+ const actionVerbs = content.match(/\b(click|submit|enter|select|navigate|view|display|send|receive|create|update|delete)\b/gi) || [];
356
+ if (actionVerbs.length === 0) {
357
+ findings.push({ level: 'MEDIUM', message: 'No action verbs found — requirements may be too abstract to generate BDD scenarios', stepId: 'bdd-scenario-generation' });
358
+ }
359
+
360
+ const score = actionVerbs.length > 0 ? 80 : 40;
361
+ return { score, findings };
362
+ },
363
+ },
364
+ {
365
+ id: 'holistic-quality',
366
+ name: 'Holistic Quality',
367
+ category: 'compliance',
368
+ severity: 'blocking',
369
+ check(content, prior) {
370
+ const findings = [];
371
+
372
+ // Aggregate signals from prior steps
373
+ const failedSteps = prior.filter(s => s.status === 'fail');
374
+ const avgScore = prior.length > 0 ? prior.reduce((sum, s) => sum + s.score, 0) / prior.length : 0;
375
+
376
+ if (failedSteps.length > 3) {
377
+ findings.push({ level: 'HIGH', message: `${failedSteps.length} steps failed — document has systemic quality issues`, stepId: 'holistic-quality' });
378
+ }
379
+
380
+ if (avgScore < 50) {
381
+ findings.push({ level: 'HIGH', message: `Average step score is ${avgScore.toFixed(0)}/100 — document needs significant revision`, stepId: 'holistic-quality' });
382
+ }
383
+
384
+ // Check for contradictions (very basic: negation near requirement terms)
385
+ const contradictions = content.match(/\bnot\b.{0,30}\b(shall|must|will)\b/gi) || [];
386
+ if (contradictions.length > 2) {
387
+ findings.push({ level: 'MEDIUM', message: `${contradictions.length} potential contradictions found (negation near requirement terms)`, stepId: 'holistic-quality' });
388
+ }
389
+
390
+ const score = Math.max(0, 100 - failedSteps.length * 15 - findings.length * 10);
391
+ return { score, findings };
392
+ },
393
+ },
394
+ ];
395
+
396
+ // ---------------------------------------------------------------------------
397
+ // Pipeline registry
398
+ // ---------------------------------------------------------------------------
399
+
400
+ const PIPELINES = {
401
+ requirements: { name: 'Requirements Pipeline', steps: REQUIREMENTS_STEPS },
402
+ };
403
+
404
+ // ---------------------------------------------------------------------------
405
+ // Pipeline runner
406
+ // ---------------------------------------------------------------------------
407
+
408
+ /**
409
+ * @param {string} pipelineName
410
+ * @param {string} content
411
+ * @param {Object} options
412
+ * @param {string[]} [options.steps]
413
+ * @param {boolean} [options.continueOnFailure]
414
+ * @returns {PipelineResult}
415
+ */
416
+ function runPipeline(pipelineName, content, options = {}) {
417
+ const pipeline = PIPELINES[pipelineName];
418
+ if (!pipeline) {
419
+ return {
420
+ pipelineId: `${pipelineName}-${Date.now()}`,
421
+ pipelineName: pipelineName,
422
+ overall: 'fail',
423
+ score: 0,
424
+ steps: [],
425
+ blockers: [{ level: 'HIGH', message: `Unknown pipeline: ${pipelineName}. Available: ${Object.keys(PIPELINES).join(', ')}`, stepId: 'pipeline-runner' }],
426
+ halted: true,
427
+ haltedAt: 'pipeline-runner',
428
+ totalDuration: 0,
429
+ timestamp: new Date().toISOString(),
430
+ };
431
+ }
432
+
433
+ let steps = pipeline.steps;
434
+ if (options.steps && options.steps.length > 0) {
435
+ steps = steps.filter(s => options.steps.includes(s.id));
436
+ }
437
+
438
+ const startTime = Date.now();
439
+ /** @type {StepResult[]} */
440
+ const results = [];
441
+ let halted = false;
442
+ let haltedAt = undefined;
443
+
444
+ for (const step of steps) {
445
+ const stepStart = Date.now();
446
+ let score = 0;
447
+ let findings = [];
448
+ let status = 'pass';
449
+
450
+ try {
451
+ const result = step.check(content, results);
452
+ score = result.score;
453
+ findings = result.findings;
454
+
455
+ if (score < 50) status = 'fail';
456
+ else if (score < 80) status = 'warn';
457
+ else status = 'pass';
458
+ } catch (err) {
459
+ status = 'fail';
460
+ score = 0;
461
+ findings = [{ level: 'HIGH', message: `Step threw exception: ${err.message}`, stepId: step.id }];
462
+ }
463
+
464
+ results.push({
465
+ id: step.id,
466
+ name: step.name,
467
+ category: step.category,
468
+ severity: step.severity,
469
+ status,
470
+ score,
471
+ findings,
472
+ durationMs: Date.now() - stepStart,
473
+ });
474
+
475
+ // Gate enforcement
476
+ if (status === 'fail' && step.severity === 'blocking' && !options.continueOnFailure) {
477
+ halted = true;
478
+ haltedAt = step.id;
479
+ break;
480
+ }
481
+ }
482
+
483
+ // Weighted rollup by category
484
+ const categoryScores = {};
485
+ const categoryCounts = {};
486
+ for (const r of results) {
487
+ categoryScores[r.category] = (categoryScores[r.category] || 0) + r.score;
488
+ categoryCounts[r.category] = (categoryCounts[r.category] || 0) + 1;
489
+ }
490
+
491
+ let weightedScore = 0;
492
+ let totalWeight = 0;
493
+ for (const [cat, weight] of Object.entries(CATEGORY_WEIGHTS)) {
494
+ if (categoryCounts[cat]) {
495
+ weightedScore += weight * (categoryScores[cat] / categoryCounts[cat]);
496
+ totalWeight += weight;
497
+ }
498
+ }
499
+ const finalScore = totalWeight > 0 ? Math.round(weightedScore / totalWeight * 100) / 100 : 0;
500
+
501
+ const blockers = results.flatMap(r => r.findings.filter(f => f.level === 'HIGH'));
502
+ const hasBlocker = results.some(r => r.status === 'fail' && r.severity === 'blocking');
503
+
504
+ let overall = 'pass';
505
+ if (hasBlocker || halted) overall = 'fail';
506
+ else if (finalScore < 80) overall = 'warn';
507
+
508
+ return {
509
+ pipelineId: `${pipelineName}-${Date.now()}`,
510
+ pipelineName: pipeline.name,
511
+ overall,
512
+ score: Math.round(finalScore),
513
+ steps: results,
514
+ blockers,
515
+ halted,
516
+ haltedAt,
517
+ totalDuration: Date.now() - startTime,
518
+ timestamp: new Date().toISOString(),
519
+ };
520
+ }
521
+
522
+ // ---------------------------------------------------------------------------
523
+ // Output formatters
524
+ // ---------------------------------------------------------------------------
525
+
526
+ function formatMarkdown(result) {
527
+ const lines = [];
528
+ lines.push(`# Validation Report: ${result.pipelineName}`);
529
+ lines.push('');
530
+ lines.push(`**Overall**: ${result.overall.toUpperCase()} | **Score**: ${result.score}/100 | **Duration**: ${result.totalDuration}ms`);
531
+ if (result.halted) {
532
+ lines.push(`**HALTED** at step: ${result.haltedAt}`);
533
+ }
534
+ lines.push('');
535
+ lines.push('## Step Results');
536
+ lines.push('| # | Step | Status | Score | Findings | Duration |');
537
+ lines.push('|---|------|--------|-------|----------|----------|');
538
+
539
+ result.steps.forEach((s, i) => {
540
+ const statusIcon = s.status === 'pass' ? 'PASS' : s.status === 'warn' ? 'WARN' : 'FAIL';
541
+ lines.push(`| ${i + 1} | ${s.name} | ${statusIcon} | ${s.score} | ${s.findings.length} | ${s.durationMs}ms |`);
542
+ });
543
+
544
+ if (result.blockers.length > 0) {
545
+ lines.push('');
546
+ lines.push('## Blockers');
547
+ for (const b of result.blockers) {
548
+ lines.push(`- [${b.level}] ${b.message}`);
549
+ }
550
+ }
551
+
552
+ const allFindings = result.steps.flatMap(s => s.findings);
553
+ if (allFindings.length > 0) {
554
+ lines.push('');
555
+ lines.push('## All Findings');
556
+ for (const f of allFindings) {
557
+ lines.push(`- [${f.level}] ${f.message}`);
558
+ }
559
+ }
560
+
561
+ return lines.join('\n');
562
+ }
563
+
564
+ // ---------------------------------------------------------------------------
565
+ // CLI
566
+ // ---------------------------------------------------------------------------
567
+
568
+ function main() {
569
+ const args = process.argv.slice(2);
570
+
571
+ if (args.length < 2 || args.includes('--help') || args.includes('-h')) {
572
+ console.log('Usage: node validation-pipeline.cjs <pipeline> <file> [options]');
573
+ console.log('');
574
+ console.log('Pipelines: ' + Object.keys(PIPELINES).join(', '));
575
+ console.log('');
576
+ console.log('Options:');
577
+ console.log(' --steps <id,id,...> Run specific steps only');
578
+ console.log(' --continue-on-failure Skip blocking gates');
579
+ console.log(' --json Output as JSON');
580
+ console.log(' --help Show this help');
581
+ process.exit(0);
582
+ }
583
+
584
+ const pipelineName = args[0];
585
+ const filePath = args[1];
586
+
587
+ // Parse options
588
+ const stepFilter = args.includes('--steps') ? args[args.indexOf('--steps') + 1].split(',') : null;
589
+ const continueOnFailure = args.includes('--continue-on-failure');
590
+ const jsonOutput = args.includes('--json');
591
+
592
+ // Read file
593
+ const resolvedPath = path.resolve(filePath);
594
+ if (!fs.existsSync(resolvedPath)) {
595
+ const err = { error: `File not found: ${resolvedPath}` };
596
+ if (jsonOutput) { console.log(JSON.stringify(err)); } else { console.error(err.error); }
597
+ process.exit(1);
598
+ }
599
+
600
+ const content = fs.readFileSync(resolvedPath, 'utf-8');
601
+ if (content.trim().length === 0) {
602
+ const err = { error: 'File is empty' };
603
+ if (jsonOutput) { console.log(JSON.stringify(err)); } else { console.error(err.error); }
604
+ process.exit(1);
605
+ }
606
+
607
+ // Run pipeline
608
+ const options = { continueOnFailure };
609
+ if (stepFilter) options.steps = stepFilter;
610
+
611
+ const result = runPipeline(pipelineName, content, options);
612
+
613
+ if (jsonOutput) {
614
+ console.log(JSON.stringify(result, null, 2));
615
+ } else {
616
+ console.log(formatMarkdown(result));
617
+ }
618
+
619
+ // Exit code: 0=pass, 1=fail, 2=warn
620
+ if (result.overall === 'fail') process.exit(1);
621
+ if (result.overall === 'warn') process.exit(2);
622
+ process.exit(0);
623
+ }
624
+
625
+ main();
@@ -4,9 +4,9 @@ This directory contains Quality Engineering skills managed by Agentic QE.
4
4
 
5
5
  ## Summary
6
6
 
7
- - **Total QE Skills**: 77
7
+ - **Total QE Skills**: 84
8
8
  - **V2 Methodology Skills**: 62
9
- - **V3 Domain Skills**: 15
9
+ - **V3 Domain Skills**: 23
10
10
  - **Platform Skills**: 30 (Claude Flow managed)
11
11
  - **Validation Infrastructure**: ✅ Installed
12
12
 
@@ -80,26 +80,48 @@ Version-agnostic quality engineering best practices from the QE community.
80
80
  - **wms-testing-patterns**: Warehouse Management System testing patterns for inventory operations, pick/pack/ship workflows, wave management, EDI X12/EDIFACT compliance, RF/barcode scanning, and WMS-ERP integration. Use when testing WMS platforms (Blue Yonder, Manhattan, SAP EWM).
81
81
  - **xp-practices**: Apply XP practices including pair programming, ensemble programming, continuous integration, and sustainable pace. Use when implementing agile development practices, improving team collaboration, or adopting technical excellence practices.
82
82
 
83
- ## V3 Domain Skills (15)
83
+ ## V3 Domain Skills (23)
84
84
 
85
- V3-specific implementation guides for the 12 DDD bounded contexts.
85
+ V3-specific implementation guides for the 12 DDD bounded contexts plus on-demand hooks, investigation runbooks, and measurement tools.
86
86
 
87
- - **aqe-v2-v3-migration**: Migrate Agentic QE projects from v2 to v3 with zero data loss
88
87
  - **pentest-validation**: Orchestrate security finding validation through graduated exploitation. 4-phase pipeline: recon (SAST/DAST), analysis (code review), validation (exploit proof), report (No Exploit, No Report gate). Eliminates false positives by proving exploitability.
89
88
  - **qe-chaos-resilience**: Chaos engineering and resilience testing including fault injection, load testing, and system recovery validation.
90
89
  - **qe-code-intelligence**: Knowledge graph-based code understanding with semantic search and 80% token reduction through intelligent context retrieval.
91
- - **qe-contract-testing**: Consumer-driven contract testing for APIs including REST, GraphQL, and event-driven systems with schema validation.
92
90
  - **qe-coverage-analysis**: O(log n) sublinear coverage gap detection with risk-weighted analysis and intelligent test prioritization.
93
91
  - **qe-defect-intelligence**: AI-powered defect prediction, pattern learning, and root cause analysis for proactive quality management.
94
92
  - **qe-iterative-loop**: Quality Engineering iteration loops for autonomous test improvement, coverage achievement, and quality gate compliance. Use when tests need to pass, coverage targets must be met, quality gates require compliance, or flaky tests need stabilization. Integrates with AQE v3 fleet agents for coordinated quality iteration.
95
93
  - **qe-learning-optimization**: Transfer learning, metrics optimization, and continuous improvement for AI-powered QE agents.
96
94
  - **qe-quality-assessment**: Comprehensive quality gates, metrics analysis, and deployment readiness assessment for continuous quality assurance.
97
95
  - **qe-requirements-validation**: Requirements traceability, acceptance criteria validation, and BDD scenario management for complete requirements coverage.
98
- - **qe-security-compliance**: Security auditing, vulnerability scanning, and compliance validation for OWASP, SOC2, GDPR, and other standards.
99
96
  - **qe-test-execution**: Parallel test execution orchestration with intelligent scheduling, retry logic, and comprehensive result aggregation.
100
97
  - **qe-test-generation**: AI-powered test generation using pattern recognition, code analysis, and intelligent test synthesis for comprehensive test coverage.
101
98
  - **qe-visual-accessibility**: Visual regression testing, responsive design validation, and WCAG accessibility compliance testing.
102
99
 
100
+ ### On-Demand Hooks
101
+
102
+ - **strict-tdd**: Enforces strict TDD red-green-refactor discipline. Blocks code changes that lack a failing test first.
103
+ - **no-skip**: Prevents use of .skip, .only, or xdescribe in test files. Ensures all tests are active.
104
+ - **coverage-guard**: Blocks merges when coverage drops below configured thresholds. Enforces coverage-only-goes-up policy.
105
+ - **freeze-tests**: Locks the test suite during stabilization periods. Prevents new test additions or modifications.
106
+ - **security-watch**: Scans code changes for security anti-patterns (hardcoded secrets, SQL injection, etc.) on every commit.
107
+
108
+ ### Runbook Skills
109
+
110
+ - **test-failure-investigator**: Automated runbook for investigating test failures. Gathers logs, diffs, recent changes, and flaky-test history to diagnose root cause.
111
+ - **coverage-drop-investigator**: Automated runbook for diagnosing coverage drops. Identifies uncovered lines, maps to recent commits, and suggests targeted tests.
112
+
113
+ ### Product Verification
114
+
115
+ - **e2e-flow-verifier**: End-to-end user flow verification against acceptance criteria. Validates critical paths through the application match expected behavior.
116
+
117
+ ### Data & Analysis
118
+
119
+ - **test-metrics-dashboard**: Aggregates test results, coverage trends, flaky-test rates, and execution times into a unified dashboard view.
120
+
121
+ ### Measurement
122
+
123
+ - **skill-stats**: Measures skill usage frequency, success rates, and token costs. Provides data for skill portfolio optimization.
124
+
103
125
  ## Platform Skills (30)
104
126
 
105
127
  Claude Flow platform skills (managed separately).