Part of the EdgeZero CLI Extensions effort — stage 1 of 8.
Scope: Turn edgezero-cli into lib + bin: add src/lib.rs with the public run_* API and standalone #[derive(clap::Args)] structs; shrink main.rs to a thin wrapper. Rename the dev subcommand to demo (dev is reserved for a future dev-workflow command); dev_server.rs → demo_server.rs, run_dev → run_demo() -> Result<(), String>. Extend the generator to scaffold a <name>-cli crate (new templates/cli/). Add a handwritten examples/app-demo/crates/app-demo-cli parallel.
No dependency on PR #253.
Ship gate: existing edgezero commands keep the same flags; app-demo-cli --help shows the five built-ins; edgezero new <tmp> && cargo check --workspace succeeds; all four CI gates green.
Design spec: docs/superpowers/specs/2026-05-19-cli-extensions-design.md §7
Implementation plan: docs/superpowers/plans/2026-05-20-cli-extensions.md (Stage 1)
Part of the EdgeZero CLI Extensions effort — stage 1 of 8.
Scope: Turn
edgezero-cliinto lib + bin: addsrc/lib.rswith the publicrun_*API and standalone#[derive(clap::Args)]structs; shrinkmain.rsto a thin wrapper. Rename thedevsubcommand todemo(devis reserved for a future dev-workflow command);dev_server.rs→demo_server.rs,run_dev→run_demo() -> Result<(), String>. Extend the generator to scaffold a<name>-clicrate (newtemplates/cli/). Add a handwrittenexamples/app-demo/crates/app-demo-cliparallel.No dependency on PR #253.
Ship gate: existing
edgezerocommands keep the same flags;app-demo-cli --helpshows the five built-ins;edgezero new <tmp> && cargo check --workspacesucceeds; all four CI gates green.Design spec:
docs/superpowers/specs/2026-05-19-cli-extensions-design.md§7Implementation plan:
docs/superpowers/plans/2026-05-20-cli-extensions.md(Stage 1)