code-ai-installer 1.2.0 → 1.3.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/SKILL.md +260 -41
- package/.agents/a11y_baseline/agents/claude.json +2 -2
- package/.agents/a11y_baseline/agents/copilot.json +2 -2
- package/.agents/a11y_baseline/agents/gemini.json +2 -2
- package/.agents/a11y_baseline/agents/openai.yaml +1 -1
- package/.agents/a11y_baseline/agents/qwen.json +2 -2
- package/.agents/a11y_baseline/agents/skill.yaml +2 -2
- package/.agents/adr_log/SKILL.md +369 -69
- package/.agents/adr_log/agents/claude.json +2 -2
- package/.agents/adr_log/agents/copilot.json +2 -2
- package/.agents/adr_log/agents/gemini.json +2 -2
- package/.agents/adr_log/agents/openai.yaml +1 -1
- package/.agents/adr_log/agents/qwen.json +2 -2
- package/.agents/adr_log/agents/skill.yaml +2 -2
- package/.agents/api_contract_compliance_review/SKILL.md +224 -18
- package/.agents/api_contract_compliance_review/agents/claude.json +2 -2
- package/.agents/api_contract_compliance_review/agents/copilot.json +2 -2
- package/.agents/api_contract_compliance_review/agents/gemini.json +2 -2
- package/.agents/api_contract_compliance_review/agents/openai.yaml +1 -1
- package/.agents/api_contract_compliance_review/agents/qwen.json +2 -2
- package/.agents/api_contract_compliance_review/agents/skill.yaml +2 -2
- package/.agents/api_contracts/SKILL.md +329 -42
- package/.agents/api_contracts/agents/claude.json +2 -2
- package/.agents/api_contracts/agents/copilot.json +2 -2
- package/.agents/api_contracts/agents/gemini.json +2 -2
- package/.agents/api_contracts/agents/openai.yaml +1 -1
- package/.agents/api_contracts/agents/qwen.json +2 -2
- package/.agents/api_contracts/agents/skill.yaml +2 -2
- package/.agents/architecture_compliance_review/SKILL.md +213 -17
- package/.agents/architecture_compliance_review/agents/claude.json +2 -2
- package/.agents/architecture_compliance_review/agents/copilot.json +2 -2
- package/.agents/architecture_compliance_review/agents/gemini.json +2 -2
- package/.agents/architecture_compliance_review/agents/openai.yaml +1 -1
- package/.agents/architecture_compliance_review/agents/qwen.json +2 -2
- package/.agents/architecture_compliance_review/agents/skill.yaml +2 -2
- package/.agents/architecture_doc/SKILL.md +384 -92
- package/.agents/architecture_doc/agents/claude.json +2 -2
- package/.agents/architecture_doc/agents/copilot.json +2 -2
- package/.agents/architecture_doc/agents/gemini.json +2 -2
- package/.agents/architecture_doc/agents/openai.yaml +1 -1
- package/.agents/architecture_doc/agents/qwen.json +2 -2
- package/.agents/architecture_doc/agents/skill.yaml +2 -2
- package/.agents/board/SKILL.md +232 -43
- package/.agents/board/agents/claude.json +2 -2
- package/.agents/board/agents/copilot.json +2 -2
- package/.agents/board/agents/gemini.json +2 -2
- package/.agents/board/agents/openai.yaml +1 -1
- package/.agents/board/agents/qwen.json +2 -2
- package/.agents/board/agents/skill.yaml +2 -2
- package/.agents/cloud_infrastructure_security/SKILL.md +277 -68
- package/.agents/cloud_infrastructure_security/agents/claude.json +2 -2
- package/.agents/cloud_infrastructure_security/agents/copilot.json +2 -2
- package/.agents/cloud_infrastructure_security/agents/gemini.json +2 -2
- package/.agents/cloud_infrastructure_security/agents/openai.yaml +1 -1
- package/.agents/cloud_infrastructure_security/agents/qwen.json +2 -2
- package/.agents/cloud_infrastructure_security/agents/skill.yaml +2 -2
- package/.agents/code_review_checklist/SKILL.md +200 -47
- package/.agents/code_review_checklist/agents/claude.json +2 -2
- package/.agents/code_review_checklist/agents/copilot.json +2 -2
- package/.agents/code_review_checklist/agents/gemini.json +2 -2
- package/.agents/code_review_checklist/agents/openai.yaml +1 -1
- package/.agents/code_review_checklist/agents/qwen.json +2 -2
- package/.agents/code_review_checklist/agents/skill.yaml +2 -2
- package/.agents/current_state_analysis/SKILL.md +225 -44
- package/.agents/current_state_analysis/agents/claude.json +2 -2
- package/.agents/current_state_analysis/agents/copilot.json +2 -2
- package/.agents/current_state_analysis/agents/gemini.json +2 -2
- package/.agents/current_state_analysis/agents/openai.yaml +1 -1
- package/.agents/current_state_analysis/agents/qwen.json +2 -2
- package/.agents/current_state_analysis/agents/skill.yaml +2 -2
- package/.agents/data_model/SKILL.md +285 -40
- package/.agents/data_model/agents/claude.json +2 -2
- package/.agents/data_model/agents/copilot.json +2 -2
- package/.agents/data_model/agents/gemini.json +2 -2
- package/.agents/data_model/agents/openai.yaml +1 -1
- package/.agents/data_model/agents/qwen.json +2 -2
- package/.agents/data_model/agents/skill.yaml +2 -2
- package/.agents/dependency_supply_chain_review/SKILL.md +300 -20
- package/.agents/dependency_supply_chain_review/agents/claude.json +2 -2
- package/.agents/dependency_supply_chain_review/agents/copilot.json +2 -2
- package/.agents/dependency_supply_chain_review/agents/gemini.json +2 -2
- package/.agents/dependency_supply_chain_review/agents/openai.yaml +1 -1
- package/.agents/dependency_supply_chain_review/agents/qwen.json +2 -2
- package/.agents/dependency_supply_chain_review/agents/skill.yaml +2 -2
- package/.agents/deployment_ci_plan/SKILL.md +410 -51
- package/.agents/deployment_ci_plan/agents/claude.json +3 -2
- package/.agents/deployment_ci_plan/agents/copilot.json +3 -2
- package/.agents/deployment_ci_plan/agents/gemini.json +3 -2
- package/.agents/deployment_ci_plan/agents/openai.yaml +1 -1
- package/.agents/deployment_ci_plan/agents/qwen.json +3 -2
- package/.agents/deployment_ci_plan/agents/skill.yaml +2 -1
- package/.agents/design_intake/SKILL.md +225 -71
- package/.agents/design_intake/agents/claude.json +2 -2
- package/.agents/design_intake/agents/copilot.json +2 -2
- package/.agents/design_intake/agents/gemini.json +2 -2
- package/.agents/design_intake/agents/openai.yaml +1 -1
- package/.agents/design_intake/agents/qwen.json +2 -2
- package/.agents/design_intake/agents/skill.yaml +2 -2
- package/.agents/design_parity_review/SKILL.md +216 -73
- package/.agents/design_systems/SKILL.md +432 -15
- package/.agents/design_systems/agents/claude.json +2 -2
- package/.agents/design_systems/agents/copilot.json +2 -2
- package/.agents/design_systems/agents/gemini.json +2 -2
- package/.agents/design_systems/agents/openai.yaml +1 -1
- package/.agents/design_systems/agents/qwen.json +2 -2
- package/.agents/design_systems/agents/skill.yaml +2 -2
- package/.agents/dev_reference_snippets/SKILL.md +305 -117
- package/.agents/dev_reference_snippets/agents/claude.json +2 -2
- package/.agents/dev_reference_snippets/agents/copilot.json +2 -2
- package/.agents/dev_reference_snippets/agents/gemini.json +2 -2
- package/.agents/dev_reference_snippets/agents/openai.yaml +1 -1
- package/.agents/dev_reference_snippets/agents/qwen.json +2 -2
- package/.agents/dev_reference_snippets/agents/skill.yaml +2 -2
- package/.agents/docker_kubernetes_architecture/SKILL.md +480 -145
- package/.agents/docker_kubernetes_architecture/agents/claude.json +2 -2
- package/.agents/docker_kubernetes_architecture/agents/copilot.json +2 -2
- package/.agents/docker_kubernetes_architecture/agents/gemini.json +2 -2
- package/.agents/docker_kubernetes_architecture/agents/openai.yaml +1 -1
- package/.agents/docker_kubernetes_architecture/agents/qwen.json +2 -2
- package/.agents/docker_kubernetes_architecture/agents/skill.yaml +2 -2
- package/.agents/es2025_beast_practices/SKILL.md +433 -8
- package/.agents/es2025_beast_practices/agents/claude.json +2 -2
- package/.agents/es2025_beast_practices/agents/copilot.json +2 -2
- package/.agents/es2025_beast_practices/agents/gemini.json +2 -2
- package/.agents/es2025_beast_practices/agents/openai.yaml +1 -1
- package/.agents/es2025_beast_practices/agents/qwen.json +2 -2
- package/.agents/es2025_beast_practices/agents/skill.yaml +2 -2
- package/.agents/gates/SKILL.md +134 -35
- package/.agents/gates/agents/claude.json +2 -2
- package/.agents/gates/agents/copilot.json +2 -2
- package/.agents/gates/agents/gemini.json +2 -2
- package/.agents/gates/agents/openai.yaml +1 -1
- package/.agents/gates/agents/qwen.json +2 -2
- package/.agents/gates/agents/skill.yaml +2 -2
- package/.agents/go_beast_practices/SKILL.md +557 -23
- package/.agents/go_beast_practices/agents/claude.json +2 -2
- package/.agents/go_beast_practices/agents/copilot.json +2 -2
- package/.agents/go_beast_practices/agents/gemini.json +2 -2
- package/.agents/go_beast_practices/agents/openai.yaml +1 -1
- package/.agents/go_beast_practices/agents/qwen.json +2 -2
- package/.agents/go_beast_practices/agents/skill.yaml +2 -2
- package/.agents/google_stitch_skill/SKILL.md +1 -1
- package/.agents/google_stitch_skill/agents/claude.json +5 -6
- package/.agents/google_stitch_skill/agents/copilot.json +5 -6
- package/.agents/google_stitch_skill/agents/gemini.json +5 -6
- package/.agents/google_stitch_skill/agents/openai.yaml +1 -1
- package/.agents/google_stitch_skill/agents/qwen.json +5 -6
- package/.agents/google_stitch_skill/agents/skill.yaml +4 -5
- package/.agents/handoff/SKILL.md +212 -52
- package/.agents/handoff/agents/claude.json +2 -2
- package/.agents/handoff/agents/copilot.json +2 -2
- package/.agents/handoff/agents/gemini.json +2 -2
- package/.agents/handoff/agents/openai.yaml +1 -1
- package/.agents/handoff/agents/qwen.json +2 -2
- package/.agents/handoff/agents/skill.yaml +2 -2
- package/.agents/k8s_manifests_conventions/SKILL.md +548 -176
- package/.agents/k8s_manifests_conventions/agents/claude.json +2 -2
- package/.agents/k8s_manifests_conventions/agents/copilot.json +2 -2
- package/.agents/k8s_manifests_conventions/agents/gemini.json +2 -2
- package/.agents/k8s_manifests_conventions/agents/openai.yaml +1 -1
- package/.agents/k8s_manifests_conventions/agents/qwen.json +2 -2
- package/.agents/k8s_manifests_conventions/agents/skill.yaml +2 -2
- package/.agents/memory/SKILL.md +219 -29
- package/.agents/memory/agents/claude.json +2 -2
- package/.agents/memory/agents/copilot.json +2 -2
- package/.agents/memory/agents/gemini.json +2 -2
- package/.agents/memory/agents/openai.yaml +1 -1
- package/.agents/memory/agents/qwen.json +2 -2
- package/.agents/memory/agents/skill.yaml +2 -2
- package/.agents/mongodb_mongoose_best_practices/SKILL.md +724 -236
- package/.agents/mongodb_mongoose_best_practices/agents/claude.json +2 -2
- package/.agents/mongodb_mongoose_best_practices/agents/copilot.json +2 -2
- package/.agents/mongodb_mongoose_best_practices/agents/gemini.json +2 -2
- package/.agents/mongodb_mongoose_best_practices/agents/openai.yaml +1 -1
- package/.agents/mongodb_mongoose_best_practices/agents/qwen.json +2 -2
- package/.agents/mongodb_mongoose_best_practices/agents/skill.yaml +2 -2
- package/.agents/n8n_pinecone_qdrant_supabase/SKILL.md +671 -59
- package/.agents/n8n_pinecone_qdrant_supabase/agents/claude.json +2 -2
- package/.agents/n8n_pinecone_qdrant_supabase/agents/copilot.json +2 -2
- package/.agents/n8n_pinecone_qdrant_supabase/agents/gemini.json +2 -2
- package/.agents/n8n_pinecone_qdrant_supabase/agents/openai.yaml +1 -1
- package/.agents/n8n_pinecone_qdrant_supabase/agents/qwen.json +2 -2
- package/.agents/n8n_pinecone_qdrant_supabase/agents/skill.yaml +2 -2
- package/.agents/node_express_beast_practices/SKILL.md +729 -30
- package/.agents/node_express_beast_practices/agents/claude.json +1 -1
- package/.agents/node_express_beast_practices/agents/copilot.json +1 -1
- package/.agents/node_express_beast_practices/agents/gemini.json +1 -1
- package/.agents/node_express_beast_practices/agents/openai.yaml +1 -1
- package/.agents/node_express_beast_practices/agents/qwen.json +1 -1
- package/.agents/node_express_beast_practices/agents/skill.yaml +1 -1
- package/.agents/observability_logging/SKILL.md +499 -16
- package/.agents/observability_logging/agents/claude.json +2 -2
- package/.agents/observability_logging/agents/copilot.json +2 -2
- package/.agents/observability_logging/agents/gemini.json +2 -2
- package/.agents/observability_logging/agents/openai.yaml +1 -1
- package/.agents/observability_logging/agents/qwen.json +2 -2
- package/.agents/observability_logging/agents/skill.yaml +2 -2
- package/.agents/observability_plan/SKILL.md +279 -38
- package/.agents/observability_plan/agents/claude.json +3 -2
- package/.agents/observability_plan/agents/copilot.json +3 -2
- package/.agents/observability_plan/agents/gemini.json +3 -2
- package/.agents/observability_plan/agents/openai.yaml +1 -1
- package/.agents/observability_plan/agents/qwen.json +3 -2
- package/.agents/observability_plan/agents/skill.yaml +2 -1
- package/.agents/observability_review/SKILL.md +254 -20
- package/.agents/observability_review/agents/claude.json +2 -2
- package/.agents/observability_review/agents/copilot.json +2 -2
- package/.agents/observability_review/agents/gemini.json +2 -2
- package/.agents/observability_review/agents/openai.yaml +1 -1
- package/.agents/observability_review/agents/qwen.json +2 -2
- package/.agents/observability_review/agents/skill.yaml +2 -2
- package/.agents/performance_review_baseline/SKILL.md +239 -17
- package/.agents/performance_review_baseline/agents/claude.json +2 -2
- package/.agents/performance_review_baseline/agents/copilot.json +2 -2
- package/.agents/performance_review_baseline/agents/gemini.json +2 -2
- package/.agents/performance_review_baseline/agents/openai.yaml +1 -1
- package/.agents/performance_review_baseline/agents/qwen.json +2 -2
- package/.agents/performance_review_baseline/agents/skill.yaml +2 -2
- package/.agents/pm_backlog/SKILL.md +250 -32
- package/.agents/pm_backlog/agents/claude.json +2 -2
- package/.agents/pm_backlog/agents/copilot.json +2 -2
- package/.agents/pm_backlog/agents/gemini.json +2 -2
- package/.agents/pm_backlog/agents/openai.yaml +1 -1
- package/.agents/pm_backlog/agents/qwen.json +2 -2
- package/.agents/pm_backlog/agents/skill.yaml +2 -2
- package/.agents/pm_interview/SKILL.md +197 -56
- package/.agents/pm_interview/agents/claude.json +2 -2
- package/.agents/pm_interview/agents/copilot.json +2 -2
- package/.agents/pm_interview/agents/gemini.json +2 -2
- package/.agents/pm_interview/agents/openai.yaml +1 -1
- package/.agents/pm_interview/agents/qwen.json +2 -2
- package/.agents/pm_interview/agents/skill.yaml +2 -2
- package/.agents/pm_prd/SKILL.md +215 -56
- package/.agents/pm_prd/agents/claude.json +2 -2
- package/.agents/pm_prd/agents/copilot.json +2 -2
- package/.agents/pm_prd/agents/gemini.json +2 -2
- package/.agents/pm_prd/agents/openai.yaml +1 -1
- package/.agents/pm_prd/agents/qwen.json +2 -2
- package/.agents/pm_prd/agents/skill.yaml +2 -2
- package/.agents/qa_api_contract_tests/SKILL.md +207 -16
- package/.agents/qa_api_contract_tests/agents/claude.json +2 -2
- package/.agents/qa_api_contract_tests/agents/copilot.json +2 -2
- package/.agents/qa_api_contract_tests/agents/gemini.json +2 -2
- package/.agents/qa_api_contract_tests/agents/openai.yaml +1 -1
- package/.agents/qa_api_contract_tests/agents/qwen.json +2 -2
- package/.agents/qa_api_contract_tests/agents/skill.yaml +2 -2
- package/.agents/qa_manual_run/SKILL.md +209 -16
- package/.agents/qa_manual_run/agents/claude.json +2 -2
- package/.agents/qa_manual_run/agents/copilot.json +2 -2
- package/.agents/qa_manual_run/agents/gemini.json +2 -2
- package/.agents/qa_manual_run/agents/openai.yaml +1 -1
- package/.agents/qa_manual_run/agents/qwen.json +2 -2
- package/.agents/qa_manual_run/agents/skill.yaml +2 -2
- package/.agents/qa_regression_baseline/SKILL.md +217 -0
- package/.agents/qa_regression_baseline/agents/claude.json +19 -0
- package/.agents/qa_regression_baseline/agents/copilot.json +19 -0
- package/.agents/qa_regression_baseline/agents/gemini.json +19 -0
- package/.agents/qa_regression_baseline/agents/openai.yaml +8 -0
- package/.agents/qa_regression_baseline/agents/qwen.json +19 -0
- package/.agents/qa_regression_baseline/agents/skill.yaml +23 -0
- package/.agents/qa_security_smoke_tests/SKILL.md +188 -14
- package/.agents/qa_security_smoke_tests/agents/claude.json +2 -2
- package/.agents/qa_security_smoke_tests/agents/copilot.json +2 -2
- package/.agents/qa_security_smoke_tests/agents/gemini.json +2 -2
- package/.agents/qa_security_smoke_tests/agents/openai.yaml +1 -1
- package/.agents/qa_security_smoke_tests/agents/qwen.json +2 -2
- package/.agents/qa_security_smoke_tests/agents/skill.yaml +2 -2
- package/.agents/qa_test_plan/SKILL.md +203 -20
- package/.agents/qa_test_plan/agents/claude.json +2 -2
- package/.agents/qa_test_plan/agents/copilot.json +2 -2
- package/.agents/qa_test_plan/agents/gemini.json +2 -2
- package/.agents/qa_test_plan/agents/openai.yaml +1 -1
- package/.agents/qa_test_plan/agents/qwen.json +2 -2
- package/.agents/qa_test_plan/agents/skill.yaml +2 -2
- package/.agents/qa_ui_a11y_smoke/SKILL.md +230 -12
- package/.agents/qa_ui_a11y_smoke/agents/claude.json +2 -2
- package/.agents/qa_ui_a11y_smoke/agents/copilot.json +2 -2
- package/.agents/qa_ui_a11y_smoke/agents/gemini.json +2 -2
- package/.agents/qa_ui_a11y_smoke/agents/openai.yaml +1 -1
- package/.agents/qa_ui_a11y_smoke/agents/qwen.json +2 -2
- package/.agents/qa_ui_a11y_smoke/agents/skill.yaml +2 -2
- package/.agents/react_15_3_wix_iframe/SKILL.md +411 -12
- package/.agents/react_15_3_wix_iframe/agents/claude.json +2 -2
- package/.agents/react_15_3_wix_iframe/agents/copilot.json +2 -2
- package/.agents/react_15_3_wix_iframe/agents/gemini.json +2 -2
- package/.agents/react_15_3_wix_iframe/agents/openai.yaml +1 -1
- package/.agents/react_15_3_wix_iframe/agents/qwen.json +2 -2
- package/.agents/react_15_3_wix_iframe/agents/skill.yaml +2 -2
- package/.agents/react_beast_practices/SKILL.md +285 -18
- package/.agents/react_beast_practices/agents/claude.json +2 -2
- package/.agents/react_beast_practices/agents/copilot.json +2 -2
- package/.agents/react_beast_practices/agents/gemini.json +2 -2
- package/.agents/react_beast_practices/agents/openai.yaml +1 -1
- package/.agents/react_beast_practices/agents/qwen.json +2 -2
- package/.agents/react_beast_practices/agents/skill.yaml +2 -2
- package/.agents/release_gate/SKILL.md +213 -77
- package/.agents/release_gate/agents/claude.json +2 -2
- package/.agents/release_gate/agents/copilot.json +2 -2
- package/.agents/release_gate/agents/gemini.json +2 -2
- package/.agents/release_gate/agents/openai.yaml +1 -1
- package/.agents/release_gate/agents/qwen.json +2 -2
- package/.agents/release_gate/agents/skill.yaml +2 -2
- package/.agents/release_gate_checklist_template/SKILL.md +182 -68
- package/.agents/review_reference_snippets/SKILL.md +116 -0
- package/.agents/security_baseline_dev/SKILL.md +496 -16
- package/.agents/security_baseline_dev/agents/claude.json +2 -2
- package/.agents/security_baseline_dev/agents/copilot.json +2 -2
- package/.agents/security_baseline_dev/agents/gemini.json +2 -2
- package/.agents/security_baseline_dev/agents/openai.yaml +1 -1
- package/.agents/security_baseline_dev/agents/qwen.json +2 -2
- package/.agents/security_baseline_dev/agents/skill.yaml +2 -2
- package/.agents/security_review/SKILL.md +277 -55
- package/.agents/security_review_baseline/SKILL.md +119 -25
- package/.agents/security_review_baseline/agents/claude.json +2 -2
- package/.agents/security_review_baseline/agents/copilot.json +2 -2
- package/.agents/security_review_baseline/agents/gemini.json +2 -2
- package/.agents/security_review_baseline/agents/openai.yaml +1 -1
- package/.agents/security_review_baseline/agents/qwen.json +2 -2
- package/.agents/security_review_baseline/agents/skill.yaml +2 -2
- package/.agents/state_rtk_beast_practices/SKILL.md +735 -15
- package/.agents/state_rtk_beast_practices/agents/claude.json +2 -2
- package/.agents/state_rtk_beast_practices/agents/copilot.json +2 -2
- package/.agents/state_rtk_beast_practices/agents/gemini.json +2 -2
- package/.agents/state_rtk_beast_practices/agents/openai.yaml +1 -1
- package/.agents/state_rtk_beast_practices/agents/qwen.json +2 -2
- package/.agents/state_rtk_beast_practices/agents/skill.yaml +2 -2
- package/.agents/state_zustand_beast_practices/SKILL.md +808 -11
- package/.agents/state_zustand_beast_practices/agents/claude.json +2 -2
- package/.agents/state_zustand_beast_practices/agents/copilot.json +2 -2
- package/.agents/state_zustand_beast_practices/agents/gemini.json +2 -2
- package/.agents/state_zustand_beast_practices/agents/openai.yaml +1 -1
- package/.agents/state_zustand_beast_practices/agents/qwen.json +2 -2
- package/.agents/state_zustand_beast_practices/agents/skill.yaml +2 -2
- package/.agents/styling_css_stack/SKILL.md +558 -12
- package/.agents/styling_css_stack/agents/claude.json +2 -2
- package/.agents/styling_css_stack/agents/copilot.json +2 -2
- package/.agents/styling_css_stack/agents/gemini.json +2 -2
- package/.agents/styling_css_stack/agents/openai.yaml +1 -1
- package/.agents/styling_css_stack/agents/qwen.json +2 -2
- package/.agents/styling_css_stack/agents/skill.yaml +2 -2
- package/.agents/system_design_checklist/SKILL.md +207 -48
- package/.agents/system_design_checklist/agents/claude.json +3 -2
- package/.agents/system_design_checklist/agents/copilot.json +3 -2
- package/.agents/system_design_checklist/agents/gemini.json +3 -2
- package/.agents/system_design_checklist/agents/openai.yaml +1 -1
- package/.agents/system_design_checklist/agents/qwen.json +3 -2
- package/.agents/system_design_checklist/agents/skill.yaml +2 -1
- package/.agents/tailwind_beast_practices/SKILL.md +512 -0
- package/.agents/tailwind_beast_practices/agents/claude.json +18 -0
- package/.agents/tailwind_beast_practices/agents/copilot.json +18 -0
- package/.agents/tailwind_beast_practices/agents/gemini.json +18 -0
- package/.agents/tailwind_beast_practices/agents/openai.yaml +8 -0
- package/.agents/tailwind_beast_practices/agents/qwen.json +18 -0
- package/.agents/tailwind_beast_practices/agents/skill.yaml +22 -0
- package/.agents/tanstack_beast_practices/SKILL.md +465 -11
- package/.agents/tanstack_beast_practices/agents/claude.json +2 -2
- package/.agents/tanstack_beast_practices/agents/copilot.json +2 -2
- package/.agents/tanstack_beast_practices/agents/gemini.json +2 -2
- package/.agents/tanstack_beast_practices/agents/openai.yaml +1 -1
- package/.agents/tanstack_beast_practices/agents/qwen.json +2 -2
- package/.agents/tanstack_beast_practices/agents/skill.yaml +2 -2
- package/.agents/tdd_workflow/SKILL.md +441 -22
- package/.agents/tdd_workflow/agents/claude.json +2 -2
- package/.agents/tdd_workflow/agents/copilot.json +2 -2
- package/.agents/tdd_workflow/agents/gemini.json +2 -2
- package/.agents/tdd_workflow/agents/openai.yaml +1 -1
- package/.agents/tdd_workflow/agents/qwen.json +2 -2
- package/.agents/tdd_workflow/agents/skill.yaml +2 -2
- package/.agents/testing_strategy_js/SKILL.md +636 -30
- package/.agents/testing_strategy_js/agents/claude.json +2 -2
- package/.agents/testing_strategy_js/agents/copilot.json +2 -2
- package/.agents/testing_strategy_js/agents/gemini.json +2 -2
- package/.agents/testing_strategy_js/agents/openai.yaml +1 -1
- package/.agents/testing_strategy_js/agents/qwen.json +2 -2
- package/.agents/testing_strategy_js/agents/skill.yaml +2 -2
- package/.agents/tests_quality_review/SKILL.md +279 -18
- package/.agents/tests_quality_review/agents/claude.json +2 -2
- package/.agents/tests_quality_review/agents/copilot.json +2 -2
- package/.agents/tests_quality_review/agents/gemini.json +2 -2
- package/.agents/tests_quality_review/agents/openai.yaml +1 -1
- package/.agents/tests_quality_review/agents/qwen.json +2 -2
- package/.agents/tests_quality_review/agents/skill.yaml +2 -2
- package/.agents/threat_model_baseline/SKILL.md +210 -57
- package/.agents/threat_model_baseline/agents/claude.json +2 -2
- package/.agents/threat_model_baseline/agents/copilot.json +2 -2
- package/.agents/threat_model_baseline/agents/gemini.json +2 -2
- package/.agents/threat_model_baseline/agents/openai.yaml +1 -1
- package/.agents/threat_model_baseline/agents/qwen.json +2 -2
- package/.agents/threat_model_baseline/agents/skill.yaml +2 -2
- package/.agents/tooling_bun_biome/SKILL.md +539 -17
- package/.agents/tooling_bun_biome/agents/claude.json +2 -2
- package/.agents/tooling_bun_biome/agents/copilot.json +2 -2
- package/.agents/tooling_bun_biome/agents/gemini.json +2 -2
- package/.agents/tooling_bun_biome/agents/openai.yaml +1 -1
- package/.agents/tooling_bun_biome/agents/qwen.json +2 -2
- package/.agents/tooling_bun_biome/agents/skill.yaml +2 -2
- package/.agents/typescript_beast_practices/SKILL.md +427 -8
- package/.agents/typescript_beast_practices/agents/claude.json +2 -2
- package/.agents/typescript_beast_practices/agents/copilot.json +2 -2
- package/.agents/typescript_beast_practices/agents/gemini.json +2 -2
- package/.agents/typescript_beast_practices/agents/openai.yaml +1 -1
- package/.agents/typescript_beast_practices/agents/qwen.json +2 -2
- package/.agents/typescript_beast_practices/agents/skill.yaml +2 -2
- package/.agents/ui_a11y_smoke_review/SKILL.md +195 -15
- package/.agents/ui_a11y_smoke_review/agents/claude.json +2 -2
- package/.agents/ui_a11y_smoke_review/agents/copilot.json +2 -2
- package/.agents/ui_a11y_smoke_review/agents/gemini.json +2 -2
- package/.agents/ui_a11y_smoke_review/agents/openai.yaml +1 -1
- package/.agents/ui_a11y_smoke_review/agents/qwen.json +2 -2
- package/.agents/ui_a11y_smoke_review/agents/skill.yaml +2 -2
- package/.agents/ui_inventory/SKILL.md +277 -50
- package/.agents/ui_inventory/agents/claude.json +2 -2
- package/.agents/ui_inventory/agents/copilot.json +2 -2
- package/.agents/ui_inventory/agents/gemini.json +2 -2
- package/.agents/ui_inventory/agents/openai.yaml +1 -1
- package/.agents/ui_inventory/agents/qwen.json +2 -2
- package/.agents/ui_inventory/agents/skill.yaml +2 -2
- package/.agents/ux_discovery/SKILL.md +214 -48
- package/.agents/ux_discovery/agents/claude.json +2 -2
- package/.agents/ux_discovery/agents/copilot.json +2 -2
- package/.agents/ux_discovery/agents/gemini.json +2 -2
- package/.agents/ux_discovery/agents/openai.yaml +1 -1
- package/.agents/ux_discovery/agents/qwen.json +2 -2
- package/.agents/ux_discovery/agents/skill.yaml +2 -2
- package/.agents/ux_spec/SKILL.md +282 -56
- package/.agents/ux_spec/agents/claude.json +2 -2
- package/.agents/ux_spec/agents/copilot.json +2 -2
- package/.agents/ux_spec/agents/gemini.json +2 -2
- package/.agents/ux_spec/agents/openai.yaml +1 -1
- package/.agents/ux_spec/agents/qwen.json +2 -2
- package/.agents/ux_spec/agents/skill.yaml +2 -2
- package/.agents/wix_iframe_sdk/SKILL.md +277 -48
- package/.agents/wix_iframe_sdk/agents/claude.json +2 -2
- package/.agents/wix_iframe_sdk/agents/copilot.json +2 -2
- package/.agents/wix_iframe_sdk/agents/gemini.json +2 -2
- package/.agents/wix_iframe_sdk/agents/openai.yaml +1 -1
- package/.agents/wix_iframe_sdk/agents/qwen.json +2 -2
- package/.agents/wix_iframe_sdk/agents/skill.yaml +2 -2
- package/.agents/wix_self_hosted_embedded_script/SKILL.md +605 -82
- package/.agents/wix_self_hosted_embedded_script/agents/claude.json +2 -2
- package/.agents/wix_self_hosted_embedded_script/agents/copilot.json +2 -2
- package/.agents/wix_self_hosted_embedded_script/agents/gemini.json +2 -2
- package/.agents/wix_self_hosted_embedded_script/agents/openai.yaml +1 -1
- package/.agents/wix_self_hosted_embedded_script/agents/qwen.json +2 -2
- package/.agents/wix_self_hosted_embedded_script/agents/skill.yaml +2 -2
- package/AGENTS.yaml +2 -0
- package/agents/conductor.md +50 -0
- package/agents/devops.md +31 -1
- package/agents/orchestrator.claude.json +2 -0
- package/agents/orchestrator.copilot.json +2 -0
- package/agents/orchestrator.gemini.json +2 -0
- package/agents/orchestrator.openai.yaml +2 -0
- package/agents/orchestrator.qwen.json +2 -0
- package/agents/reviewer.md +0 -1
- package/agents/senior_full_stack.md +1 -0
- package/agents/tester.md +1 -1
- package/agents/ux_ui_designer.md +2 -2
- package/locales/en/.agents/a11y_baseline/SKILL.md +260 -41
- package/locales/en/.agents/a11y_baseline/agents/claude.json +3 -2
- package/locales/en/.agents/a11y_baseline/agents/copilot.json +3 -2
- package/locales/en/.agents/a11y_baseline/agents/gemini.json +3 -2
- package/locales/en/.agents/a11y_baseline/agents/openai.yaml +1 -1
- package/locales/en/.agents/a11y_baseline/agents/qwen.json +3 -2
- package/locales/en/.agents/a11y_baseline/agents/skill.yaml +2 -1
- package/locales/en/.agents/adr_log/SKILL.md +330 -30
- package/locales/en/.agents/adr_log/agents/claude.json +5 -5
- package/locales/en/.agents/adr_log/agents/copilot.json +5 -5
- package/locales/en/.agents/adr_log/agents/gemini.json +5 -5
- package/locales/en/.agents/adr_log/agents/openai.yaml +3 -3
- package/locales/en/.agents/adr_log/agents/qwen.json +5 -5
- package/locales/en/.agents/adr_log/agents/skill.yaml +5 -5
- package/locales/en/.agents/api_contract_compliance_review/SKILL.md +218 -12
- package/locales/en/.agents/api_contract_compliance_review/agents/claude.json +2 -2
- package/locales/en/.agents/api_contract_compliance_review/agents/copilot.json +2 -2
- package/locales/en/.agents/api_contract_compliance_review/agents/gemini.json +2 -2
- package/locales/en/.agents/api_contract_compliance_review/agents/openai.yaml +1 -1
- package/locales/en/.agents/api_contract_compliance_review/agents/qwen.json +2 -2
- package/locales/en/.agents/api_contract_compliance_review/agents/skill.yaml +2 -2
- package/locales/en/.agents/api_contracts/SKILL.md +323 -36
- package/locales/en/.agents/api_contracts/agents/claude.json +2 -2
- package/locales/en/.agents/api_contracts/agents/copilot.json +2 -2
- package/locales/en/.agents/api_contracts/agents/gemini.json +2 -2
- package/locales/en/.agents/api_contracts/agents/openai.yaml +1 -1
- package/locales/en/.agents/api_contracts/agents/qwen.json +2 -2
- package/locales/en/.agents/api_contracts/agents/skill.yaml +2 -2
- package/locales/en/.agents/architecture_compliance_review/SKILL.md +206 -10
- package/locales/en/.agents/architecture_compliance_review/agents/claude.json +5 -4
- package/locales/en/.agents/architecture_compliance_review/agents/copilot.json +5 -4
- package/locales/en/.agents/architecture_compliance_review/agents/gemini.json +5 -4
- package/locales/en/.agents/architecture_compliance_review/agents/openai.yaml +3 -3
- package/locales/en/.agents/architecture_compliance_review/agents/qwen.json +5 -4
- package/locales/en/.agents/architecture_compliance_review/agents/skill.yaml +5 -4
- package/locales/en/.agents/architecture_doc/SKILL.md +374 -82
- package/locales/en/.agents/architecture_doc/agents/claude.json +2 -2
- package/locales/en/.agents/architecture_doc/agents/copilot.json +2 -2
- package/locales/en/.agents/architecture_doc/agents/gemini.json +2 -2
- package/locales/en/.agents/architecture_doc/agents/openai.yaml +1 -1
- package/locales/en/.agents/architecture_doc/agents/qwen.json +2 -2
- package/locales/en/.agents/architecture_doc/agents/skill.yaml +2 -2
- package/locales/en/.agents/board/SKILL.md +232 -43
- package/locales/en/.agents/board/agents/claude.json +2 -2
- package/locales/en/.agents/board/agents/copilot.json +2 -2
- package/locales/en/.agents/board/agents/gemini.json +2 -2
- package/locales/en/.agents/board/agents/openai.yaml +1 -1
- package/locales/en/.agents/board/agents/qwen.json +2 -2
- package/locales/en/.agents/board/agents/skill.yaml +2 -2
- package/locales/en/.agents/cloud_infrastructure_security/SKILL.md +277 -68
- package/locales/en/.agents/cloud_infrastructure_security/agents/claude.json +5 -4
- package/locales/en/.agents/cloud_infrastructure_security/agents/copilot.json +5 -4
- package/locales/en/.agents/cloud_infrastructure_security/agents/gemini.json +5 -4
- package/locales/en/.agents/cloud_infrastructure_security/agents/openai.yaml +3 -3
- package/locales/en/.agents/cloud_infrastructure_security/agents/qwen.json +5 -4
- package/locales/en/.agents/cloud_infrastructure_security/agents/skill.yaml +5 -4
- package/locales/en/.agents/code_review_checklist/SKILL.md +194 -41
- package/locales/en/.agents/code_review_checklist/agents/claude.json +2 -2
- package/locales/en/.agents/code_review_checklist/agents/copilot.json +2 -2
- package/locales/en/.agents/code_review_checklist/agents/gemini.json +2 -2
- package/locales/en/.agents/code_review_checklist/agents/openai.yaml +1 -1
- package/locales/en/.agents/code_review_checklist/agents/qwen.json +2 -2
- package/locales/en/.agents/code_review_checklist/agents/skill.yaml +2 -2
- package/locales/en/.agents/current_state_analysis/SKILL.md +225 -44
- package/locales/en/.agents/current_state_analysis/agents/claude.json +5 -4
- package/locales/en/.agents/current_state_analysis/agents/copilot.json +5 -4
- package/locales/en/.agents/current_state_analysis/agents/gemini.json +5 -4
- package/locales/en/.agents/current_state_analysis/agents/openai.yaml +3 -3
- package/locales/en/.agents/current_state_analysis/agents/qwen.json +5 -4
- package/locales/en/.agents/current_state_analysis/agents/skill.yaml +5 -4
- package/locales/en/.agents/data_model/SKILL.md +277 -32
- package/locales/en/.agents/data_model/agents/claude.json +2 -2
- package/locales/en/.agents/data_model/agents/copilot.json +2 -2
- package/locales/en/.agents/data_model/agents/gemini.json +2 -2
- package/locales/en/.agents/data_model/agents/openai.yaml +1 -1
- package/locales/en/.agents/data_model/agents/qwen.json +2 -2
- package/locales/en/.agents/data_model/agents/skill.yaml +2 -2
- package/locales/en/.agents/dependency_supply_chain_review/SKILL.md +291 -11
- package/locales/en/.agents/dependency_supply_chain_review/agents/claude.json +5 -4
- package/locales/en/.agents/dependency_supply_chain_review/agents/copilot.json +5 -4
- package/locales/en/.agents/dependency_supply_chain_review/agents/gemini.json +5 -4
- package/locales/en/.agents/dependency_supply_chain_review/agents/openai.yaml +3 -3
- package/locales/en/.agents/dependency_supply_chain_review/agents/qwen.json +5 -4
- package/locales/en/.agents/dependency_supply_chain_review/agents/skill.yaml +5 -4
- package/locales/en/.agents/deployment_ci_plan/SKILL.md +404 -45
- package/locales/en/.agents/deployment_ci_plan/agents/claude.json +2 -2
- package/locales/en/.agents/deployment_ci_plan/agents/copilot.json +2 -2
- package/locales/en/.agents/deployment_ci_plan/agents/gemini.json +2 -2
- package/locales/en/.agents/deployment_ci_plan/agents/openai.yaml +1 -1
- package/locales/en/.agents/deployment_ci_plan/agents/qwen.json +2 -2
- package/locales/en/.agents/deployment_ci_plan/agents/skill.yaml +2 -2
- package/locales/en/.agents/design_intake/SKILL.md +221 -67
- package/locales/en/.agents/design_intake/agents/claude.json +4 -5
- package/locales/en/.agents/design_intake/agents/copilot.json +4 -5
- package/locales/en/.agents/design_intake/agents/gemini.json +4 -5
- package/locales/en/.agents/design_intake/agents/openai.yaml +3 -3
- package/locales/en/.agents/design_intake/agents/qwen.json +4 -5
- package/locales/en/.agents/design_intake/agents/skill.yaml +4 -5
- package/locales/en/.agents/design_parity_review/SKILL.md +216 -60
- package/locales/en/.agents/design_parity_review/agents/claude.json +2 -3
- package/locales/en/.agents/design_parity_review/agents/copilot.json +2 -3
- package/locales/en/.agents/design_parity_review/agents/gemini.json +2 -3
- package/locales/en/.agents/design_parity_review/agents/openai.yaml +2 -2
- package/locales/en/.agents/design_parity_review/agents/qwen.json +2 -3
- package/locales/en/.agents/design_parity_review/agents/skill.yaml +2 -3
- package/locales/en/.agents/design_systems/SKILL.md +432 -15
- package/locales/en/.agents/design_systems/agents/claude.json +2 -2
- package/locales/en/.agents/design_systems/agents/copilot.json +2 -2
- package/locales/en/.agents/design_systems/agents/gemini.json +2 -2
- package/locales/en/.agents/design_systems/agents/openai.yaml +1 -1
- package/locales/en/.agents/design_systems/agents/qwen.json +2 -2
- package/locales/en/.agents/design_systems/agents/skill.yaml +2 -2
- package/locales/en/.agents/dev_reference_snippets/SKILL.md +585 -397
- package/locales/en/.agents/dev_reference_snippets/agents/claude.json +2 -2
- package/locales/en/.agents/dev_reference_snippets/agents/copilot.json +2 -2
- package/locales/en/.agents/dev_reference_snippets/agents/gemini.json +2 -2
- package/locales/en/.agents/dev_reference_snippets/agents/openai.yaml +1 -1
- package/locales/en/.agents/dev_reference_snippets/agents/qwen.json +2 -2
- package/locales/en/.agents/dev_reference_snippets/agents/skill.yaml +2 -2
- package/locales/en/.agents/docker_kubernetes_architecture/SKILL.md +473 -137
- package/locales/en/.agents/docker_kubernetes_architecture/agents/claude.json +5 -4
- package/locales/en/.agents/docker_kubernetes_architecture/agents/copilot.json +5 -4
- package/locales/en/.agents/docker_kubernetes_architecture/agents/gemini.json +5 -4
- package/locales/en/.agents/docker_kubernetes_architecture/agents/openai.yaml +3 -3
- package/locales/en/.agents/docker_kubernetes_architecture/agents/qwen.json +5 -4
- package/locales/en/.agents/docker_kubernetes_architecture/agents/skill.yaml +5 -4
- package/locales/en/.agents/es2025_beast_practices/SKILL.md +440 -15
- package/locales/en/.agents/es2025_beast_practices/agents/claude.json +4 -4
- package/locales/en/.agents/es2025_beast_practices/agents/copilot.json +4 -4
- package/locales/en/.agents/es2025_beast_practices/agents/gemini.json +4 -4
- package/locales/en/.agents/es2025_beast_practices/agents/openai.yaml +3 -3
- package/locales/en/.agents/es2025_beast_practices/agents/qwen.json +4 -4
- package/locales/en/.agents/es2025_beast_practices/agents/skill.yaml +4 -4
- package/locales/en/.agents/gates/SKILL.md +128 -29
- package/locales/en/.agents/gates/agents/claude.json +2 -2
- package/locales/en/.agents/gates/agents/copilot.json +2 -2
- package/locales/en/.agents/gates/agents/gemini.json +2 -2
- package/locales/en/.agents/gates/agents/openai.yaml +1 -1
- package/locales/en/.agents/gates/agents/qwen.json +2 -2
- package/locales/en/.agents/gates/agents/skill.yaml +2 -2
- package/locales/en/.agents/go_beast_practices/SKILL.md +557 -23
- package/locales/en/.agents/go_beast_practices/agents/claude.json +5 -4
- package/locales/en/.agents/go_beast_practices/agents/copilot.json +5 -4
- package/locales/en/.agents/go_beast_practices/agents/gemini.json +5 -4
- package/locales/en/.agents/go_beast_practices/agents/openai.yaml +3 -3
- package/locales/en/.agents/go_beast_practices/agents/qwen.json +5 -4
- package/locales/en/.agents/go_beast_practices/agents/skill.yaml +5 -4
- package/locales/en/.agents/google_stitch_skill/SKILL.md +507 -71
- package/locales/en/.agents/google_stitch_skill/agents/claude.json +5 -6
- package/locales/en/.agents/google_stitch_skill/agents/copilot.json +5 -6
- package/locales/en/.agents/google_stitch_skill/agents/gemini.json +5 -6
- package/locales/en/.agents/google_stitch_skill/agents/openai.yaml +1 -1
- package/locales/en/.agents/google_stitch_skill/agents/qwen.json +5 -6
- package/locales/en/.agents/google_stitch_skill/agents/skill.yaml +4 -5
- package/locales/en/.agents/handoff/SKILL.md +206 -46
- package/locales/en/.agents/handoff/agents/claude.json +5 -5
- package/locales/en/.agents/handoff/agents/copilot.json +5 -5
- package/locales/en/.agents/handoff/agents/gemini.json +5 -5
- package/locales/en/.agents/handoff/agents/openai.yaml +3 -3
- package/locales/en/.agents/handoff/agents/qwen.json +5 -5
- package/locales/en/.agents/handoff/agents/skill.yaml +5 -5
- package/locales/en/.agents/k8s_manifests_conventions/SKILL.md +540 -167
- package/locales/en/.agents/k8s_manifests_conventions/agents/claude.json +2 -2
- package/locales/en/.agents/k8s_manifests_conventions/agents/copilot.json +2 -2
- package/locales/en/.agents/k8s_manifests_conventions/agents/gemini.json +2 -2
- package/locales/en/.agents/k8s_manifests_conventions/agents/openai.yaml +1 -1
- package/locales/en/.agents/k8s_manifests_conventions/agents/qwen.json +2 -2
- package/locales/en/.agents/k8s_manifests_conventions/agents/skill.yaml +2 -2
- package/locales/en/.agents/memory/SKILL.md +211 -21
- package/locales/en/.agents/memory/agents/claude.json +5 -4
- package/locales/en/.agents/memory/agents/copilot.json +5 -4
- package/locales/en/.agents/memory/agents/gemini.json +5 -4
- package/locales/en/.agents/memory/agents/openai.yaml +3 -3
- package/locales/en/.agents/memory/agents/qwen.json +5 -4
- package/locales/en/.agents/memory/agents/skill.yaml +5 -4
- package/locales/en/.agents/mongodb_mongoose_best_practices/SKILL.md +669 -178
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/claude.json +4 -5
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/copilot.json +4 -5
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/gemini.json +4 -5
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/openai.yaml +3 -3
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/qwen.json +4 -5
- package/locales/en/.agents/mongodb_mongoose_best_practices/agents/skill.yaml +4 -5
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/SKILL.md +669 -57
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/claude.json +5 -5
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/copilot.json +5 -5
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/gemini.json +5 -5
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/openai.yaml +3 -3
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/qwen.json +5 -5
- package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/skill.yaml +5 -5
- package/locales/en/.agents/node_express_beast_practices/SKILL.md +718 -19
- package/locales/en/.agents/node_express_beast_practices/agents/claude.json +1 -1
- package/locales/en/.agents/node_express_beast_practices/agents/copilot.json +1 -1
- package/locales/en/.agents/node_express_beast_practices/agents/gemini.json +1 -1
- package/locales/en/.agents/node_express_beast_practices/agents/openai.yaml +1 -1
- package/locales/en/.agents/node_express_beast_practices/agents/qwen.json +1 -1
- package/locales/en/.agents/node_express_beast_practices/agents/skill.yaml +1 -1
- package/locales/en/.agents/observability_logging/SKILL.md +499 -16
- package/locales/en/.agents/observability_logging/agents/claude.json +4 -4
- package/locales/en/.agents/observability_logging/agents/copilot.json +4 -4
- package/locales/en/.agents/observability_logging/agents/gemini.json +4 -4
- package/locales/en/.agents/observability_logging/agents/openai.yaml +3 -3
- package/locales/en/.agents/observability_logging/agents/qwen.json +4 -4
- package/locales/en/.agents/observability_logging/agents/skill.yaml +4 -4
- package/locales/en/.agents/observability_plan/SKILL.md +273 -32
- package/locales/en/.agents/observability_plan/agents/claude.json +6 -4
- package/locales/en/.agents/observability_plan/agents/copilot.json +6 -4
- package/locales/en/.agents/observability_plan/agents/gemini.json +6 -4
- package/locales/en/.agents/observability_plan/agents/openai.yaml +3 -3
- package/locales/en/.agents/observability_plan/agents/qwen.json +6 -4
- package/locales/en/.agents/observability_plan/agents/skill.yaml +5 -3
- package/locales/en/.agents/observability_review/SKILL.md +245 -11
- package/locales/en/.agents/observability_review/agents/claude.json +6 -4
- package/locales/en/.agents/observability_review/agents/copilot.json +6 -4
- package/locales/en/.agents/observability_review/agents/gemini.json +6 -4
- package/locales/en/.agents/observability_review/agents/openai.yaml +3 -3
- package/locales/en/.agents/observability_review/agents/qwen.json +6 -4
- package/locales/en/.agents/observability_review/agents/skill.yaml +5 -3
- package/locales/en/.agents/performance_review_baseline/SKILL.md +232 -10
- package/locales/en/.agents/performance_review_baseline/agents/claude.json +5 -4
- package/locales/en/.agents/performance_review_baseline/agents/copilot.json +5 -4
- package/locales/en/.agents/performance_review_baseline/agents/gemini.json +5 -4
- package/locales/en/.agents/performance_review_baseline/agents/openai.yaml +3 -3
- package/locales/en/.agents/performance_review_baseline/agents/qwen.json +5 -4
- package/locales/en/.agents/performance_review_baseline/agents/skill.yaml +5 -4
- package/locales/en/.agents/pm_backlog/SKILL.md +239 -21
- package/locales/en/.agents/pm_backlog/agents/claude.json +2 -2
- package/locales/en/.agents/pm_backlog/agents/copilot.json +2 -2
- package/locales/en/.agents/pm_backlog/agents/gemini.json +2 -2
- package/locales/en/.agents/pm_backlog/agents/openai.yaml +1 -1
- package/locales/en/.agents/pm_backlog/agents/qwen.json +2 -2
- package/locales/en/.agents/pm_backlog/agents/skill.yaml +2 -2
- package/locales/en/.agents/pm_interview/SKILL.md +178 -37
- package/locales/en/.agents/pm_interview/agents/claude.json +5 -4
- package/locales/en/.agents/pm_interview/agents/copilot.json +5 -4
- package/locales/en/.agents/pm_interview/agents/gemini.json +5 -4
- package/locales/en/.agents/pm_interview/agents/openai.yaml +3 -3
- package/locales/en/.agents/pm_interview/agents/qwen.json +5 -4
- package/locales/en/.agents/pm_interview/agents/skill.yaml +5 -4
- package/locales/en/.agents/pm_prd/SKILL.md +197 -38
- package/locales/en/.agents/pm_prd/agents/claude.json +2 -2
- package/locales/en/.agents/pm_prd/agents/copilot.json +2 -2
- package/locales/en/.agents/pm_prd/agents/gemini.json +2 -2
- package/locales/en/.agents/pm_prd/agents/openai.yaml +1 -1
- package/locales/en/.agents/pm_prd/agents/qwen.json +2 -2
- package/locales/en/.agents/pm_prd/agents/skill.yaml +2 -2
- package/locales/en/.agents/qa_api_contract_tests/SKILL.md +207 -16
- package/locales/en/.agents/qa_api_contract_tests/agents/claude.json +2 -2
- package/locales/en/.agents/qa_api_contract_tests/agents/copilot.json +2 -2
- package/locales/en/.agents/qa_api_contract_tests/agents/gemini.json +2 -2
- package/locales/en/.agents/qa_api_contract_tests/agents/openai.yaml +1 -1
- package/locales/en/.agents/qa_api_contract_tests/agents/qwen.json +2 -2
- package/locales/en/.agents/qa_api_contract_tests/agents/skill.yaml +2 -2
- package/locales/en/.agents/qa_browser_testing/SKILL.md +254 -86
- package/locales/en/.agents/qa_e2e_playwright/SKILL.md +313 -116
- package/locales/en/.agents/qa_manual_run/SKILL.md +202 -9
- package/locales/en/.agents/qa_manual_run/agents/claude.json +2 -2
- package/locales/en/.agents/qa_manual_run/agents/copilot.json +2 -2
- package/locales/en/.agents/qa_manual_run/agents/gemini.json +2 -2
- package/locales/en/.agents/qa_manual_run/agents/openai.yaml +1 -1
- package/locales/en/.agents/qa_manual_run/agents/qwen.json +2 -2
- package/locales/en/.agents/qa_manual_run/agents/skill.yaml +2 -2
- package/locales/en/.agents/qa_regression_baseline/SKILL.md +217 -0
- package/locales/en/.agents/qa_regression_baseline/agents/claude.json +19 -0
- package/locales/en/.agents/qa_regression_baseline/agents/copilot.json +19 -0
- package/locales/en/.agents/qa_regression_baseline/agents/gemini.json +19 -0
- package/locales/en/.agents/qa_regression_baseline/agents/openai.yaml +8 -0
- package/locales/en/.agents/qa_regression_baseline/agents/qwen.json +19 -0
- package/locales/en/.agents/qa_regression_baseline/agents/skill.yaml +23 -0
- package/locales/en/.agents/qa_security_smoke_tests/SKILL.md +182 -8
- package/locales/en/.agents/qa_security_smoke_tests/agents/claude.json +2 -2
- package/locales/en/.agents/qa_security_smoke_tests/agents/copilot.json +2 -2
- package/locales/en/.agents/qa_security_smoke_tests/agents/gemini.json +2 -2
- package/locales/en/.agents/qa_security_smoke_tests/agents/openai.yaml +1 -1
- package/locales/en/.agents/qa_security_smoke_tests/agents/qwen.json +2 -2
- package/locales/en/.agents/qa_security_smoke_tests/agents/skill.yaml +2 -2
- package/locales/en/.agents/qa_test_plan/SKILL.md +197 -14
- package/locales/en/.agents/qa_test_plan/agents/claude.json +2 -2
- package/locales/en/.agents/qa_test_plan/agents/copilot.json +2 -2
- package/locales/en/.agents/qa_test_plan/agents/gemini.json +2 -2
- package/locales/en/.agents/qa_test_plan/agents/openai.yaml +1 -1
- package/locales/en/.agents/qa_test_plan/agents/qwen.json +2 -2
- package/locales/en/.agents/qa_test_plan/agents/skill.yaml +2 -2
- package/locales/en/.agents/qa_ui_a11y_smoke/SKILL.md +224 -6
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/claude.json +5 -4
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/copilot.json +5 -4
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/gemini.json +5 -4
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/openai.yaml +3 -3
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/qwen.json +5 -4
- package/locales/en/.agents/qa_ui_a11y_smoke/agents/skill.yaml +5 -4
- package/locales/en/.agents/react_15_3_wix_iframe/SKILL.md +419 -20
- package/locales/en/.agents/react_15_3_wix_iframe/agents/claude.json +2 -2
- package/locales/en/.agents/react_15_3_wix_iframe/agents/copilot.json +2 -2
- package/locales/en/.agents/react_15_3_wix_iframe/agents/gemini.json +2 -2
- package/locales/en/.agents/react_15_3_wix_iframe/agents/openai.yaml +1 -1
- package/locales/en/.agents/react_15_3_wix_iframe/agents/qwen.json +2 -2
- package/locales/en/.agents/react_15_3_wix_iframe/agents/skill.yaml +2 -2
- package/locales/en/.agents/react_beast_practices/SKILL.md +285 -18
- package/locales/en/.agents/react_beast_practices/agents/claude.json +4 -4
- package/locales/en/.agents/react_beast_practices/agents/copilot.json +4 -4
- package/locales/en/.agents/react_beast_practices/agents/gemini.json +4 -4
- package/locales/en/.agents/react_beast_practices/agents/openai.yaml +3 -3
- package/locales/en/.agents/react_beast_practices/agents/qwen.json +4 -4
- package/locales/en/.agents/react_beast_practices/agents/skill.yaml +4 -4
- package/locales/en/.agents/release_gate/SKILL.md +205 -69
- package/locales/en/.agents/release_gate/agents/claude.json +5 -4
- package/locales/en/.agents/release_gate/agents/copilot.json +5 -4
- package/locales/en/.agents/release_gate/agents/gemini.json +5 -4
- package/locales/en/.agents/release_gate/agents/openai.yaml +3 -3
- package/locales/en/.agents/release_gate/agents/qwen.json +5 -4
- package/locales/en/.agents/release_gate/agents/skill.yaml +5 -4
- package/locales/en/.agents/release_gate_checklist_template/SKILL.md +175 -61
- package/locales/en/.agents/review_reference_snippets/SKILL.md +163 -46
- package/locales/en/.agents/security_baseline_dev/SKILL.md +496 -16
- package/locales/en/.agents/security_baseline_dev/agents/claude.json +2 -2
- package/locales/en/.agents/security_baseline_dev/agents/copilot.json +2 -2
- package/locales/en/.agents/security_baseline_dev/agents/gemini.json +2 -2
- package/locales/en/.agents/security_baseline_dev/agents/openai.yaml +1 -1
- package/locales/en/.agents/security_baseline_dev/agents/qwen.json +2 -2
- package/locales/en/.agents/security_baseline_dev/agents/skill.yaml +2 -2
- package/locales/en/.agents/security_review/SKILL.md +277 -55
- package/locales/en/.agents/security_review_baseline/SKILL.md +111 -17
- package/locales/en/.agents/security_review_baseline/agents/claude.json +2 -2
- package/locales/en/.agents/security_review_baseline/agents/copilot.json +2 -2
- package/locales/en/.agents/security_review_baseline/agents/gemini.json +2 -2
- package/locales/en/.agents/security_review_baseline/agents/openai.yaml +1 -1
- package/locales/en/.agents/security_review_baseline/agents/qwen.json +2 -2
- package/locales/en/.agents/security_review_baseline/agents/skill.yaml +2 -2
- package/locales/en/.agents/state_rtk_beast_practices/SKILL.md +735 -15
- package/locales/en/.agents/state_rtk_beast_practices/agents/claude.json +2 -2
- package/locales/en/.agents/state_rtk_beast_practices/agents/copilot.json +2 -2
- package/locales/en/.agents/state_rtk_beast_practices/agents/gemini.json +2 -2
- package/locales/en/.agents/state_rtk_beast_practices/agents/openai.yaml +1 -1
- package/locales/en/.agents/state_rtk_beast_practices/agents/qwen.json +2 -2
- package/locales/en/.agents/state_rtk_beast_practices/agents/skill.yaml +2 -2
- package/locales/en/.agents/state_zustand_beast_practices/SKILL.md +808 -11
- package/locales/en/.agents/state_zustand_beast_practices/agents/claude.json +2 -2
- package/locales/en/.agents/state_zustand_beast_practices/agents/copilot.json +2 -2
- package/locales/en/.agents/state_zustand_beast_practices/agents/gemini.json +2 -2
- package/locales/en/.agents/state_zustand_beast_practices/agents/openai.yaml +1 -1
- package/locales/en/.agents/state_zustand_beast_practices/agents/qwen.json +2 -2
- package/locales/en/.agents/state_zustand_beast_practices/agents/skill.yaml +2 -2
- package/locales/en/.agents/styling_css_stack/SKILL.md +558 -12
- package/locales/en/.agents/styling_css_stack/agents/claude.json +5 -5
- package/locales/en/.agents/styling_css_stack/agents/copilot.json +5 -5
- package/locales/en/.agents/styling_css_stack/agents/gemini.json +5 -5
- package/locales/en/.agents/styling_css_stack/agents/openai.yaml +3 -3
- package/locales/en/.agents/styling_css_stack/agents/qwen.json +5 -5
- package/locales/en/.agents/styling_css_stack/agents/skill.yaml +5 -5
- package/locales/en/.agents/system_design_checklist/SKILL.md +199 -40
- package/locales/en/.agents/system_design_checklist/agents/claude.json +3 -2
- package/locales/en/.agents/system_design_checklist/agents/copilot.json +3 -2
- package/locales/en/.agents/system_design_checklist/agents/gemini.json +3 -2
- package/locales/en/.agents/system_design_checklist/agents/openai.yaml +1 -1
- package/locales/en/.agents/system_design_checklist/agents/qwen.json +3 -2
- package/locales/en/.agents/system_design_checklist/agents/skill.yaml +2 -1
- package/locales/en/.agents/tailwind_beast_practices/SKILL.md +512 -0
- package/locales/en/.agents/tailwind_beast_practices/agents/claude.json +18 -0
- package/locales/en/.agents/tailwind_beast_practices/agents/copilot.json +18 -0
- package/locales/en/.agents/tailwind_beast_practices/agents/gemini.json +18 -0
- package/locales/en/.agents/tailwind_beast_practices/agents/openai.yaml +8 -0
- package/locales/en/.agents/tailwind_beast_practices/agents/qwen.json +18 -0
- package/locales/en/.agents/tailwind_beast_practices/agents/skill.yaml +22 -0
- package/locales/en/.agents/tanstack_beast_practices/SKILL.md +473 -19
- package/locales/en/.agents/tanstack_beast_practices/agents/claude.json +2 -2
- package/locales/en/.agents/tanstack_beast_practices/agents/copilot.json +2 -2
- package/locales/en/.agents/tanstack_beast_practices/agents/gemini.json +2 -2
- package/locales/en/.agents/tanstack_beast_practices/agents/openai.yaml +1 -1
- package/locales/en/.agents/tanstack_beast_practices/agents/qwen.json +2 -2
- package/locales/en/.agents/tanstack_beast_practices/agents/skill.yaml +2 -2
- package/locales/en/.agents/tdd_workflow/SKILL.md +453 -34
- package/locales/en/.agents/tdd_workflow/agents/claude.json +2 -2
- package/locales/en/.agents/tdd_workflow/agents/copilot.json +2 -2
- package/locales/en/.agents/tdd_workflow/agents/gemini.json +2 -2
- package/locales/en/.agents/tdd_workflow/agents/openai.yaml +1 -1
- package/locales/en/.agents/tdd_workflow/agents/qwen.json +2 -2
- package/locales/en/.agents/tdd_workflow/agents/skill.yaml +2 -2
- package/locales/en/.agents/testing_strategy_js/SKILL.md +636 -30
- package/locales/en/.agents/testing_strategy_js/agents/claude.json +2 -2
- package/locales/en/.agents/testing_strategy_js/agents/copilot.json +2 -2
- package/locales/en/.agents/testing_strategy_js/agents/gemini.json +2 -2
- package/locales/en/.agents/testing_strategy_js/agents/openai.yaml +1 -1
- package/locales/en/.agents/testing_strategy_js/agents/qwen.json +2 -2
- package/locales/en/.agents/testing_strategy_js/agents/skill.yaml +2 -2
- package/locales/en/.agents/tests_quality_review/SKILL.md +279 -18
- package/locales/en/.agents/tests_quality_review/agents/claude.json +2 -2
- package/locales/en/.agents/tests_quality_review/agents/copilot.json +2 -2
- package/locales/en/.agents/tests_quality_review/agents/gemini.json +2 -2
- package/locales/en/.agents/tests_quality_review/agents/openai.yaml +1 -1
- package/locales/en/.agents/tests_quality_review/agents/qwen.json +2 -2
- package/locales/en/.agents/tests_quality_review/agents/skill.yaml +2 -2
- package/locales/en/.agents/threat_model_baseline/SKILL.md +202 -49
- package/locales/en/.agents/threat_model_baseline/agents/claude.json +2 -2
- package/locales/en/.agents/threat_model_baseline/agents/copilot.json +2 -2
- package/locales/en/.agents/threat_model_baseline/agents/gemini.json +2 -2
- package/locales/en/.agents/threat_model_baseline/agents/openai.yaml +1 -1
- package/locales/en/.agents/threat_model_baseline/agents/qwen.json +2 -2
- package/locales/en/.agents/threat_model_baseline/agents/skill.yaml +2 -2
- package/locales/en/.agents/tooling_bun_biome/SKILL.md +531 -9
- package/locales/en/.agents/tooling_bun_biome/agents/claude.json +5 -5
- package/locales/en/.agents/tooling_bun_biome/agents/copilot.json +5 -5
- package/locales/en/.agents/tooling_bun_biome/agents/gemini.json +5 -5
- package/locales/en/.agents/tooling_bun_biome/agents/openai.yaml +3 -3
- package/locales/en/.agents/tooling_bun_biome/agents/qwen.json +5 -5
- package/locales/en/.agents/tooling_bun_biome/agents/skill.yaml +5 -5
- package/locales/en/.agents/typescript_beast_practices/SKILL.md +434 -15
- package/locales/en/.agents/typescript_beast_practices/agents/claude.json +2 -2
- package/locales/en/.agents/typescript_beast_practices/agents/copilot.json +2 -2
- package/locales/en/.agents/typescript_beast_practices/agents/gemini.json +2 -2
- package/locales/en/.agents/typescript_beast_practices/agents/openai.yaml +1 -1
- package/locales/en/.agents/typescript_beast_practices/agents/qwen.json +2 -2
- package/locales/en/.agents/typescript_beast_practices/agents/skill.yaml +2 -2
- package/locales/en/.agents/ui_a11y_smoke_review/SKILL.md +189 -9
- package/locales/en/.agents/ui_a11y_smoke_review/agents/claude.json +5 -5
- package/locales/en/.agents/ui_a11y_smoke_review/agents/copilot.json +5 -5
- package/locales/en/.agents/ui_a11y_smoke_review/agents/gemini.json +5 -5
- package/locales/en/.agents/ui_a11y_smoke_review/agents/openai.yaml +3 -3
- package/locales/en/.agents/ui_a11y_smoke_review/agents/qwen.json +5 -5
- package/locales/en/.agents/ui_a11y_smoke_review/agents/skill.yaml +5 -5
- package/locales/en/.agents/ui_inventory/SKILL.md +271 -44
- package/locales/en/.agents/ui_inventory/agents/claude.json +2 -2
- package/locales/en/.agents/ui_inventory/agents/copilot.json +2 -2
- package/locales/en/.agents/ui_inventory/agents/gemini.json +2 -2
- package/locales/en/.agents/ui_inventory/agents/openai.yaml +1 -1
- package/locales/en/.agents/ui_inventory/agents/qwen.json +2 -2
- package/locales/en/.agents/ui_inventory/agents/skill.yaml +2 -2
- package/locales/en/.agents/ux_discovery/SKILL.md +199 -33
- package/locales/en/.agents/ux_discovery/agents/claude.json +2 -2
- package/locales/en/.agents/ux_discovery/agents/copilot.json +2 -2
- package/locales/en/.agents/ux_discovery/agents/gemini.json +2 -2
- package/locales/en/.agents/ux_discovery/agents/openai.yaml +1 -1
- package/locales/en/.agents/ux_discovery/agents/qwen.json +2 -2
- package/locales/en/.agents/ux_discovery/agents/skill.yaml +2 -2
- package/locales/en/.agents/ux_spec/SKILL.md +276 -50
- package/locales/en/.agents/ux_spec/agents/claude.json +2 -2
- package/locales/en/.agents/ux_spec/agents/copilot.json +2 -2
- package/locales/en/.agents/ux_spec/agents/gemini.json +2 -2
- package/locales/en/.agents/ux_spec/agents/openai.yaml +1 -1
- package/locales/en/.agents/ux_spec/agents/qwen.json +2 -2
- package/locales/en/.agents/ux_spec/agents/skill.yaml +2 -2
- package/locales/en/.agents/wix_iframe_sdk/SKILL.md +271 -42
- package/locales/en/.agents/wix_iframe_sdk/agents/claude.json +4 -5
- package/locales/en/.agents/wix_iframe_sdk/agents/copilot.json +4 -5
- package/locales/en/.agents/wix_iframe_sdk/agents/gemini.json +4 -5
- package/locales/en/.agents/wix_iframe_sdk/agents/openai.yaml +3 -3
- package/locales/en/.agents/wix_iframe_sdk/agents/qwen.json +4 -5
- package/locales/en/.agents/wix_iframe_sdk/agents/skill.yaml +4 -5
- package/locales/en/.agents/wix_self_hosted_embedded_script/SKILL.md +611 -88
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/claude.json +2 -2
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/copilot.json +2 -2
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/gemini.json +2 -2
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/openai.yaml +1 -1
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/qwen.json +2 -2
- package/locales/en/.agents/wix_self_hosted_embedded_script/agents/skill.yaml +2 -2
- package/locales/en/AGENTS.yaml +2 -0
- package/locales/en/agents/architect.md +1 -1
- package/locales/en/agents/conductor.md +50 -0
- package/locales/en/agents/devops.md +34 -0
- package/locales/en/agents/orchestrator.claude.json +2 -0
- package/locales/en/agents/orchestrator.copilot.json +2 -0
- package/locales/en/agents/orchestrator.gemini.json +2 -0
- package/locales/en/agents/orchestrator.openai.yaml +2 -0
- package/locales/en/agents/orchestrator.qwen.json +2 -0
- package/locales/en/agents/product_manager.md +1 -5
- package/locales/en/agents/reviewer.md +69 -64
- package/locales/en/agents/senior_full_stack.md +2 -2
- package/locales/en/agents/tester.md +50 -11
- package/locales/en/agents/ux_ui_designer.md +3 -5
- package/package.json +1 -1
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tailwind_beast_practices
|
|
3
|
+
description: Tailwind CSS best practices для Senior-уровня: организация классов, компонентный подход, кастомизация темы, responsive/dark mode, производительность (purge/JIT), типичные паттерны и DO/DON'T. Используй этот скилл всегда когда задача касается стилизации через Tailwind — написание классов, структура конфига, работа с дизайн-системой, избегание className-хаоса, или интеграция с React/Next.js.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: Tailwind Beast Practices
|
|
7
|
+
|
|
8
|
+
Конкретные DO/DON'T паттерны для чистого, масштабируемого Tailwind без className-супа.
|
|
9
|
+
|
|
10
|
+
**Разделы:**
|
|
11
|
+
1. [Организация классов](#1-организация-классов)
|
|
12
|
+
2. [Компонентный подход: cva + cn](#2-компонентный-подход)
|
|
13
|
+
3. [Кастомизация темы](#3-кастомизация-темы)
|
|
14
|
+
4. [Responsive и dark mode](#4-responsive-и-dark-mode)
|
|
15
|
+
5. [Типичные UI-паттерны](#5-типичные-ui-паттерны)
|
|
16
|
+
6. [Производительность и конфиг](#6-производительность-и-конфиг)
|
|
17
|
+
7. [DO/DON'T: частые ошибки](#7-частые-ошибки)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 1. Организация классов
|
|
22
|
+
|
|
23
|
+
### ✅ DO: фиксированный порядок групп (Prettier plugin enforces это автоматически)
|
|
24
|
+
```
|
|
25
|
+
Layout → Flexbox/Grid → Spacing → Sizing → Typography → Colors → Borders → Effects → States
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
// ✅ Читаемо: каждая группа на своём месте
|
|
30
|
+
<div className="flex items-center gap-4 px-6 py-3 w-full text-sm font-medium text-gray-900 bg-white border border-gray-200 rounded-lg shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500" />
|
|
31
|
+
|
|
32
|
+
// ✅ Многострочно для сложных компонентов — используй clsx/cn
|
|
33
|
+
<div className={cn(
|
|
34
|
+
"flex items-center gap-4", // layout
|
|
35
|
+
"px-6 py-3", // spacing
|
|
36
|
+
"text-sm font-medium text-gray-900", // typography
|
|
37
|
+
"bg-white border border-gray-200 rounded-lg shadow-sm", // decoration
|
|
38
|
+
"hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500", // states
|
|
39
|
+
)} />
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### ✅ DO: утилита cn (clsx + tailwind-merge)
|
|
43
|
+
```ts
|
|
44
|
+
// lib/utils.ts — обязательный файл в любом Tailwind-проекте
|
|
45
|
+
import { clsx, type ClassValue } from "clsx";
|
|
46
|
+
import { twMerge } from "tailwind-merge";
|
|
47
|
+
|
|
48
|
+
// ✅ twMerge разрешает конфликты: cn("px-4", "px-6") → "px-6", не "px-4 px-6"
|
|
49
|
+
export function cn(...inputs: ClassValue[]) {
|
|
50
|
+
return twMerge(clsx(inputs));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Использование:
|
|
54
|
+
cn("px-4 py-2", isActive && "bg-blue-500", className)
|
|
55
|
+
// clsx обрабатывает условия, twMerge разрешает конфликты классов
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### ❌ DON'T: конкатенация строк для условных классов
|
|
59
|
+
```tsx
|
|
60
|
+
// ❌ Плохо: Tailwind purge не видит динамически собранные классы
|
|
61
|
+
const color = "blue";
|
|
62
|
+
<div className={`text-${color}-500`} /> // класс НЕ попадёт в бандл
|
|
63
|
+
|
|
64
|
+
// ✅ Правильно: полные имена классов в коде
|
|
65
|
+
const colorClass = isActive ? "text-blue-500" : "text-gray-500";
|
|
66
|
+
<div className={colorClass} />
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 2. Компонентный подход
|
|
72
|
+
|
|
73
|
+
### ✅ DO: cva (class-variance-authority) для вариантных компонентов
|
|
74
|
+
```tsx
|
|
75
|
+
// components/ui/Button.tsx
|
|
76
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
77
|
+
import { cn } from "@/lib/utils";
|
|
78
|
+
|
|
79
|
+
const buttonVariants = cva(
|
|
80
|
+
// ✅ base — всегда применяется
|
|
81
|
+
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
82
|
+
{
|
|
83
|
+
variants: {
|
|
84
|
+
variant: {
|
|
85
|
+
default: "bg-blue-600 text-white hover:bg-blue-700 focus-visible:ring-blue-500",
|
|
86
|
+
secondary: "bg-gray-100 text-gray-900 hover:bg-gray-200 focus-visible:ring-gray-400",
|
|
87
|
+
destructive: "bg-red-600 text-white hover:bg-red-700 focus-visible:ring-red-500",
|
|
88
|
+
ghost: "hover:bg-gray-100 hover:text-gray-900 focus-visible:ring-gray-400",
|
|
89
|
+
outline: "border border-gray-300 bg-white hover:bg-gray-50 focus-visible:ring-gray-400",
|
|
90
|
+
},
|
|
91
|
+
size: {
|
|
92
|
+
sm: "h-8 px-3 text-xs",
|
|
93
|
+
md: "h-10 px-4",
|
|
94
|
+
lg: "h-12 px-6 text-base",
|
|
95
|
+
icon: "h-10 w-10",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
defaultVariants: {
|
|
99
|
+
variant: "default",
|
|
100
|
+
size: "md",
|
|
101
|
+
},
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
106
|
+
& VariantProps<typeof buttonVariants>
|
|
107
|
+
& { asChild?: boolean };
|
|
108
|
+
|
|
109
|
+
export function Button({ className, variant, size, ...props }: ButtonProps) {
|
|
110
|
+
return (
|
|
111
|
+
<button
|
|
112
|
+
className={cn(buttonVariants({ variant, size }), className)} // ✅ className последний — переопределяет
|
|
113
|
+
{...props}
|
|
114
|
+
/>
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Использование:
|
|
119
|
+
// <Button variant="destructive" size="sm">Delete</Button>
|
|
120
|
+
// <Button variant="ghost" size="icon"><Icon /></Button>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### ✅ DO: @layer components для повторяющихся паттернов
|
|
124
|
+
```css
|
|
125
|
+
/* globals.css */
|
|
126
|
+
@layer components {
|
|
127
|
+
/* ✅ Выносить в @layer только то, что реально повторяется везде */
|
|
128
|
+
.form-input {
|
|
129
|
+
@apply w-full rounded-md border border-gray-300 px-3 py-2 text-sm
|
|
130
|
+
shadow-sm placeholder:text-gray-400
|
|
131
|
+
focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500
|
|
132
|
+
disabled:cursor-not-allowed disabled:opacity-50;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.card {
|
|
136
|
+
@apply rounded-xl border border-gray-200 bg-white p-6 shadow-sm;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### ❌ DON'T: @apply для всего подряд
|
|
142
|
+
```css
|
|
143
|
+
/* ❌ Плохо: теряем преимущества Tailwind, создаём обычный CSS */
|
|
144
|
+
.button {
|
|
145
|
+
@apply flex items-center px-4 py-2 bg-blue-500 text-white rounded;
|
|
146
|
+
}
|
|
147
|
+
/* ✅ Правильно: оставить классы в JSX или использовать cva */
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 3. Кастомизация темы
|
|
153
|
+
|
|
154
|
+
### ✅ DO: расширять тему через extend, не заменять
|
|
155
|
+
```ts
|
|
156
|
+
// tailwind.config.ts
|
|
157
|
+
import type { Config } from "tailwindcss";
|
|
158
|
+
|
|
159
|
+
export default {
|
|
160
|
+
content: ["./src/**/*.{ts,tsx}"],
|
|
161
|
+
theme: {
|
|
162
|
+
extend: {
|
|
163
|
+
// ✅ extend — добавляем к дефолтным значениям
|
|
164
|
+
colors: {
|
|
165
|
+
brand: {
|
|
166
|
+
50: "#eff6ff",
|
|
167
|
+
500: "#3b82f6",
|
|
168
|
+
900: "#1e3a8a",
|
|
169
|
+
},
|
|
170
|
+
// ✅ Семантические токены вместо конкретных цветов
|
|
171
|
+
surface: "hsl(var(--surface))",
|
|
172
|
+
"on-surface": "hsl(var(--on-surface))",
|
|
173
|
+
},
|
|
174
|
+
fontFamily: {
|
|
175
|
+
sans: ["Inter", "system-ui", "sans-serif"],
|
|
176
|
+
mono: ["JetBrains Mono", "monospace"],
|
|
177
|
+
},
|
|
178
|
+
spacing: {
|
|
179
|
+
"18": "4.5rem",
|
|
180
|
+
"88": "22rem",
|
|
181
|
+
},
|
|
182
|
+
borderRadius: {
|
|
183
|
+
"4xl": "2rem",
|
|
184
|
+
},
|
|
185
|
+
animation: {
|
|
186
|
+
"fade-in": "fadeIn 150ms ease-out",
|
|
187
|
+
"slide-up": "slideUp 200ms ease-out",
|
|
188
|
+
},
|
|
189
|
+
keyframes: {
|
|
190
|
+
fadeIn: { from: { opacity: "0" }, to: { opacity: "1" } },
|
|
191
|
+
slideUp: { from: { transform: "translateY(8px)", opacity: "0" }, to: { transform: "translateY(0)", opacity: "1" } },
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
} satisfies Config;
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### ✅ DO: CSS-переменные для динамической темы (dark mode)
|
|
199
|
+
```css
|
|
200
|
+
/* globals.css */
|
|
201
|
+
@layer base {
|
|
202
|
+
:root {
|
|
203
|
+
--surface: 0 0% 100%;
|
|
204
|
+
--on-surface: 222 47% 11%;
|
|
205
|
+
--border: 214 32% 91%;
|
|
206
|
+
--ring: 221 83% 53%;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.dark {
|
|
210
|
+
--surface: 222 47% 11%;
|
|
211
|
+
--on-surface: 210 40% 98%;
|
|
212
|
+
--border: 217 33% 17%;
|
|
213
|
+
--ring: 213 94% 68%;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### ❌ DON'T: хардкодить цвета минуя тему
|
|
219
|
+
```tsx
|
|
220
|
+
// ❌ Плохо: цвет не управляется темой, не переопределяется
|
|
221
|
+
<div className="text-[#3b82f6]" />
|
|
222
|
+
|
|
223
|
+
// ✅ Правильно: через токен темы
|
|
224
|
+
<div className="text-brand-500" />
|
|
225
|
+
// или семантически:
|
|
226
|
+
<div className="text-primary" />
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 4. Responsive и Dark Mode
|
|
232
|
+
|
|
233
|
+
### ✅ DO: mobile-first breakpoints
|
|
234
|
+
```tsx
|
|
235
|
+
// ✅ Tailwind breakpoints: sm(640) md(768) lg(1024) xl(1280) 2xl(1536)
|
|
236
|
+
// Без префикса = все размеры. С префиксом = от этого размера и выше.
|
|
237
|
+
|
|
238
|
+
<div className={cn(
|
|
239
|
+
"grid grid-cols-1 gap-4", // мобайл: 1 колонка
|
|
240
|
+
"sm:grid-cols-2", // ≥640px: 2 колонки
|
|
241
|
+
"lg:grid-cols-3", // ≥1024px: 3 колонки
|
|
242
|
+
"xl:gap-6", // ≥1280px: больший gap
|
|
243
|
+
)} />
|
|
244
|
+
|
|
245
|
+
// ✅ Текст
|
|
246
|
+
<h1 className="text-2xl font-bold sm:text-3xl lg:text-4xl" />
|
|
247
|
+
|
|
248
|
+
// ✅ Показ/скрытие
|
|
249
|
+
<nav className="hidden lg:flex" /> // скрыт на мобайле
|
|
250
|
+
<button className="lg:hidden" /> // скрыт на десктопе
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### ✅ DO: dark mode через class-стратегию
|
|
254
|
+
```ts
|
|
255
|
+
// tailwind.config.ts
|
|
256
|
+
export default {
|
|
257
|
+
darkMode: "class", // ✅ управляем программно через добавление класса .dark
|
|
258
|
+
// darkMode: "media" — только системные настройки, меньше контроля
|
|
259
|
+
} satisfies Config;
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
```tsx
|
|
263
|
+
// ✅ dark: префикс для тёмной темы
|
|
264
|
+
<div className="bg-white text-gray-900 dark:bg-gray-900 dark:text-gray-50" />
|
|
265
|
+
<button className="border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800" />
|
|
266
|
+
|
|
267
|
+
// ✅ Переключатель темы
|
|
268
|
+
function ThemeToggle() {
|
|
269
|
+
const [dark, setDark] = useState(false);
|
|
270
|
+
|
|
271
|
+
useEffect(() => {
|
|
272
|
+
document.documentElement.classList.toggle("dark", dark);
|
|
273
|
+
}, [dark]);
|
|
274
|
+
|
|
275
|
+
return <button onClick={() => setDark(d => !d)}>{dark ? "☀️" : "🌙"}</button>;
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### ✅ DO: группировка состояний через group и peer
|
|
280
|
+
```tsx
|
|
281
|
+
// ✅ group: стилизовать дочерний элемент при hover/focus родителя
|
|
282
|
+
<div className="group relative cursor-pointer">
|
|
283
|
+
<img className="rounded-lg transition-transform group-hover:scale-105" src={src} />
|
|
284
|
+
<div className="absolute inset-0 bg-black/0 transition-colors group-hover:bg-black/20 rounded-lg" />
|
|
285
|
+
<span className="opacity-0 transition-opacity group-hover:opacity-100">View</span>
|
|
286
|
+
</div>
|
|
287
|
+
|
|
288
|
+
// ✅ peer: стилизовать сиблинг на основе состояния элемента
|
|
289
|
+
<label className="flex items-center gap-2">
|
|
290
|
+
<input type="checkbox" className="peer sr-only" />
|
|
291
|
+
{/* визуальный чекбокс меняется когда input checked */}
|
|
292
|
+
<div className="h-5 w-5 rounded border border-gray-300 peer-checked:bg-blue-500 peer-checked:border-blue-500" />
|
|
293
|
+
<span className="peer-checked:text-blue-600 peer-checked:font-medium">Enable</span>
|
|
294
|
+
</label>
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## 5. Типичные UI-паттерны
|
|
300
|
+
|
|
301
|
+
### ✅ DO: карточка с hover-эффектом
|
|
302
|
+
```tsx
|
|
303
|
+
<article className={cn(
|
|
304
|
+
"group relative overflow-hidden",
|
|
305
|
+
"rounded-xl border border-gray-200 bg-white p-6",
|
|
306
|
+
"shadow-sm transition-all duration-200",
|
|
307
|
+
"hover:shadow-md hover:-translate-y-0.5",
|
|
308
|
+
"dark:border-gray-800 dark:bg-gray-900",
|
|
309
|
+
)}>
|
|
310
|
+
<h2 className="text-lg font-semibold text-gray-900 dark:text-white">{title}</h2>
|
|
311
|
+
<p className="mt-2 text-sm text-gray-500 dark:text-gray-400">{description}</p>
|
|
312
|
+
</article>
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### ✅ DO: форма с состояниями
|
|
316
|
+
```tsx
|
|
317
|
+
<div className="space-y-1">
|
|
318
|
+
<label className="text-sm font-medium text-gray-700 dark:text-gray-300">
|
|
319
|
+
Email
|
|
320
|
+
</label>
|
|
321
|
+
<input
|
|
322
|
+
className={cn(
|
|
323
|
+
"w-full rounded-md border px-3 py-2 text-sm shadow-sm",
|
|
324
|
+
"placeholder:text-gray-400",
|
|
325
|
+
"focus:outline-none focus:ring-2 focus:ring-offset-1",
|
|
326
|
+
"disabled:cursor-not-allowed disabled:bg-gray-50 disabled:opacity-60",
|
|
327
|
+
// ✅ Состояние ошибки через aria-invalid
|
|
328
|
+
"border-gray-300 focus:border-blue-500 focus:ring-blue-500",
|
|
329
|
+
"aria-[invalid=true]:border-red-500 aria-[invalid=true]:focus:ring-red-500",
|
|
330
|
+
)}
|
|
331
|
+
aria-invalid={!!error}
|
|
332
|
+
/>
|
|
333
|
+
{error && (
|
|
334
|
+
<p className="text-xs text-red-600 dark:text-red-400" role="alert">{error}</p>
|
|
335
|
+
)}
|
|
336
|
+
</div>
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### ✅ DO: skeleton loader
|
|
340
|
+
```tsx
|
|
341
|
+
function Skeleton({ className }: { className?: string }) {
|
|
342
|
+
return (
|
|
343
|
+
<div className={cn(
|
|
344
|
+
"animate-pulse rounded-md bg-gray-200 dark:bg-gray-700",
|
|
345
|
+
className
|
|
346
|
+
)} />
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// Использование:
|
|
351
|
+
<div className="space-y-3">
|
|
352
|
+
<Skeleton className="h-4 w-3/4" />
|
|
353
|
+
<Skeleton className="h-4 w-1/2" />
|
|
354
|
+
<Skeleton className="h-10 w-full" />
|
|
355
|
+
</div>
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### ✅ DO: badge/chip компонент
|
|
359
|
+
```tsx
|
|
360
|
+
const badgeVariants = cva(
|
|
361
|
+
"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ring-1 ring-inset",
|
|
362
|
+
{
|
|
363
|
+
variants: {
|
|
364
|
+
color: {
|
|
365
|
+
gray: "bg-gray-50 text-gray-600 ring-gray-500/10 dark:bg-gray-800 dark:text-gray-400",
|
|
366
|
+
blue: "bg-blue-50 text-blue-700 ring-blue-700/10 dark:bg-blue-900/30 dark:text-blue-400",
|
|
367
|
+
green: "bg-green-50 text-green-700 ring-green-600/10 dark:bg-green-900/30 dark:text-green-400",
|
|
368
|
+
red: "bg-red-50 text-red-700 ring-red-600/10 dark:bg-red-900/30 dark:text-red-400",
|
|
369
|
+
yellow: "bg-yellow-50 text-yellow-800 ring-yellow-600/10 dark:bg-yellow-900/30 dark:text-yellow-400",
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
defaultVariants: { color: "gray" },
|
|
373
|
+
}
|
|
374
|
+
);
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## 6. Производительность и конфиг
|
|
380
|
+
|
|
381
|
+
### ✅ DO: правильный content glob — только нужные файлы
|
|
382
|
+
```ts
|
|
383
|
+
// tailwind.config.ts
|
|
384
|
+
export default {
|
|
385
|
+
content: [
|
|
386
|
+
"./src/**/*.{ts,tsx}", // ✅ только src
|
|
387
|
+
"./components/**/*.{ts,tsx}",
|
|
388
|
+
// ❌ НЕ добавляй node_modules — огромный скан без смысла
|
|
389
|
+
],
|
|
390
|
+
} satisfies Config;
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
### ✅ DO: safelist для динамических классов
|
|
394
|
+
```ts
|
|
395
|
+
export default {
|
|
396
|
+
safelist: [
|
|
397
|
+
// ✅ Классы, собираемые из данных (не видны статически в коде)
|
|
398
|
+
{ pattern: /^(bg|text|border)-(red|green|blue|yellow)-(400|500|600)$/ },
|
|
399
|
+
"animate-spin",
|
|
400
|
+
"animate-pulse",
|
|
401
|
+
],
|
|
402
|
+
} satisfies Config;
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### ✅ DO: plugins для повторяющихся утилит
|
|
406
|
+
```ts
|
|
407
|
+
import plugin from "tailwindcss/plugin";
|
|
408
|
+
|
|
409
|
+
export default {
|
|
410
|
+
plugins: [
|
|
411
|
+
require("@tailwindcss/forms"), // ✅ сброс стилей форм
|
|
412
|
+
require("@tailwindcss/typography"), // ✅ prose для markdown-контента
|
|
413
|
+
require("@tailwindcss/line-clamp"), // ✅ line-clamp утилиты
|
|
414
|
+
|
|
415
|
+
// ✅ Кастомный плагин для проекта
|
|
416
|
+
plugin(({ addUtilities }) => {
|
|
417
|
+
addUtilities({
|
|
418
|
+
".scrollbar-hide": {
|
|
419
|
+
"-ms-overflow-style": "none",
|
|
420
|
+
"scrollbar-width": "none",
|
|
421
|
+
"&::-webkit-scrollbar": { display: "none" },
|
|
422
|
+
},
|
|
423
|
+
".text-balance": { "text-wrap": "balance" },
|
|
424
|
+
});
|
|
425
|
+
}),
|
|
426
|
+
],
|
|
427
|
+
} satisfies Config;
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### ✅ DO: Prettier plugin для автосортировки классов
|
|
431
|
+
```bash
|
|
432
|
+
npm i -D prettier-plugin-tailwindcss
|
|
433
|
+
```
|
|
434
|
+
```json
|
|
435
|
+
// .prettierrc
|
|
436
|
+
{
|
|
437
|
+
"plugins": ["prettier-plugin-tailwindcss"],
|
|
438
|
+
"tailwindConfig": "./tailwind.config.ts"
|
|
439
|
+
}
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## 7. Частые ошибки
|
|
445
|
+
|
|
446
|
+
### ❌ DON'T: динамически собирать имена классов
|
|
447
|
+
```tsx
|
|
448
|
+
// ❌ JIT/purge не видит эти классы — они не попадут в бандл
|
|
449
|
+
const size = "lg";
|
|
450
|
+
<div className={`text-${size}`} /> // ❌
|
|
451
|
+
<div className={`p-${padding}`} /> // ❌
|
|
452
|
+
<div className={`grid-cols-${cols}`} /> // ❌
|
|
453
|
+
|
|
454
|
+
// ✅ Маппинг полных имён классов
|
|
455
|
+
const sizeClasses = { sm: "text-sm", md: "text-base", lg: "text-lg" };
|
|
456
|
+
<div className={sizeClasses[size]} />
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### ❌ DON'T: использовать inline styles там где есть arbitrary values
|
|
460
|
+
```tsx
|
|
461
|
+
// ❌ Плохо: inline стиль вне системы Tailwind
|
|
462
|
+
<div style={{ marginTop: "13px" }} />
|
|
463
|
+
|
|
464
|
+
// ✅ Arbitrary value — остаётся в системе, работает с responsive/dark
|
|
465
|
+
<div className="mt-[13px]" />
|
|
466
|
+
<div className="mt-[13px] lg:mt-[20px] dark:mt-[15px]" />
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### ❌ DON'T: !important через !prefix без причины
|
|
470
|
+
```tsx
|
|
471
|
+
// ❌ Скрывает проблему специфичности вместо решения
|
|
472
|
+
<div className="!text-red-500" />
|
|
473
|
+
|
|
474
|
+
// ✅ Решай конфликт через правильную структуру или twMerge
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
### ❌ DON'T: дублировать классы в разных вариантах компонента
|
|
478
|
+
```tsx
|
|
479
|
+
// ❌ Плохо: base-классы повторяются в каждом варианте
|
|
480
|
+
const classes = isError
|
|
481
|
+
? "flex items-center px-4 py-2 rounded text-red-600 bg-red-50"
|
|
482
|
+
: "flex items-center px-4 py-2 rounded text-gray-600 bg-gray-50";
|
|
483
|
+
|
|
484
|
+
// ✅ Правильно: cva с base + variants
|
|
485
|
+
const alertVariants = cva("flex items-center px-4 py-2 rounded", {
|
|
486
|
+
variants: {
|
|
487
|
+
type: {
|
|
488
|
+
error: "text-red-600 bg-red-50",
|
|
489
|
+
default: "text-gray-600 bg-gray-50",
|
|
490
|
+
},
|
|
491
|
+
},
|
|
492
|
+
});
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### ❌ DON'T: забывать про конфликты классов без twMerge
|
|
496
|
+
```tsx
|
|
497
|
+
// ❌ Без twMerge оба класса применятся — победит тот, что дальше в CSS (непредсказуемо)
|
|
498
|
+
function MyBtn({ className }) {
|
|
499
|
+
return <button className={`px-4 ${className}`} />; // className="px-8" → оба px останутся
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// ✅ С cn/twMerge — последний всегда побеждает
|
|
503
|
+
function MyBtn({ className }) {
|
|
504
|
+
return <button className={cn("px-4", className)} />; // className="px-8" → только px-8
|
|
505
|
+
}
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
## См. также
|
|
511
|
+
- `react_beast_practices` — компонентные паттерны (Compound Components, Container/Presenter)
|
|
512
|
+
- `dev_reference_snippets` — TDD, API, формы с валидацией
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tailwind_beast_practices",
|
|
3
|
+
"display_name": "Tailwind Beast Practices",
|
|
4
|
+
"description": "Tailwind CSS best practices для Senior-уровня: организация классов, компонентный подход, кастомизация темы, responsive/dark mode, производительность (purge/JIT), типичные паттерны и DO/DON'T. Используй этот скилл всегда когда задача касается стилизации через Tailwind — написание классов, структура конфига, работа с дизайн-системой, избегание className-хаоса, или интеграция с React/Next.js.",
|
|
5
|
+
"default_prompt": "Используй $tailwind_beast_practices, когда задача относится к навыку \"Tailwind Beast Practices\".",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"tailwind_beast_practices",
|
|
8
|
+
"tailwind beast practices",
|
|
9
|
+
"Tailwind CSS best practices для Senior-уровня"
|
|
10
|
+
],
|
|
11
|
+
"capabilities": [
|
|
12
|
+
"tailwind",
|
|
13
|
+
"beast",
|
|
14
|
+
"practices"
|
|
15
|
+
],
|
|
16
|
+
"tools": [],
|
|
17
|
+
"implicit_invocation": true
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tailwind_beast_practices",
|
|
3
|
+
"display_name": "Tailwind Beast Practices",
|
|
4
|
+
"description": "Tailwind CSS best practices для Senior-уровня: организация классов, компонентный подход, кастомизация темы, responsive/dark mode, производительность (purge/JIT), типичные паттерны и DO/DON'T. Используй этот скилл всегда когда задача касается стилизации через Tailwind — написание классов, структура конфига, работа с дизайн-системой, избегание className-хаоса, или интеграция с React/Next.js.",
|
|
5
|
+
"default_prompt": "Используй $tailwind_beast_practices, когда задача относится к навыку \"Tailwind Beast Practices\".",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"tailwind_beast_practices",
|
|
8
|
+
"tailwind beast practices",
|
|
9
|
+
"Tailwind CSS best practices для Senior-уровня"
|
|
10
|
+
],
|
|
11
|
+
"capabilities": [
|
|
12
|
+
"tailwind",
|
|
13
|
+
"beast",
|
|
14
|
+
"practices"
|
|
15
|
+
],
|
|
16
|
+
"tools": [],
|
|
17
|
+
"implicit_invocation": true
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tailwind_beast_practices",
|
|
3
|
+
"display_name": "Tailwind Beast Practices",
|
|
4
|
+
"description": "Tailwind CSS best practices для Senior-уровня: организация классов, компонентный подход, кастомизация темы, responsive/dark mode, производительность (purge/JIT), типичные паттерны и DO/DON'T. Используй этот скилл всегда когда задача касается стилизации через Tailwind — написание классов, структура конфига, работа с дизайн-системой, избегание className-хаоса, или интеграция с React/Next.js.",
|
|
5
|
+
"default_prompt": "Используй $tailwind_beast_practices, когда задача относится к навыку \"Tailwind Beast Practices\".",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"tailwind_beast_practices",
|
|
8
|
+
"tailwind beast practices",
|
|
9
|
+
"Tailwind CSS best practices для Senior-уровня"
|
|
10
|
+
],
|
|
11
|
+
"capabilities": [
|
|
12
|
+
"tailwind",
|
|
13
|
+
"beast",
|
|
14
|
+
"practices"
|
|
15
|
+
],
|
|
16
|
+
"tools": [],
|
|
17
|
+
"implicit_invocation": true
|
|
18
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Tailwind Beast Practices"
|
|
3
|
+
short_description: "Tailwind CSS best practices для Senior-уровня: организация классов, компонентный подход, кастом…"
|
|
4
|
+
default_prompt: "Используй $tailwind_beast_practices, когда задача относится к навыку \"Tailwind Beast Practices\"."
|
|
5
|
+
dependencies:
|
|
6
|
+
tools: []
|
|
7
|
+
policy:
|
|
8
|
+
allow_implicit_invocation: true
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tailwind_beast_practices",
|
|
3
|
+
"display_name": "Tailwind Beast Practices",
|
|
4
|
+
"description": "Tailwind CSS best practices для Senior-уровня: организация классов, компонентный подход, кастомизация темы, responsive/dark mode, производительность (purge/JIT), типичные паттерны и DO/DON'T. Используй этот скилл всегда когда задача касается стилизации через Tailwind — написание классов, структура конфига, работа с дизайн-системой, избегание className-хаоса, или интеграция с React/Next.js.",
|
|
5
|
+
"default_prompt": "Используй $tailwind_beast_practices, когда задача относится к навыку \"Tailwind Beast Practices\".",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"tailwind_beast_practices",
|
|
8
|
+
"tailwind beast practices",
|
|
9
|
+
"Tailwind CSS best practices для Senior-уровня"
|
|
10
|
+
],
|
|
11
|
+
"capabilities": [
|
|
12
|
+
"tailwind",
|
|
13
|
+
"beast",
|
|
14
|
+
"practices"
|
|
15
|
+
],
|
|
16
|
+
"tools": [],
|
|
17
|
+
"implicit_invocation": true
|
|
18
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
name: "tailwind_beast_practices"
|
|
3
|
+
display_name: "Tailwind Beast Practices"
|
|
4
|
+
description: "Tailwind CSS best practices для Senior-уровня: организация классов, компонентный подход, кастомизация темы, responsive/dark mode, производительность (purge/JIT), типичные паттерны и DO/DON'T. Используй этот скилл всегда когда задача касается стилизации через Tailwind — написание классов, структура конфига, работа с дизайн-системой, избегание className-хаоса, или интеграция с React/Next.js."
|
|
5
|
+
default_prompt: "Используй $tailwind_beast_practices, когда задача относится к навыку \"Tailwind Beast Practices\"."
|
|
6
|
+
triggers:
|
|
7
|
+
- "tailwind_beast_practices"
|
|
8
|
+
- "tailwind beast practices"
|
|
9
|
+
- "Tailwind CSS best practices для Senior-уровня"
|
|
10
|
+
capabilities:
|
|
11
|
+
- "tailwind"
|
|
12
|
+
- "beast"
|
|
13
|
+
- "practices"
|
|
14
|
+
tools: []
|
|
15
|
+
invocation:
|
|
16
|
+
explicit: true
|
|
17
|
+
implicit: true
|
|
18
|
+
localization:
|
|
19
|
+
default_locale: "ru"
|
|
20
|
+
available_locales:
|
|
21
|
+
- "ru"
|
|
22
|
+
- "en"
|