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
|
@@ -1,20 +1,254 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: observability_review
|
|
3
|
-
description: Ревью
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: Observability Review
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
|
|
1
|
+
---
|
|
2
|
+
name: observability_review
|
|
3
|
+
description: Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: Observability Review
|
|
7
|
+
|
|
8
|
+
Ревью реализации наблюдаемости: логи, метрики, корреляция, соответствие плану.
|
|
9
|
+
|
|
10
|
+
**Разделы:**
|
|
11
|
+
1. [Checklist](#1-checklist)
|
|
12
|
+
2. [DO / DON'T Examples](#2-examples)
|
|
13
|
+
3. [Automated Detection](#3-detection)
|
|
14
|
+
4. [Pino Config Review](#4-pino)
|
|
15
|
+
5. [Output Template](#5-output)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. Checklist
|
|
20
|
+
|
|
21
|
+
### 1.1 Structured Logging
|
|
22
|
+
|
|
23
|
+
| # | Check | Severity | Status |
|
|
24
|
+
|---|-------|----------|--------|
|
|
25
|
+
| OBS-01 | All logs are structured JSON (pino), no `console.log` | 🟠 P1 | ☐ |
|
|
26
|
+
| OBS-02 | Log messages are constants (event names), not concatenated strings | 🟠 P1 | ☐ |
|
|
27
|
+
| OBS-03 | Context fields as object properties, not in message string | 🟠 P1 | ☐ |
|
|
28
|
+
| OBS-04 | Child loggers used for request scope (`req.log`) | 🟠 P1 | ☐ |
|
|
29
|
+
|
|
30
|
+
### 1.2 Correlation
|
|
31
|
+
|
|
32
|
+
| # | Check | Severity | Status |
|
|
33
|
+
|---|-------|----------|--------|
|
|
34
|
+
| OBS-05 | `requestId` present on all request-scoped logs | 🟠 P1 | ☐ |
|
|
35
|
+
| OBS-06 | `requestId` generated from `X-Request-ID` header or UUID | 🟡 P2 | ☐ |
|
|
36
|
+
| OBS-07 | `requestId` propagated to external API calls | 🟡 P2 | ☐ |
|
|
37
|
+
|
|
38
|
+
### 1.3 Log Levels
|
|
39
|
+
|
|
40
|
+
| # | Check | Severity | Status |
|
|
41
|
+
|---|-------|----------|--------|
|
|
42
|
+
| OBS-08 | `error` only for real errors (not validation failures, not 404) | 🟠 P1 | ☐ |
|
|
43
|
+
| OBS-09 | `warn` for expected but noteworthy (rate limit, deprecated usage) | 🟡 P2 | ☐ |
|
|
44
|
+
| OBS-10 | `info` for business events (create, update, delete, auth) | 🟠 P1 | ☐ |
|
|
45
|
+
| OBS-11 | `debug` only in development (not in production log level) | 🟠 P1 | ☐ |
|
|
46
|
+
|
|
47
|
+
### 1.4 PII & Secrets
|
|
48
|
+
|
|
49
|
+
| # | Check | Severity | Status |
|
|
50
|
+
|---|-------|----------|--------|
|
|
51
|
+
| OBS-12 | No passwords, tokens, API keys in logs | 🔴 P0 | ☐ |
|
|
52
|
+
| OBS-13 | No email/phone without masking | 🔴 P0 | ☐ |
|
|
53
|
+
| OBS-14 | No `req.headers` or `req.body` logged without filtering | 🔴 P0 | ☐ |
|
|
54
|
+
| OBS-15 | pino `redact` configured for sensitive paths | 🟠 P1 | ☐ |
|
|
55
|
+
|
|
56
|
+
### 1.5 Business Events
|
|
57
|
+
|
|
58
|
+
| # | Check | Severity | Status |
|
|
59
|
+
|---|-------|----------|--------|
|
|
60
|
+
| OBS-16 | Critical operations have audit logs (install, settings change, coupon CRUD) | 🟠 P1 | ☐ |
|
|
61
|
+
| OBS-17 | Health endpoints exist (`/health/live`, `/health/ready`) | 🟠 P1 | ☐ |
|
|
62
|
+
| OBS-18 | Error responses logged with context (but not PII) | 🟠 P1 | ☐ |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 2. DO / DON'T Examples
|
|
67
|
+
|
|
68
|
+
### Structured vs Unstructured
|
|
69
|
+
|
|
70
|
+
```javascript
|
|
71
|
+
// ❌ DON'T: Unstructured string logging
|
|
72
|
+
console.log('User ' + userId + ' created coupon ' + couponId + ' at ' + new Date());
|
|
73
|
+
console.log(`Error: ${err.message}`);
|
|
74
|
+
|
|
75
|
+
// ✅ DO: Structured JSON logging
|
|
76
|
+
logger.info({ userId, couponId }, 'coupon_created');
|
|
77
|
+
logger.error({ err, requestId: req.id }, 'coupon_create_failed');
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Context in Fields vs Message
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
// ❌ DON'T: Context baked into message string
|
|
84
|
+
logger.info(`Processing webhook for appInstanceId=${appId} from ${siteUrl}`);
|
|
85
|
+
|
|
86
|
+
// ✅ DO: Context as object properties (searchable, filterable)
|
|
87
|
+
logger.info({ appInstanceId: appId, siteUrl }, 'webhook_processing');
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Correct Log Levels
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
// ❌ DON'T: Error level for non-errors
|
|
94
|
+
logger.error('Coupon not found'); // 404 is not an error
|
|
95
|
+
logger.error('Validation failed'); // 400 is not an error
|
|
96
|
+
|
|
97
|
+
// ✅ DO: Correct levels
|
|
98
|
+
logger.warn({ code: couponCode }, 'coupon_not_found'); // Expected case
|
|
99
|
+
logger.warn({ fields: errors }, 'validation_failed'); // Expected case
|
|
100
|
+
logger.error({ err, requestId }, 'unhandled_error'); // Real error
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### PII in Logs
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
// ❌ DON'T: Log full request
|
|
107
|
+
logger.info({ headers: req.headers, body: req.body }, 'request_received');
|
|
108
|
+
// ^^^ authorization header! ^^^ passwords/tokens!
|
|
109
|
+
|
|
110
|
+
// ✅ DO: Allowlist safe fields
|
|
111
|
+
logger.info({
|
|
112
|
+
requestId: req.id,
|
|
113
|
+
method: req.method,
|
|
114
|
+
url: req.url,
|
|
115
|
+
status: res.statusCode,
|
|
116
|
+
durationMs: Date.now() - start
|
|
117
|
+
}, 'http_request');
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Child Logger
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
// ❌ DON'T: Pass requestId manually everywhere
|
|
124
|
+
logger.info({ requestId: req.id, userId }, 'settings_updated');
|
|
125
|
+
logger.info({ requestId: req.id, couponId }, 'coupon_created');
|
|
126
|
+
|
|
127
|
+
// ✅ DO: Create child logger once, use everywhere in request
|
|
128
|
+
// In middleware:
|
|
129
|
+
req.log = logger.child({ requestId: req.id });
|
|
130
|
+
// In handler:
|
|
131
|
+
req.log.info({ userId }, 'settings_updated');
|
|
132
|
+
req.log.info({ couponId }, 'coupon_created');
|
|
133
|
+
// requestId is automatically included!
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 3. Automated Detection
|
|
139
|
+
|
|
140
|
+
### Grep patterns
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# 🟠 P1: Unstructured logging
|
|
144
|
+
grep_search: Query="console.log" → Replace with pino logger
|
|
145
|
+
grep_search: Query="console.error" → Replace with logger.error
|
|
146
|
+
grep_search: Query="console.warn" → Replace with logger.warn
|
|
147
|
+
grep_search: Query="console.info" → Replace with logger.info
|
|
148
|
+
|
|
149
|
+
# 🔴 P0: PII/secrets in logs
|
|
150
|
+
grep_search: Query="req.headers" Includes=["*.js"] → Check: not logging auth header?
|
|
151
|
+
grep_search: Query="req.body" Includes=["*.js"] → Check: not logging passwords?
|
|
152
|
+
grep_search: Query="password" Includes=["*.js"] → Check: not in log context
|
|
153
|
+
grep_search: Query="token" Includes=["*.js"] → Check: not in log context
|
|
154
|
+
|
|
155
|
+
# 🟠 P1: Wrong log level
|
|
156
|
+
grep_search: Query="logger.error.*not.found" → Should be warn
|
|
157
|
+
grep_search: Query="logger.error.*validat" → Should be warn
|
|
158
|
+
grep_search: Query="logger.error.*404" → Should be warn
|
|
159
|
+
|
|
160
|
+
# 🟠 P1: Missing correlation
|
|
161
|
+
grep_search: Query="logger.info" Includes=["*/routes/*","*/controllers/*"] → Check: has requestId?
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 4. Pino Config Review
|
|
167
|
+
|
|
168
|
+
### Expected pino configuration
|
|
169
|
+
|
|
170
|
+
```javascript
|
|
171
|
+
// ✅ Correct pino setup
|
|
172
|
+
const logger = pino({
|
|
173
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
174
|
+
redact: {
|
|
175
|
+
paths: [
|
|
176
|
+
'password',
|
|
177
|
+
'token',
|
|
178
|
+
'authorization',
|
|
179
|
+
'cookie',
|
|
180
|
+
'req.headers.authorization',
|
|
181
|
+
'req.headers.cookie',
|
|
182
|
+
'*.password',
|
|
183
|
+
'*.token',
|
|
184
|
+
'*.secret',
|
|
185
|
+
'*.apiKey',
|
|
186
|
+
'*.refreshToken'
|
|
187
|
+
],
|
|
188
|
+
censor: '[REDACTED]'
|
|
189
|
+
},
|
|
190
|
+
serializers: {
|
|
191
|
+
err: pino.stdSerializers.err,
|
|
192
|
+
req: pino.stdSerializers.req,
|
|
193
|
+
res: pino.stdSerializers.res
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Config checks
|
|
199
|
+
|
|
200
|
+
| Check | Expected | grep pattern |
|
|
201
|
+
|-------|----------|-------------|
|
|
202
|
+
| Level from env | `process.env.LOG_LEVEL` | `grep "LOG_LEVEL"` |
|
|
203
|
+
| Redact configured | `redact: { paths: [...] }` | `grep "redact"` |
|
|
204
|
+
| password redacted | `'password'` in paths | `grep "password.*redact"` |
|
|
205
|
+
| authorization redacted | `'authorization'` in paths | `grep "authorization.*redact"` |
|
|
206
|
+
| Serializers set | `pino.stdSerializers` | `grep "stdSerializers"` |
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 5. Output Template
|
|
211
|
+
|
|
212
|
+
```markdown
|
|
213
|
+
# Observability Review Report
|
|
214
|
+
|
|
215
|
+
**Scope:** <PR/module>
|
|
216
|
+
**Reviewer:** Reviewer Agent
|
|
217
|
+
**Date:** YYYY-MM-DD
|
|
218
|
+
|
|
219
|
+
## Findings
|
|
220
|
+
|
|
221
|
+
| # | Severity | Check | File:Line | Finding | Fix |
|
|
222
|
+
|---|----------|-------|-----------|---------|-----|
|
|
223
|
+
| 1 | 🔴 P0 | OBS-12 | `routes/webhook.js:15` | `req.body` logged with tokens | Use allowlist fields |
|
|
224
|
+
| 2 | 🟠 P1 | OBS-01 | `services/coupon.js:42` | `console.log()` used | Replace with `req.log.info()` |
|
|
225
|
+
| 3 | 🟠 P1 | OBS-08 | `controllers/settings.js:60` | `logger.error('Not found')` | Change to `logger.warn()` |
|
|
226
|
+
|
|
227
|
+
## Pino Config
|
|
228
|
+
| Check | Status |
|
|
229
|
+
|-------|--------|
|
|
230
|
+
| Level from env | ✅ |
|
|
231
|
+
| Redact: password | ✅ |
|
|
232
|
+
| Redact: authorization | ⚠️ Missing |
|
|
233
|
+
| Serializers | ✅ |
|
|
234
|
+
|
|
235
|
+
## Compliance with Observability Plan
|
|
236
|
+
| Event | Expected | Implemented | Status |
|
|
237
|
+
|-------|----------|-------------|--------|
|
|
238
|
+
| server_started | info | ✅ | Pass |
|
|
239
|
+
| http_request | info + requestId | ⚠️ no requestId | Fix |
|
|
240
|
+
| coupon_created | info + couponId | ✅ | Pass |
|
|
241
|
+
|
|
242
|
+
## Verdict
|
|
243
|
+
- ✅ COMPLIANT — observability plan fully implemented
|
|
244
|
+
- ⚠️ GAPS — partial implementation, P1 items to fix
|
|
245
|
+
- ❌ NON-COMPLIANT — critical gaps (PII exposure, no correlation)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## См. также
|
|
251
|
+
- `$observability_plan` — what to log/measure/alert
|
|
252
|
+
- `$observability_logging` — implementation patterns (pino setup, middleware)
|
|
253
|
+
- `$review_reference_snippets` — DO/DON'T snippets (section N, O)
|
|
254
|
+
- `$code_review_checklist` — general review (observability section)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "observability_review",
|
|
3
3
|
"display_name": "Проверка наблюдаемости",
|
|
4
|
-
"description": "Ревью
|
|
4
|
+
"description": "Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan.",
|
|
5
5
|
"default_prompt": "Используй $observability_review, когда задача относится к навыку \"Проверка наблюдаемости\".",
|
|
6
6
|
"triggers": [
|
|
7
7
|
"observability_review",
|
|
8
8
|
"observability review",
|
|
9
9
|
"Проверка наблюдаемости",
|
|
10
|
-
"Ревью наблюдаемости"
|
|
10
|
+
"Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan"
|
|
11
11
|
],
|
|
12
12
|
"capabilities": [
|
|
13
13
|
"observability",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "observability_review",
|
|
3
3
|
"display_name": "Проверка наблюдаемости",
|
|
4
|
-
"description": "Ревью
|
|
4
|
+
"description": "Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan.",
|
|
5
5
|
"default_prompt": "Используй $observability_review, когда задача относится к навыку \"Проверка наблюдаемости\".",
|
|
6
6
|
"triggers": [
|
|
7
7
|
"observability_review",
|
|
8
8
|
"observability review",
|
|
9
9
|
"Проверка наблюдаемости",
|
|
10
|
-
"Ревью наблюдаемости"
|
|
10
|
+
"Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan"
|
|
11
11
|
],
|
|
12
12
|
"capabilities": [
|
|
13
13
|
"observability",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "observability_review",
|
|
3
3
|
"display_name": "Проверка наблюдаемости",
|
|
4
|
-
"description": "Ревью
|
|
4
|
+
"description": "Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan.",
|
|
5
5
|
"default_prompt": "Используй $observability_review, когда задача относится к навыку \"Проверка наблюдаемости\".",
|
|
6
6
|
"triggers": [
|
|
7
7
|
"observability_review",
|
|
8
8
|
"observability review",
|
|
9
9
|
"Проверка наблюдаемости",
|
|
10
|
-
"Ревью наблюдаемости"
|
|
10
|
+
"Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan"
|
|
11
11
|
],
|
|
12
12
|
"capabilities": [
|
|
13
13
|
"observability",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Проверка наблюдаемости"
|
|
3
|
-
short_description: "Ревью
|
|
3
|
+
short_description: "Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек…"
|
|
4
4
|
default_prompt: "Используй $observability_review, когда задача относится к навыку \"Проверка наблюдаемости\"."
|
|
5
5
|
dependencies:
|
|
6
6
|
tools: []
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "observability_review",
|
|
3
3
|
"display_name": "Проверка наблюдаемости",
|
|
4
|
-
"description": "Ревью
|
|
4
|
+
"description": "Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan.",
|
|
5
5
|
"default_prompt": "Используй $observability_review, когда задача относится к навыку \"Проверка наблюдаемости\".",
|
|
6
6
|
"triggers": [
|
|
7
7
|
"observability_review",
|
|
8
8
|
"observability review",
|
|
9
9
|
"Проверка наблюдаемости",
|
|
10
|
-
"Ревью наблюдаемости"
|
|
10
|
+
"Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan"
|
|
11
11
|
],
|
|
12
12
|
"capabilities": [
|
|
13
13
|
"observability",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
version: 1
|
|
2
2
|
name: "observability_review"
|
|
3
3
|
display_name: "Проверка наблюдаемости"
|
|
4
|
-
description: "Ревью
|
|
4
|
+
description: "Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan."
|
|
5
5
|
default_prompt: "Используй $observability_review, когда задача относится к навыку \"Проверка наблюдаемости\"."
|
|
6
6
|
triggers:
|
|
7
7
|
- "observability_review"
|
|
8
8
|
- "observability review"
|
|
9
9
|
- "Проверка наблюдаемости"
|
|
10
|
-
- "Ревью наблюдаемости"
|
|
10
|
+
- "Ревью наблюдаемости — структурированные логи, request_id/trace_id, уровни логов, запрет утечек PII/секретов, соответствие Observability Plan"
|
|
11
11
|
capabilities:
|
|
12
12
|
- "observability"
|
|
13
13
|
- "review"
|
|
@@ -1,17 +1,239 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: performance_review_baseline
|
|
3
|
-
description: Базовый perf
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Skill: Performance Review Baseline
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
---
|
|
2
|
+
name: performance_review_baseline
|
|
3
|
+
description: Базовый perf-ревью — N+1, пагинация, батчи, лишние запросы, кеш по архитектуре, тяжелые операции в request-path.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: Performance Review Baseline
|
|
7
|
+
|
|
8
|
+
Ревью производительности без premature optimization — фокус на реальных bottlenecks.
|
|
9
|
+
|
|
10
|
+
**Разделы:**
|
|
11
|
+
1. [Checklist](#1-checklist)
|
|
12
|
+
2. [DO / DON'T Examples](#2-examples)
|
|
13
|
+
3. [Latency Targets](#3-latency)
|
|
14
|
+
4. [Automated Detection](#4-detection)
|
|
15
|
+
5. [Output Template](#5-output)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. Checklist
|
|
20
|
+
|
|
21
|
+
### 1.1 Database Queries
|
|
22
|
+
|
|
23
|
+
| # | Check | Severity | Status |
|
|
24
|
+
|---|-------|----------|--------|
|
|
25
|
+
| PERF-01 | No N+1 queries (loop of individual DB calls) | 🔴 P0 | ☐ |
|
|
26
|
+
| PERF-02 | Indexes exist for all query patterns | 🟠 P1 | ☐ |
|
|
27
|
+
| PERF-03 | `.select()` used — don't fetch unnecessary fields | 🟠 P1 | ☐ |
|
|
28
|
+
| PERF-04 | `.lean()` used for read-only queries (Mongoose) | 🟡 P2 | ☐ |
|
|
29
|
+
| PERF-05 | No unbounded queries (always limit/paginate) | 🔴 P0 | ☐ |
|
|
30
|
+
| PERF-06 | Aggregation pipelines optimized (`$match` before `$lookup`) | 🟠 P1 | ☐ |
|
|
31
|
+
|
|
32
|
+
### 1.2 API & Network
|
|
33
|
+
|
|
34
|
+
| # | Check | Severity | Status |
|
|
35
|
+
|---|-------|----------|--------|
|
|
36
|
+
| PERF-07 | No redundant round-trips (batch where possible) | 🟠 P1 | ☐ |
|
|
37
|
+
| PERF-08 | Pagination on list endpoints | 🔴 P0 | ☐ |
|
|
38
|
+
| PERF-09 | Response payload minimal (no over-fetching) | 🟠 P1 | ☐ |
|
|
39
|
+
| PERF-10 | Heavy operations offloaded to async (queue/worker) | 🟠 P1 | ☐ |
|
|
40
|
+
| PERF-11 | Compression enabled (gzip/brotli) for API responses | 🟡 P2 | ☐ |
|
|
41
|
+
|
|
42
|
+
### 1.3 Frontend
|
|
43
|
+
|
|
44
|
+
| # | Check | Severity | Status |
|
|
45
|
+
|---|-------|----------|--------|
|
|
46
|
+
| PERF-12 | No unnecessary re-renders (React.memo, useMemo, useCallback where appropriate) | 🟠 P1 | ☐ |
|
|
47
|
+
| PERF-13 | Images optimized (WebP, lazy loading, proper dimensions) | 🟠 P1 | ☐ |
|
|
48
|
+
| PERF-14 | Bundle size reasonable (no giant imports like full lodash) | 🟠 P1 | ☐ |
|
|
49
|
+
| PERF-15 | Code splitting / lazy routes for large apps | 🟡 P2 | ☐ |
|
|
50
|
+
|
|
51
|
+
### 1.4 Caching
|
|
52
|
+
|
|
53
|
+
| # | Check | Severity | Status |
|
|
54
|
+
|---|-------|----------|--------|
|
|
55
|
+
| PERF-16 | Cache applied where architecture allows (read-heavy, rarely changing) | 🟡 P2 | ☐ |
|
|
56
|
+
| PERF-17 | Cache invalidation strategy defined | 🟠 P1 | ☐ |
|
|
57
|
+
| PERF-18 | HTTP cache headers for static assets (Cache-Control, ETag) | 🟡 P2 | ☐ |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 2. DO / DON'T Examples
|
|
62
|
+
|
|
63
|
+
### N+1 Query Problem
|
|
64
|
+
|
|
65
|
+
```javascript
|
|
66
|
+
// ❌ DON'T: N+1 — one query per item in loop
|
|
67
|
+
const coupons = await Coupon.find({ appInstanceId });
|
|
68
|
+
for (const coupon of coupons) {
|
|
69
|
+
coupon.settings = await Settings.findOne({ couponId: coupon._id }); // N queries!
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ✅ DO: Single query with $in or $lookup
|
|
73
|
+
const coupons = await Coupon.find({ appInstanceId });
|
|
74
|
+
const couponIds = coupons.map(c => c._id);
|
|
75
|
+
const settings = await Settings.find({ couponId: { $in: couponIds } }); // 1 query
|
|
76
|
+
// Map settings to coupons in memory
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Unbounded Query
|
|
80
|
+
|
|
81
|
+
```javascript
|
|
82
|
+
// ❌ DON'T: Fetch ALL records
|
|
83
|
+
const allCoupons = await Coupon.find({}); // Could be 100K records!
|
|
84
|
+
|
|
85
|
+
// ✅ DO: Paginate
|
|
86
|
+
const coupons = await Coupon.find({})
|
|
87
|
+
.sort({ createdAt: -1 })
|
|
88
|
+
.skip(page * limit)
|
|
89
|
+
.limit(limit)
|
|
90
|
+
.lean();
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Over-fetching
|
|
94
|
+
|
|
95
|
+
```javascript
|
|
96
|
+
// ❌ DON'T: Return entire document
|
|
97
|
+
const settings = await Settings.findOne({ appInstanceId });
|
|
98
|
+
res.json(settings); // Includes all internal fields
|
|
99
|
+
|
|
100
|
+
// ✅ DO: Select only needed fields
|
|
101
|
+
const settings = await Settings.findOne({ appInstanceId })
|
|
102
|
+
.select('templateId colors fonts timer coupon')
|
|
103
|
+
.lean();
|
|
104
|
+
res.json({ data: settings });
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Sync Heavy Operation
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
// ❌ DON'T: Heavy operation in request path
|
|
111
|
+
router.post('/export', async (req, res) => {
|
|
112
|
+
const report = await generatePDFReport(allData); // 30 seconds!
|
|
113
|
+
res.json({ report });
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// ✅ DO: Offload to async
|
|
117
|
+
router.post('/export', async (req, res) => {
|
|
118
|
+
const jobId = await queue.add('generate-report', { userId: req.userId });
|
|
119
|
+
res.status(202).json({ jobId, status: 'processing' }); // Return immediately
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### React Re-renders
|
|
124
|
+
|
|
125
|
+
```jsx
|
|
126
|
+
// ❌ DON'T: New object/function on every render
|
|
127
|
+
function ParentComponent() {
|
|
128
|
+
return <Child style={{ color: 'red' }} onClick={() => doSomething()} />;
|
|
129
|
+
// ^^ new object every render ^^ new function every render
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// ✅ DO: Stable references
|
|
133
|
+
const style = useMemo(() => ({ color: 'red' }), []);
|
|
134
|
+
const handleClick = useCallback(() => doSomething(), []);
|
|
135
|
+
return <Child style={style} onClick={handleClick} />;
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 3. Latency Targets
|
|
141
|
+
|
|
142
|
+
### API endpoints
|
|
143
|
+
|
|
144
|
+
| Endpoint Type | p50 | p95 | p99 | Alert threshold (p95) |
|
|
145
|
+
|--------------|-----|-----|-----|-----------------------|
|
|
146
|
+
| Widget (public, read) | 10ms | 50ms | 100ms | > 200ms |
|
|
147
|
+
| Dashboard (CRUD) | 20ms | 100ms | 500ms | > 1000ms |
|
|
148
|
+
| List with pagination | 30ms | 150ms | 500ms | > 1000ms |
|
|
149
|
+
| Webhooks (async OK) | 50ms | 500ms | 2000ms | > 5000ms |
|
|
150
|
+
| File/image upload | 100ms | 1000ms | 5000ms | > 10000ms |
|
|
151
|
+
|
|
152
|
+
### Frontend
|
|
153
|
+
|
|
154
|
+
| Metric | Target | P0 if exceeds |
|
|
155
|
+
|--------|--------|:---:|
|
|
156
|
+
| FCP (First Contentful Paint) | < 1.5s | > 3s |
|
|
157
|
+
| LCP (Largest Contentful Paint) | < 2.5s | > 4s |
|
|
158
|
+
| CLS (Cumulative Layout Shift) | < 0.1 | > 0.25 |
|
|
159
|
+
| TTI (Time to Interactive) | < 3.5s | > 7s |
|
|
160
|
+
| JS Bundle (gzipped) | < 200KB | > 500KB |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 4. Automated Detection
|
|
165
|
+
|
|
166
|
+
### Grep patterns
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# N+1 indicators
|
|
170
|
+
grep_search: Query="await.*find" Includes=["*.js"] → check if inside loop (for/forEach/map)
|
|
171
|
+
grep_search: Query="for.*await" Includes=["*.js"] → sequential async in loop
|
|
172
|
+
|
|
173
|
+
# Unbounded queries
|
|
174
|
+
grep_search: Query=".find({" Includes=["*.js"] → check: has .limit() ?
|
|
175
|
+
grep_search: Query=".find()" Includes=["*.js"] → no filter at all
|
|
176
|
+
|
|
177
|
+
# Over-fetching
|
|
178
|
+
grep_search: Query=".findOne(" Includes=["*.js"] → check: has .select() ?
|
|
179
|
+
|
|
180
|
+
# Heavy sync operations
|
|
181
|
+
grep_search: Query="readFileSync" → P1: blocking I/O
|
|
182
|
+
grep_search: Query="JSON.parse" → check: large payloads?
|
|
183
|
+
|
|
184
|
+
# React performance
|
|
185
|
+
grep_search: Query="style={{" Includes=["*.jsx","*.tsx"] → inline object → re-render
|
|
186
|
+
grep_search: Query="() =>" Includes=["*.jsx","*.tsx"] → inline function in JSX props
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Mongoose explain
|
|
190
|
+
|
|
191
|
+
```javascript
|
|
192
|
+
// Check query plan for slow queries
|
|
193
|
+
const explain = await Model.find(query).explain('executionStats');
|
|
194
|
+
// Look for: COLLSCAN (no index), nReturned vs totalDocsExamined
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 5. Output Template
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
# Performance Review Report
|
|
203
|
+
|
|
204
|
+
**Scope:** <PR/module>
|
|
205
|
+
**Reviewer:** Reviewer Agent
|
|
206
|
+
**Date:** YYYY-MM-DD
|
|
207
|
+
|
|
208
|
+
## Findings
|
|
209
|
+
|
|
210
|
+
| # | Severity | Category | File:Line | Finding | Impact | Fix |
|
|
211
|
+
|---|----------|----------|-----------|---------|--------|-----|
|
|
212
|
+
| 1 | 🔴 P0 | N+1 | `services/coupon.js:45` | DB query inside for loop | 100 coupons = 100 queries | Use `$in` batch query |
|
|
213
|
+
| 2 | 🔴 P0 | Unbounded | `routes/coupons.js:12` | `Coupon.find({})` without limit | Memory spike on large datasets | Add pagination |
|
|
214
|
+
| 3 | 🟠 P1 | Over-fetch | `controllers/settings.js:8` | No `.select()` | 40 fields returned, 5 needed | Add `.select().lean()` |
|
|
215
|
+
|
|
216
|
+
## Latency Check
|
|
217
|
+
| Endpoint | Current p95 | Target p95 | Status |
|
|
218
|
+
|----------|:-----------:|:----------:|:------:|
|
|
219
|
+
| GET /widget/:id | ~30ms | 50ms | ✅ |
|
|
220
|
+
| GET /coupons | ~800ms | 100ms | ❌ PERF-01 |
|
|
221
|
+
|
|
222
|
+
## Checklist Summary
|
|
223
|
+
- P0: X findings (blocking SLA/UX)
|
|
224
|
+
- P1: Y findings (should fix)
|
|
225
|
+
- P2: Z findings (optimization opportunities)
|
|
226
|
+
|
|
227
|
+
## Verdict
|
|
228
|
+
- ✅ PASS — no bottlenecks
|
|
229
|
+
- ⚠️ OPTIMIZATION NEEDED — P0/P1 findings
|
|
230
|
+
- ❌ BLOCKED — critical performance issue breaking SLA
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## См. также
|
|
236
|
+
- `$observability_plan` — latency targets, metrics
|
|
237
|
+
- `$observability_review` — logging/metrics compliance
|
|
238
|
+
- `$data_model` — index strategy
|
|
239
|
+
- `$review_reference_snippets` — general DO/DON'T examples
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "performance_review_baseline",
|
|
3
3
|
"display_name": "Базовая проверка производительности",
|
|
4
|
-
"description": "Базовый perf
|
|
4
|
+
"description": "Базовый perf-ревью — N+1, пагинация, батчи, лишние запросы, кеш по архитектуре, тяжелые операции в request-path.",
|
|
5
5
|
"default_prompt": "Используй $performance_review_baseline, когда задача относится к навыку \"Базовая проверка производительности\".",
|
|
6
6
|
"triggers": [
|
|
7
7
|
"performance_review_baseline",
|
|
8
8
|
"performance review baseline",
|
|
9
9
|
"Базовая проверка производительности",
|
|
10
|
-
"Базовый perf-ревью"
|
|
10
|
+
"Базовый perf-ревью — N+1, пагинация, батчи, лишние запросы, кеш по архитектуре, тяжелые операции в request-path"
|
|
11
11
|
],
|
|
12
12
|
"capabilities": [
|
|
13
13
|
"performance",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "performance_review_baseline",
|
|
3
3
|
"display_name": "Базовая проверка производительности",
|
|
4
|
-
"description": "Базовый perf
|
|
4
|
+
"description": "Базовый perf-ревью — N+1, пагинация, батчи, лишние запросы, кеш по архитектуре, тяжелые операции в request-path.",
|
|
5
5
|
"default_prompt": "Используй $performance_review_baseline, когда задача относится к навыку \"Базовая проверка производительности\".",
|
|
6
6
|
"triggers": [
|
|
7
7
|
"performance_review_baseline",
|
|
8
8
|
"performance review baseline",
|
|
9
9
|
"Базовая проверка производительности",
|
|
10
|
-
"Базовый perf-ревью"
|
|
10
|
+
"Базовый perf-ревью — N+1, пагинация, батчи, лишние запросы, кеш по архитектуре, тяжелые операции в request-path"
|
|
11
11
|
],
|
|
12
12
|
"capabilities": [
|
|
13
13
|
"performance",
|