zeon new

Scaffold a project or a typed item: skill, workflow, world, object, canvas.

zeon new is the one verb you use to create anything in Zeon. Six subcommands:

SubcommandWhat it creates
zeon new projectA new cloud project + local working tree
zeon new skillskills/<name>/metadata.yaml + robotic_code.py
zeon new workflowworkflows/<name>.json (minimal start → end graph)
zeon new worldworlds/<name>/world_state.json (empty scene)
zeon new objectobjects/<name>/<name>.urdf + <name>.object_model.yaml (materialized from the mesh database)
zeon new canvascanvas/<workflow>_screen.tsx + patches the workflow JSON

All item-creating subcommands (skill, workflow, world, object, canvas) operate on the project you're inside. The CLI walks up from cwd looking for a .zeon/ directory.

Naming rules

Names must match ^[a-z_][a-z0-9_-]{0,63}$:

  • Lowercase letters, digits, underscores, and hyphens.
  • Must start with a letter or underscore.
  • 1–64 characters.

Spaces, uppercase, and other punctuation are rejected. (Skill function names get hyphens converted to underscores in the Python code, so my-skilldef my_skill():.)

zeon new project

Creates a new cloud project and bootstraps a local working tree.

zeon new project my-project                              # creates ./my-project/
zeon new project my-project ~/path/to/elsewhere          # creates the working tree there
zeon new project my-project --description "Lab plate workflow"

The cloud project is created first; if anything fails after that, you can recover with zeon clone my-project.

The target directory must be empty, or not exist. A fresh project is not empty: it is seeded with a small runnable example, so skills/, workflows/, worlds/, objects/ and canvas/ all arrive populated. See Your first project.

zeon new skill <name>

zeon new skill my_skill

Creates:

  • skills/my_skill/metadata.yaml: skill metadata template.
  • skills/my_skill/robotic_code.py: Python function stub.

Fails if either file already exists. See Authoring a Skill.

zeon new workflow <name>

zeon new workflow my_workflow

Creates workflows/my_workflow.json with a minimal start → end graph. Fails if the file already exists. See Authoring a Workflow.

zeon new world <name>

zeon new world my_world

Creates worlds/my_world/world_state.json (empty scene). Fails if the folder already exists. See Building a World.

zeon new object <name>

zeon new object coldblock_holder

Materializes a project-bound object from the shared mesh database: fetches <name>.urdf and <name>.object_model.yaml from the catalog into objects/<name>/.

Hard-fails if the name isn't in the mesh database. Use zeon mesh-database list to find available names.

After running, the files exist locally but aren't yet committed. Push to the cloud with:

zeon commit -m "Add coldblock_holder"
zeon push

See Adding an Object.

zeon new canvas <workflow>

zeon new canvas my_workflow

Creates canvas/my_workflow_screen.tsx (React component template) and patches workflows/my_workflow.json's canvas_ui block to point at it.

Fails if:

  • The workflow doesn't exist.
  • The workflow already has a canvas_ui block.
  • The TSX file already exists on disk.

This is the only zeon new subcommand that modifies an existing file. Both writes (new TSX, patched workflow JSON) happen as a single atomic operation. If either would fail, nothing is written.

See Creating a Canvas.

Collision behaviour

All zeon new <kind> commands check for file collisions before writing anything. If even one target file already exists, the command aborts with a clear error and your project is left untouched.

This means you can't accidentally "half-create" an item.

What you get back

Successful runs print:

  • The kind and name of what was created.
  • The file(s) that were written, relative to the project root.
  • A hint pointing to the primary file you'll want to edit:
created skill my_skill
  - skills/my_skill/metadata.yaml
  - skills/my_skill/robotic_code.py

Edit skills/my_skill/robotic_code.py to get started.

Where to go next


Did this page help you?