Direct answer: the 2026 rule

Spec-driven development is a delivery method in which an approved specification is the controlling artifact for design, coding, testing, review, and release. The specification describes behavior, interfaces, data, security constraints, performance targets, and acceptance tests; AI tools then help generate, test, or analyze the implementation. The important rule is that a model prompt is not the specification. The durable, versioned, reviewed specification is. This distinction matters in 2026 because coding agents can produce plausible code quickly, but they cannot create organizational agreement or accept accountability for an ambiguous requirement.

Also worth reading: How Can AI Agent Cost Optimization Scale Large Development Workflows? · How Can an AI Roadmap Development Strategy Scale Multichannel Commerce Responsibly? · How Do Founders Distinguish Between a Startup Idea and a Formal Product Development Process in 2026?

The best practice is to use a spec-first workflow for work with durable behavior, external contracts, regulated risk, or several contributors. A useful target is to write enough specification to make acceptance decisions repeatable before implementation begins. For a typical feature, teams often spend 10% to 25% of the delivery time on specification and acceptance design. That is not a universal budget: a two-hour internal utility may need only a short design note, while a payment or health-data integration may require several days of formal review.

The method is not a promise that AI will remove ambiguity. A precise specification can still be wrong, incomplete, or impossible to implement at the available cost. The correct measure is therefore not lines generated per hour, but the rate at which the team finds contradictions before production and the rate at which accepted requirements remain stable through release. A strong process makes the cost of changing a decision visible instead of hiding it inside a pull request.

What a specification should contain

A practical specification has a stable identity, a version, an owner, and a status such as proposed, approved, superseded, or rejected. It states the problem and the non-goals, names the actors and systems involved, and records the assumptions that would make the proposal invalid. It also identifies the evidence required for approval: a contract test, a threat model, a performance result, a migration rehearsal, or a user acceptance scenario. Without these fields, a document can look authoritative while still leaving the hardest decisions to the first engineer who touches the code.

For software, the specification should define public interfaces, request and response shapes, error semantics, state transitions, data retention, authorization boundaries, and observability events. It should separate normative language from explanatory material. Statements using must, must not, or should are testable commitments; background examples and rationale are not. A one-page API contract can be enough for a narrow change, but a platform boundary usually needs a longer document with compatibility rules and a rollback plan.

For AI-generated work, add a model boundary section that says which inputs may be sent to an AI service, which outputs are advisory, and which decisions require human approval. Record the model or agent version, the prompt or tool configuration, the retrieval sources, and the date when the result was produced. This is not paperwork for its own sake. It gives the team a way to reproduce a result when a model changes and prevents a generated implementation from silently becoming the source of truth.

How and why it works with AI

Spec-driven development works with AI because it gives an agent a bounded task and a measurable exit condition. A useful agent instruction is to produce code only after it can map each requirement to a test or a documented exception. The agent should report unresolved references, conflicting acceptance criteria, and assumptions instead of filling gaps with a convenient default. This turns the specification into a control surface rather than a decorative preface to a coding session.

The workflow is most effective when generation, checking, and approval are separate activities. One agent can draft an implementation from the approved specification, another can run tests or inspect the diff, and a human or designated reviewer can accept the result. The same person should not casually approve a large generated change without independent verification, especially when the change affects security, billing, data deletion, or external compatibility. Separation of duties is a risk control, not a judgment about individual competence.

The reason to use this approach is economic. Defects found after release can require code changes, migration work, customer communication, and incident response; the cost rises sharply when the defect crosses an interface or changes persisted data. A specification does not prevent every defect, but it moves many questions from production support into a cheaper review stage. The tradeoff is delay: over-specifying a short-lived experiment can cost more than writing and discarding a small prototype.

A practical workflow and measurable gates

Start by framing the change in a short problem statement and naming the decision owner. Next, write the smallest specification that can support an acceptance decision, including the out-of-scope cases and the evidence required to close the work. For a feature expected to take one to three engineering weeks, a one-to-five-page specification is often a reasonable starting range. The page count is less important than whether another engineer can predict the expected behavior without asking the author.

Before coding, run a specification review with engineering, product, security, operations, and the domain owner when the risk justifies it. Convert each normative requirement into an executable test, a contract fixture, or a documented manual check. A practical acceptance target for a new feature is 100% coverage of stated acceptance criteria, not 100% coverage of every implementation branch. The team should also define a rollback or feature-flag path before enabling a behavior for users.

During implementation, require traceability from each requirement to its code and verification result. A generated change should include the agent record and a concise explanation of any deviation from the specification. At review, inspect the diff against the specification rather than treating a passing test suite as proof of fitness; tests can encode the same mistaken assumption as the code. Release only when the acceptance evidence is complete, the unresolved exceptions are approved, and the operational owner can support the behavior.

After release, compare the predicted and observed outcomes. Record defects, requirement changes, and model failures in the same issue or traceability system so the next specification improves. Useful measures include the percentage of acceptance criteria tested before merge, the number of specification changes after coding starts, the escaped-defect rate, and the time from review comment to resolution. These measures should guide process changes, not become a quota for generating documents.

Compare the main delivery approaches

Spec-driven development sits between free-form coding and test-driven development. It is not a replacement for unit tests, and it is not always the cheapest way to explore an unknown product idea. The right choice depends on the cost of being wrong, the number of independent contributors, and the need to reproduce a decision months later.

FeatureSpec-driven developmentVibe codingTest-driven development
Primary artifactVersioned requirements and acceptance evidenceInteractive prompt and generated resultFailing and passing tests
Best fitContracts, platforms, regulated or multi-team workShort prototypes and personal experimentsAlgorithms and behavior with clear test oracles
Main strengthShared decisions and reproducible reviewFast exploration and low ceremonyLocal feedback and regression protection
Main weaknessUpfront review time and document maintenanceWeak traceability and unstable resultsTests can miss the intended product behavior
Typical overheadAbout 10% to 25% for a normal featureMinutes to hours, often hidden reworkTest authoring throughout implementation
Vibe coding is useful when the cost of a wrong answer is low and the team wants to learn by making something. It becomes risky when the output controls money, personal data, or a public interface, because a prompt may not state the constraints that a future maintainer needs. Test-driven development remains valuable inside a spec-driven project: the specification defines the intended behavior, while tests provide fast mechanical feedback about the implementation. A team can use all three methods, but it should not call an unreviewed prompt a specification.

Common mistakes and failure modes

The most common mistake is treating the first generated draft as an approved specification. A model can produce polished language, complete-looking schemas, and confident examples while omitting a failure mode that the domain owner knows immediately. The cure is a named owner, an explicit review status, and a rule that generated text remains proposed until a person checks it against the actual system and business constraints.

A second mistake is writing a specification so broad that it cannot be tested. Requirements such as make the system fast, secure, or user-friendly do not tell an agent when to stop. Replace them with measurable conditions, such as p95 latency below 300 milliseconds for a defined workload, no unauthenticated access to a named endpoint, or completion of a named task within two minutes for a defined user profile. A measurable target can still be wrong, but it can be debated and revised.

Teams also fail when they freeze the specification after new evidence appears. A change is not a process failure if the market, dependency, or threat model changed; hiding the change is the failure. Require a change note that states the reason, affected requirements, migration impact, and approval. Another frequent error is using AI on production data or proprietary code without checking retention, access, and licensing terms. The specification should state the data boundary before the agent receives the task.

Finally, do not confuse traceability with bureaucracy. A tiny change may need one issue, one acceptance test, and one reviewer; a payment release may need a threat model, a migration rehearsal, and several approvers. The process should scale with consequence. If the team spends more time maintaining a document than it saves in avoided rework, reduce the ceremony or use a lighter method.

When to act in 2026

Use spec-driven development when a change crosses an API boundary, changes persisted data, affects authorization, creates a financial obligation, or will be maintained by more than one team. It is also appropriate when an external customer, auditor, or regulator may ask why a behavior exists. In these cases, the specification is a coordination and evidence tool, not a ceremonial artifact. A practical trigger is a feature with at least two independent consumers, a release risk above the team’s normal threshold, or an expected implementation period longer than one sprint.

Do not use the full method for every task. A typo fix, a temporary script, or a throwaway prototype may need only a short issue description and a focused test. When requirements are genuinely unknown, spend a small amount of time on a prototype and write the specification after the team has evidence. The decision should be revisited at the point where the prototype becomes a product commitment.

As of 12 September 2026, the market offers several kinds of support. GitHub’s Spec-Kit is an open-source toolkit intended to help teams create specification artifacts for AI coding agents. Anthropic’s guidance on long-running application development emphasizes durable design context and careful handoffs. IBM’s AI-DLC material describes a lifecycle view in which governance and operations continue after code generation. These resources can shorten setup, but none removes the need for a domain owner and an acceptance decision.

Cost, pricing, and operating model

The direct tooling cost can be zero when a team uses open-source specifications, version control, and its existing issue tracker. GitHub Spec-Kit is open source, so the license cost is normally zero, although hosting, support, and integration still consume staff time. Commercial AI coding products commonly use per-user subscriptions or usage-based pricing, and prices change; budget from the vendor’s current quote rather than an old article. A team should also price model calls, private repositories, test environments, and security review separately.

The larger cost is human time. A one-to-five-page specification and review cycle may require four to sixteen person-hours for a normal feature, plus the time needed to create tests and resolve comments. For a feature expected to take 40 to 120 engineering hours, spending four to twenty hours on specification is often defensible if it prevents one late integration defect. The calculation is weaker for a one-day task, where a 30-minute design note may be enough.

AI usage has a second cost layer. Estimate the number of agent runs, the size of context sent to each run, and the cost of storing or reviewing the output. A useful operating target is to cap unattended agent work at a defined budget, such as 10% of the feature’s estimated engineering hours, until the team has evidence that the generated work is reliable. That threshold is a starting policy, not a universal rule. Track actual rework, escaped defects, and review time for eight to twelve weeks before deciding whether the process pays for itself.

A realistic 30-60-90 day adoption plan

Begin with one bounded service or feature and select two or three completed changes as baselines. Measure the current lead time, review comments, escaped defects, and rework before changing the process. During the first 30 days, create a template with owner, version, requirements, acceptance evidence, data boundary, and rollback fields. Keep the template short enough that engineers will use it.

Between days 31 and 60, connect the specification to the issue tracker, repository, test runner, and review process. Require every acceptance criterion to have a test or an approved manual check, and require generated changes to carry their model and prompt record. Review the first ten changes as a group to find missing fields and excessive ceremony. Adjust the template based on actual defects rather than opinions about ideal documentation.

Between days 61 and 90, expand only if the pilot shows fewer late requirement surprises or lower rework. Publish a small catalog of approved patterns for APIs, data migrations, authentication, and observability. Set a quarterly review date for the process and for the AI services in use. If the team cannot show a reduction in escaped defects, review churn, or integration time, simplify the workflow instead of adding more approvals. The goal is a repeatable decision record, not a documentation program with no measurable benefit.