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.
What it looks like
# Heading
What happens during this phase.
More than one paragraph is fine.
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.
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.
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.
- 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.
- 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.
- 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.