SEML · Reference

SEML — Data Properties

A frontmatter format for describing the facts about a document — who wrote it, when, what it's about, what it contains. Designed to be read and written by people, not just machines.

The idea

A property is a name with a value. You have lots of properties; you write one per line. That is the whole format, almost.

title: Spring Collection Catalogue
author: Maeve Ryan
published: 2026-04-15

Values come after a colon and stay on the same line. Names can be anything readable — spaces are fine, punctuation is fine — as long as they don’t contain a colon or a slash.

Lists

Some properties are lists rather than single values. Mark the name with a trailing slash, then write the items one per line with a dash:

tags/
- catalogue
- spring 2026
- womenswear

The slash means “children follow, one per line.” That same rule will do more work in a moment.

Shared names

When several properties share the beginning of their name, you can write the shared part once and list the rest underneath. This is purely a writing convenience — it saves repetition and gathers related facts together.

Written out:

client/name: Orla Fitzgerald
client/email: orla\@example.ie
client/phone: +353 1 555 0134

Grouped:

client/
name: Orla Fitzgerald
email: orla\@example.ie
phone: +353 1 555 0134

Both forms mean exactly the same thing. The grouped form is usually easier to read once you have three or more properties sharing a prefix.

You can group more than one level deep. invoices/2025/q3/total can become a small tree, or stay flat, or sit somewhere in between — whatever reads most clearly.

Mixing values and lists

A shared prefix can hold both ordinary properties and list items. Properties come first, then the list:

archived invoices/
role: long-term archive
retention: 7 years
- 2025-q3.pdf
- 2025-q2.pdf
- 2025-q1.pdf

Notice that list items sit at the same depth as the folder name itself, while ordinary properties sit one step further in. This keeps file names visually aligned under the thing that contains them.

Why this layout. Two clues tell you what any line is. A trailing / means “more lines belong to this one.” A colon means “the value is right here.” Everything else follows from those two signs.

Breathing room

Long blocks are easier to read when they have rhythm. SEML gives you two ways to group visually.

A blank line

Groups related properties within the same block. The reader’s eye takes a small pause; nothing changes in meaning.

contact/
name: Maeve Ryan
role: owner

email: maeve\@studio.ie
phone: +353 1 555 0142

Two dashes on their own line

A stronger break — a section divider between whole blocks of information. Use it when you’re switching subject, not just taking a breath.

title: Spring Collection Catalogue
author: Maeve Ryan

--

client/
name: Orla Fitzgerald
company: Fitzgerald & Sons

Values from elsewhere

Sometimes the value you want isn’t a simple word or number — it’s a whole structure you’ve defined somewhere else, or a piece of another file. SEML has two ways to point at it.

A reference to another property

Curly braces let you borrow a value that was defined earlier. Useful when the same information appears in several places and you want to keep it in one spot.

primary contact/
name: Orla Fitzgerald
email: orla\@example.ie

invoice recipient: {primary contact}

A reference to another file

The @ symbol points at something stored elsewhere. After the filename, you can drill down into it using the same slash-separated names you’d write inside that file.

price packages: \@business/photography/rates.sm/fixed/packages

Read that as: from the file rates.sm, take the packages list found under fixed. This is how you reuse a shared list of services, a standard contact block, a catalogue of tags — anything you’d rather define once.

How deep to group

You choose how much to group. The same information can be written as one deeply nested tree or as several shallow blocks separated by blank lines, and both are valid. Pick whichever is easier to read at a glance.

Deep:

accounting/
invoices/
2025/
retention: 7 years
- q3.pdf
- q2.pdf

Shallow:

accounting/invoices/2025/
retention: 7 years
- q3.pdf
- q2.pdf

Two rules of thumb. First, keep trees shallow — two levels of nesting is comfortable, three is usually the ceiling before a reader starts losing track. Second, flatten when a prefix has only one child; there’s nothing to be gained by making the reader descend a level that only contains one thing.

Automatic formatting. If you’d rather not make these choices by hand, SEML’s pretty-printer offers presets — from “leave my formatting alone” to “always flatten everything” and several balanced options in between. The default aims for at most two levels of grouping, which fits almost all real frontmatter.

A full example

Everything you’ve seen, in one place.

title: Spring Collection Catalogue
author: Maeve Ryan
published: 2026-04-15
status: draft

--

client/
name: Orla Fitzgerald
company: Fitzgerald & Sons
email: orla\@example.ie

tags/
- catalogue
- spring 2026
- womenswear

--

attachments/
role: printable assets
- cover.pdf
- pricing-sheet.pdf

price packages: \@business/rates.sm/fixed/packages

SEML data properties — reference. For writing guides and examples, see the companion guide.