| name | qovery |
| description | Route Qovery requests to the right specialized skill and handle quick operations (list, status, stop, restart, logs, clone, scale). Activates on any generic Qovery mention. Use when the user mentions Qovery without a specific action, needs a simple operational command, or wants to discover available Qovery capabilities. |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"developers","workflow":"meta-router"} |
Qovery
Entry point for all Qovery interactions. This skill detects the user's intent and either routes to the appropriate specialized skill or handles quick operational commands directly.
When to Use This Skill
Activate when the user mentions Qovery generically or needs a quick operation:
- "I want to use Qovery"
- "Help me with Qovery"
- "What can I do with Qovery?"
- "Manage my Qovery environment"
- "List my Qovery projects"
- "Check the status of my services"
- "Stop my environment"
- "Restart my service"
- "Show me logs"
- Any Qovery Console URL pasted without a specific request
/qovery (slash command)
Do NOT use this skill if the user's intent clearly matches a specialized skill — use that skill directly.
Qovery Console URL Detection
When the user provides a Qovery Console URL (from console.qovery.com or new-console.qovery.com), extract the resource IDs directly from the URL path. See reference/console-url-detection.md for extraction rules and API calls.
Use the extracted IDs to determine context and either route to a specialized skill or execute a quick operation against the identified resource.
Intent Detection & Routing
Analyze the user's message and route to the appropriate specialized skill. Auto-route when confident. Ask when ambiguous.
Routing Table
| User Intent | Route To | Example Phrases |
|---|
| New to Qovery, getting started, what is Qovery | qovery-onboard | "new to Qovery", "set up Qovery", "what is Qovery", "getting started", "migrate from Heroku" |
| Deploy an application, create Dockerfile, deploy to K8s | qovery-deploy | "deploy my app", "deploy to Kubernetes", "create a Dockerfile", "deploy to the cloud" |
| Deployment failing, app crashing, errors, connectivity | qovery-troubleshoot | "deployment failed", "app is crashing", "can't connect", "error", "service down", "health check" |
| Costs too high, right-sizing, resource optimization | qovery-optimize | "reduce costs", "optimize", "too expensive", "right-size", "save money", "cloud bill" |
| Deployments slow, build time, startup time | qovery-speedup | "deployment is slow", "speed up", "build takes too long", "startup time" |
| Preview environment, PR environment, test branch | qovery-preview | "preview for PR-123", "test this branch", "preview environment", "clone for PR" |
| Terraformize existing setup, convert to IaC | qovery-terraform | "terraformize", "convert to terraform", "export as IaC", "terraform manifests", "infrastructure as code" |
Remote Development Environments (RDEs)
RDEs are managed directly via the Qovery web interface at rde.qovery.com. If a user asks about Remote Development Environments, cloud workspaces, or RDEs, direct them to:
Auto-Routing
When the intent clearly matches a specialized skill, route directly without asking:
"This sounds like a deployment task. Loading the qovery-deploy skill to help you."
The agent should then load and follow the matched skill's instructions.
Ambiguous Intent — Ask the User
If the intent is unclear, present options:
"I can help with Qovery! What would you like to do?"
- Deploy an application to Kubernetes
- Troubleshoot a failing deployment or service
- Optimize costs and right-size resources
- Speed up slow deployments and builds
- Preview — create a temporary environment for a PR
- Onboard — get started with Qovery from scratch
- Quick operation — list, status, stop, restart, logs (handled here)
Or just describe what you need and I'll figure out the right approach.
Quick Operations
For simple day-to-day commands, handle directly without routing to a specialized skill. Authenticate first — see reference/auth.md.
Security: NEVER display, log, or capture Qovery token values. Use $(qovery auth token --print) only inline within curl commands — never as a standalone command or in a variable. Add a User-Agent header to every request. See reference/auth.md for full token handling rules and User-Agent requirements.
List Projects
qovery project list
Or via API:
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/organization" | jq '.results[] | {id, name}'
List Environments
qovery environment list
Check Environment Status
qovery status
Or via API:
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/environment/{envId}/statuses" | jq '{
environment: .environment.state,
services: [
(.applications[] | {name: .name, state, type: "app"}),
(.databases[] | {name: .name, state, type: "db"}),
(.jobs[] | {name: .name, state, type: "job"}),
(.containers[] | {name: .name, state, type: "container"})
]
}'
Stop an Environment
qovery environment stop --environment "{name}"
Or via API:
curl -s -X POST -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/environment/{envId}/stop"
Deploy (Start/Restart) an Environment
qovery environment deploy --environment "{name}"
Delete an Environment
qovery environment delete --environment "{name}"
Restart a Service
qovery service restart --service "{name}"
View Logs
qovery log --service "{name}" --follow
qovery log --service "{name}" --since 1h --filter "ERROR"
qovery log --service "{name}" --tail 100
Via API (applications):
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/application/{appId}/log" | jq '.results[-50:] | .[] | .message'
List Services in an Environment
qovery service list
View Environment Variables
qovery application env list
Clone an Environment
qovery environment clone --environment "{source}" --name "{new-name}"
Cancel a Deployment
curl -s -X POST -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/environment/{envId}/cancelDeployment"
Generic Qovery Operations
For operations not covered by the specialized skills or the quick operations above, use the Qovery CLI and API directly.
Custom Domain Management
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/application/{appId}/customDomain" | jq '.results'
curl -s -X POST -H "Authorization: Bearer $(qovery auth token --print)" \
-H "Content-Type: application/json" \
"https://api.qovery.com/application/{appId}/customDomain" \
-d '{"domain": "app.example.com", "generate_certificate": true}'
curl -s -X DELETE -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/application/{appId}/customDomain/{domainId}"
Scaling (Instances)
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/application/{appId}" | jq '{min_running_instances, max_running_instances, cpu, memory}'
curl -s -X PUT -H "Authorization: Bearer $(qovery auth token --print)" \
-H "Content-Type: application/json" \
"https://api.qovery.com/application/{appId}" \
-d '{"min_running_instances": 2, "max_running_instances": 5, ...}'
IMPORTANT: When calling PUT /application/{appId}, include ALL required fields from the current config, not just the ones being changed. Fetch the current config with GET /application/{appId} first.
Deployment History
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/environment/{envId}/deploymentHistory?version=v2" | jq '.results[0:5]'
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/environment/{envId}/logs" | jq '[.[] | select(.error != null) | {timestamp, error: .error.user_log_message, hint: .error.hint_message}]'
Organization & Cluster Info
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/organization" | jq '.results[] | {id, name}'
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/organization/{orgId}/cluster" | jq '.results[] | {id, name, status, cloud_provider, region}'
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/organization/{orgId}/member" | jq '.results[] | {name, email, role_name}'
Webhooks
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/organization/{orgId}/webhook" | jq '.results'
API Tokens
curl -s -H "Authorization: Bearer $(qovery auth token --print)" \
"https://api.qovery.com/organization/{orgId}/apiToken" | jq '.results[] | {id, name, created_at}'
qovery token create --name "my-token" --duration 24h
For any operation that requires multi-step planning, creating infrastructure from scratch, or complex workflows, route to the appropriate specialized skill instead of handling it here.
Available Qovery Skills
Quick reference for all specialized skills. When routing, tell the user which skill you're loading and why.
| Skill | What It Does | Trigger Phrase |
|---|
qovery-onboard | Guided setup for new Qovery users, BYOK, migrations | "I'm new to Qovery" |
qovery-deploy | Deploy any app to Kubernetes via CLI+API or Terraform | "Deploy my application" |
qovery-troubleshoot | Diagnose and fix deployment failures, crashes, connectivity | "My deployment is failing" |
qovery-optimize | Optimize costs, right-size resources, generate reports | "Reduce my cloud costs" |
qovery-speedup | Analyze and fix slow deployments and builds | "My builds are slow" |
qovery-preview | Preview environments for PRs with auto-shutdown | "Preview PR-123" |
qovery-terraform | Generate Terraform manifests from existing Qovery setup | "Terraformize my setup" |
Reference Links