The main point
Specs are useful because they are part of a loop. The loop is:- write intent
- build from it
- verify it
The basic idea
You write short spec files for the important parts of a codebase. Those specs say:- what the code should do
- what should stay true
- what tests or checks should prove it
- any approved exceptions
What makes it useful
Because the spec is in the repo:- humans can get up to speed faster
- AI has a clearer target
- tests and docs have a contract to line up with
- drift is easier to catch in CI
- the team has one place to point to when behavior changes
Who this is for
- TypeScript apps and libraries
- APIs
- services
- tools
- workflows
What it is not
- not a code generator
- not a replacement for tests
- not a replacement for design work
- not a magic way to remove ambiguity