Sc all
Zero-human full-stack deployment skill bundle for AI agents — GitHub + Dokploy + Convex (self-hosted & Cloud) + Vercel + Hostinger DNS, via modular /sc-* slash commands.
npx -y skills add rahmanef63/si-coder-agent --skill sc-allAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
End-to-end zero-human full-stack deployment. Orchestrates sc-dokploy + sc-convex + sc-convex-cloud + sc-vercel: create GitHub repo, push code, set up backend + frontend, configure DNS, trigger build, poll until done. Equivalent to legacy /use-si-coder but composed of the modular sc-* skills. Supports --target dokploy (default: self-hosted Convex on Dokploy) | hybrid (VPS frontend on Dokploy + Convex Cloud backend) | vercel (online: Vercel + Convex Cloud).
SKILL.md
12.9 KB, as published. Nobody here has run it
/sc-all — Full-stack zero-human deployment
Use this skill when the user wants to ship a fresh project end-to-end in one command. This is the modular replacement for the legacy /use-si-coder monolith — both remain available in parallel.
flowchart LR
P1["1 · onboarding<br/>verify env"] --> P2["2 · GitHub<br/>repo + push"]
P2 --> T{"--target"}
T -->|dokploy| D3["3 · Dokploy project"]
D3 --> D4["4 · Convex self-hosted<br/>admin key + JWT"]
D4 --> D5["5 · Dokploy app<br/>+ DNS + poll"]
D5 --> D6["6 · Verify<br/>check-backend"]
D6 --> Live["live URL ✅"]
T -->|hybrid| H4["H4 · Convex Cloud<br/>backend-only push"]
H4 --> H5["H5 · Dokploy app (VPS)<br/>NEXT_PUBLIC_CONVEX_URL=cloud"]
H5 --> H6["H6 · Verify<br/>check-cloud + app status"]
H6 --> Live
T -->|vercel| V4["V4 · Convex Cloud<br/>coupled build"]
V4 --> V5["V5 · Vercel project<br/>+ domain + DNS"]
V5 --> V6["V6 · verify<br/>check-cloud + readyState"]
V6 --> Live
Three targets, one flow shape (GitHub → backend → frontend → DNS → verify):
--target | Frontend | Backend | Needs |
|---|---|---|---|
dokploy (default) | Dokploy app (your VPS) | Convex self-hosted (compose on Dokploy) | DOKPLOY_* |
hybrid | Dokploy app (your VPS) | Convex Cloud (managed) | DOKPLOY_* + CONVEX_DEPLOY_KEY |
vercel | Vercel (managed edge) | Convex Cloud (managed) | VERCEL_TOKEN + CONVEX_DEPLOY_KEY |
hybrid = keep the app on the box you control, drop the self-hosted-DB babysitting. No docker-compose.yml, no admin-key rotation, no api-/site-/dash- backend subdomains — the backend is a managed *.convex.cloud deployment.
Pre-requisites
Required env (see /sc-onboarding if any are missing):
GITHUB_TOKENDOKPLOY_API_URL,DOKPLOY_API_KEYHOSTINGER_API_TOKEN(optional but recommended)
For --target hybrid (VPS frontend + Convex Cloud backend): requires DOKPLOY_* and
CONVEX_DEPLOY_KEY (route to /sc-onboarding --domains github,dokploy,convex-cloud,hostinger
if missing). No docker-compose.yml needed — the backend is managed.
For --target vercel (online path): requires VERCEL_TOKEN + CONVEX_DEPLOY_KEY instead of
DOKPLOY_* (route to /sc-onboarding --domains vercel,convex-cloud if missing). DOKPLOY_* is
not required for this target. HOSTINGER_API_TOKEN stays optional for DNS.
The user's project directory must contain:
- A
Dockerfile(for the frontend,dokploy/hybridtargets) —ARG NEXT_PUBLIC_CONVEX_URL=...pattern - A
docker-compose.yml(for Convex backend) — only for--target dokploy(self-hosted); ignored byhybrid/vercel convex/_generated/committed (runnpx convex dev --oncefirst)
CORE MANDATES
All mandates from sc-convex and sc-dokploy apply. Specifically:
- Self-Hosted Convex by default —
@convex-dev/auth, never Clerk unless requested.--target hybrid/vercelopt into managed Convex Cloud instead (still@convex-dev/auth). - Build Safety —
convex/_generatedcommitted; no codegen inside Dockerfile. - No prompts —
npm install --yes --legacy-peer-deps. - Idempotency — duplicate domain creation = no-op; do not recreate existing services.
- Exact cloning — if user wants a clone of an existing site, fetch and replicate layout.
- Admin Key Sync — Dokploy env + repo env file always match.
- Preserve your Dokploy control host (the one in
DOKPLOY_API_URL) — never rename it inside any script. - Clerk MCP for Clerk apps — if target uses Clerk, preserve it; use Clerk MCP (
clerkathttps://mcp.clerk.com/mcp).
Umbrella semantics
/sc-all is the umbrella command. Invoking it automatically pulls in every sub-skill below (sc-onboarding, GitHub repo create+push via scripts/deploy.js (inline fetchGitHub + POST /user/repos), sc-dokploy, sc-convex, sc-git hook install). The user never needs to invoke /sc-convex separately — if docker-compose.yml is present, sc-convex is run as Phase 4. If a convex/ dir is present without compose (existing self-hosted), sc-git's pre-push hook is installed so all subsequent pushes auto-deploy Convex without any manual command.
Concretely:
- Existing self-hosted project:
/sc-allinstalls/refreshes the sc-git pre-push hook with Convex auto-deploy guard. After that,git pushalone handles everything — backend deploys to Convex self-hosted first, then frontend rebuilds via Dokploy webhook. Never instruct the user to runnpx convex deploy,pnpm convex:deploy, or any Convex CLI command by hand. - Fresh deploy:
/sc-allruns the full Phase 1–6 sequence below.
Target selection (--target dokploy|hybrid|vercel, default dokploy)
-
--target dokploy(default): the existing Phase 1–6 flow (self-hosted Convex on Dokploy + Dokploy frontend app). -
--target hybrid(VPS frontend + Convex Cloud backend): keeps the frontend on Dokploy but swaps the self-hosted compose backend for a managed Convex Cloud deployment. Skips Phase 4 self-hosted Convex (no compose, no admin-key rotation, noapi-/site-/dash-backend subdomains). Single-command:scripts/deploy.js --project <P> --app <A> --domain <D> --target hybridhandles it end-to-end. It runs: Phase H4 — Convex Cloud backend:deployBackendOnly(npx convex deploywithCONVEX_DEPLOY_KEYfrom env, never argv) pushes the backend to Convex Cloud, then derives the public*.convex.cloudURL (deriveCloudUrl) — for a preview/project key setNEXT_PUBLIC_CONVEX_URLin env instead. Phase H5 — Dokploy frontend app (same machinery as Phase 5), butNEXT_PUBLIC_CONVEX_URLbuild arg = the Convex Cloud URL (NOTapi-<domain>). Only the frontend domain gets Hostinger DNS + a Dokploy domain; the backend needs none (it lives on Convex's own hosts). Phase H6 — Verify:sc-convex-cloud/scripts/check-cloud.js(backend/version+ JWKS) + the DokployapplicationStatuspoll + frontend liveness probe. -
--target vercel(online): skips Phase 3 Dokploy project, Phase 4 self-hosted Convex, and Phase 5 Dokploy application. Instead runs: Phase V4 — Convex Cloud:sc-convex-cloud/scripts/deploy-cloud.js(or let Vercel's coupled build do it). Phase V5 — Vercel frontend:sc-vercel/scripts/deploy.js --project <P> --app <A> --domain <D> --git-owner <o> --git-repo <r> --prod. This binds the GitHub repo, setsCONVEX_DEPLOY_KEY, sets the coupled build command, adds the domain, writes Hostinger DNS (CNAME for subdomain / A for apex from Vercel's required config), and polls the deploy. Phase V6 — Verify:sc-convex-cloud/scripts/check-cloud.js+ the Vercel deployment readyState + custom-domain alias.
Phase 2 (GitHub) is shared across all three targets.
Orchestration
/sc-all walks through these phases. Each phase delegates to a sub-skill or shared library:
Phase 1 — Onboarding gate
If any required env var missing → run /sc-onboarding first.
Phase 2 — GitHub
scripts/deploy.js→fetchGitHub('/repos/<owner>/<name>'), thenPOST /user/reposon 404 (create private repo if missing)- git init/commit/push via SSH (
REPO_URL_RE-guarded;ensureGitignoreSafetyruns beforegit add)
Phase 3 — Dokploy project
lib/dokploy.js→findOrCreateProject(project)- Detect
Dockerfile/docker-compose.ymlto choose Application vs Compose path
Phase 4 — Convex backend (--target dokploy; if docker-compose.yml exists OR convex/ dir exists)
Delegate to sc-convex AUTOMATICALLY — never wait for the user to type /sc-convex:
- Fresh project (compose):
scripts/deploy-convex.js --project <P> --app <A> --domain <D> --with-auth-keys - Existing self-hosted (just convex/):
node skills/sc-git/scripts/hook.js install --repo <name>— installs the pre-push hook that auto-deploys Convex on every push that touchesconvex/. After install, the user justgit pushand the hook doespnpm exec convex deploy --yesagainst the self-hosted backend (CLI auto-detects from.env.local). Zero manual Convex commands forever.
--target hybrid replaces this phase (H4) with a Convex Cloud push — deployBackendOnly (npx convex deploy with CONVEX_DEPLOY_KEY via env) runs inside scripts/deploy.js before the frontend. Any docker-compose.yml is ignored; no admin key, no backend subdomains. Delegate to sc-convex-cloud for deeper Cloud ops.
Phase 5 — Frontend application (if Dockerfile exists; dokploy + hybrid)
lib/dokploy.js→createApplicationif missing- Bind to Dokploy GitHub provider if available, else raw Git URL
- Set
env+buildArgsto injectNEXT_PUBLIC_CONVEX_URL— self-hosted →https://api-<domain>; hybrid → the Convex Cloud URL (H5) - Create main
<domain>vialib/dokploy.js→createDomain lib/dokploy.js→cleanupApplicationDomainsto remove stale duplicates /traefik.melib/dokploy.js→deployApplication+ poll untilapplicationStatus === 'done' | 'error'
Phase 6 — Verify
dokploy:sc-convex→scripts/check-backend.jsto probeapi-/site-/dash-subdomainshybrid:sc-convex-cloud→scripts/check-cloud.jsto probe*.convex.cloud/version+*.convex.siteJWKS- Print final URLs
Quick run (legacy-compatible script)
The original monolith remains at scripts/deploy.js. It is still functional and parallel-supported:
# export DOKPLOY_API_URL / DOKPLOY_API_KEY / GITHUB_TOKEN (and optional
# HOSTINGER_API_TOKEN) in the environment first — secrets are read ONLY from
# env (never argv) so `ps aux` cannot leak them. Only non-secret
# project/app/domain/target go on the command line.
cd ~/projects/<app_name>
# self-hosted (default):
node ~/projects/opensource/si-coder-agent/scripts/deploy.js \
--project "<PROJECT>" --app "<APP_NAME>" --domain "<DOMAIN>"
# hybrid — VPS frontend + Convex Cloud backend (also export CONVEX_DEPLOY_KEY):
node ~/projects/opensource/si-coder-agent/scripts/deploy.js \
--project "<PROJECT>" --app "<APP_NAME>" --domain "<DOMAIN>" --target hybrid
The same monolith covers --target dokploy|hybrid. The vercel target is not run by this
script — it belongs to sc-vercel/scripts/deploy.js (the monolith rejects --target vercel
with a pointer). For a preview/project Convex key (which doesn't carry the deployment name),
export NEXT_PUBLIC_CONVEX_URL too so hybrid can wire the frontend to the right backend.
Failure modes (where to look)
| Symptom | Where |
|---|---|
applicationStatus: error | Dokploy dashboard → service → Deployments (logs are dashboard-only) |
| Convex auth crash | sc-convex SKILL — "Connection lost while action was in flight" table |
| DNS not resolving | lib/hostinger.js log output; check Hostinger portfolio coverage |
| Domain rejected | already exists, treat as no-op |
-- parsing breaks CLI | use skills/sc-convex/scripts/set-auth-env.js (REST), not npx convex env set |
hybrid: could not resolve the Convex Cloud URL | preview/project deploy key — export NEXT_PUBLIC_CONVEX_URL (or CONVEX_CLOUD_URL); prod keys carry it |
hybrid: Convex Cloud backend deploy failed | sc-convex-cloud SKILL — check CONVEX_DEPLOY_KEY + convex/ present + CLI resolvable; re-run deploy-cloud.js --backend-only |
| hybrid: app up but can't reach backend | NEXT_PUBLIC_CONVEX_URL build arg wrong — must be the *.convex.cloud URL, never api-<domain> |
Related Claude Code plugin skills (consult, don't duplicate)
The sc-* skills own deploy orchestration. For framework-level correctness of the code being
shipped, defer to the installed Claude Code plugin skills instead of re-deriving it here:
- Convex (
convex:convex-authz,convex:design,convex:domains, +convex-expert/convex-revieweragents): object-form function syntax, validators, index/query patterns,@convex-dev/authwiring. Applies to both backends — self-hosted (sc-convex) and Cloud (sc-convex-cloud, used byhybrid/vercel). - Vercel / Next.js (
vercel:nextjs,vercel:next-cache-components,vercel:deployments-cicd,vercel:shadcn, …): App Router, Cache Components (PPR /use cache), build/CI. Applies to theDockerfilebuild for thedokploy/hybridfrontend too, not just--target vercel.
Rule: sc-* decides where it runs and wires the secrets/DNS; the plugin skills decide how the
code is written. Pointer, not a copy — read the plugin skill live so it stays current.