Skip to content
ai engineering questions

AI Engineering · 4 of 12middle~2 min

What is Specification-Driven Development?

#workflow#ai-coding

Specification-Driven Development

Specification-Driven Development (SDD) makes a written specification the source of truth: you first describe what to build and why, then the AI derives a technical plan, a task list and finally the code from it. When requirements change, you change the spec and regenerate, instead of patching code through chat.

The typical flow

text
specify -> plan -> tasks -> implement what how steps code + tests
  1. Specify - user stories, acceptance criteria, edge cases, non-goals. No tech details.
  2. Plan - architecture, data model, API contracts, chosen libraries.
  3. Tasks - small, ordered, reviewable steps with a test for each.
  4. Implement - the agent works through tasks; you review each one against the spec.

What a spec looks like

md
## Feature: saved filters As a user I want to save the current table filters so I can reuse them. ### Acceptance criteria - Saving requires a name, 1-50 chars, unique per user - Saved filters appear in a dropdown, newest first - Applying a filter updates the URL query string - Deleting asks for confirmation ### Out of scope - Sharing filters between users

Tools like GitHub Spec Kit and Kiro are built around this flow, but plain markdown files in the repo work too.

SDD vs Prompt-Driven Development

Prompt-DrivenSpecification-Driven
Source of truthchat promptsspec files in the repo
Best forsmall changes, prototypesfeatures, multi-step work
Context between sessionslostpersisted and reviewable
Upfront costnonewriting and reviewing the spec

Why it works

LLMs fill gaps with guesses. A spec removes most gaps before any code exists, gives the agent a stable reference for long tasks, and gives reviewers something to check the code against - "does this meet criterion 3?" instead of "looks fine".

The skill shifts from writing code to writing precise requirements. A vague spec produces vague code just as reliably as a vague prompt.

updated

did you know it?

related questions