AFAIK you don't need to add @specs everywhere to get useful warnings from Dialyzer (or Dialyxir) as it does some type inference and also the standard library is already annotated, but I only played with it one time so don't quote me on that.
Fun fact: dialyzer does not use your @spec’s to run checks. If you do provide a @spec, it will check that it matches, but it doesn’t affect dialyzer itself.