Do we really need to check both predicates in both branches?  Isn't the existence of `cookbooks` or `recipes` a sufficiently strong indicator that we have a Chef recipe?

Using just these indicators would allow us to simplify the whole predicate to `(or (locate-dominating-file "recipes") (locate-dominating-file "cookbooks"))`.