chapter two

2 Writing Your First Specification

 

This chapter covers

  • Defining specifications
  • How SDD works
  • Why vibe coding creates context debt and unpredictability
  • Writing a URL shortener spec
  • Common SDD misconceptions

The core philosophy of SDD is to establish intent alignment between humans and agents before implementation begins, with specifications facilitating the dialogue and acting as durable artifacts that preserve that understanding beyond the current interaction. In addition to helping agents understand our intent, coauthoring the specification with AI deepens our understanding of what we are trying to accomplish. This becomes even more important as we move from individuals interacting with agent counterparts to improve personal productivity to entire teams interacting with agent swarms that involve complex collaboration patterns.

SDD tools vary widely in their approach and in the opinions they bring to the table. Some tools treat specs as a small set of markdown files guided by lightweight agent instructions. Others extend the idea across discovery, design, tasking, implementation, review, and multi-agent orchestration. While this variety is useful, it can also make it difficult to choose a tool or approach.

2.1 What is a specification

2.1.1 Tactical vs strategic context engineering

2.1.2 Characteristics of a good specification

2.2 How does SDD work

2.2.1 Spec-driven development workflow

2.2.2 Why the structure matters

2.3 Need for spec-driven development

2.3.1 Vibe coding software development lifecycle

2.3.2 Context debt and the return to manual mode

2.3.3 Unsuitable for sustained independent execution by agents

2.3.4 Loss of predictability

2.4 Spec-driven development by example

2.4.1 Are you ready to specify?

2.4.2 SDD Framework Setup

2.4.3 Project Configuration

2.4.4 Start specifying

2.4.5 Implement the specification

2.4.6 Specify the next feature

2.4.7 Spec-Driven Development experience recap

2.5 What SDD Is Not

2.5.1 Dispelling the Waterfall Comparison

2.5.2 SDD adoption is not a developer tooling rollout

2.5.3 SDD more than recovers specification time through parallel execution

2.5.4 SDD is not just a markdown machine

2.6 Summary