Start with scope
Write the goal, non-goals, owner, dependencies, and the exact behavior that counts as done before implementation begins.
Read the complete guideA structured entry point for learning spec-first development: what to write first, which decisions belong in the spec, and which resources to use next.
Write the goal, non-goals, owner, dependencies, and the exact behavior that counts as done before implementation begins.
Read the complete guideTurn desired behavior into Given/When/Then criteria with observable output, failure paths, and release-blocking priority.
Open acceptance examplesUse a short checklist to decide whether the spec is ready for implementation, needs owner input, or should be split.
Use the review checklist| Stage | Example | Review 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 evidence | Test ID, log query, rollout threshold, rollback action | On-call knows what to watch and when to stop |
# 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:
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.
| Check | Pass condition |
|---|---|
| Scope | Goal, non-goals, owner, and excluded work are named. |
| Behavior | Main path and at least one failure path are testable. |
| Evidence | Tests, logs, metrics, or manual checks are attached before release. |
| Handoff | A new reviewer can understand the decision without asking who was in the meeting. |
| Update rule | Spec changes after review are recorded with date and owner. |
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.
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.
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.
| Decision | Bad default | Reviewable spec choice |
|---|---|---|
| Refund window | Let support decide case by case | Captured charges may be refunded for 90 days; exceptions require manager override |
| Duplicate request | Retry the call and hope provider deduplicates | Client idempotency key returns the same refund_id for replay |
| Provider timeout | Mark as failed immediately | Move to pending_provider_confirmation and block second refund |
| Release stop signal | Watch support queue manually | Stop rollout if duplicate refund attempts exceed 0.5% for 15 minutes |
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.
Start with the complete method: what belongs in the spec, what waits for implementation, and how to keep the document testable.
Read articleA 30-day rollout path for moving a team from verbal requirements to reviewable written decisions.
Read articleUse this before implementation to catch missing scope, edge cases, dependencies, and release evidence.
Read articleA concrete comparison that shows where edge cases, rollback, and test evidence appear in the spec-first path.
Read articleClarifies the difference between defining correctness and building the validation infrastructure that proves it.
Read articleShows how spec-first thinking applies before migrations, constraints, indexes, and rollout order.
Read articleConnects spec-first delivery with controlled AI coding workflows and reusable skill packets.
Read articleExplains how specs fit inside sprint work without turning planning into ceremony.
Read articleNo. The smallest useful version is one page: goal, non-goals, acceptance criteria, and release evidence. Small teams benefit because context gets lost faster.
Enough to stop the team from inventing behavior during implementation, testing, or release review. The amount should match risk, not ceremony.
Write the user goal, non-goals, acceptance criteria, open decisions, impacted interfaces, and release evidence. Leave implementation details flexible until the behavior is clear.
It adds a short planning step, but it usually removes more time from rework, unclear reviews, late QA disputes, and production fixes.
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.