Specification-Driven Development: reframing the role of specifications in agentic software development
In recent years, generative artificial intelligence has profoundly changed the way software is developed. Tasks that until recently required hours of implementation can now be delegated to an AI coding agent capable of producing code, tests and documentation in just a few minutes. In two words, vibe coding [1].
This shift, however, also brings with it a less visible consequence. As the cost of writing code decreases, the value of the information that guides its generation increases. In other words, the quality of the outcome is heavily influenced by the ability to describe the problem correctly.
In this context, approaches such as Specification-Driven Development (SDD) are beginning to emerge, shifting the focus from code production to the creation of complete, traceable and shared specifications.
From generated code to the context that guides it
The adoption of AI coding agents has introduced a significant shift in perspective. Developers still start from a request that needs to be implemented, but they are no longer limited to translating it directly into code: they can now delegate part (or all) of the implementation to a language model, transforming the initial request into clear, complete and contextualized instructions for the AI agent.
This approach works very well when the context is clear and the requirements are precisely defined. Difficulties emerge when the available information is incomplete or ambiguous. In these cases, the agent is forced to make assumptions: it may misinterpret the expected behavior, choose technologies that are not consistent with the project, or adopt conventions that differ from those used by the team.
The result is often code that appears correct, but still requires substantial review and validation.
What Specification-Driven Development is
Specification-Driven Development [2][3][4] emerges precisely from the need to reduce these ambiguities.
The core idea is simple: every change to be made to the software should be described through a specification that gathers goals, motivations, constraints, functional requirements and acceptance criteria. The specification thus becomes the primary artifact of the development process and the main point of reference for both developers and AI agents [2]. In this regard, it is worth looking at spec-kit [8], an open-source toolkit that implements Specification-Driven Development.
Implementation therefore does not begin directly with code, but with a refinement phase whose goal is to make all the necessary information explicit.
Why LLMs make this approach possible
Requirements refinement is not a new activity. For years, Agile methodologies and practices such as backlog refinement have helped teams clarify goals before implementation begins.
What is different today is that LLMs can rapidly analyze large volumes of documentation, compare requirements against the existing codebase and identify inconsistencies in a fraction of the time.
This capability makes it possible to consider integrating clarification and validation activities directly into the day-to-day development process, making a level of depth sustainable that in the past would have required a much greater investment [3][4].
Specification-Driven Development: insights from the experimentation
During the study activities carried out in the latest Gilda cycle, one particularly interesting aspect emerged: adopting SDD requires a shift in mindset.
The specification stops being a simple supporting document and becomes the center of the entire process. Every new piece of information that emerges during development should be brought back into the specification itself before moving forward with further implementation.
This would inevitably lead to closer collaboration between developers, Product Owners, designers and stakeholders. The questions raised by the agent during the clarification phase become opportunities to make explicit decisions that often remain implicit.
The advantages of a Specification-Driven approach
The most obvious benefit is that the clarification work is moved to the beginning of the process.
Investing more time in defining specifications makes it possible to reduce the number of assumptions, limit interruptions during development and provide better context for both developers and AI agents.
There is, however, another equally important advantage: product knowledge becomes centralized and easily accessible. Specifications become a form of living documentation that explains not only what has been built, but also why certain decisions were made [2].
Challenges to consider
Specification-Driven Development, when introduced into product development, would not come without costs. Producing and maintaining specifications would require time from people beyond the development team. In addition, the intensive use of LLMs would introduce operational costs related to the models being used, which should be taken into account from a budget perspective.
For this reason, the approach may initially be perceived as a slowdown. The return on investment becomes more evident in the medium to long term, when the quality of the information collected begins to reduce errors, follow-up clarifications and rework.
Conclusions
More than a methodology dedicated exclusively to AI coding agents, Specification-Driven Development represents a broader reflection on the value of information within the software development process [7].
The most interesting aspect is not the automatic generation of code, but the attention placed on building shared, verifiable and easily accessible knowledge.
In a context where code writing is becoming increasingly automatable, the ability to clearly define requirements, constraints and goals risks becoming one of the most important skills for development teams. If the software of the past was limited by the speed at which code could be written, the software of the future may be limited by the quality of the specifications that guide its generation.
References
- Article “What Is Vibe Coding?”
- Page “Specification-Driven Development (SDD)” of the spec-kit project documentation
- Article “Diving Into Spec-Driven Development With GitHub Spec Kit”
- Article “Spec-driven development with AI: Get started with a new open-source toolkit”
- OpenSpec framework
- Page “Welcome to the BMad Method” of BMad+ documentation
- Article “Structured-Prompt-Driven Development (SPDD)” by Martin Fowler