"def" without "do"

In the source code I find this pattern repeated over and over.
As an example, in the elixir-1.5.3/lib/elixir/lib/enum.ex I find:

  @spec reduce(t, acc, reducer) :: result
  def reduce(enumerable, acc, fun)

The “def reduce…” has no “do” block. Almost all specs in this
file follow this pattern. Some do not.

Is this a “template” of some sort?

I’ve looked but can’t find an explanation.

What is this pattern called?

What changes when a spec has this and some specs do not?

Is this “def” without a “do” related to a “spec” at all? If not,
then what does this syntax provide?