AIO APEX

AI Engineering Teams Are Ditching Vibe Coding for Specs

Share:
AI Engineering Teams Are Ditching Vibe Coding for Specs

In the first quarter of 2026, several engineering teams that had spent the previous year "vibe coding" — loosely prompting an AI agent and iterating until something worked — quietly reversed course. The reason wasn't that the agents got worse. It's that unstructured prompting stopped scaling once agents were trusted with multi-file changes and autonomous pull requests. The fix teams converged on is spec-driven development (SDD): writing a structured specification before an agent ever touches code, and treating that spec — not the resulting diff — as the source of truth.

This isn't a return to waterfall-style requirements documents nobody reads. It's a direct response to a specific failure mode: confident, plausible code that quietly solves the wrong problem because nobody grounded the agent's work in an actual definition of "done." By mid-2026, every major coding-agent vendor — GitHub, AWS, Anthropic's Claude Code ecosystem, and a wave of open-source frameworks — has shipped its own version of spec-first workflows, and the pattern has moved from "interesting experiment" to default practice on production teams.

Why Vibe Coding Breaks Down at Scale

A single-file bug fix or a small script tolerates loose prompting because the blast radius is small and a human reviews the whole diff in seconds. Multi-file features don't work that way. An agent asked to "add subscription billing" has to infer database schema decisions, error-handling conventions, naming patterns, and edge cases that were never stated — and it will infer confidently, even when wrong. The failure doesn't show up as a crash; it shows up three sprints later as architectural drift, duplicated logic, and a codebase that no longer matches anyone's mental model.

The commercial evidence for this is now public. GitHub has reported that teams using its Spec Kit toolkit on internal projects ship features with roughly an order-of-magnitude fewer "regenerate from scratch" cycles than teams using ad hoc prompting. AWS has published customer cases where features estimated at 40 hours of engineering time were delivered in under 8 hours of human effort once the work was authored as a spec first, with the agent handling the mechanical implementation against clear acceptance criteria.

The Tools Making Specs the Default

Five frameworks now define the spec-driven landscape, and they take genuinely different approaches:

  • GitHub Spec Kit — an open-source, MIT-licensed CLI with more than 93,000 GitHub stars (v0.8.7 shipped May 2026). Every Spec Kit project starts with a "constitution": a markdown file of immutable, project-wide principles — testing standards, architectural constraints, naming conventions — that persists across every agent session as a standing contract between developer and agent.
  • AWS Kiro — a VS Code fork that reached broad global availability in May 2026 and puts specs at the center of the IDE itself. Kiro enforces a strict pipeline: requirements.md (user stories with acceptance criteria written in EARS notation — "WHEN [condition] THE SYSTEM SHALL [behavior]," a format originally developed at Rolls-Royce for safety-critical systems) → design.md (architecture and sequence diagrams) → tasks.md (discrete, trackable implementation steps) → code.
  • BMAD-METHOD — an MIT-licensed framework (v6.6.0, April 2026; 46,700+ stars) that orchestrates twelve-plus specialized agent roles — product manager, architect, UX designer, developer, QA, scrum master — each reading the previous agent's document and producing its own, creating a traceable chain from requirement to delivered code.
  • Tessl — installs as "tiles" into a project's .tessl/ directory and works with any MCP-compatible agent, including Claude Code and Cursor. Its agents are instructed to ask clarifying questions first, write the spec, wait for explicit developer approval, and only then implement — with the spec persisting in the repo as long-term memory and an audit trail as the app evolves.
  • OpenSpec — the lightest-weight option: free, MIT-licensed, lives entirely in the repo, needs no API key or MCP server. It uses optional Given/When/Then scenarios and a distinctive delta-tracking model (ADDED / MODIFIED / REMOVED) built specifically for evolving an existing codebase rather than greenfield builds.

Academic work is starting to catch up with the practice: a 2026 process-taxonomy paper comparing frameworks for AI software development agents found that the common thread across all of them is separating "what to build" from "how to build it" into distinct, agent-readable artifacts — exactly the discipline vibe coding skips.

A Bad Prompt vs. a Real Spec

The difference is easiest to see side by side. Here's a typical vibe-coding prompt for a real feature:

Bad: "Add a way for users to export their data as a CSV file, make it look nice."

Handed to an agent with multi-file write access, that prompt leaves every real decision unmade: which fields export, how nested or related data flattens, what happens with 500,000-row exports, whether the endpoint needs auth scoping, what the file name and encoding should be. The agent will pick answers — and pick them differently on every regeneration.

Here's the same feature as a spec, in the EARS-style format Kiro and Spec Kit both encourage:

Good:

  • WHEN a user with an active account clicks "Export Data" THE SYSTEM SHALL generate a CSV containing the columns: id, email, created_at, last_login, subscription_tier.
  • WHEN the export contains more than 50,000 rows THE SYSTEM SHALL stream the response instead of buffering it in memory.
  • WHEN a user without export permission requests the endpoint THE SYSTEM SHALL return a 403 with an error body matching the existing API error schema.
  • THE SYSTEM SHALL name the file export-{userId}-{ISO8601 date}.csv and encode it as UTF-8 with BOM for Excel compatibility.

Nothing here is exotic engineering — it's the same thinking a competent engineer would do in a design review. The difference is that it's written down before the agent starts, so the agent implements against explicit criteria instead of improvising them, and a reviewer can check the diff against the spec instead of reverse-engineering intent from the code.

What a Good Spec Needs to Include

Regardless of which framework a team adopts, the specs that actually hold up in agent-driven workflows share a common shape:

  • Explicit scope boundaries — what the feature does NOT do, not just what it does.
  • Testable acceptance criteria — written as WHEN/THEN or Given/When/Then statements an agent (or a test suite) can verify mechanically, not prose a human has to interpret.
  • Data shape and edge cases — schema, nullability, size limits, and what happens at the boundaries (empty input, max input, concurrent access).
  • Non-functional constraints — performance budgets, auth/permission requirements, and error-handling conventions that match the existing codebase.
  • A persistent "constitution" or steering doc — the project-wide rules (testing standards, architectural patterns, banned dependencies) that shouldn't have to be repeated in every spec.
  • An explicit human approval gate — the point where a developer signs off on the spec before the agent is allowed to generate code, not after.

Takeaways

Teams adopting AI coding agents in 2026 should treat the spec, not the prompt, as the unit of engineering work. Concretely: pick one spec framework (OpenSpec for a low-friction start on an existing codebase, Spec Kit or Kiro if the team wants an enforced requirements-design-tasks pipeline) and require every multi-file agent task to start from a written spec with testable acceptance criteria. Keep a standing "constitution" document with the architectural and style rules that apply to every feature, so specs only need to cover what's actually new. And build the review habit around checking the code against the spec's acceptance criteria — not re-reading the entire diff line by line, which is the exact bottleneck spec-driven development is designed to remove.

Share:
AI Engineering Teams Are Ditching Vibe Coding for Specs | AIO APEX