From zeabur
Deploys Zeabur templates and marketplace prebuilt services (MongoDB, PostgreSQL, Redis, etc.) via CLI. Supports searching, deploying by code, or custom YAML templates.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zeabur:zeabur-template-deployThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Always use `npx zeabur@latest` to invoke Zeabur CLI.** Never use `zeabur` directly or any other installation method. If `npx` is not available, install Node.js first.
Always use
npx zeabur@latestto invoke Zeabur CLI. Never usezeaburdirectly or any other installation method. Ifnpxis not available, install Node.js first.
Deploy Zeabur templates and marketplace prebuilt services via CLI. Always use non-interactive mode (-i=false) in CLI automation.
If no project exists yet, use the zeabur-project-create skill to create one before deploying.
For well-known services available in the Zeabur template marketplace, do NOT write custom template YAML files. Search for the template code and deploy it directly with -c:
# 1. Search for the template by keyword
npx zeabur@latest template search mongodb -i=false --json
# 2. Deploy by template code (from the "Code" field in search results)
npx zeabur@latest template deploy -i=false \
-c <TEMPLATE_CODE> \
--project-id <project-id>
# Search returns code "KXL04P" for MongoDB
npx zeabur@latest template search mongodb -i=false --json
# Deploy directly by code
npx zeabur@latest template deploy -i=false \
-c KXL04P \
--project-id abc123
If you need to modify the template YAML before deploying (e.g. adjust env vars, change image tags, add services), fetch it first with template get --raw, edit it, then deploy with -f:
# 1. Fetch the raw YAML
npx zeabur@latest template get -c KXL04P --raw > template.yaml
# 2. Edit template.yaml as needed
# 3. Deploy the customized template
npx zeabur@latest template deploy -i=false \
-f template.yaml \
--project-id <project-id>
For fully custom or multi-service templates, use a template YAML file:
npx zeabur@latest template deploy -i=false \
-f template.yaml \
--project-id <project-id> \
--var KEY1=value1 \
--var KEY2=value2
| Flag | Description |
|---|---|
-f, --file | Template file (local path or URL) |
-c, --code | Template code (deploy marketplace template directly, mutually exclusive with -f) |
--project-id | Project ID to deploy on |
--var | Template variables (repeatable, e.g. --var KEY=value) |
--skip-validation | Skip template validation |
-i=false | Non-interactive mode (always use this) |
When using -i=false, all required template variables must be provided via --var flags.
If variables are missing, CLI shows helpful error:
Error: missing required variables in non-interactive mode:
--var PUBLIC_DOMAIN=<value> (Enter your domain prefix)
--var DB_NAME=<value> (Database name)
npx zeabur@latest template deploy -i=false \
-f https://example.com/template.yaml \
--project-id abc123 \
--var PUBLIC_DOMAIN=myapp \
--var ADMIN_EMAIL=admin@example.com
npx zeabur@latest template deploy -i=false \
-f zeabur-template-myapp.yaml \
--project-id abc123 \
--var PUBLIC_DOMAIN=myapp
Template variables are defined in spec.variables section of the YAML:
spec:
variables:
- key: PUBLIC_DOMAIN
type: DOMAIN
name: Domain
description: Enter your domain prefix
- key: DB_NAME
type: STRING
name: Database Name
description: Database name
To create or edit template YAML files, use the zeabur-template skill.
Services deployed via custom template YAML files (-f template.yaml) with template: PREBUILT may not get registered in Zeabur's internal DNS (*.zeabur.internal). This means other services in the same project cannot connect to them by hostname. See zeabur/cli#204.
Workaround: For database services (PostgreSQL, MySQL, Redis), use the marketplace template code (-c <CODE>) instead of custom YAML files. Marketplace templates are properly registered in internal DNS.
# RECOMMENDED — deploy via marketplace code (has internal DNS)
npx zeabur@latest template search postgresql -i=false --json
npx zeabur@latest template deploy -i=false -c <CODE> --project-id <id>
# NOT RECOMMENDED — custom YAML may lack internal DNS
npx zeabur@latest template deploy -i=false -f my-pg.yaml --project-id <id>
spec nestingTemplate YAML requires spec.services[].spec.source, not spec.services[].source:
# CORRECT
spec:
services:
- name: my-service
template: PREBUILT
spec: # <-- required nesting
source:
image: postgres:17
# WRONG — will fail with "missing property 'spec'"
spec:
services:
- name: my-service
template: PREBUILT
source: # <-- missing spec wrapper
image: postgres:17
| Issue | Solution |
|---|---|
| Interactive prompt hangs | Always use -i=false with --project-id and --var flags |
| Missing variables error | Add all required --var flags |
Variable with ${REF} | Use literal value or set in Dashboard after deploy |
| DOMAIN type validation | Domain availability checked automatically |
missing property 'spec' | Wrap source/ports/env under spec: (double-nested) |
| Other services can't connect to DB | Use marketplace code (-c) not custom YAML (-f) for databases |
npx claudepluginhub zeabur/agent-skills --plugin zeaburCreates, edits, validates, and troubleshoots Zeabur template YAML files. Converts docker-compose to Zeabur template format. Builds and publishes Docker images for template use.
Deploys apps to Render by analyzing codebases, generating render.yaml blueprints, and providing dashboard deeplinks. For Git-backed services, Docker images, databases, and cron jobs.
Guides deploying apps to Vercel, Railway, Netlify, and others; covers hosting selection, custom domains, env vars, production DBs, DNS, and going live.