Manage Vercel environment variables across multiple accounts using the sooacel CLI. Use this skill whenever the user mentions Vercel environment variables, env vars, VE, .env, secrets, or wants to list/add/edit/delete/pull environment variables on a Vercel project. Also trigger when the user mentions sooacel, "variable d'environnement", or references a Vercel project/account in the context of configuration or secrets management. Do NOT trigger for general Vercel deployment, domain, or billing questions.
Sooacel is an interactive + non-interactive CLI that manages Vercel environment variables across multiple accounts. It wraps @vercel/sdk and stores tokens in ~/.sooacel/.env.
The CLI lives at: /home/florent-didelot/Documents/GitHub/sooacel/bin/sooacel.js
If the user hasn't installed it yet, point them to:
cd /home/florent-didelot/Documents/GitHub/sooacel
bash setup/install.sh
Always use the non-interactive mode (pass all arguments via flags). Never launch the interactive wizard — it uses inquirer prompts that cannot be controlled from Claude Code.
node /home/florent-didelot/Documents/GitHub/sooacel/bin/sooacel.js ls --account <account> --project <project>
node /home/florent-didelot/Documents/GitHub/sooacel/bin/sooacel.js set \
--account <account> \
--project <project> \
--key <KEY_NAME> \
--value "<value>" \
--type <encrypted|plain|sensitive> \
--target <production,preview,development> \
--comment "<optional comment>" \
--yes
--type defaults to encrypted if omitted--target defaults to production,preview if omitted--yes skips the upsert confirmation if the key already existsnode /home/florent-didelot/Documents/GitHub/sooacel/bin/sooacel.js edit \
--account <account> \
--project <project> \
--key <KEY_NAME> \
--value "<new value>" \
--comment "<optional comment>"
node /home/florent-didelot/Documents/GitHub/sooacel/bin/sooacel.js rm \
--account <account> \
--project <project> \
--key <KEY_NAME> \
--yes
--yes skips the deletion confirmationnode /home/florent-didelot/Documents/GitHub/sooacel/bin/sooacel.js pull \
--account <account> \
--project <project> \
--environment <development|preview|production> \
--yes
--yes skips overwrite confirmation if .env.local already exists| Flag | Description | Required for |
|---|---|---|
--account | Account key (lowercase, matches VERCEL_TOKEN_* suffix) | All commands |
--project | Vercel project name | All commands |
--key | Env var name | set, edit, rm |
--value | Env var value | set, edit |
--type | encrypted (default), plain, sensitive | set (optional) |
--target | Comma-separated: production,preview,development | set (optional) |
--environment | development, preview, or production | pull |
--comment | Optional comment | set, edit (optional) |
--yes / -y | Skip all confirmations | Any (optional) |
Accounts are auto-discovered from ~/.sooacel/.env. Any VERCEL_TOKEN_<NAME>=<token> line creates an account with key <name> (lowercased). The --account flag matches against this key.
To see available accounts, run:
node /home/florent-didelot/Documents/GitHub/sooacel/bin/sooacel.js ls --account nonexistent --project x 2>&1
The error message lists all available account keys.
User asks to add a variable:
sooacel set with all flagsUser asks to check what variables exist:
sooacel ls with account and projectUser asks to update a variable:
sooacel edit with account, project, key, and new valueUser asks to delete a variable:
sooacel rm with --yes to skip confirmationUser asks to pull env vars for local dev:
sooacel pull with --environment development --yesThe CLI returns clear French error messages:
Token invalide ou expire → token needs rotation, contact adminPas de permission → wrong account or insufficient accessProjet introuvable → check project name spellingCompte inconnu → check account key, list available accountsVariable introuvable → check key name with sooacel ls firstAlways check the exit code: 0 = success, 1 = error.