synapse-hub 2.2.4 → 2.4.1

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 (312) hide show
  1. package/.agents/agents/failure-analyst.md +11 -0
  2. package/.agents/agents/live-explorer.md +28 -0
  3. package/.agents/agents/orchestrator.md +23 -4
  4. package/.agents/agents/pom-crafter.md +15 -0
  5. package/.agents/agents/quality-gatekeeper.md +20 -4
  6. package/.agents/agents/test-runner.md +12 -0
  7. package/.agents/rules/communication-style.md +40 -0
  8. package/.agents/rules/context-engineering.md +23 -0
  9. package/.agents/rules/git-push-protocol.md +10 -16
  10. package/.agents/rules/graphify.md +14 -14
  11. package/.agents/rules/mandatory-playwright-live.md +29 -29
  12. package/.agents/rules/mobile_appium_rules.md +132 -0
  13. package/.agents/rules/performance_testing_rules.md +74 -0
  14. package/.agents/rules/systematic-debugging.md +6 -6
  15. package/.agents/skills/agent-orchestration-multi-agent-optimize/SKILL.md +64 -215
  16. package/.agents/skills/agent-orchestration-multi-agent-optimize/examples/swarm_workload_config.json +12 -0
  17. package/.agents/skills/antigravity-test-sentinel/SKILL.md +3 -3
  18. package/.agents/skills/antigravity-test-sentinel/examples/dod_gate_policy.json +11 -0
  19. package/.agents/skills/api-network-mocking-interception/SKILL.md +1 -1
  20. package/.agents/skills/api-network-mocking-interception/examples/network_route_stub.json +9 -0
  21. package/.agents/skills/api-spec-to-e2e-matrix/SKILL.md +9 -9
  22. package/.agents/skills/api-spec-to-e2e-matrix/examples/sample_openapi.json +19 -0
  23. package/.agents/skills/architecture-decision-records/SKILL.md +35 -412
  24. package/.agents/skills/architecture-decision-records/examples/0001-record-architecture-decisions.md +12 -0
  25. package/.agents/skills/auth-session-and-cookie-manager/SKILL.md +1 -1
  26. package/.agents/skills/auth-session-and-cookie-manager/examples/storage_state_sample.json +11 -0
  27. package/.agents/skills/backend-load-and-stress-patterns/SKILL.md +80 -186
  28. package/.agents/skills/backend-load-and-stress-patterns/examples/k6_load_test_sample.js +13 -0
  29. package/.agents/skills/bats-testing-patterns/SKILL.md +1 -1
  30. package/.agents/skills/bats-testing-patterns/examples/cli_runner_test.bats +6 -0
  31. package/.agents/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -614
  32. package/.agents/skills/clean-pom-crafter/SKILL.md +21 -3
  33. package/.agents/skills/clean-pom-crafter/examples/standard_test_case.groovy +28 -28
  34. package/.agents/skills/clean-pom-crafter/references/pom_patterns.groovy +138 -138
  35. package/.agents/skills/code-refactoring-refactor-clean/SKILL.md +2 -2
  36. package/.agents/skills/code-refactoring-refactor-clean/examples/refactored_page_sample.groovy +9 -0
  37. package/.agents/skills/db-state-verifier-and-seeder/SKILL.md +5 -5
  38. package/.agents/skills/db-state-verifier-and-seeder/examples/db_fixture_seed.json +12 -0
  39. package/.agents/skills/e2e-testing-patterns/SKILL.md +1 -1
  40. package/.agents/skills/e2e-testing-patterns/examples/playwright_sharded_config.ts +12 -0
  41. package/.agents/skills/e2e-testing-patterns/resources/implementation-playbook.md +522 -522
  42. package/.agents/skills/failure-autopsy-and-healing/SKILL.md +17 -3
  43. package/.agents/skills/failure-autopsy-and-healing/examples/sample_junit_failure.xml +8 -0
  44. package/.agents/skills/failure-autopsy-and-healing/references/healing_matrix.md +64 -64
  45. package/.agents/skills/failure-autopsy-and-healing/references/qa_investigation_protocol.md +56 -56
  46. package/.agents/skills/failure-autopsy-and-healing/scripts/triage_failures.sh +98 -98
  47. package/.agents/skills/file-and-report-validator/SKILL.md +1 -1
  48. package/.agents/skills/file-and-report-validator/examples/sample_export_schema.json +14 -0
  49. package/.agents/skills/flaky-test-sentinel-and-quarantine/SKILL.md +3 -3
  50. package/.agents/skills/flaky-test-sentinel-and-quarantine/examples/quarantine_registry.json +11 -0
  51. package/.agents/skills/gherkin-to-suite/SKILL.md +103 -0
  52. package/.agents/skills/gherkin-to-suite/examples/checkout.feature +39 -0
  53. package/.agents/skills/gherkin-to-suite/examples/suite_report_sample.json +334 -0
  54. package/.agents/skills/github-actions-templates/SKILL.md +47 -304
  55. package/.agents/skills/github-actions-templates/examples/matrix_test_pipeline.yml +8 -0
  56. package/.agents/skills/graphify-impact-analyzer/SKILL.md +6 -6
  57. package/.agents/skills/graphify-impact-analyzer/examples/dependency_blast_radius.json +8 -0
  58. package/.agents/skills/katalon-cli-runner/SKILL.md +2 -2
  59. package/.agents/skills/katalon-cli-runner/examples/headless_kre_exec.sh +3 -0
  60. package/.agents/skills/katalon-cli-runner/references/groovy-patterns.md +209 -209
  61. package/.agents/skills/katalon-cli-runner/references/katalon-api.md +155 -155
  62. package/.agents/skills/katalon-cli-runner/references/runner_commands.md +67 -67
  63. package/.agents/skills/lam-script-generator/SKILL.md +42 -1
  64. package/.agents/skills/lam-script-generator/examples/user_story_sample.md +8 -0
  65. package/.agents/skills/lean-code-ladder/SKILL.md +83 -0
  66. package/.agents/skills/lean-code-ladder/examples/ladder_walkthrough.md +37 -0
  67. package/.agents/skills/meta-prompt-crafter/SKILL.md +107 -0
  68. package/.agents/skills/meta-prompt-crafter/examples/qa_prompt_template.md +35 -0
  69. package/.agents/skills/persistent-planning-files/SKILL.md +108 -0
  70. package/.agents/skills/persistent-planning-files/examples/task_plan_example.md +56 -0
  71. package/.agents/skills/playwright-live-interaction/SKILL.md +49 -1
  72. package/.agents/skills/playwright-live-interaction/examples/live_probe_script.js +5 -0
  73. package/.agents/skills/playwright-live-interaction/references/advanced_superpowers.md +160 -160
  74. package/.agents/skills/playwright-live-interaction/references/compact_accessibility_snapshots.md +75 -75
  75. package/.agents/skills/playwright-live-interaction/references/recipes.md +388 -388
  76. package/.agents/skills/playwright-live-interaction/references/swarm_orchestration.md +134 -134
  77. package/.agents/skills/playwright-webapp-testing/SKILL.md +93 -0
  78. package/.agents/skills/playwright-webapp-testing/examples/server_lifecycle_playwright.py +63 -0
  79. package/.agents/skills/rbt-manual-testing/SKILL.md +150 -0
  80. package/.agents/skills/rbt-manual-testing/examples/checkout_rbt_manual_suite.md +25 -0
  81. package/.agents/skills/security-dast-sentinel/SKILL.md +54 -135
  82. package/.agents/skills/security-dast-sentinel/examples/dast_scan_config.json +10 -0
  83. package/.agents/skills/self-healing-locator/SKILL.md +24 -10
  84. package/.agents/skills/self-healing-locator/examples/aom_diff_sample.json +16 -0
  85. package/.agents/skills/skillspector-security-guard/SKILL.md +32 -90
  86. package/.agents/skills/skillspector-security-guard/examples/safe_mcp_config.json +12 -0
  87. package/.agents/skills/surgical-coding-principles/SKILL.md +89 -0
  88. package/.agents/skills/surgical-coding-principles/examples/surgical_vs_scope_creep.md +46 -0
  89. package/.agents/skills/synthetic-test-data-generator/SKILL.md +3 -3
  90. package/.agents/skills/synthetic-test-data-generator/examples/idempotent_data_recipe.json +9 -0
  91. package/.agents/skills/systematic-debugging/SKILL.md +100 -0
  92. package/.agents/skills/systematic-debugging/examples/four_phase_case.md +44 -0
  93. package/.agents/skills/test-driven-development/SKILL.md +114 -0
  94. package/.agents/skills/test-driven-development/examples/red_green_refactor_qa.md +78 -0
  95. package/.agents/skills/token-and-context-optimizer/SKILL.md +1 -1
  96. package/.agents/skills/token-and-context-optimizer/examples/distilled_log_sample.txt +3 -0
  97. package/.agents/skills/verification-before-completion/SKILL.md +100 -0
  98. package/.agents/skills/verification-before-completion/examples/evidence_log_example.md +46 -0
  99. package/.agents/skills/visual-regression-sentinel/SKILL.md +21 -1
  100. package/.agents/skills/visual-regression-sentinel/examples/visual_mask_rules.json +9 -0
  101. package/.agents/skills/wcag-audit-patterns/SKILL.md +3 -3
  102. package/.agents/skills/wcag-audit-patterns/examples/wcag_compliance_checklist.json +10 -0
  103. package/.agents/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -541
  104. package/.agents/skills/web-vitals-and-performance-profiler/SKILL.md +1 -1
  105. package/.agents/skills/web-vitals-and-performance-profiler/examples/cwv_budget_policy.json +6 -0
  106. package/.agents/templates/completion_report.md +57 -57
  107. package/.agents/workflows/analyze_requirement_document.md +18 -0
  108. package/.agents/workflows/export_testcases_excel.md +32 -0
  109. package/.agents/workflows/generate_combinatorial_test_data.md +28 -0
  110. package/.agents/workflows/generate_cross_module_test_plan.md +37 -0
  111. package/.agents/workflows/generate_manual_testcases_rbt.md +56 -0
  112. package/.agents/workflows/generate_requirements_from_website.md +25 -0
  113. package/.agents/workflows/generate_testcases_from_requirements.md +21 -0
  114. package/.agents/workflows/graphify.md +10 -10
  115. package/.agents/workflows/verify.md +2 -2
  116. package/.cursor/rules/language.mdc +7 -7
  117. package/.cursor/rules/synapse-qa.mdc +23 -0
  118. package/.cursorrules +7 -0
  119. package/.pre-commit-hooks.yaml +14 -0
  120. package/.windsurfrules +7 -0
  121. package/AGENTS.md +54 -15
  122. package/CLAUDE.md +35 -12
  123. package/LICENSE +30 -0
  124. package/NOTICE +180 -0
  125. package/README.en.md +331 -0
  126. package/README.md +252 -515
  127. package/action.yml +51 -0
  128. package/benchmarks/qa_eval/README.md +71 -0
  129. package/benchmarks/qa_eval/build_dataset.py +677 -0
  130. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-06_api_contract_drift.json +22 -0
  131. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-07_api_contract_drift.json +22 -0
  132. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-08_api_contract_drift.json +22 -0
  133. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-09_api_contract_drift.json +22 -0
  134. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-10_api_contract_drift.json +22 -0
  135. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-21_fake_pass_tautology.json +21 -0
  136. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-22_fake_pass_tautology.json +21 -0
  137. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-23_fake_pass_tautology.json +21 -0
  138. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-24_fake_pass_tautology.json +21 -0
  139. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-25_fake_pass_tautology.json +21 -0
  140. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-01_locator_drift.json +23 -0
  141. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-02_locator_drift.json +23 -0
  142. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-03_locator_drift.json +23 -0
  143. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-04_locator_drift.json +23 -0
  144. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-05_locator_drift.json +23 -0
  145. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-16_stale_and_mutation.json +22 -0
  146. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-17_stale_and_mutation.json +22 -0
  147. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-18_stale_and_mutation.json +22 -0
  148. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-19_stale_and_mutation.json +22 -0
  149. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-20_stale_and_mutation.json +23 -0
  150. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-11_timing_and_race.json +22 -0
  151. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-12_timing_and_race.json +22 -0
  152. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-13_timing_and_race.json +22 -0
  153. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-14_timing_and_race.json +22 -0
  154. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-15_timing_and_race.json +22 -0
  155. package/benchmarks/qa_eval/eval_runner.py +418 -0
  156. package/benchmarks/qa_eval/reports/AB_METHODOLOGY_REPORT.md +83 -0
  157. package/benchmarks/qa_eval/reports/BENCHMARK_REPORT.md +69 -0
  158. package/benchmarks/qa_eval/reports/eval_results.json +105 -0
  159. package/bin/agent-qa.js +16 -4
  160. package/docs/ARCHITECTURE.md +107 -0
  161. package/docs/CI_CD_INTEGRATION.md +94 -0
  162. package/docs/CLI_REFERENCE.md +157 -0
  163. package/docs/CONTRIBUTING.md +91 -0
  164. package/docs/PLUGIN_DEVELOPMENT_GUIDE.md +126 -0
  165. package/docs/TOKEN_QUOTA_PLAYBOOK.md +41 -0
  166. package/docs/adopted-ecosystem-tools.md +87 -0
  167. package/docs/schemas/synapse.config.schema.json +64 -0
  168. package/examples/cypress-ecommerce-suite/README.md +45 -0
  169. package/examples/cypress-ecommerce-suite/cypress/e2e/checkout.cy.js +17 -0
  170. package/examples/cypress-ecommerce-suite/cypress/pages/BasePage.js +29 -0
  171. package/examples/cypress-ecommerce-suite/cypress/pages/CartPage.js +51 -0
  172. package/examples/cypress-ecommerce-suite/cypress.config.js +13 -0
  173. package/examples/cypress-ecommerce-suite/package.json +13 -0
  174. package/examples/katalon-suite/Keywords/pages/BasePage.groovy +19 -0
  175. package/examples/katalon-suite/Keywords/pages/DashboardPage.groovy +29 -0
  176. package/examples/katalon-suite/Keywords/pages/LoginPage.groovy +45 -0
  177. package/examples/katalon-suite/Profiles/default.glbl +12 -0
  178. package/examples/katalon-suite/README.md +18 -0
  179. package/examples/katalon-suite/Scripts/Auth/TC_LoginSuccess/Script1234567890.groovy +12 -0
  180. package/examples/katalon-suite/Scripts/Dashboard/TC_ViewSummary/Script1234567891.groovy +15 -0
  181. package/examples/katalon-suite/katalon_suite.prj +21 -0
  182. package/examples/playwright-crm-suite/README.md +40 -0
  183. package/examples/playwright-crm-suite/package.json +14 -0
  184. package/examples/playwright-crm-suite/pages/BasePage.ts +37 -0
  185. package/examples/playwright-crm-suite/pages/CustomerPage.ts +57 -0
  186. package/examples/playwright-crm-suite/pages/LoginPage.ts +32 -0
  187. package/examples/playwright-crm-suite/playwright.config.ts +27 -0
  188. package/examples/playwright-crm-suite/tests/auth.spec.ts +22 -0
  189. package/examples/playwright-crm-suite/tests/customers.spec.ts +33 -0
  190. package/examples/plugins/sample-custom-plugin/README.md +14 -0
  191. package/examples/plugins/sample-custom-plugin/plugin.json +16 -0
  192. package/examples/plugins/sample-custom-plugin/skills/custom-security-headers-audit/SKILL.md +29 -0
  193. package/examples/plugins/sample-custom-plugin/skills/custom-security-headers-audit/examples/audit_fixture.json +8 -0
  194. package/examples/plugins/sample-custom-plugin/tools/custom_security_headers.py +125 -0
  195. package/examples/practices/README.md +22 -0
  196. package/examples/practices/requirements/crm/requirements_contracts.md +292 -0
  197. package/examples/practices/requirements/crm/requirements_customers.md +462 -0
  198. package/examples/practices/requirements/crm/requirements_login.md +202 -0
  199. package/examples/practices/requirements/crm/requirements_projects.md +396 -0
  200. package/examples/practices/requirements/crm/requirements_tasks.md +343 -0
  201. package/examples/practices/requirements/ecommerce/requirements_category_brand.txt +402 -0
  202. package/examples/practices/requirements/jira/KAN-5/KAN-1/2026-04-03_04-28-27.png +0 -0
  203. package/examples/practices/requirements/jira/KAN-5/KAN-1/KAN-1_requirement.md +52 -0
  204. package/examples/practices/requirements/jira/KAN-5/KAN-4/2026-04-03_04-28-19.png +0 -0
  205. package/examples/practices/requirements/jira/KAN-5/KAN-4/2026-04-03_04-28-57.png +0 -0
  206. package/examples/practices/requirements/jira/KAN-5/KAN-4/KAN-4_requirement.md +119 -0
  207. package/examples/practices/requirements/jira/KAN-5/KAN-5_overview.md +9 -0
  208. package/examples/practices/requirements/jira/KAN-5/KAN-6/2026-04-03_05-58-08.png +0 -0
  209. package/examples/practices/requirements/jira/KAN-5/KAN-6/2026-04-03_05-58-23.png +0 -0
  210. package/examples/practices/requirements/jira/KAN-5/KAN-6/KAN-6_requirement.md +32 -0
  211. package/examples/practices/testcases/api/book_management_api_test_cases.md +144 -0
  212. package/examples/practices/testcases/api/user_management_api_test_cases.md +139 -0
  213. package/examples/practices/testcases/crm/test_cases_crm_login.md +148 -0
  214. package/examples/practices/testcases/crm/test_cases_customers.md +156 -0
  215. package/examples/pytest-api-suite/README.md +45 -0
  216. package/examples/pytest-api-suite/conftest.py +31 -0
  217. package/examples/pytest-api-suite/pages/user_api_client.py +36 -0
  218. package/examples/pytest-api-suite/requirements.txt +2 -0
  219. package/examples/pytest-api-suite/tests/test_user_api.py +44 -0
  220. package/examples/selenium-suite/README.md +18 -0
  221. package/examples/selenium-suite/pages/base_page.py +27 -0
  222. package/examples/selenium-suite/pages/login_page.py +29 -0
  223. package/examples/selenium-suite/pages/order_page.py +25 -0
  224. package/examples/selenium-suite/pytest.ini +6 -0
  225. package/examples/selenium-suite/requirements.txt +2 -0
  226. package/examples/selenium-suite/tests/test_login.py +10 -0
  227. package/examples/selenium-suite/tests/test_order.py +10 -0
  228. package/package.json +27 -12
  229. package/scripts/generate_skill_examples.py +244 -0
  230. package/scripts/install.ps1 +112 -0
  231. package/scripts/install_global_plugin.ps1 +94 -0
  232. package/scripts/install_global_plugin.sh +49 -0
  233. package/scripts/lint_skills.ps1 +57 -0
  234. package/scripts/package_dist.py +323 -0
  235. package/scripts/setup.sh +59 -0
  236. package/scripts/update_hub.ps1 +19 -0
  237. package/scripts/update_hub.sh +15 -0
  238. package/skills_manifest.json +209 -6
  239. package/synapse.config.json +30 -0
  240. package/templates/PROJECT_AI_GUIDE_TEMPLATE.md +7 -7
  241. package/templates/PROJECT_STATE_TEMPLATE.md +1 -1
  242. package/templates/ai_bridges/CLAUDE.md +33 -16
  243. package/templates/ai_bridges/copilot-instructions.md +14 -21
  244. package/templates/ai_bridges/cursor_synapse_qa.mdc +17 -20
  245. package/templates/ai_bridges/windsurfrules +21 -21
  246. package/templates/ci/github-actions-synapse.yml +71 -4
  247. package/templates/welcome.html.tmpl +1674 -0
  248. package/tools/.infer_baseline.json +1102 -0
  249. package/tools/TOOLS_RUNBOOK.md +98 -131
  250. package/tools/__init__.py +26 -0
  251. package/tools/agent_canary.py +501 -501
  252. package/tools/analyze_project.py +31 -17
  253. package/tools/api_fuzzer.py +278 -6
  254. package/tools/author_integrity.py +6 -6
  255. package/tools/auto_heal.py +1 -1
  256. package/tools/browser_helpers.js +105 -7
  257. package/tools/bug_reporter.py +31 -1
  258. package/tools/bump_version.py +30 -3
  259. package/tools/cache_resolver.py +248 -14
  260. package/tools/check_env.py +55 -14
  261. package/tools/check_version_sync.py +171 -0
  262. package/tools/ci_healing_hook.py +1 -1
  263. package/tools/cli.py +454 -42
  264. package/tools/count_tokens.py +1257 -0
  265. package/tools/dashboard_generator.py +2638 -0
  266. package/tools/db_sandbox.py +198 -20
  267. package/tools/e2e_flow_prober.ps1 +12 -64
  268. package/tools/e2e_flow_prober.py +99 -0
  269. package/tools/e2e_flow_prober.sh +4 -0
  270. package/tools/flaky_detector.py +4 -3
  271. package/tools/generate_allure_report.ps1 +12 -29
  272. package/tools/generate_allure_report.py +77 -0
  273. package/tools/generate_allure_report.sh +4 -0
  274. package/tools/generate_jmx_plan.py +257 -58
  275. package/tools/generate_test_reports.ps1 +12 -134
  276. package/tools/generate_test_reports.py +133 -0
  277. package/tools/generate_test_reports.sh +4 -0
  278. package/tools/gherkin_suite.py +758 -0
  279. package/tools/git_pre_commit_guard.py +12 -6
  280. package/tools/goldfish_review.py +366 -0
  281. package/tools/heal_pr_automator.py +1 -1
  282. package/tools/heuristic_locator_matcher.py +170 -21
  283. package/tools/infer_linter.py +612 -70
  284. package/tools/lint_ai_docs.py +64 -0
  285. package/tools/matrix_sharder.py +1 -1
  286. package/tools/mcp_excel_server.ps1 +12 -250
  287. package/tools/mcp_excel_server.py +249 -0
  288. package/tools/mcp_excel_server.sh +4 -0
  289. package/tools/mcp_server.py +368 -144
  290. package/tools/md_to_xlsx.py +307 -0
  291. package/tools/micro_mutator.py +302 -69
  292. package/tools/omni_transpiler.py +2 -2
  293. package/tools/output_formatter.py +128 -0
  294. package/tools/pinpoint_failure.py +88 -88
  295. package/tools/project_state.py +2 -2
  296. package/tools/repo_map.py +1 -1
  297. package/tools/safety_firewall.py +196 -45
  298. package/tools/setup_project.py +295 -31
  299. package/tools/skillspector.py +31 -0
  300. package/tools/spec_drift_sentinel.py +439 -0
  301. package/tools/sync_agent_rules.py +248 -0
  302. package/tools/telemetry_correlator.py +45 -0
  303. package/tools/test_impact.py +51 -12
  304. package/tools/tms_sync_bridge.py +21 -5
  305. package/tools/universal_ir.py +3 -0
  306. package/tools/update_sentinel.py +87 -15
  307. package/tools/verify_all.ps1 +13 -0
  308. package/tools/verify_all.py +479 -85
  309. package/tools/visual_diff_canvas.py +1 -0
  310. package/tools/visual_som_helper.py +1 -1
  311. package/tools/watch_mode.py +305 -0
  312. package/tools/welcome_page.py +291 -0
@@ -0,0 +1,244 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Generates standard examples/ directory and realistic fixtures for all skills (Task B3).
4
+ """
5
+
6
+ import os
7
+ import sys
8
+ import json
9
+
10
+ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
11
+ REPO_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, ".."))
12
+ SKILLS_DIR = os.path.join(REPO_ROOT, ".agents", "skills")
13
+
14
+ EXAMPLES_MAP = {
15
+ 'agent-orchestration-multi-agent-optimize': ('swarm_workload_config.json', json.dumps({
16
+ 'swarm': 'LeadQAOrchestrator',
17
+ 'subagents': ['live-explorer', 'pom-crafter', 'test-runner', 'failure-analyst', 'quality-gatekeeper'],
18
+ 'tokenBudgetPerAgent': 1200,
19
+ 'concurrency': 3
20
+ }, indent=2)),
21
+ 'antigravity-test-sentinel': ('dod_gate_policy.json', json.dumps({
22
+ 'policyName': 'Enterprise-DoD-Gate-0-to-8',
23
+ 'enforceGates': ['Gate-0-Integrity', 'Gate-1-UTF8-NoBOM', 'Gate-3-CleanPOM', 'Gate-7-InferLinter', 'Gate-8-MicroMutator'],
24
+ 'minMutationScore': 80.0
25
+ }, indent=2)),
26
+ 'api-network-mocking-interception': ('network_route_stub.json', json.dumps({
27
+ 'route': '**/api/v1/checkout',
28
+ 'method': 'POST',
29
+ 'status': 200,
30
+ 'response': {'orderId': 'ORD-AUTO-998822', 'status': 'CONFIRMED'}
31
+ }, indent=2)),
32
+ 'api-spec-to-e2e-matrix': ('sample_openapi.json', json.dumps({
33
+ 'openapi': '3.0.0',
34
+ 'info': {'title': 'Payment API', 'version': '1.0.0'},
35
+ 'paths': {
36
+ '/payments': {
37
+ 'post': {
38
+ 'summary': 'Create payment',
39
+ 'responses': {'201': {'description': 'Created'}}
40
+ }
41
+ }
42
+ }
43
+ }, indent=2)),
44
+ 'architecture-decision-records': ('0001-record-architecture-decisions.md', """# 1. Record architecture decisions
45
+
46
+ Date: 2026-10-30
47
+
48
+ ## Status
49
+ Accepted
50
+
51
+ ## Context
52
+ We need to record technical architecture decisions in ADR format.
53
+
54
+ ## Decision
55
+ We will use Markdown ADR files stored in docs/adr/.
56
+ """),
57
+ 'auth-session-and-cookie-manager': ('storage_state_sample.json', json.dumps({
58
+ 'cookies': [
59
+ {'name': 'session_id', 'value': 'sess_auto_998', 'domain': 'example.com', 'path': '/'}
60
+ ],
61
+ 'origins': []
62
+ }, indent=2)),
63
+ 'backend-load-and-stress-patterns': ('k6_load_test_sample.js', """import http from 'k6/http';
64
+ import { check, sleep } from 'k6';
65
+
66
+ export const options = {
67
+ vus: 10,
68
+ duration: '30s',
69
+ };
70
+
71
+ export default function () {
72
+ const res = http.get('https://test.k6.io');
73
+ check(res, { 'status was 200': (r) => r.status == 200 });
74
+ sleep(1);
75
+ }
76
+ """),
77
+ 'bats-testing-patterns': ('cli_runner_test.bats', """#!/usr/bin/env bats
78
+
79
+ @test 'verify CLI returns version' {
80
+ run python3 tools/cli.py --version
81
+ [ "$status" -eq 0 ]
82
+ }
83
+ """),
84
+ 'code-refactoring-refactor-clean': ('refactored_page_sample.groovy', """package pages
85
+
86
+ class UserManagementPage extends BasePage {
87
+ static final String USER_TABLE_ROW = "table#users tbody tr"
88
+
89
+ static boolean verifyUserActive(String email) {
90
+ return verifyElementPresent(uniqueLocator(USER_TABLE_ROW, email))
91
+ }
92
+ }
93
+ """),
94
+ 'db-state-verifier-and-seeder': ('db_fixture_seed.json', json.dumps({
95
+ 'table': 'tenants',
96
+ 'operation': 'INSERT',
97
+ 'records': [
98
+ {'tenant_id': 'AUTO_TENANT_01', 'status': 'ACTIVE', 'plan': 'ENTERPRISE'}
99
+ ],
100
+ 'teardown': 'DELETE FROM tenants WHERE tenant_id = :tenant_id'
101
+ }, indent=2)),
102
+ 'e2e-testing-patterns': ('playwright_sharded_config.ts', """import { defineConfig, devices } from '@playwright/test';
103
+
104
+ export default defineConfig({
105
+ testDir: './tests',
106
+ fullyParallel: true,
107
+ retries: 2,
108
+ workers: process.env.CI ? 4 : undefined,
109
+ use: {
110
+ headless: true,
111
+ trace: 'on-first-retry',
112
+ },
113
+ });
114
+ """),
115
+ 'failure-autopsy-and-healing': ('sample_junit_failure.xml', """<?xml version="1.0" encoding="UTF-8"?>
116
+ <testsuites>
117
+ <testsuite name="AuthenticationSuite" tests="1" failures="1">
118
+ <testcase name="testLoginFailure" classname="AuthTest">
119
+ <failure message="Timeout 30000ms exceeded waiting for locator('#submit-btn')" type="ElementNotFoundError"/>
120
+ </testcase>
121
+ </testsuite>
122
+ </testsuites>
123
+ """),
124
+ 'file-and-report-validator': ('sample_export_schema.json', json.dumps({
125
+ 'expectedHeaders': ['Order ID', 'Customer Name', 'Amount', 'Date', 'Status'],
126
+ 'rowCountRange': [1, 5000],
127
+ 'dateFormat': 'YYYY-MM-DD'
128
+ }, indent=2)),
129
+ 'flaky-test-sentinel-and-quarantine': ('quarantine_registry.json', json.dumps({
130
+ 'quarantinedTests': [
131
+ {
132
+ 'testId': 'TC-CHECKOUT-881',
133
+ 'flakinessScore': 0.35,
134
+ 'reason': 'Intermittent 3rd-party payment gateway timeout',
135
+ 'quarantineDate': '2026-10-30',
136
+ 'ticket': 'QA-1204'
137
+ }
138
+ ]
139
+ }, indent=2)),
140
+ 'github-actions-templates': ('matrix_test_pipeline.yml', """name: Automated E2E Matrix
141
+ on: [push, pull_request]
142
+ jobs:
143
+ test:
144
+ runs-on: ubuntu-latest
145
+ steps:
146
+ - uses: actions/checkout@v4
147
+ - run: npx playwright test
148
+ """),
149
+ 'graphify-impact-analyzer': ('dependency_blast_radius.json', json.dumps({
150
+ 'modifiedFile': 'src/pages/CheckoutPage.ts',
151
+ 'impactedSuites': ['tests/e2e/checkout.spec.ts', 'tests/e2e/payment.spec.ts'],
152
+ 'blastRadiusScore': 'LOW_ISOLATED'
153
+ }, indent=2)),
154
+ 'katalon-cli-runner': ('headless_kre_exec.sh', """#!/bin/sh
155
+ # Execute headless Katalon suite with automatic process cleanup
156
+ katalonc -noSplash -runMode=console -projectPath="$1" -testSuitePath="Test Suites/SmokeSuite" -browserType="Chrome (headless)"
157
+ """),
158
+ 'lam-script-generator': ('user_story_sample.md', """# User Story: User Password Reset Flow
159
+ As a registered customer,
160
+ I want to request a password reset email,
161
+ So that I can regain access if I forget my password.
162
+
163
+ ## Acceptance Criteria:
164
+ 1. Submitting registered email displays "Reset link dispatched".
165
+ 2. Submitting empty email highlights field in red with validation error.
166
+ """),
167
+ 'playwright-live-interaction': ('live_probe_script.js', """// Playwright Live Interactive Probe Helper
168
+ const targetLocator = page.locator("[data-testid='submit-order']");
169
+ const isVisible = await targetLocator.isVisible();
170
+ const boundingBox = await targetLocator.boundingBox();
171
+ console.log({ isVisible, boundingBox });
172
+ """),
173
+ 'security-dast-sentinel': ('dast_scan_config.json', json.dumps({
174
+ 'targetUrl': 'https://staging.internal.example.com',
175
+ 'checks': ['OWASP_TOP_10', 'HEADER_SECURITY', 'TOKEN_EXPOSURE', 'SQLI_PROBING'],
176
+ 'failOnSeverity': 'HIGH'
177
+ }, indent=2)),
178
+ 'self-healing-locator': ('aom_diff_sample.json', json.dumps({
179
+ 'brokenLocator': '#old-checkout-btn',
180
+ 'historicalAttributes': {'role': 'button', 'text': 'Confirm Order', 'testid': 'checkout-submit'},
181
+ 'currentAOMSnapshot': [
182
+ {'role': 'button', 'name': 'Confirm Order', 'testid': 'checkout-submit-v2'}
183
+ ],
184
+ 'healedLocator': "button[data-testid='checkout-submit-v2']"
185
+ }, indent=2)),
186
+ 'skillspector-security-guard': ('safe_mcp_config.json', json.dumps({
187
+ 'mcpServers': {
188
+ 'playwright-live': {
189
+ 'command': 'npx',
190
+ 'args': ['-y', '@modelcontextprotocol/server-playwright'],
191
+ 'sandboxPolicy': 'HEADLESS_VIRTUAL_DISPLAY'
192
+ }
193
+ }
194
+ }, indent=2)),
195
+ 'synthetic-test-data-generator': ('idempotent_data_recipe.json', json.dumps({
196
+ 'entity': 'user',
197
+ 'prefix': 'AUTO_',
198
+ 'timestampPattern': 'EPOCH_MS',
199
+ 'fields': {
200
+ 'email': 'AUTO_USER@example-qa.com',
201
+ 'phone': '+15551234567'
202
+ }
203
+ }, indent=2)),
204
+ 'token-and-context-optimizer': ('distilled_log_sample.txt', """[RAW CLI LOG: 3,200 lines truncated by distill_log.py]
205
+ FAILED tests/checkout.spec.ts:42:15 -> TimeoutError: Waiting for selector `button.order-confirm`
206
+ Status: 1 failed, 12 passed in 14.2s
207
+ """),
208
+ 'visual-regression-sentinel': ('visual_mask_rules.json', json.dumps({
209
+ 'maskSelectors': ['.dynamic-timestamp', '.live-chart-canvas', '.user-avatar-badge'],
210
+ 'thresholdSSIM': 0.98,
211
+ 'maxDiffPixels': 25
212
+ }, indent=2)),
213
+ 'wcag-audit-patterns': ('wcag_compliance_checklist.json', json.dumps({
214
+ 'conformanceLevel': 'AA',
215
+ 'criteria': ['1.4.3 Contrast (Minimum)', '2.1.1 Keyboard', '2.4.7 Focus Visible', '4.1.2 Name, Role, Value'],
216
+ 'auditTool': 'axe-core'
217
+ }, indent=2)),
218
+ 'web-vitals-and-performance-profiler': ('cwv_budget_policy.json', json.dumps({
219
+ 'LCP_ms': 2500,
220
+ 'CLS_score': 0.1,
221
+ 'INP_ms': 200,
222
+ 'networkThrottle': 'Fast 3G'
223
+ }, indent=2))
224
+ }
225
+
226
+
227
+ def main():
228
+ try:
229
+ sys.stdout.reconfigure(encoding='utf-8')
230
+ except Exception:
231
+ pass
232
+ count = 0
233
+ for skill, (filename, content) in EXAMPLES_MAP.items():
234
+ ex_dir = os.path.join(SKILLS_DIR, skill, 'examples')
235
+ os.makedirs(ex_dir, exist_ok=True)
236
+ fpath = os.path.join(ex_dir, filename)
237
+ with open(fpath, 'w', encoding='utf-8') as f:
238
+ f.write(content)
239
+ count += 1
240
+ print(f"[OK] Generated examples for {count} skills.")
241
+
242
+
243
+ if __name__ == "__main__":
244
+ main()
@@ -0,0 +1,112 @@
1
+ <#
2
+ .SYNOPSIS
3
+ One-click setup and dependency bootstrap script for Enterprise Agent-Skills Hub.
4
+ .DESCRIPTION
5
+ Detects and installs Python, Node.js, Playwright, sets up a clean virtual environment,
6
+ installs requirements.txt, and verifies the full 38-skill catalog.
7
+ #>
8
+
9
+ [CmdletBinding()]
10
+ param(
11
+ [switch]$ForceInstall = $false
12
+ )
13
+
14
+ Write-Host "==========================================================" -ForegroundColor Cyan
15
+ Write-Host " Enterprise Agent-Skills Hub: Automated Bootstrap Setup " -ForegroundColor Cyan
16
+ Write-Host "==========================================================" -ForegroundColor Cyan
17
+
18
+ $repoRoot = Split-Path -Parent $PSScriptRoot
19
+ Set-Location $repoRoot
20
+
21
+ # 1. Verify / Install Python
22
+ Write-Host "`n[1/5] Checking Python 3 Runtime..." -ForegroundColor Yellow
23
+ $py = $null
24
+ foreach ($cmd in @("python", "python3", "py")) {
25
+ try {
26
+ $v = & $cmd --version 2>&1
27
+ if ($LASTEXITCODE -eq 0 -and $v -match "Python\s+3\.(1[0-9]|[2-9][0-9])") {
28
+ $py = $cmd
29
+ Write-Host " [OK] Found Python: $v" -ForegroundColor Green
30
+ break
31
+ }
32
+ } catch { }
33
+ }
34
+
35
+ if (-not $py) {
36
+ Write-Host " [WARN] Python 3.10+ not found in PATH." -ForegroundColor Yellow
37
+ Write-Host " Attempting automated installation via winget..." -ForegroundColor Cyan
38
+ try {
39
+ winget install -e --id Python.Python.3.11 --accept-source-agreements --accept-package-agreements --scope currentUser
40
+ Write-Host " [OK] Python 3.11 installed. Please restart your shell if PATH is not updated." -ForegroundColor Green
41
+ } catch {
42
+ Write-Host " [FAIL] Could not auto-install Python. Please install from https://python.org" -ForegroundColor Red
43
+ }
44
+ }
45
+
46
+ # 2. Virtual Environment Setup
47
+ Write-Host "`n[2/5] Setting up Virtual Environment (.venv)..." -ForegroundColor Yellow
48
+ $venvDir = Join-Path $repoRoot ".venv"
49
+ if (-not (Test-Path $venvDir) -and $py) {
50
+ Write-Host " Creating virtual environment at $venvDir..." -ForegroundColor Cyan
51
+ & $py -m venv $venvDir
52
+ }
53
+
54
+ $venvPython = if ($IsWindows -or $env:OS -match "Windows") {
55
+ Join-Path $venvDir "Scripts\python.exe"
56
+ } else {
57
+ Join-Path $venvDir "bin/python"
58
+ }
59
+
60
+ # 3. Pip Dependencies
61
+ Write-Host "`n[3/5] Installing Core Python Dependencies..." -ForegroundColor Yellow
62
+ $reqFile = Join-Path $repoRoot "requirements.txt"
63
+ if (Test-Path $venvPython) {
64
+ Write-Host " Upgrading pip & wheel..." -ForegroundColor Cyan
65
+ & $venvPython -m pip install --upgrade pip setuptools wheel --quiet
66
+ if (Test-Path $reqFile) {
67
+ Write-Host " Installing requirements from requirements.txt..." -ForegroundColor Cyan
68
+ & $venvPython -m pip install -r $reqFile --quiet
69
+ Write-Host " [OK] Dependencies installed in .venv" -ForegroundColor Green
70
+ }
71
+ } elseif ($py) {
72
+ Write-Host " Installing requirements using system $py..." -ForegroundColor Cyan
73
+ & $py -m pip install -r $reqFile --quiet
74
+ } else {
75
+ Write-Host " [SKIP] Skipping pip install: Python runtime not yet active." -ForegroundColor Yellow
76
+ }
77
+
78
+ # 4. Check Node.js / Playwright
79
+ Write-Host "`n[4/5] Checking Node.js & Playwright CLI..." -ForegroundColor Yellow
80
+ try {
81
+ $nodeVer = & node --version 2>&1
82
+ Write-Host " [OK] Found Node.js: $nodeVer" -ForegroundColor Green
83
+ } catch {
84
+ Write-Host " [INFO] Node.js not detected. Optional for standalone Python tools, required for Playwright MCP." -ForegroundColor Gray
85
+ }
86
+
87
+ # 5. Run Quality Gate Linting
88
+ Write-Host "`n[5/6] Running Quality Gate & Skill Integrity Verification..." -ForegroundColor Yellow
89
+ $linter = Join-Path $repoRoot "scripts\lint_skills.ps1"
90
+ if (Test-Path $linter) {
91
+ & powershell -ExecutionPolicy Bypass -File $linter
92
+ }
93
+
94
+ # 6. Initialize SQLite Central Agent Memory
95
+ Write-Host "`n[6/6] Initializing Global Central Agent Memory (~/.agent_memory/global_cache.db)..." -ForegroundColor Yellow
96
+ $cacheTool = Join-Path $repoRoot "tools\cache_resolver.py"
97
+ if (Test-Path $cacheTool) {
98
+ try {
99
+ if (Test-Path $venvPython) {
100
+ & $venvPython $cacheTool init
101
+ } elseif ($py) {
102
+ & $py $cacheTool init
103
+ }
104
+ Write-Host " [OK] Central Agent Memory initialized and seeded." -ForegroundColor Green
105
+ } catch {
106
+ Write-Host " [WARN] Could not initialize ~/.agent_memory/global_cache.db: $_" -ForegroundColor Yellow
107
+ }
108
+ }
109
+
110
+ Write-Host "`n==========================================================" -ForegroundColor Cyan
111
+ Write-Host " Bootstrap Complete! Hub is ready for Multi-Agent Swarm. " -ForegroundColor Green
112
+ Write-Host "==========================================================" -ForegroundColor Cyan
@@ -0,0 +1,94 @@
1
+ # Enterprise Synapse-Hub Global Antigravity Plugin Installer (Windows)
2
+ # ======================================================================
3
+ # Mounts Synapse-Hub directly into Google Antigravity's Global Plugin Directory.
4
+ # Once installed, all 38 skills and 6 subagents are active across all projects automatically.
5
+
6
+ [CmdletBinding()]
7
+ param()
8
+
9
+ $ErrorActionPreference = "Stop"
10
+ $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
11
+ $RepoRoot = Resolve-Path "$ScriptDir\.."
12
+
13
+ Write-Host "`n======================================================================" -ForegroundColor Cyan
14
+ Write-Host " SYNAPSE-HUB: ANTIGRAVITY GLOBAL PLUGIN 1-CLICK INSTALLER " -ForegroundColor Cyan
15
+ Write-Host "======================================================================`n" -ForegroundColor Cyan
16
+
17
+ $PluginsDir = "$HOME\.gemini\config\plugins"
18
+ $TargetPluginDir = "$PluginsDir\synapse-hub"
19
+
20
+ if (-not (Test-Path $PluginsDir)) {
21
+ Write-Host "[1/5] Creating Antigravity plugins directory: $PluginsDir" -ForegroundColor Yellow
22
+ New-Item -ItemType Directory -Path $PluginsDir -Force | Out-Null
23
+ } else {
24
+ Write-Host "[1/5] Antigravity plugins directory verified: $PluginsDir" -ForegroundColor Green
25
+ }
26
+
27
+ # Ensure clean target directory
28
+ if (-not (Test-Path $TargetPluginDir)) {
29
+ Write-Host "[2/5] Creating plugin bundle directory: $TargetPluginDir" -ForegroundColor Yellow
30
+ New-Item -ItemType Directory -Path $TargetPluginDir -Force | Out-Null
31
+ } else {
32
+ Write-Host "[2/5] Plugin bundle directory exists: $TargetPluginDir" -ForegroundColor Green
33
+ }
34
+
35
+ # 1. Copy plugin.json & README.md
36
+ Write-Host "[3/5] Copying plugin manifest (plugin.json)..." -ForegroundColor Yellow
37
+ Copy-Item "$RepoRoot\plugin.json" "$TargetPluginDir\plugin.json" -Force
38
+ if (Test-Path "$RepoRoot\README.md") {
39
+ Copy-Item "$RepoRoot\README.md" "$TargetPluginDir\README.md" -Force
40
+ }
41
+
42
+ # 2. Setup skills and agents via NTFS Junctions (Instant, zero duplication)
43
+ Write-Host "[4/5] Linking skills, agents, and rules into Global Plugin..." -ForegroundColor Yellow
44
+
45
+ $SkillsLink = "$TargetPluginDir\skills"
46
+ $AgentsLink = "$TargetPluginDir\agents"
47
+ $ToolsLink = "$TargetPluginDir\tools"
48
+ $RulesDir = "$TargetPluginDir\rules"
49
+
50
+ # Skills Junction
51
+ if (Test-Path $SkillsLink) {
52
+ (Get-Item $SkillsLink).Delete()
53
+ }
54
+ New-Item -ItemType Junction -Path $SkillsLink -Target "$RepoRoot\.agents\skills" | Out-Null
55
+ Write-Host " • Linked skills : $SkillsLink -> $RepoRoot\.agents\skills" -ForegroundColor Green
56
+
57
+ # Agents Junction
58
+ if (Test-Path $AgentsLink) {
59
+ (Get-Item $AgentsLink).Delete()
60
+ }
61
+ New-Item -ItemType Junction -Path $AgentsLink -Target "$RepoRoot\.agents\agents" | Out-Null
62
+ Write-Host " • Linked agents : $AgentsLink -> $RepoRoot\.agents\agents" -ForegroundColor Green
63
+
64
+ # Tools Junction
65
+ if (Test-Path $ToolsLink) {
66
+ (Get-Item $ToolsLink).Delete()
67
+ }
68
+ New-Item -ItemType Junction -Path $ToolsLink -Target "$RepoRoot\tools" | Out-Null
69
+ Write-Host " • Linked tools : $ToolsLink -> $RepoRoot\tools" -ForegroundColor Green
70
+
71
+ # Rules directory & AGENTS.md
72
+ if (-not (Test-Path $RulesDir)) {
73
+ New-Item -ItemType Directory -Path $RulesDir -Force | Out-Null
74
+ }
75
+ Copy-Item "$RepoRoot\AGENTS.md" "$RulesDir\AGENTS.md" -Force
76
+ Write-Host " • Deployed rules : $RulesDir\AGENTS.md" -ForegroundColor Green
77
+
78
+ # 3. Initialize SQLite Cache
79
+ Write-Host "`n[5/5] Initializing Central Agent Memory (SQLite Cache)..." -ForegroundColor Yellow
80
+ try {
81
+ python "$RepoRoot\tools\cache_resolver.py" init
82
+ } catch {
83
+ Write-Host " (Notice: cache_resolver init will run when Python is invoked)" -ForegroundColor DarkGray
84
+ }
85
+
86
+ Write-Host "`n======================================================================" -ForegroundColor Cyan
87
+ Write-Host " 🎉 SUCCESS: Synapse-Hub is now installed as a GLOBAL PLUGIN! " -ForegroundColor Green
88
+ Write-Host "======================================================================" -ForegroundColor Cyan
89
+ Write-Host "• Location : $TargetPluginDir" -ForegroundColor White
90
+ Write-Host "• Skills : 27 Standardized QA Skills" -ForegroundColor White
91
+ Write-Host "• Agents : 6 Swarm Subagent Profiles" -ForegroundColor White
92
+ Write-Host "`n👉 Antigravity will now automatically load Synapse-Hub across ALL projects" -ForegroundColor Yellow
93
+ Write-Host " without needing to add Synapse-Hub as a workspace folder!" -ForegroundColor Yellow
94
+ Write-Host "======================================================================`n" -ForegroundColor Cyan
@@ -0,0 +1,49 @@
1
+ #!/bin/bash
2
+ # Enterprise Synapse-Hub Global Antigravity Plugin Installer (macOS / Linux)
3
+ # ======================================================================
4
+ # Mounts Synapse-Hub directly into Google Antigravity's Global Plugin Directory.
5
+ # Once installed, all 38 skills and 6 subagents are active across all projects automatically.
6
+
7
+ set -e
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
10
+
11
+ echo ""
12
+ echo "======================================================================"
13
+ echo " SYNAPSE-HUB: ANTIGRAVITY GLOBAL PLUGIN 1-CLICK INSTALLER "
14
+ echo "======================================================================"
15
+ echo ""
16
+
17
+ PLUGINS_DIR="$HOME/.gemini/config/plugins"
18
+ TARGET_PLUGIN_DIR="$PLUGINS_DIR/synapse-hub"
19
+
20
+ mkdir -p "$PLUGINS_DIR"
21
+ mkdir -p "$TARGET_PLUGIN_DIR"
22
+
23
+ echo "[1/4] Copying plugin manifest..."
24
+ cp "$REPO_ROOT/plugin.json" "$TARGET_PLUGIN_DIR/plugin.json"
25
+ [ -f "$REPO_ROOT/README.md" ] && cp "$REPO_ROOT/README.md" "$TARGET_PLUGIN_DIR/README.md"
26
+
27
+ echo "[2/4] Symlinking skills, agents, and tools..."
28
+ ln -sfn "$REPO_ROOT/.agents/skills" "$TARGET_PLUGIN_DIR/skills"
29
+ ln -sfn "$REPO_ROOT/.agents/agents" "$TARGET_PLUGIN_DIR/agents"
30
+ ln -sfn "$REPO_ROOT/tools" "$TARGET_PLUGIN_DIR/tools"
31
+
32
+ mkdir -p "$TARGET_PLUGIN_DIR/rules"
33
+ cp "$REPO_ROOT/AGENTS.md" "$TARGET_PLUGIN_DIR/rules/AGENTS.md"
34
+
35
+ echo "[3/4] Initializing Central Agent Memory (SQLite Cache)..."
36
+ python3 "$REPO_ROOT/tools/cache_resolver.py" init 2>/dev/null || python "$REPO_ROOT/tools/cache_resolver.py" init 2>/dev/null || true
37
+
38
+ echo ""
39
+ echo "======================================================================"
40
+ echo " 🎉 SUCCESS: Synapse-Hub is now installed as a GLOBAL PLUGIN! "
41
+ echo "======================================================================"
42
+ echo "• Location : $TARGET_PLUGIN_DIR"
43
+ echo "• Skills : 27 Standardized QA Skills"
44
+ echo "• Agents : 6 Swarm Subagent Profiles"
45
+ echo ""
46
+ echo "👉 Antigravity will now automatically load Synapse-Hub across ALL projects"
47
+ echo " without needing to add Synapse-Hub as a workspace folder!"
48
+ echo "======================================================================"
49
+ echo ""
@@ -0,0 +1,57 @@
1
+ <#
2
+ .SYNOPSIS
3
+ Automated validation test for all skills in Agent-Skills Hub.
4
+ .DESCRIPTION
5
+ Checks presence of SKILL.md, valid frontmatter (name, description), and verifies skills_manifest.json.
6
+ #>
7
+
8
+ Write-Host "==========================================================" -ForegroundColor Cyan
9
+ Write-Host " Agent-Skills Quality & Integrity Linter " -ForegroundColor Cyan
10
+ Write-Host "==========================================================" -ForegroundColor Cyan
11
+
12
+ $skillsDir = Join-Path $PSScriptRoot "..\.agents\skills"
13
+ $manifestPath = Join-Path $PSScriptRoot "..\skills_manifest.json"
14
+
15
+ $passed = 0
16
+ $failed = 0
17
+
18
+ if (-not (Test-Path $manifestPath)) {
19
+ Write-Host "[FAIL] Missing skills_manifest.json!" -ForegroundColor Red
20
+ exit 1
21
+ }
22
+
23
+ $manifest = Get-Content $manifestPath -Raw | ConvertFrom-Json
24
+ Write-Host "[INFO] Manifest loaded: $($manifest.totalSkills) declared skills." -ForegroundColor Gray
25
+
26
+ $skillDirs = Get-ChildItem -Path $skillsDir -Directory
27
+
28
+ foreach ($dir in $skillDirs) {
29
+ $skillMd = Join-Path $dir.FullName "SKILL.md"
30
+ if (-not (Test-Path $skillMd)) {
31
+ Write-Host "[FAIL] $($dir.Name): Missing SKILL.md" -ForegroundColor Red
32
+ $failed++
33
+ continue
34
+ }
35
+
36
+ $content = Get-Content $skillMd -Raw
37
+ $hasName = $content -match "name:\s*[\w\-\s]+"
38
+ $hasDesc = $content -match "description:\s*.+"
39
+
40
+ if ($hasName -and $hasDesc) {
41
+ Write-Host "[PASS] $($dir.Name) - Valid Frontmatter" -ForegroundColor Green
42
+ $passed++
43
+ } else {
44
+ Write-Host "[FAIL] $($dir.Name) - Invalid or missing YAML frontmatter" -ForegroundColor Red
45
+ $failed++
46
+ }
47
+ }
48
+
49
+ Write-Host "----------------------------------------------------------" -ForegroundColor Cyan
50
+ Write-Host "Verification Results: $passed Passed, $failed Failed." -ForegroundColor $(if ($failed -eq 0) { "Green" } else { "Red" })
51
+ Write-Host "----------------------------------------------------------" -ForegroundColor Cyan
52
+
53
+ if ($failed -gt 0) {
54
+ exit 1
55
+ } else {
56
+ exit 0
57
+ }