lumio init
Create a new extension project. Runs an interactive wizard that registers the extension with Lumio (generating an Extension-ID), scaffolds the project files, and writes lumio.config.json.
Usage
lumio init [project-name]
Example
lumio init my-scoreboard
If project-name is omitted, the wizard asks for it.
Interactive wizard
The wizard asks:
? Extension name: My Scoreboard
? Description: Display live sports scores on your stream overlay
? Category:
widget
extension
overlay
bot_module
integration
theme
? Template:
Blank
Widget (editor + layer)
Full-Stack Widget (editor + layer + server functions)
Interactive Game (editor + layer + interactive + server)
Bot Module (editor + server)
Integration (editor + server)
Theme (layer only)
? Targets: (check all that apply)
[x] editor
[x] layer
[ ] interactive
? Enable server functions: No
? Initial visibility: private
After completing the wizard:
- The extension is registered with Lumio (creates the extension record, generates a UUID Extension-ID)
- A project directory is created with the scaffolded files
lumio.config.jsonis written with theextensionIdfrom Lumio- Dependencies are listed in
package.json(not installed automatically — runpnpm install)
Templates
| Template | Files created | Targets | Server |
|---|---|---|---|
| Blank | editor.tsx (or as selected) | Chosen in wizard | No |
| Widget | editor.tsx, layer.tsx | editor, layer | No |
| Full-Stack Widget | editor.tsx, layer.tsx, server/schema.ts, server/functions.ts | editor, layer | Yes |
| Interactive Game | All four entry files + server | editor, layer, interactive | Yes |
| Bot Module | editor.tsx, server files | editor | Yes |
| Integration | editor.tsx, server files | editor | Yes |
| Theme | layer.tsx | layer | No |
Generated files
my-scoreboard/
├── lumio.config.json <- Extension manifest
├── package.json <- @zaflun/lumio-sdk + react dependencies
├── tsconfig.json <- TypeScript config
└── src/
├── editor.tsx <- Editor surface entry
└── layer.tsx <- Layer surface entry
For templates with server functions, also:
my-scoreboard/
└── server/
├── schema.ts <- defineSchema + defineTable
└── functions.ts <- queryRows / action exports
Options
| Flag | Description |
|---|---|
--template <name> | Skip template selection, use named template |
--no-install | Skip prompting (non-interactive mode, for scripting) |