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
---
weave-script-version: 1
---
# Welcome
A valid pattern with no title or description.
---
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-versionline is required, and it must be the number1. titleanddescriptionare 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
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.
- Welcome everyone
- Share the goal
- Set the timer A bulleted list with three points.
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.5sare 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 writingfalse.
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
# Small groups <!-- duration: 15m, breakouts: 3 rooms --> A fifteen-minute phase that splits the meeting into three rooms, as evenly as possible.
# 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.
# Opening <!-- duration: 2m --> No breakouts: means the whole group stays together — exactly how a phase works without this label.
Good to know
- Use
roomorroomsfor a fixed room count; useper roomfor a target size. Other words like "groups" or "teams" are not accepted, so the meeting plan stays unambiguous. breakouts: 1 roomis 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
- sourceSpecVersion — Which version of the Weave pattern format your file uses.
- title — The title of the meeting, if you gave it one.
- description — A short description of the meeting, if you wrote one.
- attributes — Any extra labels you added to the header at the top of the file.
About each phase
- id — A short, automatic nickname for the phase, useful for linking to it.
- index — Where the phase sits in the meeting (the first phase is 0).
- name — The name of the phase, shown to everyone in the meeting.
- durationSeconds — How long the phase runs, in seconds. If it is 0, the host moves things along when they are ready.
- perParticipant — True if each person takes a turn during the phase; false if the whole group does it together.
- body — Whatever you wrote under the heading — the prompts, instructions, or talking points.
- breakouts — Whether the phase runs in breakout rooms, and how to size them. Empty when the whole group stays together.
- attributes — Any 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.
- A complete workshop ready to use
A full workshop pattern that uses every feature of the format — read it as a tour, or copy it as a starting point.
- The simplest possible pattern ready to use
The smallest pattern Weave will accept: a tiny header and a single phase.
- A team stand-up ready to use
A realistic five-phase stand-up that mixes group phases with go-round-the-room phases.
- All the ways to write a timer ready to use
One phase for every way you can write a timer — seconds, minutes, hours, clock-style, and an open-ended phase with no timer at all.
- Using your own custom labels ready to use
Shows how Weave remembers any extra labels you add — both at the top of the file and on individual phase headings.
- A phase with several paragraphs ready to use
You can write as much as you like under each heading. Weave keeps the spacing between your paragraphs.
- Splitting into a set number of rooms ready to use
A meeting that opens together, splits into three small-group rooms, and comes back to close.
- Sizing breakouts by people per room ready to use
Pairs up the meeting by asking for two people in each room rather than a fixed room count.
- The header is missing example of a mistake
Every pattern needs a small header at the top, wrapped in lines of three dashes. This file forgets it.
- The version line is missing example of a mistake
The header is there, but it does not say which version of the format the file uses.
- The version number is one Weave does not know example of a mistake
The header declares a format version Weave has never heard of.
- A timer that does not make sense example of a mistake
Writes the timer as `banana`. Weave catches the mistake instead of guessing.
- No phases yet example of a mistake
The file has a valid header but no phase headings — so there is nothing for the meeting to do.
- A line in the header is malformed example of a mistake
Each line in the header has to be a label, a colon, and a value. This file has a line that forgets the colon.
- A breakout phase with zero rooms example of a mistake
Asks for `0 rooms`, which would leave nobody anywhere. Weave catches it instead of silently skipping the phase.
- Going round the room and breaking out at the same time example of a mistake
A phase can either go round the room or split into breakouts, but not both — Weave asks you to pick one.
- Using a word Weave does not recognise example of a mistake
Writes `3 groups` instead of `3 rooms`. Only `rooms` and `per room` are accepted, so the meeting plan stays unambiguous.
Writing your own? Validate a pattern to check it before you save — the check runs right in your browser.