A complete workshop

A full workshop pattern that uses every feature of the format — read it as a tour, or copy it as a starting point.

ready to use download the file

The pattern

---
weave-script-version: 1
title: A complete workshop
description: One pattern that uses every feature of the format — read it as a tour, or copy it as a starting point.
owner: andrew
team: weave-core
---

# Welcome <!-- duration: 90 -->

Welcome. Settle in.

# Hellos <!-- duration: 30s, per-participant: true -->

One sentence each — your name and what brought you here today.

# Frame the workshop <!-- duration: 2m -->

Today is shaped around small-group work and a longer synthesis.

We'll come back together between each round so you can hear what everyone is finding.

# Small groups <!-- duration: 15m, breakouts: 3 rooms, audio-cue: bell.mp3 -->

In your room, take turns sharing what brought you here today.

Everyone gets a chance to speak. Listen for what surprises you.

# Pair reflection <!-- duration: 2:30, breakouts: 2 per room -->

Pair up. Half the time each. No interruptions.

# Synthesis <!-- duration: 1h30m, mood: focused -->

Back together. We'll weave the threads from your small groups and your pairs.

# Quiet hour <!-- duration: 1:00:00 -->

Stay with the room. Write, think, or talk quietly.

# Open close

No timer — wrap up when it feels right.

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": 1,
  "meta": {
    "sourceSpecVersion": 1,
    "title": "A complete workshop",
    "description": "One pattern that uses every feature of the format — read it as a tour, 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": "Welcome. Settle in.",
      "breakouts": null,
      "attributes": {}
    },
    {
      "id": "2-hellos",
      "index": 1,
      "name": "Hellos",
      "durationSeconds": 30,
      "perParticipant": true,
      "body": "One sentence each — your name and what brought you here today.",
      "breakouts": null,
      "attributes": {}
    },
    {
      "id": "3-frame-the-workshop",
      "index": 2,
      "name": "Frame the workshop",
      "durationSeconds": 120,
      "perParticipant": false,
      "body": "Today is shaped around small-group work and a longer synthesis.\n\nWe'll come back together between each round so you can hear what everyone is finding.",
      "breakouts": null,
      "attributes": {}
    },
    {
      "id": "4-small-groups",
      "index": 3,
      "name": "Small groups",
      "durationSeconds": 900,
      "perParticipant": false,
      "body": "In your room, take turns sharing what brought you here today.\n\nEveryone gets a chance to speak. Listen for what surprises you.",
      "breakouts": {
        "kind": "rooms",
        "count": 3
      },
      "attributes": {
        "audio-cue": "bell.mp3"
      }
    },
    {
      "id": "5-pair-reflection",
      "index": 4,
      "name": "Pair reflection",
      "durationSeconds": 150,
      "perParticipant": false,
      "body": "Pair up. Half the time each. No interruptions.",
      "breakouts": {
        "kind": "perRoom",
        "size": 2
      },
      "attributes": {}
    },
    {
      "id": "6-synthesis",
      "index": 5,
      "name": "Synthesis",
      "durationSeconds": 5400,
      "perParticipant": false,
      "body": "Back together. We'll weave the threads from your small groups and your pairs.",
      "breakouts": null,
      "attributes": {
        "mood": "focused"
      }
    },
    {
      "id": "7-quiet-hour",
      "index": 6,
      "name": "Quiet hour",
      "durationSeconds": 3600,
      "perParticipant": false,
      "body": "Stay with the room. Write, think, or talk quietly.",
      "breakouts": null,
      "attributes": {}
    },
    {
      "id": "8-open-close",
      "index": 7,
      "name": "Open close",
      "durationSeconds": 0,
      "perParticipant": false,
      "body": "No timer — wrap up when it feels right.",
      "breakouts": null,
      "attributes": {}
    }
  ]
}