π The translation table
π§ The three habit-breakers
Most confusion is one of these three, so name them up front:- No expressions. You cannot compute, concatenate, or compare beyond
eq/ne/in/truthy. If youβre missing a value, the workflow node sends it. This feels limiting for an hour and then becomes the feature: definitions stay verifiable, portable, and safe for an AI to write. - No invented vocabulary. Primitives are closed. Style keys are closed (the cross-platform contract β an invented key renders nowhere). Style values are token names. The linter and schema hold all three lines; when you hit a wall, the answer is composition or a token, not a new word.
- No plumbing. State transport, streaming, voice, reconnection, turn identity β all locked inside the SDK and the MCP standard. You write what things look like and which keys they read; everything that moves data is someone elseβs (solved) problem.
Why itβs worth it: the same file you write in 01 β Quick Start is the file a Flutter user renders natively. There is no βport to mobileβ project later β thatβs the entire bet of the platform. Next: 03 β Components.

