Yeah, I need to figure this out, this is still an open question for me.  Some context:

These were originally in `cli.json`.  Now they're hardcoded in the parser object.

The problem that I'm trying to solve is how a user can either

* add new top level parameters
* modify existing parameters

For example, if I wanted to add a `--debug-file` argument so you could have debug logs go to a file instead of stderr, or a `--log-level` param, how does a user currently do that?

For modifying, let's say that I wanted to add another output format in addition to the built in `json`, `table`, and `text` formats.  This would require modifying the `--output` param and adding an additional value to the `choices` list.

I'm not opposed to putting these back in cli.json, but I'm having a hard time seeing how to use that to be able to update/modify the cli params.

I'm thinking we might need to do a similar table/event based system for top level params.  Feedback/thoughts certainly welcome.