記事一覧に戻る
Spec-Driven Development in Practice — A Development Workflow for the AI Agent Era

Spec-Driven Development in Practice — A Development Workflow for the AI Agent Era

ZenChAIne·
Spec-Driven DevelopmentAI AgentDevelopment Workflow

Introduction

Now that AI agents generating code has become commonplace, a new set of problems has emerged. "The AI's code doesn't match the requirements." "Frequent pivots cause constant rework." "Different people prompt the AI differently, producing inconsistent output."

The root cause of all these problems is the same: what to build isn't clearly defined before the code is written.

Spec-Driven Development (SDD) is a methodology where, instead of having AI agents jump straight into code, you first have them generate specifications, then build based on those specs. This article explains why this approach was born, how it differs from vibe coding, and how to put it into practice.

The Rise and Limits of Vibe Coding

What Is Vibe Coding?

In February 2025, former OpenAI researcher Andrej Karpathy coined the term "vibe coding" — an approach where you build software by giving AI rough, intuitive instructions without necessarily understanding the underlying code.

The rapid improvement of AI coding tools like Cursor and Claude Code made it possible for people with little programming experience to create applications. Karpathy himself described it as "forgetting that the code even exists and fully surrendering to the vibes."

The Problems with Vibe Coding

However, while vibe coding works for throwaway weekend projects, it has proven to carry serious risks for production software:

  • Security vulnerabilities: Reports emerged of vibe-coded apps exposing personal data with no access controls
  • Declining code quality: Code duplication roughly quadrupled, and "code churn" — code rewritten shortly after merge — nearly doubled
  • Development without understanding: Developers who don't understand the AI-generated code can't detect bugs or security holes
  • Unmaintainable output: Long-term maintenance becomes impractical as technical debt accumulates rapidly

Ironically, Karpathy himself later admitted that in subsequent projects, "I tried the AI agent several times but it was completely useless," and returned to writing code by hand.

This isn't a blanket rejection of vibe coding. It's valuable for prototyping and learning. The problem lies in applying this approach directly to production-grade development.

The Birth and Spread of Spec-Driven Development

Why It Emerged

Spec-Driven Development appeared in 2025 as the industry's answer to the limitations of vibe coding.

The idea of "generating code from specifications" predated LLMs, but earlier tools lacked the accuracy to produce usable code from natural-language specs. As LLM context windows expanded and natural-language comprehension improved dramatically, the spec-driven approach became practical for the first time.

OpenAI's Sean Grove put it this way: "The new scarce skill is writing specs that fully capture intent and values. Not prompts, not code — specs are becoming the fundamental unit of programming."

The Adoption Timeline

Since 2025, a series of tools supporting spec-driven development has appeared:

PeriodTool / Development
July 2025Amazon previews Kiro with the slogan "From vibe coding to viable code," implementing a spec-driven workflow as an IDE
September 2025GitHub open-sources Spec Kit, providing CLI, templates, and prompts to standardize the spec-to-plan-to-task-to-implementation flow
Late 2025Thoughtworks features spec-driven development on its Technology Radar, calling it "one of the most important practices to emerge in 2025"

Current Adoption

As of 2026, spec-driven development is not yet a fully mature methodology, but awareness is growing rapidly. Major AI development tools — Kiro, GitHub Spec Kit, Claude Code, Cursor — have all begun supporting spec-driven workflows, and Thoughtworks expects "even bigger shifts in 2026."

From Vibe Coding to Spec-Driven Development

What changes in practice?

Comparing the Workflows

Vibe coding:

Developer: "Build a user auth feature"
AI:         Generates code
Developer: "Not quite — use JWT"
AI:         Modifies code
Developer: "Add refresh tokens too"
AI:         More modifications... (loop continues)

Spec-Driven Development:

Developer: "Build a user auth feature"
AI:         Generates a requirements doc (functional, non-functional, constraints)
Developer: Reviews and approves
AI:         Generates a technical design doc (architecture, API design, data model)
Developer: Reviews and approves
AI:         Generates a task list (prioritized implementation steps)
Developer: Reviews and approves → moves to implementation

The key point of SDD is the division of labor: AI writes the specs, humans review them. Humans focus on validating requirements and making design decisions, while AI handles the structuring and documentation work.

Workflow

The basic flow of spec-driven development is straightforward:

Developer describes requirements → AI generates specs → Human reviews → Implementation

The developer describes requirements in natural language, and the AI produces structured specification documents. While output formats vary by tool, the following artifacts are typically generated:

Requirements Document

A summary of what to build. Functional requirements, non-functional requirements, and constraints are listed. Each requirement gets an ID for cross-referencing from design docs and tasks.

markdown
## Functional Requirements
- FR-001: Login via email + password
- FR-002: Session management with JWT
 
## Non-Functional Requirements
- NFR-001: Response time under 200ms
- NFR-002: Passwords hashed with bcrypt

Technical Design Document

A summary of how to build it. Covers architecture, API design, data models, security design, and more. Includes references to requirement IDs, making the rationale behind each design decision explicit.

Task List

A summary of the build order. Prioritized implementation steps are output as a checklist.

Humans review the generated specs and request changes where needed. Once specs are finalized, implementation proceeds based on the agreed-upon specifications.

The power of SDD lies in locking down specs before coding begins. When specs are settled first, instructions to the AI during implementation become far more specific, dramatically reducing rework.

Tool-Specific Approaches

Each tool supporting spec-driven development takes a slightly different approach:

  • Amazon Kiro: Create a "Spec" inside the IDE, and it generates requirements, design, and tasks in sequence. Code generation begins after human review and approval
  • GitHub Spec Kit: Standardizes the spec-to-plan-to-task flow via CLI + templates. Designed to work with existing editors and AI agents
  • Claude Code / Cursor: Leverage Plan Mode and rule files to build a workflow that generates specs first, then implements

The common principle across all of them: write specs before code.

Adopting SDD in Team Settings

Introducing Spec Reviews

Add "spec reviews" before code reviews:

Requirements → Spec review → Design → Spec review → Implementation → Code review

Catching misalignments at the spec stage dramatically reduces post-implementation rework. Since specs are Markdown files managed in Git, your existing pull-request-based review workflow applies directly.

Managing Specs in Git

.specs/
├── user-auth/
│   ├── requirement.md
│   ├── design.md
│   └── tasks.md
├── payment/
│   ├── requirement.md
│   ├── design.md
│   └── tasks.md
└── ...

Managing specs in the same repository as code prevents drift between specification and implementation. When implementation changes require spec updates, both can be handled in the same PR.

Standardization via Agent Skills

Spec-driven workflows can be standardized as Agent Skills. By defining the process as a skill, any team member can generate specs of consistent quality.

Our open-source agent-skills repository includes spec generation along with additional extensions:

  • spec-generator: Automatically generates specs (requirements, design docs, task lists)
  • spec-inspect: Automatically validates spec quality (detects ID inconsistencies, ambiguous language, design contradictions)
  • spec-to-issue: Automatically creates GitHub Issues from specs

While spec validation and issue creation aren't part of SDD's core definition, they're practical additions for running spec-driven development in a team setting. See the announcement post for details.

Summary

Spec-Driven Development shifts how we use AI agents — from "jump straight into code generation" to "write specs first, review them, then implement."

  • AI generates requirements, design docs, and task lists in a structured format
  • Humans review specs and request corrections where needed
  • Implementation proceeds based on agreed-upon specifications

Taking the age-old principle of "write specs before code" and making it practically achievable with the power of AI agents — that's the essence of Spec-Driven Development.

At ZenChAIne, we've added validation and issue-creation workflows on top of this spec-driven approach and published them as Agent Skills.

agent-skills をオープンソース公開 — AIエージェントによる仕様駆動開発の実践仕様駆動開発を AIエージェントのスキルとして実装した agent-skills をオープンソース公開しました。zench-aine.io
Agent Skills とは何か — AIエージェントに再利用可能なスキルを追加する仕組みSKILL.md フォーマットの仕組み、カスタムスラッシュコマンドとの違い、対応エージェント、自作方法を解説します。zench-aine.io