sc-all — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sc-all (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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"]
D5 --> D6["6 · DNS + poll"]
D6 --> Live["live URL ✅"]
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 --> LiveRequired env (see /sc-onboarding if any are missing):
GITHUB_TOKENDOKPLOY_API_URL, DOKPLOY_API_KEYHOSTINGER_API_TOKEN (optional but recommended)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:
Dockerfile (for the frontend) — ARG NEXT_PUBLIC_CONVEX_URL=... patterndocker-compose.yml (for Convex backend) — only if self-hosted Convexconvex/_generated/ committed (run npx convex dev --once first)All mandates from sc-convex and sc-dokploy apply. Specifically:
@convex-dev/auth, never Clerk unless requested.convex/_generated committed; no codegen inside Dockerfile.npm install --yes --legacy-peer-deps.DOKPLOY_API_URL) — never rename it inside any script.clerk at https://mcp.clerk.com/mcp)./sc-all is the umbrella command. Invoking it automatically pulls in every sub-skill below (sc-onboarding, GitHub repo create+push via lib/github.js, 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:
/sc-all installs/refreshes the sc-git pre-push hook with Convex auto-deploy guard. After that, git push alone handles everything — backend deploys to Convex self-hosted first, then frontend rebuilds via Dokploy webhook. Never instruct the user to run `npx convex deploy`, `pnpm convex:deploy`, or any Convex CLI command by hand./sc-all runs the full Phase 1–6 sequence below.--target dokploy|vercel, default dokploy)--target dokploy (default): the existing Phase 1–6 flow (self-hosted Convex on Dokploy + Dokploy frontend app).--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, sets CONVEX_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 both targets.
/sc-all walks through these phases. Each phase delegates to a sub-skill or shared library:
If any required env var missing → run /sc-onboarding first.
lib/github.js → ensureRepo() (create private repo if missing)lib/github.js → pushLocalRepo() (init/commit/push via SSH)lib/dokploy.js → findOrCreateProject(project)Dockerfile / docker-compose.yml to choose Application vs Compose pathdocker-compose.yml exists OR convex/ dir exists)Delegate to sc-convex AUTOMATICALLY — never wait for the user to type /sc-convex:
scripts/deploy-convex.js --project <P> --app <A> --domain <D> --with-auth-keysnode skills/sc-git/scripts/hook.js install --repo <name> — installs the pre-push hook that auto-deploys Convex on every push that touches convex/. After install, the user just git push and the hook does pnpm exec convex deploy --yes against the self-hosted backend (CLI auto-detects from .env.local). Zero manual Convex commands forever.Dockerfile exists)lib/dokploy.js → createApplication if missingenv + buildArgs to inject NEXT_PUBLIC_CONVEX_URL<domain> via lib/dokploy.js → createDomainlib/dokploy.js → cleanupApplicationDomains to remove stale duplicates / traefik.melib/dokploy.js → deployApplication + poll until applicationStatus === 'done' | 'error'sc-convex → scripts/check-backend.js to probe api-/site-/dash- subdomainsThe 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 go on the command line.
cd ~/projects/<app_name>
node ~/projects/opensource/si-coder-agent/scripts/deploy.js \
--project "<PROJECT>" --app "<APP_NAME>" --domain "<DOMAIN>"| 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 |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.