claude-autopm 2.8.2 → 2.8.4
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 -637
- package/install/install.js +15 -5
- package/package.json +2 -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/gemini-api-expert.md +880 -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/agents/langgraph-workflow-expert.md +520 -0
- package/packages/plugin-ai/agents/openai-python-expert.md +1087 -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/README.md +55 -0
- package/packages/plugin-cloud/agents/aws-cloud-architect.md +521 -0
- package/packages/plugin-cloud/agents/azure-cloud-architect.md +436 -0
- package/packages/plugin-cloud/agents/gcp-cloud-architect.md +385 -0
- package/packages/plugin-cloud/agents/gcp-cloud-functions-engineer.md +306 -0
- package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
- package/packages/plugin-cloud/agents/kubernetes-orchestrator.md +566 -0
- package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
- package/packages/plugin-cloud/agents/terraform-infrastructure-expert.md +454 -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/commands/infra-deploy.md +38 -0
- package/packages/plugin-cloud/commands/k8s-deploy.md +37 -0
- package/packages/plugin-cloud/commands/ssh-security.md +65 -0
- package/packages/plugin-cloud/commands/traefik-setup.md +65 -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/rules/infrastructure-pipeline.md +128 -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/agents/core/agent-manager.md +296 -0
- package/packages/plugin-core/agents/core/code-analyzer.md +131 -0
- package/packages/plugin-core/agents/core/file-analyzer.md +162 -0
- package/packages/plugin-core/agents/core/test-runner.md +200 -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/ai-integration-patterns.md +219 -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/performance-guidelines.md +403 -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/packages/plugin-databases/agents/README.md +50 -0
- package/packages/plugin-databases/agents/bigquery-expert.md +401 -0
- package/packages/plugin-databases/agents/cosmosdb-expert.md +375 -0
- package/packages/plugin-databases/agents/mongodb-expert.md +407 -0
- package/packages/plugin-databases/agents/postgresql-expert.md +329 -0
- package/packages/plugin-databases/agents/redis-expert.md +74 -0
- 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/packages/plugin-devops/agents/README.md +52 -0
- package/packages/plugin-devops/agents/azure-devops-specialist.md +308 -0
- package/packages/plugin-devops/agents/docker-containerization-expert.md +298 -0
- package/packages/plugin-devops/agents/github-operations-specialist.md +335 -0
- package/packages/plugin-devops/agents/mcp-context-manager.md +319 -0
- package/packages/plugin-devops/agents/observability-engineer.md +574 -0
- package/packages/plugin-devops/agents/ssh-operations-expert.md +1093 -0
- package/packages/plugin-devops/agents/traefik-proxy-expert.md +444 -0
- 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/commands/workflow-create.md +42 -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/ci-cd-kubernetes-strategy.md +25 -0
- package/packages/plugin-devops/rules/devops-troubleshooting-playbook.md +450 -0
- package/packages/plugin-devops/rules/docker-first-development.md +404 -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/packages/plugin-frameworks/agents/README.md +64 -0
- package/packages/plugin-frameworks/agents/e2e-test-engineer.md +579 -0
- package/packages/plugin-frameworks/agents/nats-messaging-expert.md +254 -0
- package/packages/plugin-frameworks/agents/react-frontend-engineer.md +393 -0
- package/packages/plugin-frameworks/agents/react-ui-expert.md +226 -0
- package/packages/plugin-frameworks/agents/tailwindcss-expert.md +1021 -0
- package/packages/plugin-frameworks/agents/ux-design-expert.md +244 -0
- package/packages/plugin-frameworks/commands/app-scaffold.md +50 -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/commands/tailwind-system.md +64 -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/rules/ui-development-standards.md +281 -0
- package/packages/plugin-frameworks/rules/ui-framework-rules.md +151 -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/agents/README.md +50 -0
- package/packages/plugin-languages/agents/bash-scripting-expert.md +541 -0
- package/packages/plugin-languages/agents/javascript-frontend-engineer.md +197 -0
- package/packages/plugin-languages/agents/nodejs-backend-engineer.md +226 -0
- package/packages/plugin-languages/agents/python-backend-engineer.md +214 -0
- package/packages/plugin-languages/agents/python-backend-expert.md +289 -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/azure/COMMANDS.md +107 -0
- package/packages/plugin-pm/commands/azure/COMMAND_MAPPING.md +252 -0
- package/packages/plugin-pm/commands/azure/INTEGRATION_FIX.md +103 -0
- package/packages/plugin-pm/commands/azure/README.md +246 -0
- package/packages/plugin-pm/commands/azure/active-work.md +198 -0
- package/packages/plugin-pm/commands/azure/aliases.md +143 -0
- package/packages/plugin-pm/commands/azure/blocked-items.md +287 -0
- package/packages/plugin-pm/commands/azure/clean.md +93 -0
- package/packages/plugin-pm/commands/azure/docs-query.md +48 -0
- package/packages/plugin-pm/commands/azure/feature-decompose.md +380 -0
- package/packages/plugin-pm/commands/azure/feature-list.md +61 -0
- package/packages/plugin-pm/commands/azure/feature-new.md +115 -0
- package/packages/plugin-pm/commands/azure/feature-show.md +205 -0
- package/packages/plugin-pm/commands/azure/feature-start.md +130 -0
- package/packages/plugin-pm/commands/azure/fix-integration-example.md +93 -0
- package/packages/plugin-pm/commands/azure/help.md +150 -0
- package/packages/plugin-pm/commands/azure/import-us.md +269 -0
- package/packages/plugin-pm/commands/azure/init.md +211 -0
- package/packages/plugin-pm/commands/azure/next-task.md +262 -0
- package/packages/plugin-pm/commands/azure/search.md +160 -0
- package/packages/plugin-pm/commands/azure/sprint-status.md +235 -0
- package/packages/plugin-pm/commands/azure/standup.md +260 -0
- package/packages/plugin-pm/commands/azure/sync-all.md +99 -0
- package/packages/plugin-pm/commands/azure/task-analyze.md +186 -0
- package/packages/plugin-pm/commands/azure/task-close.md +329 -0
- package/packages/plugin-pm/commands/azure/task-edit.md +145 -0
- package/packages/plugin-pm/commands/azure/task-list.md +263 -0
- package/packages/plugin-pm/commands/azure/task-new.md +84 -0
- package/packages/plugin-pm/commands/azure/task-reopen.md +79 -0
- package/packages/plugin-pm/commands/azure/task-show.md +126 -0
- package/packages/plugin-pm/commands/azure/task-start.md +301 -0
- package/packages/plugin-pm/commands/azure/task-status.md +65 -0
- package/packages/plugin-pm/commands/azure/task-sync.md +67 -0
- package/packages/plugin-pm/commands/azure/us-edit.md +164 -0
- package/packages/plugin-pm/commands/azure/us-list.md +202 -0
- package/packages/plugin-pm/commands/azure/us-new.md +265 -0
- package/packages/plugin-pm/commands/azure/us-parse.md +253 -0
- package/packages/plugin-pm/commands/azure/us-show.md +188 -0
- package/packages/plugin-pm/commands/azure/us-status.md +320 -0
- package/packages/plugin-pm/commands/azure/validate.md +86 -0
- package/packages/plugin-pm/commands/azure/work-item-sync.md +47 -0
- package/packages/plugin-pm/commands/blocked.md +28 -0
- package/packages/plugin-pm/commands/clean.md +119 -0
- package/packages/plugin-pm/commands/context-create.md +136 -0
- package/packages/plugin-pm/commands/context-prime.md +170 -0
- package/packages/plugin-pm/commands/context-update.md +292 -0
- package/packages/plugin-pm/commands/context.md +28 -0
- package/packages/plugin-pm/commands/epic-close.md +86 -0
- package/packages/plugin-pm/commands/epic-decompose.md +370 -0
- package/packages/plugin-pm/commands/epic-edit.md +83 -0
- package/packages/plugin-pm/commands/epic-list.md +30 -0
- package/packages/plugin-pm/commands/epic-merge.md +222 -0
- package/packages/plugin-pm/commands/epic-oneshot.md +119 -0
- package/packages/plugin-pm/commands/epic-refresh.md +119 -0
- package/packages/plugin-pm/commands/epic-show.md +28 -0
- package/packages/plugin-pm/commands/epic-split.md +120 -0
- package/packages/plugin-pm/commands/epic-start.md +195 -0
- package/packages/plugin-pm/commands/epic-status.md +28 -0
- package/packages/plugin-pm/commands/epic-sync-modular.md +338 -0
- package/packages/plugin-pm/commands/epic-sync-original.md +473 -0
- package/packages/plugin-pm/commands/epic-sync.md +486 -0
- package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
- package/packages/plugin-pm/commands/help.md +28 -0
- package/packages/plugin-pm/commands/import.md +115 -0
- package/packages/plugin-pm/commands/in-progress.md +28 -0
- package/packages/plugin-pm/commands/init.md +28 -0
- package/packages/plugin-pm/commands/issue-analyze.md +202 -0
- package/packages/plugin-pm/commands/issue-close.md +119 -0
- package/packages/plugin-pm/commands/issue-edit.md +93 -0
- package/packages/plugin-pm/commands/issue-reopen.md +87 -0
- package/packages/plugin-pm/commands/issue-show.md +41 -0
- package/packages/plugin-pm/commands/issue-start.md +234 -0
- package/packages/plugin-pm/commands/issue-status.md +95 -0
- package/packages/plugin-pm/commands/issue-sync.md +411 -0
- package/packages/plugin-pm/commands/next.md +28 -0
- package/packages/plugin-pm/commands/prd-edit.md +82 -0
- package/packages/plugin-pm/commands/prd-list.md +28 -0
- package/packages/plugin-pm/commands/prd-new.md +55 -0
- package/packages/plugin-pm/commands/prd-parse.md +42 -0
- package/packages/plugin-pm/commands/prd-status.md +28 -0
- package/packages/plugin-pm/commands/search.md +28 -0
- package/packages/plugin-pm/commands/standup.md +28 -0
- package/packages/plugin-pm/commands/status.md +28 -0
- package/packages/plugin-pm/commands/sync.md +99 -0
- package/packages/plugin-pm/commands/test-reference-update.md +151 -0
- package/packages/plugin-pm/commands/validate.md +28 -0
- package/packages/plugin-pm/commands/what-next.md +28 -0
- package/packages/plugin-pm/package.json +57 -0
- package/packages/plugin-pm/plugin.json +503 -0
- package/packages/plugin-pm/scripts/pm/analytics.js +425 -0
- package/packages/plugin-pm/scripts/pm/blocked.js +164 -0
- package/packages/plugin-pm/scripts/pm/blocked.sh +78 -0
- package/packages/plugin-pm/scripts/pm/clean.js +464 -0
- package/packages/plugin-pm/scripts/pm/context-create.js +216 -0
- package/packages/plugin-pm/scripts/pm/context-prime.js +335 -0
- package/packages/plugin-pm/scripts/pm/context-update.js +344 -0
- package/packages/plugin-pm/scripts/pm/context.js +338 -0
- package/packages/plugin-pm/scripts/pm/epic-close.js +347 -0
- package/packages/plugin-pm/scripts/pm/epic-edit.js +382 -0
- package/packages/plugin-pm/scripts/pm/epic-list.js +273 -0
- package/packages/plugin-pm/scripts/pm/epic-list.sh +109 -0
- package/packages/plugin-pm/scripts/pm/epic-show.js +291 -0
- package/packages/plugin-pm/scripts/pm/epic-show.sh +105 -0
- package/packages/plugin-pm/scripts/pm/epic-split.js +522 -0
- package/packages/plugin-pm/scripts/pm/epic-start/epic-start.js +183 -0
- package/packages/plugin-pm/scripts/pm/epic-start/epic-start.sh +94 -0
- package/packages/plugin-pm/scripts/pm/epic-status.js +291 -0
- package/packages/plugin-pm/scripts/pm/epic-status.sh +104 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/README.md +208 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/create-epic-issue.sh +77 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/create-task-issues.sh +86 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/update-epic-file.sh +79 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/update-references.sh +89 -0
- package/packages/plugin-pm/scripts/pm/epic-sync.sh +137 -0
- package/packages/plugin-pm/scripts/pm/help.js +92 -0
- package/packages/plugin-pm/scripts/pm/help.sh +90 -0
- package/packages/plugin-pm/scripts/pm/in-progress.js +178 -0
- package/packages/plugin-pm/scripts/pm/in-progress.sh +93 -0
- package/packages/plugin-pm/scripts/pm/init.js +321 -0
- package/packages/plugin-pm/scripts/pm/init.sh +178 -0
- package/packages/plugin-pm/scripts/pm/issue-close.js +232 -0
- package/packages/plugin-pm/scripts/pm/issue-edit.js +310 -0
- package/packages/plugin-pm/scripts/pm/issue-show.js +272 -0
- package/packages/plugin-pm/scripts/pm/issue-start.js +181 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/format-comment.sh +468 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/gather-updates.sh +460 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/post-comment.sh +330 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/preflight-validation.sh +348 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/update-frontmatter.sh +387 -0
- package/packages/plugin-pm/scripts/pm/lib/README.md +85 -0
- package/packages/plugin-pm/scripts/pm/lib/epic-discovery.js +119 -0
- package/packages/plugin-pm/scripts/pm/lib/logger.js +78 -0
- package/packages/plugin-pm/scripts/pm/next.js +189 -0
- package/packages/plugin-pm/scripts/pm/next.sh +72 -0
- package/packages/plugin-pm/scripts/pm/optimize.js +407 -0
- package/packages/plugin-pm/scripts/pm/pr-create.js +337 -0
- package/packages/plugin-pm/scripts/pm/pr-list.js +257 -0
- package/packages/plugin-pm/scripts/pm/prd-list.js +242 -0
- package/packages/plugin-pm/scripts/pm/prd-list.sh +103 -0
- package/packages/plugin-pm/scripts/pm/prd-new.js +684 -0
- package/packages/plugin-pm/scripts/pm/prd-parse.js +547 -0
- package/packages/plugin-pm/scripts/pm/prd-status.js +152 -0
- package/packages/plugin-pm/scripts/pm/prd-status.sh +63 -0
- package/packages/plugin-pm/scripts/pm/release.js +460 -0
- package/packages/plugin-pm/scripts/pm/search.js +192 -0
- package/packages/plugin-pm/scripts/pm/search.sh +89 -0
- package/packages/plugin-pm/scripts/pm/standup.js +362 -0
- package/packages/plugin-pm/scripts/pm/standup.sh +95 -0
- package/packages/plugin-pm/scripts/pm/status.js +148 -0
- package/packages/plugin-pm/scripts/pm/status.sh +59 -0
- package/packages/plugin-pm/scripts/pm/sync-batch.js +337 -0
- package/packages/plugin-pm/scripts/pm/sync.js +343 -0
- package/packages/plugin-pm/scripts/pm/template-list.js +141 -0
- package/packages/plugin-pm/scripts/pm/template-new.js +366 -0
- package/packages/plugin-pm/scripts/pm/validate.js +274 -0
- package/packages/plugin-pm/scripts/pm/validate.sh +106 -0
- package/packages/plugin-pm/scripts/pm/what-next.js +660 -0
- package/packages/plugin-testing/README.md +401 -0
- package/packages/plugin-testing/agents/frontend-testing-engineer.md +768 -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
|
@@ -0,0 +1,612 @@
|
|
|
1
|
+
# db:optimize
|
|
2
|
+
|
|
3
|
+
Optimize database performance with Context7-verified best practices for PostgreSQL, MongoDB, and Redis.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
Comprehensive database optimization covering:
|
|
8
|
+
- **PostgreSQL**: Index optimization, query tuning, VACUUM operations, partitioning
|
|
9
|
+
- **MongoDB**: Aggregation pipeline optimization, index strategies, sharding analysis
|
|
10
|
+
- **Redis**: Cache hit ratio, memory optimization, pipeline usage, eviction policies
|
|
11
|
+
|
|
12
|
+
## Required Documentation Access
|
|
13
|
+
|
|
14
|
+
**MANDATORY:** Before optimization, query Context7 for database-specific best practices:
|
|
15
|
+
|
|
16
|
+
**Documentation Queries:**
|
|
17
|
+
- `mcp://context7/postgresql/performance` - PostgreSQL performance tuning
|
|
18
|
+
- `mcp://context7/postgresql/indexing` - PostgreSQL indexing strategies
|
|
19
|
+
- `mcp://context7/mongodb/aggregation` - MongoDB aggregation optimization
|
|
20
|
+
- `mcp://context7/mongodb/indexing` - MongoDB index best practices
|
|
21
|
+
- `mcp://context7/redis/caching` - Redis caching patterns
|
|
22
|
+
- `mcp://context7/redis/performance` - Redis performance optimization
|
|
23
|
+
|
|
24
|
+
**Why This is Required:**
|
|
25
|
+
- Ensures optimization follows official database documentation
|
|
26
|
+
- Applies latest performance best practices
|
|
27
|
+
- Prevents anti-patterns and common mistakes
|
|
28
|
+
- Validates optimization strategies
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
/db:optimize [options]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Options
|
|
37
|
+
|
|
38
|
+
- `--database <postgres|mongodb|redis|all>` - Database to optimize (default: all)
|
|
39
|
+
- `--scope <indexes|queries|cache|storage|all>` - Optimization scope (default: all)
|
|
40
|
+
- `--analyze-only` - Analyze without applying changes
|
|
41
|
+
- `--output <path>` - Generate optimization report
|
|
42
|
+
- `--auto-apply` - Automatically apply safe optimizations
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
|
|
46
|
+
### Optimize All Databases
|
|
47
|
+
```bash
|
|
48
|
+
/db:optimize
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### PostgreSQL Index Optimization
|
|
52
|
+
```bash
|
|
53
|
+
/db:optimize --database postgres --scope indexes
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### MongoDB Aggregation Analysis
|
|
57
|
+
```bash
|
|
58
|
+
/db:optimize --database mongodb --analyze-only --output mongodb-report.md
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Redis Cache Optimization with Auto-Apply
|
|
62
|
+
```bash
|
|
63
|
+
/db:optimize --database redis --scope cache --auto-apply
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## PostgreSQL Optimization
|
|
67
|
+
|
|
68
|
+
### Pattern from Context7 (/websites/postgresql)
|
|
69
|
+
|
|
70
|
+
#### 1. Index Analysis and Optimization
|
|
71
|
+
|
|
72
|
+
**Unused Index Detection:**
|
|
73
|
+
```sql
|
|
74
|
+
-- Find unused indexes
|
|
75
|
+
SELECT
|
|
76
|
+
schemaname,
|
|
77
|
+
tablename,
|
|
78
|
+
indexname,
|
|
79
|
+
idx_scan,
|
|
80
|
+
idx_tup_read,
|
|
81
|
+
idx_tup_fetch,
|
|
82
|
+
pg_size_pretty(pg_relation_size(indexrelid)) as index_size
|
|
83
|
+
FROM pg_stat_user_indexes
|
|
84
|
+
WHERE schemaname = 'public'
|
|
85
|
+
AND idx_scan = 0
|
|
86
|
+
ORDER BY pg_relation_size(indexrelid) DESC;
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Index Hit Ratio:**
|
|
90
|
+
```sql
|
|
91
|
+
-- Check index hit ratio (should be > 95%)
|
|
92
|
+
SELECT
|
|
93
|
+
sum(idx_blks_hit) / nullif(sum(idx_blks_hit + idx_blks_read), 0) * 100
|
|
94
|
+
AS index_hit_ratio
|
|
95
|
+
FROM pg_statio_user_indexes;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Missing Foreign Key Indexes:**
|
|
99
|
+
```sql
|
|
100
|
+
-- Find foreign keys without indexes
|
|
101
|
+
SELECT
|
|
102
|
+
tc.table_schema,
|
|
103
|
+
tc.table_name,
|
|
104
|
+
kcu.column_name,
|
|
105
|
+
ccu.table_name AS foreign_table_name,
|
|
106
|
+
ccu.column_name AS foreign_column_name
|
|
107
|
+
FROM information_schema.table_constraints AS tc
|
|
108
|
+
JOIN information_schema.key_column_usage AS kcu
|
|
109
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
110
|
+
JOIN information_schema.constraint_column_usage AS ccu
|
|
111
|
+
ON ccu.constraint_name = tc.constraint_name
|
|
112
|
+
WHERE tc.constraint_type = 'FOREIGN KEY'
|
|
113
|
+
AND NOT EXISTS (
|
|
114
|
+
SELECT 1
|
|
115
|
+
FROM pg_indexes
|
|
116
|
+
WHERE tablename = tc.table_name
|
|
117
|
+
AND indexdef LIKE '%' || kcu.column_name || '%'
|
|
118
|
+
);
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### 2. Query Optimization
|
|
122
|
+
|
|
123
|
+
**Slow Query Analysis:**
|
|
124
|
+
```sql
|
|
125
|
+
-- Enable slow query logging
|
|
126
|
+
ALTER SYSTEM SET log_min_duration_statement = 1000; -- 1 second
|
|
127
|
+
SELECT pg_reload_conf();
|
|
128
|
+
|
|
129
|
+
-- Most time-consuming queries
|
|
130
|
+
SELECT
|
|
131
|
+
userid::regrole,
|
|
132
|
+
dbid,
|
|
133
|
+
query,
|
|
134
|
+
calls,
|
|
135
|
+
total_time,
|
|
136
|
+
mean_time,
|
|
137
|
+
min_time,
|
|
138
|
+
max_time
|
|
139
|
+
FROM pg_stat_statements
|
|
140
|
+
ORDER BY total_time DESC
|
|
141
|
+
LIMIT 20;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**EXPLAIN ANALYZE Pattern:**
|
|
145
|
+
```sql
|
|
146
|
+
-- Always use EXPLAIN ANALYZE for query optimization
|
|
147
|
+
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
|
|
148
|
+
SELECT *
|
|
149
|
+
FROM orders o
|
|
150
|
+
JOIN customers c ON o.customer_id = c.id
|
|
151
|
+
WHERE o.order_date >= NOW() - INTERVAL '30 days';
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
#### 3. Index Strategies
|
|
155
|
+
|
|
156
|
+
**Composite Indexes (Context7 Pattern):**
|
|
157
|
+
```sql
|
|
158
|
+
-- Multi-column index for multi-condition queries
|
|
159
|
+
CREATE INDEX idx_orders_customer_date
|
|
160
|
+
ON orders(customer_id, order_date DESC);
|
|
161
|
+
|
|
162
|
+
-- Partial index for subset of rows
|
|
163
|
+
CREATE INDEX idx_orders_pending
|
|
164
|
+
ON orders(order_date)
|
|
165
|
+
WHERE status = 'pending';
|
|
166
|
+
|
|
167
|
+
-- Expression index for computed values
|
|
168
|
+
CREATE INDEX idx_users_lower_email
|
|
169
|
+
ON users(lower(email));
|
|
170
|
+
|
|
171
|
+
-- Covering index with INCLUDE clause (PostgreSQL 11+)
|
|
172
|
+
CREATE INDEX idx_orders_customer_covering
|
|
173
|
+
ON orders(customer_id)
|
|
174
|
+
INCLUDE (order_date, amount, status);
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**GIN Indexes for Full-Text Search:**
|
|
178
|
+
```sql
|
|
179
|
+
-- Full-text search index
|
|
180
|
+
CREATE INDEX idx_articles_search
|
|
181
|
+
ON articles
|
|
182
|
+
USING GIN(to_tsvector('english', title || ' ' || content));
|
|
183
|
+
|
|
184
|
+
-- JSONB path operators index
|
|
185
|
+
CREATE INDEX idx_api_logs_response
|
|
186
|
+
ON api_logs
|
|
187
|
+
USING GIN(response jsonb_path_ops);
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**BRIN Indexes for Large Tables:**
|
|
191
|
+
```sql
|
|
192
|
+
-- BRIN for naturally ordered large tables
|
|
193
|
+
CREATE INDEX idx_logs_timestamp
|
|
194
|
+
ON logs
|
|
195
|
+
USING BRIN(timestamp);
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
#### 4. VACUUM and Maintenance
|
|
199
|
+
|
|
200
|
+
```sql
|
|
201
|
+
-- Analyze table statistics
|
|
202
|
+
ANALYZE your_table;
|
|
203
|
+
|
|
204
|
+
-- Vacuum with options
|
|
205
|
+
VACUUM (VERBOSE, ANALYZE) your_table;
|
|
206
|
+
|
|
207
|
+
-- Auto-vacuum tuning
|
|
208
|
+
ALTER TABLE large_table
|
|
209
|
+
SET (autovacuum_vacuum_scale_factor = 0.05);
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## MongoDB Optimization
|
|
213
|
+
|
|
214
|
+
### Pattern from Context7 (/mongodb/mongo)
|
|
215
|
+
|
|
216
|
+
#### 1. Aggregation Pipeline Optimization
|
|
217
|
+
|
|
218
|
+
**DISTINCT_SCAN Optimization:**
|
|
219
|
+
```javascript
|
|
220
|
+
// Optimized aggregation using index
|
|
221
|
+
db.collection.aggregate([
|
|
222
|
+
{
|
|
223
|
+
$group: {
|
|
224
|
+
_id: "$a",
|
|
225
|
+
firstField: { $first: "$b" }
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
])
|
|
229
|
+
|
|
230
|
+
// Execution plan shows DISTINCT_SCAN on index a_1_b_1
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Index Selection Strategy:**
|
|
234
|
+
```javascript
|
|
235
|
+
// Create compound index for aggregation
|
|
236
|
+
db.collection.createIndex({ a: 1, b: 1 })
|
|
237
|
+
|
|
238
|
+
// Aggregation with sort before group (uses index efficiently)
|
|
239
|
+
db.collection.aggregate([
|
|
240
|
+
{ $sort: { a: 1, b: 1 } },
|
|
241
|
+
{
|
|
242
|
+
$group: {
|
|
243
|
+
_id: "$a",
|
|
244
|
+
firstField: { $first: "$b" }
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
])
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
#### 2. Index Optimization
|
|
251
|
+
|
|
252
|
+
**Covered Query Pattern:**
|
|
253
|
+
```javascript
|
|
254
|
+
// Index covers all query fields
|
|
255
|
+
db.collection.createIndex({ field1: 1, field2: 1, field3: 1 })
|
|
256
|
+
|
|
257
|
+
// Query uses index-only scan (PROJECTION_COVERED)
|
|
258
|
+
db.collection.find(
|
|
259
|
+
{ field1: value },
|
|
260
|
+
{ _id: 0, field1: 1, field2: 1, field3: 1 }
|
|
261
|
+
)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**Compound Index Best Practices:**
|
|
265
|
+
```javascript
|
|
266
|
+
// ESR Rule: Equality, Sort, Range
|
|
267
|
+
db.orders.createIndex({
|
|
268
|
+
customer_id: 1, // Equality
|
|
269
|
+
order_date: -1, // Sort
|
|
270
|
+
amount: 1 // Range
|
|
271
|
+
})
|
|
272
|
+
|
|
273
|
+
// Optimal query
|
|
274
|
+
db.orders.find({
|
|
275
|
+
customer_id: 123,
|
|
276
|
+
amount: { $gt: 100 }
|
|
277
|
+
}).sort({ order_date: -1 })
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
#### 3. Aggregation Analysis
|
|
281
|
+
|
|
282
|
+
**Using explain() for Aggregation:**
|
|
283
|
+
```javascript
|
|
284
|
+
// Analyze aggregation pipeline
|
|
285
|
+
db.collection.explain("executionStats").aggregate([
|
|
286
|
+
{ $match: { b: 3 } },
|
|
287
|
+
{ $group: { _id: "$a" } }
|
|
288
|
+
])
|
|
289
|
+
|
|
290
|
+
// Look for:
|
|
291
|
+
// - IXSCAN (index scan) vs COLLSCAN (collection scan)
|
|
292
|
+
// - Index usage in $match stage
|
|
293
|
+
// - DISTINCT_SCAN for efficient grouping
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
#### 4. Sharding Optimization
|
|
297
|
+
|
|
298
|
+
**Shard Key Selection:**
|
|
299
|
+
```javascript
|
|
300
|
+
// Enable sharding on database
|
|
301
|
+
sh.enableSharding("mydb")
|
|
302
|
+
|
|
303
|
+
// Choose shard key based on access patterns
|
|
304
|
+
sh.shardCollection("mydb.collection", {
|
|
305
|
+
user_id: 1,
|
|
306
|
+
created_at: 1
|
|
307
|
+
})
|
|
308
|
+
|
|
309
|
+
// Check shard distribution
|
|
310
|
+
db.collection.getShardDistribution()
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## Redis Optimization
|
|
314
|
+
|
|
315
|
+
### Pattern from Context7 (/redis/redis-py)
|
|
316
|
+
|
|
317
|
+
#### 1. Pipeline Usage for Performance
|
|
318
|
+
|
|
319
|
+
**Batch Operations Pattern:**
|
|
320
|
+
```python
|
|
321
|
+
import redis
|
|
322
|
+
from datetime import datetime
|
|
323
|
+
|
|
324
|
+
r = redis.Redis(host='localhost', port=6379)
|
|
325
|
+
|
|
326
|
+
# WITHOUT Pipeline - SLOW
|
|
327
|
+
start = datetime.now()
|
|
328
|
+
for i in range(10000):
|
|
329
|
+
r.incr("counter")
|
|
330
|
+
time_without_pipeline = (datetime.now() - start).total_seconds()
|
|
331
|
+
# Time: ~5 seconds
|
|
332
|
+
|
|
333
|
+
# WITH Pipeline - FAST
|
|
334
|
+
start = datetime.now()
|
|
335
|
+
pipe = r.pipeline()
|
|
336
|
+
for i in range(10000):
|
|
337
|
+
pipe.incr("counter")
|
|
338
|
+
pipe.execute()
|
|
339
|
+
time_with_pipeline = (datetime.now() - start).total_seconds()
|
|
340
|
+
# Time: ~0.1 seconds (50x faster!)
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
**Advanced Builder Pattern:**
|
|
344
|
+
```python
|
|
345
|
+
from dataclasses import dataclass
|
|
346
|
+
|
|
347
|
+
@dataclass
|
|
348
|
+
class User:
|
|
349
|
+
email: str
|
|
350
|
+
username: str = None
|
|
351
|
+
|
|
352
|
+
class RedisRepository:
|
|
353
|
+
def __init__(self):
|
|
354
|
+
self.pipeline = r.pipeline()
|
|
355
|
+
|
|
356
|
+
def add_user(self, user: User):
|
|
357
|
+
if not user.username:
|
|
358
|
+
user.username = user.email.split("@")[0]
|
|
359
|
+
self.pipeline.hset(
|
|
360
|
+
f"user:{user.username}",
|
|
361
|
+
mapping={
|
|
362
|
+
"username": user.username,
|
|
363
|
+
"email": user.email
|
|
364
|
+
}
|
|
365
|
+
)
|
|
366
|
+
return self
|
|
367
|
+
|
|
368
|
+
def execute(self):
|
|
369
|
+
return self.pipeline.execute()
|
|
370
|
+
|
|
371
|
+
# Usage
|
|
372
|
+
pipe = RedisRepository()
|
|
373
|
+
results = (pipe
|
|
374
|
+
.add_user(User(email="alice@example.com"))
|
|
375
|
+
.add_user(User(email="bob@example.com"))
|
|
376
|
+
.execute()
|
|
377
|
+
)
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
#### 2. Client-Side Caching (RESP3)
|
|
381
|
+
|
|
382
|
+
**Enable Caching Pattern:**
|
|
383
|
+
```python
|
|
384
|
+
import redis
|
|
385
|
+
from redis.cache import CacheConfig
|
|
386
|
+
|
|
387
|
+
# Enable client-side caching
|
|
388
|
+
r = redis.Redis(
|
|
389
|
+
host='localhost',
|
|
390
|
+
port=6379,
|
|
391
|
+
protocol=3,
|
|
392
|
+
cache_config=CacheConfig()
|
|
393
|
+
)
|
|
394
|
+
|
|
395
|
+
# Cached reads (significantly faster)
|
|
396
|
+
value = r.get("frequently_accessed_key")
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
#### 3. Pub/Sub Optimization
|
|
400
|
+
|
|
401
|
+
**Efficient Pattern Subscription:**
|
|
402
|
+
```python
|
|
403
|
+
import asyncio
|
|
404
|
+
import redis.asyncio as redis
|
|
405
|
+
|
|
406
|
+
async def reader(channel):
|
|
407
|
+
while True:
|
|
408
|
+
message = await channel.get_message(
|
|
409
|
+
ignore_subscribe_messages=True,
|
|
410
|
+
timeout=None
|
|
411
|
+
)
|
|
412
|
+
if message:
|
|
413
|
+
# Process message
|
|
414
|
+
pass
|
|
415
|
+
|
|
416
|
+
r = redis.from_url("redis://localhost")
|
|
417
|
+
async with r.pubsub() as pubsub:
|
|
418
|
+
# Subscribe to pattern
|
|
419
|
+
await pubsub.psubscribe("channel:*")
|
|
420
|
+
|
|
421
|
+
# Create reader task
|
|
422
|
+
await reader(pubsub)
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
#### 4. Memory Optimization
|
|
426
|
+
|
|
427
|
+
**Eviction Policies:**
|
|
428
|
+
```bash
|
|
429
|
+
# Set eviction policy
|
|
430
|
+
CONFIG SET maxmemory-policy allkeys-lru
|
|
431
|
+
|
|
432
|
+
# Eviction policies:
|
|
433
|
+
# - allkeys-lru: Evict least recently used keys
|
|
434
|
+
# - allkeys-lfu: Evict least frequently used keys
|
|
435
|
+
# - volatile-lru: Evict LRU from keys with TTL
|
|
436
|
+
# - volatile-ttl: Evict keys with shortest TTL
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
**Memory Analysis:**
|
|
440
|
+
```bash
|
|
441
|
+
# Check memory usage
|
|
442
|
+
INFO memory
|
|
443
|
+
|
|
444
|
+
# Analyze key memory usage
|
|
445
|
+
MEMORY USAGE key_name
|
|
446
|
+
|
|
447
|
+
# Find big keys
|
|
448
|
+
redis-cli --bigkeys
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
## Optimization Output
|
|
452
|
+
|
|
453
|
+
### Console Output
|
|
454
|
+
|
|
455
|
+
```
|
|
456
|
+
🔍 Database Optimization Analysis
|
|
457
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
458
|
+
|
|
459
|
+
PostgreSQL Optimization
|
|
460
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
461
|
+
|
|
462
|
+
📊 Index Analysis:
|
|
463
|
+
✅ Index hit ratio: 98.5% (excellent)
|
|
464
|
+
⚠️ Found 3 unused indexes (120 MB total)
|
|
465
|
+
❌ Missing index on orders.customer_id (FK without index)
|
|
466
|
+
|
|
467
|
+
🔍 Query Performance:
|
|
468
|
+
⚠️ 5 slow queries detected (> 1 second)
|
|
469
|
+
💡 Top query: SELECT from orders JOIN customers (avg 2.3s)
|
|
470
|
+
|
|
471
|
+
💰 Storage Optimization:
|
|
472
|
+
⚠️ Table bloat detected: users table (45% bloat)
|
|
473
|
+
💡 Recommendation: VACUUM FULL users
|
|
474
|
+
|
|
475
|
+
Optimization Opportunities:
|
|
476
|
+
1. Drop 3 unused indexes → Save 120 MB
|
|
477
|
+
2. Create index on orders.customer_id → 80% faster queries
|
|
478
|
+
3. VACUUM users table → Reclaim 200 MB
|
|
479
|
+
4. Optimize top 5 slow queries → 50% performance improvement
|
|
480
|
+
|
|
481
|
+
MongoDB Optimization
|
|
482
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
483
|
+
|
|
484
|
+
📊 Index Analysis:
|
|
485
|
+
✅ Using IXSCAN for 95% of queries
|
|
486
|
+
⚠️ 3 queries using COLLSCAN (full collection scan)
|
|
487
|
+
💡 Create compound index: { user_id: 1, created_at: -1 }
|
|
488
|
+
|
|
489
|
+
🔄 Aggregation Pipelines:
|
|
490
|
+
✅ Using DISTINCT_SCAN for group operations
|
|
491
|
+
⚠️ Pipeline #3 not using index (stages in wrong order)
|
|
492
|
+
💡 Move $match before $group
|
|
493
|
+
|
|
494
|
+
💾 Sharding:
|
|
495
|
+
✅ Shard distribution: 33% / 34% / 33% (balanced)
|
|
496
|
+
✅ Shard key selectivity: High
|
|
497
|
+
|
|
498
|
+
Optimization Opportunities:
|
|
499
|
+
1. Create 2 compound indexes → Eliminate COLLSCAN
|
|
500
|
+
2. Reorder aggregation pipeline → 3x faster
|
|
501
|
+
3. Add partial index for active users → 50 MB savings
|
|
502
|
+
|
|
503
|
+
Redis Optimization
|
|
504
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
505
|
+
|
|
506
|
+
📊 Cache Performance:
|
|
507
|
+
⚠️ Hit ratio: 75% (target: > 95%)
|
|
508
|
+
💡 Increase TTL for frequently accessed keys
|
|
509
|
+
|
|
510
|
+
💾 Memory Usage:
|
|
511
|
+
Current: 2.1 GB / 4 GB (52% used)
|
|
512
|
+
⚠️ 50 keys > 1 MB each
|
|
513
|
+
💡 Use compression or split large values
|
|
514
|
+
|
|
515
|
+
⚡ Performance:
|
|
516
|
+
❌ Not using pipelining for batch operations
|
|
517
|
+
💡 Use pipelines → 50x performance improvement
|
|
518
|
+
|
|
519
|
+
🔄 Eviction Policy:
|
|
520
|
+
Current: allkeys-lru
|
|
521
|
+
✅ Appropriate for cache use case
|
|
522
|
+
|
|
523
|
+
Optimization Opportunities:
|
|
524
|
+
1. Enable pipelining for batch ops → 50x faster
|
|
525
|
+
2. Increase TTL for hot keys → 95%+ hit ratio
|
|
526
|
+
3. Compress large values → 30% memory savings
|
|
527
|
+
4. Enable client-side caching (RESP3) → 10x reads
|
|
528
|
+
|
|
529
|
+
Summary
|
|
530
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
531
|
+
|
|
532
|
+
Total Optimization Opportunities: 10
|
|
533
|
+
|
|
534
|
+
🟢 Auto-Apply Safe: 4 optimizations
|
|
535
|
+
🟡 Review Recommended: 4 optimizations
|
|
536
|
+
🔴 Manual Required: 2 optimizations
|
|
537
|
+
|
|
538
|
+
Estimated Performance Improvement: 3-5x
|
|
539
|
+
Estimated Storage Savings: 450 MB
|
|
540
|
+
|
|
541
|
+
Run with --auto-apply to apply safe optimizations
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
## Implementation
|
|
545
|
+
|
|
546
|
+
This command uses specialized database agents:
|
|
547
|
+
|
|
548
|
+
1. **@postgresql-expert** - PostgreSQL optimization
|
|
549
|
+
2. **@mongodb-expert** - MongoDB optimization
|
|
550
|
+
3. **@redis-expert** - Redis optimization
|
|
551
|
+
|
|
552
|
+
Process:
|
|
553
|
+
1. Query Context7 for database-specific best practices
|
|
554
|
+
2. Analyze database performance metrics
|
|
555
|
+
3. Identify optimization opportunities
|
|
556
|
+
4. Generate recommendations with risk levels
|
|
557
|
+
5. Optionally apply safe optimizations
|
|
558
|
+
6. Generate detailed optimization report
|
|
559
|
+
|
|
560
|
+
## Best Practices Applied
|
|
561
|
+
|
|
562
|
+
**PostgreSQL (from Context7):**
|
|
563
|
+
- Index-only scans with covering indexes
|
|
564
|
+
- Partial indexes for filtered queries
|
|
565
|
+
- BRIN indexes for large sequential tables
|
|
566
|
+
- VACUUM and ANALYZE scheduling
|
|
567
|
+
- Query plan analysis with EXPLAIN
|
|
568
|
+
|
|
569
|
+
**MongoDB (from Context7):**
|
|
570
|
+
- DISTINCT_SCAN for efficient grouping
|
|
571
|
+
- ESR rule for compound indexes
|
|
572
|
+
- Aggregation pipeline stage ordering
|
|
573
|
+
- Shard key selection strategies
|
|
574
|
+
- Index-covered queries
|
|
575
|
+
|
|
576
|
+
**Redis (from Context7):**
|
|
577
|
+
- Pipeline usage for batch operations
|
|
578
|
+
- Client-side caching (RESP3)
|
|
579
|
+
- Eviction policy selection
|
|
580
|
+
- Memory optimization techniques
|
|
581
|
+
- Pub/Sub pattern subscription
|
|
582
|
+
|
|
583
|
+
## Related Commands
|
|
584
|
+
|
|
585
|
+
- `/db:migrate` - Database migration management
|
|
586
|
+
- `/db:backup` - Database backup operations
|
|
587
|
+
- `/db:monitor` - Real-time performance monitoring
|
|
588
|
+
- `/cloud:cost-optimize` - Cloud database cost optimization
|
|
589
|
+
|
|
590
|
+
## Troubleshooting
|
|
591
|
+
|
|
592
|
+
### PostgreSQL Issues
|
|
593
|
+
- Check pg_stat_statements extension is installed
|
|
594
|
+
- Verify slow query logging is enabled
|
|
595
|
+
- Ensure proper permissions for analysis queries
|
|
596
|
+
|
|
597
|
+
### MongoDB Issues
|
|
598
|
+
- Enable profiler: `db.setProfilingLevel(1, { slowms: 100 })`
|
|
599
|
+
- Check shard status: `sh.status()`
|
|
600
|
+
- Verify index usage: `db.collection.getIndexes()`
|
|
601
|
+
|
|
602
|
+
### Redis Issues
|
|
603
|
+
- Check INFO stats for hit/miss ratio
|
|
604
|
+
- Monitor slow log: `SLOWLOG GET 10`
|
|
605
|
+
- Verify memory usage: `INFO memory`
|
|
606
|
+
|
|
607
|
+
## Version History
|
|
608
|
+
|
|
609
|
+
- v2.0.0 - Initial Schema v2.0 release
|
|
610
|
+
- Context7-verified optimization patterns
|
|
611
|
+
- Multi-database support (PostgreSQL, MongoDB, Redis)
|
|
612
|
+
- Auto-apply safe optimizations
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@claudeautopm/plugin-databases",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Complete database plugin with PostgreSQL, MongoDB, Redis, BigQuery, and Cosmos DB experts, database rules, and optimization scripts for ClaudeAutoPM",
|
|
5
|
+
"main": "plugin.json",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"files": [
|
|
8
|
+
"agents/",
|
|
9
|
+
"rules/",
|
|
10
|
+
"scripts/",
|
|
11
|
+
"plugin.json",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
17
|
+
"validate": "node -e \"require('./plugin.json')\" && echo 'plugin.json is valid'"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"claudeautopm",
|
|
21
|
+
"plugin",
|
|
22
|
+
"databases",
|
|
23
|
+
"postgresql",
|
|
24
|
+
"mongodb",
|
|
25
|
+
"redis",
|
|
26
|
+
"bigquery",
|
|
27
|
+
"cosmosdb",
|
|
28
|
+
"sql",
|
|
29
|
+
"nosql",
|
|
30
|
+
"data-warehouse",
|
|
31
|
+
"caching",
|
|
32
|
+
"optimization",
|
|
33
|
+
"performance"
|
|
34
|
+
],
|
|
35
|
+
"author": {
|
|
36
|
+
"name": "ClaudeAutoPM Team",
|
|
37
|
+
"email": "autopm@example.com"
|
|
38
|
+
},
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "git+https://github.com/rafeekpro/ClaudeAutoPM.git",
|
|
43
|
+
"directory": "packages/plugin-databases"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/rafeekpro/ClaudeAutoPM/tree/main/packages/plugin-databases#readme",
|
|
46
|
+
"bugs": {
|
|
47
|
+
"url": "https://github.com/rafeekpro/ClaudeAutoPM/issues"
|
|
48
|
+
},
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=16.0.0",
|
|
51
|
+
"npm": ">=8.0.0"
|
|
52
|
+
},
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"@claudeautopm/plugin-core": "^2.0.0"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public",
|
|
58
|
+
"registry": "https://registry.npmjs.org/"
|
|
59
|
+
}
|
|
60
|
+
}
|