From vibe-ship
Generates production-ready Docker, docker-compose, CI/CD (GitHub Actions), health checks, and security hardening for any app. Auto-detects stack. Also audits existing deployment config.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vibe-ship:vibe-shipThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turns any codebase into something that can be deployed with `docker compose up` and shipped through CI/CD with sane, hardened defaults - all generated in one pass, tailored to the actual project. You bring the vibe; this brings the infrastructure.
Turns any codebase into something that can be deployed with docker compose up and shipped through CI/CD with sane, hardened defaults - all generated in one pass, tailored to the actual project. You bring the vibe; this brings the infrastructure.
Look for these signal files in the project root (and one level into common subfolders like backend/, server/, api/):
| File found | Stack | Default port | Start command |
|---|---|---|---|
package.json | Node.js | 3000 | read scripts.start |
requirements.txt / pyproject.toml | Python | 8000 | detect Flask/FastAPI/Django |
go.mod | Go | 8080 | go build |
pom.xml / build.gradle | Java/Kotlin (JVM) | 8080 | detect Spring Boot / Gradle app |
Gemfile | Ruby | 3000 | detect Rails/Sinatra |
Cargo.toml | Rust | 8080 | cargo build --release |
composer.json | PHP | 8000 | detect Laravel/Symfony |
If multiple signal files exist (e.g. a frontend/ and backend/ folder), treat it as a multi-service app - generate one Dockerfile per service plus a docker-compose.yml that wires them together.
If you can't confidently detect a stack, ask the user rather than guessing - a wrong Dockerfile base image is worse than no Dockerfile.
Also detect:
pg, mongoose, redis, sqlalchemy, etc. in dependency files) - these become services in docker-compose.yml..env or .env.example - never overwrite; read it to learn what env vars the app expects.Before writing the Dockerfile, read references/docker-patterns.md and jump to the section matching the detected stack. It has copy-ready multi-stage Dockerfile templates per language - adapt to the project's actual entry point, build command, and dependencies rather than pasting blind.
Also skim references/anti-patterns.md so the generated files avoid the common mistakes listed there by construction.
Write these into the project (paths relative to repo root unless multi-service):
Dockerfile - multi-stage build (build stage + slim runtime stage), non-root user, HEALTHCHECK instruction, pinned base image version..dockerignore - excludes node_modules, .git, .env, build artifacts, test files, etc. per stack.docker-compose.yml - the app service plus any detected dependent services (postgres, redis, etc.) with named volumes, resource limits, a shared network, env vars from .env..env.example - every env var the app reads, with placeholder values and a comment on what each is for. Never put real secrets here..github/workflows/ci-cd.yml - see references/cicd-patterns.md. At minimum: install deps → lint → test → build Docker image → (on main branch) push to a registry, plus a dependency vulnerability scan step. Ask which registry (Docker Hub / GHCR / ECR / GCR) before filling in the push step - default to GHCR since it needs no extra secrets beyond GITHUB_TOKEN.DEPLOYMENT.md - a short doc at the project root summarizing what was generated, how to run it locally (docker compose up), how CI/CD triggers, and a checklist of anything the user still needs to do manually.For scalability and security specifics, read references/scalability-checklist.md and references/security-checklist.md before finalizing the Dockerfile and compose file - apply every relevant item, and note anything needing manual follow-up in DEPLOYMENT.md rather than silently skipping it.
If the user mentions Kubernetes, a specific cloud provider, or says Compose alone isn't enough, read references/kubernetes.md and generate manifests there instead of (or alongside) docker-compose.yml.
Run scripts/audit.py against the generated Dockerfile/compose/CI files as a final sanity pass (see next section for usage). Fix anything it flags before presenting to the user - it should score clean on your own output.
Don't paste all file contents into the chat. Give a short summary: what was created, what stack was detected, what services are wired up, the audit score, and point to DEPLOYMENT.md for details. Offer to walk through any specific file if the user wants to review it.
When the user already has a Dockerfile, docker-compose.yml, or CI config and wants it reviewed rather than replaced:
python3 scripts/audit.py --path /path/to/project
This statically scans for the Dockerfile, docker-compose.yml, and .github/workflows/*.yml under the given path and checks each against the same rules in references/security-checklist.md, references/scalability-checklist.md, and references/anti-patterns.md - no Docker daemon or network access needed, pure text analysis. It prints a scored report (CRITICAL/HIGH/MEDIUM/LOW findings) with file:line references and a fix suggestion per finding.
Walk through the findings with the user, prioritizing CRITICAL/HIGH first (things like running as root, :latest tags, secrets in ARG/ENV, missing .dockerignore). Offer to fix them directly rather than just listing them.
CMD..env (gitignored) with .env.example as the documented template.npx claudepluginhub sudais-khalid/vibe-ship --plugin vibe-shipGenerates production-ready, security-audited Dockerfiles with multi-stage builds, docker-compose.yml, and .dockerignore files adapted to app tech stack and project topology.
Generates CI/CD workflows, Dockerfiles, and deployment configs from a tech stack definition. Use when scaffolding infrastructure for a project.
Scans your project to detect the stack and generates a production-ready Dockerfile with multi-stage builds, layer caching, and security hardening. Also creates .dockerignore and optional docker-compose.yml.