Traditional AI coding assistants have revolutionized how we write code, but they often struggle with complex project requirements. The typical "vibe coding" workflow - where developers write prompts, AI generates code, and the cycle repeats - works well for prototypes but can leave teams without clear documentation or understanding of why decisions were made.
Erik Hanchett (Senior Developer Advocate at AWS) and Nikhil Swaminathan (Senior Manager, Product Management at AWS) introduced a different approach in their DEV314 session: spec-driven development with Kiro, AWS' new agentic IDE that went generally available just weeks before re:Invent 2025.
As Nikhil explained: "The fundamental shift that's happened is that unlike previously, where the developer drives and provides, with AI editors, the developer steers the AI agent to author and review code. The developer's still very much in the driver's seat, but it's a different workflow."
Watch the Full Session:
The Evolution from Vibe Coding to Spec-Driven Development
Vibe coding has become incredibly popular over the past year, enabling developers to prototype applications in hours that would previously take weeks. However, this approach has significant challenges. Nikhil used a perfect analogy: "Slack threads. We've all been in Slack conversations where the message thread goes to 100 messages. You leave that thread with 'Okay, what did we take away? Why are we making the decisions we're making?' And sometimes that's just lost in that context."
The problem? Vibe coding completely skips the traditional software development lifecycle. Historically, teams have always started with artifacts - requirements documents, design docs, trade-off discussions - whether using Waterfall or Agile methodologies.
After talking to power users both internally at Amazon and externally, the Kiro team discovered that successful developers had already made an organic shift to planning before generating code. This insight led to building spec-driven development as a first-party workflow in Kiro.
The Spec-Driven Development Workflow
Spec-driven development introduces a structured workflow that takes you from initial requirements to production-ready code:
Requirements Phase: Start with user stories and acceptance criteria. Kiro uses the EARS format (Easy Approach to Requirements Syntax), which structures requirements as "when you do X, the system shall do Y." This format enables formal reasoning and property-based testing later in the workflow.
Design Phase: Generate comprehensive design documents based on your requirements and existing codebase. The design includes high-level architecture (with mermaid diagrams), component interfaces, data models, and implementation details.
Task List Phase: Break down the design into concrete, implementable tasks. You can refine the task list, reorder tasks to prioritize getting an MVP working early, or mark certain tasks (like comprehensive testing) as optional to see results faster.
Implementation Phase: Execute tasks individually or in batches. Kiro tracks progress, marks completed tasks, and can even update remaining tasks based on changes you make along the way.
Throughout this workflow, you can checkpoint your progress and restore to previous states if the AI goes off track. You can also refine any phase by making manual edits - clicking "refine" integrates your changes into the rest of the documentation.
Live Demo: Building a Job Seekers Interview Prep App
Erik and Nikhil demonstrated the entire workflow by building a job interview preparation application from scratch. Starting with just a Figma diagram, they created an app that:
- Presents interview questions (behavioral, technical, and leadership)
- Records audio responses using the Web Audio API
- Transcribes speech to text in real-time
- Analyzes responses using Claude AI SDK
- Provides qualitative feedback and quantitative scores
The demo showcased the iterative nature of spec-driven development. When the initial requirements didn't include audio transcription or AI-powered analysis, they simply asked Kiro to add those features. The IDE automatically updated both the requirements and design documents to maintain consistency.
Nikhil emphasized the importance of getting to a working MVP quickly: "There's a product analogy here. When you're building a car, you first start with a skateboard and move to a bike and then build a car, or you can choose to build the wheels, build the engine and then stitch everything together at the end. The better way to build a product is you build interim steps so you always have something that's workable."
Property-Based Testing: Ensuring Code Matches Intent
One of Kiro's most innovative features is automatic generation of property-based tests. Unlike traditional unit tests with limited inputs, property-based testing uses frameworks like fast-check to fuzz a whole range of values, generating more evidence that your code works correctly.
The EARS format requirements enable this capability. Because requirements are structured as logical statements, Kiro can extract properties and generate tests that verify those properties hold true across all executions.
Erik demonstrated property-based tests from a chess application he built, showing how tests run 100+ times with randomized inputs to ensure moves are validated correctly. As he noted: "Adding these property-based testing makes the output of your code at a much higher quality and oftentimes less bugs."
Agent Hooks: Automated Quality Gates
Kiro introduces "hooks" - lifecycle events that trigger automated processes. Hooks can be configured to run on file save, file create, and other events (with more coming soon).
Example use cases include:
Documentation Updates: Automatically update documentation when files change Style and Tone Checking: The Kiro team uses hooks in their docs repo to check spelling, tone, and style Component Validation: Ensure React components follow single responsibility principle Localization: Automatically generate translations when content changes
Nikhil explained: "Rather than just generating a lot of code with no processes to review things, we have hooks built in that allow you to validate changes."
Agent Steering and MCP Integration
Beyond the spec workflow, Kiro offers additional capabilities:
Agent Steering: Create rules files that specify coding standards, design patterns, or architectural constraints. Kiro can automatically generate these from your existing codebase, ensuring consistency as you build new features.
MCP (Model Context Protocol) Servers: Integrate external tools and data sources. AWS provides numerous MCP servers for services like Bedrock, with a comprehensive docs server as a catchall. Kiro recently added one-click installation for MCP servers.
Key Takeaways
Structured Workflows Beat Vibe Coding for Complex Projects: While vibe coding works great for quick prototypes, spec-driven development provides the documentation, audit trails, and clarity needed for production applications.
Planning Upfront Improves AI Output: Taking time to refine requirements and design before generating code helps AI models focus and produce better results.
Iterate at Every Phase: You're not locked into initial decisions. Refine requirements, update designs, reorder tasks, and checkpoint your progress throughout the workflow.
Property-Based Testing Raises Quality: Automatically generated property tests provide stronger guarantees that your code matches requirements than traditional unit tests alone.
Automation Through Hooks: Set up quality gates that run automatically, catching issues before they become problems.
Developers Stay in Control: As Nikhil emphasized, the developer steers the AI agent and remains responsible for the code. Spec-driven development makes that steering more effective.
About This Series
This post is part of DEV Track Spotlight, a series highlighting the incredible sessions from the AWS re:Invent 2025 Developer Community (DEV) track.
The DEV track featured 60 unique sessions delivered by 93 speakers from the AWS Community - including AWS Heroes, AWS Community Builders, and AWS User Group Leaders - alongside speakers from AWS and Amazon. These sessions covered cutting-edge topics including:
- π€ GenAI & Agentic AI - Multi-agent systems, Strands Agents SDK, Amazon Bedrock
- π οΈ Developer Tools - Kiro, Kiro CLI, Amazon Q Developer, AI-driven development
- π Security - AI agent security, container security, automated remediation
- ποΈ Infrastructure - Serverless, containers, edge computing, observability
- β‘ Modernization - Legacy app transformation, CI/CD, feature flags
- π Data - Amazon Aurora DSQL, real-time processing, vector databases
Each post in this series dives deep into one session, sharing key insights, practical takeaways, and links to the full recordings. Whether you attended re:Invent or are catching up remotely, these sessions represent the best of our developer community sharing real code, real demos, and real learnings.
Follow along as we spotlight these amazing sessions and celebrate the speakers who made the DEV track what it was!
Top comments (0)