sig
  type args = Assemblage.Private.Args.t
  type cmd = Acmd.cmd
  val cmd : string Conf.key -> cmd Conf.value
  val static : string -> cmd
  type t = Acmd.t
  val v :
    ?stdin:Path.t ->
    ?stdout:Path.t -> ?stderr:Path.t -> cmd -> string list -> t
  module Args :
    sig
      val add : '-> 'a list -> 'a list
      val adds : 'a list -> 'a list -> 'a list
      val add_if : bool -> '-> 'a list -> 'a list
      val adds_if : bool -> 'a list -> 'a list -> 'a list
      val fadd_if : bool -> ('-> 'a) -> '-> 'a list -> 'a list
      val fadds_if : bool -> ('-> 'a list) -> '-> 'a list -> 'a list
      val path_arg : ?opt:string -> Path.t -> string list -> string list
      val path_args :
        ?opt:string -> Path.t list -> string list -> string list
      val path : Path.t -> ext:Path.ext -> Path.t
    end
  val dev_null : Path.t Conf.value
  val cd : (Path.t -> t) Conf.value
  val ln : (Path.t -> Path.t -> t) Conf.value
  val ln_rel : (Path.t -> Path.t -> t) Conf.value
  val cp : (Path.t -> Path.t -> t) Conf.value
  val mv : (Path.t -> Path.t -> t) Conf.value
  val rm_files : (?f:bool -> Path.t list -> t) Conf.value
  val rm_dirs : (?f:bool -> ?r:bool -> Path.t list -> t) Conf.value
  val mkdir : (Path.t -> t) Conf.value
  val stamp : (Path.t -> string -> t) Conf.value
  val cmd_key : t -> string Assemblage.Private.Conf.key option
  val cmd_name : t -> string
  val args : t -> string list
  val stdin : t -> Assemblage.Path.t option
  val stdout : t -> Assemblage.Path.t option
  val stderr : t -> Assemblage.Path.t option
  val pp : Format.formatter -> t -> unit
  val ctx : Assemblage.Ctx.t -> t -> Assemblage.Ctx.t
  val args_with_ctx :
    Assemblage.Private.Conf.t ->
    Assemblage.Ctx.t -> Assemblage.Private.Acmd.args -> t -> string list
end