Get started

one create

Create a new One workspace root skeleton.

6 min readUpdated 3 days agoEdit on GitHub

one create creates the workspace skeleton and installs skills. By default it creates only the workspace root; add projects later with one add.

Usage

one create [dir] [options]

Arguments

ArgumentDescription
dirTarget directory. Use . to create in the current directory with basename(cwd) as the name. The target must not exist or must be empty
-n, --name <name>Project name. Defaults to basename(dir)
-y, --yesNon-interactive mode; uses defaults and requires an explicit dir
--env-provider <dotenv|infisical>Env backend selection. Defaults to dotenv; pass infisical explicitly when needed
-o, --output <fmt>json / yaml / text; default is TTY-aware auto detection

Interactive Mode

Running one create with no arguments opens terminal questions for:

  1. Target directory, such as ./my-app; use . for the current directory.
  2. Project name, optional; when empty, One CLI uses the target directory basename.

one create does not ask about deploy / container, and it no longer asks whether to switch to Infisical. The default env backend is env/dotenv; use --env-provider infisical to choose Infisical at create time.

For scripts, CI, and agents, use non-interactive commands:

one create my-app --yes
one create my-app --yes --env-provider infisical

Automatically Enabled Backends

one create no longer asks users to manually select many plugins.

Workspace defaults, enabled without terminal questions

DomainDefault backendBehavior
envenv/dotenvReads and writes .env files; switch to Infisical with --env-provider infisical or later with one env switch infisical
cici/github-actionsWrites .github/workflows/
devdev/processWrites Procfile.dev, consumable by mprocs / overmind-style runners

Deploy / container are template-driven

They are not written at create time. one add <template> enables them based on template defaults:

TemplateAuto-enabled backend
go-api / nestjs-api / nextjs-appcontainer=docker + deploy=kustomize
react-spa / astro-site / starlight-docsdeploy=aws-s3
expo-mobile / ts-library / go-lib / electron-appno deploy / container default

--env-provider Semantics

--env-provider <dotenv|infisical> explicitly selects the env backend:

one create my-app -y --env-provider infisical

Configure a machine-level Infisical profile first:

one configure add env/infisical --profile work \
  --client-id $INFISICAL_UNIVERSAL_AUTH_CLIENT_ID \
  --client-secret $INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET \
  --use

one create --env-provider infisical tries to auto-bind or create an Infisical project. If the profile, network, or permission is not ready, workspace creation still succeeds; the first one env set/get/list/pull retries lazy auto-bind.

Output

{
  "schema": "one-cli/create/v2",
  "project_name": "my-app",
  "created_path": "/abs/path/my-app",
  "created_in_place": false,
  "package_manager": "pnpm",
  "secrets_backend": "dotenv",
  "ci_enabled": true,
  "dev_enabled": true,
  "skills": {
    "status": "completed",
    "installed_to": ["/Users/example/.claude/skills"],
    "skill_count": 2
  }
}

secrets_backend is the env-domain backend name (dotenv / infisical). ci_enabled and dev_enabled are always true; CI workflow and Procfile.dev are always synced. Container and deploy backends are template-driven and live in projects[].domains.{container,deploy}.

skills.status can be:

  • "completed": skills installed.
  • "failed": workspace creation succeeded, but skill installation failed. Run one skills install later.

Examples

Interactive

one create
# Asks for target directory and optional project name

Non-interactive

one create my-app --yes

Use Infisical As Secrets Backend

one create my-app --yes --env-provider infisical

Create In Current Directory

mkdir my-app && cd my-app
one create . --yes

Create Skeleton And Add First Project

one create my-app --yes
cd my-app
one add nestjs-api --name api --yes
pnpm install

Common Errors

CodeRecovery
EXISTING_TARGET_NOT_EMPTYChoose an empty directory, or delete the target manually and retry
INVALID_NAMENames must match ^[a-zA-Z0-9][a-zA-Z0-9_-]*$; replace spaces with -
PROJECT_NAME_REQUIREDPass the positional directory/name in non-interactive mode
BACKEND_ID_UNKNOWNInvalid --env-provider; legal values are dotenv / infisical
WORKSPACE_NESTED_FORBIDDENDo not create a workspace inside an existing workspace; use another directory or one add
SKILLS_INSTALL_FAILEDCheck write permission for agent skill directories, or run one skills install manually

Full table: Error codes.