Generate optimized Dockerfile and .dockerignore for any project. Detects project language(s) and applies appropriate build strategies.
Generates optimized Dockerfiles and .dockerignore files by detecting project languages and applying best practices.
npx claudepluginhub jugrajsingh/skillgardenThis skill is limited to using the following tools:
references/go.mdreferences/java.mdreferences/multi-language.mdreferences/nodejs.mdreferences/python.mdreferences/rust.mdGenerate optimized Dockerfile and .dockerignore by detecting project language(s) and applying best practices.
These apply to ALL languages:
Glob: pyproject.toml, requirements.txt, package.json, go.mod, Cargo.toml, pom.xml, build.gradle, Gemfile
| File Found | Language | Reference File |
|---|---|---|
pyproject.toml or requirements.txt | Python | references/python.md |
package.json | Node.js/React | references/nodejs.md |
go.mod | Go | references/go.md |
Cargo.toml | Rust | references/rust.md |
pom.xml or build.gradle | Java | references/java.md |
If ONE language detected:
If MULTIPLE languages detected (e.g., Python backend + React frontend):
Detected languages: Python, Node.js (React)
How should we containerize?
○ Monorepo (single Dockerfile with multi-stage for both)
○ Separate containers (Dockerfile.backend, Dockerfile.frontend)
○ Backend only (Python)
○ Frontend only (Node.js/React)
references/multi-language.md for merging strategiesIf no language files found:
Universal .dockerignore (language-specific additions from reference files):
# =============================================================================
# .dockerignore - Exclude from Docker build context
# =============================================================================
# Git
.git/
.gitignore
.gitattributes
# IDE
.idea/
.vscode/
*.swp
*.swo
*~
# Local configuration (secrets)
*.env
*.env.*
!*.env.example
local.*.yaml
# Development files
Makefile.local
Makefile.deploy
tests/
docs/
*.md
!README.md
# Docker (prevent recursive context)
Dockerfile*
docker-compose*.yml
.dockerignore
# Language-specific exclusions added below
{language_specific_ignores}
Created Docker configuration:
Language(s) detected: {languages}
Reference(s) used: {reference_files}
Dockerfile
- Multi-stage build (builder + runtime)
- Dependency manager: {dep_manager}
- Non-root user configured
- Entry point: {entry_point}
.dockerignore
- Universal exclusions + {language}-specific
Commands:
docker build -t myapp . # Build image
docker run -p 8000:8000 myapp # Run container
Next steps:
- Use dockercraft:compose to generate docker-compose.yml
Read these based on detected language:
references/python.md - Python with uv, multi-stage, FastAPI/Flask patternsreferences/nodejs.md - Node.js with npm/yarn/pnpm, React/Next.js patternsreferences/go.md - Go with modules, static binary buildsreferences/rust.md - Rust with cargo, musl buildsreferences/java.md - Java with Maven/Gradle, JRE runtimereferences/multi-language.md - Strategies for combining languages