Concepts
The drift problem
A product is described in three places at once: a spec or a doc, a set of mockups, and the code. Each is edited by different people at different times, so they drift. The spec says one thing, the mockups show another, the code does a third. Reviewers cannot tell which is current, and an AI that generates screens only adds prettier artifacts with no source of truth behind them.
One source of truth, checked
Foundry collapses the three into one. The spec is the source of truth. The screens are rendered from it, not authored beside it. And the spec is verified by machine on every change, so a broken transition, an unreachable screen, or a sheet with no way out does not pass. Coherence is enforced, not hoped for.
That is the whole bet: beauty is a commodity, coherence is the moat. Anyone can generate a good looking screen. A spec that provably holds together, and screens that provably match it, is the hard part.
The smiths
| Piece | Role |
|---|---|
specsmith |
Parse the spec/ folder into a typed model and run the coherence checks. |
wiresmith |
Turn the spec and its screen files into an interactive, pannable canvas. |
foundry |
The CLI that ties the loop together: init, check, serve, build. |
Each is a small, single purpose package. specsmith never renders, wiresmith never
judges, and foundry owns no rules of its own.
Boundaries
Foundry checks structure and coherence, not taste. Today that means five rules: every edge lands on something real, every overlay has a way out, the navigation points at flows that exist, no screen is stranded, and no flow file is missing from the index.
It does not decide whether your copy is good or your layout is pretty, and it does not yet verify that a list declares its empty state, that forms cover their errors, or that destructive actions confirm. Those stay your job. The rule library grows over time, and the five checks that run today are listed in Spec format.
Next
Spec format is the reference for the files and the checks. Wireframes covers what the renderer reads and what the canvas shows you.