$npx -y skills add cybrixcc/cybrix-skills --skill cybrix-deployDeploys the current project to a live HTTPS URL via Cybrix. Activates on any request to make the current project public, get a URL for it, deploy it, ship it, host it, publish it, put it online, or make it live — including casual phrasings like "send this to the internet", "share
| 1 | # cybrix-deploy |
| 2 | |
| 3 | ## Prerequisites |
| 4 | |
| 5 | Before deploying, ensure the user has an API token. Check in this order: |
| 6 | |
| 7 | 1. `CYBRIX_DEPLOY_TOKEN` — set automatically by Claude Code from userConfig keychain (no action needed). |
| 8 | 2. Environment variable `CYBRIX_TOKEN`. |
| 9 | 3. File `~/.config/cybrix/token`. |
| 10 | 4. File `.cybrix/token` in the project (gitignored). |
| 11 | |
| 12 | If none exist, instruct the user exactly like this: |
| 13 | |
| 14 | > No Cybrix token found. Get one free at **https://app.cybrix.cc/dashboard** |
| 15 | > (Step 3 — "Save your API token" → Generate). |
| 16 | > |
| 17 | > Once you have it, you can either: |
| 18 | > - **Paste it here** and I'll use it for this deploy (easiest) |
| 19 | > - Run `export CYBRIX_TOKEN=<token>` in your terminal to set it for this session |
| 20 | > - Run `echo <token> > ~/.config/cybrix/token` to save it permanently |
| 21 | |
| 22 | Then wait for the user to provide the token. If they paste it directly in |
| 23 | chat, use it immediately — do not require them to re-run any command. |
| 24 | The project is ready to deploy once the token is available. |
| 25 | |
| 26 | ## Deployment workflow |
| 27 | |
| 28 | ### Step 1 — Detect project type (heuristic) |
| 29 | |
| 30 | Do not rely on a framework whitelist. Instead, look for signals and |
| 31 | classify the project as **static**, **server**, or **unknown**. |
| 32 | |
| 33 | **Static signals** (proceed with deploy): |
| 34 | |
| 35 | - `package.json` has a `build` script AND output lands in `dist/`, `out/`, |
| 36 | `build/`, `public/`, `_site/`, or `.output/public/` |
| 37 | - `next.config.{js,ts,mjs}` with `output: 'export'` or `output: 'static'` |
| 38 | - `astro.config.{js,ts,mjs}` present (default mode is static) |
| 39 | - `vite.config.{js,ts}` without SSR plugins |
| 40 | - `_config.yml` (Jekyll), `config.toml` or `hugo.toml` (Hugo), |
| 41 | `.eleventy.js` / `eleventy.config.js` (Eleventy), |
| 42 | `zola.toml` (Zola) |
| 43 | - Only HTML/CSS/JS files at root, no server entry point |
| 44 | |
| 45 | **Server signals** (refuse — see below): |
| 46 | |
| 47 | - `Dockerfile` or `docker-compose.yml` (unless it only copies a static |
| 48 | `dist/`) |
| 49 | - `main.go`, `server.go`, or any `*.go` containing `net/http` or |
| 50 | `ListenAndServe` |
| 51 | - `main.py`, `app.py`, `server.py` with `uvicorn`, `gunicorn`, `flask`, |
| 52 | `fastapi` imports, or a `if __name__ == '__main__'` block calling |
| 53 | `app.run` / `serve` / `asyncio.run` |
| 54 | - `main.rs` or `server.rs` with `actix`, `axum`, `rocket`, `warp`, |
| 55 | or `tokio::main` |
| 56 | - `package.json` with a `start` script that runs `node`/`tsx`/`bun` on a |
| 57 | server file (NOT `next start` in a static-export config) |
| 58 | - `Gemfile` with `puma`, `unicorn`, `rails`, or `sinatra` |
| 59 | - `pom.xml` or `build.gradle` with `spring-boot` |
| 60 | - `.csproj` with ASP.NET |
| 61 | |
| 62 | **Database signals** (warn but allow if everything else is static): |
| 63 | |
| 64 | - `*.sql` files, `migrations/` folder, `prisma/schema.prisma`, |
| 65 | `drizzle.config.*`, `DATABASE_URL` referenced in source |
| 66 | - A static site hitting a hosted DB from the browser is unusual but valid. |
| 67 | Warn the user, don't refuse. |
| 68 | |
| 69 | **When refusing** (server signals detected): |
| 70 | |
| 71 | > This looks like a project that needs a server runtime — I detected |
| 72 | > `<specific signal, e.g. "main.go with net/http" or "Dockerfile with EXPOSE">`. |
| 73 | > |
| 74 | > Cybrix currently supports static sites only. Your options: |
| 75 | > 1. Convert to a static export (e.g. Next.js `output: 'export'`, Astro, |
| 76 | > Hugo). |
| 77 | > 2. Use a service that supports backends: Railway, Fly.io, Render. |
| 78 | > 3. Tell me to deploy anyway if you think the detection is wrong. |
| 79 | |
| 80 | Always allow option 3 — heuristics are imperfect and the user knows |
| 81 | their project. |
| 82 | |
| 83 | **Static output directories** to check, in order: `dist`, `out`, `public`, |
| 84 | `_site`, `build`, `.output/public`. |
| 85 | |
| 86 | ### Step 2 — Scan environment variables |
| 87 | |
| 88 | After confirming the project is static but BEFORE running the build, scan |
| 89 | for environment variables the build will need. |
| 90 | |
| 91 | **2a. Rea |