Your first declaration
A two-line Anglish program that already contains the four ideas you need.
import AnglishCode from ’../../components/AnglishCode.astro’;
Here is a complete Anglish program:
@checkout:UI
>>> A web-based checkout form with shipping, billing, payment.
>>> The form inputs are bound to %checkoutForm.
That’s it. Three lines. Most of what makes Anglish Anglish is already in there.
What just happened
The first line is a header. It declares a space called checkout, of type :UI. The @ is the meta-character that says “this is a space.”
The next two lines start with >>>. These are vibe lines — natural-language sentences that describe the space’s intent: layout, validation, flow, behaviour. The >>> marker keeps them visually distinct from any code that follows, and prevents the AI (or the compiler) from confusing prose with new declarations.
Inside the prose, %checkoutForm is a data resource — a structured object that holds user input. It’s referenced by name; it will be defined elsewhere and resolved by the compiler.
The two ideas the example shows by itself:
- Header lines carry structure.
@,:UI, the namecheckout— these are the things the compiler looks at. - Vibe lines carry intent.
>>>followed by sentences. Read by humans, read by AIs, validated against the structure.
Why this isn’t just a comment
If you’ve used a system where prompts and code live in different places, the discipline to keep them in sync is yours. Anglish makes the prose part of the source. The compiler treats the vibe block as a first-class part of the declaration: it’s hashed, signed, and bound to the same identifier as the structural part. Edit the prose, change the build.
That’s the whole game in two lines: a small structural backbone, prose that travels with it, and a compiler that treats them as one thing.
In the next chapter we’ll add a second space and connect them.