A SPEC.md is the difference
A SPEC.md file is the difference between vibe coding and software engineering.
For a complex feature I write a spec and hand it to the agent to turn into an implementation plan. What goes in it:
- Introduction. “You are building a dashboard to change settings on a security platform.”
- Problem. If it knows why, it finds solutions I didn’t think of.
- Scope. Keeps it focused on what I want.
- Out of scope. Paradoxically, this sharpens the scope.
- Functional requirements. The list of tasks to complete.
- Non-functional requirements. Respects my architectural decisions.
- References and glossary. Points it at the knowledge it should read.
The spec is where the thinking happens. The code is the easy part.