@trieungoctam/vibekit 1.0.0
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/LICENSE +21 -0
- package/README.md +85 -0
- package/agents/debugger.md +158 -0
- package/agents/docs-manager.md +220 -0
- package/agents/planner.md +129 -0
- package/agents/researcher.md +58 -0
- package/agents/reviewer.md +152 -0
- package/agents/tester.md +126 -0
- package/bin/vibekit.js +18 -0
- package/hooks/lib/ck-config-utils.cjs +831 -0
- package/hooks/lib/colors.cjs +95 -0
- package/hooks/lib/config-counter.cjs +103 -0
- package/hooks/lib/context-builder.cjs +616 -0
- package/hooks/lib/git-info-cache.cjs +143 -0
- package/hooks/lib/hook-logger.cjs +92 -0
- package/hooks/lib/privacy-checker.cjs +297 -0
- package/hooks/lib/project-detector.cjs +474 -0
- package/hooks/lib/scout-checker.cjs +263 -0
- package/hooks/lib/transcript-parser.cjs +181 -0
- package/hooks/post-edit-simplify-reminder.cjs +156 -0
- package/hooks/privacy-block.cjs +166 -0
- package/hooks/scout-block.cjs +147 -0
- package/hooks/session-init.cjs +360 -0
- package/package.json +41 -0
- package/rules/development-rules.md +52 -0
- package/rules/documentation-management.md +121 -0
- package/rules/orchestration-protocol.md +43 -0
- package/rules/primary-workflow.md +57 -0
- package/rules/team-coordination-rules.md +90 -0
- package/skills/ai/agent-browser/SKILL.md +294 -0
- package/skills/ai/agent-browser/references/.gitkeep +0 -0
- package/skills/ai/agent-browser/references/agent-browser-vs-chrome-devtools.md +112 -0
- package/skills/ai/agent-browser/references/browserbase-cloud-setup.md +161 -0
- package/skills/ai/ai-artist/SKILL.md +122 -0
- package/skills/ai/ai-artist/data/awesome-prompts.csv +3592 -0
- package/skills/ai/ai-artist/data/lighting.csv +19 -0
- package/skills/ai/ai-artist/data/nano-banana-templates.csv +17 -0
- package/skills/ai/ai-artist/data/platforms.csv +11 -0
- package/skills/ai/ai-artist/data/styles.csv +26 -0
- package/skills/ai/ai-artist/data/techniques.csv +19 -0
- package/skills/ai/ai-artist/data/use-cases.csv +16 -0
- package/skills/ai/ai-artist/references/advanced-techniques.md +184 -0
- package/skills/ai/ai-artist/references/awesome-nano-banana-pro-prompts.md +8575 -0
- package/skills/ai/ai-artist/references/domain-code.md +66 -0
- package/skills/ai/ai-artist/references/domain-data.md +72 -0
- package/skills/ai/ai-artist/references/domain-marketing.md +66 -0
- package/skills/ai/ai-artist/references/domain-patterns.md +33 -0
- package/skills/ai/ai-artist/references/domain-writing.md +68 -0
- package/skills/ai/ai-artist/references/image-prompting.md +141 -0
- package/skills/ai/ai-artist/references/llm-prompting.md +165 -0
- package/skills/ai/ai-artist/references/nano-banana.md +136 -0
- package/skills/ai/ai-artist/references/reasoning-techniques.md +201 -0
- package/skills/ai/ai-artist/references/validation-workflow.md +117 -0
- package/skills/ai/ai-artist/scripts/core.py +197 -0
- package/skills/ai/ai-artist/scripts/extract_prompts.py +102 -0
- package/skills/ai/ai-artist/scripts/generate.py +370 -0
- package/skills/ai/ai-artist/scripts/search.py +147 -0
- package/skills/ai/ai-multimodal/.env.example +204 -0
- package/skills/ai/ai-multimodal/SKILL.md +110 -0
- package/skills/ai/ai-multimodal/references/audio-processing.md +387 -0
- package/skills/ai/ai-multimodal/references/image-generation.md +939 -0
- package/skills/ai/ai-multimodal/references/music-generation.md +311 -0
- package/skills/ai/ai-multimodal/references/video-analysis.md +515 -0
- package/skills/ai/ai-multimodal/references/video-generation.md +457 -0
- package/skills/ai/ai-multimodal/references/vision-understanding.md +492 -0
- package/skills/ai/ai-multimodal/scripts/.coverage +0 -0
- package/skills/ai/ai-multimodal/scripts/check_setup.py +315 -0
- package/skills/ai/ai-multimodal/scripts/document_converter.py +395 -0
- package/skills/ai/ai-multimodal/scripts/gemini_batch_process.py +1185 -0
- package/skills/ai/ai-multimodal/scripts/media_optimizer.py +506 -0
- package/skills/ai/ai-multimodal/scripts/requirements.txt +26 -0
- package/skills/ai/ai-multimodal/scripts/tests/.coverage +0 -0
- package/skills/ai/ai-multimodal/scripts/tests/requirements.txt +20 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_document_converter.py +74 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
- package/skills/ai/mcp-management/README.md +219 -0
- package/skills/ai/mcp-management/SKILL.md +210 -0
- package/skills/ai/mcp-management/assets/tools.json +3146 -0
- package/skills/ai/mcp-management/references/configuration.md +114 -0
- package/skills/ai/mcp-management/references/gemini-cli-integration.md +221 -0
- package/skills/ai/mcp-management/references/mcp-protocol.md +116 -0
- package/skills/ai/mcp-management/scripts/.env.example +10 -0
- package/skills/ai/mcp-management/scripts/cli.ts +195 -0
- package/skills/ai/mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/ai/mcp-management/scripts/dist/cli.js +160 -0
- package/skills/ai/mcp-management/scripts/dist/mcp-client.js +183 -0
- package/skills/ai/mcp-management/scripts/mcp-client.ts +230 -0
- package/skills/ai/mcp-management/scripts/package.json +20 -0
- package/skills/ai/mcp-management/scripts/tsconfig.json +15 -0
- package/skills/core/brainstorm/SKILL.md +164 -0
- package/skills/core/brainstorm/scripts/frame-template.html +214 -0
- package/skills/core/brainstorm/scripts/helper.js +88 -0
- package/skills/core/brainstorm/scripts/server.cjs +338 -0
- package/skills/core/brainstorm/scripts/start-server.sh +153 -0
- package/skills/core/brainstorm/scripts/stop-server.sh +55 -0
- package/skills/core/brainstorm/spec-document-reviewer-prompt.md +49 -0
- package/skills/core/brainstorm/visual-companion.md +286 -0
- package/skills/core/code-review/SKILL.md +147 -0
- package/skills/core/code-review/references/code-review-reception.md +113 -0
- package/skills/core/code-review/references/codebase-scan-workflow.md +29 -0
- package/skills/core/code-review/references/edge-case-scouting.md +119 -0
- package/skills/core/code-review/references/parallel-review-workflow.md +69 -0
- package/skills/core/code-review/references/requesting-code-review.md +116 -0
- package/skills/core/code-review/references/task-management-reviews.md +140 -0
- package/skills/core/code-review/references/verification-before-completion.md +139 -0
- package/skills/core/cook/README.md +86 -0
- package/skills/core/cook/SKILL.md +113 -0
- package/skills/core/cook/references/intent-detection.md +101 -0
- package/skills/core/cook/references/review-cycle.md +75 -0
- package/skills/core/cook/references/subagent-patterns.md +75 -0
- package/skills/core/cook/references/workflow-steps.md +172 -0
- package/skills/core/debug/SKILL.md +121 -0
- package/skills/core/debug/references/defense-in-depth.md +124 -0
- package/skills/core/debug/references/frontend-verification.md +103 -0
- package/skills/core/debug/references/investigation-methodology.md +101 -0
- package/skills/core/debug/references/log-and-ci-analysis.md +97 -0
- package/skills/core/debug/references/performance-diagnostics.md +113 -0
- package/skills/core/debug/references/reporting-standards.md +122 -0
- package/skills/core/debug/references/root-cause-tracing.md +122 -0
- package/skills/core/debug/references/systematic-debugging.md +102 -0
- package/skills/core/debug/references/task-management-debugging.md +155 -0
- package/skills/core/debug/references/verification.md +123 -0
- package/skills/core/debug/scripts/find-polluter.sh +63 -0
- package/skills/core/debug/scripts/find-polluter.test.md +102 -0
- package/skills/core/execute/SKILL.md +70 -0
- package/skills/core/fix/SKILL.md +111 -0
- package/skills/core/fix/references/complexity-assessment.md +72 -0
- package/skills/core/fix/references/mode-selection.md +46 -0
- package/skills/core/fix/references/parallel-exploration.md +100 -0
- package/skills/core/fix/references/review-cycle.md +77 -0
- package/skills/core/fix/references/skill-activation-matrix.md +78 -0
- package/skills/core/fix/references/task-orchestration.md +103 -0
- package/skills/core/fix/references/workflow-ci.md +28 -0
- package/skills/core/fix/references/workflow-deep.md +122 -0
- package/skills/core/fix/references/workflow-logs.md +72 -0
- package/skills/core/fix/references/workflow-quick.md +59 -0
- package/skills/core/fix/references/workflow-standard.md +111 -0
- package/skills/core/fix/references/workflow-test.md +75 -0
- package/skills/core/fix/references/workflow-types.md +33 -0
- package/skills/core/fix/references/workflow-ui.md +75 -0
- package/skills/core/plan/SKILL.md +145 -0
- package/skills/core/plan/plan-document-reviewer-prompt.md +49 -0
- package/skills/core/subagent-dev/SKILL.md +277 -0
- package/skills/core/subagent-dev/code-quality-reviewer-prompt.md +26 -0
- package/skills/core/subagent-dev/implementer-prompt.md +113 -0
- package/skills/core/subagent-dev/spec-reviewer-prompt.md +61 -0
- package/skills/core/tdd/SKILL.md +371 -0
- package/skills/core/tdd/testing-anti-patterns.md +299 -0
- package/skills/core/test/SKILL.md +109 -0
- package/skills/core/test/references/report-format.md +58 -0
- package/skills/core/test/references/test-execution-workflow.md +103 -0
- package/skills/core/test/references/ui-testing-workflow.md +65 -0
- package/skills/core/verify/SKILL.md +139 -0
- package/skills/dev/backend-dev/SKILL.md +96 -0
- package/skills/dev/backend-dev/references/backend-api-design.md +495 -0
- package/skills/dev/backend-dev/references/backend-architecture.md +454 -0
- package/skills/dev/backend-dev/references/backend-authentication.md +338 -0
- package/skills/dev/backend-dev/references/backend-code-quality.md +659 -0
- package/skills/dev/backend-dev/references/backend-debugging.md +904 -0
- package/skills/dev/backend-dev/references/backend-devops.md +494 -0
- package/skills/dev/backend-dev/references/backend-mindset.md +387 -0
- package/skills/dev/backend-dev/references/backend-performance.md +397 -0
- package/skills/dev/backend-dev/references/backend-security.md +290 -0
- package/skills/dev/backend-dev/references/backend-technologies.md +256 -0
- package/skills/dev/backend-dev/references/backend-testing.md +429 -0
- package/skills/dev/context-engineering/SKILL.md +108 -0
- package/skills/dev/context-engineering/references/context-compression.md +84 -0
- package/skills/dev/context-engineering/references/context-degradation.md +93 -0
- package/skills/dev/context-engineering/references/context-fundamentals.md +75 -0
- package/skills/dev/context-engineering/references/context-optimization.md +82 -0
- package/skills/dev/context-engineering/references/evaluation.md +89 -0
- package/skills/dev/context-engineering/references/memory-systems.md +88 -0
- package/skills/dev/context-engineering/references/multi-agent-patterns.md +90 -0
- package/skills/dev/context-engineering/references/project-development.md +97 -0
- package/skills/dev/context-engineering/references/runtime-awareness.md +202 -0
- package/skills/dev/context-engineering/references/tool-design.md +86 -0
- package/skills/dev/context-engineering/scripts/compression_evaluator.py +349 -0
- package/skills/dev/context-engineering/scripts/context_analyzer.py +317 -0
- package/skills/dev/context-engineering/scripts/tests/test_edge_cases.py +246 -0
- package/skills/dev/databases/SKILL.md +84 -0
- package/skills/dev/databases/analytics.md +198 -0
- package/skills/dev/databases/db-design.md +188 -0
- package/skills/dev/databases/incremental-etl.md +213 -0
- package/skills/dev/databases/references/mongodb-aggregation.md +447 -0
- package/skills/dev/databases/references/mongodb-atlas.md +465 -0
- package/skills/dev/databases/references/mongodb-crud.md +408 -0
- package/skills/dev/databases/references/mongodb-indexing.md +442 -0
- package/skills/dev/databases/references/postgresql-administration.md +594 -0
- package/skills/dev/databases/references/postgresql-performance.md +527 -0
- package/skills/dev/databases/references/postgresql-psql-cli.md +467 -0
- package/skills/dev/databases/references/postgresql-queries.md +475 -0
- package/skills/dev/databases/scripts/.coverage +0 -0
- package/skills/dev/databases/scripts/db_backup.py +502 -0
- package/skills/dev/databases/scripts/db_migrate.py +426 -0
- package/skills/dev/databases/scripts/db_performance_check.py +457 -0
- package/skills/dev/databases/scripts/requirements.txt +20 -0
- package/skills/dev/databases/scripts/tests/coverage-db.json +1 -0
- package/skills/dev/databases/scripts/tests/requirements.txt +4 -0
- package/skills/dev/databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/dev/databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/dev/databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/dev/databases/stacks/bigquery.md +231 -0
- package/skills/dev/databases/stacks/d1_cloudflare.md +137 -0
- package/skills/dev/databases/stacks/mysql.md +216 -0
- package/skills/dev/databases/stacks/postgres.md +235 -0
- package/skills/dev/databases/stacks/sqlite.md +244 -0
- package/skills/dev/databases/transactional.md +176 -0
- package/skills/dev/devops/.env.example +76 -0
- package/skills/dev/devops/SKILL.md +97 -0
- package/skills/dev/devops/references/browser-rendering.md +305 -0
- package/skills/dev/devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/dev/devops/references/cloudflare-platform.md +271 -0
- package/skills/dev/devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/dev/devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/dev/devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/dev/devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/dev/devops/references/docker-basics.md +297 -0
- package/skills/dev/devops/references/docker-compose.md +292 -0
- package/skills/dev/devops/references/gcloud-platform.md +297 -0
- package/skills/dev/devops/references/gcloud-services.md +304 -0
- package/skills/dev/devops/references/kubernetes-basics.md +99 -0
- package/skills/dev/devops/references/kubernetes-helm-advanced.md +75 -0
- package/skills/dev/devops/references/kubernetes-helm.md +81 -0
- package/skills/dev/devops/references/kubernetes-kubectl.md +74 -0
- package/skills/dev/devops/references/kubernetes-security-advanced.md +98 -0
- package/skills/dev/devops/references/kubernetes-security.md +95 -0
- package/skills/dev/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
- package/skills/dev/devops/references/kubernetes-troubleshooting.md +49 -0
- package/skills/dev/devops/references/kubernetes-workflows-advanced.md +75 -0
- package/skills/dev/devops/references/kubernetes-workflows.md +78 -0
- package/skills/dev/devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/dev/devops/scripts/docker_optimize.py +332 -0
- package/skills/dev/devops/scripts/requirements.txt +20 -0
- package/skills/dev/devops/scripts/tests/requirements.txt +3 -0
- package/skills/dev/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/dev/devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/dev/frontend-design/SKILL.md +78 -0
- package/skills/dev/frontend-design/references/ai-multimodal-overview.md +165 -0
- package/skills/dev/frontend-design/references/analysis-best-practices.md +80 -0
- package/skills/dev/frontend-design/references/analysis-prompts.md +141 -0
- package/skills/dev/frontend-design/references/analysis-techniques.md +118 -0
- package/skills/dev/frontend-design/references/animejs.md +396 -0
- package/skills/dev/frontend-design/references/asset-generation.md +337 -0
- package/skills/dev/frontend-design/references/design-extraction-overview.md +71 -0
- package/skills/dev/frontend-design/references/extraction-best-practices.md +141 -0
- package/skills/dev/frontend-design/references/extraction-output-templates.md +162 -0
- package/skills/dev/frontend-design/references/extraction-prompts.md +127 -0
- package/skills/dev/frontend-design/references/technical-accessibility.md +119 -0
- package/skills/dev/frontend-design/references/technical-best-practices.md +97 -0
- package/skills/dev/frontend-design/references/technical-optimization.md +44 -0
- package/skills/dev/frontend-design/references/technical-overview.md +90 -0
- package/skills/dev/frontend-design/references/technical-workflows.md +150 -0
- package/skills/dev/frontend-design/references/visual-analysis-overview.md +95 -0
- package/skills/dev/frontend-design/references/workflow-3d.md +102 -0
- package/skills/dev/frontend-design/references/workflow-describe.md +87 -0
- package/skills/dev/frontend-design/references/workflow-immersive.md +87 -0
- package/skills/dev/frontend-design/references/workflow-quick.md +57 -0
- package/skills/dev/frontend-design/references/workflow-screenshot.md +63 -0
- package/skills/dev/frontend-design/references/workflow-video.md +74 -0
- package/skills/dev/frontend-dev/SKILL.md +400 -0
- package/skills/dev/frontend-dev/resources/common-patterns.md +331 -0
- package/skills/dev/frontend-dev/resources/complete-examples.md +872 -0
- package/skills/dev/frontend-dev/resources/component-patterns.md +502 -0
- package/skills/dev/frontend-dev/resources/data-fetching.md +767 -0
- package/skills/dev/frontend-dev/resources/file-organization.md +502 -0
- package/skills/dev/frontend-dev/resources/loading-and-error-states.md +501 -0
- package/skills/dev/frontend-dev/resources/performance.md +406 -0
- package/skills/dev/frontend-dev/resources/routing-guide.md +364 -0
- package/skills/dev/frontend-dev/resources/styling-guide.md +428 -0
- package/skills/dev/frontend-dev/resources/typescript-standards.md +418 -0
- package/skills/dev/git/SKILL.md +114 -0
- package/skills/dev/git/references/branch-management.md +88 -0
- package/skills/dev/git/references/commit-standards.md +46 -0
- package/skills/dev/git/references/gh-cli-guide.md +109 -0
- package/skills/dev/git/references/safety-protocols.md +69 -0
- package/skills/dev/git/references/workflow-commit.md +58 -0
- package/skills/dev/git/references/workflow-merge.md +48 -0
- package/skills/dev/git/references/workflow-pr.md +58 -0
- package/skills/dev/git/references/workflow-push.md +52 -0
- package/skills/dev/git-worktree/SKILL.md +218 -0
- package/skills/utils/ask/SKILL.md +58 -0
- package/skills/utils/bootstrap/SKILL.md +101 -0
- package/skills/utils/bootstrap/references/shared-phases.md +59 -0
- package/skills/utils/bootstrap/references/workflow-auto.md +52 -0
- package/skills/utils/bootstrap/references/workflow-fast.md +50 -0
- package/skills/utils/bootstrap/references/workflow-full.md +60 -0
- package/skills/utils/bootstrap/references/workflow-parallel.md +59 -0
- package/skills/utils/ck-help/SKILL.md +102 -0
- package/skills/utils/ck-help/scripts/ck-help.py +1321 -0
- package/skills/utils/ck-help/scripts/commands_data.yaml +3 -0
- package/skills/utils/ck-help/scripts/skills_data.yaml +593 -0
- package/skills/utils/copywriting/SKILL.md +94 -0
- package/skills/utils/copywriting/references/copy-formulas.md +150 -0
- package/skills/utils/copywriting/references/cta-patterns.md +168 -0
- package/skills/utils/copywriting/references/email-copy.md +193 -0
- package/skills/utils/copywriting/references/headline-templates.md +140 -0
- package/skills/utils/copywriting/references/landing-page-copy.md +175 -0
- package/skills/utils/copywriting/references/power-words.md +189 -0
- package/skills/utils/copywriting/references/social-media-copy.md +222 -0
- package/skills/utils/copywriting/references/workflow-cro.md +83 -0
- package/skills/utils/copywriting/references/workflow-enhance.md +32 -0
- package/skills/utils/copywriting/references/workflow-fast.md +29 -0
- package/skills/utils/copywriting/references/workflow-good.md +39 -0
- package/skills/utils/copywriting/references/writing-styles.md +247 -0
- package/skills/utils/copywriting/scripts/extract-writing-styles.py +308 -0
- package/skills/utils/copywriting/templates/copy-brief.md +49 -0
- package/skills/utils/docs/SKILL.md +55 -0
- package/skills/utils/docs/references/init-workflow.md +32 -0
- package/skills/utils/docs/references/summarize-workflow.md +18 -0
- package/skills/utils/docs/references/update-workflow.md +59 -0
- package/skills/utils/journal/SKILL.md +11 -0
- package/skills/utils/kanban/SKILL.md +99 -0
- package/skills/utils/preview/SKILL.md +75 -0
- package/skills/utils/preview/references/generation-modes.md +95 -0
- package/skills/utils/preview/references/view-mode.md +42 -0
- package/skills/utils/repomix/SKILL.md +248 -0
- package/skills/utils/repomix/references/configuration.md +211 -0
- package/skills/utils/repomix/references/usage-patterns.md +232 -0
- package/skills/utils/repomix/scripts/.coverage +0 -0
- package/skills/utils/repomix/scripts/README.md +179 -0
- package/skills/utils/repomix/scripts/repomix_batch.py +455 -0
- package/skills/utils/repomix/scripts/repos.example.json +15 -0
- package/skills/utils/repomix/scripts/requirements.txt +15 -0
- package/skills/utils/repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/utils/research/SKILL.md +171 -0
- package/skills/utils/scout/SKILL.md +89 -0
- package/skills/utils/scout/references/external-scouting.md +140 -0
- package/skills/utils/scout/references/internal-scouting.md +119 -0
- package/skills/utils/scout/references/task-management-scouting.md +125 -0
- package/skills/utils/sequential-thinking/.env.example +8 -0
- package/skills/utils/sequential-thinking/README.md +183 -0
- package/skills/utils/sequential-thinking/SKILL.md +95 -0
- package/skills/utils/sequential-thinking/package.json +31 -0
- package/skills/utils/sequential-thinking/references/advanced-strategies.md +79 -0
- package/skills/utils/sequential-thinking/references/advanced-techniques.md +76 -0
- package/skills/utils/sequential-thinking/references/core-patterns.md +95 -0
- package/skills/utils/sequential-thinking/references/examples-api.md +88 -0
- package/skills/utils/sequential-thinking/references/examples-architecture.md +94 -0
- package/skills/utils/sequential-thinking/references/examples-debug.md +90 -0
- package/skills/utils/sequential-thinking/scripts/format-thought.js +159 -0
- package/skills/utils/sequential-thinking/scripts/process-thought.js +236 -0
- package/skills/utils/sequential-thinking/tests/format-thought.test.js +133 -0
- package/skills/utils/sequential-thinking/tests/process-thought.test.js +215 -0
- package/skills/utils/write-skill/SKILL.md +655 -0
- package/skills/utils/write-skill/anthropic-best-practices.md +1150 -0
- package/skills/utils/write-skill/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/utils/write-skill/graphviz-conventions.dot +172 -0
- package/skills/utils/write-skill/persuasion-principles.md +187 -0
- package/skills/utils/write-skill/render-graphs.js +168 -0
- package/skills/utils/write-skill/testing-skills-with-subagents.md +384 -0
- package/src/commands/init.js +238 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# Docker Basics
|
|
2
|
+
|
|
3
|
+
Core concepts and workflows for Docker containerization.
|
|
4
|
+
|
|
5
|
+
## Core Concepts
|
|
6
|
+
|
|
7
|
+
**Containers:** Lightweight, isolated processes bundling apps with dependencies. Ephemeral by default.
|
|
8
|
+
|
|
9
|
+
**Images:** Read-only blueprints for containers. Layered filesystem for reusability.
|
|
10
|
+
|
|
11
|
+
**Volumes:** Persistent storage surviving container deletion.
|
|
12
|
+
|
|
13
|
+
**Networks:** Enable container communication.
|
|
14
|
+
|
|
15
|
+
## Dockerfile Best Practices
|
|
16
|
+
|
|
17
|
+
### Essential Instructions
|
|
18
|
+
```dockerfile
|
|
19
|
+
FROM node:20-alpine # Base image (use specific versions)
|
|
20
|
+
WORKDIR /app # Working directory
|
|
21
|
+
COPY package*.json ./ # Copy dependency files first
|
|
22
|
+
RUN npm install --production # Execute build commands
|
|
23
|
+
COPY . . # Copy application code
|
|
24
|
+
ENV NODE_ENV=production # Environment variables
|
|
25
|
+
EXPOSE 3000 # Document exposed ports
|
|
26
|
+
USER node # Run as non-root (security)
|
|
27
|
+
CMD ["node", "server.js"] # Default command
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Multi-Stage Builds (Production)
|
|
31
|
+
```dockerfile
|
|
32
|
+
# Stage 1: Build
|
|
33
|
+
FROM node:20-alpine AS build
|
|
34
|
+
WORKDIR /app
|
|
35
|
+
COPY package*.json ./
|
|
36
|
+
RUN npm install
|
|
37
|
+
COPY . .
|
|
38
|
+
RUN npm run build
|
|
39
|
+
|
|
40
|
+
# Stage 2: Production
|
|
41
|
+
FROM node:20-alpine AS production
|
|
42
|
+
WORKDIR /app
|
|
43
|
+
COPY --from=build /app/dist ./dist
|
|
44
|
+
COPY --from=build /app/node_modules ./node_modules
|
|
45
|
+
USER node
|
|
46
|
+
EXPOSE 3000
|
|
47
|
+
CMD ["node", "dist/server.js"]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Benefits: Smaller images, improved security, no build tools in production.
|
|
51
|
+
|
|
52
|
+
### .dockerignore
|
|
53
|
+
```
|
|
54
|
+
node_modules
|
|
55
|
+
.git
|
|
56
|
+
.env
|
|
57
|
+
*.log
|
|
58
|
+
.DS_Store
|
|
59
|
+
README.md
|
|
60
|
+
docker-compose.yml
|
|
61
|
+
dist
|
|
62
|
+
coverage
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Building Images
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Build with tag
|
|
69
|
+
docker build -t myapp:1.0 .
|
|
70
|
+
|
|
71
|
+
# Build targeting specific stage
|
|
72
|
+
docker build -t myapp:dev --target build .
|
|
73
|
+
|
|
74
|
+
# Build for multiple platforms
|
|
75
|
+
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:1.0 .
|
|
76
|
+
|
|
77
|
+
# View layers
|
|
78
|
+
docker image history myapp:1.0
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Running Containers
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Basic run
|
|
85
|
+
docker run myapp:1.0
|
|
86
|
+
|
|
87
|
+
# Background (detached)
|
|
88
|
+
docker run -d --name myapp myapp:1.0
|
|
89
|
+
|
|
90
|
+
# Port mapping (host:container)
|
|
91
|
+
docker run -p 8080:3000 myapp:1.0
|
|
92
|
+
|
|
93
|
+
# Environment variables
|
|
94
|
+
docker run -e NODE_ENV=production myapp:1.0
|
|
95
|
+
|
|
96
|
+
# Volume mount (named volume)
|
|
97
|
+
docker run -v mydata:/app/data myapp:1.0
|
|
98
|
+
|
|
99
|
+
# Bind mount (development)
|
|
100
|
+
docker run -v $(pwd)/src:/app/src myapp:1.0
|
|
101
|
+
|
|
102
|
+
# Resource limits
|
|
103
|
+
docker run --memory 512m --cpus 0.5 myapp:1.0
|
|
104
|
+
|
|
105
|
+
# Interactive terminal
|
|
106
|
+
docker run -it myapp:1.0 /bin/sh
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Container Management
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# List containers
|
|
113
|
+
docker ps
|
|
114
|
+
docker ps -a
|
|
115
|
+
|
|
116
|
+
# Logs
|
|
117
|
+
docker logs myapp
|
|
118
|
+
docker logs -f myapp # Follow
|
|
119
|
+
docker logs --tail 100 myapp # Last 100 lines
|
|
120
|
+
|
|
121
|
+
# Execute command
|
|
122
|
+
docker exec myapp ls /app
|
|
123
|
+
docker exec -it myapp /bin/sh # Interactive shell
|
|
124
|
+
|
|
125
|
+
# Stop/start
|
|
126
|
+
docker stop myapp
|
|
127
|
+
docker start myapp
|
|
128
|
+
|
|
129
|
+
# Remove
|
|
130
|
+
docker rm myapp
|
|
131
|
+
docker rm -f myapp # Force remove running
|
|
132
|
+
|
|
133
|
+
# Inspect
|
|
134
|
+
docker inspect myapp
|
|
135
|
+
|
|
136
|
+
# Monitor resources
|
|
137
|
+
docker stats myapp
|
|
138
|
+
|
|
139
|
+
# Copy files
|
|
140
|
+
docker cp myapp:/app/logs ./logs
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Volume Management
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Create volume
|
|
147
|
+
docker volume create mydata
|
|
148
|
+
|
|
149
|
+
# List volumes
|
|
150
|
+
docker volume ls
|
|
151
|
+
|
|
152
|
+
# Remove volume
|
|
153
|
+
docker volume rm mydata
|
|
154
|
+
|
|
155
|
+
# Remove unused volumes
|
|
156
|
+
docker volume prune
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Network Management
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# Create network
|
|
163
|
+
docker network create my-network
|
|
164
|
+
|
|
165
|
+
# List networks
|
|
166
|
+
docker network ls
|
|
167
|
+
|
|
168
|
+
# Connect container
|
|
169
|
+
docker network connect my-network myapp
|
|
170
|
+
|
|
171
|
+
# Disconnect
|
|
172
|
+
docker network disconnect my-network myapp
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Language-Specific Dockerfiles
|
|
176
|
+
|
|
177
|
+
### Node.js
|
|
178
|
+
```dockerfile
|
|
179
|
+
FROM node:20-alpine AS build
|
|
180
|
+
WORKDIR /app
|
|
181
|
+
COPY package*.json ./
|
|
182
|
+
RUN npm ci --only=production
|
|
183
|
+
COPY . .
|
|
184
|
+
RUN npm run build
|
|
185
|
+
|
|
186
|
+
FROM node:20-alpine
|
|
187
|
+
WORKDIR /app
|
|
188
|
+
COPY --from=build /app/dist ./dist
|
|
189
|
+
COPY --from=build /app/node_modules ./node_modules
|
|
190
|
+
USER node
|
|
191
|
+
CMD ["node", "dist/server.js"]
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Python
|
|
195
|
+
```dockerfile
|
|
196
|
+
FROM python:3.11-slim AS build
|
|
197
|
+
WORKDIR /app
|
|
198
|
+
COPY requirements.txt .
|
|
199
|
+
RUN pip install --no-cache-dir -r requirements.txt
|
|
200
|
+
|
|
201
|
+
FROM python:3.11-slim
|
|
202
|
+
WORKDIR /app
|
|
203
|
+
COPY --from=build /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
|
|
204
|
+
COPY . .
|
|
205
|
+
RUN adduser --disabled-password appuser
|
|
206
|
+
USER appuser
|
|
207
|
+
CMD ["python", "app.py"]
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Go
|
|
211
|
+
```dockerfile
|
|
212
|
+
FROM golang:1.21-alpine AS build
|
|
213
|
+
WORKDIR /app
|
|
214
|
+
COPY go.mod go.sum ./
|
|
215
|
+
RUN go mod download
|
|
216
|
+
COPY . .
|
|
217
|
+
RUN CGO_ENABLED=0 go build -o main .
|
|
218
|
+
|
|
219
|
+
FROM scratch
|
|
220
|
+
COPY --from=build /app/main /main
|
|
221
|
+
CMD ["/main"]
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Security Hardening
|
|
225
|
+
|
|
226
|
+
```dockerfile
|
|
227
|
+
# Use specific versions
|
|
228
|
+
FROM node:20.11.0-alpine3.19
|
|
229
|
+
|
|
230
|
+
# Create non-root user
|
|
231
|
+
RUN addgroup -g 1001 -S nodejs && \
|
|
232
|
+
adduser -S nodejs -u 1001
|
|
233
|
+
|
|
234
|
+
# Set ownership
|
|
235
|
+
COPY --chown=nodejs:nodejs . .
|
|
236
|
+
|
|
237
|
+
# Switch to non-root
|
|
238
|
+
USER nodejs
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Troubleshooting
|
|
242
|
+
|
|
243
|
+
### Container exits immediately
|
|
244
|
+
```bash
|
|
245
|
+
docker logs myapp
|
|
246
|
+
docker run -it myapp /bin/sh
|
|
247
|
+
docker run -it --entrypoint /bin/sh myapp
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Cannot connect
|
|
251
|
+
```bash
|
|
252
|
+
docker ps
|
|
253
|
+
docker port myapp
|
|
254
|
+
docker network inspect bridge
|
|
255
|
+
docker inspect myapp | grep IPAddress
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Out of disk space
|
|
259
|
+
```bash
|
|
260
|
+
docker system df
|
|
261
|
+
docker system prune -a
|
|
262
|
+
docker volume prune
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Build cache issues
|
|
266
|
+
```bash
|
|
267
|
+
docker build --no-cache -t myapp .
|
|
268
|
+
docker builder prune
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Best Practices
|
|
272
|
+
|
|
273
|
+
- Use specific image versions, not `latest`
|
|
274
|
+
- Run as non-root user
|
|
275
|
+
- Multi-stage builds to minimize size
|
|
276
|
+
- Implement health checks
|
|
277
|
+
- Set resource limits
|
|
278
|
+
- Keep images under 500MB
|
|
279
|
+
- Scan for vulnerabilities: `docker scout cves myapp:1.0`
|
|
280
|
+
|
|
281
|
+
## Quick Reference
|
|
282
|
+
|
|
283
|
+
| Task | Command |
|
|
284
|
+
|------|---------|
|
|
285
|
+
| Build | `docker build -t myapp:1.0 .` |
|
|
286
|
+
| Run | `docker run -d -p 8080:3000 myapp:1.0` |
|
|
287
|
+
| Logs | `docker logs -f myapp` |
|
|
288
|
+
| Shell | `docker exec -it myapp /bin/sh` |
|
|
289
|
+
| Stop | `docker stop myapp` |
|
|
290
|
+
| Remove | `docker rm myapp` |
|
|
291
|
+
| Clean | `docker system prune -a` |
|
|
292
|
+
|
|
293
|
+
## Resources
|
|
294
|
+
|
|
295
|
+
- Docs: https://docs.docker.com
|
|
296
|
+
- Best Practices: https://docs.docker.com/develop/dev-best-practices/
|
|
297
|
+
- Dockerfile Reference: https://docs.docker.com/engine/reference/builder/
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# Docker Compose
|
|
2
|
+
|
|
3
|
+
Multi-container application orchestration.
|
|
4
|
+
|
|
5
|
+
## Basic Structure
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
version: '3.8'
|
|
9
|
+
|
|
10
|
+
services:
|
|
11
|
+
web:
|
|
12
|
+
build: .
|
|
13
|
+
ports:
|
|
14
|
+
- "3000:3000"
|
|
15
|
+
environment:
|
|
16
|
+
- NODE_ENV=production
|
|
17
|
+
- DATABASE_URL=postgresql://user:pass@db:5432/app
|
|
18
|
+
depends_on:
|
|
19
|
+
- db
|
|
20
|
+
- redis
|
|
21
|
+
volumes:
|
|
22
|
+
- ./src:/app/src
|
|
23
|
+
networks:
|
|
24
|
+
- app-network
|
|
25
|
+
restart: unless-stopped
|
|
26
|
+
|
|
27
|
+
db:
|
|
28
|
+
image: postgres:15-alpine
|
|
29
|
+
environment:
|
|
30
|
+
POSTGRES_USER: user
|
|
31
|
+
POSTGRES_PASSWORD: pass
|
|
32
|
+
POSTGRES_DB: app
|
|
33
|
+
volumes:
|
|
34
|
+
- postgres_data:/var/lib/postgresql/data
|
|
35
|
+
networks:
|
|
36
|
+
- app-network
|
|
37
|
+
healthcheck:
|
|
38
|
+
test: ["CMD-SHELL", "pg_isready -U user"]
|
|
39
|
+
interval: 10s
|
|
40
|
+
timeout: 5s
|
|
41
|
+
retries: 5
|
|
42
|
+
|
|
43
|
+
redis:
|
|
44
|
+
image: redis:7-alpine
|
|
45
|
+
networks:
|
|
46
|
+
- app-network
|
|
47
|
+
volumes:
|
|
48
|
+
- redis_data:/data
|
|
49
|
+
|
|
50
|
+
volumes:
|
|
51
|
+
postgres_data:
|
|
52
|
+
redis_data:
|
|
53
|
+
|
|
54
|
+
networks:
|
|
55
|
+
app-network:
|
|
56
|
+
driver: bridge
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Commands
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Start services
|
|
63
|
+
docker compose up
|
|
64
|
+
docker compose up -d
|
|
65
|
+
|
|
66
|
+
# Build images before starting
|
|
67
|
+
docker compose up --build
|
|
68
|
+
|
|
69
|
+
# Scale service
|
|
70
|
+
docker compose up -d --scale web=3
|
|
71
|
+
|
|
72
|
+
# Stop services
|
|
73
|
+
docker compose down
|
|
74
|
+
|
|
75
|
+
# Stop and remove volumes
|
|
76
|
+
docker compose down --volumes
|
|
77
|
+
|
|
78
|
+
# Logs
|
|
79
|
+
docker compose logs
|
|
80
|
+
docker compose logs -f web
|
|
81
|
+
|
|
82
|
+
# Execute command
|
|
83
|
+
docker compose exec web sh
|
|
84
|
+
docker compose exec db psql -U user -d app
|
|
85
|
+
|
|
86
|
+
# List services
|
|
87
|
+
docker compose ps
|
|
88
|
+
|
|
89
|
+
# Restart service
|
|
90
|
+
docker compose restart web
|
|
91
|
+
|
|
92
|
+
# Pull images
|
|
93
|
+
docker compose pull
|
|
94
|
+
|
|
95
|
+
# Validate
|
|
96
|
+
docker compose config
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Environment-Specific Configs
|
|
100
|
+
|
|
101
|
+
**compose.yml (base):**
|
|
102
|
+
```yaml
|
|
103
|
+
services:
|
|
104
|
+
web:
|
|
105
|
+
build: .
|
|
106
|
+
ports:
|
|
107
|
+
- "3000:3000"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**compose.override.yml (dev, auto-loaded):**
|
|
111
|
+
```yaml
|
|
112
|
+
services:
|
|
113
|
+
web:
|
|
114
|
+
volumes:
|
|
115
|
+
- ./src:/app/src # Live reload
|
|
116
|
+
environment:
|
|
117
|
+
- NODE_ENV=development
|
|
118
|
+
- DEBUG=true
|
|
119
|
+
command: npm run dev
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**compose.prod.yml (production):**
|
|
123
|
+
```yaml
|
|
124
|
+
services:
|
|
125
|
+
web:
|
|
126
|
+
image: registry.example.com/myapp:1.0
|
|
127
|
+
restart: always
|
|
128
|
+
environment:
|
|
129
|
+
- NODE_ENV=production
|
|
130
|
+
deploy:
|
|
131
|
+
replicas: 3
|
|
132
|
+
resources:
|
|
133
|
+
limits:
|
|
134
|
+
cpus: '0.5'
|
|
135
|
+
memory: 512M
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Usage:**
|
|
139
|
+
```bash
|
|
140
|
+
# Development (uses compose.yml + compose.override.yml)
|
|
141
|
+
docker compose up
|
|
142
|
+
|
|
143
|
+
# Production
|
|
144
|
+
docker compose -f compose.yml -f compose.prod.yml up -d
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Health Checks
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
services:
|
|
151
|
+
web:
|
|
152
|
+
healthcheck:
|
|
153
|
+
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
|
|
154
|
+
interval: 30s
|
|
155
|
+
timeout: 3s
|
|
156
|
+
start_period: 40s
|
|
157
|
+
retries: 3
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Resource Limits
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
services:
|
|
164
|
+
web:
|
|
165
|
+
deploy:
|
|
166
|
+
resources:
|
|
167
|
+
limits:
|
|
168
|
+
cpus: '0.5'
|
|
169
|
+
memory: 512M
|
|
170
|
+
reservations:
|
|
171
|
+
cpus: '0.25'
|
|
172
|
+
memory: 256M
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Logging
|
|
176
|
+
|
|
177
|
+
```yaml
|
|
178
|
+
services:
|
|
179
|
+
web:
|
|
180
|
+
logging:
|
|
181
|
+
driver: "json-file"
|
|
182
|
+
options:
|
|
183
|
+
max-size: "10m"
|
|
184
|
+
max-file: "3"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Environment Variables
|
|
188
|
+
|
|
189
|
+
**Using .env file:**
|
|
190
|
+
```bash
|
|
191
|
+
# .env
|
|
192
|
+
DATABASE_URL=postgresql://user:pass@db:5432/app
|
|
193
|
+
API_KEY=secret
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
```yaml
|
|
197
|
+
services:
|
|
198
|
+
web:
|
|
199
|
+
env_file:
|
|
200
|
+
- .env
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Networking
|
|
204
|
+
|
|
205
|
+
Services on same network communicate via service name:
|
|
206
|
+
|
|
207
|
+
```yaml
|
|
208
|
+
services:
|
|
209
|
+
web:
|
|
210
|
+
depends_on:
|
|
211
|
+
- db
|
|
212
|
+
environment:
|
|
213
|
+
# Use service name as hostname
|
|
214
|
+
- DATABASE_URL=postgresql://user:pass@db:5432/app
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Volume Backup/Restore
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Backup
|
|
221
|
+
docker compose run --rm -v app_data:/data -v $(pwd):/backup \
|
|
222
|
+
alpine tar czf /backup/backup.tar.gz /data
|
|
223
|
+
|
|
224
|
+
# Restore
|
|
225
|
+
docker compose run --rm -v app_data:/data -v $(pwd):/backup \
|
|
226
|
+
alpine tar xzf /backup/backup.tar.gz -C /data
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Common Stacks
|
|
230
|
+
|
|
231
|
+
### Web + Database + Cache
|
|
232
|
+
```yaml
|
|
233
|
+
services:
|
|
234
|
+
web:
|
|
235
|
+
build: .
|
|
236
|
+
depends_on:
|
|
237
|
+
- db
|
|
238
|
+
- redis
|
|
239
|
+
db:
|
|
240
|
+
image: postgres:15-alpine
|
|
241
|
+
redis:
|
|
242
|
+
image: redis:7-alpine
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Microservices
|
|
246
|
+
```yaml
|
|
247
|
+
services:
|
|
248
|
+
api-gateway:
|
|
249
|
+
build: ./gateway
|
|
250
|
+
user-service:
|
|
251
|
+
build: ./services/users
|
|
252
|
+
order-service:
|
|
253
|
+
build: ./services/orders
|
|
254
|
+
rabbitmq:
|
|
255
|
+
image: rabbitmq:3-management
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Best Practices
|
|
259
|
+
|
|
260
|
+
- Use named volumes for data persistence
|
|
261
|
+
- Implement health checks for all services
|
|
262
|
+
- Set restart policies for production
|
|
263
|
+
- Use environment-specific compose files
|
|
264
|
+
- Configure resource limits
|
|
265
|
+
- Enable logging with size limits
|
|
266
|
+
- Use depends_on for service ordering
|
|
267
|
+
- Network isolation with custom networks
|
|
268
|
+
|
|
269
|
+
## Troubleshooting
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
# View service logs
|
|
273
|
+
docker compose logs -f service-name
|
|
274
|
+
|
|
275
|
+
# Check service status
|
|
276
|
+
docker compose ps
|
|
277
|
+
|
|
278
|
+
# Restart specific service
|
|
279
|
+
docker compose restart service-name
|
|
280
|
+
|
|
281
|
+
# Rebuild service
|
|
282
|
+
docker compose up --build service-name
|
|
283
|
+
|
|
284
|
+
# Remove everything
|
|
285
|
+
docker compose down --volumes --rmi all
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Resources
|
|
289
|
+
|
|
290
|
+
- Docs: https://docs.docker.com/compose/
|
|
291
|
+
- Compose Specification: https://docs.docker.com/compose/compose-file/
|
|
292
|
+
- Best Practices: https://docs.docker.com/compose/production/
|