@zitadel/cli 0.1.0-alpha.17 → 0.1.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +145 -107
  2. package/SKILLS.md +88 -12
  3. package/dist/branding-BXj028-W.mjs +79 -0
  4. package/dist/branding-BXj028-W.mjs.map +1 -0
  5. package/dist/claim-state-BTGInAaN.mjs +66 -0
  6. package/dist/claim-state-BTGInAaN.mjs.map +1 -0
  7. package/dist/commands/apply.mjs +6 -5
  8. package/dist/commands/apply.mjs.map +1 -1
  9. package/dist/commands/branding/eject.mjs +125 -0
  10. package/dist/commands/branding/eject.mjs.map +1 -0
  11. package/dist/commands/claim.mjs +402 -0
  12. package/dist/commands/claim.mjs.map +1 -0
  13. package/dist/commands/doctor.mjs +477 -37
  14. package/dist/commands/doctor.mjs.map +1 -1
  15. package/dist/commands/eject.mjs +3 -3
  16. package/dist/commands/logs.mjs +2 -2
  17. package/dist/commands/plan.mjs +6 -5
  18. package/dist/commands/plan.mjs.map +1 -1
  19. package/dist/commands/reset.mjs +2 -2
  20. package/dist/commands/schemas/list.mjs +8 -8
  21. package/dist/commands/schemas/list.mjs.map +1 -1
  22. package/dist/commands/setup.mjs +305 -36
  23. package/dist/commands/setup.mjs.map +1 -1
  24. package/dist/commands/start.mjs +3 -3
  25. package/dist/commands/status.mjs +21 -13
  26. package/dist/commands/status.mjs.map +1 -1
  27. package/dist/commands/stop.mjs +3 -3
  28. package/dist/commands/stop.mjs.map +1 -1
  29. package/dist/{docker-pGcTrDIY.mjs → docker-Ciz9N6uI.mjs} +2 -2
  30. package/dist/{docker-pGcTrDIY.mjs.map → docker-Ciz9N6uI.mjs.map} +1 -1
  31. package/dist/{environment-BQF7LeCz.mjs → environment-CuHKxtIO.mjs} +1 -1
  32. package/dist/{environment-BQF7LeCz.mjs.map → environment-CuHKxtIO.mjs.map} +1 -1
  33. package/dist/{journey-guidance-CYVpQszz.mjs → journey-guidance-CtQUfWar.mjs} +14 -3
  34. package/dist/{journey-guidance-CYVpQszz.mjs.map → journey-guidance-CtQUfWar.mjs.map} +1 -1
  35. package/dist/{oclif-BRdjVNne.mjs → oclif-CL6-M13m.mjs} +201 -43
  36. package/dist/oclif-CL6-M13m.mjs.map +1 -0
  37. package/dist/{orca-Dip6DPJ2.mjs → orca-BWB4zOdw.mjs} +749 -192
  38. package/dist/orca-BWB4zOdw.mjs.map +1 -0
  39. package/dist/{ports-V8JfiNgT.mjs → ports-Cu2Y7aXQ.mjs} +2 -2
  40. package/dist/{ports-V8JfiNgT.mjs.map → ports-Cu2Y7aXQ.mjs.map} +1 -1
  41. package/dist/{processes-BVqYsxT8.mjs → processes-Bn2WngOi.mjs} +1 -1
  42. package/dist/{processes-BVqYsxT8.mjs.map → processes-Bn2WngOi.mjs.map} +1 -1
  43. package/dist/{project-BGgv7Bba.mjs → project-yejJSfdJ.mjs} +57 -4
  44. package/dist/project-yejJSfdJ.mjs.map +1 -0
  45. package/dist/scaffold-manifest-CKNFLX9T.mjs +81 -0
  46. package/dist/scaffold-manifest-CKNFLX9T.mjs.map +1 -0
  47. package/dist/{sync-Cd3z7Q1R.mjs → sync-Cx2_4rXW.mjs} +99 -50
  48. package/dist/sync-Cx2_4rXW.mjs.map +1 -0
  49. package/dist/user-schema-W1OsXdpc.mjs +91 -0
  50. package/dist/user-schema-W1OsXdpc.mjs.map +1 -0
  51. package/oclif.manifest.json +227 -5
  52. package/package.json +8 -6
  53. package/dist/oclif-BRdjVNne.mjs.map +0 -1
  54. package/dist/orca-Dip6DPJ2.mjs.map +0 -1
  55. package/dist/project-BGgv7Bba.mjs.map +0 -1
  56. package/dist/sync-Cd3z7Q1R.mjs.map +0 -1
  57. package/dist/user-schema-DDz5-lX5.mjs +0 -13
  58. package/dist/user-schema-DDz5-lX5.mjs.map +0 -1
package/README.md CHANGED
@@ -64,12 +64,15 @@ Users who skip passkey setup can still sign in with password; users who add a
64
64
  passkey can sign in with either credential.
65
65
 
66
66
  Repo config is authoritative: edit `zitadel.json`, `.zitadel/schemas/*.json`,
67
- or `.zitadel/flows/*.json`, then re-run `zitadel plan` and `zitadel apply`.
68
- Server-provisioned defaults remain a fallback for non-CLI project creation, but
69
- CLI-created projects are authored from local files first.
70
- Templates are not supported until the server exposes template storage and APIs.
71
- Flow create, read, list, update, and delete are available; the server enforces
72
- flow lifecycle rules such as draft-only edits.
67
+ `.zitadel/flows/*.json`, or `.zitadel/branding/` (a `branding.json` descriptor
68
+ plus a `login.liquid` LiquidJS template), then re-run `zitadel plan` and
69
+ `zitadel apply`. Server-provisioned defaults remain a fallback for non-CLI
70
+ project creation, but CLI-created projects are authored from local files first.
71
+ Login templates are supported: scaffold them with the `branding eject` command
72
+ (`--design centered|split|split-right|hero|minimal`) or `setup --design <name>`;
73
+ every edit publishes a new immutable branding revision and the login serves
74
+ the newest one. Flow create, read, list, update, and delete are available; the
75
+ server enforces flow lifecycle rules such as draft-only edits.
73
76
 
74
77
  For agent scripts, pass `--non-interactive --json` and capture stdout and stderr
75
78
  separately. The CLI contract is one parseable JSON object on stdout; terminals
@@ -92,6 +95,8 @@ and agent UIs may display stderr package-manager progress together with stdout.
92
95
  <!-- commands -->
93
96
  * [`zitadel apply`](#zitadel-apply)
94
97
  * [`zitadel autocomplete [SHELL]`](#zitadel-autocomplete-shell)
98
+ * [`zitadel branding eject`](#zitadel-branding-eject)
99
+ * [`zitadel claim`](#zitadel-claim)
95
100
  * [`zitadel commands`](#zitadel-commands)
96
101
  * [`zitadel doctor`](#zitadel-doctor)
97
102
  * [`zitadel eject`](#zitadel-eject)
@@ -115,22 +120,19 @@ Validate and upload repo config to the platform.
115
120
 
116
121
  ```
117
122
  USAGE
118
- $ zitadel apply [--json] [-c <value>] [-s <value>] [-n] [-f]
119
- [--dry-run] [--verbose] [--debug] [--telemetry] [-e
120
- development|preview|production]
123
+ $ zitadel apply [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
124
+ [--telemetry] [-e development|preview|production]
121
125
 
122
126
  FLAGS
123
127
  -c, --cwd=<value> Project directory to operate on.
124
128
  -e, --environment=<option> Target environment (default: development).
125
129
  <options: development|preview|production>
126
130
  -f, --force Overwrite protected files on conflict.
127
- -n, --non-interactive Disable prompts. Required when scripting or
128
- running as an agent.
131
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
129
132
  -s, --server=<value> Override the resolved server URL.
130
133
  --debug Debug logging.
131
134
  --dry-run Preview without mutating files or the platform.
132
- --[no-]telemetry Send anonymous usage analytics. Disable with
133
- --no-telemetry.
135
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
134
136
  --verbose Verbose logging.
135
137
 
136
138
  GLOBAL FLAGS
@@ -171,15 +173,77 @@ EXAMPLES
171
173
 
172
174
  _See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.2.50/src/commands/autocomplete/index.ts)_
173
175
 
176
+ ## `zitadel branding eject`
177
+
178
+ Take ownership of the login template: scaffold .zitadel/branding/ from a shipped design.
179
+
180
+ ```
181
+ USAGE
182
+ $ zitadel branding eject [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
183
+ [--telemetry] [--design centered|split|split-right|hero|minimal]
184
+
185
+ FLAGS
186
+ -c, --cwd=<value> Project directory to operate on.
187
+ -f, --force Overwrite protected files on conflict.
188
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
189
+ -s, --server=<value> Override the resolved server URL.
190
+ --debug Debug logging.
191
+ --design=<option> Design to start from (default: centered).
192
+ <options: centered|split|split-right|hero|minimal>
193
+ --dry-run Preview without mutating files or the platform.
194
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
195
+ --verbose Verbose logging.
196
+
197
+ GLOBAL FLAGS
198
+ --json Format output as json.
199
+
200
+ DESCRIPTION
201
+ Take ownership of the login template: scaffold .zitadel/branding/ from a shipped design.
202
+ ```
203
+
204
+ ## `zitadel claim`
205
+
206
+ Attach this project to a team so it becomes permanent. Opens a browser to finish signing in.
207
+
208
+ ```
209
+ USAGE
210
+ $ zitadel claim [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
211
+ [--telemetry] [--no-open] [--timeout <value>]
212
+
213
+ FLAGS
214
+ -c, --cwd=<value> Project directory to operate on.
215
+ -f, --force Overwrite protected files on conflict.
216
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
217
+ -s, --server=<value> Override the resolved server URL.
218
+ --debug Debug logging.
219
+ --dry-run Preview without mutating files or the platform.
220
+ --no-open Print the link instead of opening a browser.
221
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
222
+ --timeout=<value> Seconds to wait for the browser step. Defaults to the link's own expiry (10 minutes).
223
+ --verbose Verbose logging.
224
+
225
+ GLOBAL FLAGS
226
+ --json Format output as json.
227
+
228
+ DESCRIPTION
229
+ Attach this project to a team so it becomes permanent. Opens a browser to finish signing in.
230
+
231
+ EXAMPLES
232
+ $ zitadel claim
233
+
234
+ $ zitadel claim --no-open
235
+
236
+ $ zitadel claim --timeout 120
237
+ ```
238
+
174
239
  ## `zitadel commands`
175
240
 
176
241
  List all zitadel commands.
177
242
 
178
243
  ```
179
244
  USAGE
180
- $ zitadel commands [--json] [-c id|plugin|summary|type... | --tree]
181
- [--deprecated] [-x | ] [--hidden] [--no-truncate | ] [--sort
182
- id|plugin|summary|type | ]
245
+ $ zitadel commands [--json] [-c id|plugin|summary|type... | --tree] [--deprecated] [-x | ] [--hidden]
246
+ [--no-truncate | ] [--sort id|plugin|summary|type | ]
183
247
 
184
248
  FLAGS
185
249
  -c, --columns=<option>... Only show provided columns (comma-separated).
@@ -207,25 +271,22 @@ Verify local runtime and project state.
207
271
 
208
272
  ```
209
273
  USAGE
210
- $ zitadel doctor [--json] [-c <value>] [-s <value>] [-n] [-f]
211
- [--dry-run] [--verbose] [--debug] [--telemetry] [--fix] [--image <value>]
212
- [--port <value>] [--runtime binary|docker]
274
+ $ zitadel doctor [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
275
+ [--telemetry] [--fix] [--image <value>] [--port <value>] [--runtime binary|docker]
213
276
 
214
277
  FLAGS
215
278
  -c, --cwd=<value> Project directory to operate on.
216
279
  -f, --force Overwrite protected files on conflict.
217
- -n, --non-interactive Disable prompts. Required when scripting or running as
218
- an agent.
280
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
219
281
  -s, --server=<value> Override the resolved server URL.
220
282
  --debug Debug logging.
221
283
  --dry-run Preview without mutating files or the platform.
222
- --fix Re-apply missing managed files.
284
+ --fix Repair missing files and stale managed wiring.
223
285
  --image=<value> Container image to check.
224
286
  --port=<value> [default: 8080] Local HTTP port.
225
287
  --runtime=<option> Local runtime backend.
226
288
  <options: binary|docker>
227
- --[no-]telemetry Send anonymous usage analytics. Disable with
228
- --no-telemetry.
289
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
229
290
  --verbose Verbose logging.
230
291
 
231
292
  GLOBAL FLAGS
@@ -241,19 +302,17 @@ Remove managed files and local Zitadel state.
241
302
 
242
303
  ```
243
304
  USAGE
244
- $ zitadel eject [--json] [-c <value>] [-s <value>] [-n] [-f]
245
- [--dry-run] [--verbose] [--debug] [--telemetry]
305
+ $ zitadel eject [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
306
+ [--telemetry]
246
307
 
247
308
  FLAGS
248
309
  -c, --cwd=<value> Project directory to operate on.
249
310
  -f, --force Overwrite protected files on conflict.
250
- -n, --non-interactive Disable prompts. Required when scripting or running as
251
- an agent.
311
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
252
312
  -s, --server=<value> Override the resolved server URL.
253
313
  --debug Debug logging.
254
314
  --dry-run Preview without mutating files or the platform.
255
- --[no-]telemetry Send anonymous usage analytics. Disable with
256
- --no-telemetry.
315
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
257
316
  --verbose Verbose logging.
258
317
 
259
318
  GLOBAL FLAGS
@@ -292,21 +351,19 @@ Show local Zitadel server logs.
292
351
 
293
352
  ```
294
353
  USAGE
295
- $ zitadel logs [--json] [-c <value>] [-s <value>] [-n] [-f]
296
- [--dry-run] [--verbose] [--debug] [--telemetry] [--follow] [--tail <value>]
354
+ $ zitadel logs [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
355
+ [--telemetry] [--follow] [--tail <value>]
297
356
 
298
357
  FLAGS
299
358
  -c, --cwd=<value> Project directory to operate on.
300
359
  -f, --force Overwrite protected files on conflict.
301
- -n, --non-interactive Disable prompts. Required when scripting or running as
302
- an agent.
360
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
303
361
  -s, --server=<value> Override the resolved server URL.
304
362
  --debug Debug logging.
305
363
  --dry-run Preview without mutating files or the platform.
306
364
  --follow Follow logs.
307
365
  --tail=<value> [default: 200] Number of lines to show.
308
- --[no-]telemetry Send anonymous usage analytics. Disable with
309
- --no-telemetry.
366
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
310
367
  --verbose Verbose logging.
311
368
 
312
369
  GLOBAL FLAGS
@@ -322,22 +379,19 @@ Validate config without mutation and preview the sync diff.
322
379
 
323
380
  ```
324
381
  USAGE
325
- $ zitadel plan [--json] [-c <value>] [-s <value>] [-n] [-f]
326
- [--dry-run] [--verbose] [--debug] [--telemetry] [-e
327
- development|preview|production]
382
+ $ zitadel plan [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
383
+ [--telemetry] [-e development|preview|production]
328
384
 
329
385
  FLAGS
330
386
  -c, --cwd=<value> Project directory to operate on.
331
387
  -e, --environment=<option> Target environment (default: development).
332
388
  <options: development|preview|production>
333
389
  -f, --force Overwrite protected files on conflict.
334
- -n, --non-interactive Disable prompts. Required when scripting or
335
- running as an agent.
390
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
336
391
  -s, --server=<value> Override the resolved server URL.
337
392
  --debug Debug logging.
338
393
  --dry-run Preview without mutating files or the platform.
339
- --[no-]telemetry Send anonymous usage analytics. Disable with
340
- --no-telemetry.
394
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
341
395
  --verbose Verbose logging.
342
396
 
343
397
  GLOBAL FLAGS
@@ -353,19 +407,17 @@ Delete the local Zitadel server runtime and data.
353
407
 
354
408
  ```
355
409
  USAGE
356
- $ zitadel reset [--json] [-c <value>] [-s <value>] [-n] [-f]
357
- [--dry-run] [--verbose] [--debug] [--telemetry]
410
+ $ zitadel reset [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
411
+ [--telemetry]
358
412
 
359
413
  FLAGS
360
414
  -c, --cwd=<value> Project directory to operate on.
361
415
  -f, --force Overwrite protected files on conflict.
362
- -n, --non-interactive Disable prompts. Required when scripting or running as
363
- an agent.
416
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
364
417
  -s, --server=<value> Override the resolved server URL.
365
418
  --debug Debug logging.
366
419
  --dry-run Preview without mutating files or the platform.
367
- --[no-]telemetry Send anonymous usage analytics. Disable with
368
- --no-telemetry.
420
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
369
421
  --verbose Verbose logging.
370
422
 
371
423
  GLOBAL FLAGS
@@ -381,24 +433,20 @@ List revisions of a user-schema by objectType.
381
433
 
382
434
  ```
383
435
  USAGE
384
- $ zitadel schemas list -t <value> [--json] [-c <value>] [-s <value>]
385
- [-n] [-f] [--dry-run] [--verbose] [--debug] [--telemetry] [-e
386
- development|preview|production]
436
+ $ zitadel schemas list -t <value> [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
437
+ [--telemetry] [-e development|preview|production]
387
438
 
388
439
  FLAGS
389
440
  -c, --cwd=<value> Project directory to operate on.
390
441
  -e, --environment=<option> Target environment (default: development).
391
442
  <options: development|preview|production>
392
443
  -f, --force Overwrite protected files on conflict.
393
- -n, --non-interactive Disable prompts. Required when scripting or
394
- running as an agent.
444
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
395
445
  -s, --server=<value> Override the resolved server URL.
396
- -t, --object-type=<value> (required) Filter revisions by objectType (e.g.
397
- human-user).
446
+ -t, --object-type=<value> (required) Filter revisions by objectType (e.g. human-user).
398
447
  --debug Debug logging.
399
448
  --dry-run Preview without mutating files or the platform.
400
- --[no-]telemetry Send anonymous usage analytics. Disable with
401
- --no-telemetry.
449
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
402
450
  --verbose Verbose logging.
403
451
 
404
452
  GLOBAL FLAGS
@@ -419,8 +467,7 @@ USAGE
419
467
  DESCRIPTION
420
468
  Search for a command.
421
469
 
422
- Once you select a command, hit enter and it will show the help for that
423
- command.
470
+ Once you select a command, hit enter and it will show the help for that command.
424
471
  ```
425
472
 
426
473
  _See code: [@oclif/plugin-search](https://github.com/oclif/plugin-search/blob/v1.2.50/src/commands/search.ts)_
@@ -431,32 +478,34 @@ Create a Zitadel project and scaffold local auth.
431
478
 
432
479
  ```
433
480
  USAGE
434
- $ zitadel setup [--json] [-c <value>] [-s <value>] [-n] [-f]
435
- [--dry-run] [--verbose] [--debug] [--telemetry] [--framework
436
- next|nuxt|react|vue|solid|svelte|qwik|angular] [--renderer
437
- react|web-component] [--dev-port <value>] [--skip-install]
481
+ $ zitadel setup [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
482
+ [--telemetry] [--framework next|nuxt|react|vue|solid|svelte|qwik|angular] [--renderer react] [--dev-port <value>]
483
+ [--skip-install] [--preset password-first|passkey-first] [--use-case minimal|consumer|business] [--design
484
+ centered|split|split-right|hero|minimal]
438
485
 
439
486
  FLAGS
440
487
  -c, --cwd=<value> Project directory to operate on.
441
488
  -f, --force Overwrite protected files on conflict.
442
- -n, --non-interactive Disable prompts. Required when scripting or running
443
- as an agent.
489
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
444
490
  -s, --server=<value> Override the resolved server URL.
445
491
  --debug Debug logging.
446
- --dev-port=<value> Dev-server port; also the issuer origin registered
447
- with Zitadel. Defaults to the detected port. Use
448
- distinct ports to run several scaffolded apps side
449
- by side.
492
+ --design=<option> Login design to eject into .zitadel/branding/ and publish as branding revision 1. When
493
+ omitted, the login uses the built-in template; run the `branding eject` command later to
494
+ customize.
495
+ <options: centered|split|split-right|hero|minimal>
496
+ --dev-port=<value> Dev-server port; also the issuer origin registered with Zitadel. Defaults to the detected
497
+ port. Use distinct ports to run several scaffolded apps side by side.
450
498
  --dry-run Preview without mutating files or the platform.
451
499
  --framework=<option> Framework to target.
452
- <options:
453
- next|nuxt|react|vue|solid|svelte|qwik|angular>
454
- --renderer=<option> Renderer (default: react).
455
- <options: react|web-component>
456
- --skip-install Do not install dependencies after setup updates
457
- package.json.
458
- --[no-]telemetry Send anonymous usage analytics. Disable with
459
- --no-telemetry.
500
+ <options: next|nuxt|react|vue|solid|svelte|qwik|angular>
501
+ --preset=<option> Sign-in preset for the scaffolded schema and login flow (default: password-first).
502
+ <options: password-first|passkey-first>
503
+ --renderer=<option> Renderer (default: react). Not yet available: web-component.
504
+ <options: react>
505
+ --skip-install Do not install dependencies after setup updates package.json.
506
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
507
+ --use-case=<option> Use case for the scaffolded schema fields: who signs in to the app (default: minimal).
508
+ <options: minimal|consumer|business>
460
509
  --verbose Verbose logging.
461
510
 
462
511
  GLOBAL FLAGS
@@ -477,15 +526,13 @@ Start a local Zitadel server.
477
526
 
478
527
  ```
479
528
  USAGE
480
- $ zitadel start [--json] [-c <value>] [-s <value>] [-n] [-f]
481
- [--dry-run] [--verbose] [--debug] [--telemetry] [--image <value>] [--port
482
- <value>] [--runtime binary|docker]
529
+ $ zitadel start [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
530
+ [--telemetry] [--image <value>] [--port <value>] [--runtime binary|docker]
483
531
 
484
532
  FLAGS
485
533
  -c, --cwd=<value> Project directory to operate on.
486
534
  -f, --force Overwrite protected files on conflict.
487
- -n, --non-interactive Disable prompts. Required when scripting or running as
488
- an agent.
535
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
489
536
  -s, --server=<value> Override the resolved server URL.
490
537
  --debug Debug logging.
491
538
  --dry-run Preview without mutating files or the platform.
@@ -493,8 +540,7 @@ FLAGS
493
540
  --port=<value> [default: 8080] Local HTTP port.
494
541
  --runtime=<option> Local runtime backend.
495
542
  <options: binary|docker>
496
- --[no-]telemetry Send anonymous usage analytics. Disable with
497
- --no-telemetry.
543
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
498
544
  --verbose Verbose logging.
499
545
 
500
546
  GLOBAL FLAGS
@@ -510,19 +556,17 @@ Summarize the local Zitadel server and project state.
510
556
 
511
557
  ```
512
558
  USAGE
513
- $ zitadel status [--json] [-c <value>] [-s <value>] [-n] [-f]
514
- [--dry-run] [--verbose] [--debug] [--telemetry]
559
+ $ zitadel status [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
560
+ [--telemetry]
515
561
 
516
562
  FLAGS
517
563
  -c, --cwd=<value> Project directory to operate on.
518
564
  -f, --force Overwrite protected files on conflict.
519
- -n, --non-interactive Disable prompts. Required when scripting or running as
520
- an agent.
565
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
521
566
  -s, --server=<value> Override the resolved server URL.
522
567
  --debug Debug logging.
523
568
  --dry-run Preview without mutating files or the platform.
524
- --[no-]telemetry Send anonymous usage analytics. Disable with
525
- --no-telemetry.
569
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
526
570
  --verbose Verbose logging.
527
571
 
528
572
  GLOBAL FLAGS
@@ -538,21 +582,18 @@ Stop the local Zitadel server.
538
582
 
539
583
  ```
540
584
  USAGE
541
- $ zitadel stop [--json] [-c <value>] [-s <value>] [-n] [-f]
542
- [--dry-run] [--verbose] [--debug] [--telemetry] [--all]
585
+ $ zitadel stop [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
586
+ [--telemetry] [--all]
543
587
 
544
588
  FLAGS
545
589
  -c, --cwd=<value> Project directory to operate on.
546
590
  -f, --force Overwrite protected files on conflict.
547
- -n, --non-interactive Disable prompts. Required when scripting or running as
548
- an agent.
591
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
549
592
  -s, --server=<value> Override the resolved server URL.
550
- --all Stop all discovered CLI-managed local Zitadel runtime
551
- processes.
593
+ --all Stop all discovered CLI-managed local Zitadel runtime processes.
552
594
  --debug Debug logging.
553
595
  --dry-run Preview without mutating files or the platform.
554
- --[no-]telemetry Send anonymous usage analytics. Disable with
555
- --no-telemetry.
596
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
556
597
  --verbose Verbose logging.
557
598
 
558
599
  GLOBAL FLAGS
@@ -568,19 +609,17 @@ Remove managed files and local Zitadel state.
568
609
 
569
610
  ```
570
611
  USAGE
571
- $ zitadel uninstall [--json] [-c <value>] [-s <value>] [-n] [-f]
572
- [--dry-run] [--verbose] [--debug] [--telemetry]
612
+ $ zitadel uninstall [--json] [-c <value>] [-s <value>] [-n] [-f] [--dry-run] [--verbose] [--debug]
613
+ [--telemetry]
573
614
 
574
615
  FLAGS
575
616
  -c, --cwd=<value> Project directory to operate on.
576
617
  -f, --force Overwrite protected files on conflict.
577
- -n, --non-interactive Disable prompts. Required when scripting or running as
578
- an agent.
618
+ -n, --non-interactive Disable prompts. Required when scripting or running as an agent.
579
619
  -s, --server=<value> Override the resolved server URL.
580
620
  --debug Debug logging.
581
621
  --dry-run Preview without mutating files or the platform.
582
- --[no-]telemetry Send anonymous usage analytics. Disable with
583
- --no-telemetry.
622
+ --[no-]telemetry Send anonymous usage analytics. Disable with --no-telemetry.
584
623
  --verbose Verbose logging.
585
624
 
586
625
  GLOBAL FLAGS
@@ -608,8 +647,7 @@ GLOBAL FLAGS
608
647
  FLAG DESCRIPTIONS
609
648
  --verbose Show additional information about the CLI.
610
649
 
611
- Additionally shows the architecture, node version, operating system, and
612
- versions of plugins that the CLI is using.
650
+ Additionally shows the architecture, node version, operating system, and versions of plugins that the CLI is using.
613
651
  ```
614
652
 
615
653
  _See code: [@oclif/plugin-version](https://github.com/oclif/plugin-version/blob/2.2.46/src/commands/version.ts)_
package/SKILLS.md CHANGED
@@ -51,6 +51,15 @@ Each invocation prints one JSON object:
51
51
  delete). Plan rows preview; apply rows report, with the resulting platform
52
52
  ids. Use it to verify an edit did what you intended — `apply`'s
53
53
  `files_updated` lists only local write-backs, not platform changes.
54
+ - `setup` emits `data.files`: one typed row per scaffolded artifact
55
+ (`{path, kind: file|dir, action: create|update}`), deduplicated. Use it to
56
+ see what setup created versus merged into (your `package.json` is an
57
+ `update`). `data.files_written` remains the flat list — deduplicated file
58
+ paths only, covering both scaffolded and `.zitadel/` resource files.
59
+ - `setup` also emits `data.design`: the starter login design it ejected and
60
+ published as branding revision 1, or `null` when the built-in template was
61
+ kept (no `.zitadel/branding/` files exist in that case). Use it to verify
62
+ the requested `--design` took effect without diffing the repo.
54
63
  - `E_LOCAL_SERVER_NOT_RUNNING`: start the local runtime with
55
64
  `npx @zitadel/cli@alpha start`, then retry with `--server local`.
56
65
  - `E_NOT_FOUND`: an HTTP 404 from the target server. With the platform's
@@ -80,17 +89,31 @@ the CLI's help layer, not the envelope.
80
89
  `.zitadel/flows/default-login.json`, uploads them through the schema and flow
81
90
  APIs, then seeds `.zitadel/state.json` so `plan` is immediately empty. Agents
82
91
  must pass `--framework` when scaffolding into a fresh directory; interactive
83
- humans can omit it and choose from the prompt. Flags:
92
+ humans can omit it and choose from the prompt. Supported floors: Next.js 15+
93
+ and React 18+ — `setup` and `doctor` fail with `E_UNSUPPORTED_PROJECT_SHAPE`
94
+ below them instead of degrading silently (an unparseable version passes).
95
+ Flags:
84
96
  `--framework next|react|vue|angular|nuxt|solid|svelte|qwik`, `--renderer
85
- react|web-component` (selects the Next.js auth-page renderer; accepted for any
86
- framework and recorded in `zitadel.json` branding, but only Next varies its
87
- generated templates by it), `--dev-port` (dev-server port, also the issuer
97
+ react` (selects the Next.js auth-page renderer; accepted for any framework
98
+ and recorded in `zitadel.json` branding, but only Next varies its generated
99
+ templates by it; the planned `web-component` renderer is not yet available
100
+ and is rejected if passed), `--dev-port` (dev-server port, also the issuer
88
101
  origin registered with Zitadel — use distinct ports to run several scaffolded
89
102
  apps side by side), `--preset password-first|passkey-first` (the sign-in
90
103
  experience the scaffold starts from: `password-first` is the default —
91
104
  email + password with passkey optional during registration; `passkey-first`
92
105
  enters login on a one-tap passkey step with an email + password fallback;
93
- recorded in `zitadel.json`), `--skip-install`.
106
+ recorded in `zitadel.json`), `--use-case minimal|consumer|business` (which
107
+ profile fields the scaffolded schema collects: `minimal` is the default —
108
+ email only; `consumer` adds given and family name; `business` also adds a
109
+ `companyName` attribute and overlays work-email copy on the generated auth
110
+ pages via the SDK's `businessLocales`; asked before `--preset` and recorded
111
+ in `zitadel.json`), `--design centered|split|split-right|hero|minimal`
112
+ (starter login design: ejects the design's template into
113
+ `.zitadel/branding/` and publishes it as branding revision 1 during setup;
114
+ the interactive wizard asks this as its final question with the built-in
115
+ template preselected — omit the flag in non-interactive runs to keep the
116
+ built-in template and no branding files), `--skip-install`.
94
117
  - `plan` — validate config and preview the sync diff without mutating anything.
95
118
  - `apply` — validate and upload repo config to the platform.
96
119
  - `schemas list` — inspect the revision history of a user-schema, filtered by
@@ -98,9 +121,49 @@ the CLI's help layer, not the envelope.
98
121
  per revision (newest first); interactive adds a picker that fetches and
99
122
  pretty-prints the selected revision body.
100
123
  - `doctor` — verify generated app files and local state once `zitadel.json`
101
- exists. The default local runtime is the `@zitadel/server` npm binary;
102
- Docker checks apply only when using `--runtime docker` or `--image`.
103
- `--fix` re-applies missing managed files.
124
+ exists. The `managed-files` check compares the scaffolded app files against
125
+ the manifest setup recorded in `.zitadel/state.json`: a missing
126
+ infrastructure file (the request boundary, `custom-elements.d.ts`) fails,
127
+ a missing generated page warns, and files you edited (marker kept) or
128
+ replaced (marker removed) pass as `edited`/`adopted`. It also verifies the
129
+ managed config wirings (Vite/Nuxt proxy merges, Angular's `angular.json`
130
+ proxy and auth routes) through the patchers' idempotent transforms — a
131
+ detached or missing wiring config fails, an unverifiable one warns, and
132
+ `--fix` re-applies it. Boundary migrations converge: a pristine leftover
133
+ `middleware.ts` from a Next 15→16 upgrade is swapped for `proxy.ts`, while
134
+ an edited one is reported as a conflict instead of creating both (Next
135
+ rejects the pair). The default local
136
+ runtime is the `@zitadel/server` npm binary; Docker checks apply only when
137
+ using `--runtime docker` or `--image`. `--fix` restores missing managed
138
+ files and never replaces an existing scaffolded app file; additive repairs
139
+ (missing `.gitignore` entries, `.env.example` keys) still append to their
140
+ targets, and the SDK dependency is re-added only when absent — an existing
141
+ version pin is never rewritten.
142
+ - `claim` — attach the project to a team so it becomes permanent. Mints a
143
+ short-lived link, opens it in a browser, and blocks until the developer
144
+ finishes signing in there, then records `claimed_at` and `team_id` in
145
+ `.zitadel/secret`. Nothing about the project changes: the issuer, users,
146
+ passkeys, and applications keep working, and the project secret is not
147
+ rotated. Re-running once the project belongs to a team is a clean
148
+ `status: "skipped"` with `reason: "already-claimed"`, so agents can retry
149
+ safely. The link is always printed before any browser opens, so a headless
150
+ machine, an SSH session, or `--no-open` needs no special handling — copy it
151
+ and open it anywhere. Links last 10 minutes; once one lapses the command
152
+ exits `E_VALIDATION` and points at a fresh run. `--dry-run` stops before
153
+ anything is minted and reports `status: "skipped"`, `reason: "dry-run"` —
154
+ there is nothing to preview, because a claim is decided in a browser.
155
+ Flags: `--no-open` (print the link instead of launching a browser),
156
+ `--timeout <seconds>` (stop waiting sooner than the link's own expiry).
157
+ `setup`, `status`, and `doctor` report whether a team is attached, reading
158
+ `claimed_at`/`team_id` from `.zitadel/secret` (no platform call). `status`
159
+ carries `data.project.claim` as `{"kind": "detached"}` or
160
+ `{"kind": "attached", "team_id": "team_01H…", "claimed_at": "2026-08-01T09:00:00.000Z"}`,
161
+ and `doctor` reports a
162
+ `claim` check. A project with no team is only ever a **warning**, never a
163
+ failure — it works exactly like one with a team, so `doctor` still exits 0
164
+ and `--fix` deliberately does nothing (a claim needs a human in a browser).
165
+ All three stay silent about teams when the project's `server` in
166
+ `zitadel.json` is local or self-hosted, where there is nothing to attach.
104
167
  - `status` — summarize the local runtime and project state.
105
168
  - `eject` (alias `uninstall`) — remove managed files and local Zitadel state;
106
169
  requires `--force` when non-interactive.
@@ -184,10 +247,23 @@ supported frameworks.
184
247
 
185
248
  Repo config is authoritative: edit `zitadel.json` or files under `.zitadel/`,
186
249
  then re-run `plan` and `apply`. Schema and flow files are synced from
187
- `.zitadel/schemas/*.json` and `.zitadel/flows/*.json`; templates are not
188
- supported until the server exposes template storage and APIs. Server-provisioned
189
- defaults remain a fallback for non-CLI project creation, but CLI-created
190
- projects are authored from local files first. Flow create, read, list, and
250
+ `.zitadel/schemas/*.json` and `.zitadel/flows/*.json`. Login templates
251
+ (branding) are synced from `.zitadel/branding/`: a single `branding.json`
252
+ descriptor (layout, asset URLs) plus a sibling `login.liquid` LiquidJS
253
+ template referenced via `liquid_template_file`. Scaffold them with the
254
+ `branding eject` command (`--design centered|split|split-right|hero|minimal`,
255
+ interactive picker on a TTY) or at project creation with
256
+ `setup --design <name>`, which also publishes revision 1. Branding is
257
+ revisioned and immutable: every edit — including a `.liquid`-only edit —
258
+ plans as a `revise` and `apply` publishes a new revision; the login serves
259
+ the newest one. `plan` validates templates with the authoritative LiquidJS
260
+ validator (`E_VALIDATION` lists rule ids such as `no-script-tag` and
261
+ `mandatory-gates`; every template must keep a trailing
262
+ `{% mandatory_gates %}` tag). `font_url` is not writable yet; asset URLs
263
+ must be absolute `https://`. Keep exactly one descriptor in
264
+ `.zitadel/branding/` — extra `*.json` files there fail the scan.
265
+ Server-provisioned defaults remain a fallback for non-CLI project
266
+ creation, but CLI-created projects are authored from local files first. Flow create, read, list, and
191
267
  update are available, while the server enforces lifecycle rules such as
192
268
  draft-only edits. Managed files carry a marker comment; `eject` removes only
193
269
  files that still carry it, preserving anything the user replaced. For app-local