A complete workshop
A full workshop that tours every feature — implicit single-room prompts, a round-the-room check-in, breakout rounds whose rooms span several prompts, and custom labels. Read it as a tour, or copy it as a starting point.
The pattern
---
weave-script-version: 3
title: A complete workshop
description: One pattern that tours every part of the format — read it, or copy it as a starting point.
owner: andrew
team: weave-core
---
## Welcome
> duration: 90
Settle in. We'll begin in a moment.
# Hellos
> round-robin: true
We'll go around the room so everyone has a moment to land.
## Your name and what brought you here
> duration: 30s
# Small groups
> breakouts: 3 rooms
> audio-cue: bell.mp3
We'll work in small groups. You'll stay with the same group for both questions.
## What brought you here?
> duration: 5m
## What do you hope to leave with?
> duration: 5m
# Pairs
> breakouts: 2 per room
Pair up for a quick exchange.
## Trade one idea each
> duration: 2:30
# Synthesis
> mood: focused
Back together. We'll weave the threads from your groups and pairs.
> The goal is not agreement. It is a fuller map.
## Weave the threads
> duration: 1h30m
# Open close
## Anything to name before we end?
What Weave sees
When Weave reads this file, it pulls out the information below. You don't need to write any of this yourself.
{
"schemaVersion": 2,
"meta": {
"sourceSpecVersion": 3,
"title": "A complete workshop",
"description": "One pattern that tours every part of the format — read it, or copy it as a starting point.",
"attributes": {
"owner": "andrew",
"team": "weave-core"
}
},
"phases": [
{
"id": "1-welcome",
"index": 0,
"name": "Welcome",
"durationSeconds": 90,
"perParticipant": false,
"body": "Settle in. We'll begin in a moment.",
"breakouts": null,
"attributes": {},
"segmentId": "s1-phase",
"segmentRole": "prompt"
},
{
"id": "2-hellos",
"index": 1,
"name": "Hellos",
"durationSeconds": 0,
"perParticipant": false,
"body": "We'll go around the room so everyone has a moment to land.",
"breakouts": null,
"attributes": {},
"segmentId": "s2-hellos",
"segmentRole": "preface"
},
{
"id": "3-your-name-and-what-brought-you-here",
"index": 2,
"name": "Your name and what brought you here",
"durationSeconds": 30,
"perParticipant": true,
"body": "",
"breakouts": null,
"attributes": {},
"segmentId": "s2-hellos",
"segmentRole": "prompt"
},
{
"id": "4-small-groups",
"index": 3,
"name": "Small groups",
"durationSeconds": 0,
"perParticipant": false,
"body": "We'll work in small groups. You'll stay with the same group for both questions.",
"breakouts": null,
"attributes": {
"audio-cue": "bell.mp3"
},
"segmentId": "s3-small-groups",
"segmentRole": "preface"
},
{
"id": "5-what-brought-you-here",
"index": 4,
"name": "What brought you here?",
"durationSeconds": 300,
"perParticipant": false,
"body": "",
"breakouts": {
"kind": "rooms",
"count": 3
},
"attributes": {},
"segmentId": "s3-small-groups",
"segmentRole": "prompt"
},
{
"id": "6-what-do-you-hope-to-leave-with",
"index": 5,
"name": "What do you hope to leave with?",
"durationSeconds": 300,
"perParticipant": false,
"body": "",
"breakouts": {
"kind": "rooms",
"count": 3
},
"attributes": {},
"segmentId": "s3-small-groups",
"segmentRole": "prompt"
},
{
"id": "7-pairs",
"index": 6,
"name": "Pairs",
"durationSeconds": 0,
"perParticipant": false,
"body": "Pair up for a quick exchange.",
"breakouts": null,
"attributes": {},
"segmentId": "s4-pairs",
"segmentRole": "preface"
},
{
"id": "8-trade-one-idea-each",
"index": 7,
"name": "Trade one idea each",
"durationSeconds": 150,
"perParticipant": false,
"body": "",
"breakouts": {
"kind": "perRoom",
"size": 2
},
"attributes": {},
"segmentId": "s4-pairs",
"segmentRole": "prompt"
},
{
"id": "9-synthesis",
"index": 8,
"name": "Synthesis",
"durationSeconds": 0,
"perParticipant": false,
"body": "Back together. We'll weave the threads from your groups and pairs.\n\n> The goal is not agreement. It is a fuller map.",
"breakouts": null,
"attributes": {
"mood": "focused"
},
"segmentId": "s5-synthesis",
"segmentRole": "preface"
},
{
"id": "10-weave-the-threads",
"index": 9,
"name": "Weave the threads",
"durationSeconds": 5400,
"perParticipant": false,
"body": "",
"breakouts": null,
"attributes": {},
"segmentId": "s5-synthesis",
"segmentRole": "prompt"
},
{
"id": "11-anything-to-name-before-we-end",
"index": 10,
"name": "Anything to name before we end?",
"durationSeconds": 0,
"perParticipant": false,
"body": "",
"breakouts": null,
"attributes": {},
"segmentId": "s6-open-close",
"segmentRole": "prompt"
}
],
"segments": [
{
"id": "s1-phase",
"index": 0,
"name": "",
"mode": "single",
"roundRobin": false,
"breakouts": null,
"prefacePhaseIndex": null,
"promptPhaseIndexes": [
0
]
},
{
"id": "s2-hellos",
"index": 1,
"name": "Hellos",
"mode": "single",
"roundRobin": true,
"breakouts": null,
"prefacePhaseIndex": 1,
"promptPhaseIndexes": [
2
]
},
{
"id": "s3-small-groups",
"index": 2,
"name": "Small groups",
"mode": "breakout",
"roundRobin": false,
"breakouts": {
"kind": "rooms",
"count": 3
},
"prefacePhaseIndex": 3,
"promptPhaseIndexes": [
4,
5
]
},
{
"id": "s4-pairs",
"index": 3,
"name": "Pairs",
"mode": "breakout",
"roundRobin": false,
"breakouts": {
"kind": "perRoom",
"size": 2
},
"prefacePhaseIndex": 6,
"promptPhaseIndexes": [
7
]
},
{
"id": "s5-synthesis",
"index": 4,
"name": "Synthesis",
"mode": "single",
"roundRobin": false,
"breakouts": null,
"prefacePhaseIndex": 8,
"promptPhaseIndexes": [
9
]
},
{
"id": "s6-open-close",
"index": 5,
"name": "Open close",
"mode": "single",
"roundRobin": false,
"breakouts": null,
"prefacePhaseIndex": null,
"promptPhaseIndexes": [
10
]
}
]
}