init
Scaffold a new Package project, or refresh its coding-agent files.
npx @elizon/cli init [directory] [--agent=<agent>] [--starter=<starter>] [--dir=<directory>]
npx @elizon/cli init --update [--agent=<agent>] [--dir=<directory>]Creates a Package project: a valid starter manifest, the component folders, the CLI's own config,
a .gitignore, and instructions for your coding agent. It needs no account, no login and no
network, and it asks for none.
Prompts
In a terminal, init asks three questions, each with a default. Prompts go to stderr, so --json
output stays clean.
? Working directory: (.)
? Coding agent:
1) Claude Code (default)
2) Codex
3) Cursor
4) Generic
Choose 1-4: (1)
? Starter:
1) Blank (default)
2) Single agent
3) Multi-agent team
4) Workflow
5) Voice agent
6) Agent with a Skill
7) Agent with Tools
Choose 1-7: (1)Anything you pass as an argument or flag isn't asked. With no terminal attached (CI, a coding agent), nothing is asked and the defaults apply.
Options
| Option | Values | Default |
|---|---|---|
[directory] / --dir | Where to create the project (pass one or the other) | . |
--agent | claude-code, codex, cursor, generic | claude-code |
--starter | blank, single-agent, team, workflow, voice, skill, tool, sip | blank |
--update | Refresh the coding-agent files only (see below) | — |
Values are case-insensitive.
Starters
Every starter is a complete Package that passes validate with no errors and no warnings, so your
first run is green and anything that fails afterwards is something you changed.
| Starter | Entry point | What it contains |
|---|---|---|
blank | agents.assistant | The minimum valid Package: one Agent, one LLM Slot, a manual trigger |
single-agent | agents.support-assistant | An Agent that answers from a Knowledge Base of the installer's documents |
team | teams.triage | A Team with a lead and two member Agents on two LLM Slots |
workflow | workflows.handle-request | A Workflow that calls an Agent and writes a Data Table, which a Code node and the Agent read |
voice | agents.call-handler | An Agent that answers calls, with speech-to-text and text-to-speech Slots |
skill | agents.price-assistant | An Agent and a Skill folder with SKILL.md, a reference file and a Python script |
tool | agents.order-desk | An Agent bound to two MCP Tools and an OpenAPI Tool, each with its credential Slot, that also answers from a Knowledge Base and reads a Data Table |
sip | agents.call-handler | An Agent that answers calls and its voice configuration, plus a SIP routing template, a sip-trunk Slot and an inbound-call trigger |
What it writes
-
elizon.yaml: the manifest. It's yours to edit, andinit --updatenever touches it. -
All six component folders, even the ones the starter leaves empty (with a
.gitkeep). -
.elizon/config.yaml: the exact CLI version this project is pinned to (cliVersion) and the Organizations it can install into (targets, filled in bytarget add). Owned by the CLI, so don't edit it by hand. -
.gitignore: excludes built*.pkgfiles and every location a credential could be put by mistake. -
Coding-agent files, depending on
--agent:--agentFiles claude-code.claude/skills/elizon-packages/SKILL.md,.claude/commands/elizon-validate.md,.claude/commands/elizon-build.mdcodexAGENTS.md,.codex/skills/elizon-packages/SKILL.mdcursor.cursor/rules/elizon-packages.mdc,AGENTS.mdgenericAGENTS.mdThey teach the agent the validate loop, the rules the schema can't express, and when to ask you before running a command. Every command in them uses this project's pinned version. See Author with a coding agent.
init refuses to run in a directory that already contains elizon.yaml, so it never overwrites a
Package. If a .gitignore already exists it's left alone, and init warns you to add the *.pkg
and credential lines yourself.
--update
npx @elizon/cli init --updateRewrites only the coding-agent files, for example after you move the project to a newer CLI.
It never touches elizon.yaml, the component folders, .elizon/config.yaml or .gitignore.
Without --agent it refreshes whichever agent's files the project already has. The refreshed files
use the version in .elizon/config.yaml, not the version you ran.
Example
npx @elizon/cli init support-bot --starter=single-agent --agent=codexScaffolded an ELIZON Package in /home/you/support-bot
starter: Single agent
coding agent: Codex
CLI pinned: 0.5.0 (.elizon/config.yaml)
+ elizon.yaml
+ agents/support-assistant.yaml
+ knowledge/product-docs.yaml
…
Next: describe what you want to your coding agent, then run `npx @elizon/cli validate`.