Runtime Mix.Task - set long task description?

I think you can probably do this with Mix.Project.config/0. Something like:

defmodule Mix.Tasks.CheckHelper do
  def build_help do
    checks = Mix.Project.config()
             |> Keyword.get(:checks)
             |> Enum.map(fn el -> elem(el, 0) end)
             |> Enum.join("\n\n")

    {0, checks}
  end
end
defmodule Mix.Tasks.Check do
  use Mix.Task

  alias Mix.Tasks.CheckHelper

  Module.put_attribute(__MODULE__, :moduledoc, CheckHelper.build_help())

  @impl Mix.Task
  def run(_args) do
    Mix.shell().info("use `mix help check`")
  end
end
$ mix check && mix help check
                                   mix check                                    

test

cspell

compile (no warnings)

I don’t think this is ideal, but it’s a starting point, hopefully. Or it’s bad enough that someone will correct it for an actual solution.