Here’s the spec I’d use.
For a real .NET API CLI with Spectre.Console, I would treat Spectre as the command surface and Host.CreateApplicationBuilder(args) as the runtime backbone. Spectre’s current docs explicitly support multi-command hierarchies with AddBranch(), shared settings inheritance, DI through a registrar bridge, interceptors, async commands, logging, and in-memory testing. Microsoft’s current .NET guidance recommends the Generic Host for apps that use configuration, DI, and logging. ([spectreconsole.net][1])
The CLI should be a task-oriented tool first, and only secondarily a “raw API caller.” Spectre’s branching model is a very good fit for that, because it gives you discoverable help at each level, aliases, descriptions, and examples. ([spectreconsole.net][1])
Proposed command tree: