Writing a Weave meeting pattern (v1)

Write a meeting plan as a plain text file. Each phase of the meeting is a heading. After the heading you can add a short note in HTML comment style to set a timer or mark a phase as round-robin. That is the whole format.

Version 1 of the format is locked in — any file you write today will keep working as Weave grows. New features will arrive as new versions, side-by-side.

What goes in a pattern

The header at the top

Every pattern starts with a small header that tells Weave a few things about the file — the format version, an optional title, and an optional one-line description. The header sits between two lines of three dashes (---). Inside, each line is a label followed by a colon and a value, one per line.

What it looks like

---
weave-script-version: 1
title: Sample meeting
description: A short one-liner about the meeting
---

Examples

The bare minimum
---
weave-script-version: 1
---

# Welcome

A valid pattern with no title or description.

With a title and a custom label
---
weave-script-version: 1
title: Stand-up
owner: andrew
---

# Hi

The meeting is titled "Stand-up" and an extra "owner" label is remembered for later.

Good to know

  • The weave-script-version line is required, and it must be the number 1.
  • title and description are optional but recommended.
  • You can add any other labels you like — Weave keeps them with the pattern so other tools can use them later.
  • Keep each value on a single line. The header is not full YAML; lists and nested values are not supported.

A heading for each phase

Each phase of the meeting starts with a heading: a #, a space, and then the name of the phase. You can also add a short note on the same line, wrapped in <!-- and -->, to set things like the timer length. Anything before or after that note is treated as part of the phase name.

What it looks like

# Phase name
# Phase name <!-- duration: 2m -->
# Phase name <!-- duration: 2m, per-participant: true -->

Examples

# Welcome <!-- duration: 2m -->

A two-minute phase called "Welcome".

# Quiet reflection

A phase called "Quiet reflection" with no timer — the host moves the meeting forward when it feels right.

Good to know

  • Only top-level # headings start a new phase. You can still use ## or ### inside the body for sub-sections.
  • Anything written before the first # heading is ignored, so authors usually go straight from the header into the first phase.
  • If you add more than one note on a heading line, only the first one is read — anything after it becomes part of the phase name.

What you write under each heading

Anything you write after a phase heading, up until the next heading, is the body of that phase. This is where you put the instructions, prompts, or talking points for the phase. You can use as many paragraphs as you like, and you can add light formatting to make the body easier to read.

What it looks like

# Heading

What happens during this phase.
More than one paragraph is fine.

Examples

Bold and italic
Wrap a few words in **two asterisks** to make them bold, or in _underscores_ to make them italic.

The words between the asterisks show in bold, and the words between the underscores show in italic.

A bulleted list
- Welcome everyone
- Share the goal
- Set the timer

A bulleted list with three points.

A numbered list
1. Open the floor
2. Go round the room
3. Gather the threads

A numbered list that counts each step in order.

Good to know

  • Extra blank lines at the very start or very end of a phase are tidied away; blank lines between paragraphs are kept.
  • You can leave the body empty if the heading itself says everything you need.
  • Start a line with - for a bulleted point, or with a number and a dot (1.) for a numbered one. Keep the lines together with no blank line between them and Weave reads them as one list.
  • For bold, put two asterisks on each side of the words. For italic, put a single underscore on each side. A single asterisk on each side works for italic too.

Setting the timer

Add duration: inside the heading note to give a phase a timer. You can write it in whichever style feels most natural — seconds, minutes, hours, or even clock-style. If you write something Weave cannot understand it will tell you, rather than silently using the wrong time in the meeting.

What it looks like

duration: 90        # ninety seconds
duration: 30s       # also seconds
duration: 2m        # two minutes
duration: 1h30m     # one hour and thirty minutes
duration: 2:30      # two minutes and thirty seconds
duration: 1:00:00   # one hour

Examples

duration: 90

A 90-second phase.

duration: 1h30m

A 90-minute phase.

duration: 2:30

A two-and-a-half minute phase.

Good to know

  • If you leave the timer off, Weave treats the phase as open-ended — the host moves the meeting forward when ready.
  • Negative times are not allowed.
  • Whole seconds only — half-seconds like 1.5s are not supported.

Going round the room (`per-participant`)

Add per-participant: true to a heading when each person should take a turn during the phase, rather than the whole group doing the activity together. This is great for check-ins, ice-breakers, and round-robin updates.

What it looks like

per-participant: true
per-participant: false

Examples

per-participant: true

Each person takes a turn.

per-participant: maybe

Anything other than the exact word "true" means "no, do it as a group". Typos are safe — they will not accidentally turn a phase into a round-robin.

Good to know

  • Only the exact word true (in lowercase) turns this on. Leaving it off is the same as writing false.

Splitting into breakouts

Add breakouts: to a heading note when you want the meeting to split into smaller groups for that phase. You can either say how many rooms you want, or how many people belong in each room. When the phase ends, everyone comes back together for the next one.

What it looks like

breakouts: 3 rooms       # exactly three rooms
breakouts: 4 per room    # roughly four people in each room

Examples

A fixed number of rooms
# Small groups <!-- duration: 15m, breakouts: 3 rooms -->

A fifteen-minute phase that splits the meeting into three rooms, as evenly as possible.

Sized by people per room
# Pair discussion <!-- duration: 10m, breakouts: 2 per room -->

A ten-minute phase that puts roughly two people in each room. Weave adds another room if a group would otherwise be left over.

A whole-group phase
# Opening <!-- duration: 2m -->

No breakouts: means the whole group stays together — exactly how a phase works without this label.

Good to know

  • Use room or rooms for a fixed room count; use per room for a target size. Other words like "groups" or "teams" are not accepted, so the meeting plan stays unambiguous.
  • breakouts: 1 room is allowed and means everyone stays in one group — a friendly way to mark a phase as a group discussion.
  • A phase cannot both go round the room and split into breakouts at the same time. Pick one.
  • Zero rooms, negative numbers, decimals, ranges (2-3 per room), and lists are not accepted.
  • Who goes into which room is decided live in the meeting, not in the file — Weave only needs to know how to size the rooms.

Your own labels

You can add any extra labels you like to a heading note, even ones Weave does not know about yet. Weave keeps them with the phase so other tools — or future Weave features — can use them. A common example: audio-cue: bell.mp3 to ring a bell at the start of a phase.

What it looks like

# Phase <!-- duration: 2m, audio-cue: bell.mp3 -->

Examples

# Phase <!-- duration: 2m, audio-cue: bell.mp3 -->

A two-minute phase that also remembers an "audio-cue" of "bell.mp3" for any tool that knows how to play it.

Good to know

  • Custom labels are remembered exactly as you write them.
  • Weave does not limit which labels you can use, so you can experiment freely.

What Weave remembers from your pattern

When Weave reads your pattern it pulls out the information below. You never need to write any of this yourself — Weave figures it out from the file you wrote.

About the meeting

  • sourceSpecVersionWhich version of the Weave pattern format your file uses.
  • titleThe title of the meeting, if you gave it one.
  • descriptionA short description of the meeting, if you wrote one.
  • attributesAny extra labels you added to the header at the top of the file.

About each phase

  • idA short, automatic nickname for the phase, useful for linking to it.
  • indexWhere the phase sits in the meeting (the first phase is 0).
  • nameThe name of the phase, shown to everyone in the meeting.
  • durationSecondsHow long the phase runs, in seconds. If it is 0, the host moves things along when they are ready.
  • perParticipantTrue if each person takes a turn during the phase; false if the whole group does it together.
  • bodyWhatever you wrote under the heading — the prompts, instructions, or talking points.
  • breakoutsWhether the phase runs in breakout rooms, and how to size them. Empty when the whole group stays together.
  • attributesAny extra labels you added to the heading.

Example patterns

Real meeting patterns you can read, copy, and use as a starting point. Each one shows a different part of the format — including a few examples of common mistakes so you know what they look like.

Writing your own? Validate a pattern to check it before you save — the check runs right in your browser.