Nine formats
A format is a way of unfolding the same model: a story is a sequence of scenes. A scene is a slide, a shot, a panel, a page, a section, a card. Everything else — navigation, pagination, timing, layout — belongs to the format, never to the source.
The set, and the reason for each
| Format | A scene is… | It exists because | Today |
|---|---|---|---|
deck | a slide | the most common reason people leave their editor | shipped |
motion | a shot | a launch video repeats the deck, word for word, in another tool | shipped |
docs | a page | the documentation is already Markdown; it should accept the same blocks | shipped |
report | a section | numbers in a report come from data, and should not be retyped | specified |
toon | a panel | a vertical scroll episode is a story with scenes, and translations drift fastest | specified |
book | a chapter | long-form print needs pagination, not slides | specified |
roadmap | a milestone | a public roadmap is a story that changes; it should be generated, not maintained | specified |
calendar | an event | dates are data, and an .ics nobody has to update by hand is worth having | specified |
stories | a full-screen card | social cards are the shortest form of the same content, and the most duplicated | specified |
Three are real; six are written down in enough detail to be built, and not built. That distinction is kept visible everywhere, because a vision that quietly claims shipped features is a sales page.
Bridges are the point
If a format is a function of a story, two functions can take the same argument. That is what makes the set worth more than the sum:
- a deck becomes a film — the same scenes, timed instead of clicked;
- a report becomes a deck — the sections that carry a number become slides;
- an episode becomes a vertical film, a roadmap becomes a calendar, a story becomes a set of cards.
A bridge is not an export. An export produces a file you then maintain separately; a bridge re-renders the same source, so the two outputs cannot disagree.
What earns a tenth format
Not "it would be nice". A format joins the set when it answers yes to all four:
- Its content is already a sequence of scenes. If it is not, it is a block or a tool, not a
format — which is how
:::form,::mapand the glossary ended up as blocks usable everywhere rather than formats of their own. - Someone is currently duplicating content to produce it. The whole premise is removing a copy; a format nobody duplicates into saves nothing.
- It shares the model. No new
kind, no parallel schema, no second type system. - It can be rendered without the tool being present. A file you can keep.
Two candidates passed recently and became formats scheduled after 1.0: a glossary and directory format, and an atlas — a geographic story where a scene is a view of a map. Three others passed as blocks instead.
The one that is not a format
Documentation is rendered by the site framework (@recit/site), not by a Récit format package. That
is deliberate: documentation sites are a solved problem, and reimplementing one to own the whole
stack would be the exact kind of duplication this project exists to remove.