claude-autopm 2.8.2 → 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 -637
- 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,294 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@claudeautopm/plugin-data",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"schemaVersion": "2.0",
|
|
5
|
+
"displayName": "Data Engineering & ML",
|
|
6
|
+
"description": "Data engineering, ETL pipelines, and ML workflow specialists with Airflow, Kedro, LangGraph, Kafka, dbt, and pandas",
|
|
7
|
+
"category": "data",
|
|
8
|
+
"metadata": {
|
|
9
|
+
"category": "Data Engineering & ML",
|
|
10
|
+
"author": "ClaudeAutoPM Team",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"homepage": "https://github.com/rafeekpro/ClaudeAutoPM",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/rafeekpro/ClaudeAutoPM.git",
|
|
16
|
+
"directory": "packages/plugin-data"
|
|
17
|
+
},
|
|
18
|
+
"size": "~25 KB (gzipped)",
|
|
19
|
+
"required": false,
|
|
20
|
+
"tags": [
|
|
21
|
+
"data-engineering",
|
|
22
|
+
"ml",
|
|
23
|
+
"etl",
|
|
24
|
+
"airflow",
|
|
25
|
+
"kedro",
|
|
26
|
+
"langgraph",
|
|
27
|
+
"kafka",
|
|
28
|
+
"dbt",
|
|
29
|
+
"pandas"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"agents": [
|
|
33
|
+
{
|
|
34
|
+
"name": "airflow-orchestration-expert",
|
|
35
|
+
"file": "agents/airflow-orchestration-expert.md",
|
|
36
|
+
"category": "data",
|
|
37
|
+
"description": "Apache Airflow workflow orchestration with DAG development, task dependencies, TaskFlow API, operators, sensors, and executors. Expert in data pipelines and ETL/ELT processes.",
|
|
38
|
+
"version": "2.0.0",
|
|
39
|
+
"tags": [
|
|
40
|
+
"airflow",
|
|
41
|
+
"orchestration",
|
|
42
|
+
"dag",
|
|
43
|
+
"etl",
|
|
44
|
+
"data-pipeline"
|
|
45
|
+
],
|
|
46
|
+
"mcp": [],
|
|
47
|
+
"context7": [
|
|
48
|
+
"/apache/airflow"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "kedro-pipeline-expert",
|
|
53
|
+
"file": "agents/kedro-pipeline-expert.md",
|
|
54
|
+
"category": "data",
|
|
55
|
+
"description": "Kedro data pipeline development with project structure, data catalog, pipeline orchestration, nodes, and configuration. Expert in reproducible data science workflows and MLOps.",
|
|
56
|
+
"version": "2.0.0",
|
|
57
|
+
"tags": [
|
|
58
|
+
"kedro",
|
|
59
|
+
"pipeline",
|
|
60
|
+
"data-science",
|
|
61
|
+
"mlops",
|
|
62
|
+
"reproducible"
|
|
63
|
+
],
|
|
64
|
+
"mcp": [],
|
|
65
|
+
"context7": [
|
|
66
|
+
"/kedro-org/kedro",
|
|
67
|
+
"/kedro-org/kedro-plugins"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "langgraph-workflow-expert",
|
|
72
|
+
"file": "agents/langgraph-workflow-expert.md",
|
|
73
|
+
"category": "data",
|
|
74
|
+
"description": "LangGraph workflow orchestration with state machines, conditional routing, multi-agent collaboration, and graph-based AI workflows. Expert in stateful applications and complex decision trees.",
|
|
75
|
+
"version": "2.0.0",
|
|
76
|
+
"tags": [
|
|
77
|
+
"langgraph",
|
|
78
|
+
"workflow",
|
|
79
|
+
"state-machine",
|
|
80
|
+
"ai",
|
|
81
|
+
"multi-agent"
|
|
82
|
+
],
|
|
83
|
+
"mcp": [],
|
|
84
|
+
"context7": [
|
|
85
|
+
"/langchain-ai/langgraph",
|
|
86
|
+
"/websites/langchain-ai_github_io_langgraph"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
"commands": [
|
|
91
|
+
{
|
|
92
|
+
"name": "airflow-dag-scaffold",
|
|
93
|
+
"file": "commands/airflow-dag-scaffold.md",
|
|
94
|
+
"category": "data",
|
|
95
|
+
"priority": "medium",
|
|
96
|
+
"description": "Generate production-ready Apache Airflow DAG with Context7-verified patterns: TaskFlow API, task dependencies, sensors, error handling, and testing",
|
|
97
|
+
"tags": [
|
|
98
|
+
"airflow",
|
|
99
|
+
"dag",
|
|
100
|
+
"scaffold",
|
|
101
|
+
"etl",
|
|
102
|
+
"taskflow"
|
|
103
|
+
],
|
|
104
|
+
"mcpTools": [
|
|
105
|
+
"context7"
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "kafka-pipeline-scaffold",
|
|
110
|
+
"file": "commands/kafka-pipeline-scaffold.md",
|
|
111
|
+
"category": "data",
|
|
112
|
+
"priority": "medium",
|
|
113
|
+
"description": "Generate production-ready Kafka streaming pipeline with Context7-verified patterns: producers, consumers, streams, error handling, and exactly-once semantics",
|
|
114
|
+
"tags": [
|
|
115
|
+
"kafka",
|
|
116
|
+
"streaming",
|
|
117
|
+
"pipeline",
|
|
118
|
+
"scaffold",
|
|
119
|
+
"event-driven"
|
|
120
|
+
],
|
|
121
|
+
"mcpTools": [
|
|
122
|
+
"context7"
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"rules": [
|
|
127
|
+
{
|
|
128
|
+
"name": "data-quality-standards",
|
|
129
|
+
"file": "rules/data-quality-standards.md",
|
|
130
|
+
"priority": "high",
|
|
131
|
+
"description": "Comprehensive data quality standards with Context7-verified best practices: validation, completeness, consistency, accuracy, timeliness for Airflow, Kedro, pandas, dbt",
|
|
132
|
+
"tags": [
|
|
133
|
+
"data-quality",
|
|
134
|
+
"validation",
|
|
135
|
+
"standards",
|
|
136
|
+
"testing",
|
|
137
|
+
"metrics"
|
|
138
|
+
],
|
|
139
|
+
"appliesTo": [
|
|
140
|
+
"commands",
|
|
141
|
+
"agents"
|
|
142
|
+
],
|
|
143
|
+
"enforcesOn": [
|
|
144
|
+
"airflow-orchestration-expert",
|
|
145
|
+
"kedro-pipeline-expert",
|
|
146
|
+
"langgraph-workflow-expert"
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "etl-pipeline-standards",
|
|
151
|
+
"file": "rules/etl-pipeline-standards.md",
|
|
152
|
+
"priority": "high",
|
|
153
|
+
"description": "ETL/ELT pipeline best practices with Context7-verified patterns: idempotency, incremental processing, error handling, data lineage, monitoring for all frameworks",
|
|
154
|
+
"tags": [
|
|
155
|
+
"etl",
|
|
156
|
+
"pipeline",
|
|
157
|
+
"standards",
|
|
158
|
+
"best-practices",
|
|
159
|
+
"idempotency"
|
|
160
|
+
],
|
|
161
|
+
"appliesTo": [
|
|
162
|
+
"commands",
|
|
163
|
+
"agents"
|
|
164
|
+
],
|
|
165
|
+
"enforcesOn": [
|
|
166
|
+
"airflow-orchestration-expert",
|
|
167
|
+
"kedro-pipeline-expert"
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"scripts": [
|
|
172
|
+
{
|
|
173
|
+
"name": "airflow-dag-example",
|
|
174
|
+
"file": "scripts/examples/airflow-dag-example.py",
|
|
175
|
+
"description": "Airflow DAG example demonstrating Context7 patterns: TaskFlow API, task dependencies, sensors, parallel extraction, error handling",
|
|
176
|
+
"type": "example",
|
|
177
|
+
"executable": true,
|
|
178
|
+
"category": "data",
|
|
179
|
+
"tags": [
|
|
180
|
+
"airflow",
|
|
181
|
+
"dag",
|
|
182
|
+
"example",
|
|
183
|
+
"taskflow",
|
|
184
|
+
"context7"
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "kafka-streaming-example",
|
|
189
|
+
"file": "scripts/examples/kafka-streaming-example.py",
|
|
190
|
+
"description": "Kafka producer/consumer example demonstrating Context7 patterns: reliable configuration, callbacks, manual commits, graceful shutdown",
|
|
191
|
+
"type": "example",
|
|
192
|
+
"executable": true,
|
|
193
|
+
"category": "data",
|
|
194
|
+
"tags": [
|
|
195
|
+
"kafka",
|
|
196
|
+
"streaming",
|
|
197
|
+
"example",
|
|
198
|
+
"producer",
|
|
199
|
+
"consumer",
|
|
200
|
+
"context7"
|
|
201
|
+
]
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"name": "dbt-transform-example",
|
|
205
|
+
"file": "scripts/examples/dbt-transform-example.sql",
|
|
206
|
+
"description": "dbt transformation example demonstrating Context7 patterns: Jinja macros, ref/source, materializations, tests, documentation",
|
|
207
|
+
"type": "example",
|
|
208
|
+
"executable": true,
|
|
209
|
+
"category": "data",
|
|
210
|
+
"tags": [
|
|
211
|
+
"dbt",
|
|
212
|
+
"transformation",
|
|
213
|
+
"example",
|
|
214
|
+
"jinja",
|
|
215
|
+
"context7"
|
|
216
|
+
]
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"name": "pandas-etl-example",
|
|
220
|
+
"file": "scripts/examples/pandas-etl-example.py",
|
|
221
|
+
"description": "pandas ETL example demonstrating Context7 patterns: vectorized operations, GroupBy aggregations, efficient merging, data validation, quality metrics",
|
|
222
|
+
"type": "example",
|
|
223
|
+
"executable": true,
|
|
224
|
+
"category": "data",
|
|
225
|
+
"tags": [
|
|
226
|
+
"pandas",
|
|
227
|
+
"etl",
|
|
228
|
+
"example",
|
|
229
|
+
"validation",
|
|
230
|
+
"context7"
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
],
|
|
234
|
+
"features": {
|
|
235
|
+
"airflow_orchestration": {
|
|
236
|
+
"enabled": true,
|
|
237
|
+
"description": "Apache Airflow workflow orchestration with DAGs and TaskFlow API"
|
|
238
|
+
},
|
|
239
|
+
"kedro_pipelines": {
|
|
240
|
+
"enabled": true,
|
|
241
|
+
"description": "Kedro reproducible data science pipelines and MLOps"
|
|
242
|
+
},
|
|
243
|
+
"langgraph_workflows": {
|
|
244
|
+
"enabled": true,
|
|
245
|
+
"description": "LangGraph stateful AI workflows and multi-agent systems"
|
|
246
|
+
},
|
|
247
|
+
"kafka_streaming": {
|
|
248
|
+
"enabled": true,
|
|
249
|
+
"description": "Apache Kafka event streaming and real-time data pipelines"
|
|
250
|
+
},
|
|
251
|
+
"dbt_transformations": {
|
|
252
|
+
"enabled": true,
|
|
253
|
+
"description": "dbt data transformations with Jinja and SQL"
|
|
254
|
+
},
|
|
255
|
+
"pandas_etl": {
|
|
256
|
+
"enabled": true,
|
|
257
|
+
"description": "pandas data manipulation and ETL processing"
|
|
258
|
+
},
|
|
259
|
+
"data_quality": {
|
|
260
|
+
"enabled": true,
|
|
261
|
+
"description": "Comprehensive data quality validation and monitoring"
|
|
262
|
+
},
|
|
263
|
+
"etl_standards": {
|
|
264
|
+
"enabled": true,
|
|
265
|
+
"description": "ETL/ELT pipeline best practices and standards"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"dependencies": [],
|
|
269
|
+
"peerPlugins": [
|
|
270
|
+
"@claudeautopm/plugin-core"
|
|
271
|
+
],
|
|
272
|
+
"mcpServers": {
|
|
273
|
+
"recommended": [
|
|
274
|
+
"context7"
|
|
275
|
+
],
|
|
276
|
+
"optional": []
|
|
277
|
+
},
|
|
278
|
+
"keywords": [
|
|
279
|
+
"claudeautopm",
|
|
280
|
+
"plugin",
|
|
281
|
+
"data-engineering",
|
|
282
|
+
"ml",
|
|
283
|
+
"machine-learning",
|
|
284
|
+
"etl",
|
|
285
|
+
"analytics",
|
|
286
|
+
"airflow",
|
|
287
|
+
"kedro",
|
|
288
|
+
"langgraph",
|
|
289
|
+
"kafka",
|
|
290
|
+
"dbt",
|
|
291
|
+
"pandas"
|
|
292
|
+
],
|
|
293
|
+
"compatibleWith": ">=3.0.0"
|
|
294
|
+
}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
# Data Quality Standards
|
|
2
|
+
|
|
3
|
+
**Priority:** HIGH
|
|
4
|
+
**Applies To:** commands, agents
|
|
5
|
+
**Enforces On:** airflow-orchestration-expert, kedro-pipeline-expert, langgraph-workflow-expert
|
|
6
|
+
|
|
7
|
+
Comprehensive data quality standards with Context7-verified best practices for data engineering pipelines.
|
|
8
|
+
|
|
9
|
+
## Context7 Documentation Requirements
|
|
10
|
+
|
|
11
|
+
**MANDATORY**: Before implementing data quality checks, query Context7 for framework-specific best practices.
|
|
12
|
+
|
|
13
|
+
**Required Queries:**
|
|
14
|
+
- Airflow: Data validation operators and sensors
|
|
15
|
+
- Kedro: Data catalog validation and testing
|
|
16
|
+
- pandas: Data quality checks and assertions
|
|
17
|
+
- dbt: Test definitions and data contracts
|
|
18
|
+
|
|
19
|
+
## Core Data Quality Principles
|
|
20
|
+
|
|
21
|
+
### 1. Data Validation at Every Stage
|
|
22
|
+
|
|
23
|
+
**Rule:** Validate data at extract, transform, and load stages.
|
|
24
|
+
|
|
25
|
+
**Context7 Pattern (Airflow):**
|
|
26
|
+
```python
|
|
27
|
+
from airflow.decorators import task
|
|
28
|
+
|
|
29
|
+
@task
|
|
30
|
+
def validate_extracted_data(data: Dict) -> Dict:
|
|
31
|
+
"""Validate data after extraction."""
|
|
32
|
+
assert data is not None, "Data is None"
|
|
33
|
+
assert "records" in data, "Missing records field"
|
|
34
|
+
assert len(data["records"]) > 0, "No records extracted"
|
|
35
|
+
assert data["count"] == len(data["records"]), "Count mismatch"
|
|
36
|
+
|
|
37
|
+
return data
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Context7 Pattern (pandas):**
|
|
41
|
+
```python
|
|
42
|
+
def validate_dataframe(df: pd.DataFrame) -> None:
|
|
43
|
+
"""
|
|
44
|
+
Comprehensive DataFrame validation.
|
|
45
|
+
|
|
46
|
+
Context7 Pattern: Multi-level validation checks
|
|
47
|
+
"""
|
|
48
|
+
# Schema validation
|
|
49
|
+
required_columns = ["id", "timestamp", "value"]
|
|
50
|
+
assert all(col in df.columns for col in required_columns), \
|
|
51
|
+
f"Missing required columns"
|
|
52
|
+
|
|
53
|
+
# Null check
|
|
54
|
+
null_counts = df[required_columns].isnull().sum()
|
|
55
|
+
assert null_counts.sum() == 0, \
|
|
56
|
+
f"Null values found: {null_counts[null_counts > 0].to_dict()}"
|
|
57
|
+
|
|
58
|
+
# Type validation
|
|
59
|
+
assert pd.api.types.is_numeric_dtype(df["value"]), \
|
|
60
|
+
"value column must be numeric"
|
|
61
|
+
|
|
62
|
+
# Range validation
|
|
63
|
+
assert (df["value"] >= 0).all(), \
|
|
64
|
+
"value column contains negative values"
|
|
65
|
+
|
|
66
|
+
# Uniqueness check
|
|
67
|
+
assert df["id"].is_unique, \
|
|
68
|
+
f"Duplicate IDs found: {df[df['id'].duplicated()]['id'].tolist()}"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 2. Data Completeness
|
|
72
|
+
|
|
73
|
+
**Rule:** Ensure all required fields are present and non-null.
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
def check_completeness(df: pd.DataFrame, required_fields: List[str]) -> Dict:
|
|
77
|
+
"""
|
|
78
|
+
Check data completeness.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
Dict with completeness metrics
|
|
82
|
+
"""
|
|
83
|
+
metrics = {}
|
|
84
|
+
|
|
85
|
+
for field in required_fields:
|
|
86
|
+
null_count = df[field].isnull().sum()
|
|
87
|
+
total_count = len(df)
|
|
88
|
+
completeness = (total_count - null_count) / total_count * 100
|
|
89
|
+
|
|
90
|
+
metrics[field] = {
|
|
91
|
+
"completeness_pct": completeness,
|
|
92
|
+
"null_count": null_count,
|
|
93
|
+
"total_count": total_count,
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
# Alert if below threshold
|
|
97
|
+
if completeness < 95:
|
|
98
|
+
logger.warning(
|
|
99
|
+
f"Field {field} completeness is {completeness:.2f}% (< 95%)"
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
return metrics
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 3. Data Consistency
|
|
106
|
+
|
|
107
|
+
**Rule:** Validate data consistency across related fields and datasets.
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
def check_consistency(df: pd.DataFrame) -> None:
|
|
111
|
+
"""Check cross-field consistency."""
|
|
112
|
+
# Date range consistency
|
|
113
|
+
assert (df["end_date"] >= df["start_date"]).all(), \
|
|
114
|
+
"end_date must be >= start_date"
|
|
115
|
+
|
|
116
|
+
# Sum consistency
|
|
117
|
+
assert np.isclose(df["total"], df["subtotal"] + df["tax"], atol=0.01).all(), \
|
|
118
|
+
"total != subtotal + tax"
|
|
119
|
+
|
|
120
|
+
# Status consistency
|
|
121
|
+
valid_statuses = ["pending", "active", "completed", "cancelled"]
|
|
122
|
+
invalid_statuses = ~df["status"].isin(valid_statuses)
|
|
123
|
+
assert not invalid_statuses.any(), \
|
|
124
|
+
f"Invalid statuses: {df[invalid_statuses]['status'].unique()}"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 4. Data Accuracy
|
|
128
|
+
|
|
129
|
+
**Rule:** Validate data values against known constraints and business rules.
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
def check_accuracy(df: pd.DataFrame) -> None:
|
|
133
|
+
"""Validate data accuracy."""
|
|
134
|
+
# Numeric ranges
|
|
135
|
+
assert (df["age"] >= 0).all() and (df["age"] <= 150).all(), \
|
|
136
|
+
"age must be between 0 and 150"
|
|
137
|
+
|
|
138
|
+
# Email format
|
|
139
|
+
email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
|
|
140
|
+
invalid_emails = ~df["email"].str.match(email_pattern)
|
|
141
|
+
assert not invalid_emails.any(), \
|
|
142
|
+
f"Invalid emails found: {len(df[invalid_emails])}"
|
|
143
|
+
|
|
144
|
+
# Currency precision
|
|
145
|
+
assert (df["amount"].apply(lambda x: len(str(x).split(".")[-1])) <= 2).all(), \
|
|
146
|
+
"Currency values must have max 2 decimal places"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 5. Data Timeliness
|
|
150
|
+
|
|
151
|
+
**Rule:** Validate data freshness and processing delays.
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
from datetime import datetime, timedelta
|
|
155
|
+
|
|
156
|
+
def check_timeliness(df: pd.DataFrame, max_delay_hours: int = 24) -> None:
|
|
157
|
+
"""Check data timeliness."""
|
|
158
|
+
now = datetime.utcnow()
|
|
159
|
+
df["timestamp"] = pd.to_datetime(df["timestamp"])
|
|
160
|
+
|
|
161
|
+
# Check for stale data
|
|
162
|
+
max_timestamp = df["timestamp"].max()
|
|
163
|
+
delay = (now - max_timestamp).total_seconds() / 3600
|
|
164
|
+
|
|
165
|
+
assert delay <= max_delay_hours, \
|
|
166
|
+
f"Data is stale: {delay:.2f} hours old (max: {max_delay_hours})"
|
|
167
|
+
|
|
168
|
+
# Check for future timestamps
|
|
169
|
+
future_records = df[df["timestamp"] > now]
|
|
170
|
+
assert len(future_records) == 0, \
|
|
171
|
+
f"Found {len(future_records)} records with future timestamps"
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Framework-Specific Standards
|
|
175
|
+
|
|
176
|
+
### Airflow Data Quality
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
@task
|
|
180
|
+
def run_data_quality_checks(data: Dict) -> Dict:
|
|
181
|
+
"""
|
|
182
|
+
Comprehensive data quality checks for Airflow pipelines.
|
|
183
|
+
|
|
184
|
+
Context7 Pattern: Task-based validation
|
|
185
|
+
"""
|
|
186
|
+
checks = {
|
|
187
|
+
"completeness": check_completeness(data),
|
|
188
|
+
"consistency": check_consistency(data),
|
|
189
|
+
"accuracy": check_accuracy(data),
|
|
190
|
+
"timeliness": check_timeliness(data),
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
# Log results
|
|
194
|
+
for check_name, result in checks.items():
|
|
195
|
+
if result.get("passed", True):
|
|
196
|
+
logger.info(f"✓ {check_name} check passed")
|
|
197
|
+
else:
|
|
198
|
+
logger.error(f"✗ {check_name} check failed: {result['error']}")
|
|
199
|
+
raise ValueError(f"Data quality check failed: {check_name}")
|
|
200
|
+
|
|
201
|
+
return data
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Kedro Data Validation
|
|
205
|
+
|
|
206
|
+
```python
|
|
207
|
+
# In nodes.py
|
|
208
|
+
def validate_model_input(data: pd.DataFrame) -> pd.DataFrame:
|
|
209
|
+
"""
|
|
210
|
+
Validate model input data.
|
|
211
|
+
|
|
212
|
+
Context7 Pattern: Kedro node with validation
|
|
213
|
+
"""
|
|
214
|
+
# Schema validation
|
|
215
|
+
expected_columns = ["feature1", "feature2", "feature3", "target"]
|
|
216
|
+
assert all(col in data.columns for col in expected_columns)
|
|
217
|
+
|
|
218
|
+
# Statistical validation
|
|
219
|
+
for col in ["feature1", "feature2", "feature3"]:
|
|
220
|
+
# Check for outliers (3 sigma rule)
|
|
221
|
+
mean = data[col].mean()
|
|
222
|
+
std = data[col].std()
|
|
223
|
+
outliers = data[(data[col] < mean - 3*std) | (data[col] > mean + 3*std)]
|
|
224
|
+
|
|
225
|
+
if len(outliers) > len(data) * 0.01: # More than 1% outliers
|
|
226
|
+
logger.warning(f"{col}: {len(outliers)} outliers detected")
|
|
227
|
+
|
|
228
|
+
return data
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### dbt Data Testing
|
|
232
|
+
|
|
233
|
+
```sql
|
|
234
|
+
-- models/schema.yml
|
|
235
|
+
version: 2
|
|
236
|
+
|
|
237
|
+
models:
|
|
238
|
+
- name: fct_orders
|
|
239
|
+
description: "Orders fact table"
|
|
240
|
+
columns:
|
|
241
|
+
- name: order_id
|
|
242
|
+
description: "Primary key"
|
|
243
|
+
tests:
|
|
244
|
+
- unique
|
|
245
|
+
- not_null
|
|
246
|
+
|
|
247
|
+
- name: customer_id
|
|
248
|
+
description: "Foreign key to customers"
|
|
249
|
+
tests:
|
|
250
|
+
- not_null
|
|
251
|
+
- relationships:
|
|
252
|
+
to: ref('dim_customers')
|
|
253
|
+
field: customer_id
|
|
254
|
+
|
|
255
|
+
- name: order_total
|
|
256
|
+
description: "Order total amount"
|
|
257
|
+
tests:
|
|
258
|
+
- not_null
|
|
259
|
+
- dbt_utils.accepted_range:
|
|
260
|
+
min_value: 0
|
|
261
|
+
inclusive: true
|
|
262
|
+
|
|
263
|
+
- name: order_date
|
|
264
|
+
description: "Order timestamp"
|
|
265
|
+
tests:
|
|
266
|
+
- not_null
|
|
267
|
+
- dbt_utils.expression_is_true:
|
|
268
|
+
expression: "order_date <= current_date"
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Data Quality Metrics
|
|
272
|
+
|
|
273
|
+
### 1. Completeness Metrics
|
|
274
|
+
|
|
275
|
+
```python
|
|
276
|
+
def calculate_completeness(df: pd.DataFrame) -> Dict:
|
|
277
|
+
"""Calculate completeness metrics."""
|
|
278
|
+
total_cells = df.size
|
|
279
|
+
null_cells = df.isnull().sum().sum()
|
|
280
|
+
completeness = (total_cells - null_cells) / total_cells * 100
|
|
281
|
+
|
|
282
|
+
return {
|
|
283
|
+
"overall_completeness_pct": completeness,
|
|
284
|
+
"total_cells": total_cells,
|
|
285
|
+
"null_cells": null_cells,
|
|
286
|
+
"column_completeness": (
|
|
287
|
+
(1 - df.isnull().sum() / len(df)) * 100
|
|
288
|
+
).to_dict()
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### 2. Validity Metrics
|
|
293
|
+
|
|
294
|
+
```python
|
|
295
|
+
def calculate_validity(df: pd.DataFrame, rules: Dict) -> Dict:
|
|
296
|
+
"""
|
|
297
|
+
Calculate validity metrics based on rules.
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
df: DataFrame to validate
|
|
301
|
+
rules: Dict of validation rules per column
|
|
302
|
+
|
|
303
|
+
Returns:
|
|
304
|
+
Dict with validity metrics
|
|
305
|
+
"""
|
|
306
|
+
validity_metrics = {}
|
|
307
|
+
|
|
308
|
+
for column, rule in rules.items():
|
|
309
|
+
if rule["type"] == "range":
|
|
310
|
+
valid = df[column].between(rule["min"], rule["max"])
|
|
311
|
+
elif rule["type"] == "regex":
|
|
312
|
+
valid = df[column].str.match(rule["pattern"])
|
|
313
|
+
elif rule["type"] == "categorical":
|
|
314
|
+
valid = df[column].isin(rule["allowed_values"])
|
|
315
|
+
|
|
316
|
+
validity_pct = (valid.sum() / len(df)) * 100
|
|
317
|
+
validity_metrics[column] = {
|
|
318
|
+
"validity_pct": validity_pct,
|
|
319
|
+
"invalid_count": (~valid).sum(),
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
return validity_metrics
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Enforcement Guidelines
|
|
326
|
+
|
|
327
|
+
### 1. Pre-Processing Validation
|
|
328
|
+
|
|
329
|
+
- Validate data immediately after extraction
|
|
330
|
+
- Check schema, types, and required fields
|
|
331
|
+
- Log validation results
|
|
332
|
+
|
|
333
|
+
### 2. In-Process Validation
|
|
334
|
+
|
|
335
|
+
- Validate transformations preserve data quality
|
|
336
|
+
- Check aggregation results
|
|
337
|
+
- Verify join operations don't create duplicates
|
|
338
|
+
|
|
339
|
+
### 3. Post-Processing Validation
|
|
340
|
+
|
|
341
|
+
- Validate final output before loading
|
|
342
|
+
- Check row counts match expectations
|
|
343
|
+
- Verify data completeness
|
|
344
|
+
|
|
345
|
+
### 4. Monitoring and Alerting
|
|
346
|
+
|
|
347
|
+
```python
|
|
348
|
+
def alert_on_quality_issues(metrics: Dict, thresholds: Dict) -> None:
|
|
349
|
+
"""Alert on data quality issues."""
|
|
350
|
+
for metric, value in metrics.items():
|
|
351
|
+
threshold = thresholds.get(metric)
|
|
352
|
+
if threshold and value < threshold:
|
|
353
|
+
# Send alert (email, Slack, PagerDuty, etc.)
|
|
354
|
+
send_alert(
|
|
355
|
+
severity="high",
|
|
356
|
+
message=f"Data quality alert: {metric} = {value} (threshold: {threshold})",
|
|
357
|
+
metrics=metrics,
|
|
358
|
+
)
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
## Testing Requirements
|
|
362
|
+
|
|
363
|
+
- Write unit tests for validation functions
|
|
364
|
+
- Test edge cases (empty data, all nulls, outliers)
|
|
365
|
+
- Include data quality tests in CI/CD pipeline
|
|
366
|
+
- Monitor data quality metrics in production
|
|
367
|
+
|
|
368
|
+
## Related Resources
|
|
369
|
+
|
|
370
|
+
- Command: `airflow-dag-scaffold.md` - DAG with validation
|
|
371
|
+
- Command: `kafka-pipeline-scaffold.md` - Stream validation
|
|
372
|
+
- Rule: `etl-pipeline-standards.md` - Pipeline best practices
|
|
373
|
+
- Script: `pandas-etl-example.py` - Validation examples
|