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