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.
- package/.claude/agents/v3/qe-security-scanner.md +2 -2
- package/.claude/commands/claude-flow-help.md +1 -1
- package/.claude/helpers/github-setup.sh +4 -4
- package/.claude/helpers/post-commit +1 -1
- package/.claude/helpers/pre-commit +1 -1
- package/.claude/helpers/quick-start.sh +4 -4
- package/.claude/helpers/setup-mcp.sh +3 -3
- package/.claude/helpers/statusline-v3.cjs +1 -1
- package/.claude/helpers/validation-pipeline.cjs +625 -0
- package/.claude/skills/README.md +29 -7
- package/.claude/skills/TRUST-TIERS.md +26 -10
- package/.claude/skills/a11y-ally/SKILL.md +10 -2
- package/.claude/skills/accessibility-testing/SKILL.md +2 -1
- package/.claude/skills/agentic-quality-engineering/SKILL.md +1 -2
- package/.claude/skills/api-testing-patterns/SKILL.md +8 -0
- package/.claude/skills/api-testing-patterns/config.json +14 -0
- package/.claude/skills/api-testing-patterns/templates/api-test-scaffold.md +87 -0
- package/.claude/skills/brutal-honesty-review/SKILL.md +0 -1
- package/.claude/skills/bug-reporting-excellence/SKILL.md +14 -1
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +0 -1
- package/.claude/skills/code-review-quality/SKILL.md +14 -1
- package/.claude/skills/compatibility-testing/SKILL.md +1 -54
- package/.claude/skills/compliance-testing/SKILL.md +8 -1
- package/.claude/skills/compliance-testing/config.json +13 -0
- package/.claude/skills/consultancy-practices/SKILL.md +1 -33
- package/.claude/skills/context-driven-testing/SKILL.md +0 -42
- package/.claude/skills/contract-testing/SKILL.md +12 -0
- package/.claude/skills/contract-testing/config.json +13 -0
- package/.claude/skills/contract-testing/references/agent-commands.md +103 -0
- package/.claude/skills/contract-testing/references/provider-states.md +45 -0
- package/.claude/skills/coverage-drop-investigator/SKILL.md +90 -0
- package/.claude/skills/coverage-guard/SKILL.md +82 -0
- package/.claude/skills/coverage-guard/scripts/check-coverage.sh +42 -0
- package/.claude/skills/database-testing/SKILL.md +0 -10
- package/.claude/skills/debug-loop/SKILL.md +1 -1
- package/.claude/skills/e2e-flow-verifier/SKILL.md +78 -0
- package/.claude/skills/enterprise-integration-testing/SKILL.md +1 -1
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +8 -1
- package/.claude/skills/exploratory-testing-advanced/references/heuristic-cheatsheet.md +48 -0
- package/.claude/skills/freeze-tests/SKILL.md +67 -0
- package/.claude/skills/freeze-tests/scripts/block-test-edits.sh +27 -0
- package/.claude/skills/holistic-testing-pact/SKILL.md +0 -1
- package/.claude/skills/iterative-loop/SKILL.md +6 -6
- package/.claude/skills/localization-testing/SKILL.md +0 -18
- package/.claude/skills/mobile-testing/SKILL.md +2 -50
- package/.claude/skills/mutation-testing/SKILL.md +26 -1
- package/.claude/skills/mutation-testing/config.json +14 -0
- package/.claude/skills/mutation-testing/references/mutation-operators.md +38 -0
- package/.claude/skills/mutation-testing/run-history.json +6 -0
- package/.claude/skills/n8n-expression-testing/SKILL.md +0 -1
- package/.claude/skills/n8n-integration-testing-patterns/SKILL.md +0 -1
- package/.claude/skills/n8n-security-testing/SKILL.md +0 -1
- package/.claude/skills/n8n-trigger-testing-strategies/SKILL.md +0 -1
- package/.claude/skills/n8n-workflow-testing-fundamentals/SKILL.md +0 -1
- package/.claude/skills/no-skip/SKILL.md +74 -0
- package/.claude/skills/no-skip/scripts/check-skips.sh +28 -0
- package/.claude/skills/pair-programming/SKILL.md +1 -1
- package/.claude/skills/pentest-validation/SKILL.md +2 -3
- package/.claude/skills/performance-testing/SKILL.md +21 -0
- package/.claude/skills/performance-testing/config.json +18 -0
- package/.claude/skills/performance-testing/references/k6-patterns.md +72 -0
- package/.claude/skills/performance-testing/run-history.json +6 -0
- package/.claude/skills/pr-review/SKILL.md +3 -3
- package/.claude/skills/qcsd-cicd-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-development-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-ideation-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-production-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-production-swarm/steps/01-flag-detection.md +1 -1
- package/.claude/skills/qcsd-production-swarm/steps/07-learning-persistence.md +2 -2
- package/.claude/skills/qcsd-refinement-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +1 -1
- package/.claude/skills/qe-chaos-resilience/SKILL.md +2 -3
- package/.claude/skills/qe-code-intelligence/SKILL.md +9 -2
- package/.claude/skills/qe-coverage-analysis/SKILL.md +28 -2
- package/.claude/skills/qe-coverage-analysis/run-history.json +6 -0
- package/.claude/skills/qe-defect-intelligence/SKILL.md +1 -2
- package/.claude/skills/qe-iterative-loop/SKILL.md +0 -1
- package/.claude/skills/qe-learning-optimization/SKILL.md +1 -2
- package/.claude/skills/qe-quality-assessment/SKILL.md +29 -3
- package/.claude/skills/qe-quality-assessment/run-history.json +6 -0
- package/.claude/skills/qe-requirements-validation/SKILL.md +1 -2
- package/.claude/skills/qe-test-execution/SKILL.md +9 -2
- package/.claude/skills/qe-test-generation/SKILL.md +15 -2
- package/.claude/skills/qe-test-generation/config.json +14 -0
- package/.claude/skills/qe-test-generation/templates/test-scaffold-jest.md +72 -0
- package/.claude/skills/qe-visual-accessibility/SKILL.md +1 -2
- package/.claude/skills/quality-metrics/SKILL.md +3 -78
- package/.claude/skills/refactoring-patterns/SKILL.md +0 -1
- package/.claude/skills/regression-testing/SKILL.md +13 -49
- package/.claude/skills/risk-based-testing/SKILL.md +6 -52
- package/.claude/skills/security-testing/SKILL.md +30 -0
- package/.claude/skills/security-testing/config.json +13 -0
- package/.claude/skills/security-testing/references/compliance-agent-commands.md +131 -0
- package/.claude/skills/security-testing/references/owasp-top-10.md +66 -0
- package/.claude/skills/security-testing/run-history.json +6 -0
- package/.claude/skills/security-testing/templates/security-report.md +44 -0
- package/.claude/skills/security-visual-testing/SKILL.md +0 -1
- package/.claude/skills/security-watch/SKILL.md +93 -0
- package/.claude/skills/security-watch/scripts/scan-security.sh +46 -0
- package/.claude/skills/sherlock-review/SKILL.md +0 -1
- package/.claude/skills/shift-left-testing/SKILL.md +16 -88
- package/.claude/skills/shift-right-testing/SKILL.md +0 -1
- package/.claude/skills/six-thinking-hats/SKILL.md +0 -1
- package/.claude/skills/skill-stats/SKILL.md +79 -0
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/strict-tdd/SKILL.md +72 -0
- package/.claude/skills/strict-tdd/scripts/enforce-red-phase.sh +36 -0
- package/.claude/skills/tdd-london-chicago/SKILL.md +8 -1
- package/.claude/skills/technical-writing/SKILL.md +0 -1
- package/.claude/skills/test-automation-strategy/SKILL.md +13 -65
- package/.claude/skills/test-data-management/SKILL.md +1 -105
- package/.claude/skills/test-design-techniques/SKILL.md +2 -152
- package/.claude/skills/test-environment-management/SKILL.md +0 -48
- package/.claude/skills/test-failure-investigator/SKILL.md +99 -0
- package/.claude/skills/test-metrics-dashboard/SKILL.md +97 -0
- package/.claude/skills/test-reporting-analytics/SKILL.md +0 -1
- package/.claude/skills/trust-tier-manifest.json +135 -61
- package/.claude/skills/validation-pipeline/SKILL.md +5 -6
- package/.claude/skills/verification-quality/SKILL.md +15 -1
- package/.claude/skills/visual-testing-advanced/SKILL.md +0 -1
- package/.claude/skills/xp-practices/SKILL.md +2 -110
- package/.opencode/agents/collective-intelligence-coordinator.yaml +52 -0
- package/.opencode/agents/ddd-domain-expert.yaml +49 -0
- package/.opencode/agents/memory-specialist.yaml +49 -0
- package/.opencode/agents/performance-engineer.yaml +53 -0
- package/.opencode/agents/qe-accessibility-auditor.yaml +118 -0
- package/.opencode/agents/qe-api-contract-validator.yaml +85 -0
- package/.opencode/agents/qe-bdd-generator.yaml +83 -0
- package/.opencode/agents/qe-chaos-engineer.yaml +114 -0
- package/.opencode/agents/qe-code-complexity.yaml +82 -0
- package/.opencode/agents/qe-code-intelligence.yaml +80 -0
- package/.opencode/agents/qe-coverage-analyzer.yaml +75 -0
- package/.opencode/agents/qe-defect-predictor.yaml +81 -0
- package/.opencode/agents/qe-dependency-mapper.yaml +81 -0
- package/.opencode/agents/qe-deployment-advisor.yaml +82 -0
- package/.opencode/agents/qe-devils-advocate.yaml +63 -0
- package/.opencode/agents/qe-flaky-hunter.yaml +116 -0
- package/.opencode/agents/qe-fleet-commander.yaml +83 -0
- package/.opencode/agents/qe-gap-detector.yaml +81 -0
- package/.opencode/agents/qe-graphql-tester.yaml +84 -0
- package/.opencode/agents/qe-impact-analyzer.yaml +81 -0
- package/.opencode/agents/qe-integration-architect.yaml +46 -0
- package/.opencode/agents/qe-integration-tester.yaml +84 -0
- package/.opencode/agents/qe-kg-builder.yaml +75 -0
- package/.opencode/agents/qe-learning-coordinator.yaml +82 -0
- package/.opencode/agents/qe-load-tester.yaml +84 -0
- package/.opencode/agents/qe-message-broker-tester.yaml +94 -0
- package/.opencode/agents/qe-metrics-optimizer.yaml +81 -0
- package/.opencode/agents/qe-middleware-validator.yaml +92 -0
- package/.opencode/agents/qe-mutation-tester.yaml +84 -0
- package/.opencode/agents/qe-odata-contract-tester.yaml +98 -0
- package/.opencode/agents/qe-parallel-executor.yaml +79 -0
- package/.opencode/agents/qe-pattern-learner.yaml +80 -0
- package/.opencode/agents/qe-pentest-validator.yaml +137 -0
- package/.opencode/agents/qe-performance-tester.yaml +83 -0
- package/.opencode/agents/qe-product-factors-assessor.yaml +116 -0
- package/.opencode/agents/qe-property-tester.yaml +82 -0
- package/.opencode/agents/qe-quality-criteria-recommender.yaml +111 -0
- package/.opencode/agents/qe-quality-gate.yaml +80 -0
- package/.opencode/agents/qe-queen-coordinator.yaml +59 -0
- package/.opencode/agents/qe-qx-partner.yaml +75 -0
- package/.opencode/agents/qe-regression-analyzer.yaml +90 -0
- package/.opencode/agents/qe-requirements-validator.yaml +111 -0
- package/.opencode/agents/qe-responsive-tester.yaml +85 -0
- package/.opencode/agents/qe-retry-handler.yaml +82 -0
- package/.opencode/agents/qe-risk-assessor.yaml +81 -0
- package/.opencode/agents/qe-root-cause-analyzer.yaml +82 -0
- package/.opencode/agents/qe-sap-idoc-tester.yaml +104 -0
- package/.opencode/agents/qe-sap-rfc-tester.yaml +94 -0
- package/.opencode/agents/qe-security-auditor.yaml +90 -0
- package/.opencode/agents/qe-security-scanner.yaml +80 -0
- package/.opencode/agents/qe-soap-tester.yaml +93 -0
- package/.opencode/agents/qe-sod-analyzer.yaml +96 -0
- package/.opencode/agents/qe-tdd-specialist.yaml +84 -0
- package/.opencode/agents/qe-test-generator.yaml +78 -0
- package/.opencode/agents/qe-test-idea-rewriter.yaml +88 -0
- package/.opencode/agents/qe-transfer-specialist.yaml +81 -0
- package/.opencode/agents/qe-visual-tester.yaml +82 -0
- package/.opencode/agents/security-architect.yaml +51 -0
- package/.opencode/agents/security-auditor.yaml +50 -0
- package/.opencode/permissions.yaml +74 -0
- package/.opencode/skills/qcsd-cicd-swarm.yaml +45 -0
- package/.opencode/skills/qcsd-development-swarm.yaml +45 -0
- package/.opencode/skills/qcsd-ideation-swarm.yaml +45 -0
- package/.opencode/skills/qcsd-production-swarm.yaml +45 -0
- package/.opencode/skills/qcsd-refinement-swarm.yaml +45 -0
- package/.opencode/skills/qe-a11y-ally.yaml +45 -0
- package/.opencode/skills/qe-accessibility-testing.yaml +45 -0
- package/.opencode/skills/qe-agentic-jujutsu.yaml +45 -0
- package/.opencode/skills/qe-agentic-quality-engineering.yaml +45 -0
- package/.opencode/skills/qe-api-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-aqe-v2-v3-migration.yaml +45 -0
- package/.opencode/skills/qe-brutal-honesty-review.yaml +45 -0
- package/.opencode/skills/qe-bug-reporting-excellence.yaml +45 -0
- package/.opencode/skills/qe-chaos-engineering-resilience.yaml +30 -0
- package/.opencode/skills/qe-chaos-resilience.yaml +45 -0
- package/.opencode/skills/qe-cicd-pipeline-qe-orchestrator.yaml +45 -0
- package/.opencode/skills/qe-code-intelligence.yaml +45 -0
- package/.opencode/skills/qe-code-review-quality.yaml +45 -0
- package/.opencode/skills/qe-compatibility-testing.yaml +35 -0
- package/.opencode/skills/qe-compliance-testing.yaml +35 -0
- package/.opencode/skills/qe-consultancy-practices.yaml +45 -0
- package/.opencode/skills/qe-context-driven-testing.yaml +45 -0
- package/.opencode/skills/qe-coverage-analysis.yaml +45 -0
- package/.opencode/skills/qe-database-testing.yaml +40 -0
- package/.opencode/skills/qe-debug-loop.yaml +45 -0
- package/.opencode/skills/qe-defect-intelligence.yaml +45 -0
- package/.opencode/skills/qe-enterprise-integration-testing.yaml +45 -0
- package/.opencode/skills/qe-exploratory-testing-advanced.yaml +45 -0
- package/.opencode/skills/qe-github-code-review.yaml +45 -0
- package/.opencode/skills/qe-github-multi-repo.yaml +45 -0
- package/.opencode/skills/qe-github-project-management.yaml +45 -0
- package/.opencode/skills/qe-github-release-management.yaml +45 -0
- package/.opencode/skills/qe-github-workflow-automation.yaml +45 -0
- package/.opencode/skills/qe-holistic-testing-pact.yaml +45 -0
- package/.opencode/skills/qe-iterative-loop.yaml +45 -0
- package/.opencode/skills/qe-learning-optimization.yaml +45 -0
- package/.opencode/skills/qe-localization-testing.yaml +40 -0
- package/.opencode/skills/qe-middleware-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-mobile-testing.yaml +35 -0
- package/.opencode/skills/qe-mutation-testing.yaml +35 -0
- package/.opencode/skills/qe-n8n-expression-testing.yaml +45 -0
- package/.opencode/skills/qe-n8n-integration-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-n8n-security-testing.yaml +45 -0
- package/.opencode/skills/qe-n8n-trigger-testing-strategies.yaml +45 -0
- package/.opencode/skills/qe-n8n-workflow-testing-fundamentals.yaml +45 -0
- package/.opencode/skills/qe-observability-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-pair-programming.yaml +45 -0
- package/.opencode/skills/qe-pentest-validation.yaml +45 -0
- package/.opencode/skills/qe-performance-analysis.yaml +45 -0
- package/.opencode/skills/qe-performance-testing.yaml +45 -0
- package/.opencode/skills/qe-pr-review.yaml +45 -0
- package/.opencode/skills/qe-quality-assessment.yaml +45 -0
- package/.opencode/skills/qe-quality-metrics.yaml +45 -0
- package/.opencode/skills/qe-refactoring-patterns.yaml +40 -0
- package/.opencode/skills/qe-regression-testing.yaml +40 -0
- package/.opencode/skills/qe-release.yaml +45 -0
- package/.opencode/skills/qe-requirements-validation.yaml +45 -0
- package/.opencode/skills/qe-risk-based-testing.yaml +45 -0
- package/.opencode/skills/qe-security-testing.yaml +45 -0
- package/.opencode/skills/qe-security-visual-testing.yaml +45 -0
- package/.opencode/skills/qe-sfdipot-product-factors.yaml +45 -0
- package/.opencode/skills/qe-sherlock-review.yaml +45 -0
- package/.opencode/skills/qe-shift-left-testing.yaml +45 -0
- package/.opencode/skills/qe-shift-right-testing.yaml +45 -0
- package/.opencode/skills/qe-six-thinking-hats.yaml +45 -0
- package/.opencode/skills/qe-skill-builder.yaml +45 -0
- package/.opencode/skills/qe-sparc-methodology.yaml +45 -0
- package/.opencode/skills/qe-stream-chain.yaml +45 -0
- package/.opencode/skills/qe-tdd-london-chicago.yaml +45 -0
- package/.opencode/skills/qe-technical-writing.yaml +45 -0
- package/.opencode/skills/qe-test-automation-strategy.yaml +35 -0
- package/.opencode/skills/qe-test-data-management.yaml +45 -0
- package/.opencode/skills/qe-test-design-techniques.yaml +40 -0
- package/.opencode/skills/qe-test-environment-management.yaml +40 -0
- package/.opencode/skills/qe-test-execution.yaml +45 -0
- package/.opencode/skills/qe-test-generation.yaml +45 -0
- package/.opencode/skills/qe-test-idea-rewriting.yaml +45 -0
- package/.opencode/skills/qe-test-reporting-analytics.yaml +45 -0
- package/.opencode/skills/qe-testability-scoring.yaml +45 -0
- package/.opencode/skills/qe-verification-quality.yaml +45 -0
- package/.opencode/skills/qe-visual-accessibility.yaml +45 -0
- package/.opencode/skills/qe-visual-testing-advanced.yaml +40 -0
- package/.opencode/skills/qe-wms-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-xp-practices.yaml +45 -0
- package/.opencode/tools/qe-defect-scan.ts +79 -0
- package/.opencode/tools/qe-fleet-status.ts +59 -0
- package/.opencode/tools/qe-full-audit.ts +81 -0
- package/.opencode/tools/qe-learning-report.ts +74 -0
- package/.opencode/tools/qe-test-and-verify.ts +97 -0
- package/CHANGELOG.md +50 -0
- package/README.md +5 -1
- package/assets/agents/v3/qe-security-scanner.md +2 -2
- package/assets/helpers/statusline-v3.cjs +1 -1
- package/assets/helpers/validation-pipeline.cjs +625 -0
- package/assets/skills/README.md +173 -0
- package/assets/skills/TRUST-TIERS.md +174 -0
- package/assets/skills/a11y-ally/SKILL.md +10 -2
- package/assets/skills/accessibility-testing/SKILL.md +2 -1
- package/assets/skills/agentic-quality-engineering/SKILL.md +1 -2
- package/assets/skills/api-testing-patterns/SKILL.md +8 -0
- package/assets/skills/api-testing-patterns/config.json +14 -0
- package/assets/skills/api-testing-patterns/templates/api-test-scaffold.md +87 -0
- package/assets/skills/brutal-honesty-review/SKILL.md +0 -1
- package/assets/skills/bug-reporting-excellence/SKILL.md +14 -1
- package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +0 -1
- package/assets/skills/code-review-quality/SKILL.md +14 -1
- package/assets/skills/compatibility-testing/SKILL.md +1 -54
- package/assets/skills/compliance-testing/SKILL.md +8 -1
- package/assets/skills/compliance-testing/config.json +13 -0
- package/assets/skills/consultancy-practices/SKILL.md +1 -33
- package/assets/skills/context-driven-testing/SKILL.md +0 -42
- package/assets/skills/contract-testing/SKILL.md +12 -0
- package/assets/skills/contract-testing/config.json +13 -0
- package/assets/skills/contract-testing/references/agent-commands.md +103 -0
- package/assets/skills/contract-testing/references/provider-states.md +45 -0
- package/assets/skills/coverage-drop-investigator/SKILL.md +90 -0
- package/assets/skills/coverage-guard/SKILL.md +82 -0
- package/assets/skills/coverage-guard/scripts/check-coverage.sh +42 -0
- package/assets/skills/database-testing/SKILL.md +0 -10
- package/assets/skills/debug-loop/SKILL.md +1 -1
- package/assets/skills/e2e-flow-verifier/SKILL.md +78 -0
- package/assets/skills/enterprise-integration-testing/SKILL.md +1 -1
- package/assets/skills/exploratory-testing-advanced/SKILL.md +8 -1
- package/assets/skills/exploratory-testing-advanced/references/heuristic-cheatsheet.md +48 -0
- package/assets/skills/freeze-tests/SKILL.md +67 -0
- package/assets/skills/freeze-tests/scripts/block-test-edits.sh +27 -0
- package/assets/skills/holistic-testing-pact/SKILL.md +0 -1
- package/assets/skills/localization-testing/SKILL.md +0 -18
- package/assets/skills/mobile-testing/SKILL.md +2 -50
- package/assets/skills/mutation-testing/SKILL.md +26 -1
- package/assets/skills/mutation-testing/config.json +14 -0
- package/assets/skills/mutation-testing/references/mutation-operators.md +38 -0
- package/assets/skills/mutation-testing/run-history.json +6 -0
- package/assets/skills/n8n-expression-testing/SKILL.md +0 -1
- package/assets/skills/n8n-integration-testing-patterns/SKILL.md +0 -1
- package/assets/skills/n8n-security-testing/SKILL.md +0 -1
- package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +0 -1
- package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +0 -1
- package/assets/skills/no-skip/SKILL.md +74 -0
- package/assets/skills/no-skip/scripts/check-skips.sh +28 -0
- package/assets/skills/pair-programming/SKILL.md +1 -1
- package/assets/skills/pentest-validation/SKILL.md +2 -3
- package/assets/skills/performance-testing/SKILL.md +21 -0
- package/assets/skills/performance-testing/config.json +18 -0
- package/assets/skills/performance-testing/references/k6-patterns.md +72 -0
- package/assets/skills/performance-testing/run-history.json +6 -0
- package/assets/skills/pr-review/SKILL.md +3 -3
- package/assets/skills/qcsd-cicd-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-development-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-ideation-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-production-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-production-swarm/steps/01-flag-detection.md +1 -1
- package/assets/skills/qcsd-production-swarm/steps/07-learning-persistence.md +2 -2
- package/assets/skills/qcsd-refinement-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +1 -1
- package/assets/skills/qe-chaos-resilience/SKILL.md +2 -3
- package/assets/skills/qe-code-intelligence/SKILL.md +9 -2
- package/assets/skills/qe-coverage-analysis/SKILL.md +28 -2
- package/assets/skills/qe-coverage-analysis/run-history.json +6 -0
- package/assets/skills/qe-defect-intelligence/SKILL.md +1 -2
- package/assets/skills/qe-iterative-loop/SKILL.md +0 -1
- package/assets/skills/qe-learning-optimization/SKILL.md +1 -2
- package/assets/skills/qe-quality-assessment/SKILL.md +29 -3
- package/assets/skills/qe-quality-assessment/run-history.json +6 -0
- package/assets/skills/qe-requirements-validation/SKILL.md +1 -2
- package/assets/skills/qe-test-execution/SKILL.md +9 -2
- package/assets/skills/qe-test-generation/SKILL.md +15 -2
- package/assets/skills/qe-test-generation/config.json +14 -0
- package/assets/skills/qe-test-generation/templates/test-scaffold-jest.md +72 -0
- package/assets/skills/qe-visual-accessibility/SKILL.md +1 -2
- package/assets/skills/quality-metrics/SKILL.md +3 -78
- package/assets/skills/refactoring-patterns/SKILL.md +0 -1
- package/assets/skills/regression-testing/SKILL.md +13 -49
- package/assets/skills/risk-based-testing/SKILL.md +6 -52
- package/assets/skills/security-testing/SKILL.md +30 -0
- package/assets/skills/security-testing/config.json +13 -0
- package/assets/skills/security-testing/references/compliance-agent-commands.md +131 -0
- package/assets/skills/security-testing/references/owasp-top-10.md +66 -0
- package/assets/skills/security-testing/run-history.json +6 -0
- package/assets/skills/security-testing/templates/security-report.md +44 -0
- package/assets/skills/security-visual-testing/SKILL.md +0 -1
- package/assets/skills/security-watch/SKILL.md +93 -0
- package/assets/skills/security-watch/scripts/scan-security.sh +46 -0
- package/assets/skills/sherlock-review/SKILL.md +0 -1
- package/assets/skills/shift-left-testing/SKILL.md +16 -88
- package/assets/skills/shift-right-testing/SKILL.md +0 -1
- package/assets/skills/six-thinking-hats/SKILL.md +0 -1
- package/assets/skills/skill-stats/SKILL.md +79 -0
- package/assets/skills/strict-tdd/SKILL.md +72 -0
- package/assets/skills/strict-tdd/scripts/enforce-red-phase.sh +36 -0
- package/assets/skills/tdd-london-chicago/SKILL.md +8 -1
- package/assets/skills/technical-writing/SKILL.md +0 -1
- package/assets/skills/test-automation-strategy/SKILL.md +13 -65
- package/assets/skills/test-data-management/SKILL.md +1 -105
- package/assets/skills/test-design-techniques/SKILL.md +2 -152
- package/assets/skills/test-environment-management/SKILL.md +0 -48
- package/assets/skills/test-failure-investigator/SKILL.md +99 -0
- package/assets/skills/test-metrics-dashboard/SKILL.md +97 -0
- package/assets/skills/test-reporting-analytics/SKILL.md +0 -1
- package/assets/skills/trust-tier-manifest.json +135 -61
- package/assets/skills/validation-pipeline/SKILL.md +5 -6
- package/assets/skills/verification-quality/SKILL.md +15 -1
- package/assets/skills/visual-testing-advanced/SKILL.md +0 -1
- package/assets/skills/xp-practices/SKILL.md +2 -110
- package/dist/adapters/claude-flow/detect.d.ts +5 -0
- package/dist/adapters/claude-flow/detect.js +38 -18
- package/dist/adapters/claude-flow/model-router-bridge.js +4 -3
- package/dist/adapters/claude-flow/pretrain-bridge.js +5 -4
- package/dist/adapters/claude-flow/trajectory-bridge.js +5 -4
- package/dist/cli/bundle.js +262 -79
- package/dist/cli/commands/claude-flow-setup.js +4 -4
- package/dist/domains/learning-optimization/coordinator.d.ts +6 -1
- package/dist/domains/learning-optimization/coordinator.js +26 -4
- package/dist/domains/learning-optimization/plugin.d.ts +2 -0
- package/dist/domains/learning-optimization/plugin.js +2 -0
- package/dist/governance/adversarial-defense-integration.js +1 -0
- package/dist/governance/continue-gate-integration.d.ts +1 -0
- package/dist/governance/continue-gate-integration.js +1 -0
- package/dist/governance/deterministic-gateway-integration.d.ts +1 -0
- package/dist/governance/deterministic-gateway-integration.js +1 -0
- package/dist/governance/evolution-pipeline-integration.d.ts +1 -0
- package/dist/governance/evolution-pipeline-integration.js +1 -0
- package/dist/governance/memory-write-gate-integration.d.ts +1 -0
- package/dist/governance/memory-write-gate-integration.js +1 -0
- package/dist/governance/proof-envelope-integration.d.ts +1 -0
- package/dist/governance/proof-envelope-integration.js +1 -0
- package/dist/governance/shard-retriever-integration.d.ts +1 -0
- package/dist/governance/shard-retriever-integration.js +1 -0
- package/dist/governance/trust-accumulator-integration.d.ts +1 -0
- package/dist/governance/trust-accumulator-integration.js +1 -0
- package/dist/init/agents-installer.js +28 -1
- package/dist/init/enhancements/claude-flow-adapter.js +15 -2
- package/dist/init/init-wizard-hooks.js +3 -3
- package/dist/init/kiro-installer.js +10 -4
- package/dist/init/opencode-installer.d.ts +13 -1
- package/dist/init/opencode-installer.js +52 -14
- package/dist/init/phases/07-hooks.js +21 -7
- package/dist/init/settings-merge.d.ts +1 -1
- package/dist/init/settings-merge.js +12 -13
- package/dist/init/skills-installer.d.ts +10 -0
- package/dist/init/skills-installer.js +68 -6
- package/dist/integrations/ruvector/sona-persistence.d.ts +6 -0
- package/dist/integrations/ruvector/sona-persistence.js +26 -1
- package/dist/mcp/bundle.js +98 -37
- package/dist/mcp/entry.js +6 -6
- package/dist/migration/agent-compat.js +2 -2
- package/package.json +9 -4
- package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +0 -513
- package/.claude/skills/aqe-v2-v3-migration/skill.md +0 -326
- package/.claude/skills/qe-contract-testing/SKILL.md +0 -224
- package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +0 -513
- package/.claude/skills/qe-contract-testing/schemas/output.json +0 -295
- package/.claude/skills/qe-contract-testing/scripts/validate-config.json +0 -42
- package/.claude/skills/qe-security-compliance/SKILL.md +0 -261
- package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +0 -595
- package/.claude/skills/qe-security-compliance/schemas/output.json +0 -498
- package/.claude/skills/qe-security-compliance/scripts/validate-config.json +0 -41
- package/assets/skills/aqe-v2-v3-migration/schemas/output.json +0 -513
- package/assets/skills/aqe-v2-v3-migration/skill.md +0 -326
- package/assets/skills/qe-contract-testing/SKILL.md +0 -224
- package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +0 -513
- package/assets/skills/qe-contract-testing/schemas/output.json +0 -295
- package/assets/skills/qe-contract-testing/scripts/validate-config.json +0 -42
- package/assets/skills/qe-security-compliance/SKILL.md +0 -261
- package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +0 -595
- package/assets/skills/qe-security-compliance/schemas/output.json +0 -498
- package/assets/skills/qe-security-compliance/scripts/validate-config.json +0 -41
|
@@ -137,10 +137,10 @@ function updateMCPConfig(projectRoot) {
|
|
|
137
137
|
}
|
|
138
138
|
// Add claude-flow server if not present
|
|
139
139
|
const servers = settings.mcpServers;
|
|
140
|
-
if (!servers['claude-flow']) {
|
|
141
|
-
servers['
|
|
140
|
+
if (!servers['ruflo'] && !servers['claude-flow']) {
|
|
141
|
+
servers['ruflo'] = {
|
|
142
142
|
command: 'npx',
|
|
143
|
-
args: ['@
|
|
143
|
+
args: ['ruflo@3.5.18', 'mcp'],
|
|
144
144
|
env: {},
|
|
145
145
|
};
|
|
146
146
|
}
|
|
@@ -155,7 +155,7 @@ async function runPretrainAnalysis(projectRoot, debug) {
|
|
|
155
155
|
try {
|
|
156
156
|
if (debug)
|
|
157
157
|
console.log('[ClaudeFlow] Running pretrain analysis...');
|
|
158
|
-
execSync('npx --no-install
|
|
158
|
+
execSync('npx --no-install ruflo hooks pretrain --depth medium', {
|
|
159
159
|
encoding: 'utf-8',
|
|
160
160
|
timeout: 120000, // 2 minutes
|
|
161
161
|
cwd: projectRoot,
|
|
@@ -65,6 +65,7 @@ export declare class LearningOptimizationCoordinator extends BaseDomainCoordinat
|
|
|
65
65
|
* QESONA (Self-Optimizing Neural Architecture) for pattern learning
|
|
66
66
|
* Provides <0.05ms pattern adaptation via @ruvector/sona
|
|
67
67
|
* Now uses PersistentSONAEngine to survive restarts
|
|
68
|
+
* Nullable: init may fail (e.g. during `aqe init`) — coordinator degrades gracefully
|
|
68
69
|
*/
|
|
69
70
|
private sona;
|
|
70
71
|
/**
|
|
@@ -76,7 +77,7 @@ export declare class LearningOptimizationCoordinator extends BaseDomainCoordinat
|
|
|
76
77
|
/**
|
|
77
78
|
* Initialize the coordinator.
|
|
78
79
|
* CQ-002: Domain-specific initialization
|
|
79
|
-
*
|
|
80
|
+
* SONA init failure is non-fatal — coordinator degrades gracefully (#359).
|
|
80
81
|
*/
|
|
81
82
|
protected onInitialize(): Promise<void>;
|
|
82
83
|
/**
|
|
@@ -122,6 +123,10 @@ export declare class LearningOptimizationCoordinator extends BaseDomainCoordinat
|
|
|
122
123
|
* Ensure the coordinator is initialized before use.
|
|
123
124
|
*/
|
|
124
125
|
private ensureInitialized;
|
|
126
|
+
/**
|
|
127
|
+
* Ensure SONA engine is available (may be null if init failed gracefully).
|
|
128
|
+
*/
|
|
129
|
+
private ensureSONAAvailable;
|
|
125
130
|
/**
|
|
126
131
|
* Adapt a pattern based on current context using QESONA.
|
|
127
132
|
* Leverages @ruvector/sona's HNSW-indexed pattern matching for <0.05ms adaptation.
|
|
@@ -53,8 +53,9 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
53
53
|
* QESONA (Self-Optimizing Neural Architecture) for pattern learning
|
|
54
54
|
* Provides <0.05ms pattern adaptation via @ruvector/sona
|
|
55
55
|
* Now uses PersistentSONAEngine to survive restarts
|
|
56
|
+
* Nullable: init may fail (e.g. during `aqe init`) — coordinator degrades gracefully
|
|
56
57
|
*/
|
|
57
|
-
sona;
|
|
58
|
+
sona = null;
|
|
58
59
|
/**
|
|
59
60
|
* DreamScheduler for offline pattern consolidation and insight generation
|
|
60
61
|
* Wraps DreamEngine with automatic scheduling and trigger support
|
|
@@ -78,7 +79,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
78
79
|
/**
|
|
79
80
|
* Initialize the coordinator.
|
|
80
81
|
* CQ-002: Domain-specific initialization
|
|
81
|
-
*
|
|
82
|
+
* SONA init failure is non-fatal — coordinator degrades gracefully (#359).
|
|
82
83
|
*/
|
|
83
84
|
async onInitialize() {
|
|
84
85
|
// Initialize QESONA for neural pattern learning (persistent patterns)
|
|
@@ -93,8 +94,10 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
93
94
|
console.log('[LearningOptimizationCoordinator] PersistentSONAEngine initialized for pattern learning');
|
|
94
95
|
}
|
|
95
96
|
catch (error) {
|
|
97
|
+
// SONA is an enhancement, not a hard requirement — degrade gracefully (#359)
|
|
96
98
|
console.error('[LearningOptimizationCoordinator] Failed to initialize PersistentSONAEngine:', error);
|
|
97
|
-
|
|
99
|
+
console.warn('[LearningOptimizationCoordinator] Continuing without SONA pattern persistence');
|
|
100
|
+
this.sona = null;
|
|
98
101
|
}
|
|
99
102
|
// Initialize DreamScheduler if enabled
|
|
100
103
|
if (this.config.enableDreamScheduler) {
|
|
@@ -484,6 +487,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
484
487
|
*/
|
|
485
488
|
learnPattern(state, action, outcome, patternType, domain, metadata) {
|
|
486
489
|
this.ensureInitialized();
|
|
490
|
+
this.ensureSONAAvailable();
|
|
487
491
|
return this.sona.createPattern(state, action, outcome, patternType, domain, metadata);
|
|
488
492
|
}
|
|
489
493
|
/**
|
|
@@ -494,6 +498,14 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
494
498
|
throw new Error('[LearningOptimizationCoordinator] Not initialized. Call initialize() first.');
|
|
495
499
|
}
|
|
496
500
|
}
|
|
501
|
+
/**
|
|
502
|
+
* Ensure SONA engine is available (may be null if init failed gracefully).
|
|
503
|
+
*/
|
|
504
|
+
ensureSONAAvailable() {
|
|
505
|
+
if (!this.sona) {
|
|
506
|
+
throw new Error('[LearningOptimizationCoordinator] SONA engine is not available. Pattern persistence failed during initialization.');
|
|
507
|
+
}
|
|
508
|
+
}
|
|
497
509
|
/**
|
|
498
510
|
* Adapt a pattern based on current context using QESONA.
|
|
499
511
|
* Leverages @ruvector/sona's HNSW-indexed pattern matching for <0.05ms adaptation.
|
|
@@ -506,6 +518,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
506
518
|
*/
|
|
507
519
|
async adaptPattern(state, patternType, domain) {
|
|
508
520
|
this.ensureInitialized();
|
|
521
|
+
this.ensureSONAAvailable();
|
|
509
522
|
return this.sona.adaptPattern(state, patternType, domain);
|
|
510
523
|
}
|
|
511
524
|
/**
|
|
@@ -516,6 +529,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
516
529
|
*/
|
|
517
530
|
getSONAStats() {
|
|
518
531
|
this.ensureInitialized();
|
|
532
|
+
this.ensureSONAAvailable();
|
|
519
533
|
return this.sona.getStats();
|
|
520
534
|
}
|
|
521
535
|
/**
|
|
@@ -526,6 +540,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
526
540
|
*/
|
|
527
541
|
getSONAPatterns() {
|
|
528
542
|
this.ensureInitialized();
|
|
543
|
+
this.ensureSONAAvailable();
|
|
529
544
|
return this.sona.getAllPatterns();
|
|
530
545
|
}
|
|
531
546
|
/**
|
|
@@ -537,6 +552,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
537
552
|
*/
|
|
538
553
|
getSONAPatternsByType(type) {
|
|
539
554
|
this.ensureInitialized();
|
|
555
|
+
this.ensureSONAAvailable();
|
|
540
556
|
return this.sona.getPatternsByType(type);
|
|
541
557
|
}
|
|
542
558
|
/**
|
|
@@ -548,6 +564,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
548
564
|
*/
|
|
549
565
|
getSONAPatternsByDomain(domain) {
|
|
550
566
|
this.ensureInitialized();
|
|
567
|
+
this.ensureSONAAvailable();
|
|
551
568
|
return this.sona.getPatternsByDomain(domain);
|
|
552
569
|
}
|
|
553
570
|
/**
|
|
@@ -562,6 +579,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
562
579
|
*/
|
|
563
580
|
updateSONAPattern(patternId, success, quality) {
|
|
564
581
|
this.ensureInitialized();
|
|
582
|
+
this.ensureSONAAvailable();
|
|
565
583
|
return this.sona.updatePattern(patternId, success, quality);
|
|
566
584
|
}
|
|
567
585
|
/**
|
|
@@ -573,6 +591,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
573
591
|
*/
|
|
574
592
|
forceSONALearning() {
|
|
575
593
|
this.ensureInitialized();
|
|
594
|
+
this.ensureSONAAvailable();
|
|
576
595
|
return this.sona.forceLearn();
|
|
577
596
|
}
|
|
578
597
|
/**
|
|
@@ -581,7 +600,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
581
600
|
* @returns True if SONA is available
|
|
582
601
|
*/
|
|
583
602
|
isSONAAvailable() {
|
|
584
|
-
return this.initialized;
|
|
603
|
+
return this.initialized && this.sona !== null;
|
|
585
604
|
}
|
|
586
605
|
/**
|
|
587
606
|
* Export all QESONA patterns for persistence or transfer.
|
|
@@ -591,6 +610,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
591
610
|
*/
|
|
592
611
|
exportSONAPatterns() {
|
|
593
612
|
this.ensureInitialized();
|
|
613
|
+
this.ensureSONAAvailable();
|
|
594
614
|
return this.sona.exportPatterns();
|
|
595
615
|
}
|
|
596
616
|
/**
|
|
@@ -602,6 +622,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
602
622
|
*/
|
|
603
623
|
importSONAPatterns(patterns) {
|
|
604
624
|
this.ensureInitialized();
|
|
625
|
+
this.ensureSONAAvailable();
|
|
605
626
|
this.sona.importPatterns(patterns);
|
|
606
627
|
}
|
|
607
628
|
/**
|
|
@@ -613,6 +634,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
613
634
|
*/
|
|
614
635
|
async verifySONAPerformance(iterations = 100) {
|
|
615
636
|
this.ensureInitialized();
|
|
637
|
+
this.ensureSONAAvailable();
|
|
616
638
|
return this.sona.verifyPerformance(iterations);
|
|
617
639
|
}
|
|
618
640
|
// ============================================================================
|
|
@@ -22,6 +22,8 @@ export interface LearningOptimizationPluginConfig {
|
|
|
22
22
|
* Public API for the learning-optimization domain
|
|
23
23
|
*/
|
|
24
24
|
export interface LearningOptimizationAPI {
|
|
25
|
+
/** Check if SONA pattern engine is available (may be false if init failed) */
|
|
26
|
+
isSONAAvailable(): boolean;
|
|
25
27
|
runLearningCycle(domain: DomainName): Promise<Result<LearningCycleReport>>;
|
|
26
28
|
optimizeAllStrategies(): Promise<Result<OptimizationReport>>;
|
|
27
29
|
shareCrossDomainLearnings(): Promise<Result<CrossDomainSharingReport>>;
|
|
@@ -42,6 +42,8 @@ export class LearningOptimizationPlugin extends BaseDomainPlugin {
|
|
|
42
42
|
*/
|
|
43
43
|
getAPI() {
|
|
44
44
|
const api = {
|
|
45
|
+
// Availability check
|
|
46
|
+
isSONAAvailable: () => this.coordinator?.isSONAAvailable() ?? false,
|
|
45
47
|
// Coordinator methods
|
|
46
48
|
runLearningCycle: this.runLearningCycle.bind(this),
|
|
47
49
|
optimizeAllStrategies: this.optimizeAllStrategies.bind(this),
|
|
@@ -3,6 +3,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
3
3
|
* Adversarial Defense Integration for Agentic QE Fleet
|
|
4
4
|
*
|
|
5
5
|
* Wires @claude-flow/guidance adversarial defense capabilities to AQE's agent system.
|
|
6
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
6
7
|
* Provides prompt injection detection, input sanitization, threat scoring,
|
|
7
8
|
* automatic blocking, and trust integration.
|
|
8
9
|
*
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* ContinueGate Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires @claude-flow/guidance ContinueGate to the AQE agent coordination loop.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides loop detection, throttling, and automatic escalation.
|
|
6
7
|
*
|
|
7
8
|
* @module governance/continue-gate-integration
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* ContinueGate Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires @claude-flow/guidance ContinueGate to the AQE agent coordination loop.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides loop detection, throttling, and automatic escalation.
|
|
6
7
|
*
|
|
7
8
|
* @module governance/continue-gate-integration
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* DeterministicToolGateway Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires tool idempotency enforcement to the AQE agent coordination.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides idempotency key generation, request deduplication, schema validation,
|
|
6
7
|
* and response caching for idempotent operations.
|
|
7
8
|
*
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* DeterministicToolGateway Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires tool idempotency enforcement to the AQE agent coordination.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides idempotency key generation, request deduplication, schema validation,
|
|
6
7
|
* and response caching for idempotent operations.
|
|
7
8
|
*
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Evolution Pipeline Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires @claude-flow/guidance Evolution Pipeline to AQE's ReasoningBank learning system.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides rule effectiveness tracking, pattern promotion/demotion, A/B testing for
|
|
6
7
|
* rule variants, and learning from agent task outcomes.
|
|
7
8
|
*
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Evolution Pipeline Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires @claude-flow/guidance Evolution Pipeline to AQE's ReasoningBank learning system.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides rule effectiveness tracking, pattern promotion/demotion, A/B testing for
|
|
6
7
|
* rule variants, and learning from agent task outcomes.
|
|
7
8
|
*
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* MemoryWriteGate Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires @claude-flow/guidance MemoryWriteGate to ReasoningBank.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides contradiction detection, temporal decay, and domain namespacing.
|
|
6
7
|
*
|
|
7
8
|
* @module governance/memory-write-gate-integration
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* MemoryWriteGate Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires @claude-flow/guidance MemoryWriteGate to ReasoningBank.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides contradiction detection, temporal decay, and domain namespacing.
|
|
6
7
|
*
|
|
7
8
|
* @module governance/memory-write-gate-integration
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Proof Envelope Integration for Agentic QE Fleet
|
|
3
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
3
4
|
*
|
|
4
5
|
* Provides hash-chained audit trails with cryptographic proof generation,
|
|
5
6
|
* tamper detection, and action attestation for governance compliance.
|
|
@@ -2,6 +2,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
3
3
|
/**
|
|
4
4
|
* Proof Envelope Integration for Agentic QE Fleet
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
*
|
|
6
7
|
* Provides hash-chained audit trails with cryptographic proof generation,
|
|
7
8
|
* tamper detection, and action attestation for governance compliance.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* ShardRetriever Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Provides semantic shard retrieval from the @claude-flow/guidance system.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Loads, parses, and matches domain shards to tasks based on intent and context.
|
|
6
7
|
*
|
|
7
8
|
* Features:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* ShardRetriever Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Provides semantic shard retrieval from the @claude-flow/guidance system.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Loads, parses, and matches domain shards to tasks based on intent and context.
|
|
6
7
|
*
|
|
7
8
|
* Features:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* TrustAccumulator Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires @claude-flow/guidance TrustAccumulator to AQE's agent routing system.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides trust scoring, tier assignment, and intelligent agent selection.
|
|
6
7
|
*
|
|
7
8
|
* Trust tiers:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* TrustAccumulator Integration for Agentic QE Fleet
|
|
3
3
|
*
|
|
4
4
|
* Wires @claude-flow/guidance TrustAccumulator to AQE's agent routing system.
|
|
5
|
+
* TODO(ruflo-rebrand): Replace @claude-flow/guidance with @ruflo/guidance when published
|
|
5
6
|
* Provides trust scoring, tier assignment, and intelligent agent selection.
|
|
6
7
|
*
|
|
7
8
|
* Trust tiers:
|
|
@@ -12,6 +12,31 @@ import { toErrorMessage } from '../shared/error-utils.js';
|
|
|
12
12
|
import { loadOverlays, applyOverlayToContent } from '../agents/overlay-loader.js';
|
|
13
13
|
import { validateFleetMcpDeps } from '../validation/steps/agent-mcp-validator.js';
|
|
14
14
|
// ============================================================================
|
|
15
|
+
// Helpers
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Bump the `updated:` field in YAML frontmatter to today's date.
|
|
19
|
+
* If no `updated:` field exists, one is added after `created:` (or at end of frontmatter).
|
|
20
|
+
*/
|
|
21
|
+
function bumpUpdatedDate(content) {
|
|
22
|
+
const today = new Date().toISOString().slice(0, 10); // YYYY-MM-DD
|
|
23
|
+
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
24
|
+
if (!fmMatch)
|
|
25
|
+
return content;
|
|
26
|
+
const fm = fmMatch[1];
|
|
27
|
+
let newFm;
|
|
28
|
+
if (/^updated:/m.test(fm)) {
|
|
29
|
+
newFm = fm.replace(/^updated:.*$/m, `updated: ${today}`);
|
|
30
|
+
}
|
|
31
|
+
else if (/^created:/m.test(fm)) {
|
|
32
|
+
newFm = fm.replace(/^(created:.*$)/m, `$1\nupdated: ${today}`);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
newFm = fm + `\nupdated: ${today}`;
|
|
36
|
+
}
|
|
37
|
+
return content.replace(/^---\n[\s\S]*?\n---/, `---\n${newFm}\n---`);
|
|
38
|
+
}
|
|
39
|
+
// ============================================================================
|
|
15
40
|
// Agent Categories
|
|
16
41
|
// ============================================================================
|
|
17
42
|
/**
|
|
@@ -283,7 +308,9 @@ export class AgentsInstaller {
|
|
|
283
308
|
try {
|
|
284
309
|
const agentContent = readFileSync(agentFile, 'utf-8');
|
|
285
310
|
const { content: modifiedContent, applied } = applyOverlayToContent(agentContent, overlay);
|
|
286
|
-
|
|
311
|
+
// Bump the `updated` date in frontmatter when content is modified (#365)
|
|
312
|
+
const finalContent = bumpUpdatedDate(modifiedContent);
|
|
313
|
+
writeFileSync(agentFile, finalContent, 'utf-8');
|
|
287
314
|
result.overlaysApplied.push(agentName);
|
|
288
315
|
const changes = [
|
|
289
316
|
...applied.replacedFields.map(f => `replaced:${f}`),
|
|
@@ -14,15 +14,28 @@ import { safeJsonParse } from '../../shared/safe-json.js';
|
|
|
14
14
|
/** Shared execFileSync options */
|
|
15
15
|
const EXEC_OPTS = { encoding: 'utf-8' };
|
|
16
16
|
/**
|
|
17
|
-
* Build args array for npx @claude-flow/cli calls.
|
|
17
|
+
* Build args array for npx ruflo / @claude-flow/cli calls.
|
|
18
|
+
* Uses ruflo first with @claude-flow/cli fallback (matching detect.ts).
|
|
18
19
|
* Using execFileSync with explicit args prevents shell injection.
|
|
19
20
|
*/
|
|
20
21
|
function cfCliArgs(...subcommand) {
|
|
22
|
+
// Lazy-resolve: ruflo preferred, @claude-flow/cli as fallback
|
|
23
|
+
const pkg = cfCliArgs._resolvedPkg ??= (() => {
|
|
24
|
+
for (const candidate of ['ruflo', '@claude-flow/cli']) {
|
|
25
|
+
try {
|
|
26
|
+
require.resolve(`${candidate}/package.json`);
|
|
27
|
+
return candidate;
|
|
28
|
+
}
|
|
29
|
+
catch { /* next */ }
|
|
30
|
+
}
|
|
31
|
+
return 'ruflo';
|
|
32
|
+
})();
|
|
21
33
|
return {
|
|
22
34
|
bin: 'npx',
|
|
23
|
-
args: ['--no-install',
|
|
35
|
+
args: ['--no-install', pkg, ...subcommand],
|
|
24
36
|
};
|
|
25
37
|
}
|
|
38
|
+
cfCliArgs._resolvedPkg = undefined;
|
|
26
39
|
/**
|
|
27
40
|
* Claude Flow Adapter Implementation
|
|
28
41
|
* Falls back gracefully when Claude Flow is not available
|
|
@@ -174,7 +174,7 @@ export async function configureHooks(projectRoot, config) {
|
|
|
174
174
|
...generateAqeEnvVars(config),
|
|
175
175
|
};
|
|
176
176
|
// Apply v3 settings sections
|
|
177
|
-
const v3Sections = generateV3SettingsSections(config);
|
|
177
|
+
const v3Sections = generateV3SettingsSections(config, projectRoot);
|
|
178
178
|
for (const [key, value] of Object.entries(v3Sections)) {
|
|
179
179
|
settings[key] = value;
|
|
180
180
|
}
|
|
@@ -509,7 +509,7 @@ Task({ prompt: "Run security audit", subagent_type: "qe-security-scanner", run_i
|
|
|
509
509
|
|
|
510
510
|
\`\`\`javascript
|
|
511
511
|
// STEP 1: Initialize Claude Flow swarm for coordination
|
|
512
|
-
Bash("npx
|
|
512
|
+
Bash("npx ruflo swarm init --topology hierarchical --max-agents 15")
|
|
513
513
|
|
|
514
514
|
// STEP 2: Initialize AQE Fleet for QE-specific work
|
|
515
515
|
mcp__agentic-qe__fleet_init({
|
|
@@ -522,7 +522,7 @@ Task({ prompt: "Analyze coverage gaps", subagent_type: "qe-coverage-specialist",
|
|
|
522
522
|
|
|
523
523
|
// STEP 4: Store learnings in both systems
|
|
524
524
|
mcp__agentic-qe__memory_store({ key: "pattern-1", value: "...", namespace: "qe-patterns", persist: true })
|
|
525
|
-
Bash("npx
|
|
525
|
+
Bash("npx ruflo memory store --key 'qe-pattern-1' --value '...' --namespace patterns")
|
|
526
526
|
\`\`\`
|
|
527
527
|
|
|
528
528
|
### Data Storage
|
|
@@ -36,16 +36,22 @@ export class KiroInstaller {
|
|
|
36
36
|
// ==========================================================================
|
|
37
37
|
findOpenCodeDir() {
|
|
38
38
|
const possiblePaths = [
|
|
39
|
+
// Development: src/init/ or dist/init/ -> project root
|
|
39
40
|
join(__dirname, '../../.opencode'),
|
|
40
|
-
|
|
41
|
-
join(
|
|
41
|
+
// NPM package location
|
|
42
|
+
join(__dirname, '../../assets/opencode'),
|
|
42
43
|
];
|
|
43
44
|
for (const p of possiblePaths) {
|
|
44
|
-
if (existsSync(p)) {
|
|
45
|
+
if (existsSync(p) && (existsSync(join(p, 'agents')) || existsSync(join(p, 'skills')))) {
|
|
45
46
|
return p;
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
|
-
|
|
49
|
+
// Fallback: CWD .opencode — but only if it has actual source content
|
|
50
|
+
const cwdPath = join(process.cwd(), '.opencode');
|
|
51
|
+
if (existsSync(cwdPath) && (existsSync(join(cwdPath, 'agents')) || existsSync(join(cwdPath, 'skills')))) {
|
|
52
|
+
return cwdPath;
|
|
53
|
+
}
|
|
54
|
+
return possiblePaths[0];
|
|
49
55
|
}
|
|
50
56
|
// ==========================================================================
|
|
51
57
|
// Installation
|
|
@@ -32,9 +32,21 @@ export declare class OpenCodeInstaller {
|
|
|
32
32
|
private sourceDir;
|
|
33
33
|
constructor(options: OpenCodeInstallerOptions);
|
|
34
34
|
/**
|
|
35
|
-
* Find the source .opencode/ directory
|
|
35
|
+
* Find the source .opencode/ directory containing agents/skills/tools to install.
|
|
36
|
+
* Resolves relative to the package installation directory (not CWD) so that
|
|
37
|
+
* globally-installed and bundled CLI paths all work correctly (#361).
|
|
36
38
|
*/
|
|
37
39
|
private findSourceDir;
|
|
40
|
+
/**
|
|
41
|
+
* Try to find the package root via require.resolve on our own package.json,
|
|
42
|
+
* then return <root>/.opencode. Returns null if resolution fails.
|
|
43
|
+
*/
|
|
44
|
+
private resolveViaPackageJson;
|
|
45
|
+
/**
|
|
46
|
+
* Check if a directory is a valid source for OpenCode assets
|
|
47
|
+
* (must exist and contain at least an agents/ or skills/ subdirectory)
|
|
48
|
+
*/
|
|
49
|
+
private isValidSourceDir;
|
|
38
50
|
/**
|
|
39
51
|
* Install OpenCode agents, skills, tools, and permissions
|
|
40
52
|
*/
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Installs OpenCode agents, skills, tools, and permissions to user projects
|
|
6
6
|
* when --with-opencode flag is used. Follows the N8n installer pattern.
|
|
7
7
|
*/
|
|
8
|
-
import { existsSync, mkdirSync, readdirSync, writeFileSync, copyFileSync, } from 'fs';
|
|
8
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, copyFileSync, } from 'fs';
|
|
9
9
|
import { join, dirname } from 'path';
|
|
10
10
|
import { fileURLToPath } from 'url';
|
|
11
11
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
@@ -34,24 +34,63 @@ export class OpenCodeInstaller {
|
|
|
34
34
|
// Source Directory Detection
|
|
35
35
|
// ==========================================================================
|
|
36
36
|
/**
|
|
37
|
-
* Find the source .opencode/ directory
|
|
37
|
+
* Find the source .opencode/ directory containing agents/skills/tools to install.
|
|
38
|
+
* Resolves relative to the package installation directory (not CWD) so that
|
|
39
|
+
* globally-installed and bundled CLI paths all work correctly (#361).
|
|
38
40
|
*/
|
|
39
41
|
findSourceDir() {
|
|
42
|
+
const targetDir = join(this.projectRoot, '.opencode');
|
|
40
43
|
const possiblePaths = [
|
|
41
|
-
//
|
|
44
|
+
// From dist/init/ or src/init/ → package root .opencode/
|
|
42
45
|
join(__dirname, '../../.opencode'),
|
|
43
|
-
// From
|
|
44
|
-
join(
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
];
|
|
46
|
+
// From dist/cli/ (bundle) → package root .opencode/
|
|
47
|
+
join(__dirname, '../.opencode'),
|
|
48
|
+
// require.resolve fallback: find the package root via its package.json
|
|
49
|
+
this.resolveViaPackageJson(),
|
|
50
|
+
].filter((p) => p !== null);
|
|
48
51
|
for (const path of possiblePaths) {
|
|
49
|
-
|
|
52
|
+
// Never use the target directory as the source
|
|
53
|
+
if (path === targetDir)
|
|
54
|
+
continue;
|
|
55
|
+
if (this.isValidSourceDir(path)) {
|
|
50
56
|
return path;
|
|
51
57
|
}
|
|
52
58
|
}
|
|
53
|
-
//
|
|
54
|
-
return join(
|
|
59
|
+
// Return the first package path even if not found — install() will report the error
|
|
60
|
+
return possiblePaths[0] ?? join(__dirname, '../../.opencode');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Try to find the package root via require.resolve on our own package.json,
|
|
64
|
+
* then return <root>/.opencode. Returns null if resolution fails.
|
|
65
|
+
*/
|
|
66
|
+
resolveViaPackageJson() {
|
|
67
|
+
try {
|
|
68
|
+
// Walk up from __dirname to find the nearest package.json with our name
|
|
69
|
+
let dir = __dirname;
|
|
70
|
+
for (let i = 0; i < 5; i++) {
|
|
71
|
+
const pkgPath = join(dir, 'package.json');
|
|
72
|
+
if (existsSync(pkgPath)) {
|
|
73
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
74
|
+
if (pkg.name === 'agentic-qe') {
|
|
75
|
+
return join(dir, '.opencode');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
dir = dirname(dir);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// resolution failed
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if a directory is a valid source for OpenCode assets
|
|
88
|
+
* (must exist and contain at least an agents/ or skills/ subdirectory)
|
|
89
|
+
*/
|
|
90
|
+
isValidSourceDir(dir) {
|
|
91
|
+
if (!existsSync(dir))
|
|
92
|
+
return false;
|
|
93
|
+
return existsSync(join(dir, 'agents')) || existsSync(join(dir, 'skills'));
|
|
55
94
|
}
|
|
56
95
|
// ==========================================================================
|
|
57
96
|
// Installation
|
|
@@ -240,9 +279,8 @@ export class OpenCodeInstaller {
|
|
|
240
279
|
mcp: {
|
|
241
280
|
'agentic-qe': {
|
|
242
281
|
type: 'local',
|
|
243
|
-
command: 'npx',
|
|
244
|
-
|
|
245
|
-
env: {
|
|
282
|
+
command: ['npx', 'agentic-qe', 'mcp'],
|
|
283
|
+
environment: {
|
|
246
284
|
AQE_MEMORY_PATH: '.agentic-qe/memory.db',
|
|
247
285
|
AQE_V3_MODE: 'true',
|
|
248
286
|
},
|