Skip to content

Feature specification template

Problem and outcome

Identify the user, their problem, current workaround and observable success. State scope and non-goals. Replace this guidance with concrete requirements; the template itself does not establish implemented behaviour.

Design contract

Link the design source. Name flows and screen/state IDs. Specify loading, empty, error, permission-denied, conflict and recovery states. Define mobile/desktop behaviour, keyboard/focus operation and accessibility.

Behaviour and data contract

State prerequisites, actions, permissions, inputs/outputs, validation, canonical files, revisions, side effects, cancellation, concurrency and recovery. Separate a preview from a consequential action. State what never happens automatically.

Acceptance criteria

Use stable IDs, for example AC-1. For each, provide Given/When/Then behaviour, the automated check where possible, and the manual evidence still required. Cover refusal and recovery paths, not only success.

Delivery and user documentation

Link plan tasks and dependencies, the how-to/reference pages, implementation and test evidence. Record limitations and rollout/rollback compatibility. Update feature availability only after the stated evidence exists; a local implementation is not a production release.

Decisions and open questions

Record decisions or link ADRs. Make unresolved questions explicit. Do not silently treat a proposal as accepted.