Specs that everyone
can work from.
Everyone writes specs — PMs, designers, engineers, AI agents. Same format. Same output. Every time.
As a user, I can reset my password by entering my email address.
User enters an email that isn't registered.
Why specs fail
Prose specs get misread.
By developers, clients, and AI agents.
With SPEC-R
The spec format
What a real spec looks like
The usual way
“Password reset feature. User enters email, gets a link, clicks it, resets password. Should expire — 24hrs maybe? Need to handle if email doesn't exist (just show success I think?). Invalidate old tokens probably. Dev can figure out the API. Sarah approved this on the call last Tuesday.”
With SPEC-R
As a user, I can reset my password by entering my email address.
Deterministic Blocks
AI writes in blocks.
Every time.
password-reset · feature_spec · 8 blocks
What the user needs to do, and why
As a user, I can reset my password by entering my email address, so I can regain access to my account.
Output constrained to valid schemas — parseable, diffable, executable.
The full cycle
Write. Review. Iterate. Lock.
Partial drafts are fine — structure is the point.
24h from creation or from last click?
Share via link. Comments per block.
Update and re-submit.
Locked. Your agent reads this.