In this article, we show how Spec-Driven Development with agent workflows works in practice and why this approach goes beyond classic vibe coding. Instead of generating code directly from prompts, software is created step by step from clear requirements, precise specifications, and specialized agents. The focus is on an experiment that explores the Story, Plan, Implement, and Review workflow as well as the effects of AI-assisted development, TDD, and structured specifications. Finally, we present key learnings, typical pitfalls, and solution strategies for working with AI agents.
More on agentic AI at OTTO can be found here:
In the fast-moving world of software development, we are constantly looking for ways to optimize our processes and improve the quality of our work. At the moment, we are seeing two opposing approaches:
• "Vibe coding" is an intuitive and creative approach in which developers quickly get into the "flow" in order to achieve results quickly.
• "Spec-Driven Development" with agent workflows is a structured approach that delivers reproducible and scalable results through precise specifications and the use of agents.
With the emergence of powerful tools such as OpenCode, working with agents and subagents is becoming especially important. We wanted to find out whether software development can work completely without "writing code ourselves" and how far a consistent agent-based approach can take us. That is why we started an experiment and are sharing our learnings here.
At OTTO, numerous AI initiatives are currently underway. The AI Engineering Excellence (AIEE) team provides cross-team enablement along the entire Product Development Lifecycle (PDLC). To test the potential of agents in a real project environment, we set up a two-week experiment together with the AIEE team:
To run the experiment efficiently and with a clear focus, we defined clear roles and a structured process:
AIEE Team
Our Team
Daily syncs, intensive pairing sessions, and fast iteration cycles complemented the setup. These measures promoted continuous exchange within the team and enabled us to solve challenges together. The result was a high level of knowledge sharing and a steep learning curve for everyone involved.
Specification-driven development is a methodological approach in software development in which software is implemented on the basis of detailed and clearly formulated specifications. Requirements are documented in writing before implementation begins and serve as the binding foundation for all subsequent development steps - in the context described here, also for the use of agents.
The spec-driven approach offers a number of benefits that have a positive impact on both the development process and the final result:
The core idea:
Instead of generating code directly, specifications are created first and then used to generate the code in a deterministic and traceable way.
Figure 1: Our Agentic Engineering Workflow - from requirements to approval.
This workflow helped us move faster while also improving code quality. By refining stories thoroughly, critically questioning plans, and clearly documenting decisions from the start, we avoided time-consuming correction loops. A solid planning phase ensured that our implementation was focused and efficient from the outset.
This "Story -> Plan -> Implement -> Review" cycle creates transparency, high quality, and fast iterations.
One of our most important learnings: A precise story (problem, acceptance criteria, boundaries) forms the foundation. A carefully reviewed plan builds on it and is challenged before the work begins.
Pitfall: Without this process, agents quickly get lost in unclear changes. In our experiment, we had not defined all return services, so not all of them were listed in the dropdown menu.
Solution strategy: Recording all artifacts (stories, plans, decisions) and consistently working according to the Story-Plan-Commit-Review cycle ensure transparency, quality, and speed.
The quality of the specification largely determines the quality of the result: unclear requirements lead to unclear results, while precise specifications lead to remarkably good outputs.
Pitfall: There is often a tendency to use agents as universal problem solvers and assign them many different tasks at the same time. The problem: the context window fills up, causing quality to drop significantly (from about 70% utilization).
Solution strategy:
Here is an example prompt for implementation via subagents:
“Implement. Go task by task. Spawn a subagent for each task. Use TDD Red-Green-Refactor. Create a commit. Ask me questions if anything is not clear enough”
Our learning: tests from the start are essential. They catch errors early and provide confidence with every change. Without automated tests, undetected bugs crept in - for example, buttons that did not work or missing validations.
Pitfall: Agents generate code, but without tests there is no feedback channel for quality assurance, and regressions creep in.
Solution strategy: Require every subagent to create a test stub (unit or snapshot test) before implementation. With the "Red - Green - Refactor" process, we ensure that every change is verified before it moves into the main branch.
Our experiment was not only a lot of fun but also gave us many valuable insights. The combination of spec-driven development and agent/subagent workflows has the potential to fundamentally change software development.
We are already observing:
But the role of developers is also changing noticeably: it is increasingly less about writing code oneself and more about thinking in architectures, assessing quality, and orchestrating complex systems. Our recommendation is therefore: try this approach yourself, start small, think consistently in specifications, and use subagents deliberately for implementation.
And above all: Stay curious. We look forward to hearing about your experiences, opinions, and questions! 👇
By the way, you can find more exciting insights into AI initiatives at OTTO in Jan Vesper’s article on AI Software Development (at OTTO) and Alexander Kranz’s post about AI Assistants—From Vector Databases to Multimodal Agents. Enjoy reading!
Want to work with us?

We have received your feedback.