claude-autopm 2.8.1 → 2.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +399 -529
- package/bin/autopm.js +2 -0
- package/bin/commands/plugin.js +395 -0
- package/bin/commands/team.js +184 -10
- package/install/install.js +223 -4
- package/lib/plugins/PluginManager.js +1328 -0
- package/lib/plugins/PluginManager.old.js +400 -0
- package/package.json +5 -1
- package/packages/plugin-ai/LICENSE +21 -0
- package/packages/plugin-ai/README.md +316 -0
- package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
- package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
- package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
- package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
- package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
- package/packages/plugin-ai/commands/a2a-setup.md +886 -0
- package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
- package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
- package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
- package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
- package/packages/plugin-ai/commands/llm-optimize.md +348 -0
- package/packages/plugin-ai/commands/openai-optimize.md +863 -0
- package/packages/plugin-ai/commands/rag-optimize.md +841 -0
- package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
- package/packages/plugin-ai/package.json +66 -0
- package/packages/plugin-ai/plugin.json +519 -0
- package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
- package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
- package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
- package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
- package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
- package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
- package/packages/plugin-cloud/README.md +268 -0
- package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
- package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
- package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
- package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
- package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
- package/packages/plugin-cloud/package.json +64 -0
- package/packages/plugin-cloud/plugin.json +338 -0
- package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
- package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
- package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
- package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
- package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
- package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
- package/packages/plugin-core/README.md +274 -0
- package/packages/plugin-core/commands/code-rabbit.md +128 -0
- package/packages/plugin-core/commands/prompt.md +9 -0
- package/packages/plugin-core/commands/re-init.md +9 -0
- package/packages/plugin-core/hooks/context7-reminder.md +29 -0
- package/packages/plugin-core/hooks/enforce-agents.js +125 -0
- package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
- package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
- package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
- package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
- package/packages/plugin-core/hooks/test-hook.sh +21 -0
- package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
- package/packages/plugin-core/package.json +45 -0
- package/packages/plugin-core/plugin.json +387 -0
- package/packages/plugin-core/rules/agent-coordination.md +549 -0
- package/packages/plugin-core/rules/agent-mandatory.md +170 -0
- package/packages/plugin-core/rules/command-pipelines.md +208 -0
- package/packages/plugin-core/rules/context-optimization.md +176 -0
- package/packages/plugin-core/rules/context7-enforcement.md +327 -0
- package/packages/plugin-core/rules/datetime.md +122 -0
- package/packages/plugin-core/rules/definition-of-done.md +272 -0
- package/packages/plugin-core/rules/development-environments.md +19 -0
- package/packages/plugin-core/rules/development-workflow.md +198 -0
- package/packages/plugin-core/rules/framework-path-rules.md +180 -0
- package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
- package/packages/plugin-core/rules/git-strategy.md +237 -0
- package/packages/plugin-core/rules/golden-rules.md +181 -0
- package/packages/plugin-core/rules/naming-conventions.md +111 -0
- package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
- package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
- package/packages/plugin-core/rules/security-checklist.md +318 -0
- package/packages/plugin-core/rules/standard-patterns.md +197 -0
- package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
- package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
- package/packages/plugin-core/rules/use-ast-grep.md +113 -0
- package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
- package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
- package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
- package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
- package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
- package/packages/plugin-core/scripts/mcp/add.sh +7 -0
- package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
- package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
- package/packages/plugin-core/scripts/mcp/list.sh +7 -0
- package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
- package/packages/plugin-data/README.md +315 -0
- package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
- package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
- package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
- package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
- package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
- package/packages/plugin-data/package.json +66 -0
- package/packages/plugin-data/plugin.json +294 -0
- package/packages/plugin-data/rules/data-quality-standards.md +373 -0
- package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
- package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
- package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
- package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
- package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
- package/packages/plugin-databases/README.md +330 -0
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/bigquery-expert.md +24 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/cosmosdb-expert.md +22 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/mongodb-expert.md +24 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/postgresql-expert.md +23 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/redis-expert.md +29 -7
- package/packages/plugin-databases/commands/db-optimize.md +612 -0
- package/packages/plugin-databases/package.json +60 -0
- package/packages/plugin-databases/plugin.json +237 -0
- package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
- package/packages/plugin-databases/rules/database-pipeline.md +316 -0
- package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
- package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
- package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
- package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
- package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
- package/packages/plugin-devops/README.md +367 -0
- package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/github-operations-specialist.md +1 -1
- package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
- package/packages/plugin-devops/commands/docker-optimize.md +493 -0
- package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
- package/packages/plugin-devops/package.json +61 -0
- package/packages/plugin-devops/plugin.json +302 -0
- package/packages/plugin-devops/rules/github-operations.md +92 -0
- package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
- package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
- package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
- package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
- package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
- package/packages/plugin-frameworks/README.md +309 -0
- package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/e2e-test-engineer.md +219 -0
- package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/react-frontend-engineer.md +176 -0
- package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/tailwindcss-expert.md +251 -0
- package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
- package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
- package/packages/plugin-frameworks/package.json +59 -0
- package/packages/plugin-frameworks/plugin.json +224 -0
- package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
- package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
- package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
- package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
- package/packages/plugin-languages/README.md +333 -0
- package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
- package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
- package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
- package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
- package/packages/plugin-languages/commands/python-optimize.md +593 -0
- package/packages/plugin-languages/package.json +65 -0
- package/packages/plugin-languages/plugin.json +265 -0
- package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
- package/packages/plugin-languages/rules/testing-standards.md +768 -0
- package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
- package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
- package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
- package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
- package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
- package/packages/plugin-ml/README.md +430 -0
- package/packages/plugin-ml/agents/automl-expert.md +326 -0
- package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
- package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
- package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
- package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
- package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
- package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
- package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
- package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
- package/packages/plugin-ml/agents/time-series-expert.md +303 -0
- package/packages/plugin-ml/commands/ml-automl.md +572 -0
- package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
- package/packages/plugin-ml/package.json +52 -0
- package/packages/plugin-ml/plugin.json +338 -0
- package/packages/plugin-pm/README.md +368 -0
- package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
- package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
- package/packages/plugin-pm/package.json +57 -0
- package/packages/plugin-pm/plugin.json +503 -0
- package/packages/plugin-testing/README.md +401 -0
- package/{autopm/.claude/agents/testing → packages/plugin-testing/agents}/frontend-testing-engineer.md +373 -0
- package/packages/plugin-testing/commands/jest-optimize.md +800 -0
- package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
- package/packages/plugin-testing/commands/test-coverage.md +512 -0
- package/packages/plugin-testing/commands/test-performance.md +1041 -0
- package/packages/plugin-testing/commands/test-setup.md +414 -0
- package/packages/plugin-testing/package.json +40 -0
- package/packages/plugin-testing/plugin.json +197 -0
- package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
- package/packages/plugin-testing/rules/testing-standards.md +529 -0
- package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
- package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
- package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
- package/scripts/publish-plugins.sh +166 -0
- package/autopm/.claude/agents/data/airflow-orchestration-expert.md +0 -52
- package/autopm/.claude/agents/data/kedro-pipeline-expert.md +0 -50
- package/autopm/.claude/agents/integration/message-queue-engineer.md +0 -794
- package/autopm/.claude/commands/ai/langgraph-workflow.md +0 -65
- package/autopm/.claude/commands/ai/openai-chat.md +0 -65
- package/autopm/.claude/commands/playwright/test-scaffold.md +0 -38
- package/autopm/.claude/commands/python/api-scaffold.md +0 -50
- package/autopm/.claude/commands/python/docs-query.md +0 -48
- package/autopm/.claude/commands/testing/prime.md +0 -314
- package/autopm/.claude/commands/testing/run.md +0 -125
- package/autopm/.claude/commands/ui/bootstrap-scaffold.md +0 -65
- package/autopm/.claude/rules/database-management-strategy.md +0 -17
- package/autopm/.claude/rules/database-pipeline.md +0 -94
- package/autopm/.claude/rules/ux-design-rules.md +0 -209
- package/autopm/.claude/rules/visual-testing.md +0 -223
- package/autopm/.claude/scripts/azure/README.md +0 -192
- package/autopm/.claude/scripts/azure/active-work.js +0 -524
- package/autopm/.claude/scripts/azure/active-work.sh +0 -20
- package/autopm/.claude/scripts/azure/blocked.js +0 -520
- package/autopm/.claude/scripts/azure/blocked.sh +0 -20
- package/autopm/.claude/scripts/azure/daily.js +0 -533
- package/autopm/.claude/scripts/azure/daily.sh +0 -20
- package/autopm/.claude/scripts/azure/dashboard.js +0 -970
- package/autopm/.claude/scripts/azure/dashboard.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-list.js +0 -254
- package/autopm/.claude/scripts/azure/feature-list.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-show.js +0 -7
- package/autopm/.claude/scripts/azure/feature-show.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-status.js +0 -604
- package/autopm/.claude/scripts/azure/feature-status.sh +0 -20
- package/autopm/.claude/scripts/azure/help.js +0 -342
- package/autopm/.claude/scripts/azure/help.sh +0 -20
- package/autopm/.claude/scripts/azure/next-task.js +0 -508
- package/autopm/.claude/scripts/azure/next-task.sh +0 -20
- package/autopm/.claude/scripts/azure/search.js +0 -469
- package/autopm/.claude/scripts/azure/search.sh +0 -20
- package/autopm/.claude/scripts/azure/setup.js +0 -745
- package/autopm/.claude/scripts/azure/setup.sh +0 -20
- package/autopm/.claude/scripts/azure/sprint-report.js +0 -1012
- package/autopm/.claude/scripts/azure/sprint-report.sh +0 -20
- package/autopm/.claude/scripts/azure/sync.js +0 -563
- package/autopm/.claude/scripts/azure/sync.sh +0 -20
- package/autopm/.claude/scripts/azure/us-list.js +0 -210
- package/autopm/.claude/scripts/azure/us-list.sh +0 -20
- package/autopm/.claude/scripts/azure/us-status.js +0 -238
- package/autopm/.claude/scripts/azure/us-status.sh +0 -20
- package/autopm/.claude/scripts/azure/validate.js +0 -626
- package/autopm/.claude/scripts/azure/validate.sh +0 -20
- package/autopm/.claude/scripts/azure/wrapper-template.sh +0 -20
- package/autopm/.claude/scripts/github/dependency-tracker.js +0 -554
- package/autopm/.claude/scripts/github/dependency-validator.js +0 -545
- package/autopm/.claude/scripts/github/dependency-visualizer.js +0 -477
- package/bin/node/azure-feature-show.js +0 -7
- /package/{autopm/.claude/agents/cloud → packages/plugin-ai/agents}/gemini-api-expert.md +0 -0
- /package/{autopm/.claude/agents/data → packages/plugin-ai/agents}/langgraph-workflow-expert.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-ai/agents}/openai-python-expert.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/aws-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/azure-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/gcp-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/gcp-cloud-functions-engineer.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/kubernetes-orchestrator.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/terraform-infrastructure-expert.md +0 -0
- /package/{autopm/.claude/commands/cloud → packages/plugin-cloud/commands}/infra-deploy.md +0 -0
- /package/{autopm/.claude/commands/kubernetes/deploy.md → packages/plugin-cloud/commands/k8s-deploy.md} +0 -0
- /package/{autopm/.claude/commands/infrastructure → packages/plugin-cloud/commands}/ssh-security.md +0 -0
- /package/{autopm/.claude/commands/infrastructure → packages/plugin-cloud/commands}/traefik-setup.md +0 -0
- /package/{autopm/.claude → packages/plugin-cloud}/rules/infrastructure-pipeline.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/agent-manager.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/code-analyzer.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/file-analyzer.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/test-runner.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/rules/ai-integration-patterns.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/rules/performance-guidelines.md +0 -0
- /package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/azure-devops-specialist.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/docker-containerization-expert.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/mcp-context-manager.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/observability-engineer.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/ssh-operations-expert.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/traefik-proxy-expert.md +0 -0
- /package/{autopm/.claude/commands/github → packages/plugin-devops/commands}/workflow-create.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/ci-cd-kubernetes-strategy.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/devops-troubleshooting-playbook.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/docker-first-development.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/nats-messaging-expert.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/react-ui-expert.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/ux-design-expert.md +0 -0
- /package/{autopm/.claude/commands/react → packages/plugin-frameworks/commands}/app-scaffold.md +0 -0
- /package/{autopm/.claude/commands/ui → packages/plugin-frameworks/commands}/tailwind-system.md +0 -0
- /package/{autopm/.claude → packages/plugin-frameworks}/rules/ui-development-standards.md +0 -0
- /package/{autopm/.claude → packages/plugin-frameworks}/rules/ui-framework-rules.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/bash-scripting-expert.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/javascript-frontend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/nodejs-backend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/python-backend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/python-backend-expert.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/COMMANDS.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/COMMAND_MAPPING.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/INTEGRATION_FIX.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/active-work.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/aliases.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/blocked-items.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/clean.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/docs-query.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-decompose.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-start.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/fix-integration-example.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/help.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/import-us.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/init.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/next-task.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/search.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/sprint-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/standup.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/sync-all.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-analyze.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-close.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-edit.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-reopen.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-start.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-sync.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-edit.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-parse.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/validate.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/work-item-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/blocked.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/clean.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-create.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-prime.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-update.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-close.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-decompose.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-list.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-merge.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-oneshot.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-refresh.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-show.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-split.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-start.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync-modular.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync-original.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/help.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/import.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/in-progress.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/init.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-analyze.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-close.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-reopen.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-show.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-start.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/next.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-list.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-new.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-parse.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/search.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/standup.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/test-reference-update.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/validate.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/what-next.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/analytics.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/blocked.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/blocked.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/clean.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-create.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-prime.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-update.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-close.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-edit.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-list.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-show.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-show.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-split.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-start/epic-start.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-start/epic-start.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/create-epic-issue.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/create-task-issues.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/update-epic-file.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/update-references.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/help.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/help.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/in-progress.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/in-progress.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/init.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/init.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-close.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-edit.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-show.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-start.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/format-comment.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/gather-updates.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/post-comment.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/preflight-validation.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/update-frontmatter.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/epic-discovery.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/logger.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/next.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/next.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/optimize.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/pr-create.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/pr-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-list.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-new.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-parse.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/release.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/search.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/search.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/standup.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/standup.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/sync-batch.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/sync.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/template-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/template-new.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/validate.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/validate.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/what-next.js +0 -0
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
# docker:optimize
|
|
2
|
+
|
|
3
|
+
Optimize Docker images for size, security, and build performance using Context7-verified best practices.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
Analyzes and optimizes Docker images and Dockerfiles following industry best practices from Docker official documentation:
|
|
8
|
+
- Multi-stage build optimization
|
|
9
|
+
- Layer caching efficiency
|
|
10
|
+
- Image size reduction
|
|
11
|
+
- Security hardening
|
|
12
|
+
- Build performance improvements
|
|
13
|
+
- Base image recommendations
|
|
14
|
+
|
|
15
|
+
## Required Documentation Access
|
|
16
|
+
|
|
17
|
+
**MANDATORY:** Before executing optimization, query Context7 for best practices:
|
|
18
|
+
|
|
19
|
+
**Documentation Queries:**
|
|
20
|
+
- `mcp://context7/docker/best-practices` - Docker image best practices
|
|
21
|
+
- `mcp://context7/docker/multi-stage-builds` - Multi-stage build patterns
|
|
22
|
+
- `mcp://context7/docker/security` - Docker security hardening
|
|
23
|
+
- `mcp://context7/docker/buildkit` - BuildKit optimization features
|
|
24
|
+
- `mcp://context7/containers/security` - Container security standards
|
|
25
|
+
|
|
26
|
+
**Why This is Required:**
|
|
27
|
+
- Ensures optimization follows official Docker best practices
|
|
28
|
+
- Applies latest BuildKit features and capabilities
|
|
29
|
+
- Validates security hardening measures
|
|
30
|
+
- Prevents anti-patterns and vulnerabilities
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
/docker:optimize [options]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Options
|
|
39
|
+
|
|
40
|
+
- `--dockerfile <path>` - Path to Dockerfile (default: ./Dockerfile)
|
|
41
|
+
- `--analyze-only` - Analyze without applying changes
|
|
42
|
+
- `--output <path>` - Write optimized Dockerfile to specified path
|
|
43
|
+
- `--target <stage>` - Optimize specific build stage
|
|
44
|
+
- `--security` - Focus on security optimizations
|
|
45
|
+
- `--size` - Focus on image size reduction
|
|
46
|
+
- `--speed` - Focus on build speed optimization
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
|
|
50
|
+
### Analyze Current Dockerfile
|
|
51
|
+
```bash
|
|
52
|
+
/docker:optimize --analyze-only
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Optimize for Size
|
|
56
|
+
```bash
|
|
57
|
+
/docker:optimize --size --output Dockerfile.optimized
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Security-Focused Optimization
|
|
61
|
+
```bash
|
|
62
|
+
/docker:optimize --security
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Optimize Specific Build Stage
|
|
66
|
+
```bash
|
|
67
|
+
/docker:optimize --target production --output Dockerfile.prod
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Optimization Categories
|
|
71
|
+
|
|
72
|
+
### 1. Multi-Stage Build Optimization
|
|
73
|
+
|
|
74
|
+
**Pattern from Context7 (/docker/docs):**
|
|
75
|
+
```dockerfile
|
|
76
|
+
# BEFORE: Single-stage (large image)
|
|
77
|
+
FROM node:18
|
|
78
|
+
WORKDIR /app
|
|
79
|
+
COPY package*.json ./
|
|
80
|
+
RUN npm install
|
|
81
|
+
COPY . .
|
|
82
|
+
RUN npm run build
|
|
83
|
+
CMD ["npm", "start"]
|
|
84
|
+
|
|
85
|
+
# AFTER: Multi-stage (optimized)
|
|
86
|
+
# Build stage
|
|
87
|
+
FROM node:18-alpine AS builder
|
|
88
|
+
WORKDIR /app
|
|
89
|
+
COPY package*.json ./
|
|
90
|
+
RUN npm ci --only=production
|
|
91
|
+
COPY . .
|
|
92
|
+
RUN npm run build
|
|
93
|
+
|
|
94
|
+
# Production stage
|
|
95
|
+
FROM node:18-alpine
|
|
96
|
+
WORKDIR /app
|
|
97
|
+
COPY --from=builder /app/dist ./dist
|
|
98
|
+
COPY --from=builder /app/node_modules ./node_modules
|
|
99
|
+
USER node
|
|
100
|
+
CMD ["node", "dist/index.js"]
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Benefits:**
|
|
104
|
+
- 60-80% smaller final image
|
|
105
|
+
- No build tools in production
|
|
106
|
+
- Faster deployment times
|
|
107
|
+
- Reduced attack surface
|
|
108
|
+
|
|
109
|
+
### 2. Layer Caching Efficiency
|
|
110
|
+
|
|
111
|
+
**Pattern from Context7:**
|
|
112
|
+
```dockerfile
|
|
113
|
+
# BEFORE: Poor caching
|
|
114
|
+
COPY . .
|
|
115
|
+
RUN npm install
|
|
116
|
+
|
|
117
|
+
# AFTER: Optimized caching
|
|
118
|
+
COPY package*.json ./
|
|
119
|
+
RUN npm ci --only=production
|
|
120
|
+
COPY . .
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Benefits:**
|
|
124
|
+
- Faster rebuilds (cache reuse)
|
|
125
|
+
- Dependency layer cached separately
|
|
126
|
+
- Source changes don't invalidate dependency cache
|
|
127
|
+
|
|
128
|
+
### 3. Base Image Optimization
|
|
129
|
+
|
|
130
|
+
**Pattern from Context7:**
|
|
131
|
+
```dockerfile
|
|
132
|
+
# BEFORE: Full image (1.2GB)
|
|
133
|
+
FROM node:18
|
|
134
|
+
|
|
135
|
+
# AFTER: Alpine image (150MB)
|
|
136
|
+
FROM node:18-alpine
|
|
137
|
+
|
|
138
|
+
# BEST: Distroless (50MB)
|
|
139
|
+
FROM gcr.io/distroless/nodejs18-debian11
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Recommendations by Use Case:**
|
|
143
|
+
- **Development:** Full image (tools, debugging)
|
|
144
|
+
- **Production:** Alpine (small, secure)
|
|
145
|
+
- **High Security:** Distroless (minimal attack surface)
|
|
146
|
+
|
|
147
|
+
### 4. Security Hardening
|
|
148
|
+
|
|
149
|
+
**Pattern from Context7:**
|
|
150
|
+
```dockerfile
|
|
151
|
+
# Security best practices
|
|
152
|
+
FROM node:18-alpine AS builder
|
|
153
|
+
|
|
154
|
+
# Create non-root user
|
|
155
|
+
RUN addgroup -g 1001 -S nodejs && \
|
|
156
|
+
adduser -S nodejs -u 1001
|
|
157
|
+
|
|
158
|
+
WORKDIR /app
|
|
159
|
+
COPY --chown=nodejs:nodejs package*.json ./
|
|
160
|
+
RUN npm ci --only=production
|
|
161
|
+
|
|
162
|
+
COPY --chown=nodejs:nodejs . .
|
|
163
|
+
|
|
164
|
+
# Drop to non-root user
|
|
165
|
+
USER nodejs
|
|
166
|
+
|
|
167
|
+
# Read-only root filesystem
|
|
168
|
+
CMD ["node", "--frozen-intrinsics", "index.js"]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Security Measures:**
|
|
172
|
+
- ✅ Non-root user (USER directive)
|
|
173
|
+
- ✅ File ownership (--chown flag)
|
|
174
|
+
- ✅ Minimal base image (Alpine/Distroless)
|
|
175
|
+
- ✅ No unnecessary packages
|
|
176
|
+
- ✅ Security scanning integrated
|
|
177
|
+
|
|
178
|
+
### 5. Build Performance
|
|
179
|
+
|
|
180
|
+
**Pattern from Context7 (BuildKit):**
|
|
181
|
+
```dockerfile
|
|
182
|
+
# syntax=docker/dockerfile:1
|
|
183
|
+
|
|
184
|
+
# Use BuildKit cache mounts
|
|
185
|
+
FROM node:18-alpine AS deps
|
|
186
|
+
WORKDIR /app
|
|
187
|
+
COPY package*.json ./
|
|
188
|
+
RUN --mount=type=cache,target=/root/.npm \
|
|
189
|
+
npm ci --only=production
|
|
190
|
+
|
|
191
|
+
# Parallel build stages
|
|
192
|
+
FROM deps AS build
|
|
193
|
+
COPY . .
|
|
194
|
+
RUN --mount=type=cache,target=/root/.npm \
|
|
195
|
+
npm run build
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**BuildKit Features:**
|
|
199
|
+
- `--mount=type=cache` - Persistent cache
|
|
200
|
+
- `--mount=type=secret` - Secure secret handling
|
|
201
|
+
- `--mount=type=bind` - Temporary file binding
|
|
202
|
+
- Parallel build stages
|
|
203
|
+
- Skip unused stages
|
|
204
|
+
|
|
205
|
+
### 6. .dockerignore Optimization
|
|
206
|
+
|
|
207
|
+
**Pattern from Context7:**
|
|
208
|
+
```dockerignore
|
|
209
|
+
# Version control
|
|
210
|
+
.git
|
|
211
|
+
.gitignore
|
|
212
|
+
.github
|
|
213
|
+
|
|
214
|
+
# Dependencies
|
|
215
|
+
node_modules
|
|
216
|
+
npm-debug.log*
|
|
217
|
+
|
|
218
|
+
# Build outputs
|
|
219
|
+
dist
|
|
220
|
+
build
|
|
221
|
+
coverage
|
|
222
|
+
|
|
223
|
+
# IDE
|
|
224
|
+
.vscode
|
|
225
|
+
.idea
|
|
226
|
+
*.swp
|
|
227
|
+
|
|
228
|
+
# Environment
|
|
229
|
+
.env
|
|
230
|
+
.env.local
|
|
231
|
+
*.log
|
|
232
|
+
|
|
233
|
+
# Documentation
|
|
234
|
+
README.md
|
|
235
|
+
docs/
|
|
236
|
+
*.md
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Benefits:**
|
|
240
|
+
- Smaller build context
|
|
241
|
+
- Faster uploads to Docker daemon
|
|
242
|
+
- No sensitive files in image
|
|
243
|
+
- Cleaner final image
|
|
244
|
+
|
|
245
|
+
## Analysis Output
|
|
246
|
+
|
|
247
|
+
### Console Output
|
|
248
|
+
```
|
|
249
|
+
🐳 Docker Image Optimization Analysis
|
|
250
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
251
|
+
|
|
252
|
+
Current Dockerfile: ./Dockerfile
|
|
253
|
+
Current Image Size: 1.2 GB
|
|
254
|
+
Optimization Potential: ~900 MB (75% reduction)
|
|
255
|
+
|
|
256
|
+
Findings:
|
|
257
|
+
|
|
258
|
+
📦 Image Size Optimization
|
|
259
|
+
⚠️ Using full node:18 image (1.2 GB)
|
|
260
|
+
💡 Recommendation: Switch to node:18-alpine (150 MB)
|
|
261
|
+
💰 Savings: ~1.05 GB
|
|
262
|
+
|
|
263
|
+
🏗️ Multi-Stage Build
|
|
264
|
+
❌ No multi-stage build detected
|
|
265
|
+
💡 Recommendation: Separate build and runtime stages
|
|
266
|
+
💰 Savings: ~200 MB (dev dependencies removed)
|
|
267
|
+
|
|
268
|
+
🔒 Security
|
|
269
|
+
⚠️ Running as root user
|
|
270
|
+
💡 Recommendation: Create and use non-root user
|
|
271
|
+
🛡️ Security: High priority
|
|
272
|
+
|
|
273
|
+
⚠️ Base image not specified with digest
|
|
274
|
+
💡 Recommendation: Pin base image with SHA256 digest
|
|
275
|
+
🛡️ Security: Medium priority
|
|
276
|
+
|
|
277
|
+
📝 Layer Caching
|
|
278
|
+
⚠️ COPY . before dependency install
|
|
279
|
+
💡 Recommendation: Copy package.json first, then install
|
|
280
|
+
⚡ Performance: Faster rebuilds
|
|
281
|
+
|
|
282
|
+
🚀 BuildKit Features
|
|
283
|
+
❌ Not using BuildKit cache mounts
|
|
284
|
+
💡 Recommendation: Add cache mounts for npm cache
|
|
285
|
+
⚡ Performance: 50% faster builds
|
|
286
|
+
|
|
287
|
+
.dockerignore
|
|
288
|
+
⚠️ .dockerignore file missing
|
|
289
|
+
💡 Recommendation: Create .dockerignore
|
|
290
|
+
📦 Size: ~50 MB reduction
|
|
291
|
+
|
|
292
|
+
Summary:
|
|
293
|
+
Total Size Reduction: ~900 MB (75%)
|
|
294
|
+
Security Improvements: 3 high-priority items
|
|
295
|
+
Build Time Improvement: ~50%
|
|
296
|
+
Cache Efficiency: Significantly improved
|
|
297
|
+
|
|
298
|
+
Recommended Actions:
|
|
299
|
+
1. Implement multi-stage build
|
|
300
|
+
2. Switch to Alpine base image
|
|
301
|
+
3. Add non-root user
|
|
302
|
+
4. Create .dockerignore
|
|
303
|
+
5. Optimize layer caching
|
|
304
|
+
6. Enable BuildKit features
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Optimized Dockerfile Generated
|
|
308
|
+
|
|
309
|
+
```dockerfile
|
|
310
|
+
# syntax=docker/dockerfile:1
|
|
311
|
+
|
|
312
|
+
#
|
|
313
|
+
# Multi-stage optimized Dockerfile
|
|
314
|
+
# Generated by docker:optimize
|
|
315
|
+
# Based on Context7 best practices from /docker/docs
|
|
316
|
+
#
|
|
317
|
+
|
|
318
|
+
# Stage 1: Dependencies
|
|
319
|
+
FROM node:18-alpine@sha256:abc123... AS deps
|
|
320
|
+
|
|
321
|
+
# Install security updates
|
|
322
|
+
RUN apk add --no-cache dumb-init
|
|
323
|
+
|
|
324
|
+
# Create non-root user
|
|
325
|
+
RUN addgroup -g 1001 -S nodejs && \
|
|
326
|
+
adduser -S nodejs -u 1001
|
|
327
|
+
|
|
328
|
+
WORKDIR /app
|
|
329
|
+
|
|
330
|
+
# Copy dependency files
|
|
331
|
+
COPY --chown=nodejs:nodejs package*.json ./
|
|
332
|
+
|
|
333
|
+
# Install dependencies with cache mount
|
|
334
|
+
RUN --mount=type=cache,target=/root/.npm \
|
|
335
|
+
npm ci --only=production && \
|
|
336
|
+
npm cache clean --force
|
|
337
|
+
|
|
338
|
+
# Stage 2: Build
|
|
339
|
+
FROM deps AS build
|
|
340
|
+
|
|
341
|
+
# Copy source code
|
|
342
|
+
COPY --chown=nodejs:nodejs . .
|
|
343
|
+
|
|
344
|
+
# Build application
|
|
345
|
+
RUN --mount=type=cache,target=/root/.npm \
|
|
346
|
+
npm run build
|
|
347
|
+
|
|
348
|
+
# Stage 3: Production
|
|
349
|
+
FROM node:18-alpine@sha256:abc123...
|
|
350
|
+
|
|
351
|
+
# Install dumb-init
|
|
352
|
+
RUN apk add --no-cache dumb-init
|
|
353
|
+
|
|
354
|
+
# Create non-root user
|
|
355
|
+
RUN addgroup -g 1001 -S nodejs && \
|
|
356
|
+
adduser -S nodejs -u 1001
|
|
357
|
+
|
|
358
|
+
WORKDIR /app
|
|
359
|
+
|
|
360
|
+
# Copy only necessary files
|
|
361
|
+
COPY --from=deps --chown=nodejs:nodejs /app/node_modules ./node_modules
|
|
362
|
+
COPY --from=build --chown=nodejs:nodejs /app/dist ./dist
|
|
363
|
+
COPY --from=build --chown=nodejs:nodejs /app/package.json ./
|
|
364
|
+
|
|
365
|
+
# Drop privileges
|
|
366
|
+
USER nodejs
|
|
367
|
+
|
|
368
|
+
# Health check
|
|
369
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
370
|
+
CMD node -e "require('http').get('http://localhost:3000/health', (r) => r.statusCode === 200 ? process.exit(0) : process.exit(1))"
|
|
371
|
+
|
|
372
|
+
# Use dumb-init for proper signal handling
|
|
373
|
+
ENTRYPOINT ["dumb-init", "--"]
|
|
374
|
+
|
|
375
|
+
# Start application
|
|
376
|
+
CMD ["node", "dist/index.js"]
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### .dockerignore Generated
|
|
380
|
+
|
|
381
|
+
```dockerignore
|
|
382
|
+
# Version control
|
|
383
|
+
.git
|
|
384
|
+
.gitignore
|
|
385
|
+
.github
|
|
386
|
+
.gitattributes
|
|
387
|
+
|
|
388
|
+
# Dependencies
|
|
389
|
+
node_modules
|
|
390
|
+
npm-debug.log*
|
|
391
|
+
yarn-debug.log*
|
|
392
|
+
yarn-error.log*
|
|
393
|
+
|
|
394
|
+
# Build outputs
|
|
395
|
+
dist
|
|
396
|
+
build
|
|
397
|
+
coverage
|
|
398
|
+
.next
|
|
399
|
+
out
|
|
400
|
+
|
|
401
|
+
# Testing
|
|
402
|
+
__tests__
|
|
403
|
+
*.test.js
|
|
404
|
+
*.spec.js
|
|
405
|
+
test/
|
|
406
|
+
coverage/
|
|
407
|
+
|
|
408
|
+
# IDE
|
|
409
|
+
.vscode
|
|
410
|
+
.idea
|
|
411
|
+
*.swp
|
|
412
|
+
*.swo
|
|
413
|
+
.DS_Store
|
|
414
|
+
|
|
415
|
+
# Environment
|
|
416
|
+
.env
|
|
417
|
+
.env.*
|
|
418
|
+
!.env.example
|
|
419
|
+
|
|
420
|
+
# Documentation
|
|
421
|
+
README.md
|
|
422
|
+
docs/
|
|
423
|
+
*.md
|
|
424
|
+
LICENSE
|
|
425
|
+
|
|
426
|
+
# CI/CD
|
|
427
|
+
.github/
|
|
428
|
+
.gitlab-ci.yml
|
|
429
|
+
azure-pipelines.yml
|
|
430
|
+
|
|
431
|
+
# Temporary files
|
|
432
|
+
*.log
|
|
433
|
+
*.tmp
|
|
434
|
+
tmp/
|
|
435
|
+
temp/
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
## Implementation
|
|
439
|
+
|
|
440
|
+
This command uses the **@docker-containerization-expert** agent:
|
|
441
|
+
|
|
442
|
+
1. Queries Context7 for Docker best practices
|
|
443
|
+
2. Analyzes current Dockerfile structure
|
|
444
|
+
3. Identifies optimization opportunities
|
|
445
|
+
4. Generates optimized Dockerfile
|
|
446
|
+
5. Creates .dockerignore if missing
|
|
447
|
+
6. Provides implementation guidance
|
|
448
|
+
|
|
449
|
+
## Best Practices Applied
|
|
450
|
+
|
|
451
|
+
Based on Context7 documentation from `/docker/docs`:
|
|
452
|
+
|
|
453
|
+
1. **Multi-Stage Builds** - Separate build and runtime
|
|
454
|
+
2. **Alpine Base Images** - Minimal attack surface
|
|
455
|
+
3. **Layer Caching** - Dependencies before source code
|
|
456
|
+
4. **Non-Root User** - Security hardening
|
|
457
|
+
5. **BuildKit Features** - Cache mounts, secrets
|
|
458
|
+
6. **Health Checks** - Container health monitoring
|
|
459
|
+
7. **.dockerignore** - Smaller build context
|
|
460
|
+
8. **Image Pinning** - SHA256 digests for reproducibility
|
|
461
|
+
9. **Security Scanning** - Integrated with build
|
|
462
|
+
10. **Signal Handling** - Proper init system (dumb-init)
|
|
463
|
+
|
|
464
|
+
## Related Commands
|
|
465
|
+
|
|
466
|
+
- `/docker:scan` - Security vulnerability scanning
|
|
467
|
+
- `/docker:build` - Build with optimization flags
|
|
468
|
+
- `/docker:analyze` - Deep image analysis
|
|
469
|
+
- `/cloud:validate` - Infrastructure validation
|
|
470
|
+
|
|
471
|
+
## Troubleshooting
|
|
472
|
+
|
|
473
|
+
### Build Failures
|
|
474
|
+
- Check BuildKit is enabled: `export DOCKER_BUILDKIT=1`
|
|
475
|
+
- Verify base image exists and is accessible
|
|
476
|
+
- Check network connectivity for package downloads
|
|
477
|
+
|
|
478
|
+
### Size Not Reduced
|
|
479
|
+
- Ensure .dockerignore is being used
|
|
480
|
+
- Check for large files in COPY commands
|
|
481
|
+
- Verify multi-stage build is working correctly
|
|
482
|
+
|
|
483
|
+
### Performance Issues
|
|
484
|
+
- Enable BuildKit cache: `--mount=type=cache`
|
|
485
|
+
- Use layer caching effectively
|
|
486
|
+
- Parallelize independent build stages
|
|
487
|
+
|
|
488
|
+
## Version History
|
|
489
|
+
|
|
490
|
+
- v2.0.0 - Initial Schema v2.0 release with Context7 integration
|
|
491
|
+
- Multi-stage build optimization
|
|
492
|
+
- Security hardening patterns
|
|
493
|
+
- BuildKit feature integration
|