code-ai-installer 1.1.11 → 1.2.0
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/.agents/a11y_baseline/agents/claude.json +18 -0
- package/.agents/a11y_baseline/agents/copilot.json +18 -0
- package/.agents/a11y_baseline/agents/gemini.json +18 -0
- package/.agents/a11y_baseline/agents/openai.yaml +8 -0
- package/.agents/a11y_baseline/agents/qwen.json +18 -0
- package/.agents/a11y_baseline/agents/skill.yaml +22 -0
- package/.agents/adr_log/agents/claude.json +18 -0
- package/.agents/adr_log/agents/copilot.json +18 -0
- package/.agents/adr_log/agents/gemini.json +18 -0
- package/.agents/adr_log/agents/openai.yaml +8 -0
- package/.agents/adr_log/agents/qwen.json +18 -0
- package/.agents/adr_log/agents/skill.yaml +22 -0
- package/.agents/api_contract_compliance_review/agents/claude.json +20 -0
- package/.agents/api_contract_compliance_review/agents/copilot.json +20 -0
- package/.agents/api_contract_compliance_review/agents/gemini.json +20 -0
- package/.agents/api_contract_compliance_review/agents/openai.yaml +8 -0
- package/.agents/api_contract_compliance_review/agents/qwen.json +20 -0
- package/.agents/api_contract_compliance_review/agents/skill.yaml +24 -0
- package/.agents/api_contracts/agents/claude.json +18 -0
- package/.agents/api_contracts/agents/copilot.json +18 -0
- package/.agents/api_contracts/agents/gemini.json +18 -0
- package/.agents/api_contracts/agents/openai.yaml +8 -0
- package/.agents/api_contracts/agents/qwen.json +18 -0
- package/.agents/api_contracts/agents/skill.yaml +22 -0
- package/.agents/architecture_compliance_review/agents/claude.json +19 -0
- package/.agents/architecture_compliance_review/agents/copilot.json +19 -0
- package/.agents/architecture_compliance_review/agents/gemini.json +19 -0
- package/.agents/architecture_compliance_review/agents/openai.yaml +8 -0
- package/.agents/architecture_compliance_review/agents/qwen.json +19 -0
- package/.agents/architecture_compliance_review/agents/skill.yaml +23 -0
- package/.agents/architecture_doc/agents/claude.json +18 -0
- package/.agents/architecture_doc/agents/copilot.json +18 -0
- package/.agents/architecture_doc/agents/gemini.json +18 -0
- package/.agents/architecture_doc/agents/openai.yaml +8 -0
- package/.agents/architecture_doc/agents/qwen.json +18 -0
- package/.agents/architecture_doc/agents/skill.yaml +22 -0
- package/.agents/board/agents/claude.json +16 -0
- package/.agents/board/agents/copilot.json +16 -0
- package/.agents/board/agents/gemini.json +16 -0
- package/.agents/board/agents/openai.yaml +8 -0
- package/.agents/board/agents/qwen.json +16 -0
- package/.agents/board/agents/skill.yaml +20 -0
- package/.agents/cloud_infrastructure_security/agents/claude.json +19 -0
- package/.agents/cloud_infrastructure_security/agents/copilot.json +19 -0
- package/.agents/cloud_infrastructure_security/agents/gemini.json +19 -0
- package/.agents/cloud_infrastructure_security/agents/openai.yaml +8 -0
- package/.agents/cloud_infrastructure_security/agents/qwen.json +19 -0
- package/.agents/cloud_infrastructure_security/agents/skill.yaml +23 -0
- package/.agents/code_review_checklist/agents/claude.json +19 -0
- package/.agents/code_review_checklist/agents/copilot.json +19 -0
- package/.agents/code_review_checklist/agents/gemini.json +19 -0
- package/.agents/code_review_checklist/agents/openai.yaml +8 -0
- package/.agents/code_review_checklist/agents/qwen.json +19 -0
- package/.agents/code_review_checklist/agents/skill.yaml +23 -0
- package/.agents/current_state_analysis/agents/claude.json +19 -0
- package/.agents/current_state_analysis/agents/copilot.json +19 -0
- package/.agents/current_state_analysis/agents/gemini.json +19 -0
- package/.agents/current_state_analysis/agents/openai.yaml +8 -0
- package/.agents/current_state_analysis/agents/qwen.json +19 -0
- package/.agents/current_state_analysis/agents/skill.yaml +23 -0
- package/.agents/data_model/agents/claude.json +18 -0
- package/.agents/data_model/agents/copilot.json +18 -0
- package/.agents/data_model/agents/gemini.json +18 -0
- package/.agents/data_model/agents/openai.yaml +8 -0
- package/.agents/data_model/agents/qwen.json +18 -0
- package/.agents/data_model/agents/skill.yaml +22 -0
- package/.agents/dependency_supply_chain_review/agents/claude.json +20 -0
- package/.agents/dependency_supply_chain_review/agents/copilot.json +20 -0
- package/.agents/dependency_supply_chain_review/agents/gemini.json +20 -0
- package/.agents/dependency_supply_chain_review/agents/openai.yaml +8 -0
- package/.agents/dependency_supply_chain_review/agents/qwen.json +20 -0
- package/.agents/dependency_supply_chain_review/agents/skill.yaml +24 -0
- package/.agents/deployment_ci_plan/agents/claude.json +18 -0
- package/.agents/deployment_ci_plan/agents/copilot.json +18 -0
- package/.agents/deployment_ci_plan/agents/gemini.json +18 -0
- package/.agents/deployment_ci_plan/agents/openai.yaml +8 -0
- package/.agents/deployment_ci_plan/agents/qwen.json +18 -0
- package/.agents/deployment_ci_plan/agents/skill.yaml +22 -0
- package/.agents/design_intake/agents/claude.json +18 -0
- package/.agents/design_intake/agents/copilot.json +18 -0
- package/.agents/design_intake/agents/gemini.json +18 -0
- package/.agents/design_intake/agents/openai.yaml +8 -0
- package/.agents/design_intake/agents/qwen.json +18 -0
- package/.agents/design_intake/agents/skill.yaml +22 -0
- package/.agents/design_parity_review/SKILL.md +1 -18
- package/.agents/design_parity_review/agents/claude.json +19 -0
- package/.agents/design_parity_review/agents/copilot.json +19 -0
- package/.agents/design_parity_review/agents/gemini.json +19 -0
- package/.agents/design_parity_review/agents/openai.yaml +8 -0
- package/.agents/design_parity_review/agents/qwen.json +19 -0
- package/.agents/design_parity_review/agents/skill.yaml +23 -0
- package/.agents/design_systems/agents/claude.json +18 -0
- package/.agents/design_systems/agents/copilot.json +18 -0
- package/.agents/design_systems/agents/gemini.json +18 -0
- package/.agents/design_systems/agents/openai.yaml +8 -0
- package/.agents/design_systems/agents/qwen.json +18 -0
- package/.agents/design_systems/agents/skill.yaml +22 -0
- package/.agents/dev_reference_snippets/agents/claude.json +19 -0
- package/.agents/dev_reference_snippets/agents/copilot.json +19 -0
- package/.agents/dev_reference_snippets/agents/gemini.json +19 -0
- package/.agents/dev_reference_snippets/agents/openai.yaml +8 -0
- package/.agents/dev_reference_snippets/agents/qwen.json +19 -0
- package/.agents/dev_reference_snippets/agents/skill.yaml +23 -0
- package/.agents/docker_kubernetes_architecture/agents/claude.json +19 -0
- package/.agents/docker_kubernetes_architecture/agents/copilot.json +19 -0
- package/.agents/docker_kubernetes_architecture/agents/gemini.json +19 -0
- package/.agents/docker_kubernetes_architecture/agents/openai.yaml +8 -0
- package/.agents/docker_kubernetes_architecture/agents/qwen.json +19 -0
- package/.agents/docker_kubernetes_architecture/agents/skill.yaml +23 -0
- package/.agents/es2025_beast_practices/agents/claude.json +19 -0
- package/.agents/es2025_beast_practices/agents/copilot.json +19 -0
- package/.agents/es2025_beast_practices/agents/gemini.json +19 -0
- package/.agents/es2025_beast_practices/agents/openai.yaml +8 -0
- package/.agents/es2025_beast_practices/agents/qwen.json +19 -0
- package/.agents/es2025_beast_practices/agents/skill.yaml +23 -0
- package/.agents/gates/agents/claude.json +16 -0
- package/.agents/gates/agents/copilot.json +16 -0
- package/.agents/gates/agents/gemini.json +16 -0
- package/.agents/gates/agents/openai.yaml +8 -0
- package/.agents/gates/agents/qwen.json +16 -0
- package/.agents/gates/agents/skill.yaml +20 -0
- package/.agents/go_beast_practices/agents/claude.json +19 -0
- package/.agents/go_beast_practices/agents/copilot.json +19 -0
- package/.agents/go_beast_practices/agents/gemini.json +19 -0
- package/.agents/go_beast_practices/agents/openai.yaml +8 -0
- package/.agents/go_beast_practices/agents/qwen.json +19 -0
- package/.agents/go_beast_practices/agents/skill.yaml +23 -0
- package/.agents/google_stitch_skill/SKILL.md +553 -0
- package/.agents/google_stitch_skill/agents/claude.json +19 -0
- package/.agents/google_stitch_skill/agents/copilot.json +19 -0
- package/.agents/google_stitch_skill/agents/gemini.json +19 -0
- package/.agents/google_stitch_skill/agents/openai.yaml +8 -0
- package/.agents/google_stitch_skill/agents/qwen.json +19 -0
- package/.agents/google_stitch_skill/agents/skill.yaml +23 -0
- package/.agents/google_stitch_skill/examples/scr_prompts.md +125 -0
- package/.agents/google_stitch_skill/resources/budget_planner.md +35 -0
- package/.agents/handoff/agents/claude.json +16 -0
- package/.agents/handoff/agents/copilot.json +16 -0
- package/.agents/handoff/agents/gemini.json +16 -0
- package/.agents/handoff/agents/openai.yaml +8 -0
- package/.agents/handoff/agents/qwen.json +16 -0
- package/.agents/handoff/agents/skill.yaml +20 -0
- package/.agents/k8s_manifests_conventions/agents/claude.json +19 -0
- package/.agents/k8s_manifests_conventions/agents/copilot.json +19 -0
- package/.agents/k8s_manifests_conventions/agents/gemini.json +19 -0
- package/.agents/k8s_manifests_conventions/agents/openai.yaml +8 -0
- package/.agents/k8s_manifests_conventions/agents/qwen.json +19 -0
- package/.agents/k8s_manifests_conventions/agents/skill.yaml +23 -0
- package/.agents/memory/agents/claude.json +16 -0
- package/.agents/memory/agents/copilot.json +16 -0
- package/.agents/memory/agents/gemini.json +16 -0
- package/.agents/memory/agents/openai.yaml +8 -0
- package/.agents/memory/agents/qwen.json +16 -0
- package/.agents/memory/agents/skill.yaml +20 -0
- package/.agents/mongodb_mongoose_best_practices/agents/claude.json +20 -0
- package/.agents/mongodb_mongoose_best_practices/agents/copilot.json +20 -0
- package/.agents/mongodb_mongoose_best_practices/agents/gemini.json +20 -0
- package/.agents/mongodb_mongoose_best_practices/agents/openai.yaml +8 -0
- package/.agents/mongodb_mongoose_best_practices/agents/qwen.json +20 -0
- package/.agents/mongodb_mongoose_best_practices/agents/skill.yaml +24 -0
- package/.agents/n8n_pinecone_qdrant_supabase/SKILL.md +0 -2
- package/.agents/n8n_pinecone_qdrant_supabase/agents/claude.json +20 -0
- package/.agents/n8n_pinecone_qdrant_supabase/agents/copilot.json +20 -0
- package/.agents/n8n_pinecone_qdrant_supabase/agents/gemini.json +20 -0
- package/.agents/n8n_pinecone_qdrant_supabase/agents/openai.yaml +8 -0
- package/.agents/n8n_pinecone_qdrant_supabase/agents/qwen.json +20 -0
- package/.agents/n8n_pinecone_qdrant_supabase/agents/skill.yaml +24 -0
- package/.agents/node_express_beast_practices/agents/claude.json +20 -0
- package/.agents/node_express_beast_practices/agents/copilot.json +20 -0
- package/.agents/node_express_beast_practices/agents/gemini.json +20 -0
- package/.agents/node_express_beast_practices/agents/openai.yaml +8 -0
- package/.agents/node_express_beast_practices/agents/qwen.json +20 -0
- package/.agents/node_express_beast_practices/agents/skill.yaml +24 -0
- package/.agents/observability_logging/agents/claude.json +18 -0
- package/.agents/observability_logging/agents/copilot.json +18 -0
- package/.agents/observability_logging/agents/gemini.json +18 -0
- package/.agents/observability_logging/agents/openai.yaml +8 -0
- package/.agents/observability_logging/agents/qwen.json +18 -0
- package/.agents/observability_logging/agents/skill.yaml +22 -0
- package/.agents/observability_plan/agents/claude.json +17 -0
- package/.agents/observability_plan/agents/copilot.json +17 -0
- package/.agents/observability_plan/agents/gemini.json +17 -0
- package/.agents/observability_plan/agents/openai.yaml +8 -0
- package/.agents/observability_plan/agents/qwen.json +17 -0
- package/.agents/observability_plan/agents/skill.yaml +21 -0
- package/.agents/observability_review/agents/claude.json +18 -0
- package/.agents/observability_review/agents/copilot.json +18 -0
- package/.agents/observability_review/agents/gemini.json +18 -0
- package/.agents/observability_review/agents/openai.yaml +8 -0
- package/.agents/observability_review/agents/qwen.json +18 -0
- package/.agents/observability_review/agents/skill.yaml +22 -0
- package/.agents/performance_review_baseline/agents/claude.json +19 -0
- package/.agents/performance_review_baseline/agents/copilot.json +19 -0
- package/.agents/performance_review_baseline/agents/gemini.json +19 -0
- package/.agents/performance_review_baseline/agents/openai.yaml +8 -0
- package/.agents/performance_review_baseline/agents/qwen.json +19 -0
- package/.agents/performance_review_baseline/agents/skill.yaml +23 -0
- package/.agents/pm_backlog/agents/claude.json +18 -0
- package/.agents/pm_backlog/agents/copilot.json +18 -0
- package/.agents/pm_backlog/agents/gemini.json +18 -0
- package/.agents/pm_backlog/agents/openai.yaml +8 -0
- package/.agents/pm_backlog/agents/qwen.json +18 -0
- package/.agents/pm_backlog/agents/skill.yaml +22 -0
- package/.agents/pm_interview/agents/claude.json +18 -0
- package/.agents/pm_interview/agents/copilot.json +18 -0
- package/.agents/pm_interview/agents/gemini.json +18 -0
- package/.agents/pm_interview/agents/openai.yaml +8 -0
- package/.agents/pm_interview/agents/qwen.json +18 -0
- package/.agents/pm_interview/agents/skill.yaml +22 -0
- package/.agents/pm_prd/agents/claude.json +18 -0
- package/.agents/pm_prd/agents/copilot.json +18 -0
- package/.agents/pm_prd/agents/gemini.json +18 -0
- package/.agents/pm_prd/agents/openai.yaml +8 -0
- package/.agents/pm_prd/agents/qwen.json +18 -0
- package/.agents/pm_prd/agents/skill.yaml +22 -0
- package/.agents/qa_api_contract_tests/agents/claude.json +20 -0
- package/.agents/qa_api_contract_tests/agents/copilot.json +20 -0
- package/.agents/qa_api_contract_tests/agents/gemini.json +20 -0
- package/.agents/qa_api_contract_tests/agents/openai.yaml +8 -0
- package/.agents/qa_api_contract_tests/agents/qwen.json +20 -0
- package/.agents/qa_api_contract_tests/agents/skill.yaml +24 -0
- package/.agents/qa_browser_testing/SKILL.md +255 -0
- package/.agents/qa_browser_testing/agents/claude.json +19 -0
- package/.agents/qa_browser_testing/agents/copilot.json +19 -0
- package/.agents/qa_browser_testing/agents/gemini.json +19 -0
- package/.agents/qa_browser_testing/agents/openai.yaml +8 -0
- package/.agents/qa_browser_testing/agents/qwen.json +19 -0
- package/.agents/qa_browser_testing/agents/skill.yaml +23 -0
- package/.agents/qa_e2e_playwright/SKILL.md +313 -0
- package/.agents/qa_e2e_playwright/agents/claude.json +19 -0
- package/.agents/qa_e2e_playwright/agents/copilot.json +19 -0
- package/.agents/qa_e2e_playwright/agents/gemini.json +19 -0
- package/.agents/qa_e2e_playwright/agents/openai.yaml +8 -0
- package/.agents/qa_e2e_playwright/agents/qwen.json +19 -0
- package/.agents/qa_e2e_playwright/agents/skill.yaml +23 -0
- package/.agents/qa_manual_run/agents/claude.json +19 -0
- package/.agents/qa_manual_run/agents/copilot.json +19 -0
- package/.agents/qa_manual_run/agents/gemini.json +19 -0
- package/.agents/qa_manual_run/agents/openai.yaml +8 -0
- package/.agents/qa_manual_run/agents/qwen.json +19 -0
- package/.agents/qa_manual_run/agents/skill.yaml +23 -0
- package/.agents/qa_security_smoke_tests/agents/claude.json +20 -0
- package/.agents/qa_security_smoke_tests/agents/copilot.json +20 -0
- package/.agents/qa_security_smoke_tests/agents/gemini.json +20 -0
- package/.agents/qa_security_smoke_tests/agents/openai.yaml +8 -0
- package/.agents/qa_security_smoke_tests/agents/qwen.json +20 -0
- package/.agents/qa_security_smoke_tests/agents/skill.yaml +24 -0
- package/.agents/qa_test_plan/agents/claude.json +19 -0
- package/.agents/qa_test_plan/agents/copilot.json +19 -0
- package/.agents/qa_test_plan/agents/gemini.json +19 -0
- package/.agents/qa_test_plan/agents/openai.yaml +8 -0
- package/.agents/qa_test_plan/agents/qwen.json +19 -0
- package/.agents/qa_test_plan/agents/skill.yaml +23 -0
- package/.agents/qa_ui_a11y_smoke/agents/claude.json +20 -0
- package/.agents/qa_ui_a11y_smoke/agents/copilot.json +20 -0
- package/.agents/qa_ui_a11y_smoke/agents/gemini.json +20 -0
- package/.agents/qa_ui_a11y_smoke/agents/openai.yaml +8 -0
- package/.agents/qa_ui_a11y_smoke/agents/qwen.json +20 -0
- package/.agents/qa_ui_a11y_smoke/agents/skill.yaml +24 -0
- package/.agents/react_15_3_wix_iframe/agents/claude.json +21 -0
- package/.agents/react_15_3_wix_iframe/agents/copilot.json +21 -0
- package/.agents/react_15_3_wix_iframe/agents/gemini.json +21 -0
- package/.agents/react_15_3_wix_iframe/agents/openai.yaml +8 -0
- package/.agents/react_15_3_wix_iframe/agents/qwen.json +21 -0
- package/.agents/react_15_3_wix_iframe/agents/skill.yaml +25 -0
- package/.agents/react_beast_practices/agents/claude.json +19 -0
- package/.agents/react_beast_practices/agents/copilot.json +19 -0
- package/.agents/react_beast_practices/agents/gemini.json +19 -0
- package/.agents/react_beast_practices/agents/openai.yaml +8 -0
- package/.agents/react_beast_practices/agents/qwen.json +19 -0
- package/.agents/react_beast_practices/agents/skill.yaml +23 -0
- package/.agents/release_gate/agents/claude.json +18 -0
- package/.agents/release_gate/agents/copilot.json +18 -0
- package/.agents/release_gate/agents/gemini.json +18 -0
- package/.agents/release_gate/agents/openai.yaml +8 -0
- package/.agents/release_gate/agents/qwen.json +18 -0
- package/.agents/release_gate/agents/skill.yaml +22 -0
- package/.agents/release_gate_checklist_template/agents/claude.json +20 -0
- package/.agents/release_gate_checklist_template/agents/copilot.json +20 -0
- package/.agents/release_gate_checklist_template/agents/gemini.json +20 -0
- package/.agents/release_gate_checklist_template/agents/openai.yaml +8 -0
- package/.agents/release_gate_checklist_template/agents/qwen.json +20 -0
- package/.agents/release_gate_checklist_template/agents/skill.yaml +24 -0
- package/.agents/review_reference_snippets/agents/claude.json +19 -0
- package/.agents/review_reference_snippets/agents/copilot.json +19 -0
- package/.agents/review_reference_snippets/agents/gemini.json +19 -0
- package/.agents/review_reference_snippets/agents/openai.yaml +8 -0
- package/.agents/review_reference_snippets/agents/qwen.json +19 -0
- package/.agents/review_reference_snippets/agents/skill.yaml +23 -0
- package/.agents/security_baseline_dev/agents/claude.json +19 -0
- package/.agents/security_baseline_dev/agents/copilot.json +19 -0
- package/.agents/security_baseline_dev/agents/gemini.json +19 -0
- package/.agents/security_baseline_dev/agents/openai.yaml +8 -0
- package/.agents/security_baseline_dev/agents/qwen.json +19 -0
- package/.agents/security_baseline_dev/agents/skill.yaml +23 -0
- package/.agents/security_review/agents/claude.json +18 -0
- package/.agents/security_review/agents/copilot.json +18 -0
- package/.agents/security_review/agents/gemini.json +18 -0
- package/.agents/security_review/agents/openai.yaml +8 -0
- package/.agents/security_review/agents/qwen.json +18 -0
- package/.agents/security_review/agents/skill.yaml +22 -0
- package/.agents/security_review_baseline/agents/claude.json +19 -0
- package/.agents/security_review_baseline/agents/copilot.json +19 -0
- package/.agents/security_review_baseline/agents/gemini.json +19 -0
- package/.agents/security_review_baseline/agents/openai.yaml +8 -0
- package/.agents/security_review_baseline/agents/qwen.json +19 -0
- package/.agents/security_review_baseline/agents/skill.yaml +23 -0
- package/.agents/state_rtk_beast_practices/agents/claude.json +20 -0
- package/.agents/state_rtk_beast_practices/agents/copilot.json +20 -0
- package/.agents/state_rtk_beast_practices/agents/gemini.json +20 -0
- package/.agents/state_rtk_beast_practices/agents/openai.yaml +8 -0
- package/.agents/state_rtk_beast_practices/agents/qwen.json +20 -0
- package/.agents/state_rtk_beast_practices/agents/skill.yaml +24 -0
- package/.agents/state_zustand_beast_practices/agents/claude.json +20 -0
- package/.agents/state_zustand_beast_practices/agents/copilot.json +20 -0
- package/.agents/state_zustand_beast_practices/agents/gemini.json +20 -0
- package/.agents/state_zustand_beast_practices/agents/openai.yaml +8 -0
- package/.agents/state_zustand_beast_practices/agents/qwen.json +20 -0
- package/.agents/state_zustand_beast_practices/agents/skill.yaml +24 -0
- package/.agents/styling_css_stack/agents/claude.json +19 -0
- package/.agents/styling_css_stack/agents/copilot.json +19 -0
- package/.agents/styling_css_stack/agents/gemini.json +19 -0
- package/.agents/styling_css_stack/agents/openai.yaml +8 -0
- package/.agents/styling_css_stack/agents/qwen.json +19 -0
- package/.agents/styling_css_stack/agents/skill.yaml +23 -0
- package/.agents/system_design_checklist/agents/claude.json +18 -0
- package/.agents/system_design_checklist/agents/copilot.json +18 -0
- package/.agents/system_design_checklist/agents/gemini.json +18 -0
- package/.agents/system_design_checklist/agents/openai.yaml +8 -0
- package/.agents/system_design_checklist/agents/qwen.json +18 -0
- package/.agents/system_design_checklist/agents/skill.yaml +22 -0
- package/.agents/tanstack_beast_practices/agents/claude.json +19 -0
- package/.agents/tanstack_beast_practices/agents/copilot.json +19 -0
- package/.agents/tanstack_beast_practices/agents/gemini.json +19 -0
- package/.agents/tanstack_beast_practices/agents/openai.yaml +8 -0
- package/.agents/tanstack_beast_practices/agents/qwen.json +19 -0
- package/.agents/tanstack_beast_practices/agents/skill.yaml +23 -0
- package/.agents/tdd_workflow/agents/claude.json +18 -0
- package/.agents/tdd_workflow/agents/copilot.json +18 -0
- package/.agents/tdd_workflow/agents/gemini.json +18 -0
- package/.agents/tdd_workflow/agents/openai.yaml +8 -0
- package/.agents/tdd_workflow/agents/qwen.json +18 -0
- package/.agents/tdd_workflow/agents/skill.yaml +22 -0
- package/.agents/testing_strategy_js/agents/claude.json +19 -0
- package/.agents/testing_strategy_js/agents/copilot.json +19 -0
- package/.agents/testing_strategy_js/agents/gemini.json +19 -0
- package/.agents/testing_strategy_js/agents/openai.yaml +8 -0
- package/.agents/testing_strategy_js/agents/qwen.json +19 -0
- package/.agents/testing_strategy_js/agents/skill.yaml +23 -0
- package/.agents/tests_quality_review/agents/claude.json +19 -0
- package/.agents/tests_quality_review/agents/copilot.json +19 -0
- package/.agents/tests_quality_review/agents/gemini.json +19 -0
- package/.agents/tests_quality_review/agents/openai.yaml +8 -0
- package/.agents/tests_quality_review/agents/qwen.json +19 -0
- package/.agents/tests_quality_review/agents/skill.yaml +23 -0
- package/.agents/threat_model_baseline/agents/claude.json +19 -0
- package/.agents/threat_model_baseline/agents/copilot.json +19 -0
- package/.agents/threat_model_baseline/agents/gemini.json +19 -0
- package/.agents/threat_model_baseline/agents/openai.yaml +8 -0
- package/.agents/threat_model_baseline/agents/qwen.json +19 -0
- package/.agents/threat_model_baseline/agents/skill.yaml +23 -0
- package/.agents/tooling_bun_biome/agents/claude.json +19 -0
- package/.agents/tooling_bun_biome/agents/copilot.json +19 -0
- package/.agents/tooling_bun_biome/agents/gemini.json +19 -0
- package/.agents/tooling_bun_biome/agents/openai.yaml +8 -0
- package/.agents/tooling_bun_biome/agents/qwen.json +19 -0
- package/.agents/tooling_bun_biome/agents/skill.yaml +23 -0
- package/.agents/typescript_beast_practices/agents/claude.json +19 -0
- package/.agents/typescript_beast_practices/agents/copilot.json +19 -0
- package/.agents/typescript_beast_practices/agents/gemini.json +19 -0
- package/.agents/typescript_beast_practices/agents/openai.yaml +8 -0
- package/.agents/typescript_beast_practices/agents/qwen.json +19 -0
- package/.agents/typescript_beast_practices/agents/skill.yaml +23 -0
- package/.agents/ui_a11y_smoke_review/agents/claude.json +20 -0
- package/.agents/ui_a11y_smoke_review/agents/copilot.json +20 -0
- package/.agents/ui_a11y_smoke_review/agents/gemini.json +20 -0
- package/.agents/ui_a11y_smoke_review/agents/openai.yaml +8 -0
- package/.agents/ui_a11y_smoke_review/agents/qwen.json +20 -0
- package/.agents/ui_a11y_smoke_review/agents/skill.yaml +24 -0
- package/.agents/ui_inventory/agents/claude.json +18 -0
- package/.agents/ui_inventory/agents/copilot.json +18 -0
- package/.agents/ui_inventory/agents/gemini.json +18 -0
- package/.agents/ui_inventory/agents/openai.yaml +8 -0
- package/.agents/ui_inventory/agents/qwen.json +18 -0
- package/.agents/ui_inventory/agents/skill.yaml +22 -0
- package/.agents/ux_discovery/agents/claude.json +17 -0
- package/.agents/ux_discovery/agents/copilot.json +17 -0
- package/.agents/ux_discovery/agents/gemini.json +17 -0
- package/.agents/ux_discovery/agents/openai.yaml +8 -0
- package/.agents/ux_discovery/agents/qwen.json +17 -0
- package/.agents/ux_discovery/agents/skill.yaml +21 -0
- package/.agents/ux_spec/agents/claude.json +18 -0
- package/.agents/ux_spec/agents/copilot.json +18 -0
- package/.agents/ux_spec/agents/gemini.json +18 -0
- package/.agents/ux_spec/agents/openai.yaml +8 -0
- package/.agents/ux_spec/agents/qwen.json +18 -0
- package/.agents/ux_spec/agents/skill.yaml +22 -0
- package/.agents/wix_iframe_sdk/SKILL.md +1 -3
- package/.agents/wix_iframe_sdk/agents/claude.json +18 -0
- package/.agents/wix_iframe_sdk/agents/copilot.json +18 -0
- package/.agents/wix_iframe_sdk/agents/gemini.json +18 -0
- package/.agents/wix_iframe_sdk/agents/openai.yaml +8 -0
- package/.agents/wix_iframe_sdk/agents/qwen.json +18 -0
- package/.agents/wix_iframe_sdk/agents/skill.yaml +22 -0
- package/.agents/wix_self_hosted_embedded_script/agents/claude.json +21 -0
- package/.agents/wix_self_hosted_embedded_script/agents/copilot.json +21 -0
- package/.agents/wix_self_hosted_embedded_script/agents/gemini.json +21 -0
- package/.agents/wix_self_hosted_embedded_script/agents/openai.yaml +8 -0
- package/.agents/wix_self_hosted_embedded_script/agents/qwen.json +21 -0
- package/.agents/wix_self_hosted_embedded_script/agents/skill.yaml +25 -0
- package/.agents/workflows/auto-restart-containers.md +51 -0
- package/.agents/workflows/pipeline-rules.md +137 -0
- package/.agents/workflows/start-task.md +121 -0
- package/AGENTS.md +3 -0
- package/AGENTS.yaml +105 -0
- package/README.md +2 -2
- package/agents/architect.md +21 -0
- package/agents/conductor.md +31 -12
- package/agents/devops.md +18 -0
- package/agents/orchestrator.claude.json +95 -0
- package/agents/orchestrator.copilot.json +95 -0
- package/agents/orchestrator.gemini.json +95 -0
- package/agents/orchestrator.openai.yaml +92 -0
- package/agents/orchestrator.qwen.json +95 -0
- package/agents/product_manager.md +6 -0
- package/agents/reviewer.md +15 -0
- package/agents/senior_full_stack.md +15 -0
- package/agents/tester.md +71 -2
- package/agents/ux_ui_designer.md +282 -272
- package/dist/doctor.js +6 -1
- package/dist/installer.js +4 -0
- package/dist/metadataAudit.d.ts +15 -0
- package/dist/metadataAudit.js +277 -0
- package/dist/platforms/adapters.js +32 -5
- package/dist/platforms/metadataSidecars.d.ts +55 -0
- package/dist/platforms/metadataSidecars.js +96 -0
- package/dist/types.d.ts +1 -0
- package/locales/en/.agents/a11y_baseline/agents/claude.json +17 -0
- package/locales/en/.agents/a11y_baseline/agents/copilot.json +17 -0
- package/locales/en/.agents/a11y_baseline/agents/gemini.json +17 -0
- package/locales/en/.agents/a11y_baseline/agents/openai.yaml +8 -0
- package/locales/en/.agents/a11y_baseline/agents/qwen.json +17 -0
- package/locales/en/.agents/a11y_baseline/agents/skill.yaml +21 -0
- package/locales/en/.agents/adr_log/agents/claude.json +18 -0
- package/locales/en/.agents/adr_log/agents/copilot.json +18 -0
- package/locales/en/.agents/adr_log/agents/gemini.json +18 -0
- package/locales/en/.agents/adr_log/agents/openai.yaml +8 -0
- package/locales/en/.agents/adr_log/agents/qwen.json +18 -0
- package/locales/en/.agents/adr_log/agents/skill.yaml +22 -0
- package/locales/en/.agents/api_contract_compliance_review/agents/claude.json +19 -0
- package/locales/en/.agents/api_contract_compliance_review/agents/copilot.json +19 -0
- package/locales/en/.agents/api_contract_compliance_review/agents/gemini.json +19 -0
- package/locales/en/.agents/api_contract_compliance_review/agents/openai.yaml +8 -0
- package/locales/en/.agents/api_contract_compliance_review/agents/qwen.json +19 -0
- package/locales/en/.agents/api_contract_compliance_review/agents/skill.yaml +23 -0
- package/locales/en/.agents/api_contracts/agents/claude.json +17 -0
- package/locales/en/.agents/api_contracts/agents/copilot.json +17 -0
- package/locales/en/.agents/api_contracts/agents/gemini.json +17 -0
- package/locales/en/.agents/api_contracts/agents/openai.yaml +8 -0
- package/locales/en/.agents/api_contracts/agents/qwen.json +17 -0
- package/locales/en/.agents/api_contracts/agents/skill.yaml +21 -0
- package/locales/en/.agents/architecture_compliance_review/agents/claude.json +18 -0
- package/locales/en/.agents/architecture_compliance_review/agents/copilot.json +18 -0
- package/locales/en/.agents/architecture_compliance_review/agents/gemini.json +18 -0
- package/locales/en/.agents/architecture_compliance_review/agents/openai.yaml +8 -0
- package/locales/en/.agents/architecture_compliance_review/agents/qwen.json +18 -0
- package/locales/en/.agents/architecture_compliance_review/agents/skill.yaml +22 -0
- package/locales/en/.agents/architecture_doc/agents/claude.json +18 -0
- package/locales/en/.agents/architecture_doc/agents/copilot.json +18 -0
- package/locales/en/.agents/architecture_doc/agents/gemini.json +18 -0
- package/locales/en/.agents/architecture_doc/agents/openai.yaml +8 -0
- package/locales/en/.agents/architecture_doc/agents/qwen.json +18 -0
- package/locales/en/.agents/architecture_doc/agents/skill.yaml +22 -0
- package/locales/en/.agents/board/agents/claude.json +16 -0
- package/locales/en/.agents/board/agents/copilot.json +16 -0
- package/locales/en/.agents/board/agents/gemini.json +16 -0
- package/locales/en/.agents/board/agents/openai.yaml +8 -0
- package/locales/en/.agents/board/agents/qwen.json +16 -0
- package/locales/en/.agents/board/agents/skill.yaml +20 -0
- package/locales/en/.agents/cloud_infrastructure_security/agents/claude.json +18 -0
- package/locales/en/.agents/cloud_infrastructure_security/agents/copilot.json +18 -0
- package/locales/en/.agents/cloud_infrastructure_security/agents/gemini.json +18 -0
- package/locales/en/.agents/cloud_infrastructure_security/agents/openai.yaml +8 -0
- package/locales/en/.agents/cloud_infrastructure_security/agents/qwen.json +18 -0
- package/locales/en/.agents/cloud_infrastructure_security/agents/skill.yaml +22 -0
- package/locales/en/.agents/code_review_checklist/agents/claude.json +18 -0
- package/locales/en/.agents/code_review_checklist/agents/copilot.json +18 -0
- package/locales/en/.agents/code_review_checklist/agents/gemini.json +18 -0
- package/locales/en/.agents/code_review_checklist/agents/openai.yaml +8 -0
- package/locales/en/.agents/code_review_checklist/agents/qwen.json +18 -0
- package/locales/en/.agents/code_review_checklist/agents/skill.yaml +22 -0
- package/locales/en/.agents/current_state_analysis/agents/claude.json +18 -0
- package/locales/en/.agents/current_state_analysis/agents/copilot.json +18 -0
- package/locales/en/.agents/current_state_analysis/agents/gemini.json +18 -0
- package/locales/en/.agents/current_state_analysis/agents/openai.yaml +8 -0
- package/locales/en/.agents/current_state_analysis/agents/qwen.json +18 -0
- package/locales/en/.agents/current_state_analysis/agents/skill.yaml +22 -0
- package/locales/en/.agents/data_model/agents/claude.json +17 -0
- package/locales/en/.agents/data_model/agents/copilot.json +17 -0
- package/locales/en/.agents/data_model/agents/gemini.json +17 -0
- package/locales/en/.agents/data_model/agents/openai.yaml +8 -0
- package/locales/en/.agents/data_model/agents/qwen.json +17 -0
- package/locales/en/.agents/data_model/agents/skill.yaml +21 -0
- package/locales/en/.agents/dependency_supply_chain_review/agents/claude.json +19 -0
- package/locales/en/.agents/dependency_supply_chain_review/agents/copilot.json +19 -0
- package/locales/en/.agents/dependency_supply_chain_review/agents/gemini.json +19 -0
- package/locales/en/.agents/dependency_supply_chain_review/agents/openai.yaml +8 -0
- package/locales/en/.agents/dependency_supply_chain_review/agents/qwen.json +19 -0
- package/locales/en/.agents/dependency_supply_chain_review/agents/skill.yaml +23 -0
- package/locales/en/.agents/deployment_ci_plan/agents/claude.json +19 -0
- package/locales/en/.agents/deployment_ci_plan/agents/copilot.json +19 -0
- package/locales/en/.agents/deployment_ci_plan/agents/gemini.json +19 -0
- package/locales/en/.agents/deployment_ci_plan/agents/openai.yaml +8 -0
- package/locales/en/.agents/deployment_ci_plan/agents/qwen.json +19 -0
- package/locales/en/.agents/deployment_ci_plan/agents/skill.yaml +23 -0
- package/locales/en/.agents/design_intake/agents/claude.json +18 -0
- package/locales/en/.agents/design_intake/agents/copilot.json +18 -0
- package/locales/en/.agents/design_intake/agents/gemini.json +18 -0
- package/locales/en/.agents/design_intake/agents/openai.yaml +8 -0
- package/locales/en/.agents/design_intake/agents/qwen.json +18 -0
- package/locales/en/.agents/design_intake/agents/skill.yaml +22 -0
- package/locales/en/.agents/design_parity_review/SKILL.md +55 -85
- package/locales/en/.agents/design_parity_review/agents/claude.json +19 -0
- package/locales/en/.agents/design_parity_review/agents/copilot.json +19 -0
- package/locales/en/.agents/design_parity_review/agents/gemini.json +19 -0
- package/locales/en/.agents/design_parity_review/agents/openai.yaml +8 -0
- package/locales/en/.agents/design_parity_review/agents/qwen.json +19 -0
- package/locales/en/.agents/design_parity_review/agents/skill.yaml +23 -0
- package/locales/en/.agents/design_systems/agents/claude.json +18 -0
- package/locales/en/.agents/design_systems/agents/copilot.json +18 -0
- package/locales/en/.agents/design_systems/agents/gemini.json +18 -0
- package/locales/en/.agents/design_systems/agents/openai.yaml +8 -0
- package/locales/en/.agents/design_systems/agents/qwen.json +18 -0
- package/locales/en/.agents/design_systems/agents/skill.yaml +22 -0
- package/locales/en/.agents/dev_reference_snippets/agents/claude.json +19 -0
- package/locales/en/.agents/dev_reference_snippets/agents/copilot.json +19 -0
- package/locales/en/.agents/dev_reference_snippets/agents/gemini.json +19 -0
- package/locales/en/.agents/dev_reference_snippets/agents/openai.yaml +8 -0
- package/locales/en/.agents/dev_reference_snippets/agents/qwen.json +19 -0
- package/locales/en/.agents/dev_reference_snippets/agents/skill.yaml +23 -0
- package/locales/en/.agents/docker_kubernetes_architecture/agents/claude.json +18 -0
- package/locales/en/.agents/docker_kubernetes_architecture/agents/copilot.json +18 -0
- package/locales/en/.agents/docker_kubernetes_architecture/agents/gemini.json +18 -0
- package/locales/en/.agents/docker_kubernetes_architecture/agents/openai.yaml +8 -0
- package/locales/en/.agents/docker_kubernetes_architecture/agents/qwen.json +18 -0
- package/locales/en/.agents/docker_kubernetes_architecture/agents/skill.yaml +22 -0
- package/locales/en/.agents/es2025_beast_practices/agents/claude.json +18 -0
- package/locales/en/.agents/es2025_beast_practices/agents/copilot.json +18 -0
- package/locales/en/.agents/es2025_beast_practices/agents/gemini.json +18 -0
- package/locales/en/.agents/es2025_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/es2025_beast_practices/agents/qwen.json +18 -0
- package/locales/en/.agents/es2025_beast_practices/agents/skill.yaml +22 -0
- package/locales/en/.agents/gates/agents/claude.json +16 -0
- package/locales/en/.agents/gates/agents/copilot.json +16 -0
- package/locales/en/.agents/gates/agents/gemini.json +16 -0
- package/locales/en/.agents/gates/agents/openai.yaml +8 -0
- package/locales/en/.agents/gates/agents/qwen.json +16 -0
- package/locales/en/.agents/gates/agents/skill.yaml +20 -0
- package/locales/en/.agents/go_beast_practices/agents/claude.json +18 -0
- package/locales/en/.agents/go_beast_practices/agents/copilot.json +18 -0
- package/locales/en/.agents/go_beast_practices/agents/gemini.json +18 -0
- package/locales/en/.agents/go_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/go_beast_practices/agents/qwen.json +18 -0
- package/locales/en/.agents/go_beast_practices/agents/skill.yaml +22 -0
- package/locales/en/.agents/google_stitch_skill/SKILL.md +117 -0
- package/locales/en/.agents/google_stitch_skill/agents/claude.json +19 -0
- package/locales/en/.agents/google_stitch_skill/agents/copilot.json +19 -0
- package/locales/en/.agents/google_stitch_skill/agents/gemini.json +19 -0
- package/locales/en/.agents/google_stitch_skill/agents/openai.yaml +8 -0
- package/locales/en/.agents/google_stitch_skill/agents/qwen.json +19 -0
- package/locales/en/.agents/google_stitch_skill/agents/skill.yaml +23 -0
- package/locales/en/.agents/google_stitch_skill/examples/scr_prompts.md +21 -0
- package/locales/en/.agents/google_stitch_skill/resources/budget_planner.md +23 -0
- package/locales/en/.agents/handoff/agents/claude.json +16 -0
- package/locales/en/.agents/handoff/agents/copilot.json +16 -0
- package/locales/en/.agents/handoff/agents/gemini.json +16 -0
- package/locales/en/.agents/handoff/agents/openai.yaml +8 -0
- package/locales/en/.agents/handoff/agents/qwen.json +16 -0
- package/locales/en/.agents/handoff/agents/skill.yaml +20 -0
- package/locales/en/.agents/k8s_manifests_conventions/agents/claude.json +18 -0
- package/locales/en/.agents/k8s_manifests_conventions/agents/copilot.json +18 -0
- package/locales/en/.agents/k8s_manifests_conventions/agents/gemini.json +18 -0
- package/locales/en/.agents/k8s_manifests_conventions/agents/openai.yaml +8 -0
- package/locales/en/.agents/k8s_manifests_conventions/agents/qwen.json +18 -0
- package/locales/en/.agents/k8s_manifests_conventions/agents/skill.yaml +22 -0
- package/locales/en/.agents/memory/agents/claude.json +15 -0
- package/locales/en/.agents/memory/agents/copilot.json +15 -0
- package/locales/en/.agents/memory/agents/gemini.json +15 -0
- package/locales/en/.agents/memory/agents/openai.yaml +8 -0
- package/locales/en/.agents/memory/agents/qwen.json +15 -0
- package/locales/en/.agents/memory/agents/skill.yaml +19 -0
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/claude.json +20 -0
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/copilot.json +20 -0
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/gemini.json +20 -0
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/qwen.json +20 -0
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/skill.yaml +24 -0
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/SKILL.md +0 -2
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/claude.json +20 -0
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/copilot.json +20 -0
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/gemini.json +20 -0
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/openai.yaml +8 -0
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/qwen.json +20 -0
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/skill.yaml +24 -0
- package/locales/en/.agents/node_express_beast_practices/agents/claude.json +20 -0
- package/locales/en/.agents/node_express_beast_practices/agents/copilot.json +20 -0
- package/locales/en/.agents/node_express_beast_practices/agents/gemini.json +20 -0
- package/locales/en/.agents/node_express_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/node_express_beast_practices/agents/qwen.json +20 -0
- package/locales/en/.agents/node_express_beast_practices/agents/skill.yaml +24 -0
- package/locales/en/.agents/observability_logging/agents/claude.json +17 -0
- package/locales/en/.agents/observability_logging/agents/copilot.json +17 -0
- package/locales/en/.agents/observability_logging/agents/gemini.json +17 -0
- package/locales/en/.agents/observability_logging/agents/openai.yaml +8 -0
- package/locales/en/.agents/observability_logging/agents/qwen.json +17 -0
- package/locales/en/.agents/observability_logging/agents/skill.yaml +21 -0
- package/locales/en/.agents/observability_plan/agents/claude.json +16 -0
- package/locales/en/.agents/observability_plan/agents/copilot.json +16 -0
- package/locales/en/.agents/observability_plan/agents/gemini.json +16 -0
- package/locales/en/.agents/observability_plan/agents/openai.yaml +8 -0
- package/locales/en/.agents/observability_plan/agents/qwen.json +16 -0
- package/locales/en/.agents/observability_plan/agents/skill.yaml +20 -0
- package/locales/en/.agents/observability_review/agents/claude.json +16 -0
- package/locales/en/.agents/observability_review/agents/copilot.json +16 -0
- package/locales/en/.agents/observability_review/agents/gemini.json +16 -0
- package/locales/en/.agents/observability_review/agents/openai.yaml +8 -0
- package/locales/en/.agents/observability_review/agents/qwen.json +16 -0
- package/locales/en/.agents/observability_review/agents/skill.yaml +20 -0
- package/locales/en/.agents/performance_review_baseline/agents/claude.json +18 -0
- package/locales/en/.agents/performance_review_baseline/agents/copilot.json +18 -0
- package/locales/en/.agents/performance_review_baseline/agents/gemini.json +18 -0
- package/locales/en/.agents/performance_review_baseline/agents/openai.yaml +8 -0
- package/locales/en/.agents/performance_review_baseline/agents/qwen.json +18 -0
- package/locales/en/.agents/performance_review_baseline/agents/skill.yaml +22 -0
- package/locales/en/.agents/pm_backlog/agents/claude.json +18 -0
- package/locales/en/.agents/pm_backlog/agents/copilot.json +18 -0
- package/locales/en/.agents/pm_backlog/agents/gemini.json +18 -0
- package/locales/en/.agents/pm_backlog/agents/openai.yaml +8 -0
- package/locales/en/.agents/pm_backlog/agents/qwen.json +18 -0
- package/locales/en/.agents/pm_backlog/agents/skill.yaml +22 -0
- package/locales/en/.agents/pm_interview/agents/claude.json +17 -0
- package/locales/en/.agents/pm_interview/agents/copilot.json +17 -0
- package/locales/en/.agents/pm_interview/agents/gemini.json +17 -0
- package/locales/en/.agents/pm_interview/agents/openai.yaml +8 -0
- package/locales/en/.agents/pm_interview/agents/qwen.json +17 -0
- package/locales/en/.agents/pm_interview/agents/skill.yaml +21 -0
- package/locales/en/.agents/pm_prd/agents/claude.json +18 -0
- package/locales/en/.agents/pm_prd/agents/copilot.json +18 -0
- package/locales/en/.agents/pm_prd/agents/gemini.json +18 -0
- package/locales/en/.agents/pm_prd/agents/openai.yaml +8 -0
- package/locales/en/.agents/pm_prd/agents/qwen.json +18 -0
- package/locales/en/.agents/pm_prd/agents/skill.yaml +22 -0
- package/locales/en/.agents/qa_api_contract_tests/agents/claude.json +19 -0
- package/locales/en/.agents/qa_api_contract_tests/agents/copilot.json +19 -0
- package/locales/en/.agents/qa_api_contract_tests/agents/gemini.json +19 -0
- package/locales/en/.agents/qa_api_contract_tests/agents/openai.yaml +8 -0
- package/locales/en/.agents/qa_api_contract_tests/agents/qwen.json +19 -0
- package/locales/en/.agents/qa_api_contract_tests/agents/skill.yaml +23 -0
- package/locales/en/.agents/qa_browser_testing/SKILL.md +87 -0
- package/locales/en/.agents/qa_browser_testing/agents/claude.json +19 -0
- package/locales/en/.agents/qa_browser_testing/agents/copilot.json +19 -0
- package/locales/en/.agents/qa_browser_testing/agents/gemini.json +19 -0
- package/locales/en/.agents/qa_browser_testing/agents/openai.yaml +8 -0
- package/locales/en/.agents/qa_browser_testing/agents/qwen.json +19 -0
- package/locales/en/.agents/qa_browser_testing/agents/skill.yaml +23 -0
- package/locales/en/.agents/qa_e2e_playwright/SKILL.md +116 -0
- package/locales/en/.agents/qa_e2e_playwright/agents/claude.json +19 -0
- package/locales/en/.agents/qa_e2e_playwright/agents/copilot.json +19 -0
- package/locales/en/.agents/qa_e2e_playwright/agents/gemini.json +19 -0
- package/locales/en/.agents/qa_e2e_playwright/agents/openai.yaml +8 -0
- package/locales/en/.agents/qa_e2e_playwright/agents/qwen.json +19 -0
- package/locales/en/.agents/qa_e2e_playwright/agents/skill.yaml +23 -0
- package/locales/en/.agents/qa_manual_run/agents/claude.json +18 -0
- package/locales/en/.agents/qa_manual_run/agents/copilot.json +18 -0
- package/locales/en/.agents/qa_manual_run/agents/gemini.json +18 -0
- package/locales/en/.agents/qa_manual_run/agents/openai.yaml +8 -0
- package/locales/en/.agents/qa_manual_run/agents/qwen.json +18 -0
- package/locales/en/.agents/qa_manual_run/agents/skill.yaml +22 -0
- package/locales/en/.agents/qa_security_smoke_tests/agents/claude.json +19 -0
- package/locales/en/.agents/qa_security_smoke_tests/agents/copilot.json +19 -0
- package/locales/en/.agents/qa_security_smoke_tests/agents/gemini.json +19 -0
- package/locales/en/.agents/qa_security_smoke_tests/agents/openai.yaml +8 -0
- package/locales/en/.agents/qa_security_smoke_tests/agents/qwen.json +19 -0
- package/locales/en/.agents/qa_security_smoke_tests/agents/skill.yaml +23 -0
- package/locales/en/.agents/qa_test_plan/agents/claude.json +18 -0
- package/locales/en/.agents/qa_test_plan/agents/copilot.json +18 -0
- package/locales/en/.agents/qa_test_plan/agents/gemini.json +18 -0
- package/locales/en/.agents/qa_test_plan/agents/openai.yaml +8 -0
- package/locales/en/.agents/qa_test_plan/agents/qwen.json +18 -0
- package/locales/en/.agents/qa_test_plan/agents/skill.yaml +22 -0
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/claude.json +19 -0
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/copilot.json +19 -0
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/gemini.json +19 -0
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/openai.yaml +8 -0
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/qwen.json +19 -0
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/skill.yaml +23 -0
- package/locales/en/.agents/react_15_3_wix_iframe/agents/claude.json +21 -0
- package/locales/en/.agents/react_15_3_wix_iframe/agents/copilot.json +21 -0
- package/locales/en/.agents/react_15_3_wix_iframe/agents/gemini.json +21 -0
- package/locales/en/.agents/react_15_3_wix_iframe/agents/openai.yaml +8 -0
- package/locales/en/.agents/react_15_3_wix_iframe/agents/qwen.json +21 -0
- package/locales/en/.agents/react_15_3_wix_iframe/agents/skill.yaml +25 -0
- package/locales/en/.agents/react_beast_practices/agents/claude.json +18 -0
- package/locales/en/.agents/react_beast_practices/agents/copilot.json +18 -0
- package/locales/en/.agents/react_beast_practices/agents/gemini.json +18 -0
- package/locales/en/.agents/react_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/react_beast_practices/agents/qwen.json +18 -0
- package/locales/en/.agents/react_beast_practices/agents/skill.yaml +22 -0
- package/locales/en/.agents/release_gate/agents/claude.json +17 -0
- package/locales/en/.agents/release_gate/agents/copilot.json +17 -0
- package/locales/en/.agents/release_gate/agents/gemini.json +17 -0
- package/locales/en/.agents/release_gate/agents/openai.yaml +8 -0
- package/locales/en/.agents/release_gate/agents/qwen.json +17 -0
- package/locales/en/.agents/release_gate/agents/skill.yaml +21 -0
- package/locales/en/.agents/release_gate_checklist_template/agents/claude.json +20 -0
- package/locales/en/.agents/release_gate_checklist_template/agents/copilot.json +20 -0
- package/locales/en/.agents/release_gate_checklist_template/agents/gemini.json +20 -0
- package/locales/en/.agents/release_gate_checklist_template/agents/openai.yaml +8 -0
- package/locales/en/.agents/release_gate_checklist_template/agents/qwen.json +20 -0
- package/locales/en/.agents/release_gate_checklist_template/agents/skill.yaml +24 -0
- package/locales/en/.agents/review_reference_snippets/agents/claude.json +19 -0
- package/locales/en/.agents/review_reference_snippets/agents/copilot.json +19 -0
- package/locales/en/.agents/review_reference_snippets/agents/gemini.json +19 -0
- package/locales/en/.agents/review_reference_snippets/agents/openai.yaml +8 -0
- package/locales/en/.agents/review_reference_snippets/agents/qwen.json +19 -0
- package/locales/en/.agents/review_reference_snippets/agents/skill.yaml +23 -0
- package/locales/en/.agents/security_baseline_dev/agents/claude.json +19 -0
- package/locales/en/.agents/security_baseline_dev/agents/copilot.json +19 -0
- package/locales/en/.agents/security_baseline_dev/agents/gemini.json +19 -0
- package/locales/en/.agents/security_baseline_dev/agents/openai.yaml +8 -0
- package/locales/en/.agents/security_baseline_dev/agents/qwen.json +19 -0
- package/locales/en/.agents/security_baseline_dev/agents/skill.yaml +23 -0
- package/locales/en/.agents/security_review/agents/claude.json +18 -0
- package/locales/en/.agents/security_review/agents/copilot.json +18 -0
- package/locales/en/.agents/security_review/agents/gemini.json +18 -0
- package/locales/en/.agents/security_review/agents/openai.yaml +8 -0
- package/locales/en/.agents/security_review/agents/qwen.json +18 -0
- package/locales/en/.agents/security_review/agents/skill.yaml +22 -0
- package/locales/en/.agents/security_review_baseline/SKILL.md +14 -14
- package/locales/en/.agents/security_review_baseline/agents/claude.json +18 -0
- package/locales/en/.agents/security_review_baseline/agents/copilot.json +18 -0
- package/locales/en/.agents/security_review_baseline/agents/gemini.json +18 -0
- package/locales/en/.agents/security_review_baseline/agents/openai.yaml +8 -0
- package/locales/en/.agents/security_review_baseline/agents/qwen.json +18 -0
- package/locales/en/.agents/security_review_baseline/agents/skill.yaml +22 -0
- package/locales/en/.agents/state_rtk_beast_practices/SKILL.md +8 -8
- package/locales/en/.agents/state_rtk_beast_practices/agents/claude.json +20 -0
- package/locales/en/.agents/state_rtk_beast_practices/agents/copilot.json +20 -0
- package/locales/en/.agents/state_rtk_beast_practices/agents/gemini.json +20 -0
- package/locales/en/.agents/state_rtk_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/state_rtk_beast_practices/agents/qwen.json +20 -0
- package/locales/en/.agents/state_rtk_beast_practices/agents/skill.yaml +24 -0
- package/locales/en/.agents/state_zustand_beast_practices/SKILL.md +5 -5
- package/locales/en/.agents/state_zustand_beast_practices/agents/claude.json +20 -0
- package/locales/en/.agents/state_zustand_beast_practices/agents/copilot.json +20 -0
- package/locales/en/.agents/state_zustand_beast_practices/agents/gemini.json +20 -0
- package/locales/en/.agents/state_zustand_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/state_zustand_beast_practices/agents/qwen.json +20 -0
- package/locales/en/.agents/state_zustand_beast_practices/agents/skill.yaml +24 -0
- package/locales/en/.agents/styling_css_stack/SKILL.md +6 -6
- package/locales/en/.agents/styling_css_stack/agents/claude.json +19 -0
- package/locales/en/.agents/styling_css_stack/agents/copilot.json +19 -0
- package/locales/en/.agents/styling_css_stack/agents/gemini.json +19 -0
- package/locales/en/.agents/styling_css_stack/agents/openai.yaml +8 -0
- package/locales/en/.agents/styling_css_stack/agents/qwen.json +19 -0
- package/locales/en/.agents/styling_css_stack/agents/skill.yaml +23 -0
- package/locales/en/.agents/system_design_checklist/SKILL.md +30 -30
- package/locales/en/.agents/system_design_checklist/agents/claude.json +17 -0
- package/locales/en/.agents/system_design_checklist/agents/copilot.json +17 -0
- package/locales/en/.agents/system_design_checklist/agents/gemini.json +17 -0
- package/locales/en/.agents/system_design_checklist/agents/openai.yaml +8 -0
- package/locales/en/.agents/system_design_checklist/agents/qwen.json +17 -0
- package/locales/en/.agents/system_design_checklist/agents/skill.yaml +21 -0
- package/locales/en/.agents/tanstack_beast_practices/SKILL.md +8 -8
- package/locales/en/.agents/tanstack_beast_practices/agents/claude.json +18 -0
- package/locales/en/.agents/tanstack_beast_practices/agents/copilot.json +18 -0
- package/locales/en/.agents/tanstack_beast_practices/agents/gemini.json +18 -0
- package/locales/en/.agents/tanstack_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/tanstack_beast_practices/agents/qwen.json +18 -0
- package/locales/en/.agents/tanstack_beast_practices/agents/skill.yaml +22 -0
- package/locales/en/.agents/tdd_workflow/SKILL.md +22 -22
- package/locales/en/.agents/tdd_workflow/agents/claude.json +17 -0
- package/locales/en/.agents/tdd_workflow/agents/copilot.json +17 -0
- package/locales/en/.agents/tdd_workflow/agents/gemini.json +17 -0
- package/locales/en/.agents/tdd_workflow/agents/openai.yaml +8 -0
- package/locales/en/.agents/tdd_workflow/agents/qwen.json +17 -0
- package/locales/en/.agents/tdd_workflow/agents/skill.yaml +21 -0
- package/locales/en/.agents/testing_strategy_js/SKILL.md +14 -14
- package/locales/en/.agents/testing_strategy_js/agents/claude.json +19 -0
- package/locales/en/.agents/testing_strategy_js/agents/copilot.json +19 -0
- package/locales/en/.agents/testing_strategy_js/agents/gemini.json +19 -0
- package/locales/en/.agents/testing_strategy_js/agents/openai.yaml +8 -0
- package/locales/en/.agents/testing_strategy_js/agents/qwen.json +19 -0
- package/locales/en/.agents/testing_strategy_js/agents/skill.yaml +23 -0
- package/locales/en/.agents/tests_quality_review/SKILL.md +11 -11
- package/locales/en/.agents/tests_quality_review/agents/claude.json +18 -0
- package/locales/en/.agents/tests_quality_review/agents/copilot.json +18 -0
- package/locales/en/.agents/tests_quality_review/agents/gemini.json +18 -0
- package/locales/en/.agents/tests_quality_review/agents/openai.yaml +8 -0
- package/locales/en/.agents/tests_quality_review/agents/qwen.json +18 -0
- package/locales/en/.agents/tests_quality_review/agents/skill.yaml +22 -0
- package/locales/en/.agents/threat_model_baseline/SKILL.md +35 -35
- package/locales/en/.agents/threat_model_baseline/agents/claude.json +18 -0
- package/locales/en/.agents/threat_model_baseline/agents/copilot.json +18 -0
- package/locales/en/.agents/threat_model_baseline/agents/gemini.json +18 -0
- package/locales/en/.agents/threat_model_baseline/agents/openai.yaml +8 -0
- package/locales/en/.agents/threat_model_baseline/agents/qwen.json +18 -0
- package/locales/en/.agents/threat_model_baseline/agents/skill.yaml +22 -0
- package/locales/en/.agents/tooling_bun_biome/SKILL.md +6 -6
- package/locales/en/.agents/tooling_bun_biome/agents/claude.json +19 -0
- package/locales/en/.agents/tooling_bun_biome/agents/copilot.json +19 -0
- package/locales/en/.agents/tooling_bun_biome/agents/gemini.json +19 -0
- package/locales/en/.agents/tooling_bun_biome/agents/openai.yaml +8 -0
- package/locales/en/.agents/tooling_bun_biome/agents/qwen.json +19 -0
- package/locales/en/.agents/tooling_bun_biome/agents/skill.yaml +23 -0
- package/locales/en/.agents/typescript_beast_practices/SKILL.md +8 -8
- package/locales/en/.agents/typescript_beast_practices/agents/claude.json +18 -0
- package/locales/en/.agents/typescript_beast_practices/agents/copilot.json +18 -0
- package/locales/en/.agents/typescript_beast_practices/agents/gemini.json +18 -0
- package/locales/en/.agents/typescript_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/typescript_beast_practices/agents/qwen.json +18 -0
- package/locales/en/.agents/typescript_beast_practices/agents/skill.yaml +22 -0
- package/locales/en/.agents/ui_a11y_smoke_review/SKILL.md +8 -8
- package/locales/en/.agents/ui_a11y_smoke_review/agents/claude.json +20 -0
- package/locales/en/.agents/ui_a11y_smoke_review/agents/copilot.json +20 -0
- package/locales/en/.agents/ui_a11y_smoke_review/agents/gemini.json +20 -0
- package/locales/en/.agents/ui_a11y_smoke_review/agents/openai.yaml +8 -0
- package/locales/en/.agents/ui_a11y_smoke_review/agents/qwen.json +20 -0
- package/locales/en/.agents/ui_a11y_smoke_review/agents/skill.yaml +24 -0
- package/locales/en/.agents/ui_inventory/SKILL.md +24 -24
- package/locales/en/.agents/ui_inventory/agents/claude.json +18 -0
- package/locales/en/.agents/ui_inventory/agents/copilot.json +18 -0
- package/locales/en/.agents/ui_inventory/agents/gemini.json +18 -0
- package/locales/en/.agents/ui_inventory/agents/openai.yaml +8 -0
- package/locales/en/.agents/ui_inventory/agents/qwen.json +18 -0
- package/locales/en/.agents/ui_inventory/agents/skill.yaml +22 -0
- package/locales/en/.agents/ux_discovery/SKILL.md +31 -31
- package/locales/en/.agents/ux_discovery/agents/claude.json +17 -0
- package/locales/en/.agents/ux_discovery/agents/copilot.json +17 -0
- package/locales/en/.agents/ux_discovery/agents/gemini.json +17 -0
- package/locales/en/.agents/ux_discovery/agents/openai.yaml +8 -0
- package/locales/en/.agents/ux_discovery/agents/qwen.json +17 -0
- package/locales/en/.agents/ux_discovery/agents/skill.yaml +21 -0
- package/locales/en/.agents/ux_spec/SKILL.md +26 -26
- package/locales/en/.agents/ux_spec/agents/claude.json +18 -0
- package/locales/en/.agents/ux_spec/agents/copilot.json +18 -0
- package/locales/en/.agents/ux_spec/agents/gemini.json +18 -0
- package/locales/en/.agents/ux_spec/agents/openai.yaml +8 -0
- package/locales/en/.agents/ux_spec/agents/qwen.json +18 -0
- package/locales/en/.agents/ux_spec/agents/skill.yaml +22 -0
- package/locales/en/.agents/wix_iframe_sdk/SKILL.md +1 -3
- package/locales/en/.agents/wix_iframe_sdk/agents/claude.json +19 -0
- package/locales/en/.agents/wix_iframe_sdk/agents/copilot.json +19 -0
- package/locales/en/.agents/wix_iframe_sdk/agents/gemini.json +19 -0
- package/locales/en/.agents/wix_iframe_sdk/agents/openai.yaml +8 -0
- package/locales/en/.agents/wix_iframe_sdk/agents/qwen.json +19 -0
- package/locales/en/.agents/wix_iframe_sdk/agents/skill.yaml +23 -0
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/claude.json +21 -0
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/copilot.json +21 -0
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/gemini.json +21 -0
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/openai.yaml +8 -0
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/qwen.json +21 -0
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/skill.yaml +25 -0
- package/locales/en/.agents/workflows/auto-restart-containers.md +24 -0
- package/locales/en/.agents/workflows/pipeline-rules.md +24 -0
- package/locales/en/.agents/workflows/start-task.md +27 -0
- package/locales/en/AGENTS.md +4 -1
- package/locales/en/AGENTS.yaml +105 -0
- package/locales/en/agents/architect.md +316 -298
- package/locales/en/agents/conductor.md +323 -307
- package/locales/en/agents/devops.md +256 -243
- package/locales/en/agents/orchestrator.claude.json +95 -0
- package/locales/en/agents/orchestrator.copilot.json +95 -0
- package/locales/en/agents/orchestrator.gemini.json +95 -0
- package/locales/en/agents/orchestrator.openai.yaml +92 -0
- package/locales/en/agents/orchestrator.qwen.json +95 -0
- package/locales/en/agents/product_manager.md +214 -208
- package/locales/en/agents/reviewer.md +248 -241
- package/locales/en/agents/senior_full_stack.md +286 -274
- package/locales/en/agents/tester.md +281 -254
- package/locales/en/agents/ux_ui_designer.md +285 -275
- package/package.json +54 -53
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa_browser_testing
|
|
3
|
+
description: Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор.
|
|
4
|
+
last_verified: 2026-03-11
|
|
5
|
+
version: 1.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Skill: Antigravity Browser Testing
|
|
9
|
+
|
|
10
|
+
## Назначение
|
|
11
|
+
|
|
12
|
+
Тестирование через **встроенный браузер Google Antigravity** (`browser_subagent`).
|
|
13
|
+
Основной инструмент Tester-агента для визуальной проверки, UI parity и DEMO gate.
|
|
14
|
+
|
|
15
|
+
> [!IMPORTANT]
|
|
16
|
+
> Этот скил — для **ручного-автоматизированного** тестирования внутри Antigravity.
|
|
17
|
+
> Для CI/CD автоматизации (spec-файлы, pipeline) → `$qa_e2e_playwright`.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Когда использовать
|
|
22
|
+
|
|
23
|
+
- Тестирование Wix Dashboard / Shopify Admin (закрытая среда)
|
|
24
|
+
- Visual parity: сравнение реализации с дизайн-источником (Stitch / Figma / HTML-ref)
|
|
25
|
+
- DEMO gate: проверка DEV-xx срезов
|
|
26
|
+
- Быстрая regression проверка UI
|
|
27
|
+
- Сбор evidence (скриншоты + видео) для QA Report
|
|
28
|
+
|
|
29
|
+
## Когда НЕ использовать
|
|
30
|
+
|
|
31
|
+
- Нужна автоматизация в CI/CD pipeline → `$qa_e2e_playwright`
|
|
32
|
+
- Unit/integration тестирование → Vitest
|
|
33
|
+
- API contract testing → `$qa_api_contract_tests`
|
|
34
|
+
- Вычислительная логика → unit-тесты
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Инструменты
|
|
39
|
+
|
|
40
|
+
| Инструмент | Что делает | Когда |
|
|
41
|
+
|-----------|-----------|-------|
|
|
42
|
+
| `browser_subagent` | Открывает страницу, кликает, вводит текст, проверяет UI | Основной |
|
|
43
|
+
| `capture_browser_screenshot` | Делает скриншот текущей страницы | Каждый шаг проверки |
|
|
44
|
+
| `open_browser_url` | Переходит на URL | Навигация |
|
|
45
|
+
| `read_browser_page` | Читает DOM/текст страницы | Проверка контента |
|
|
46
|
+
| `click_browser_element` | Кликает по элементу | Интерактивная проверка |
|
|
47
|
+
|
|
48
|
+
> [!NOTE]
|
|
49
|
+
> Каждый вызов `browser_subagent` автоматически записывает `.webp` видео.
|
|
50
|
+
> Видео = evidence для QA report и walkthrough.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Pre-Auth Handoff (Wix / Shopify)
|
|
55
|
+
|
|
56
|
+
> **Триггер:** пользователь указывает **«Wix»** или **«Shopify»** при переходе к TEST gate.
|
|
57
|
+
|
|
58
|
+
### Протокол
|
|
59
|
+
|
|
60
|
+
**Шаг 1 — Запросить авторизацию:**
|
|
61
|
+
```
|
|
62
|
+
🌐 Pre-Auth Handoff: обнаружен триггер [Wix/Shopify].
|
|
63
|
+
Пожалуйста:
|
|
64
|
+
1. Откройте браузер Antigravity
|
|
65
|
+
2. Залогиньтесь в [Wix Dashboard / Shopify Admin]
|
|
66
|
+
3. Перейдите на страницу, которую нужно протестировать
|
|
67
|
+
4. Напишите: "Браузер готов"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Шаг 2 — Пользователь авторизуется и открывает нужную страницу.**
|
|
71
|
+
|
|
72
|
+
**Шаг 3 — Tester запускает `browser_subagent` со строгими правилами:**
|
|
73
|
+
- ❌ НЕ открывать новые URL (только работать с текущей страницей)
|
|
74
|
+
- ❌ НЕ пытаться навигировать на localhost
|
|
75
|
+
- ✅ Делать скриншот на КАЖДОМ шаге проверки
|
|
76
|
+
- ✅ Кликать, переключать, проверять UI
|
|
77
|
+
- ✅ Записать видео (`.webp`) для evidence
|
|
78
|
+
|
|
79
|
+
**Шаг 4 — Анализ скриншотов и формирование findings.**
|
|
80
|
+
|
|
81
|
+
### Ограничения
|
|
82
|
+
|
|
83
|
+
| Работает ✅ | Не работает ❌ |
|
|
84
|
+
|------------|---------------|
|
|
85
|
+
| `manage.wix.com` | `localhost` |
|
|
86
|
+
| `admin.shopify.com` | Self-signed SSL |
|
|
87
|
+
| Любой URL с валидным SSL | Wix sandbox iFrame API |
|
|
88
|
+
| Auth state сохраняется | Session expires (~24h) |
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Visual Parity через Antigravity Browser
|
|
93
|
+
|
|
94
|
+
> [!IMPORTANT]
|
|
95
|
+
> **Source of truth определяется UX Designer** (обязательный вопрос #2 Clarification Protocol).
|
|
96
|
+
> Если не указан — запросить перед проверкой.
|
|
97
|
+
|
|
98
|
+
### Алгоритм
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
1. Получить reference-скриншот (зависит от Source of Truth):
|
|
102
|
+
(a) Stitch → get_screen() → скачать screenshot через browser_subagent
|
|
103
|
+
(b) Figma → пользователь предоставляет экспорт PNG
|
|
104
|
+
(c) HTML-ref → открыть HTML-файл в browser_subagent → capture_screenshot
|
|
105
|
+
|
|
106
|
+
2. Получить actual-скриншот:
|
|
107
|
+
→ browser_subagent: открыть реализацию → capture_screenshot
|
|
108
|
+
|
|
109
|
+
3. Визуально сравнить (Tester анализирует оба скриншота):
|
|
110
|
+
→ Структура: элементы на местах?
|
|
111
|
+
→ Типографика: шрифт, размер, цвет?
|
|
112
|
+
→ Spacing: отступы соответствуют?
|
|
113
|
+
→ Цвета: палитра верна?
|
|
114
|
+
→ Состояния: все реализованы?
|
|
115
|
+
|
|
116
|
+
4. Оформить finding:
|
|
117
|
+
→ UX-PARITY-xx: PASS / FAIL + скриншот + описание
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Пример: Stitch как Source of Truth
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
Шаг 1: get_screen(projectId, screenId) → получить screenshot URL
|
|
124
|
+
Шаг 2: browser_subagent → открыть screenshot URL → capture_screenshot → сохранить как reference
|
|
125
|
+
Шаг 3: browser_subagent → открыть реализацию (Wix Dashboard) → capture_screenshot → сохранить как actual
|
|
126
|
+
Шаг 4: Сравнить reference vs actual → зафиксировать расхождения
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Пример: Figma как Source of Truth
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Шаг 1: Пользователь предоставляет PNG экспорт из Figma
|
|
133
|
+
Шаг 2: browser_subagent → открыть реализацию → capture_screenshot
|
|
134
|
+
Шаг 3: Сравнить Figma PNG vs actual screenshot
|
|
135
|
+
Шаг 4: Оформить findings
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Пример: HTML-ref как Source of Truth
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
Шаг 1: browser_subagent → открыть popup_templates/glassmorphism.html → capture_screenshot
|
|
142
|
+
Шаг 2: browser_subagent → открыть реализацию → capture_screenshot
|
|
143
|
+
Шаг 3: Сравнить reference vs actual
|
|
144
|
+
Шаг 4: Оформить findings
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## DEMO Gate через Browser
|
|
150
|
+
|
|
151
|
+
### Протокол DEMO-xx
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
1. Получить DEMO-инструкции от Dev (DEMO-xx)
|
|
155
|
+
2. Pre-Auth (если Wix/Shopify) или открыть URL напрямую
|
|
156
|
+
3. browser_subagent: выполнить шаги из DEMO
|
|
157
|
+
4. capture_screenshot на КАЖДОМ шаге
|
|
158
|
+
5. Зафиксировать: PASS/FAIL + скриншот + описание
|
|
159
|
+
6. Embed в walkthrough.md
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Формат evidence
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
### DEMO-01: Template Selection
|
|
166
|
+
|
|
167
|
+

|
|
168
|
+
Статус: ✅ PASS — редактор открылся, шаблоны загрузились
|
|
169
|
+
|
|
170
|
+

|
|
171
|
+
Статус: ✅ PASS — preview обновился корректно
|
|
172
|
+
|
|
173
|
+

|
|
174
|
+
Статус: ❌ FAIL — toast не появился после сохранения
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## browser_subagent Best Practices
|
|
180
|
+
|
|
181
|
+
### Правила вызова
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
browser_subagent(
|
|
185
|
+
Task: "Detailed description of what to check and what to return",
|
|
186
|
+
TaskName: "Short descriptive name",
|
|
187
|
+
RecordingName: "lowercase_with_underscores"
|
|
188
|
+
)
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Что указывать в Task
|
|
192
|
+
|
|
193
|
+
- **Конкретные элементы** для проверки (data-testid, текст, CSS)
|
|
194
|
+
- **Ожидаемый результат** (что должно быть видно)
|
|
195
|
+
- **Условие возврата** (когда считать задачу завершённой)
|
|
196
|
+
- **Скриншоты** — когда именно их делать
|
|
197
|
+
|
|
198
|
+
### Пример хорошего Task
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
Navigate to the Widget Design page. Verify that:
|
|
202
|
+
1. Template selector shows at least 3 templates
|
|
203
|
+
2. Click on "Glassmorphism" template
|
|
204
|
+
3. Verify live preview updates with glassmorphism styling
|
|
205
|
+
4. Take a screenshot after each step.
|
|
206
|
+
Return: screenshot paths and PASS/FAIL status for each step.
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Пример плохого Task ❌
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Check if the page works.
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Anti-patterns
|
|
218
|
+
|
|
219
|
+
- ❌ `browser_subagent` без конкретных шагов — «проверь страницу» слишком размыто
|
|
220
|
+
- ❌ Открывать новые URL после Pre-Auth — потеряем auth state
|
|
221
|
+
- ❌ Не делать скриншоты — нет evidence = нет proof
|
|
222
|
+
- ❌ Визуальная проверка без reference — нужен baseline (Stitch/Figma/HTML)
|
|
223
|
+
- ❌ Игнорировать `.webp` записи — это готовый evidence
|
|
224
|
+
- ❌ Тестировать бизнес-логику через browser — используй unit-тесты
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Артефакты (Deliverables)
|
|
229
|
+
|
|
230
|
+
| Артефакт | Формат | Где |
|
|
231
|
+
|----------|--------|-----|
|
|
232
|
+
| Скриншоты шагов | `.png` | Embed в walkthrough.md |
|
|
233
|
+
| Видео-записи | `.webp` | Embed в walkthrough.md |
|
|
234
|
+
| DEMO Results | Таблица | В QA Report |
|
|
235
|
+
| UX Parity Results | Таблица | В QA Report |
|
|
236
|
+
| Findings | P0/P1/P2 блоки | В QA Report |
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Выход (формат)
|
|
241
|
+
|
|
242
|
+
### Browser Test Summary
|
|
243
|
+
| Step | Action | Expected | Actual | Screenshot | Status |
|
|
244
|
+
|------|--------|----------|--------|------------|--------|
|
|
245
|
+
| 1 | ... | ... | ... | 📸 link | PASS/FAIL |
|
|
246
|
+
|
|
247
|
+
### UX Parity Results
|
|
248
|
+
| UX-PARITY-xx | Screen | Source of Truth | Findings | Status |
|
|
249
|
+
|--------------|--------|----------------|----------|--------|
|
|
250
|
+
| ... | ... | Stitch / Figma / HTML-ref | ... | PASS/FAIL |
|
|
251
|
+
|
|
252
|
+
### DEMO Results
|
|
253
|
+
| DEMO-xx | Steps verified | Issues | Status |
|
|
254
|
+
|---------|---------------|--------|--------|
|
|
255
|
+
| ... | 5/5 | none | ✅ PASS |
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qa_browser_testing",
|
|
3
|
+
"display_name": "Antigravity Browser Testing",
|
|
4
|
+
"description": "Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор.",
|
|
5
|
+
"default_prompt": "Используй $qa_browser_testing, когда задача относится к навыку \"Antigravity Browser Testing\".",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"qa_browser_testing",
|
|
8
|
+
"qa browser testing",
|
|
9
|
+
"Antigravity Browser Testing",
|
|
10
|
+
"Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор"
|
|
11
|
+
],
|
|
12
|
+
"capabilities": [
|
|
13
|
+
"qa",
|
|
14
|
+
"browser",
|
|
15
|
+
"testing"
|
|
16
|
+
],
|
|
17
|
+
"tools": [],
|
|
18
|
+
"implicit_invocation": true
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qa_browser_testing",
|
|
3
|
+
"display_name": "Antigravity Browser Testing",
|
|
4
|
+
"description": "Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор.",
|
|
5
|
+
"default_prompt": "Используй $qa_browser_testing, когда задача относится к навыку \"Antigravity Browser Testing\".",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"qa_browser_testing",
|
|
8
|
+
"qa browser testing",
|
|
9
|
+
"Antigravity Browser Testing",
|
|
10
|
+
"Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор"
|
|
11
|
+
],
|
|
12
|
+
"capabilities": [
|
|
13
|
+
"qa",
|
|
14
|
+
"browser",
|
|
15
|
+
"testing"
|
|
16
|
+
],
|
|
17
|
+
"tools": [],
|
|
18
|
+
"implicit_invocation": true
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qa_browser_testing",
|
|
3
|
+
"display_name": "Antigravity Browser Testing",
|
|
4
|
+
"description": "Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор.",
|
|
5
|
+
"default_prompt": "Используй $qa_browser_testing, когда задача относится к навыку \"Antigravity Browser Testing\".",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"qa_browser_testing",
|
|
8
|
+
"qa browser testing",
|
|
9
|
+
"Antigravity Browser Testing",
|
|
10
|
+
"Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор"
|
|
11
|
+
],
|
|
12
|
+
"capabilities": [
|
|
13
|
+
"qa",
|
|
14
|
+
"browser",
|
|
15
|
+
"testing"
|
|
16
|
+
],
|
|
17
|
+
"tools": [],
|
|
18
|
+
"implicit_invocation": true
|
|
19
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Antigravity Browser Testing"
|
|
3
|
+
short_description: "Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_su…"
|
|
4
|
+
default_prompt: "Используй $qa_browser_testing, когда задача относится к навыку \"Antigravity Browser Testing\"."
|
|
5
|
+
dependencies:
|
|
6
|
+
tools: []
|
|
7
|
+
policy:
|
|
8
|
+
allow_implicit_invocation: true
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qa_browser_testing",
|
|
3
|
+
"display_name": "Antigravity Browser Testing",
|
|
4
|
+
"description": "Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор.",
|
|
5
|
+
"default_prompt": "Используй $qa_browser_testing, когда задача относится к навыку \"Antigravity Browser Testing\".",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"qa_browser_testing",
|
|
8
|
+
"qa browser testing",
|
|
9
|
+
"Antigravity Browser Testing",
|
|
10
|
+
"Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор"
|
|
11
|
+
],
|
|
12
|
+
"capabilities": [
|
|
13
|
+
"qa",
|
|
14
|
+
"browser",
|
|
15
|
+
"testing"
|
|
16
|
+
],
|
|
17
|
+
"tools": [],
|
|
18
|
+
"implicit_invocation": true
|
|
19
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
name: "qa_browser_testing"
|
|
3
|
+
display_name: "Antigravity Browser Testing"
|
|
4
|
+
description: "Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор."
|
|
5
|
+
default_prompt: "Используй $qa_browser_testing, когда задача относится к навыку \"Antigravity Browser Testing\"."
|
|
6
|
+
triggers:
|
|
7
|
+
- "qa_browser_testing"
|
|
8
|
+
- "qa browser testing"
|
|
9
|
+
- "Antigravity Browser Testing"
|
|
10
|
+
- "Визуальное E2E-тестирование через встроенный Antigravity Browser — Pre-Auth Handoff, browser_subagent, скриншоты, visual parity, evidence-сбор"
|
|
11
|
+
capabilities:
|
|
12
|
+
- "qa"
|
|
13
|
+
- "browser"
|
|
14
|
+
- "testing"
|
|
15
|
+
tools: []
|
|
16
|
+
invocation:
|
|
17
|
+
explicit: true
|
|
18
|
+
implicit: true
|
|
19
|
+
localization:
|
|
20
|
+
default_locale: "ru"
|
|
21
|
+
available_locales:
|
|
22
|
+
- "ru"
|
|
23
|
+
- "en"
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa_e2e_playwright
|
|
3
|
+
description: E2E-тестирование через Playwright для CI/CD — автоматизированные spec-файлы, page objects, visual regression, pipeline интеграция. Для ручного тестирования в Antigravity → $qa_browser_testing.
|
|
4
|
+
last_verified: 2026-03-11
|
|
5
|
+
version: 2.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Skill: E2E Playwright (CI/CD Automated)
|
|
9
|
+
|
|
10
|
+
## Назначение
|
|
11
|
+
|
|
12
|
+
Автоматизированный E2E regression suite через **Playwright** для CI/CD pipeline.
|
|
13
|
+
Page Objects, spec-файлы, visual snapshot comparison, GitHub Actions.
|
|
14
|
+
|
|
15
|
+
> [!IMPORTANT]
|
|
16
|
+
> Этот скил — для **автоматизированных тестов в CI/CD**.
|
|
17
|
+
> Для интерактивного тестирования в Google Antigravity → `$qa_browser_testing`.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Когда использовать
|
|
22
|
+
|
|
23
|
+
- Проект дорос до CI/CD pipeline c E2E gate
|
|
24
|
+
- Нужен автоматический regression на каждый PR/deploy
|
|
25
|
+
- Visual regression: pixel-perfect сравнение в CI
|
|
26
|
+
- Стабильный UI, который не будет часто flaky
|
|
27
|
+
|
|
28
|
+
## Когда НЕ использовать
|
|
29
|
+
|
|
30
|
+
- Тестирование внутри Antigravity → `$qa_browser_testing`
|
|
31
|
+
- Wix/Shopify sandbox (нет доступа из CI) → `$qa_browser_testing`
|
|
32
|
+
- Unit/integration → Vitest
|
|
33
|
+
- Первый срез / нестабильный UI → тесты будут flaky
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Стек проекта (SCR)
|
|
38
|
+
|
|
39
|
+
| Компонент | Технология | Расположение |
|
|
40
|
+
|-----------|-----------|-------------|
|
|
41
|
+
| Unit/Integration | **Vitest** | `apps/*/vitest.config.js` |
|
|
42
|
+
| E2E | **Playwright** | `apps/dashboard/e2e/` (создать) |
|
|
43
|
+
| Wix Test Utils | `@wix/wix-ui-test-utils` | В node_modules |
|
|
44
|
+
| Wix UniDriver | `@wix/unidriver-playwright` | В node_modules |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Setup
|
|
49
|
+
|
|
50
|
+
### 1. Установка
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
cd apps/dashboard
|
|
54
|
+
npm init playwright@latest -- --yes --browser=chromium --lang=js
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. Конфигурация: `playwright.config.js`
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
// apps/dashboard/playwright.config.js
|
|
61
|
+
import { defineConfig, devices } from '@playwright/test';
|
|
62
|
+
|
|
63
|
+
export default defineConfig({
|
|
64
|
+
testDir: './e2e',
|
|
65
|
+
timeout: 30_000,
|
|
66
|
+
expect: { timeout: 5_000 },
|
|
67
|
+
fullyParallel: false,
|
|
68
|
+
retries: process.env.CI ? 2 : 0,
|
|
69
|
+
workers: 1,
|
|
70
|
+
reporter: [['html', { open: 'never' }], ['list']],
|
|
71
|
+
|
|
72
|
+
use: {
|
|
73
|
+
baseURL: process.env.BASE_URL || 'https://manage.wix.com',
|
|
74
|
+
trace: 'on-first-retry',
|
|
75
|
+
screenshot: 'only-on-failure',
|
|
76
|
+
video: 'on-first-retry',
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
projects: [
|
|
80
|
+
{
|
|
81
|
+
name: 'wix-dashboard',
|
|
82
|
+
use: { ...devices['Desktop Chrome'] },
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 3. Структура директории
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
apps/dashboard/e2e/
|
|
92
|
+
├── fixtures/
|
|
93
|
+
│ ├── auth.fixture.js # Auth (storageState)
|
|
94
|
+
│ └── test-data.js # Тестовые данные
|
|
95
|
+
├── pages/
|
|
96
|
+
│ ├── BasePage.js # Base page object
|
|
97
|
+
│ ├── WidgetDesignPage.js # Widget Design Editor
|
|
98
|
+
│ ├── RulesTriggersPage.js # Rules & Triggers
|
|
99
|
+
│ └── CouponsPage.js # Coupons Management
|
|
100
|
+
├── specs/
|
|
101
|
+
│ ├── widget-design.spec.js # Widget editor E2E
|
|
102
|
+
│ ├── coupon-flow.spec.js # Coupon CRUD
|
|
103
|
+
│ └── visual-parity.spec.js # Screenshot comparison
|
|
104
|
+
└── screenshots/
|
|
105
|
+
└── expected/ # Baseline скриншоты
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Page Object Model
|
|
111
|
+
|
|
112
|
+
### BasePage
|
|
113
|
+
|
|
114
|
+
```js
|
|
115
|
+
/**
|
|
116
|
+
* Базовый page object для всех страниц dashboard.
|
|
117
|
+
*/
|
|
118
|
+
export class BasePage {
|
|
119
|
+
/**
|
|
120
|
+
* @param {import('@playwright/test').Page} page - Playwright page instance.
|
|
121
|
+
*/
|
|
122
|
+
constructor(page) {
|
|
123
|
+
this.page = page;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Ожидает загрузку страницы.
|
|
128
|
+
* @param {string} contentSelector - CSS-селектор основного контента.
|
|
129
|
+
* @param {number} [timeout=10000] - таймаут ожидания в мс.
|
|
130
|
+
*/
|
|
131
|
+
async waitForPageLoad(contentSelector, timeout = 10_000) {
|
|
132
|
+
await this.page.waitForSelector(contentSelector, {
|
|
133
|
+
state: 'visible',
|
|
134
|
+
timeout,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Делает скриншот компонента для visual parity.
|
|
140
|
+
* @param {string} name - имя скриншота.
|
|
141
|
+
* @returns {Promise<Buffer>} скриншот.
|
|
142
|
+
*/
|
|
143
|
+
async takeScreenshot(name) {
|
|
144
|
+
return this.page.screenshot({
|
|
145
|
+
path: `e2e/screenshots/actual/${name}.png`,
|
|
146
|
+
fullPage: true,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Тест-паттерны
|
|
155
|
+
|
|
156
|
+
### Happy Path
|
|
157
|
+
|
|
158
|
+
```js
|
|
159
|
+
import { test, expect } from '@playwright/test';
|
|
160
|
+
import { WidgetDesignPage } from '../pages/WidgetDesignPage.js';
|
|
161
|
+
|
|
162
|
+
test.describe('Widget Design Editor', () => {
|
|
163
|
+
test('should select template and save', async ({ page }) => {
|
|
164
|
+
const editor = new WidgetDesignPage(page);
|
|
165
|
+
await editor.waitForPageLoad('[data-testid="widget-editor"]');
|
|
166
|
+
await editor.selectTemplate('Glassmorphism');
|
|
167
|
+
await editor.fillFields({ headline: 'Special Offer!', coupon: 'SAVE20' });
|
|
168
|
+
await editor.save();
|
|
169
|
+
|
|
170
|
+
await expect(editor.livePreview).toContainText('Special Offer!');
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Error Path
|
|
176
|
+
|
|
177
|
+
```js
|
|
178
|
+
test('should show validation error for empty coupon', async ({ page }) => {
|
|
179
|
+
const editor = new WidgetDesignPage(page);
|
|
180
|
+
await editor.waitForPageLoad('[data-testid="widget-editor"]');
|
|
181
|
+
await editor.fillFields({ coupon: '' });
|
|
182
|
+
await editor.save();
|
|
183
|
+
|
|
184
|
+
const error = page.locator('[data-testid="coupon-error"]');
|
|
185
|
+
await expect(error).toBeVisible();
|
|
186
|
+
});
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### UI States
|
|
190
|
+
|
|
191
|
+
```js
|
|
192
|
+
test('should show empty state when no templates', async ({ page }) => {
|
|
193
|
+
await page.route('**/api/templates', (route) =>
|
|
194
|
+
route.fulfill({ status: 200, body: '[]', headers: { 'Content-Type': 'application/json' } }),
|
|
195
|
+
);
|
|
196
|
+
await page.reload();
|
|
197
|
+
await expect(page.locator('[data-testid="empty-state"]')).toContainText('No templates');
|
|
198
|
+
});
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Visual Regression
|
|
204
|
+
|
|
205
|
+
> [!IMPORTANT]
|
|
206
|
+
> **Source of truth определяется UX Designer** (обязательный вопрос #2).
|
|
207
|
+
> Baseline-скриншоты зависят от выбранного источника.
|
|
208
|
+
|
|
209
|
+
```js
|
|
210
|
+
test('visual parity: popup matches design', async ({ page }) => {
|
|
211
|
+
await page.goto('/preview/glassmorphism');
|
|
212
|
+
const popup = page.locator('[data-testid="popup-container"]');
|
|
213
|
+
await expect(popup).toHaveScreenshot('glassmorphism-popup.png', {
|
|
214
|
+
maxDiffPixelRatio: 0.05,
|
|
215
|
+
threshold: 0.2,
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Обновить baseline
|
|
222
|
+
npx playwright test --update-snapshots
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Naming Convention
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
[feature].spec.js — тесты
|
|
231
|
+
[feature].visual.spec.js — visual regression
|
|
232
|
+
[PageName].js — page objects
|
|
233
|
+
|
|
234
|
+
# Test IDs (data-testid)
|
|
235
|
+
[component]-[element] → popup-container
|
|
236
|
+
[component]-[element]-[state] → save-button-disabled
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
> [!WARNING]
|
|
240
|
+
> DEV обязан добавить `data-testid` для всех интерактивных элементов.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Запуск
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
npx playwright test # Все
|
|
248
|
+
npx playwright test e2e/specs/widget-design.spec.js # Один spec
|
|
249
|
+
npx playwright test --ui # Debug UI
|
|
250
|
+
npx playwright test --headed # Headed
|
|
251
|
+
npx playwright test --update-snapshots # Обновить baseline
|
|
252
|
+
npx playwright show-report # Отчёт
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## CI/CD Pipeline
|
|
258
|
+
|
|
259
|
+
```yaml
|
|
260
|
+
# .github/workflows/e2e.yml
|
|
261
|
+
e2e-tests:
|
|
262
|
+
runs-on: ubuntu-latest
|
|
263
|
+
steps:
|
|
264
|
+
- uses: actions/checkout@v4
|
|
265
|
+
- uses: actions/setup-node@v4
|
|
266
|
+
with: { node-version: 20 }
|
|
267
|
+
- run: npm ci
|
|
268
|
+
working-directory: apps/dashboard
|
|
269
|
+
- run: npx playwright install --with-deps chromium
|
|
270
|
+
working-directory: apps/dashboard
|
|
271
|
+
- run: npx playwright test
|
|
272
|
+
working-directory: apps/dashboard
|
|
273
|
+
- uses: actions/upload-artifact@v4
|
|
274
|
+
if: failure()
|
|
275
|
+
with:
|
|
276
|
+
name: playwright-report
|
|
277
|
+
path: apps/dashboard/playwright-report/
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Anti-patterns
|
|
283
|
+
|
|
284
|
+
- ❌ CSS-селекторы (`.class-name`) — хрупко, только `data-testid`
|
|
285
|
+
- ❌ `page.waitForTimeout(3000)` — использовать `waitForSelector`
|
|
286
|
+
- ❌ E2E для логики, покрытой unit-тестами — избыточно
|
|
287
|
+
- ❌ Зависимость тестов друг от друга — каждый тест изолирован
|
|
288
|
+
- ❌ Hard-coded данные в спеках — выносить в `fixtures/test-data.js`
|
|
289
|
+
- ❌ Игнорировать flaky — стабилизировать или удалить
|
|
290
|
+
- ❌ Скриншот всей страницы — скриншотить **конкретный компонент**
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Definition of Done
|
|
295
|
+
|
|
296
|
+
- [ ] Critical flows из Test Plan покрыты E2E
|
|
297
|
+
- [ ] Каждый тест: happy path + ≥1 error path
|
|
298
|
+
- [ ] Page Objects для ключевых страниц
|
|
299
|
+
- [ ] `data-testid` добавлены (DEV)
|
|
300
|
+
- [ ] Baseline-скриншоты согласованы
|
|
301
|
+
- [ ] Нет flaky (3 прогона стабильно)
|
|
302
|
+
- [ ] CI pipeline настроен
|
|
303
|
+
- [ ] Команда запуска в README
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Deliverables
|
|
308
|
+
|
|
309
|
+
- Spec-файлы: `apps/dashboard/e2e/specs/`
|
|
310
|
+
- Page Objects: `apps/dashboard/e2e/pages/`
|
|
311
|
+
- `playwright.config.js`
|
|
312
|
+
- CI/CD pipeline config
|
|
313
|
+
- Список `data-testid` (запрос к DEV)
|