byoa-link
Facilitates onboarding for Gradient Bang operators to run BYOA, generating necessary environment configurations and secrets.
Install this skill
Security score
The byoa-link skill was audited on May 30, 2026 and we found 33 security issues across 4 threat categories, including 2 high-severity. Review the findings below before installing.
Categories Tested
Security Issues
Template literal with variable interpolation in command context
| 33 | - For `local`: `${SUPABASE_URL}` is unset in `.env.supabase` (or the file is missing entirely). |
Template literal with variable interpolation in command context
| 77 | ```bash |
Template literal with variable interpolation in command context
| 91 | ```bash |
Template literal with variable interpolation in command context
| 106 | ```bash |
Template literal with variable interpolation in command context
| 124 | ```bash |
Template literal with variable interpolation in command context
| 149 | ```bash |
Access to .env file
| 3 | description: Onboard a Gradient Bang operator to run a Bring-Your-Own-Agent (BYOA) — logs in with email/password, claims a corp ship as BYOA, generates a per-ship wake secret, and writes `.env.byoa` f |
Access to .env file
| 10 | Walks an operator through everything they need to run `uv run byoa` against a Gradient Bang corp ship. End state: a populated `.env.byoa` at the **main repo root** (mode 0600), a ship claimed as BYOA |
Access to .env file
| 22 | - `local` → sources `SUPABASE_URL` from `.env.supabase` (`http://127.0.0.1:54321` when `npx supabase start` is running) |
Access to .env file
| 23 | - **--force**: overwrite an existing `.env.byoa` without prompting |
Access to .env file
| 25 | - **--out**: write the env file somewhere other than `<repo-root>/.env.byoa`. Without this flag, the file always lands at the main repo root regardless of cwd. |
Access to .env file
| 27 | The `dev` env was dropped — it required internal-only env files (`.env.cloud.dev`, `EDGE_API_TOKEN`) that operators don't have. Internal team members testing against dev should run `local` with their |
Access to .env file
| 33 | - For `local`: `${SUPABASE_URL}` is unset in `.env.supabase` (or the file is missing entirely). |
Access to .env file
| 34 | - The resolved destination already has a `.env.byoa` and `--force` was not passed. Check the resolved repo-root path (or `--out`), not cwd. |
Access to .env file
| 63 | set -a && source .env.supabase && set +a |
Access to .env file
| 69 | `BYOA_WAKE_SECRET` is the **per-ship** bearer that authenticates `wake_agent` → wake-receiver (local daemon or operator's Vercel Function). Generate a fresh random hex string (`openssl rand -hex 32`) |
Access to .env file
| 71 | The bus **channel** is allocated server-side per voice session and injected into the harness env by `wake_agent`. Operators never see or set a channel. The local-dev wake daemon (`uv run byoa --serve` |
Access to .env file
| 122 | Generate a fresh random hex bearer (`openssl rand -hex 32`). The wake secret is a per-ship, operator-side credential. Capture the freshly-generated hex in memory; write it to `.env.byoa` in step 7 AND |
Access to .env file
| 143 | ### 7. Write `.env.byoa` |
Access to .env file
| 145 | Path: `--out` value, or `<main-repo-root>/.env.byoa` if not provided. **Never write to cwd** — the skill is regularly invoked from a worktree, and writing there hides the file from the operator's norm |
Access to .env file
| 151 | OUT_PATH="${OUT_OVERRIDE:-$PROJECT_ROOT/.env.byoa}" |
Access to .env file
| 166 | Only the three required values are filled in; every other option (`BYOA_PROMPT_FILE`, `TASK_LLM_*`, `BYOA_TOOL_CALL_TIMEOUT_SECONDS`, …) stays commented out at its default. `SUBAGENT_BUS_DATABASE_URL` |
Access to .env file
| 175 | - Author `./prompt.md` (≤ 8 KB, appended to the base task-agent prompt) and set `BYOA_PROMPT_FILE=./prompt.md` (or inline `BYOA_PROMPT=...`) in `.env.byoa`. |
Access to .env file
| 180 | The daemon reads `.env.byoa` and waits for wakes from `wake_agent`. As long as the ship has no per-ship `source_url` set, `wake_agent` defaults to `http://host.docker.internal:8765/wake` and routes to |
Access to .env file
| 181 | - **Production** (env = `prod`): run `/byoa-deploy-vercel prod` next. It deploys the template at [deployment/vercel/](../../../deployment/vercel/) to the operator's Vercel project (production by defau |
Prompting for API key/token input
| 181 | - **Production** (env = `prod`): run `/byoa-deploy-vercel prod` next. It deploys the template at [deployment/vercel/](../../../deployment/vercel/) to the operator's Vercel project (production by defau |
External URL reference
| 21 | - `prod` / `live` → `https://api.gradient-bang.com/functions/v1` (operator-facing; no env file needed). If the operator types nothing, this is what they get. |
External URL reference
| 22 | - `local` → sources `SUPABASE_URL` from `.env.supabase` (`http://127.0.0.1:54321` when `npx supabase start` is running) |
External URL reference
| 53 | SUPABASE_URL=https://api.gradient-bang.com |
External URL reference
| 64 | # SUPABASE_URL now points at http://127.0.0.1:54321 (or whatever the file has). |
External URL reference
| 138 | - **Leave unset** (recommended for local dev): `wake_agent` falls back to `http://host.docker.internal:8765/wake` — the default port for `uv run byoa --serve` running on the host. No further config ne |
External URL reference
| 139 | - **Set explicitly**: pass `source_url` on the same `set` call (or a follow-up). Required for Vercel/prod deploys (`https://<your-project>.vercel.app/api/wake`) and for local daemons listening on a no |
External URL reference
| 180 | The daemon reads `.env.byoa` and waits for wakes from `wake_agent`. As long as the ship has no per-ship `source_url` set, `wake_agent` defaults to `http://host.docker.internal:8765/wake` and routes to |