For agents, on top of README.md, which they read first.
preview::Preview::tagsrefuses what a scraper would reject. Do not add a way around it (anew_unchecked, a path that skipsOrigin): a bad card that cannot be built is the point. A new constraint is a newRefusedand a test.preview::requiredis held to whattagswrites by a test. A tag added to one and not the other fails it.card::Chromeis lmjtfy's 600 by 315 sheet times a whole unit. Keep its measures lmjtfy's, so a site's card and lmjtfy'spackages/cardagree.wire::jsonmay add whitespace and nothing else: no reordered keys, no dropped or summarised fields (lmjtfy's rule). Its test parses the printed text back.flow::spinedraws only the rows it is given. A site builds them from the code it describes; do not give it a way to add decoration that is not a row.shell::Attr::newpanics on a name that could end the tag. That is deliberate: names are a site's constants and the failure is at the first render.