Docs Open app →

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.

ready to use download the file

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
      ]
    }
  ]
}