Great write-up regarding good software engineering practices in general, and ones applicable to Scala development specifically.
Two things I submit to be clarified/added to Strategic Scala Style are:
1 - Explicitly declare the return type of all public methods.
Doing so ensures that type inference does not propagate implementation types to the caller (often eliminating compilation errors) and, in my experience, greatly assists in reduction of errors when working with higher-kinded types. IMHO, it also assists in understanding a system due to an explicit contract being expressed.
2 - As "Joe Clueless" wrote in the comments, why isn't Either presented as a viable alternative to Option?
Again, IMHO, while Option is an exceptionally useful type, when indicating errors at the "public API level" it proves to be insufficient. The distjoint union type Either allows a collaboration to be both explicit that a failure may occur as well as indicate what the failure was (if any).
Hopefully these comments help and, again, kudos to a great write-up.