claude-autopm 2.8.1 → 2.8.3
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/README.md +399 -529
- package/bin/autopm.js +2 -0
- package/bin/commands/plugin.js +395 -0
- package/bin/commands/team.js +184 -10
- package/install/install.js +223 -4
- package/lib/plugins/PluginManager.js +1328 -0
- package/lib/plugins/PluginManager.old.js +400 -0
- package/package.json +5 -1
- package/packages/plugin-ai/LICENSE +21 -0
- package/packages/plugin-ai/README.md +316 -0
- package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
- package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
- package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
- package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
- package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
- package/packages/plugin-ai/commands/a2a-setup.md +886 -0
- package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
- package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
- package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
- package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
- package/packages/plugin-ai/commands/llm-optimize.md +348 -0
- package/packages/plugin-ai/commands/openai-optimize.md +863 -0
- package/packages/plugin-ai/commands/rag-optimize.md +841 -0
- package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
- package/packages/plugin-ai/package.json +66 -0
- package/packages/plugin-ai/plugin.json +519 -0
- package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
- package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
- package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
- package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
- package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
- package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
- package/packages/plugin-cloud/README.md +268 -0
- package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
- package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
- package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
- package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
- package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
- package/packages/plugin-cloud/package.json +64 -0
- package/packages/plugin-cloud/plugin.json +338 -0
- package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
- package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
- package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
- package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
- package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
- package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
- package/packages/plugin-core/README.md +274 -0
- package/packages/plugin-core/commands/code-rabbit.md +128 -0
- package/packages/plugin-core/commands/prompt.md +9 -0
- package/packages/plugin-core/commands/re-init.md +9 -0
- package/packages/plugin-core/hooks/context7-reminder.md +29 -0
- package/packages/plugin-core/hooks/enforce-agents.js +125 -0
- package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
- package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
- package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
- package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
- package/packages/plugin-core/hooks/test-hook.sh +21 -0
- package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
- package/packages/plugin-core/package.json +45 -0
- package/packages/plugin-core/plugin.json +387 -0
- package/packages/plugin-core/rules/agent-coordination.md +549 -0
- package/packages/plugin-core/rules/agent-mandatory.md +170 -0
- package/packages/plugin-core/rules/command-pipelines.md +208 -0
- package/packages/plugin-core/rules/context-optimization.md +176 -0
- package/packages/plugin-core/rules/context7-enforcement.md +327 -0
- package/packages/plugin-core/rules/datetime.md +122 -0
- package/packages/plugin-core/rules/definition-of-done.md +272 -0
- package/packages/plugin-core/rules/development-environments.md +19 -0
- package/packages/plugin-core/rules/development-workflow.md +198 -0
- package/packages/plugin-core/rules/framework-path-rules.md +180 -0
- package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
- package/packages/plugin-core/rules/git-strategy.md +237 -0
- package/packages/plugin-core/rules/golden-rules.md +181 -0
- package/packages/plugin-core/rules/naming-conventions.md +111 -0
- package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
- package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
- package/packages/plugin-core/rules/security-checklist.md +318 -0
- package/packages/plugin-core/rules/standard-patterns.md +197 -0
- package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
- package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
- package/packages/plugin-core/rules/use-ast-grep.md +113 -0
- package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
- package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
- package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
- package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
- package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
- package/packages/plugin-core/scripts/mcp/add.sh +7 -0
- package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
- package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
- package/packages/plugin-core/scripts/mcp/list.sh +7 -0
- package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
- package/packages/plugin-data/README.md +315 -0
- package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
- package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
- package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
- package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
- package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
- package/packages/plugin-data/package.json +66 -0
- package/packages/plugin-data/plugin.json +294 -0
- package/packages/plugin-data/rules/data-quality-standards.md +373 -0
- package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
- package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
- package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
- package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
- package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
- package/packages/plugin-databases/README.md +330 -0
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/bigquery-expert.md +24 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/cosmosdb-expert.md +22 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/mongodb-expert.md +24 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/postgresql-expert.md +23 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/redis-expert.md +29 -7
- package/packages/plugin-databases/commands/db-optimize.md +612 -0
- package/packages/plugin-databases/package.json +60 -0
- package/packages/plugin-databases/plugin.json +237 -0
- package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
- package/packages/plugin-databases/rules/database-pipeline.md +316 -0
- package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
- package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
- package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
- package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
- package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
- package/packages/plugin-devops/README.md +367 -0
- package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/github-operations-specialist.md +1 -1
- package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
- package/packages/plugin-devops/commands/docker-optimize.md +493 -0
- package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
- package/packages/plugin-devops/package.json +61 -0
- package/packages/plugin-devops/plugin.json +302 -0
- package/packages/plugin-devops/rules/github-operations.md +92 -0
- package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
- package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
- package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
- package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
- package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
- package/packages/plugin-frameworks/README.md +309 -0
- package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/e2e-test-engineer.md +219 -0
- package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/react-frontend-engineer.md +176 -0
- package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/tailwindcss-expert.md +251 -0
- package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
- package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
- package/packages/plugin-frameworks/package.json +59 -0
- package/packages/plugin-frameworks/plugin.json +224 -0
- package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
- package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
- package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
- package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
- package/packages/plugin-languages/README.md +333 -0
- package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
- package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
- package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
- package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
- package/packages/plugin-languages/commands/python-optimize.md +593 -0
- package/packages/plugin-languages/package.json +65 -0
- package/packages/plugin-languages/plugin.json +265 -0
- package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
- package/packages/plugin-languages/rules/testing-standards.md +768 -0
- package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
- package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
- package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
- package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
- package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
- package/packages/plugin-ml/README.md +430 -0
- package/packages/plugin-ml/agents/automl-expert.md +326 -0
- package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
- package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
- package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
- package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
- package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
- package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
- package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
- package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
- package/packages/plugin-ml/agents/time-series-expert.md +303 -0
- package/packages/plugin-ml/commands/ml-automl.md +572 -0
- package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
- package/packages/plugin-ml/package.json +52 -0
- package/packages/plugin-ml/plugin.json +338 -0
- package/packages/plugin-pm/README.md +368 -0
- package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
- package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
- package/packages/plugin-pm/package.json +57 -0
- package/packages/plugin-pm/plugin.json +503 -0
- package/packages/plugin-testing/README.md +401 -0
- package/{autopm/.claude/agents/testing → packages/plugin-testing/agents}/frontend-testing-engineer.md +373 -0
- package/packages/plugin-testing/commands/jest-optimize.md +800 -0
- package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
- package/packages/plugin-testing/commands/test-coverage.md +512 -0
- package/packages/plugin-testing/commands/test-performance.md +1041 -0
- package/packages/plugin-testing/commands/test-setup.md +414 -0
- package/packages/plugin-testing/package.json +40 -0
- package/packages/plugin-testing/plugin.json +197 -0
- package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
- package/packages/plugin-testing/rules/testing-standards.md +529 -0
- package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
- package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
- package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
- package/scripts/publish-plugins.sh +166 -0
- package/autopm/.claude/agents/data/airflow-orchestration-expert.md +0 -52
- package/autopm/.claude/agents/data/kedro-pipeline-expert.md +0 -50
- package/autopm/.claude/agents/integration/message-queue-engineer.md +0 -794
- package/autopm/.claude/commands/ai/langgraph-workflow.md +0 -65
- package/autopm/.claude/commands/ai/openai-chat.md +0 -65
- package/autopm/.claude/commands/playwright/test-scaffold.md +0 -38
- package/autopm/.claude/commands/python/api-scaffold.md +0 -50
- package/autopm/.claude/commands/python/docs-query.md +0 -48
- package/autopm/.claude/commands/testing/prime.md +0 -314
- package/autopm/.claude/commands/testing/run.md +0 -125
- package/autopm/.claude/commands/ui/bootstrap-scaffold.md +0 -65
- package/autopm/.claude/rules/database-management-strategy.md +0 -17
- package/autopm/.claude/rules/database-pipeline.md +0 -94
- package/autopm/.claude/rules/ux-design-rules.md +0 -209
- package/autopm/.claude/rules/visual-testing.md +0 -223
- package/autopm/.claude/scripts/azure/README.md +0 -192
- package/autopm/.claude/scripts/azure/active-work.js +0 -524
- package/autopm/.claude/scripts/azure/active-work.sh +0 -20
- package/autopm/.claude/scripts/azure/blocked.js +0 -520
- package/autopm/.claude/scripts/azure/blocked.sh +0 -20
- package/autopm/.claude/scripts/azure/daily.js +0 -533
- package/autopm/.claude/scripts/azure/daily.sh +0 -20
- package/autopm/.claude/scripts/azure/dashboard.js +0 -970
- package/autopm/.claude/scripts/azure/dashboard.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-list.js +0 -254
- package/autopm/.claude/scripts/azure/feature-list.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-show.js +0 -7
- package/autopm/.claude/scripts/azure/feature-show.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-status.js +0 -604
- package/autopm/.claude/scripts/azure/feature-status.sh +0 -20
- package/autopm/.claude/scripts/azure/help.js +0 -342
- package/autopm/.claude/scripts/azure/help.sh +0 -20
- package/autopm/.claude/scripts/azure/next-task.js +0 -508
- package/autopm/.claude/scripts/azure/next-task.sh +0 -20
- package/autopm/.claude/scripts/azure/search.js +0 -469
- package/autopm/.claude/scripts/azure/search.sh +0 -20
- package/autopm/.claude/scripts/azure/setup.js +0 -745
- package/autopm/.claude/scripts/azure/setup.sh +0 -20
- package/autopm/.claude/scripts/azure/sprint-report.js +0 -1012
- package/autopm/.claude/scripts/azure/sprint-report.sh +0 -20
- package/autopm/.claude/scripts/azure/sync.js +0 -563
- package/autopm/.claude/scripts/azure/sync.sh +0 -20
- package/autopm/.claude/scripts/azure/us-list.js +0 -210
- package/autopm/.claude/scripts/azure/us-list.sh +0 -20
- package/autopm/.claude/scripts/azure/us-status.js +0 -238
- package/autopm/.claude/scripts/azure/us-status.sh +0 -20
- package/autopm/.claude/scripts/azure/validate.js +0 -626
- package/autopm/.claude/scripts/azure/validate.sh +0 -20
- package/autopm/.claude/scripts/azure/wrapper-template.sh +0 -20
- package/autopm/.claude/scripts/github/dependency-tracker.js +0 -554
- package/autopm/.claude/scripts/github/dependency-validator.js +0 -545
- package/autopm/.claude/scripts/github/dependency-visualizer.js +0 -477
- package/bin/node/azure-feature-show.js +0 -7
- /package/{autopm/.claude/agents/cloud → packages/plugin-ai/agents}/gemini-api-expert.md +0 -0
- /package/{autopm/.claude/agents/data → packages/plugin-ai/agents}/langgraph-workflow-expert.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-ai/agents}/openai-python-expert.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/aws-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/azure-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/gcp-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/gcp-cloud-functions-engineer.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/kubernetes-orchestrator.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/terraform-infrastructure-expert.md +0 -0
- /package/{autopm/.claude/commands/cloud → packages/plugin-cloud/commands}/infra-deploy.md +0 -0
- /package/{autopm/.claude/commands/kubernetes/deploy.md → packages/plugin-cloud/commands/k8s-deploy.md} +0 -0
- /package/{autopm/.claude/commands/infrastructure → packages/plugin-cloud/commands}/ssh-security.md +0 -0
- /package/{autopm/.claude/commands/infrastructure → packages/plugin-cloud/commands}/traefik-setup.md +0 -0
- /package/{autopm/.claude → packages/plugin-cloud}/rules/infrastructure-pipeline.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/agent-manager.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/code-analyzer.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/file-analyzer.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/test-runner.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/rules/ai-integration-patterns.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/rules/performance-guidelines.md +0 -0
- /package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/azure-devops-specialist.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/docker-containerization-expert.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/mcp-context-manager.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/observability-engineer.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/ssh-operations-expert.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/traefik-proxy-expert.md +0 -0
- /package/{autopm/.claude/commands/github → packages/plugin-devops/commands}/workflow-create.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/ci-cd-kubernetes-strategy.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/devops-troubleshooting-playbook.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/docker-first-development.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/nats-messaging-expert.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/react-ui-expert.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/ux-design-expert.md +0 -0
- /package/{autopm/.claude/commands/react → packages/plugin-frameworks/commands}/app-scaffold.md +0 -0
- /package/{autopm/.claude/commands/ui → packages/plugin-frameworks/commands}/tailwind-system.md +0 -0
- /package/{autopm/.claude → packages/plugin-frameworks}/rules/ui-development-standards.md +0 -0
- /package/{autopm/.claude → packages/plugin-frameworks}/rules/ui-framework-rules.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/bash-scripting-expert.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/javascript-frontend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/nodejs-backend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/python-backend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/python-backend-expert.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/COMMANDS.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/COMMAND_MAPPING.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/INTEGRATION_FIX.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/active-work.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/aliases.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/blocked-items.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/clean.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/docs-query.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-decompose.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-start.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/fix-integration-example.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/help.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/import-us.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/init.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/next-task.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/search.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/sprint-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/standup.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/sync-all.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-analyze.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-close.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-edit.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-reopen.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-start.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-sync.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-edit.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-parse.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/validate.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/work-item-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/blocked.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/clean.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-create.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-prime.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-update.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-close.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-decompose.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-list.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-merge.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-oneshot.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-refresh.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-show.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-split.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-start.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync-modular.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync-original.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/help.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/import.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/in-progress.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/init.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-analyze.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-close.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-reopen.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-show.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-start.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/next.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-list.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-new.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-parse.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/search.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/standup.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/test-reference-update.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/validate.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/what-next.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/analytics.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/blocked.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/blocked.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/clean.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-create.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-prime.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-update.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-close.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-edit.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-list.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-show.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-show.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-split.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-start/epic-start.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-start/epic-start.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/create-epic-issue.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/create-task-issues.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/update-epic-file.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/update-references.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/help.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/help.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/in-progress.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/in-progress.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/init.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/init.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-close.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-edit.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-show.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-start.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/format-comment.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/gather-updates.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/post-comment.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/preflight-validation.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/update-frontmatter.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/epic-discovery.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/logger.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/next.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/next.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/optimize.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/pr-create.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/pr-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-list.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-new.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-parse.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/release.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/search.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/search.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/standup.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/standup.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/sync-batch.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/sync.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/template-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/template-new.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/validate.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/validate.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/what-next.js +0 -0
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
# Test Coverage Analysis Command
|
|
2
|
+
|
|
3
|
+
**Command**: `/test:coverage`
|
|
4
|
+
**Category**: Testing & QA
|
|
5
|
+
**Priority**: Medium
|
|
6
|
+
|
|
7
|
+
## Description
|
|
8
|
+
|
|
9
|
+
Generate and analyze test coverage reports with actionable improvements. This command provides comprehensive coverage analysis, identifies gaps, and recommends specific tests to improve coverage based on Context7-verified testing best practices.
|
|
10
|
+
|
|
11
|
+
## Required Documentation Access
|
|
12
|
+
|
|
13
|
+
**MANDATORY:** Before analyzing coverage, query Context7 for best practices:
|
|
14
|
+
|
|
15
|
+
**Documentation Queries:**
|
|
16
|
+
- `mcp://context7/testing/coverage-analysis` - Coverage metrics and thresholds
|
|
17
|
+
- `mcp://context7/testing/coverage-tools` - Istanbul, c8, v8 coverage providers
|
|
18
|
+
- `mcp://context7/testing/code-quality` - Quality metrics and standards
|
|
19
|
+
- `mcp://context7/project-management/metrics` - Tracking and reporting metrics
|
|
20
|
+
|
|
21
|
+
**Why This is Required:**
|
|
22
|
+
- Ensures coverage analysis follows industry standards
|
|
23
|
+
- Applies proven coverage threshold strategies
|
|
24
|
+
- Validates coverage metrics against best practices
|
|
25
|
+
- Prevents misleading or insufficient coverage metrics
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Generate coverage report
|
|
31
|
+
/test:coverage
|
|
32
|
+
|
|
33
|
+
# Generate with specific thresholds
|
|
34
|
+
/test:coverage --threshold=90
|
|
35
|
+
|
|
36
|
+
# Generate with detailed analysis
|
|
37
|
+
/test:coverage --detailed
|
|
38
|
+
|
|
39
|
+
# Generate and open HTML report
|
|
40
|
+
/test:coverage --html
|
|
41
|
+
|
|
42
|
+
# Generate for specific directory
|
|
43
|
+
/test:coverage --dir=src/components
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Parameters
|
|
47
|
+
|
|
48
|
+
```yaml
|
|
49
|
+
threshold:
|
|
50
|
+
type: number
|
|
51
|
+
default: 80
|
|
52
|
+
description: "Minimum coverage threshold percentage"
|
|
53
|
+
|
|
54
|
+
detailed:
|
|
55
|
+
type: boolean
|
|
56
|
+
default: false
|
|
57
|
+
description: "Generate detailed coverage analysis"
|
|
58
|
+
|
|
59
|
+
html:
|
|
60
|
+
type: boolean
|
|
61
|
+
default: true
|
|
62
|
+
description: "Generate and open HTML coverage report"
|
|
63
|
+
|
|
64
|
+
dir:
|
|
65
|
+
type: string
|
|
66
|
+
default: "src"
|
|
67
|
+
description: "Directory to analyze for coverage"
|
|
68
|
+
|
|
69
|
+
format:
|
|
70
|
+
type: string
|
|
71
|
+
enum: [text, json, html, lcov, all]
|
|
72
|
+
default: all
|
|
73
|
+
description: "Coverage report format"
|
|
74
|
+
|
|
75
|
+
failOnLow:
|
|
76
|
+
type: boolean
|
|
77
|
+
default: false
|
|
78
|
+
description: "Fail command if coverage below threshold"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Implementation Steps
|
|
82
|
+
|
|
83
|
+
### 1. Run Coverage Collection
|
|
84
|
+
|
|
85
|
+
**Vitest Coverage**:
|
|
86
|
+
```bash
|
|
87
|
+
npx vitest run --coverage
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Jest Coverage**:
|
|
91
|
+
```bash
|
|
92
|
+
npx jest --coverage
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 2. Parse Coverage Report
|
|
96
|
+
|
|
97
|
+
```javascript
|
|
98
|
+
import { readFileSync } from 'fs';
|
|
99
|
+
import { resolve } from 'path';
|
|
100
|
+
|
|
101
|
+
// Read coverage summary
|
|
102
|
+
const coveragePath = resolve(process.cwd(), 'coverage/coverage-summary.json');
|
|
103
|
+
const coverageData = JSON.parse(readFileSync(coveragePath, 'utf-8'));
|
|
104
|
+
|
|
105
|
+
// Extract metrics
|
|
106
|
+
const { lines, statements, functions, branches } = coverageData.total;
|
|
107
|
+
|
|
108
|
+
const metrics = {
|
|
109
|
+
lines: lines.pct,
|
|
110
|
+
statements: statements.pct,
|
|
111
|
+
functions: functions.pct,
|
|
112
|
+
branches: branches.pct
|
|
113
|
+
};
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 3. Analyze Coverage Gaps
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
// Identify files with low coverage
|
|
120
|
+
const lowCoverageFiles = Object.entries(coverageData)
|
|
121
|
+
.filter(([file, data]) => {
|
|
122
|
+
return data.lines.pct < threshold ||
|
|
123
|
+
data.branches.pct < threshold;
|
|
124
|
+
})
|
|
125
|
+
.map(([file, data]) => ({
|
|
126
|
+
file,
|
|
127
|
+
lines: data.lines.pct,
|
|
128
|
+
branches: data.branches.pct,
|
|
129
|
+
uncoveredLines: data.lines.total - data.lines.covered
|
|
130
|
+
}))
|
|
131
|
+
.sort((a, b) => a.lines - b.lines);
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 4. Generate Recommendations
|
|
135
|
+
|
|
136
|
+
```javascript
|
|
137
|
+
// Context7-verified coverage improvement strategies
|
|
138
|
+
const recommendations = [];
|
|
139
|
+
|
|
140
|
+
for (const file of lowCoverageFiles) {
|
|
141
|
+
if (file.branches < 75) {
|
|
142
|
+
recommendations.push({
|
|
143
|
+
file: file.file,
|
|
144
|
+
type: 'branch',
|
|
145
|
+
priority: 'high',
|
|
146
|
+
suggestion: 'Add tests for conditional logic and edge cases',
|
|
147
|
+
examples: [
|
|
148
|
+
'Test if/else branches',
|
|
149
|
+
'Test switch statements',
|
|
150
|
+
'Test ternary operators',
|
|
151
|
+
'Test error handling paths'
|
|
152
|
+
]
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (file.lines < 80) {
|
|
157
|
+
recommendations.push({
|
|
158
|
+
file: file.file,
|
|
159
|
+
type: 'line',
|
|
160
|
+
priority: 'medium',
|
|
161
|
+
suggestion: 'Increase line coverage by testing uncovered code paths',
|
|
162
|
+
uncoveredLines: file.uncoveredLines
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 5. Generate Reports
|
|
169
|
+
|
|
170
|
+
**Text Report**:
|
|
171
|
+
```javascript
|
|
172
|
+
console.log(`
|
|
173
|
+
🧪 TEST COVERAGE REPORT
|
|
174
|
+
=======================
|
|
175
|
+
|
|
176
|
+
📊 Overall Coverage:
|
|
177
|
+
Lines: ${metrics.lines}%
|
|
178
|
+
Statements: ${metrics.statements}%
|
|
179
|
+
Functions: ${metrics.functions}%
|
|
180
|
+
Branches: ${metrics.branches}%
|
|
181
|
+
|
|
182
|
+
${metrics.lines >= threshold ? '✅' : '❌'} Coverage ${metrics.lines >= threshold ? 'meets' : 'below'} threshold (${threshold}%)
|
|
183
|
+
`);
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**HTML Report**:
|
|
187
|
+
```bash
|
|
188
|
+
# Open HTML coverage report in browser
|
|
189
|
+
open coverage/index.html # macOS
|
|
190
|
+
xdg-open coverage/index.html # Linux
|
|
191
|
+
start coverage/index.html # Windows
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Coverage Analysis Output
|
|
195
|
+
|
|
196
|
+
### Standard Report
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
🧪 TEST COVERAGE REPORT
|
|
200
|
+
=======================
|
|
201
|
+
|
|
202
|
+
📊 Overall Coverage:
|
|
203
|
+
Lines: 87.5% ✅
|
|
204
|
+
Statements: 86.2% ✅
|
|
205
|
+
Functions: 92.1% ✅
|
|
206
|
+
Branches: 78.4% ⚠️
|
|
207
|
+
|
|
208
|
+
⚠️ Branch coverage below recommended threshold (80%)
|
|
209
|
+
|
|
210
|
+
📁 Files with Low Coverage:
|
|
211
|
+
|
|
212
|
+
1. src/utils/validation.js
|
|
213
|
+
- Lines: 65.2% (22/34 covered)
|
|
214
|
+
- Branches: 50.0% (4/8 covered)
|
|
215
|
+
- Priority: HIGH
|
|
216
|
+
- Uncovered: Lines 15-18, 24-26, 31-33
|
|
217
|
+
|
|
218
|
+
2. src/components/UserProfile.jsx
|
|
219
|
+
- Lines: 75.8% (50/66 covered)
|
|
220
|
+
- Branches: 62.5% (10/16 covered)
|
|
221
|
+
- Priority: MEDIUM
|
|
222
|
+
- Uncovered: Lines 42-45, 58-61
|
|
223
|
+
|
|
224
|
+
3. src/services/api.js
|
|
225
|
+
- Lines: 72.1% (62/86 covered)
|
|
226
|
+
- Branches: 68.8% (11/16 covered)
|
|
227
|
+
- Priority: MEDIUM
|
|
228
|
+
- Uncovered: Lines 23-28, 45-52, 78-82
|
|
229
|
+
|
|
230
|
+
💡 ACTIONABLE RECOMMENDATIONS:
|
|
231
|
+
|
|
232
|
+
Priority: HIGH
|
|
233
|
+
─────────────────────────────────────────
|
|
234
|
+
File: src/utils/validation.js
|
|
235
|
+
Issue: Low branch coverage (50%)
|
|
236
|
+
|
|
237
|
+
Recommended Tests:
|
|
238
|
+
✓ Test email validation with invalid formats
|
|
239
|
+
✓ Test password validation edge cases
|
|
240
|
+
✓ Test error handling for null/undefined inputs
|
|
241
|
+
✓ Add tests for all conditional branches
|
|
242
|
+
|
|
243
|
+
Example Test:
|
|
244
|
+
```javascript
|
|
245
|
+
describe('validation.js', () => {
|
|
246
|
+
it('should reject invalid email formats', () => {
|
|
247
|
+
expect(validateEmail('invalid')).toBe(false);
|
|
248
|
+
expect(validateEmail('missing@domain')).toBe(false);
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Priority: MEDIUM
|
|
254
|
+
─────────────────────────────────────────
|
|
255
|
+
File: src/components/UserProfile.jsx
|
|
256
|
+
Issue: Missing tests for error states
|
|
257
|
+
|
|
258
|
+
Recommended Tests:
|
|
259
|
+
✓ Test loading state rendering
|
|
260
|
+
✓ Test error state handling
|
|
261
|
+
✓ Test empty data scenarios
|
|
262
|
+
✓ Test user interaction edge cases
|
|
263
|
+
|
|
264
|
+
Example Test:
|
|
265
|
+
```javascript
|
|
266
|
+
it('should show error message when data fetch fails', async () => {
|
|
267
|
+
render(<UserProfile userId={999} />);
|
|
268
|
+
|
|
269
|
+
expect(await screen.findByText(/error loading/i)).toBeInTheDocument();
|
|
270
|
+
});
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
📈 IMPROVEMENT PLAN:
|
|
274
|
+
|
|
275
|
+
To reach 90% coverage:
|
|
276
|
+
┌────────────────────────────────────────┐
|
|
277
|
+
│ 1. Add 12 tests for validation.js │
|
|
278
|
+
│ Estimated time: 2 hours │
|
|
279
|
+
│ Impact: +8.5% overall coverage │
|
|
280
|
+
│ │
|
|
281
|
+
│ 2. Add 8 tests for UserProfile.jsx │
|
|
282
|
+
│ Estimated time: 1.5 hours │
|
|
283
|
+
│ Impact: +4.2% overall coverage │
|
|
284
|
+
│ │
|
|
285
|
+
│ 3. Add 6 tests for api.js │
|
|
286
|
+
│ Estimated time: 1 hour │
|
|
287
|
+
│ Impact: +2.8% overall coverage │
|
|
288
|
+
└────────────────────────────────────────┘
|
|
289
|
+
|
|
290
|
+
Total estimated effort: 4.5 hours
|
|
291
|
+
Projected coverage: 91.5%
|
|
292
|
+
|
|
293
|
+
🎯 NEXT STEPS:
|
|
294
|
+
|
|
295
|
+
1. Review uncovered lines in coverage/index.html
|
|
296
|
+
2. Implement recommended tests starting with HIGH priority
|
|
297
|
+
3. Re-run coverage: npm run test:coverage
|
|
298
|
+
4. Validate coverage meets threshold
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Detailed Analysis Report
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
🔍 DETAILED COVERAGE ANALYSIS
|
|
305
|
+
=============================
|
|
306
|
+
|
|
307
|
+
📊 Coverage by Category:
|
|
308
|
+
|
|
309
|
+
Components:
|
|
310
|
+
├─ UserProfile.jsx 75.8% ⚠️
|
|
311
|
+
├─ Dashboard.jsx 95.2% ✅
|
|
312
|
+
├─ LoginForm.jsx 89.4% ✅
|
|
313
|
+
└─ Button.jsx 100.0% ✅
|
|
314
|
+
|
|
315
|
+
Services:
|
|
316
|
+
├─ api.js 72.1% ⚠️
|
|
317
|
+
├─ auth.js 91.3% ✅
|
|
318
|
+
└─ storage.js 88.7% ✅
|
|
319
|
+
|
|
320
|
+
Utils:
|
|
321
|
+
├─ validation.js 65.2% ❌
|
|
322
|
+
├─ formatters.js 94.5% ✅
|
|
323
|
+
└─ helpers.js 87.9% ✅
|
|
324
|
+
|
|
325
|
+
🔬 Complexity Analysis:
|
|
326
|
+
|
|
327
|
+
High Complexity (Cyclomatic > 10):
|
|
328
|
+
├─ src/utils/validation.js:validateForm (complexity: 15)
|
|
329
|
+
│ Coverage: 60% - NEEDS MORE TESTS
|
|
330
|
+
│
|
|
331
|
+
└─ src/services/api.js:handleResponse (complexity: 12)
|
|
332
|
+
Coverage: 70% - NEEDS MORE TESTS
|
|
333
|
+
|
|
334
|
+
Recommendation: Focus testing efforts on high-complexity,
|
|
335
|
+
low-coverage functions first.
|
|
336
|
+
|
|
337
|
+
📉 Coverage Trend (Last 5 runs):
|
|
338
|
+
|
|
339
|
+
Date Lines Branches Change
|
|
340
|
+
──────────────────────────────────────
|
|
341
|
+
2024-01-15 87.5% 78.4% +2.1% ↗
|
|
342
|
+
2024-01-14 85.4% 76.8% -0.5% ↘
|
|
343
|
+
2024-01-13 85.9% 77.2% +1.8% ↗
|
|
344
|
+
2024-01-12 84.1% 75.9% +0.3% ↗
|
|
345
|
+
2024-01-11 83.8% 75.6% -
|
|
346
|
+
|
|
347
|
+
Trend: Improving ✅
|
|
348
|
+
|
|
349
|
+
🎖️ Coverage Champions:
|
|
350
|
+
|
|
351
|
+
100% Coverage Files:
|
|
352
|
+
✓ src/components/Button.jsx
|
|
353
|
+
✓ src/utils/formatters.js
|
|
354
|
+
✓ src/hooks/useLocalStorage.js
|
|
355
|
+
|
|
356
|
+
Great work on these files!
|
|
357
|
+
|
|
358
|
+
⚠️ Coverage Concerns:
|
|
359
|
+
|
|
360
|
+
Files Below 70%:
|
|
361
|
+
! src/utils/validation.js (65.2%)
|
|
362
|
+
! src/services/api.js (72.1%)
|
|
363
|
+
|
|
364
|
+
These files need immediate attention.
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## Context7-Verified Best Practices
|
|
368
|
+
|
|
369
|
+
Based on Context7 documentation:
|
|
370
|
+
|
|
371
|
+
### Coverage Thresholds (Industry Standards)
|
|
372
|
+
|
|
373
|
+
```javascript
|
|
374
|
+
// Recommended thresholds from Context7
|
|
375
|
+
const coverageThresholds = {
|
|
376
|
+
// Minimum acceptable
|
|
377
|
+
minimum: {
|
|
378
|
+
lines: 70,
|
|
379
|
+
statements: 70,
|
|
380
|
+
functions: 70,
|
|
381
|
+
branches: 65
|
|
382
|
+
},
|
|
383
|
+
|
|
384
|
+
// Recommended for production
|
|
385
|
+
recommended: {
|
|
386
|
+
lines: 80,
|
|
387
|
+
statements: 80,
|
|
388
|
+
functions: 80,
|
|
389
|
+
branches: 75
|
|
390
|
+
},
|
|
391
|
+
|
|
392
|
+
// Aspirational for critical systems
|
|
393
|
+
high: {
|
|
394
|
+
lines: 90,
|
|
395
|
+
statements: 90,
|
|
396
|
+
functions: 90,
|
|
397
|
+
branches: 85
|
|
398
|
+
}
|
|
399
|
+
};
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### What Coverage Doesn't Tell You
|
|
403
|
+
|
|
404
|
+
```
|
|
405
|
+
Coverage Limitations:
|
|
406
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
407
|
+
|
|
408
|
+
✅ What 100% coverage DOES mean:
|
|
409
|
+
- Every line of code was executed during tests
|
|
410
|
+
- All code paths were exercised
|
|
411
|
+
- No dead code exists
|
|
412
|
+
|
|
413
|
+
❌ What 100% coverage DOESN'T mean:
|
|
414
|
+
- All edge cases are tested
|
|
415
|
+
- Tests verify correct behavior
|
|
416
|
+
- Code is bug-free
|
|
417
|
+
- Tests are high quality
|
|
418
|
+
|
|
419
|
+
💡 Key Insight:
|
|
420
|
+
Coverage measures test execution, not test quality.
|
|
421
|
+
Always combine coverage with:
|
|
422
|
+
- Code review
|
|
423
|
+
- Mutation testing
|
|
424
|
+
- Manual testing
|
|
425
|
+
- User acceptance testing
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Mutation Testing Recommendation
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
# Install mutation testing (optional)
|
|
432
|
+
npm install -D @stryker-mutator/core @stryker-mutator/vitest-runner
|
|
433
|
+
|
|
434
|
+
# Run mutation testing to verify test quality
|
|
435
|
+
npx stryker run
|
|
436
|
+
|
|
437
|
+
# Mutation testing changes code (mutates) to verify tests catch bugs
|
|
438
|
+
# Example: Changes `>` to `>=`, `+` to `-`, removes conditionals
|
|
439
|
+
# Good tests should fail when code is mutated
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
## Integration with CI/CD
|
|
443
|
+
|
|
444
|
+
### GitHub Actions with Coverage Reporting
|
|
445
|
+
|
|
446
|
+
```yaml
|
|
447
|
+
name: Coverage
|
|
448
|
+
|
|
449
|
+
on: [push, pull_request]
|
|
450
|
+
|
|
451
|
+
jobs:
|
|
452
|
+
coverage:
|
|
453
|
+
runs-on: ubuntu-latest
|
|
454
|
+
|
|
455
|
+
steps:
|
|
456
|
+
- uses: actions/checkout@v3
|
|
457
|
+
|
|
458
|
+
- uses: actions/setup-node@v3
|
|
459
|
+
with:
|
|
460
|
+
node-version: '18'
|
|
461
|
+
|
|
462
|
+
- run: npm ci
|
|
463
|
+
|
|
464
|
+
- name: Run tests with coverage
|
|
465
|
+
run: npm run test:coverage
|
|
466
|
+
|
|
467
|
+
- name: Check coverage threshold
|
|
468
|
+
run: |
|
|
469
|
+
COVERAGE=$(node -e "console.log(require('./coverage/coverage-summary.json').total.lines.pct)")
|
|
470
|
+
if (( $(echo "$COVERAGE < 80" | bc -l) )); then
|
|
471
|
+
echo "Coverage $COVERAGE% is below 80% threshold"
|
|
472
|
+
exit 1
|
|
473
|
+
fi
|
|
474
|
+
|
|
475
|
+
- name: Upload to Codecov
|
|
476
|
+
uses: codecov/codecov-action@v3
|
|
477
|
+
with:
|
|
478
|
+
files: ./coverage/lcov.info
|
|
479
|
+
fail_ci_if_error: true
|
|
480
|
+
|
|
481
|
+
- name: Comment PR with coverage
|
|
482
|
+
uses: romeovs/lcov-reporter-action@v0.3.1
|
|
483
|
+
with:
|
|
484
|
+
lcov-file: ./coverage/lcov.info
|
|
485
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
## Related Commands
|
|
489
|
+
|
|
490
|
+
- `/test:setup` - Setup testing framework
|
|
491
|
+
- `/lint:coverage` - Check code quality metrics
|
|
492
|
+
- `/ci:setup` - Configure CI/CD pipeline
|
|
493
|
+
|
|
494
|
+
## Troubleshooting
|
|
495
|
+
|
|
496
|
+
### Common Issues
|
|
497
|
+
|
|
498
|
+
**Issue**: Coverage report not generated
|
|
499
|
+
**Solution**: Ensure coverage provider is installed (`@vitest/coverage-v8` or `jest`)
|
|
500
|
+
|
|
501
|
+
**Issue**: Coverage shows 0% for all files
|
|
502
|
+
**Solution**: Check that source files are included in coverage config
|
|
503
|
+
|
|
504
|
+
**Issue**: HTML report not opening
|
|
505
|
+
**Solution**: Manually navigate to `coverage/index.html` in browser
|
|
506
|
+
|
|
507
|
+
## Support
|
|
508
|
+
|
|
509
|
+
For issues or questions:
|
|
510
|
+
- Review coverage documentation via Context7
|
|
511
|
+
- Check `coverage/index.html` for visual report
|
|
512
|
+
- Consult frontend-testing-engineer agent
|