How I Work
Generally when building a website I will work closely with the client and a designer to work out what is required, then plan and carry out the site build.
For small websites the description of what is needed is generally small enough that the contract holds enough information that a full specification is not necessary. Development functionality is generally that the back-end part of the website works, and usability is checked with the client, potentially only once during the design and planning stage of the website. Code will be commented within the code, but more documentation will only be produced on request.
For medium and large websites I would usually work to 'milestones' where functionality and usability are checked and changes can be made before getting so far down the project that significant re-development is necessary. These milestones are worked out in a project plan / website specification document, which I can help plan and write. I would expect to produce written documentation about the code written, the exact format to be agreed with the client. Depending on what is created, I can create training documents for both technical and non-technical people to help train future staff members.