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
@@ -22719,6 +22719,7 @@ import {
22719
22719
  existsSync as existsSync30,
22720
22720
  mkdirSync as mkdirSync13,
22721
22721
  readdirSync as readdirSync13,
22722
+ readFileSync as readFileSync22,
22722
22723
  writeFileSync as writeFileSync11,
22723
22724
  copyFileSync as copyFileSync7
22724
22725
  } from "fs";
@@ -22753,23 +22754,56 @@ var init_opencode_installer = __esm({
22753
22754
  // Source Directory Detection
22754
22755
  // ==========================================================================
22755
22756
  /**
22756
- * Find the source .opencode/ directory
22757
+ * Find the source .opencode/ directory containing agents/skills/tools to install.
22758
+ * Resolves relative to the package installation directory (not CWD) so that
22759
+ * globally-installed and bundled CLI paths all work correctly (#361).
22757
22760
  */
22758
22761
  findSourceDir() {
22762
+ const targetDir = join34(this.projectRoot, ".opencode");
22759
22763
  const possiblePaths = [
22760
- // Development: src/init/ or dist/init/ -> project root
22764
+ // From dist/init/ or src/init/ package root .opencode/
22761
22765
  join34(__dirname3, "../../.opencode"),
22762
- // From project root (CWD)
22763
- join34(process.cwd(), ".opencode"),
22764
- // NPM package location
22765
- join34(__dirname3, "../../assets/opencode")
22766
- ];
22766
+ // From dist/cli/ (bundle) → package root .opencode/
22767
+ join34(__dirname3, "../.opencode"),
22768
+ // require.resolve fallback: find the package root via its package.json
22769
+ this.resolveViaPackageJson()
22770
+ ].filter((p74) => p74 !== null);
22767
22771
  for (const path38 of possiblePaths) {
22768
- if (existsSync30(path38)) {
22772
+ if (path38 === targetDir) continue;
22773
+ if (this.isValidSourceDir(path38)) {
22769
22774
  return path38;
22770
22775
  }
22771
22776
  }
22772
- return join34(process.cwd(), ".opencode");
22777
+ return possiblePaths[0] ?? join34(__dirname3, "../../.opencode");
22778
+ }
22779
+ /**
22780
+ * Try to find the package root via require.resolve on our own package.json,
22781
+ * then return <root>/.opencode. Returns null if resolution fails.
22782
+ */
22783
+ resolveViaPackageJson() {
22784
+ try {
22785
+ let dir = __dirname3;
22786
+ for (let i58 = 0; i58 < 5; i58++) {
22787
+ const pkgPath = join34(dir, "package.json");
22788
+ if (existsSync30(pkgPath)) {
22789
+ const pkg = JSON.parse(readFileSync22(pkgPath, "utf-8"));
22790
+ if (pkg.name === "agentic-qe") {
22791
+ return join34(dir, ".opencode");
22792
+ }
22793
+ }
22794
+ dir = dirname9(dir);
22795
+ }
22796
+ } catch {
22797
+ }
22798
+ return null;
22799
+ }
22800
+ /**
22801
+ * Check if a directory is a valid source for OpenCode assets
22802
+ * (must exist and contain at least an agents/ or skills/ subdirectory)
22803
+ */
22804
+ isValidSourceDir(dir) {
22805
+ if (!existsSync30(dir)) return false;
22806
+ return existsSync30(join34(dir, "agents")) || existsSync30(join34(dir, "skills"));
22773
22807
  }
22774
22808
  // ==========================================================================
22775
22809
  // Installation
@@ -22948,9 +22982,8 @@ var init_opencode_installer = __esm({
22948
22982
  mcp: {
22949
22983
  "agentic-qe": {
22950
22984
  type: "local",
22951
- command: "npx",
22952
- args: ["agentic-qe", "mcp"],
22953
- env: {
22985
+ command: ["npx", "agentic-qe", "mcp"],
22986
+ environment: {
22954
22987
  AQE_MEMORY_PATH: ".agentic-qe/memory.db",
22955
22988
  AQE_V3_MODE: "true"
22956
22989
  }
@@ -23009,16 +23042,21 @@ var init_kiro_installer = __esm({
23009
23042
  // ==========================================================================
23010
23043
  findOpenCodeDir() {
23011
23044
  const possiblePaths = [
23045
+ // Development: src/init/ or dist/init/ -> project root
23012
23046
  join35(__dirname4, "../../.opencode"),
23013
- join35(process.cwd(), ".opencode"),
23014
- join35(process.cwd(), ".opencode")
23047
+ // NPM package location
23048
+ join35(__dirname4, "../../assets/opencode")
23015
23049
  ];
23016
23050
  for (const p74 of possiblePaths) {
23017
- if (existsSync31(p74)) {
23051
+ if (existsSync31(p74) && (existsSync31(join35(p74, "agents")) || existsSync31(join35(p74, "skills")))) {
23018
23052
  return p74;
23019
23053
  }
23020
23054
  }
23021
- return join35(process.cwd(), ".opencode");
23055
+ const cwdPath = join35(process.cwd(), ".opencode");
23056
+ if (existsSync31(cwdPath) && (existsSync31(join35(cwdPath, "agents")) || existsSync31(join35(cwdPath, "skills")))) {
23057
+ return cwdPath;
23058
+ }
23059
+ return possiblePaths[0];
23022
23060
  }
23023
23061
  // ==========================================================================
23024
23062
  // Installation
@@ -62557,7 +62595,7 @@ var PersistentSONAEngine = class {
62557
62595
  },
62558
62596
  this.config.domain
62559
62597
  );
62560
- const saved = this.loadFisherMatrix(this.config.domain);
62598
+ const saved = this._loadFisherMatrixUnsafe(this.config.domain);
62561
62599
  if (saved) {
62562
62600
  const engine = this.baseEngine.getThreeLoopEngine();
62563
62601
  if (engine) {
@@ -63195,6 +63233,27 @@ var PersistentSONAEngine = class {
63195
63233
  ewcLambda: row.ewc_lambda
63196
63234
  };
63197
63235
  }
63236
+ /**
63237
+ * Internal variant of loadFisherMatrix that skips ensureInitialized().
63238
+ * Used only during _doInitialize() when DB and statements are ready
63239
+ * but this.initialized has not been set yet.
63240
+ */
63241
+ _loadFisherMatrixUnsafe(domain) {
63242
+ const stmt = this.prepared.get("getFisher");
63243
+ if (!stmt) return null;
63244
+ const row = stmt.get(domain);
63245
+ if (!row) return null;
63246
+ return {
63247
+ fisherDiagonal: this.bufferToFloat32(row.fisher_diagonal),
63248
+ optimalParams: this.bufferToFloat32(row.optimal_params),
63249
+ baseWeights: row.base_weights ? this.bufferToFloat32(row.base_weights) : null,
63250
+ dimension: row.dimension,
63251
+ taskBoundaries: row.task_boundaries,
63252
+ consolidationCycles: row.consolidation_cycles,
63253
+ requestCount: row.request_count,
63254
+ ewcLambda: row.ewc_lambda
63255
+ };
63256
+ }
63198
63257
  /**
63199
63258
  * Delete Fisher matrix for a domain.
63200
63259
  *
@@ -122207,8 +122266,9 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122207
122266
  * QESONA (Self-Optimizing Neural Architecture) for pattern learning
122208
122267
  * Provides <0.05ms pattern adaptation via @ruvector/sona
122209
122268
  * Now uses PersistentSONAEngine to survive restarts
122269
+ * Nullable: init may fail (e.g. during `aqe init`) — coordinator degrades gracefully
122210
122270
  */
122211
- sona;
122271
+ sona = null;
122212
122272
  /**
122213
122273
  * DreamScheduler for offline pattern consolidation and insight generation
122214
122274
  * Wraps DreamEngine with automatic scheduling and trigger support
@@ -122220,7 +122280,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122220
122280
  /**
122221
122281
  * Initialize the coordinator.
122222
122282
  * CQ-002: Domain-specific initialization
122223
- * Throws if QESONA fails to initialize.
122283
+ * SONA init failure is non-fatal — coordinator degrades gracefully (#359).
122224
122284
  */
122225
122285
  async onInitialize() {
122226
122286
  try {
@@ -122234,7 +122294,8 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122234
122294
  console.log("[LearningOptimizationCoordinator] PersistentSONAEngine initialized for pattern learning");
122235
122295
  } catch (error) {
122236
122296
  console.error("[LearningOptimizationCoordinator] Failed to initialize PersistentSONAEngine:", error);
122237
- throw error;
122297
+ console.warn("[LearningOptimizationCoordinator] Continuing without SONA pattern persistence");
122298
+ this.sona = null;
122238
122299
  }
122239
122300
  if (this.config.enableDreamScheduler) {
122240
122301
  try {
@@ -122604,6 +122665,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122604
122665
  */
122605
122666
  learnPattern(state3, action, outcome, patternType, domain, metadata) {
122606
122667
  this.ensureInitialized();
122668
+ this.ensureSONAAvailable();
122607
122669
  return this.sona.createPattern(state3, action, outcome, patternType, domain, metadata);
122608
122670
  }
122609
122671
  /**
@@ -122616,6 +122678,16 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122616
122678
  );
122617
122679
  }
122618
122680
  }
122681
+ /**
122682
+ * Ensure SONA engine is available (may be null if init failed gracefully).
122683
+ */
122684
+ ensureSONAAvailable() {
122685
+ if (!this.sona) {
122686
+ throw new Error(
122687
+ "[LearningOptimizationCoordinator] SONA engine is not available. Pattern persistence failed during initialization."
122688
+ );
122689
+ }
122690
+ }
122619
122691
  /**
122620
122692
  * Adapt a pattern based on current context using QESONA.
122621
122693
  * Leverages @ruvector/sona's HNSW-indexed pattern matching for <0.05ms adaptation.
@@ -122628,6 +122700,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122628
122700
  */
122629
122701
  async adaptPattern(state3, patternType, domain) {
122630
122702
  this.ensureInitialized();
122703
+ this.ensureSONAAvailable();
122631
122704
  return this.sona.adaptPattern(state3, patternType, domain);
122632
122705
  }
122633
122706
  /**
@@ -122638,6 +122711,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122638
122711
  */
122639
122712
  getSONAStats() {
122640
122713
  this.ensureInitialized();
122714
+ this.ensureSONAAvailable();
122641
122715
  return this.sona.getStats();
122642
122716
  }
122643
122717
  /**
@@ -122648,6 +122722,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122648
122722
  */
122649
122723
  getSONAPatterns() {
122650
122724
  this.ensureInitialized();
122725
+ this.ensureSONAAvailable();
122651
122726
  return this.sona.getAllPatterns();
122652
122727
  }
122653
122728
  /**
@@ -122659,6 +122734,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122659
122734
  */
122660
122735
  getSONAPatternsByType(type) {
122661
122736
  this.ensureInitialized();
122737
+ this.ensureSONAAvailable();
122662
122738
  return this.sona.getPatternsByType(type);
122663
122739
  }
122664
122740
  /**
@@ -122670,6 +122746,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122670
122746
  */
122671
122747
  getSONAPatternsByDomain(domain) {
122672
122748
  this.ensureInitialized();
122749
+ this.ensureSONAAvailable();
122673
122750
  return this.sona.getPatternsByDomain(domain);
122674
122751
  }
122675
122752
  /**
@@ -122684,6 +122761,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122684
122761
  */
122685
122762
  updateSONAPattern(patternId, success, quality) {
122686
122763
  this.ensureInitialized();
122764
+ this.ensureSONAAvailable();
122687
122765
  return this.sona.updatePattern(patternId, success, quality);
122688
122766
  }
122689
122767
  /**
@@ -122695,6 +122773,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122695
122773
  */
122696
122774
  forceSONALearning() {
122697
122775
  this.ensureInitialized();
122776
+ this.ensureSONAAvailable();
122698
122777
  return this.sona.forceLearn();
122699
122778
  }
122700
122779
  /**
@@ -122703,7 +122782,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122703
122782
  * @returns True if SONA is available
122704
122783
  */
122705
122784
  isSONAAvailable() {
122706
- return this.initialized;
122785
+ return this.initialized && this.sona !== null;
122707
122786
  }
122708
122787
  /**
122709
122788
  * Export all QESONA patterns for persistence or transfer.
@@ -122713,6 +122792,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122713
122792
  */
122714
122793
  exportSONAPatterns() {
122715
122794
  this.ensureInitialized();
122795
+ this.ensureSONAAvailable();
122716
122796
  return this.sona.exportPatterns();
122717
122797
  }
122718
122798
  /**
@@ -122724,6 +122804,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122724
122804
  */
122725
122805
  importSONAPatterns(patterns) {
122726
122806
  this.ensureInitialized();
122807
+ this.ensureSONAAvailable();
122727
122808
  this.sona.importPatterns(patterns);
122728
122809
  }
122729
122810
  /**
@@ -122735,6 +122816,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
122735
122816
  */
122736
122817
  async verifySONAPerformance(iterations = 100) {
122737
122818
  this.ensureInitialized();
122819
+ this.ensureSONAAvailable();
122738
122820
  return this.sona.verifyPerformance(iterations);
122739
122821
  }
122740
122822
  // ============================================================================
@@ -123443,6 +123525,8 @@ var LearningOptimizationPlugin = class extends BaseDomainPlugin {
123443
123525
  */
123444
123526
  getAPI() {
123445
123527
  const api = {
123528
+ // Availability check
123529
+ isSONAAvailable: () => this.coordinator?.isSONAAvailable() ?? false,
123446
123530
  // Coordinator methods
123447
123531
  runLearningCycle: this.runLearningCycle.bind(this),
123448
123532
  optimizeAllStrategies: this.optimizeAllStrategies.bind(this),
@@ -139344,7 +139428,7 @@ var ALL_DOMAINS2 = [
139344
139428
  "enterprise-integration"
139345
139429
  ];
139346
139430
  function getAQEVersion() {
139347
- return true ? "3.8.1" : "3.0.0";
139431
+ return true ? "3.8.3" : "3.0.0";
139348
139432
  }
139349
139433
  function createDefaultConfig(projectName, projectRoot) {
139350
139434
  return {
@@ -140303,7 +140387,7 @@ function generateAqeEnvVars(config) {
140303
140387
  AQE_V3_SUCCESS_RATE_THRESHOLD: String(config.learning?.qualityThreshold ?? 0.7)
140304
140388
  };
140305
140389
  }
140306
- function generateV3SettingsSections(config) {
140390
+ function generateV3SettingsSections(config, projectRoot) {
140307
140391
  const domains = config.domains?.enabled || [];
140308
140392
  return {
140309
140393
  aqe: {
@@ -140313,21 +140397,20 @@ function generateV3SettingsSections(config) {
140313
140397
  },
140314
140398
  statusLine: {
140315
140399
  type: "command",
140316
- command: 'node "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.claude/helpers/statusline-v3.cjs" 2>/dev/null || echo "\u258A Agentic QE v3"',
140400
+ command: 'node .claude/helpers/statusline-v3.cjs 2>/dev/null || echo "\u258A Agentic QE v3"',
140317
140401
  refreshMs: 5e3,
140318
140402
  enabled: true
140319
140403
  },
140320
- permissions: {
140321
- allow: [
140322
- "Bash(npx claude-flow:*)",
140323
- "Bash(npx @claude-flow/cli:*)",
140324
- "mcp__claude-flow__:*",
140325
- "mcp__agentic-qe__*"
140326
- ],
140327
- deny: [
140328
- "Bash(rm -rf /)"
140329
- ]
140330
- },
140404
+ // permissions are union-merged in 07-hooks.ts — not set here to avoid overwriting user entries (#362)
140405
+ _aqePermissions: [
140406
+ "Bash(npx ruflo:*)",
140407
+ "Bash(npx @ruflo/cli:*)",
140408
+ "Bash(npx claude-flow:*)",
140409
+ "Bash(npx @claude-flow/cli:*)",
140410
+ "mcp__ruflo__:*",
140411
+ "mcp__claude-flow__:*",
140412
+ "mcp__agentic-qe__*"
140413
+ ],
140331
140414
  includeCoAuthoredBy: true,
140332
140415
  v3Configuration: {
140333
140416
  domains: {
@@ -140499,7 +140582,7 @@ async function configureHooks(projectRoot, config) {
140499
140582
  ...existingEnv,
140500
140583
  ...generateAqeEnvVars(config)
140501
140584
  };
140502
- const v3Sections = generateV3SettingsSections(config);
140585
+ const v3Sections = generateV3SettingsSections(config, projectRoot);
140503
140586
  for (const [key, value] of Object.entries(v3Sections)) {
140504
140587
  settings[key] = value;
140505
140588
  }
@@ -140803,7 +140886,7 @@ Task({ prompt: "Run security audit", subagent_type: "qe-security-scanner", run_i
140803
140886
 
140804
140887
  \`\`\`javascript
140805
140888
  // STEP 1: Initialize Claude Flow swarm for coordination
140806
- Bash("npx @claude-flow/cli@latest swarm init --topology hierarchical --max-agents 15")
140889
+ Bash("npx ruflo swarm init --topology hierarchical --max-agents 15")
140807
140890
 
140808
140891
  // STEP 2: Initialize AQE Fleet for QE-specific work
140809
140892
  mcp__agentic-qe__fleet_init({
@@ -140816,7 +140899,7 @@ Task({ prompt: "Analyze coverage gaps", subagent_type: "qe-coverage-specialist",
140816
140899
 
140817
140900
  // STEP 4: Store learnings in both systems
140818
140901
  mcp__agentic-qe__memory_store({ key: "pattern-1", value: "...", namespace: "qe-patterns", persist: true })
140819
- Bash("npx @claude-flow/cli@latest memory store --key 'qe-pattern-1' --value '...' --namespace patterns")
140902
+ Bash("npx ruflo memory store --key 'qe-pattern-1' --value '...' --namespace patterns")
140820
140903
  \`\`\`
140821
140904
 
140822
140905
  ### Data Storage
@@ -140863,11 +140946,11 @@ import { join as join27, dirname as dirname8 } from "path";
140863
140946
 
140864
140947
  // src/init/skills-installer.ts
140865
140948
  init_error_utils();
140866
- import { existsSync as existsSync19, mkdirSync as mkdirSync6, readdirSync as readdirSync9, statSync as statSync5, readFileSync as readFileSync16, writeFileSync as writeFileSync4, copyFileSync as copyFileSync4 } from "fs";
140949
+ import { existsSync as existsSync19, mkdirSync as mkdirSync6, readdirSync as readdirSync9, statSync as statSync5, readFileSync as readFileSync16, writeFileSync as writeFileSync4, copyFileSync as copyFileSync4, unlinkSync as unlinkSync4, rmdirSync as rmdirSync2 } from "fs";
140867
140950
  import { join as join23, dirname as dirname5 } from "path";
140868
140951
  import { fileURLToPath } from "url";
140869
140952
  var V3_DOMAIN_SKILLS = [
140870
- // 12 DDD bounded context skills
140953
+ // 10 DDD bounded context skills (qe-security-compliance merged into security-testing, qe-contract-testing merged into contract-testing)
140871
140954
  "qe-test-generation",
140872
140955
  // AI-powered test synthesis
140873
140956
  "qe-test-execution",
@@ -140882,12 +140965,8 @@ var V3_DOMAIN_SKILLS = [
140882
140965
  // BDD scenarios, acceptance criteria
140883
140966
  "qe-code-intelligence",
140884
140967
  // Knowledge graphs, 80% token reduction
140885
- "qe-security-compliance",
140886
- // OWASP, CVE detection
140887
140968
  "pentest-validation",
140888
140969
  // Graduated exploit validation (Shannon-inspired)
140889
- "qe-contract-testing",
140890
- // Pact, schema validation
140891
140970
  "qe-visual-accessibility",
140892
140971
  // Visual regression, WCAG
140893
140972
  "qe-chaos-resilience",
@@ -140895,10 +140974,29 @@ var V3_DOMAIN_SKILLS = [
140895
140974
  "qe-learning-optimization",
140896
140975
  // Transfer learning, self-improvement
140897
140976
  // V3 utilities
140898
- "aqe-v2-v3-migration",
140899
- // Migration guide from v2 to v3
140900
- "qe-iterative-loop"
140977
+ "qe-iterative-loop",
140901
140978
  // QE iteration patterns
140979
+ // New skills (ADR-086 skill design standards)
140980
+ "strict-tdd",
140981
+ // On-demand hook: TDD enforcement
140982
+ "no-skip",
140983
+ // On-demand hook: prevent test skips
140984
+ "coverage-guard",
140985
+ // On-demand hook: coverage regression prevention
140986
+ "freeze-tests",
140987
+ // On-demand hook: block test edits during refactoring
140988
+ "security-watch",
140989
+ // On-demand hook: real-time security scanning
140990
+ "skill-stats",
140991
+ // Skill usage measurement
140992
+ "test-failure-investigator",
140993
+ // Runbook: test failure root cause
140994
+ "coverage-drop-investigator",
140995
+ // Runbook: coverage regression tracing
140996
+ "e2e-flow-verifier",
140997
+ // Product verification with Playwright
140998
+ "test-metrics-dashboard"
140999
+ // Test history and trend analysis
140902
141000
  ];
140903
141001
  var EXCLUDED_SKILLS = [
140904
141002
  // V3 internal development skills
@@ -140954,6 +141052,14 @@ var EXCLUDED_SKILLS = [
140954
141052
  // Internal release workflow skill
140955
141053
  "release"
140956
141054
  ];
141055
+ var DEPRECATED_SKILLS = [
141056
+ "qe-contract-testing",
141057
+ // Merged into contract-testing (ADR-086)
141058
+ "qe-security-compliance",
141059
+ // Merged into security-testing (ADR-086)
141060
+ "aqe-v2-v3-migration"
141061
+ // No longer needed
141062
+ ];
140957
141063
  var SkillsInstaller = class {
140958
141064
  projectRoot;
140959
141065
  options;
@@ -141023,6 +141129,7 @@ var SkillsInstaller = class {
141023
141129
  const result = {
141024
141130
  installed: [],
141025
141131
  skipped: [],
141132
+ removed: [],
141026
141133
  errors: [],
141027
141134
  totalCount: 0,
141028
141135
  skillsDir: join23(this.projectRoot, ".claude", "skills"),
@@ -141051,6 +141158,9 @@ var SkillsInstaller = class {
141051
141158
  result.errors.push(`Failed to install ${skillName}: ${toErrorMessage(error)}`);
141052
141159
  }
141053
141160
  }
141161
+ if (this.options.overwrite) {
141162
+ result.removed = this.removeDeprecatedSkills(targetSkillsDir);
141163
+ }
141054
141164
  result.validationInstalled = this.installValidationInfrastructure(targetSkillsDir);
141055
141165
  await this.createSkillsIndex(targetSkillsDir, result.installed);
141056
141166
  return result;
@@ -141085,6 +141195,46 @@ var SkillsInstaller = class {
141085
141195
  return false;
141086
141196
  }
141087
141197
  }
141198
+ /**
141199
+ * Remove deprecated/merged skills from an existing installation.
141200
+ * Only runs during --upgrade to clean up stale skill directories.
141201
+ */
141202
+ removeDeprecatedSkills(targetSkillsDir) {
141203
+ const removed = [];
141204
+ for (const skillName of DEPRECATED_SKILLS) {
141205
+ const skillDir = join23(targetSkillsDir, skillName);
141206
+ if (existsSync19(skillDir)) {
141207
+ try {
141208
+ this.removeDirectoryRecursive(skillDir);
141209
+ removed.push(skillName);
141210
+ } catch (error) {
141211
+ console.error(
141212
+ `[SkillsInstaller] Failed to remove deprecated skill ${skillName}:`,
141213
+ error instanceof Error ? error.message : error
141214
+ );
141215
+ }
141216
+ }
141217
+ }
141218
+ if (removed.length > 0) {
141219
+ console.debug(`[SkillsInstaller] Removed ${removed.length} deprecated skills: ${removed.join(", ")}`);
141220
+ }
141221
+ return removed;
141222
+ }
141223
+ /**
141224
+ * Remove a directory and all its contents recursively
141225
+ */
141226
+ removeDirectoryRecursive(dirPath) {
141227
+ const entries = readdirSync9(dirPath, { withFileTypes: true });
141228
+ for (const entry of entries) {
141229
+ const fullPath = join23(dirPath, entry.name);
141230
+ if (entry.isDirectory()) {
141231
+ this.removeDirectoryRecursive(fullPath);
141232
+ } else {
141233
+ unlinkSync4(fullPath);
141234
+ }
141235
+ }
141236
+ rmdirSync2(dirPath);
141237
+ }
141088
141238
  /**
141089
141239
  * Get list of available skills from source directory
141090
141240
  */
@@ -141552,6 +141702,25 @@ ${capsSection}
141552
141702
  }
141553
141703
 
141554
141704
  // src/init/agents-installer.ts
141705
+ function bumpUpdatedDate(content) {
141706
+ const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
141707
+ const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
141708
+ if (!fmMatch) return content;
141709
+ const fm = fmMatch[1];
141710
+ let newFm;
141711
+ if (/^updated:/m.test(fm)) {
141712
+ newFm = fm.replace(/^updated:.*$/m, `updated: ${today}`);
141713
+ } else if (/^created:/m.test(fm)) {
141714
+ newFm = fm.replace(/^(created:.*$)/m, `$1
141715
+ updated: ${today}`);
141716
+ } else {
141717
+ newFm = fm + `
141718
+ updated: ${today}`;
141719
+ }
141720
+ return content.replace(/^---\n[\s\S]*?\n---/, `---
141721
+ ${newFm}
141722
+ ---`);
141723
+ }
141555
141724
  var V3_QE_AGENTS = [
141556
141725
  // Test Generation Domain
141557
141726
  "qe-test-architect",
@@ -141790,7 +141959,8 @@ var AgentsInstaller = class {
141790
141959
  try {
141791
141960
  const agentContent = readFileSync18(agentFile, "utf-8");
141792
141961
  const { content: modifiedContent, applied } = applyOverlayToContent(agentContent, overlay);
141793
- writeFileSync5(agentFile, modifiedContent, "utf-8");
141962
+ const finalContent = bumpUpdatedDate(modifiedContent);
141963
+ writeFileSync5(agentFile, finalContent, "utf-8");
141794
141964
  result.overlaysApplied.push(agentName);
141795
141965
  const changes = [
141796
141966
  ...applied.replacedFields.map((f74) => `replaced:${f74}`),
@@ -143829,7 +143999,7 @@ var HooksPhase = class extends BasePhase {
143829
143999
  settings = {};
143830
144000
  }
143831
144001
  }
143832
- const aqeHooks = this.generateHooksConfig(config);
144002
+ const aqeHooks = this.generateHooksConfig(config, projectRoot);
143833
144003
  const hookTypes = Object.keys(aqeHooks);
143834
144004
  const existingHooks = settings.hooks || {};
143835
144005
  const existingAqeDetected = this.hasExistingAqeHooks(existingHooks);
@@ -143842,9 +144012,20 @@ var HooksPhase = class extends BasePhase {
143842
144012
  ...existingEnv,
143843
144013
  ...generateAqeEnvVars(config)
143844
144014
  };
143845
- const v3Sections = generateV3SettingsSections(config);
144015
+ const v3Sections = generateV3SettingsSections(config, projectRoot);
143846
144016
  for (const [key, value] of Object.entries(v3Sections)) {
143847
- settings[key] = value;
144017
+ if (key === "_aqePermissions") {
144018
+ const existingPerms = settings.permissions || {};
144019
+ const existingAllow = existingPerms.allow || [];
144020
+ const aqeEntries = value;
144021
+ const merged = [.../* @__PURE__ */ new Set([...existingAllow, ...aqeEntries])];
144022
+ settings.permissions = {
144023
+ ...existingPerms,
144024
+ allow: merged
144025
+ };
144026
+ } else {
144027
+ settings[key] = value;
144028
+ }
143848
144029
  }
143849
144030
  let existingMcp = settings.enabledMcpjsonServers || [];
143850
144031
  existingMcp = existingMcp.filter((s70) => s70 !== "aqe");
@@ -144126,7 +144307,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
144126
144307
  * Uses `npx agentic-qe` for portability - works without global installation.
144127
144308
  * All hooks use --json output for structured data and fail silently with continueOnError.
144128
144309
  */
144129
- generateHooksConfig(_config) {
144310
+ generateHooksConfig(_config, _projectRoot) {
144130
144311
  return {
144131
144312
  PreToolUse: [
144132
144313
  // File guardian — MUST be first to block before learning hooks run
@@ -144240,7 +144421,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
144240
144421
  hooks: [
144241
144422
  {
144242
144423
  type: "command",
144243
- command: 'node "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.claude/helpers/brain-checkpoint.cjs" verify --json',
144424
+ command: "node .claude/helpers/brain-checkpoint.cjs verify --json",
144244
144425
  timeout: 5e3,
144245
144426
  continueOnError: true
144246
144427
  }
@@ -144262,7 +144443,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
144262
144443
  hooks: [
144263
144444
  {
144264
144445
  type: "command",
144265
- command: 'node "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.claude/helpers/brain-checkpoint.cjs" export --json',
144446
+ command: "node .claude/helpers/brain-checkpoint.cjs export --json",
144266
144447
  timeout: 6e4,
144267
144448
  continueOnError: true
144268
144449
  }
@@ -146864,7 +147045,7 @@ function checkMCPConfig(projectRoot) {
146864
147045
  if (existsSync45(mcpJsonPath)) {
146865
147046
  try {
146866
147047
  const config = safeJsonParse(readFileSync37(mcpJsonPath, "utf-8"));
146867
- if (config.mcpServers?.["claude-flow"]) {
147048
+ if (config.mcpServers?.["ruflo"] || config.mcpServers?.["claude-flow"]) {
146868
147049
  return { available: true, method: "mcp-config" };
146869
147050
  }
146870
147051
  } catch {
@@ -146875,7 +147056,7 @@ function checkMCPConfig(projectRoot) {
146875
147056
  try {
146876
147057
  const settings = safeJsonParse(readFileSync37(settingsPath, "utf-8"));
146877
147058
  const servers = settings.mcpServers || settings.mcp?.servers || {};
146878
- if (servers["claude-flow"] || servers["@anthropic/claude-flow"]) {
147059
+ if (servers["ruflo"] || servers["claude-flow"] || servers["@anthropic/claude-flow"]) {
146879
147060
  return { available: true, method: "mcp-config" };
146880
147061
  }
146881
147062
  } catch {
@@ -146889,7 +147070,7 @@ function checkPackageJson(projectRoot) {
146889
147070
  try {
146890
147071
  const pkg = safeJsonParse(readFileSync37(packageJsonPath, "utf-8"));
146891
147072
  const deps = { ...pkg.dependencies, ...pkg.devDependencies };
146892
- if (deps["@claude-flow/cli"] || deps["claude-flow"]) {
147073
+ if (deps["ruflo"] || deps["@claude-flow/cli"] || deps["claude-flow"]) {
146893
147074
  return { available: true, method: "npm-dependency" };
146894
147075
  }
146895
147076
  } catch {
@@ -146897,17 +147078,19 @@ function checkPackageJson(projectRoot) {
146897
147078
  return null;
146898
147079
  }
146899
147080
  function checkLocalBinary(projectRoot) {
146900
- try {
146901
- const result = execSync6("npx --no-install @claude-flow/cli --version", {
146902
- encoding: "utf-8",
146903
- timeout: 5e3,
146904
- cwd: projectRoot,
146905
- stdio: ["pipe", "pipe", "pipe"]
146906
- // suppress stderr noise
146907
- });
146908
- const version2 = result.trim().match(/\d+\.\d+\.\d+[\w.-]*/)?.[0];
146909
- return { available: true, method: "npx-cached", version: version2 };
146910
- } catch {
147081
+ for (const pkg of ["ruflo", "@claude-flow/cli"]) {
147082
+ try {
147083
+ const result = execSync6(`npx --no-install ${pkg} --version`, {
147084
+ encoding: "utf-8",
147085
+ timeout: 5e3,
147086
+ cwd: projectRoot,
147087
+ stdio: ["pipe", "pipe", "pipe"]
147088
+ // suppress stderr noise
147089
+ });
147090
+ const version2 = result.trim().match(/\d+\.\d+\.\d+[\w.-]*/)?.[0];
147091
+ return { available: true, method: "npx-cached", version: version2 };
147092
+ } catch {
147093
+ }
146911
147094
  }
146912
147095
  return null;
146913
147096
  }
@@ -146921,8 +147104,8 @@ function getClaudeFlowNotFoundMessage() {
146921
147104
  " - Codebase pretrain analysis",
146922
147105
  "",
146923
147106
  " To install later:",
146924
- " npm install -g @claude-flow/cli",
146925
- " claude mcp add claude-flow -- npx -y @claude-flow/cli@latest",
147107
+ " npm install -g ruflo",
147108
+ " claude mcp add ruflo -- npx -y ruflo@3.5.18",
146926
147109
  " aqe init --auto --with-claude-flow"
146927
147110
  ].join("\n");
146928
147111
  }
@@ -147010,10 +147193,10 @@ function updateMCPConfig(projectRoot) {
147010
147193
  settings.mcpServers = {};
147011
147194
  }
147012
147195
  const servers = settings.mcpServers;
147013
- if (!servers["claude-flow"]) {
147014
- servers["claude-flow"] = {
147196
+ if (!servers["ruflo"] && !servers["claude-flow"]) {
147197
+ servers["ruflo"] = {
147015
147198
  command: "npx",
147016
- args: ["@anthropic/claude-flow", "mcp"],
147199
+ args: ["ruflo@3.5.18", "mcp"],
147017
147200
  env: {}
147018
147201
  };
147019
147202
  }
@@ -147022,7 +147205,7 @@ function updateMCPConfig(projectRoot) {
147022
147205
  async function runPretrainAnalysis(projectRoot, debug) {
147023
147206
  try {
147024
147207
  if (debug) console.log("[ClaudeFlow] Running pretrain analysis...");
147025
- execSync7("npx --no-install @claude-flow/cli hooks pretrain --depth medium", {
147208
+ execSync7("npx --no-install ruflo hooks pretrain --depth medium", {
147026
147209
  encoding: "utf-8",
147027
147210
  timeout: 12e4,
147028
147211
  // 2 minutes
@@ -147632,7 +147815,7 @@ import chalk4 from "chalk";
147632
147815
 
147633
147816
  // src/cli/config/cli-config.ts
147634
147817
  init_safe_json();
147635
- import { existsSync as existsSync47, readFileSync as readFileSync40, writeFileSync as writeFileSync27, mkdirSync as mkdirSync27, unlinkSync as unlinkSync4 } from "fs";
147818
+ import { existsSync as existsSync47, readFileSync as readFileSync40, writeFileSync as writeFileSync27, mkdirSync as mkdirSync27, unlinkSync as unlinkSync5 } from "fs";
147636
147819
  import { join as join52 } from "path";
147637
147820
  import { homedir as homedir2 } from "os";
147638
147821
  var DEFAULT_CLI_CONFIG = {
@@ -149217,7 +149400,7 @@ function brainInfo(containerPath) {
149217
149400
 
149218
149401
  // src/integrations/ruvector/brain-rvf-exporter.ts
149219
149402
  init_rvf_native_adapter();
149220
- import { existsSync as existsSync51, statSync as statSync8, unlinkSync as unlinkSync5, writeFileSync as writeFileSync31 } from "fs";
149403
+ import { existsSync as existsSync51, statSync as statSync8, unlinkSync as unlinkSync6, writeFileSync as writeFileSync31 } from "fs";
149221
149404
  import { resolve as resolve10 } from "path";
149222
149405
  function exportBrainToRvf(db, options, sourceDbLabel = "memory.db") {
149223
149406
  if (!isRvfNativeAvailable()) {
@@ -149227,9 +149410,9 @@ function exportBrainToRvf(db, options, sourceDbLabel = "memory.db") {
149227
149410
  }
149228
149411
  const outPath = resolve10(options.outputPath);
149229
149412
  const dimension = options.dimension ?? 384;
149230
- if (existsSync51(outPath)) unlinkSync5(outPath);
149413
+ if (existsSync51(outPath)) unlinkSync6(outPath);
149231
149414
  const idmapPath = `${outPath}.idmap.json`;
149232
- if (existsSync51(idmapPath)) unlinkSync5(idmapPath);
149415
+ if (existsSync51(idmapPath)) unlinkSync6(idmapPath);
149233
149416
  const rvf = createRvfStore(outPath, dimension);
149234
149417
  try {
149235
149418
  const allTableData = {};
@@ -170052,7 +170235,7 @@ async function cleanupAndExit(code = 0) {
170052
170235
  process.exit(code);
170053
170236
  }
170054
170237
  var program = new Command22();
170055
- var VERSION = true ? "3.8.1" : "0.0.0-dev";
170238
+ var VERSION = true ? "3.8.3" : "0.0.0-dev";
170056
170239
  program.name("aqe").description("Agentic QE - Domain-Driven Quality Engineering").version(VERSION);
170057
170240
  var registry2 = createCommandRegistry(context, cleanupAndExit, ensureInitialized, ensureInitializedStrict);
170058
170241
  registry2.registerAll(program);