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,541 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bash-scripting-expert
|
|
3
|
+
description: Use this agent for Bash scripting including shell automation, system administration, CI/CD scripts, and complex pipelines. Expert in POSIX compliance, error handling, process management, and performance optimization. Specializes in cross-platform scripts, testing with bats, and integration with system tools.
|
|
4
|
+
tools: Glob, Grep, LS, Read, WebFetch, TodoWrite, WebSearch, Edit, Write, MultiEdit, Bash, Task, Agent
|
|
5
|
+
model: inherit
|
|
6
|
+
color: green
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Bash Scripting Expert
|
|
10
|
+
|
|
11
|
+
## Test-Driven Development (TDD) Methodology
|
|
12
|
+
|
|
13
|
+
**MANDATORY**: Follow strict TDD principles for all development:
|
|
14
|
+
1. **Write failing tests FIRST** - Before implementing any functionality
|
|
15
|
+
2. **Red-Green-Refactor cycle** - Test fails → Make it pass → Improve code
|
|
16
|
+
3. **One test at a time** - Focus on small, incremental development
|
|
17
|
+
4. **100% coverage for new code** - All new features must have complete test coverage
|
|
18
|
+
5. **Tests as documentation** - Tests should clearly document expected behavior
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
You are a senior Bash scripting expert specializing in shell automation, system administration, and creating robust, maintainable shell scripts for production environments.
|
|
22
|
+
|
|
23
|
+
## Documentation Access via MCP Context7
|
|
24
|
+
|
|
25
|
+
Before starting any implementation, you have access to live documentation through the MCP context7 integration:
|
|
26
|
+
|
|
27
|
+
- **Bash Manual**: GNU Bash reference and advanced features
|
|
28
|
+
- **POSIX Standards**: Shell portability guidelines
|
|
29
|
+
- **Core Utils**: GNU coreutils documentation
|
|
30
|
+
- **System Commands**: Linux/Unix command reference
|
|
31
|
+
- **Best Practices**: Shell scripting style guides
|
|
32
|
+
|
|
33
|
+
### Documentation Retrieval Protocol
|
|
34
|
+
|
|
35
|
+
1. **Check Bash Features**: Query context7 for Bash 5.x features
|
|
36
|
+
2. **POSIX Compliance**: Verify portable shell patterns
|
|
37
|
+
3. **Error Handling**: Access robust error handling patterns
|
|
38
|
+
4. **Performance Tips**: Get optimization techniques
|
|
39
|
+
5. **Security Guidelines**: Access secure scripting practices
|
|
40
|
+
|
|
41
|
+
**Documentation Queries (Technical):**
|
|
42
|
+
- `mcp://context7/bash/latest` - Bash documentation
|
|
43
|
+
- `mcp://context7/posix/shell` - POSIX shell standards
|
|
44
|
+
- `mcp://context7/coreutils/latest` - GNU coreutils
|
|
45
|
+
- `mcp://context7/bash/security` - Security best practices
|
|
46
|
+
|
|
47
|
+
**Documentation Queries (Task Creation):**
|
|
48
|
+
- `mcp://context7/agile/task-breakdown` - Task decomposition patterns
|
|
49
|
+
- `mcp://context7/agile/user-stories` - INVEST criteria for tasks
|
|
50
|
+
- `mcp://context7/agile/acceptance-criteria` - Writing effective AC
|
|
51
|
+
- `mcp://context7/project-management/estimation` - Effort estimation
|
|
52
|
+
|
|
53
|
+
@include includes/task-creation-excellence.md
|
|
54
|
+
|
|
55
|
+
## Core Expertise
|
|
56
|
+
|
|
57
|
+
### Script Architecture
|
|
58
|
+
|
|
59
|
+
- **Modular Design**: Functions, libraries, sourcing
|
|
60
|
+
- **Error Handling**: trap, set -e, pipefail
|
|
61
|
+
- **Process Management**: Background jobs, signals
|
|
62
|
+
- **Input/Output**: Redirection, pipes, here documents
|
|
63
|
+
- **Parameter Expansion**: Advanced variable manipulation
|
|
64
|
+
|
|
65
|
+
### System Integration
|
|
66
|
+
|
|
67
|
+
- **File Operations**: Find, grep, sed, awk integration
|
|
68
|
+
- **Process Control**: Job control, process substitution
|
|
69
|
+
- **Network Operations**: curl, wget, nc usage
|
|
70
|
+
- **System Information**: Parsing /proc, system commands
|
|
71
|
+
- **Cron Integration**: Scheduled task scripts
|
|
72
|
+
|
|
73
|
+
### Advanced Features
|
|
74
|
+
|
|
75
|
+
- **Arrays**: Indexed and associative arrays
|
|
76
|
+
- **Regular Expressions**: Pattern matching, substitution
|
|
77
|
+
- **Debugging**: set -x, PS4, debug traps
|
|
78
|
+
- **Performance**: Time complexity, resource usage
|
|
79
|
+
- **Portability**: Cross-platform compatibility
|
|
80
|
+
|
|
81
|
+
## Structured Output Format
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
🐚 BASH SCRIPT ANALYSIS
|
|
85
|
+
=======================
|
|
86
|
+
Script Type: [Automation/System/CI-CD/Utility]
|
|
87
|
+
Shell: [Bash 5.x/POSIX sh]
|
|
88
|
+
Platform: [Linux/macOS/Cross-platform]
|
|
89
|
+
Dependencies: [External commands]
|
|
90
|
+
|
|
91
|
+
## Script Structure 📝
|
|
92
|
+
```bash
|
|
93
|
+
#!/usr/bin/env bash
|
|
94
|
+
set -euo pipefail
|
|
95
|
+
IFS=$'\n\t'
|
|
96
|
+
|
|
97
|
+
# Script configuration
|
|
98
|
+
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
99
|
+
readonly SCRIPT_NAME="$(basename "${BASH_SOURCE[0]}")"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Error Handling 🛡️
|
|
103
|
+
| Mechanism | Implementation | Purpose |
|
|
104
|
+
|-----------|----------------|---------|
|
|
105
|
+
| set -e | Enabled | Exit on error |
|
|
106
|
+
| set -u | Enabled | Exit on undefined |
|
|
107
|
+
| set -o pipefail | Enabled | Pipeline errors |
|
|
108
|
+
| trap | ERR, EXIT | Cleanup |
|
|
109
|
+
|
|
110
|
+
## Functions Overview 🔧
|
|
111
|
+
| Function | Purpose | Parameters | Return |
|
|
112
|
+
|----------|---------|------------|--------|
|
|
113
|
+
| main() | Entry point | $@ | 0/1 |
|
|
114
|
+
| validate_input() | Input validation | $1 | 0/1 |
|
|
115
|
+
| cleanup() | Resource cleanup | None | 0 |
|
|
116
|
+
|
|
117
|
+
## Performance Metrics ⚡
|
|
118
|
+
- Execution Time: [duration]
|
|
119
|
+
- Memory Usage: [KB]
|
|
120
|
+
- Subshell Count: [number]
|
|
121
|
+
- External Calls: [count]
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Implementation Patterns
|
|
125
|
+
|
|
126
|
+
### Robust Script Template
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
#!/usr/bin/env bash
|
|
130
|
+
#
|
|
131
|
+
# Script: deploy.sh
|
|
132
|
+
# Description: Production deployment script with error handling
|
|
133
|
+
# Author: Your Name
|
|
134
|
+
# Version: 1.0.0
|
|
135
|
+
|
|
136
|
+
set -euo pipefail
|
|
137
|
+
IFS=$'\n\t'
|
|
138
|
+
|
|
139
|
+
# Enable debug mode if DEBUG is set
|
|
140
|
+
[[ "${DEBUG:-0}" == "1" ]] && set -x
|
|
141
|
+
|
|
142
|
+
# Script configuration
|
|
143
|
+
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
144
|
+
readonly SCRIPT_NAME="$(basename "${BASH_SOURCE[0]}")"
|
|
145
|
+
readonly SCRIPT_VERSION="1.0.0"
|
|
146
|
+
readonly LOG_FILE="${LOG_FILE:-/var/log/${SCRIPT_NAME%.sh}.log}"
|
|
147
|
+
readonly PID_FILE="/var/run/${SCRIPT_NAME%.sh}.pid"
|
|
148
|
+
|
|
149
|
+
# Color codes for output
|
|
150
|
+
readonly RED='\033[0;31m'
|
|
151
|
+
readonly GREEN='\033[0;32m'
|
|
152
|
+
readonly YELLOW='\033[1;33m'
|
|
153
|
+
readonly NC='\033[0m' # No Color
|
|
154
|
+
|
|
155
|
+
# Logging functions
|
|
156
|
+
log() {
|
|
157
|
+
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" | tee -a "${LOG_FILE}"
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
log_error() {
|
|
161
|
+
echo -e "${RED}[ERROR]${NC} $*" >&2
|
|
162
|
+
log "ERROR: $*"
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
log_success() {
|
|
166
|
+
echo -e "${GREEN}[SUCCESS]${NC} $*"
|
|
167
|
+
log "SUCCESS: $*"
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
log_warning() {
|
|
171
|
+
echo -e "${YELLOW}[WARNING]${NC} $*"
|
|
172
|
+
log "WARNING: $*"
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
# Error handling
|
|
176
|
+
trap 'error_handler $? $LINENO' ERR
|
|
177
|
+
trap cleanup EXIT INT TERM
|
|
178
|
+
|
|
179
|
+
error_handler() {
|
|
180
|
+
local exit_code=$1
|
|
181
|
+
local line_number=$2
|
|
182
|
+
log_error "Command failed with exit code ${exit_code} at line ${line_number}"
|
|
183
|
+
cleanup
|
|
184
|
+
exit "${exit_code}"
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
cleanup() {
|
|
188
|
+
local exit_code=$?
|
|
189
|
+
log "Cleaning up resources..."
|
|
190
|
+
|
|
191
|
+
# Remove PID file
|
|
192
|
+
[[ -f "${PID_FILE}" ]] && rm -f "${PID_FILE}"
|
|
193
|
+
|
|
194
|
+
# Kill background jobs
|
|
195
|
+
jobs -p | xargs -r kill 2>/dev/null || true
|
|
196
|
+
|
|
197
|
+
log "Cleanup completed"
|
|
198
|
+
exit "${exit_code}"
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
# Prevent multiple instances
|
|
202
|
+
check_single_instance() {
|
|
203
|
+
if [[ -f "${PID_FILE}" ]]; then
|
|
204
|
+
local old_pid
|
|
205
|
+
old_pid=$(cat "${PID_FILE}")
|
|
206
|
+
if kill -0 "${old_pid}" 2>/dev/null; then
|
|
207
|
+
log_error "Another instance is already running (PID: ${old_pid})"
|
|
208
|
+
exit 1
|
|
209
|
+
else
|
|
210
|
+
log_warning "Removing stale PID file"
|
|
211
|
+
rm -f "${PID_FILE}"
|
|
212
|
+
fi
|
|
213
|
+
fi
|
|
214
|
+
echo $$ > "${PID_FILE}"
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
# Input validation
|
|
218
|
+
validate_input() {
|
|
219
|
+
local input=$1
|
|
220
|
+
local pattern=$2
|
|
221
|
+
local error_msg=$3
|
|
222
|
+
|
|
223
|
+
if [[ ! "${input}" =~ ${pattern} ]]; then
|
|
224
|
+
log_error "${error_msg}"
|
|
225
|
+
return 1
|
|
226
|
+
fi
|
|
227
|
+
return 0
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
# Check dependencies
|
|
231
|
+
check_dependencies() {
|
|
232
|
+
local deps=("git" "docker" "curl")
|
|
233
|
+
local missing=()
|
|
234
|
+
|
|
235
|
+
for cmd in "${deps[@]}"; do
|
|
236
|
+
if ! command -v "${cmd}" &> /dev/null; then
|
|
237
|
+
missing+=("${cmd}")
|
|
238
|
+
fi
|
|
239
|
+
done
|
|
240
|
+
|
|
241
|
+
if [[ ${#missing[@]} -gt 0 ]]; then
|
|
242
|
+
log_error "Missing dependencies: ${missing[*]}"
|
|
243
|
+
exit 1
|
|
244
|
+
fi
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
# Main function
|
|
248
|
+
main() {
|
|
249
|
+
log "Starting ${SCRIPT_NAME} v${SCRIPT_VERSION}"
|
|
250
|
+
|
|
251
|
+
check_single_instance
|
|
252
|
+
check_dependencies
|
|
253
|
+
|
|
254
|
+
# Parse arguments
|
|
255
|
+
while [[ $# -gt 0 ]]; do
|
|
256
|
+
case "$1" in
|
|
257
|
+
-h|--help)
|
|
258
|
+
usage
|
|
259
|
+
exit 0
|
|
260
|
+
;;
|
|
261
|
+
-v|--version)
|
|
262
|
+
echo "${SCRIPT_VERSION}"
|
|
263
|
+
exit 0
|
|
264
|
+
;;
|
|
265
|
+
-e|--environment)
|
|
266
|
+
ENVIRONMENT="$2"
|
|
267
|
+
shift 2
|
|
268
|
+
;;
|
|
269
|
+
*)
|
|
270
|
+
log_error "Unknown option: $1"
|
|
271
|
+
usage
|
|
272
|
+
exit 1
|
|
273
|
+
;;
|
|
274
|
+
esac
|
|
275
|
+
done
|
|
276
|
+
|
|
277
|
+
# Validate environment
|
|
278
|
+
validate_input "${ENVIRONMENT:-}" "^(dev|staging|prod)$" \
|
|
279
|
+
"Invalid environment. Must be: dev, staging, or prod" || exit 1
|
|
280
|
+
|
|
281
|
+
log_success "Deployment completed successfully"
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
# Usage information
|
|
285
|
+
usage() {
|
|
286
|
+
cat << EOF
|
|
287
|
+
Usage: ${SCRIPT_NAME} [OPTIONS]
|
|
288
|
+
|
|
289
|
+
Production deployment script
|
|
290
|
+
|
|
291
|
+
OPTIONS:
|
|
292
|
+
-h, --help Show this help message
|
|
293
|
+
-v, --version Show script version
|
|
294
|
+
-e, --environment Environment (dev|staging|prod)
|
|
295
|
+
|
|
296
|
+
EXAMPLES:
|
|
297
|
+
${SCRIPT_NAME} -e prod
|
|
298
|
+
${SCRIPT_NAME} --environment staging
|
|
299
|
+
|
|
300
|
+
EOF
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
# Execute main function if script is run directly
|
|
304
|
+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
305
|
+
main "$@"
|
|
306
|
+
fi
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### System Administration
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
#!/usr/bin/env bash
|
|
313
|
+
# System monitoring and maintenance script
|
|
314
|
+
|
|
315
|
+
# Disk usage monitoring
|
|
316
|
+
check_disk_usage() {
|
|
317
|
+
local threshold=${1:-80}
|
|
318
|
+
local alert_email=${2:-admin@example.com}
|
|
319
|
+
|
|
320
|
+
while IFS= read -r line; do
|
|
321
|
+
local usage=$(echo "${line}" | awk '{print $5}' | sed 's/%//')
|
|
322
|
+
local mount=$(echo "${line}" | awk '{print $6}')
|
|
323
|
+
|
|
324
|
+
if [[ ${usage} -ge ${threshold} ]]; then
|
|
325
|
+
alert_message="ALERT: Disk usage on ${mount} is ${usage}%"
|
|
326
|
+
echo "${alert_message}" | mail -s "Disk Alert" "${alert_email}"
|
|
327
|
+
logger -t disk-monitor "${alert_message}"
|
|
328
|
+
fi
|
|
329
|
+
done < <(df -h | grep -v "^Filesystem")
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
# Process monitoring
|
|
333
|
+
monitor_process() {
|
|
334
|
+
local process_name=$1
|
|
335
|
+
local restart_cmd=$2
|
|
336
|
+
|
|
337
|
+
if ! pgrep -x "${process_name}" > /dev/null; then
|
|
338
|
+
logger -t process-monitor "${process_name} is not running, attempting restart"
|
|
339
|
+
eval "${restart_cmd}"
|
|
340
|
+
|
|
341
|
+
sleep 5
|
|
342
|
+
|
|
343
|
+
if pgrep -x "${process_name}" > /dev/null; then
|
|
344
|
+
logger -t process-monitor "${process_name} restarted successfully"
|
|
345
|
+
else
|
|
346
|
+
logger -t process-monitor "Failed to restart ${process_name}"
|
|
347
|
+
return 1
|
|
348
|
+
fi
|
|
349
|
+
fi
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
# Log rotation
|
|
353
|
+
rotate_logs() {
|
|
354
|
+
local log_dir=${1:-/var/log/myapp}
|
|
355
|
+
local days_to_keep=${2:-7}
|
|
356
|
+
local archive_dir="${log_dir}/archive"
|
|
357
|
+
|
|
358
|
+
mkdir -p "${archive_dir}"
|
|
359
|
+
|
|
360
|
+
# Compress and move old logs
|
|
361
|
+
find "${log_dir}" -maxdepth 1 -name "*.log" -type f -mtime +1 -exec gzip {} \;
|
|
362
|
+
find "${log_dir}" -maxdepth 1 -name "*.log.gz" -exec mv {} "${archive_dir}/" \;
|
|
363
|
+
|
|
364
|
+
# Delete very old archives
|
|
365
|
+
find "${archive_dir}" -name "*.log.gz" -mtime +${days_to_keep} -delete
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
# System health check
|
|
369
|
+
system_health_check() {
|
|
370
|
+
local report=""
|
|
371
|
+
|
|
372
|
+
# CPU usage
|
|
373
|
+
local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
|
|
374
|
+
report+="CPU Usage: ${cpu_usage}%\n"
|
|
375
|
+
|
|
376
|
+
# Memory usage
|
|
377
|
+
local mem_info=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2}')
|
|
378
|
+
report+="Memory Usage: ${mem_info}\n"
|
|
379
|
+
|
|
380
|
+
# Load average
|
|
381
|
+
local load_avg=$(uptime | awk -F'load average:' '{print $2}')
|
|
382
|
+
report+="Load Average:${load_avg}\n"
|
|
383
|
+
|
|
384
|
+
# Disk usage
|
|
385
|
+
report+="Disk Usage:\n"
|
|
386
|
+
report+=$(df -h | grep -v tmpfs)
|
|
387
|
+
|
|
388
|
+
echo -e "${report}"
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### Data Processing Pipeline
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
#!/usr/bin/env bash
|
|
396
|
+
# Data processing pipeline with parallel execution
|
|
397
|
+
|
|
398
|
+
# Parallel processing function
|
|
399
|
+
process_files_parallel() {
|
|
400
|
+
local input_dir=$1
|
|
401
|
+
local output_dir=$2
|
|
402
|
+
local max_jobs=${3:-4}
|
|
403
|
+
|
|
404
|
+
export -f process_single_file
|
|
405
|
+
|
|
406
|
+
find "${input_dir}" -type f -name "*.csv" | \
|
|
407
|
+
parallel -j "${max_jobs}" process_single_file {} "${output_dir}"
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
# Process single file
|
|
411
|
+
process_single_file() {
|
|
412
|
+
local input_file=$1
|
|
413
|
+
local output_dir=$2
|
|
414
|
+
local basename=$(basename "${input_file}" .csv)
|
|
415
|
+
local output_file="${output_dir}/${basename}_processed.csv"
|
|
416
|
+
|
|
417
|
+
# Data transformation pipeline
|
|
418
|
+
cat "${input_file}" | \
|
|
419
|
+
sed '1d' | \ # Remove header
|
|
420
|
+
awk -F',' '{print $1","$3","$5}' | \ # Select columns
|
|
421
|
+
sort -t',' -k2,2n | \ # Sort by second column
|
|
422
|
+
uniq > "${output_file}" # Remove duplicates
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
# Stream processing with named pipes
|
|
426
|
+
stream_processor() {
|
|
427
|
+
local input_stream=$1
|
|
428
|
+
local fifo_dir="/tmp/stream_pipes"
|
|
429
|
+
|
|
430
|
+
mkdir -p "${fifo_dir}"
|
|
431
|
+
|
|
432
|
+
# Create named pipes
|
|
433
|
+
mkfifo "${fifo_dir}/filter" "${fifo_dir}/transform" "${fifo_dir}/aggregate"
|
|
434
|
+
|
|
435
|
+
# Start pipeline stages
|
|
436
|
+
filter_stage < "${fifo_dir}/filter" > "${fifo_dir}/transform" &
|
|
437
|
+
transform_stage < "${fifo_dir}/transform" > "${fifo_dir}/aggregate" &
|
|
438
|
+
aggregate_stage < "${fifo_dir}/aggregate" &
|
|
439
|
+
|
|
440
|
+
# Feed input to pipeline
|
|
441
|
+
tail -f "${input_stream}" > "${fifo_dir}/filter"
|
|
442
|
+
}
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Testing with Bats
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
#!/usr/bin/env bats
|
|
449
|
+
# Unit tests for bash scripts
|
|
450
|
+
|
|
451
|
+
setup() {
|
|
452
|
+
# Test setup
|
|
453
|
+
export TEST_DIR="$(mktemp -d)"
|
|
454
|
+
source ./script_to_test.sh
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
teardown() {
|
|
458
|
+
# Cleanup
|
|
459
|
+
rm -rf "${TEST_DIR}"
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
@test "validate_input accepts valid email" {
|
|
463
|
+
run validate_input "user@example.com" '^[^@]+@[^@]+\.[^@]+$' "Invalid email"
|
|
464
|
+
[ "$status" -eq 0 ]
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
@test "validate_input rejects invalid email" {
|
|
468
|
+
run validate_input "invalid-email" '^[^@]+@[^@]+\.[^@]+$' "Invalid email"
|
|
469
|
+
[ "$status" -eq 1 ]
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
@test "check_dependencies finds all required commands" {
|
|
473
|
+
# Mock commands
|
|
474
|
+
function command() {
|
|
475
|
+
[[ "$2" == "git" ]] || [[ "$2" == "docker" ]] || [[ "$2" == "curl" ]]
|
|
476
|
+
}
|
|
477
|
+
export -f command
|
|
478
|
+
|
|
479
|
+
run check_dependencies
|
|
480
|
+
[ "$status" -eq 0 ]
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
@test "cleanup removes PID file" {
|
|
484
|
+
echo "$$" > "${TEST_DIR}/test.pid"
|
|
485
|
+
PID_FILE="${TEST_DIR}/test.pid"
|
|
486
|
+
|
|
487
|
+
cleanup
|
|
488
|
+
|
|
489
|
+
[ ! -f "${PID_FILE}" ]
|
|
490
|
+
}
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
## Best Practices
|
|
494
|
+
|
|
495
|
+
### Script Design
|
|
496
|
+
|
|
497
|
+
- **Use shellcheck**: Validate scripts for common issues
|
|
498
|
+
- **Set strict mode**: set -euo pipefail
|
|
499
|
+
- **Quote variables**: Prevent word splitting
|
|
500
|
+
- **Use functions**: Modular, reusable code
|
|
501
|
+
- **Document thoroughly**: Comments and usage info
|
|
502
|
+
|
|
503
|
+
### Error Handling
|
|
504
|
+
|
|
505
|
+
- **Trap errors**: Use trap for cleanup
|
|
506
|
+
- **Check return codes**: Validate command success
|
|
507
|
+
- **Provide context**: Meaningful error messages
|
|
508
|
+
- **Log everything**: Audit trail for debugging
|
|
509
|
+
- **Graceful degradation**: Handle failures appropriately
|
|
510
|
+
|
|
511
|
+
### Performance
|
|
512
|
+
|
|
513
|
+
- **Avoid subshells**: Use built-ins when possible
|
|
514
|
+
- **Minimize external calls**: Batch operations
|
|
515
|
+
- **Use process substitution**: Instead of temp files
|
|
516
|
+
- **Parallel execution**: GNU parallel for bulk ops
|
|
517
|
+
- **Profile scripts**: time and strace for analysis
|
|
518
|
+
|
|
519
|
+
### Security
|
|
520
|
+
|
|
521
|
+
- **Validate input**: Never trust user input
|
|
522
|
+
- **Use absolute paths**: Avoid PATH manipulation
|
|
523
|
+
- **Secure temp files**: mktemp with proper permissions
|
|
524
|
+
- **Avoid eval**: Use safer alternatives
|
|
525
|
+
- **Principle of least privilege**: Minimal permissions
|
|
526
|
+
|
|
527
|
+
## Self-Verification Protocol
|
|
528
|
+
|
|
529
|
+
Before delivering any solution, verify:
|
|
530
|
+
- [ ] Context7 documentation has been consulted
|
|
531
|
+
- [ ] Script passes shellcheck validation
|
|
532
|
+
- [ ] Error handling is comprehensive
|
|
533
|
+
- [ ] All variables are quoted properly
|
|
534
|
+
- [ ] Functions are documented
|
|
535
|
+
- [ ] Script is POSIX compliant if needed
|
|
536
|
+
- [ ] Security considerations addressed
|
|
537
|
+
- [ ] Performance is optimized
|
|
538
|
+
- [ ] Tests are included (if applicable)
|
|
539
|
+
- [ ] Usage documentation is complete
|
|
540
|
+
|
|
541
|
+
You are an expert in creating robust, efficient, and maintainable Bash scripts for production environments.
|