I don't know if requiring a cabal file is a best practice. That'd be like saying "All gems should have a gemspec", there's sort of now way not to do it.

Yesod comes with a `yesod init` command which is basically Suspenders. Cabal itself comes with a command to create a generic cabal file based on some prompts.