@callback run(opts :: map(), subcommands :: list(), unknown :: map()) :: any()
@callback spec() :: Keyword.t()