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
@@ -1,441 +1,64 @@
1
1
  ---
2
2
  name: architecture-decision-records
3
- description: "Record, structure, and maintain technical Architecture Decision Records (ADRs)."
3
+ description: "Record, structure, and maintain technical Architecture Decision Records (ADRs). Use when documenting significant architecture decisions as ADRs."
4
4
  ---
5
5
 
6
- # Architecture Decision Records
6
+ # Architecture Decision Records (ADR) Skill
7
7
 
8
- Comprehensive patterns for creating, maintaining, and managing Architecture Decision Records (ADRs) that capture the context and rationale behind significant technical decisions.
8
+ > **Target:** Standardize technical decision logs, architectural trade-offs, and design rationale across enterprise testing platforms.
9
9
 
10
- ## Use this skill when
11
-
12
- - Making significant architectural decisions
13
- - Documenting technology choices
14
- - Recording design trade-offs
15
- - Onboarding new team members
16
- - Reviewing historical decisions
17
- - Establishing decision-making processes
18
-
19
- ## Do not use this skill when
20
-
21
- - You only need to document small implementation details
22
- - The change is a minor patch or routine maintenance
23
- - There is no architectural decision to capture
24
-
25
- ## Instructions
26
-
27
- 1. Capture the decision context, constraints, and drivers.
28
- 2. Document considered options with tradeoffs.
29
- 3. Record the decision, rationale, and consequences.
30
- 4. Link related ADRs and update status over time.
31
-
32
- ## Core Concepts
33
-
34
- ### 1. What is an ADR?
10
+ ---
35
11
 
36
- An Architecture Decision Record captures:
37
- - **Context**: Why we needed to make a decision
38
- - **Decision**: What we decided
39
- - **Consequences**: What happens as a result
12
+ ## 1. When to Use
40
13
 
41
- ### 2. When to Write an ADR
14
+ - Documenting significant framework, toolchain, or database decisions.
15
+ - Recording architecture changes (e.g. Clean POM flat architecture vs BDD layer).
16
+ - Capturing security, authentication, or CI/CD migration trade-offs.
17
+ - Onboarding engineers and providing institutional architectural memory.
42
18
 
43
- | Write ADR | Skip ADR |
44
- |-----------|----------|
45
- | New framework adoption | Minor version upgrades |
46
- | Database technology choice | Bug fixes |
47
- | API design patterns | Implementation details |
48
- | Security architecture | Routine maintenance |
49
- | Integration patterns | Configuration changes |
19
+ ---
50
20
 
51
- ### 3. ADR Lifecycle
21
+ ## 2. ADR Lifecycle State Machine
52
22
 
23
+ ```mermaid
24
+ stateDiagram-v2
25
+ Proposed --> Accepted: Team Approval
26
+ Proposed --> Rejected: Review Decision
27
+ Accepted --> Deprecated: Superseded / EOL
28
+ Accepted --> Superseded: Replaced by New ADR
53
29
  ```
54
- Proposed → Accepted → Deprecated → Superseded
55
- ↓
56
- Rejected
57
- ```
58
30
 
59
- ## Templates
31
+ ---
32
+
33
+ ## 3. Standard Lightweight ADR Format
60
34
 
61
- ### Template 1: Standard ADR (MADR Format)
35
+ Create decision records inside `docs/adr/ADR-XXXX-<title>.md`:
62
36
 
63
37
  ```markdown
64
- # ADR-0001: Use PostgreSQL as Primary Database
38
+ # ADR-0001: Adopt Clean POM Flat Architecture
65
39
 
66
40
  ## Status
67
-
68
41
  Accepted
69
42
 
70
43
  ## Context
71
-
72
- We need to select a primary database for our new e-commerce platform. The system
73
- will handle:
74
- - ~10,000 concurrent users
75
- - Complex product catalog with hierarchical categories
76
- - Transaction processing for orders and payments
77
- - Full-text search for products
78
- - Geospatial queries for store locator
79
-
80
- The team has experience with MySQL, PostgreSQL, and MongoDB. We need ACID
81
- compliance for financial transactions.
82
-
83
- ## Decision Drivers
84
-
85
- * **Must have ACID compliance** for payment processing
86
- * **Must support complex queries** for reporting
87
- * **Should support full-text search** to reduce infrastructure complexity
88
- * **Should have good JSON support** for flexible product attributes
89
- * **Team familiarity** reduces onboarding time
90
-
91
- ## Considered Options
92
-
93
- ### Option 1: PostgreSQL
94
- - **Pros**: ACID compliant, excellent JSON support (JSONB), built-in full-text
95
- search, PostGIS for geospatial, team has experience
96
- - **Cons**: Slightly more complex replication setup than MySQL
97
-
98
- ### Option 2: MySQL
99
- - **Pros**: Very familiar to team, simple replication, large community
100
- - **Cons**: Weaker JSON support, no built-in full-text search (need
101
- Elasticsearch), no geospatial without extensions
102
-
103
- ### Option 3: MongoDB
104
- - **Pros**: Flexible schema, native JSON, horizontal scaling
105
- - **Cons**: No ACID for multi-document transactions (at decision time),
106
- team has limited experience, requires schema design discipline
44
+ E2E automated test suites suffered from high maintenance overhead, locator duplication, and flaky runs caused by deeply nested inheritance hierarchies and raw selectors scattered across test scripts.
107
45
 
108
46
  ## Decision
109
-
110
- We will use **PostgreSQL 15** as our primary database.
111
-
112
- ## Rationale
113
-
114
- PostgreSQL provides the best balance of:
115
- 1. **ACID compliance** essential for e-commerce transactions
116
- 2. **Built-in capabilities** (full-text search, JSONB, PostGIS) reduce
117
- infrastructure complexity
118
- 3. **Team familiarity** with SQL databases reduces learning curve
119
- 4. **Mature ecosystem** with excellent tooling and community support
120
-
121
- The slight complexity in replication is outweighed by the reduction in
122
- additional services (no separate Elasticsearch needed).
47
+ Enforce a 2-tier Clean Page Object Model:
48
+ 1. All test scripts live in `tests/` and contain only business action calls.
49
+ 2. All locators and DOM operations live in Page Classes inheriting directly from `BasePage`.
50
+ 3. Raw XPaths and CSS selectors are strictly prohibited in test scripts.
123
51
 
124
52
  ## Consequences
125
-
126
- ### Positive
127
- - Single database handles transactions, search, and geospatial queries
128
- - Reduced operational complexity (fewer services to manage)
129
- - Strong consistency guarantees for financial data
130
- - Team can leverage existing SQL expertise
131
-
132
- ### Negative
133
- - Need to learn PostgreSQL-specific features (JSONB, full-text search syntax)
134
- - Vertical scaling limits may require read replicas sooner
135
- - Some team members need PostgreSQL-specific training
136
-
137
- ### Risks
138
- - Full-text search may not scale as well as dedicated search engines
139
- - Mitigation: Design for potential Elasticsearch addition if needed
140
-
141
- ## Implementation Notes
142
-
143
- - Use JSONB for flexible product attributes
144
- - Implement connection pooling with PgBouncer
145
- - Set up streaming replication for read replicas
146
- - Use pg_trgm extension for fuzzy search
147
-
148
- ## Related Decisions
149
-
150
- - ADR-0002: Caching Strategy (Redis) - complements database choice
151
- - ADR-0005: Search Architecture - may supersede if Elasticsearch needed
152
-
153
- ## References
154
-
155
- - [PostgreSQL JSON Documentation](https://www.postgresql.org/docs/current/datatype-json.html)
156
- - [PostgreSQL Full Text Search](https://www.postgresql.org/docs/current/textsearch.html)
157
- - Internal: Performance benchmarks in `/docs/benchmarks/database-comparison.md`
53
+ - **Positive:** Zero locator duplication, modular self-healing, faster onboarding.
54
+ - **Negative:** Requires refactoring legacy tests to encapsulate DOM calls into Page Classes.
55
+ - **Compliance:** Enforced in CI via `tools/verify_all.py` (Gate 3).
158
56
  ```
159
57
 
160
- ### Template 2: Lightweight ADR
161
-
162
- ```markdown
163
- # ADR-0012: Adopt TypeScript for Frontend Development
164
-
165
- **Status**: Accepted
166
- **Date**: 2024-01-15
167
- **Deciders**: @alice, @bob, @charlie
168
-
169
- ## Context
170
-
171
- Our React codebase has grown to 50+ components with increasing bug reports
172
- related to prop type mismatches and undefined errors. PropTypes provide
173
- runtime-only checking.
174
-
175
- ## Decision
176
-
177
- Adopt TypeScript for all new frontend code. Migrate existing code incrementally.
178
-
179
- ## Consequences
180
-
181
- **Good**: Catch type errors at compile time, better IDE support, self-documenting
182
- code.
183
-
184
- **Bad**: Learning curve for team, initial slowdown, build complexity increase.
185
-
186
- **Mitigations**: TypeScript training sessions, allow gradual adoption with
187
- `allowJs: true`.
188
- ```
189
-
190
- ### Template 3: Y-Statement Format
191
-
192
- ```markdown
193
- # ADR-0015: API Gateway Selection
194
-
195
- In the context of **building a microservices architecture**,
196
- facing **the need for centralized API management, authentication, and rate limiting**,
197
- we decided for **Kong Gateway**
198
- and against **AWS API Gateway and custom Nginx solution**,
199
- to achieve **vendor independence, plugin extensibility, and team familiarity with Lua**,
200
- accepting that **we need to manage Kong infrastructure ourselves**.
201
- ```
202
-
203
- ### Template 4: ADR for Deprecation
204
-
205
- ```markdown
206
- # ADR-0020: Deprecate MongoDB in Favor of PostgreSQL
207
-
208
- ## Status
209
-
210
- Accepted (Supersedes ADR-0003)
211
-
212
- ## Context
213
-
214
- ADR-0003 (2021) chose MongoDB for user profile storage due to schema flexibility
215
- needs. Since then:
216
- - MongoDB's multi-document transactions remain problematic for our use case
217
- - Our schema has stabilized and rarely changes
218
- - We now have PostgreSQL expertise from other services
219
- - Maintaining two databases increases operational burden
220
-
221
- ## Decision
222
-
223
- Deprecate MongoDB and migrate user profiles to PostgreSQL.
224
-
225
- ## Migration Plan
226
-
227
- 1. **Phase 1** (Week 1-2): Create PostgreSQL schema, dual-write enabled
228
- 2. **Phase 2** (Week 3-4): Backfill historical data, validate consistency
229
- 3. **Phase 3** (Week 5): Switch reads to PostgreSQL, monitor
230
- 4. **Phase 4** (Week 6): Remove MongoDB writes, decommission
231
-
232
- ## Consequences
233
-
234
- ### Positive
235
- - Single database technology reduces operational complexity
236
- - ACID transactions for user data
237
- - Team can focus PostgreSQL expertise
238
-
239
- ### Negative
240
- - Migration effort (~4 weeks)
241
- - Risk of data issues during migration
242
- - Lose some schema flexibility
243
-
244
- ## Lessons Learned
245
-
246
- Document from ADR-0003 experience:
247
- - Schema flexibility benefits were overestimated
248
- - Operational cost of multiple databases was underestimated
249
- - Consider long-term maintenance in technology decisions
250
- ```
251
-
252
- ### Template 5: Request for Comments (RFC) Style
253
-
254
- ```markdown
255
- # RFC-0025: Adopt Event Sourcing for Order Management
256
-
257
- ## Summary
258
-
259
- Propose adopting event sourcing pattern for the order management domain to
260
- improve auditability, enable temporal queries, and support business analytics.
261
-
262
- ## Motivation
263
-
264
- Current challenges:
265
- 1. Audit requirements need complete order history
266
- 2. "What was the order state at time X?" queries are impossible
267
- 3. Analytics team needs event stream for real-time dashboards
268
- 4. Order state reconstruction for customer support is manual
269
-
270
- ## Detailed Design
271
-
272
- ### Event Store
273
-
274
- ```
275
- OrderCreated { orderId, customerId, items[], timestamp }
276
- OrderItemAdded { orderId, item, timestamp }
277
- OrderItemRemoved { orderId, itemId, timestamp }
278
- PaymentReceived { orderId, amount, paymentId, timestamp }
279
- OrderShipped { orderId, trackingNumber, timestamp }
280
- ```
281
-
282
- ### Projections
283
-
284
- - **CurrentOrderState**: Materialized view for queries
285
- - **OrderHistory**: Complete timeline for audit
286
- - **DailyOrderMetrics**: Analytics aggregation
287
-
288
- ### Technology
289
-
290
- - Event Store: EventStoreDB (purpose-built, handles projections)
291
- - Alternative considered: Kafka + custom projection service
292
-
293
- ## Drawbacks
294
-
295
- - Learning curve for team
296
- - Increased complexity vs. CRUD
297
- - Need to design events carefully (immutable once stored)
298
- - Storage growth (events never deleted)
299
-
300
- ## Alternatives
301
-
302
- 1. **Audit tables**: Simpler but doesn't enable temporal queries
303
- 2. **CDC from existing DB**: Complex, doesn't change data model
304
- 3. **Hybrid**: Event source only for order state changes
305
-
306
- ## Unresolved Questions
307
-
308
- - [ ] Event schema versioning strategy
309
- - [ ] Retention policy for events
310
- - [ ] Snapshot frequency for performance
311
-
312
- ## Implementation Plan
313
-
314
- 1. Prototype with single order type (2 weeks)
315
- 2. Team training on event sourcing (1 week)
316
- 3. Full implementation and migration (4 weeks)
317
- 4. Monitoring and optimization (ongoing)
318
-
319
- ## References
320
-
321
- - [Event Sourcing by Martin Fowler](https://martinfowler.com/eaaDev/EventSourcing.html)
322
- - [EventStoreDB Documentation](https://www.eventstore.com/docs)
323
- ```
324
-
325
- ## ADR Management
326
-
327
- ### Directory Structure
328
-
329
- ```
330
- docs/
331
- ├── adr/
332
- │ ├── README.md # Index and guidelines
333
- │ ├── template.md # Team's ADR template
334
- │ ├── 0001-use-postgresql.md
335
- │ ├── 0002-caching-strategy.md
336
- │ ├── 0003-mongodb-user-profiles.md # [DEPRECATED]
337
- │ └── 0020-deprecate-mongodb.md # Supersedes 0003
338
- ```
339
-
340
- ### ADR Index (README.md)
341
-
342
- ```markdown
343
- # Architecture Decision Records
344
-
345
- This directory contains Architecture Decision Records (ADRs) for [Project Name].
346
-
347
- ## Index
348
-
349
- | ADR | Title | Status | Date |
350
- |-----|-------|--------|------|
351
- | [0001](0001-use-postgresql.md) | Use PostgreSQL as Primary Database | Accepted | 2024-01-10 |
352
- | [0002](0002-caching-strategy.md) | Caching Strategy with Redis | Accepted | 2024-01-12 |
353
- | [0003](0003-mongodb-user-profiles.md) | MongoDB for User Profiles | Deprecated | 2023-06-15 |
354
- | [0020](0020-deprecate-mongodb.md) | Deprecate MongoDB | Accepted | 2024-01-15 |
355
-
356
- ## Creating a New ADR
357
-
358
- 1. Copy `template.md` to `NNNN-title-with-dashes.md`
359
- 2. Fill in the template
360
- 3. Submit PR for review
361
- 4. Update this index after approval
362
-
363
- ## ADR Status
364
-
365
- - **Proposed**: Under discussion
366
- - **Accepted**: Decision made, implementing
367
- - **Deprecated**: No longer relevant
368
- - **Superseded**: Replaced by another ADR
369
- - **Rejected**: Considered but not adopted
370
- ```
371
-
372
- ### Automation (adr-tools)
373
-
374
- ```bash
375
- # Install adr-tools
376
- brew install adr-tools
377
-
378
- # Initialize ADR directory
379
- adr init docs/adr
380
-
381
- # Create new ADR
382
- adr new "Use PostgreSQL as Primary Database"
383
-
384
- # Supersede an ADR
385
- adr new -s 3 "Deprecate MongoDB in Favor of PostgreSQL"
386
-
387
- # Generate table of contents
388
- adr generate toc > docs/adr/README.md
389
-
390
- # Link related ADRs
391
- adr link 2 "Complements" 1 "Is complemented by"
392
- ```
393
-
394
- ## Review Process
395
-
396
- ```markdown
397
- ## ADR Review Checklist
398
-
399
- ### Before Submission
400
- - [ ] Context clearly explains the problem
401
- - [ ] All viable options considered
402
- - [ ] Pros/cons balanced and honest
403
- - [ ] Consequences (positive and negative) documented
404
- - [ ] Related ADRs linked
405
-
406
- ### During Review
407
- - [ ] At least 2 senior engineers reviewed
408
- - [ ] Affected teams consulted
409
- - [ ] Security implications considered
410
- - [ ] Cost implications documented
411
- - [ ] Reversibility assessed
412
-
413
- ### After Acceptance
414
- - [ ] ADR index updated
415
- - [ ] Team notified
416
- - [ ] Implementation tickets created
417
- - [ ] Related documentation updated
418
- ```
419
-
420
- ## Best Practices
421
-
422
- ### Do's
423
- - **Write ADRs early** - Before implementation starts
424
- - **Keep them short** - 1-2 pages maximum
425
- - **Be honest about trade-offs** - Include real cons
426
- - **Link related decisions** - Build decision graph
427
- - **Update status** - Deprecate when superseded
428
-
429
- ### Don'ts
430
- - **Don't change accepted ADRs** - Write new ones to supersede
431
- - **Don't skip context** - Future readers need background
432
- - **Don't hide failures** - Rejected decisions are valuable
433
- - **Don't be vague** - Specific decisions, specific consequences
434
- - **Don't forget implementation** - ADR without action is waste
58
+ ---
435
59
 
436
- ## Resources
60
+ ## 4. Best Practices
437
61
 
438
- - [Documenting Architecture Decisions (Michael Nygard)](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions)
439
- - [MADR Template](https://adr.github.io/madr/)
440
- - [ADR GitHub Organization](https://adr.github.io/)
441
- - [adr-tools](https://github.com/npryce/adr-tools)
62
+ - Keep ADRs concise (< 500 words per decision).
63
+ - Store ADRs as markdown versioned alongside code in `docs/adr/`.
64
+ - Never modify an accepted ADR to change history; author a new ADR that supersedes the previous one.
@@ -0,0 +1,12 @@
1
+ # 1. Record architecture decisions
2
+
3
+ Date: 2026-10-30
4
+
5
+ ## Status
6
+ Accepted
7
+
8
+ ## Context
9
+ We need to record technical architecture decisions in ADR format.
10
+
11
+ ## Decision
12
+ We will use Markdown ADR files stored in docs/adr/.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: auth-session-and-cookie-manager
3
- description: "Manage browser authentication sessions, storageState, JWT tokens, and multi-role state."
3
+ description: "Manage browser authentication sessions, storageState, JWT tokens, and multi-role state. Use when managing login sessions, storage state, or cookie reuse across tests."
4
4
  ---
5
5
 
6
6
  # Auth Session & Cookie Manager Skill
@@ -0,0 +1,11 @@
1
+ {
2
+ "cookies": [
3
+ {
4
+ "name": "session_id",
5
+ "value": "sess_auto_998",
6
+ "domain": "example.com",
7
+ "path": "/"
8
+ }
9
+ ],
10
+ "origins": []
11
+ }