Foundations path

Spec-First Development Hub

A structured entry point for learning spec-first development: what to write first, which decisions belong in the spec, and which resources to use next.

Last updated: May 6, 2026

Start Here

Start with scope

Write the goal, non-goals, owner, dependencies, and the exact behavior that counts as done before implementation begins.

Read the complete guide

Make acceptance testable

Turn desired behavior into Given/When/Then criteria with observable output, failure paths, and release-blocking priority.

Open acceptance examples

Review before coding

Use a short checklist to decide whether the spec is ready for implementation, needs owner input, or should be split.

Use the review checklist

Decision Matrix

StageExampleReview value
Vague ticket“User can refund an order.”Missing idempotency, time limit, event behavior, rollback owner
Reviewable spec“Refund a captured charge within 90 days, idempotent by client key, emit one event.”QA can test replay, old charges, event duplication, and audit log
Release evidenceTest ID, log query, rollout threshold, rollback actionOn-call knows what to watch and when to stop

Copy-Ready Block

# Spec-first starter packet

## Goal
- What behavior must change for the user or system?

## Non-goals
- What will not change in this release?

## Acceptance criteria
- Given ...
  When ...
  Then ...

## Evidence
- Test:
- Metric or log:
- Rollback signal:

How to Use This Hub in a Real Sprint

Use this hub at the moment a ticket stops being obvious. That usually happens when a feature touches money, data integrity, permissions, API behavior, or a release path that would be painful to unwind. The goal is not to write a large document. The goal is to identify the few decisions that would otherwise be invented during implementation.

A practical sprint workflow is simple: pick one ticket, open the starter block, fill the non-goals first, then write only the acceptance criteria that would change how an engineer designs the solution. If the criteria do not change implementation or testing, they are probably decorative. Cut them and spend the time on failure paths, rollback, and the person who owns the decision.

During review, ask each role for a different kind of objection. Product should reject unclear scope. Engineering should reject hidden dependencies. QA should reject criteria with no fixture or observable result. Operations should reject rollout plans without a stop signal. When every role can reject something specific, the spec is doing work.

Review Rubric

CheckPass condition
ScopeGoal, non-goals, owner, and excluded work are named.
BehaviorMain path and at least one failure path are testable.
EvidenceTests, logs, metrics, or manual checks are attached before release.
HandoffA new reviewer can understand the decision without asking who was in the meeting.
Update ruleSpec changes after review are recorded with date and owner.

Failure Modes to Watch

  • The spec describes the feature but does not decide anything.
  • The non-goals are so broad that they cannot stop scope creep.
  • Acceptance criteria repeat the happy path and skip duplicate, timeout, permission, or rollback cases.
  • Review approval is treated as proof even though no runtime evidence exists.

Owner Handoff

The handoff artifact should be short enough to live in the ticket but complete enough to survive a new engineer joining mid-sprint. Link the final spec from the issue, PR, and release note so future changes can find the original decision path.

Example Sprint Use

A common example is a refund workflow that starts as a single sentence in a planning ticket. The spec-first pass should not begin by choosing a framework or database shape. It should begin by deciding refund window, idempotency behavior, event emission, support override, audit logging, and rollback when the payment provider times out. Once those decisions are visible, implementation becomes smaller because the team no longer debates policy while reading a diff.

The author should attach one rejected alternative. For the refund example, that might be “allow refunds older than 90 days with manager approval.” Recording why it was rejected protects future reviewers from reopening the same argument. The release note should then link the spec, the acceptance tests, and the metric that shows duplicate refund attempts stayed at zero during rollout.

Real Scenario Breakdown: Refund Workflow

A refund workflow is useful because it exposes the full spec-first chain: product policy, API behavior, support operations, event delivery, and rollback all meet in one small feature.

DecisionBad defaultReviewable spec choice
Refund windowLet support decide case by caseCaptured charges may be refunded for 90 days; exceptions require manager override
Duplicate requestRetry the call and hope provider deduplicatesClient idempotency key returns the same refund_id for replay
Provider timeoutMark as failed immediatelyMove to pending_provider_confirmation and block second refund
Release stop signalWatch support queue manuallyStop rollout if duplicate refund attempts exceed 0.5% for 15 minutes

Quick Audit Checklist

Before treating this hub as complete for a real team, run a short audit. First, confirm the reader can leave the page with one artifact copied into their workflow. Second, confirm every linked article answers a different question instead of repeating the same definition. Third, confirm the page names a failure mode that would matter in production, not only during planning.

The most useful hubs behave like workbenches. A reader should be able to open the page, choose the relevant path, copy the block, and know what evidence to attach before review. If a hub only explains the topic, it becomes another article. If it helps the reader decide what to do next, it becomes a resource.

Core and Advanced Articles

What Is Spec-First Development?

Start with the complete method: what belongs in the spec, what waits for implementation, and how to keep the document testable.

Read article

How to Adopt Spec-First in a Team

A 30-day rollout path for moving a team from verbal requirements to reviewable written decisions.

Read article

Spec Review Checklist Before Coding

Use this before implementation to catch missing scope, edge cases, dependencies, and release evidence.

Read article

Same Feature: Vibe vs Spec Coding

A concrete comparison that shows where edge cases, rollback, and test evidence appear in the spec-first path.

Read article

Harness Engineering vs Spec-First

Clarifies the difference between defining correctness and building the validation infrastructure that proves it.

Read article

Database Schema Specs Before Migrations

Shows how spec-first thinking applies before migrations, constraints, indexes, and rollout order.

Read article

Spec Skills and Spec-First Delivery

Connects spec-first delivery with controlled AI coding workflows and reusable skill packets.

Read article

Spec-First vs Agile

Explains how specs fit inside sprint work without turning planning into ceremony.

Read article

FAQ

Is this only for large teams?

No. The smallest useful version is one page: goal, non-goals, acceptance criteria, and release evidence. Small teams benefit because context gets lost faster.

How much spec is enough?

Enough to stop the team from inventing behavior during implementation, testing, or release review. The amount should match risk, not ceremony.

What should be written before coding starts?

Write the user goal, non-goals, acceptance criteria, open decisions, impacted interfaces, and release evidence. Leave implementation details flexible until the behavior is clear.

Does spec-first slow delivery down?

It adds a short planning step, but it usually removes more time from rework, unclear reviews, late QA disputes, and production fixes.

How do we keep specs from going stale?

Treat the spec as the review source. If the implementation changes behavior, update the spec in the same pull request and keep the evidence tied to that version.

When you need to use this today, open a template first, then come back to this hub for review and evidence checks.