There should be a reasonably detailed description or scope of work to be done. For a complete roof replacement, something like as follows:
Remove and dispose of x layers of asphalt shingles and felt
Replace rotten decking @ $xx per sheet
Apply whatever type of felt/underlayment they are proposing
Nail 3 tab shingles with 4 1-1/4" galvanized nail and 30 Yr architectural with 5 1-1/4" galvanized nails (or whatever meets/exceeds the local and manufacturer's requirements).
Some description of what will be done with replacing vents, plumbing boots, sidewall and chimney flashings, etc..
Items to cover other things such as ridge vent, drip edge, etc..
Tarp and plywood protect garage door, landscaping, etc..
At the time we make the shingle selection, we write in the manufacturer selected, the model and the color and have the Homeowner initial the color selection. Since we can't predict the weather and other circumstances, we provide a tentative week for doing the roof with the understanding we will nail it down more precisely the week before.
Our T&C's cover payment terms, what happens if we discover hidden conditions, etc.. We utilize a separate sheet we call the a pre job check list to set expectations and go over other items.
IMHO, it makes sense to have a reasonably detailed contract as it protects both the Homeowner AND the Contractor. I think it is silly to be ambiguous about a project that is multiple thousands of dollars. Nailing things down in black and white goes a long way towards avoiding disputes later.