Crema spec Get the free skill

What Is Spec-Driven Development? A Guide for AI Coding Teams

By Viberr ·
A Victorian workshop where a single master blueprint on a brass easel guides a row of small engraved machines building parts on a long workbench.

Spec-driven development is a way of building software where a written spec, not a chat prompt, tells AI coding agents what to build and why. The spec comes first. Humans review it, agents follow it, and the code is checked against it.

Two out of three developers name AI answers that are almost right, but not quite, as a frustration, the most common one in the 2025 Stack Overflow survey. Faster agents will not fix that, because the gap lives in the instructions, not the typing. This guide shows how spec-driven development closes that gap: the workflow, the tools, the honest critiques, and the piece most teams still miss.

What is spec-driven development?

Definition

Spec-driven development (SDD) is a software practice where a written specification is created before code and serves as the source of truth that both humans and AI coding agents work from.

The idea is simple. You describe what you want, why it matters, and how you will know it works. Then an agent writes code from that description, and you check the result against it.

GitHub calls the spec "a contract for how your code should behave" in its launch post for Spec Kit. That contract matters more with agents than with people. A human teammate can ask a follow-up question, but an agent will often fill the gap with a guess.

The three levels of spec-driven development

Birgitta Böckeler of Thoughtworks mapped SDD into three levels in her review of SDD tools on martinfowler.com. The levels describe how long the spec lives and how much it controls.

Böckeler found that every SDD approach she reviewed works at the spec-first level. The real payoff, and the real difficulty, starts when the spec has to stay true for months.

Why did spec-driven development come back with AI coding agents?

Writing specs before code is not new. Teams did it for decades, then moved toward lighter documents and working software. What changed is who reads the spec.

AI agents are now part of daily work. In the 2025 Stack Overflow Developer Survey, 47.1% of respondents said they use AI tools daily, and 14.1% said they use AI agents at work daily. Yet trust is low, with about 46% saying they distrust the accuracy of AI output.

Figure 1
Why AI coding teams want more structure
Share of developers, 2025 Stack Overflow Developer Survey
Vibe coding is not part of my professional work
77.5%
AI solutions are almost right, but not quite
66%
Distrust the accuracy of AI tools
46%
Debugging AI-generated code takes more time
45.2%
Source: Stack Overflow, Developer Survey: AI (2025)

Those numbers point to the same root cause. An agent that gets a vague prompt returns a plausible answer, and a human then spends time finding what is wrong with it. A spec moves that effort to the front, where it is cheaper.

It also gives teams an alternative to vibe coding. Martin Fowler describes vibe coding as prompting an LLM and accepting results without looking at the code, which he says fits "disposable software written for a limited audience." Production systems need something sturdier, and a spec is the most direct answer.

How does the spec-driven development workflow run?

The tools use different names, but the loop is close to the same. GitHub Spec Kit uses specify, plan, tasks, and implement, and Kiro uses requirements, design, implementation planning, and execution. We add a fifth step that every team needs: verify.

  1. Specify: Describe what you are building, who it is for, and why. Include user journeys and how you will measure success.
  2. Plan: Add the technical choices, such as stack, architecture, and constraints. The agent turns the spec into a technical plan you can review.
  3. Tasks: Break the plan into small tasks that can each be built and tested on their own.
  4. Implement: The agent works through the tasks, and a human reviews each focused change.
  5. Verify: Check the code against the spec, not against your memory. Update the spec if the plan changed during the build.
Five brass stations on a curved track pass a single sheet of paper from a writing desk to a drafting table, a sorting rack, a small machine, and a magnifying lens.

Kiro makes the first step concrete with testable requirements. Its docs show the pattern "WHEN [condition/event] THE SYSTEM SHALL [expected behavior]," so each requirement can become a test case. Spec Kit also uses what Böckeler describes as a "constitution," a set of high-level principles meant to stay fixed.

The human role shifts from writing code to deciding and checking. As the GitHub team puts it, the developer's job is to steer and verify. For a deeper look at how this loop scales into a full pipeline, see our guide to the software factory.

What are the main spec-driven development tools?

Three tools defined the category in 2025. Each takes a different view of how long a spec should live.

GitHub Spec Kit

GitHub released Spec Kit as an open source toolkit in September 2025. It is a command-line tool that adds slash commands like /specify, /plan, and /tasks to coding agents such as GitHub Copilot, Claude Code, and Gemini CLI. Böckeler notes that each spec gets its own branch, which suggests a spec tied to one change rather than one feature.

AWS Kiro specs

Kiro is an AI IDE from AWS built around specs. Each spec has three files: requirements.md, design.md, and tasks.md, with decision points between phases. Kiro also keeps project memory it calls "steering."

Tessl

Tessl launched its framework and Spec Registry in September 2025. The framework keeps specs in the codebase as long-term memory for agents, paired with tests as guardrails. The registry holds more than 10,000 pre-built specs that help agents use open source libraries correctly.

The Thoughtworks Radar view

The Thoughtworks Technology Radar placed spec-driven development in its Assess ring in November 2025. It called the space interesting but warned that "the workflows remain elaborate and opinionated." It also noted that some tools "generate lengthy spec files that are hard to review."

How does spec-driven development compare to agile docs and vibe coding?

SDD sits between two familiar habits. Agile teams write light documents for humans, and vibe coders write almost nothing at all. Our post on vibe coding vs. spec-driven development goes deeper on that second contrast.

DimensionSpec-driven developmentTraditional agile docsVibe coding
Primary readerAI agents and human reviewersHuman teammatesNo one, the prompt is the plan
When it is writtenBefore code, updated as it changesJust in time, often afterNever, or in the chat history
Source of truthThe specWorking code plus conversationWhatever the code does today
Typical artifactRequirements, plan, and task filesUser stories and ticketsChat prompts
Review focusIntent first, then codeCode and demoThe running app, if anything
Best fitProduction software built with agentsHuman-only teams with shared contextPrototypes and disposable tools
Main riskOverhead and spec driftMissing context for agentsSecurity, correctness, and upkeep

The key difference is the reader. Agile docs can stay thin because people share context in standups and hallways. Agents share none of that, so the spec has to carry it.

What are the honest critiques of spec-driven development?

SDD has real skeptics, and their points are fair. The best critiques come from people who tried the tools closely.

“Crucially, your role isn't just to steer. It's to verify.”

A tall stack of loose paper documents leans over a cluttered desk while a clerk seen from behind holds up one small decision card with a gold wax seal.

Notice what these critiques share. None of them says specs are a bad idea. They say specs get too long, too hard to review, and too easy to ignore, which are problems of size and process.

That is the right way to read them. The answer is not to drop the spec but to keep each change small enough for a human to actually judge.

What is missing from most spec-driven development setups?

Most SDD tools focus on writing a spec. Few focus on what happens to it after week one: who may change it, how changes are reviewed, and how it stays in sync with the code.

Researchers have started to name this gap. A June 2026 arXiv paper on the Spec Growth Engine describes "silent spec-code drift," where code changes while the spec does not. Its proposed fix is a drift gate that blocks merges when the two diverge.

We see drift in a wider form. Feature specs get appended to a core spec no one can read, deprecated copies multiply, and each team pulls context from a different version. We cover the signs in detail in our post on spec drift.

How Crema governs the spec

Crema is one way to handle this layer. It is a spec control plane that keeps the spec in GitHub as one source of truth and sizes each change for human judgment.

Governance questionCommon gap in SDD setupsHow Crema handles it
Where does the spec live?Scattered files, branches, and copiesOne GitHub monorepo as the single source of truth
How does a change happen?Agents or people edit files directlyEvery new section or revision is a pull request
How big can a change be?Long spec files that are hard to reviewAn admission check caps each change at 2,000 words and requires who it is for and why
How is it reviewed?Ad hoc, when someone has timeA 25-minute review cycle, two cycles, then a break
What may agents propose?Whatever the prompt allowsAgent controls in the repo limit sections, words, tests, dependencies, and proposals per week
Who decided and why?Lost in chat or commit messagesAn append-only audit trail of who drafted, who decided, when, and why

Each change lands on a decision card: who it is for, why, the change, the limits, and the spec text, on one screen. Permissions are set per proposer in a repo file and revoked with a one-line change. That matters even more when everyone in the company codes.

How do you start doing spec-driven development?

You do not need a new platform to start. You need a habit and a few rules. Use this checklist on your next feature.

  1. Pick one real feature. Choose something small enough to ship in a week, not a full system rewrite.
  2. Write who it is for and why first. If you cannot state both in two sentences, the agent will not guess them either.
  3. Add testable requirements. Use a WHEN and SHALL pattern so each line can become a test.
  4. Keep each spec change short. Aim for a change one person can review in a single focused sitting.
  5. Put the spec in version control. Treat spec edits like code edits, with a pull request and a named reviewer.
  6. Set agent limits in writing. Decide which sections an agent may change and how much it may propose.
  7. Verify against the spec. Review the code by asking whether it matches the written intent.
  8. Update the spec when reality changes. If the build taught you something, fix the spec before the next task.

For help writing the spec itself, our guide on how to write a PRD for AI coding agents walks through a full template. The free Crema PRD skill also helps you write specs and spec changes for agents.

Once the spec is live, record why each change was made. Our guide to decision records for AI teams shows the fields to capture, and the product builder guide covers who should own the spec.

Keep reading

Vibe Coding vs. Spec-Driven Development: When Each One Breaks

What Is Spec Drift? Why AI-Built Software Stops Matching the Plan

How to Write a PRD for AI Coding Agents (Free Template)

Decision Records for AI Teams: Why Every Spec Change Needs an Audit Trail

Frequently asked questions

What is spec-driven development in simple terms?

Spec-driven development means writing down what you want built, and why, before any code is written. AI coding agents then build from that written spec, and humans check the code against it.

What does SDD stand for in software?

SDD stands for spec-driven development. It is also called spec-first development or specification-driven development, especially when teams use AI coding agents.

Is spec-driven development just waterfall again?

It does not have to be. Waterfall locks a large design up front, while good SDD keeps each spec change small and updates the spec as the team learns.

What are the best spec-driven development tools?

The best-known tools are GitHub Spec Kit, AWS Kiro, and Tessl. Spec Kit is open source and works with several coding agents, Kiro is a spec-based IDE, and Tessl adds a registry of library specs.

What is spec drift?

Spec drift is when the spec and the real product stop matching. It happens when feature specs pile up, old copies multiply, and teams pull context from different versions.

Sources and further reading

  1. GitHub (2025). Spec-driven development with AI: Get started with a new open source toolkit
  2. Martin Fowler (Birgitta Böckeler) (2025). Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl
  3. Thoughtworks (2025). Technology Radar: Spec-driven development
  4. Kiro (AWS) (2025). Specs: Concepts
  5. Tessl (2025). Tessl launches spec-driven development tools for reliable AI coding agents
  6. Stack Overflow (2025). 2025 Developer Survey: AI
  7. Martin Fowler (2026). Vibe Coding
  8. arXiv (Hartwig Grabowski) (2026). The Spec Growth Engine: Spec-Anchored, Code-Coupled, Drift-Enforced Architecture for AI-Assisted Software Development
  9. Crema (2026). Research and bibliography