| name | qovery-deploy |
| description | Deploys any application, database, Helm chart, or Terraform module to Kubernetes via Qovery. Analyzes the user's codebase, creates missing Dockerfiles, provisions databases (container or managed), sets up environment variables, and deploys via Qovery CLI + API or Terraform provider. Supports Node.js, Python, Go, Java, Ruby, PHP, .NET, React, Vite, Next.js and more. Use when the user asks to deploy, ship, set up, or release an application on Qovery or Kubernetes via Qovery. |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"developers","workflow":"deployment"} |
Qovery Deploy Skill
This skill deploys applications to Kubernetes via Qovery. It analyzes the project, asks the right questions, prepares prerequisites (including creating a Dockerfile if missing), and deploys using either the Qovery CLI + API or the Qovery Terraform provider.
When to Use This Skill
Trigger phrases:
- "Deploy my application with Qovery"
- "Set up Qovery for my project"
- "I want to deploy this to Kubernetes"
- "Help me deploy to the cloud with Qovery"
- "Can you create a Qovery configuration for my app?"
/qovery-deploy (slash command)
For preview environments per PR use qovery-preview. For diagnosing failed deployments use qovery-troubleshoot.
Workflow checklist
Copy this checklist and check off each step as it completes:
Deployment Progress:
- [ ] Phase 1 ā Discovery & questionnaire
- [ ] Phase 2 ā Prerequisites & authentication
- [ ] Phase 2B ā Cluster setup (only if no cluster exists)
- [ ] Phase 3 ā Codebase analysis & Dockerfile creation
- [ ] Phase 3B ā Deployment plan summary + USER CONFIRMATION
- [ ] Phase 4 OR Phase 5 ā Deploy (CLI+API vs Terraform)
- [ ] Phase 6 ā Environment variables (scopes, aliases, interpolation)
- [ ] Phase 9 ā Watch deployment to ready state
- [ ] Phase 10 ā Auto-fix any failures (max 3 retries per service)
Critical checkpoint: never run Phase 4 or Phase 5 without explicit user confirmation of the Phase 3B plan.
Reference materials (load on demand)
When entering each phase, read the matching reference file via the bash Read tool. Do not load every file upfront ā only what the current phase needs.
| Phase | File | Purpose |
|---|
| Console URL Detection | reference/console-url-detection.md | Extract org/project/env/service IDs from a Qovery Console URL |
| Authentication | reference/auth.md | API token + JWT fallback chain |
| Phase 1 | reference/phase1-discovery.md | User questionnaire: account, cluster, project, services, DB, deployment method |
| Phase 2 | reference/phase2-prereq-auth.md | CLI install, login, context, API token |
| Phase 2B | reference/phase2b-cluster-setup.md | First-time cluster on AWS / GCP / Azure / Scaleway |
| Phase 3 | reference/phase3-dockerfiles.md | Production Dockerfile templates for 12+ stacks |
| Phase 3B | reference/phase3b-deployment-plan.md | Plan summary template + confirmation gate |
| Phase 4 | reference/phase4-cli-api.md | Deploy via CLI + API (quick path) |
| Phase 5 | reference/phase5-terraform.md | Deploy via Terraform provider (production path) |
| Phase 6 | reference/phase6-env-vars.md | Variable scopes, aliases, interpolation, overrides |
| Phase 8 | reference/phase8-advanced-patterns.md | Helm charts, Terraform services, lifecycle/cron jobs, monorepos |
| Phase 9 | reference/phase9-watching.md | Watching, verifying, fetching public URLs |
| Phase 10 | reference/phase10-troubleshooting.md | Auto-fix loop for deployment failures |
| Full example | examples/fullstack.md | End-to-end full-stack walkthrough |
Phase 1 ā Discovery (summary)
Gather four groups of information conversationally (do not dump as a wall of text):
- Account & infrastructure ā Qovery org (auto-list via API), cluster (must be
DEPLOYED/READY), project, environment.
- Project analysis ā language, framework, port, public accessibility, monorepo paths.
- Database & services ā type, mode (
CONTAINER for dev, MANAGED for prod), extra cloud resources.
- Deployment method ā CLI + API (quick) or Terraform (production).
Detailed questions and API calls live in reference/phase1-discovery.md. If the user shared a Qovery Console URL, extract the IDs first using reference/console-url-detection.md and skip the corresponding questions.
Phase 3B ā Deployment plan (must confirm)
Before any resource creation, present the full plan and wait for explicit confirmation:
Deployment Plan
Target: organization, cluster (provider/region), project, environment (mode)
Services: name / type / source / port / public / cpu / memory
Databases: name / type / version / mode / storage
Stages (execution order): infra ā backend ā frontend
Variables: scoped list (service / environment / project), secrets, aliases
Files to create/modify: Dockerfiles, .dockerignore, next.config.mjs, etc.
Warnings: missing health endpoint, container DB in prod, etc.
Full template + change-handling protocol in reference/phase3b-deployment-plan.md.
CRITICAL: Do NOT proceed to Phase 4 / Phase 5 until the user explicitly confirms.
Decision tree
User wants to deploy with Qovery
ā
āā Has Qovery account? āāā NO āā> Sign up at https://console.qovery.com
ā
āā Has API token? āāāāāāāā NO āā> Generate at Organization Settings > API Tokens
ā
āā Has a cluster? āāāāāāāā NO āā> Phase 2B: Cluster Setup
ā āā Choose cloud provider (AWS/GCP/Azure/Scaleway)
ā āā Create cloud credentials (CloudFormation / Cloud Shell / etc.)
ā āā Create cluster (Console recommended, or API, or Terraform)
ā āā Wait 15-30 min for cluster to be ready
ā
āā Has Dockerfile? āāāāāāā NO āā> Create one (Phase 3 templates)
ā ā
ā YES
ā
āā Needs Database? āāāāāāā NO āā> Skip database setup
ā ā
ā YES
ā āā Dev/Test? āāāāāāāāāā> Database mode = CONTAINER (cheap, on-cluster)
ā āā Production? āāāāāāāā¬> Database mode = MANAGED (simple, cloud-managed RDS)
ā ā> Terraform service for RDS Aurora (advanced, full control)
ā
āā Needs cloud resources? āā> Terraform service (S3, Lambda, CloudFront, etc.)
ā
āā Has Helm charts? āāāāāāāā> qovery_helm resource
ā
āā Has scheduled tasks? āāāā> Cron Job (qovery_job with schedule.cronjob)
ā
āā Needs DB migrations? āāā> Lifecycle Job (qovery_job with schedule.on_start)
ā
āā Deployment method?
ā āā CLI + API (quick start) āāāāāāāāā> Phase 4
ā āā Terraform (recommended for prod) > Phase 5
ā
āā Deploy and watch āā> Phase 9
ā ā
ā āā Deployment succeeds āā> Show URLs, done!
ā ā
ā āā Deployment fails āā> Phase 10: Diagnose & Fix
ā ā
ā āā Qovery config issue (port, health check, memory, env var, stages)
ā ā āā> Auto-fix and redeploy (no permission needed)
ā ā
ā āā Dockerfile issue (created by skill)
ā ā āā> Auto-fix and redeploy (no permission needed)
ā ā
ā āā User code issue or secret needed
ā āā> Explain problem, show fix, ASK USER before changing
ā
āā Repeat watch-and-fix loop (max 3 retries per service)
Reference links