Create a new Doppler project for a repo app or service, wire it to inherit from `_shared`, add personal dev configs, set minimal app-local secrets, and register it in `doppler.yaml`. Use when the user adds a new app/service and wants Doppler setup, inheritance, per-user dev configs, or monorepo wiring.
Install
npx skillscat add iterate/iterate/new-doppler-project Install via the SkillsCat registry.
New Doppler Project
Use this when you add a new app or service and need the matching Doppler project.
You are already logged in to Doppler. The only things you need are the project slug and repo path.
Keep this simple. Almost everything comes from _shared.
The target shape for a new project is:
dev:
APP_CONFIG={}
dev_jonas:
dev_misha:
dev_rahul:
preview:
preview_2:
APP_CONFIG_BASE_URL=https://<app>-preview-2.iterate-dev-stg.workers.dev
...
preview_9:
APP_CONFIG_BASE_URL=https://<app>-preview-9.iterate-dev-stg.workers.dev
prd:
APP_CONFIG={}Everything else should already be inherited from _shared.
Do This
- Create the project:
doppler projects create <project-slug>- Create the configs we use and point them at
_shared:
doppler configs create dev_jonas -p <project-slug>
doppler configs create dev_misha -p <project-slug>
doppler configs create dev_rahul -p <project-slug>
doppler configs create preview_2 -p <project-slug> -e preview
doppler configs create preview_3 -p <project-slug> -e preview
doppler configs create preview_4 -p <project-slug> -e preview
doppler configs create preview_5 -p <project-slug> -e preview
doppler configs create preview_6 -p <project-slug> -e preview
doppler configs create preview_7 -p <project-slug> -e preview
doppler configs create preview_8 -p <project-slug> -e preview
doppler configs create preview_9 -p <project-slug> -e preview
doppler configs update dev -p <project-slug> --inherits="_shared.dev" --yes
doppler configs update dev_jonas -p <project-slug> --inherits="_shared.dev_jonas" --yes
doppler configs update dev_misha -p <project-slug> --inherits="_shared.dev_misha" --yes
doppler configs update dev_rahul -p <project-slug> --inherits="_shared.dev_rahul" --yes
doppler configs update preview -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update preview_2 -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update preview_3 -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update preview_4 -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update preview_5 -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update preview_6 -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update preview_7 -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update preview_8 -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update preview_9 -p <project-slug> --inherits="_shared.preview" --yes
doppler configs update prd -p <project-slug> --inherits="_shared.prd" --yesFor preview-enabled new-style apps, use preview and numbered preview_2 throughpreview_9. Do not create preview_1, preview_10, or stg unless the
matching environment config lease and Cloudflare prerequisites are being added
at the same time.
- Set the tiny app-local secrets:
doppler secrets set APP_CONFIG="{}" -p <project-slug> -c dev --silent
doppler secrets set APP_CONFIG="{}" -p <project-slug> -c prd --silentThat is all. Everything else should come from _shared.
Turn Personal Configs off on the Development (
dev) environment. When this is on, Doppler creates adev_personalbranch per user; we do not use that—we use named configs (dev_jonas, etc.) instead. This should always be off.Dashboard (needs permission to manage environment settings on the project): open the project (
doppler open -p <project-slug>jumps to the dashboard), find the Development environment, open the ⋮ menu next to it → Settings, turn the Personal Configs toggle off, Save.API (same auth as an interactive
dopplerCLI—uses the credential already on the machine, no manual token paste):curl -sS -X PUT \ "https://api.doppler.com/v3/environments/environment?project=<project-slug>&environment=dev" \ -H "Authorization: Bearer $(doppler configure get token --plain)" \ -H "Content-Type: application/json" \ -d '{"personal_configs":false}'Verify:
doppler configs -p <project-slug>must not listdev_personal. Orcurl -sS "https://api.doppler.com/v3/environments/environment?project=<project-slug>&environment=dev" -H "Authorization: Bearer $(doppler configure get token --plain)"and check JSON has"personal_configs":false.Workplace default (optional, reduces repeat fixes): Projects → ⋮ (top right) → Default Environments → for the dev row, set Personal Configs to off so new projects are not created with this enabled. Per Branch configs / Personal Configs.
There is no
doppler environments …CLI subcommand for this toggle; use the dashboard orPUTabove.Add the project to
doppler.yaml:
setup:
- project: <project-slug>
path: <repo-path>/In this repo, doppler.yaml uses only project and path. Do not pin a config there.
- Run local setup from the app or service directory:
cd <repo-path>
doppler setup --project <project-slug> --config dev_jonas- Smoke test:
doppler secrets --only-names
doppler secrets get APP_CONFIG --plain
doppler run -- env | rg '^DOPPLER_CONFIG='
doppler secrets -c dev_jonasRules
- Never ask for or mention a Doppler token.
- Always create exactly
dev_jonas,dev_misha, anddev_rahul. - For preview-enabled new-style apps, create only
dev,dev_jonas,dev_misha,dev_rahul,preview,preview_2throughpreview_9, andprdunless the user explicitly asks for more. DOPPLER_CONFIGis the canonical per-config selector, but it is injected by Doppler itself. Never create it as a secret.- For a new project, the app-local template is just
APP_CONFIG={}indevandprd, plusAPP_CONFIG_BASE_URLin each leased preview config when the app has a public route. - Always set
APP_CONFIGto{}indevandprd. - Do not add extra app-local secrets unless the app actually needs them.
- If staging comes back later, give
stgits own distinct password. Do not reusedevorprd. - Personal Configs on the
devenvironment should always be off (dashboard Development → ⋮ → Settings, orPUTto/v3/environments/environmentwith{"personal_configs":false}as in step 4). - Keep
doppler.yamlin the repo's existing format.