Come up with a loose guideline. If your spec is more than a page, and rigidly specifies stuff, you've over specified. The idea is to get an idea of how the system fits together and what the components are needed for putting it together, not to detail exactly how each part behaves.
Then, as you implement, fill in the blanks in your initial spec. Make sure that if it's implemented, it's fully documented.
Then, as you implement, fill in the blanks in your initial spec. Make sure that if it's implemented, it's fully documented.