Clipanion provides type inference for the options you declare: no duplicated types to write and keep in sync.
Because it uses standard ES6 classes, tools like ESLint can easily lint your options to detect the unused ones.
Clipanion supports subcommands, arrays, counters, execution contexts, error handling, option proxying, and much more.
Clipanion unifies your commands into a proper state machine. It gives little room for bugs, and unlocks command overloads.
The core is implemented using a functional approach, letting most bundlers only keep what you actually use.