A design tool for immersive experience makers. Browse a library of 356 plays — atomic experience beats drawn from immersive theater, ARGs, pervasive games, and transformative experience design — arrange them into arcs, check them for structural problems, and score them against participant profiles.
Works as a standalone web app and as a Miro sidebar panel that reads your board and drops play cards directly onto it.
| Plays library | Engagement planner |
|---|---|
![]() |
![]() |
→ Open the app — no Miro account needed. Browse all 356 plays, build an arc in the text box, run the linter and planner right in your browser.
→ Browse the full plays library — all 356 plays with complete metadata, readable on GitHub without opening the app.
- Go to developers.miro.com and sign in with your Miro account
- Click Create new app → give it any name → under App URL paste exactly this:
https://justinstimatze.github.io/score/panel.html - Under Permissions tick boards:read and boards:write → click Install app and get OAuth token → select your Miro team → Add
Open any board in that team. The ScoreImmersive icon appears in the left toolbar.
356 plays across every domain that matters for immersive experience design:
- Immersive theater — mask mechanics, one-on-ones, environmental narrative, actor loops (Punchdrunk, Sleep No More)
- ARGs and pervasive games — real domains, planted evidence, breadcrumb trails, alternate reality layers (Jejune Institute, Ingress)
- Transformative experience design — micro-authorization cascades, counter-identity encounters, reintegration scaffolding (McLain)
- Group dynamics — faction formation, allegiance forks, shared crisis beats, group synchronization (Galactic Starcruiser)
- Con artistry and intelligence tradecraft — convincer mechanics, cold read, tradecraft patterns (Maurer, Goffman, FBI BCSM)
- Ritual design — graduation rituals, liminal transitions, threshold marking (van Gennep)
- Physical world — dead drops, spatial messages, location dispatch, certified mail
- Digital and AI-native — AI character interfaces, voice clones, synthetic media, LLM contamination
Each play has 27 fields: mechanisms, beat function, arc fit, somatic quality, identity invite, dwell time, detection window, reversibility, and more.
The steps above point at this repo's hosted copy. If you want to host your own — to use a private plays library or customise the app — the app is a folder of static files. Build it and put it anywhere.
Netlify Drop (no account required, 2 minutes)
- Clone this repo, open a terminal in
miro-app/, and run:npm install npm run build
- Go to app.netlify.com/drop and drag the
dist/folder onto the page - Netlify gives you a URL — use that instead of the one above when registering in Miro
GitHub Pages on your own fork
Fork this repo, enable GitHub Pages under Settings → Pages → GitHub Actions, then add this workflow file:
.github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: cd miro-app && npm install && npm run build
- uses: actions/upload-pages-artifact@v3
with: { path: miro-app/dist }
- uses: actions/deploy-pages@v4
id: deploymentYour URL will be https://your-username.github.io/score. Use /panel.html appended when registering in Miro.
Browse plays — search by keyword, filter by phase (build, escalate, threshold, climax) or pacing (ramp, spike, hold). Expand any play to read its full description. In Miro, drag the ⠿ handle to drop a play card onto your board.
Build an arc — in Miro, arrange play cards left to right in sequence order. In the standalone app, type or paste play IDs into the arc input, one per line.
Check Arc — runs the structural linter against your sequence. Flags contraindicated pairs, missing permission grants, detection accumulation, rhythm problems, and more.
Analyze for Profile — load a participant profile (start from a template or build from scratch with Big Five sliders and mechanism weights), then run the planner to see engagement scores for each beat.
Guide tab — drop reference arcs onto your board: Sleep No More, House of the Latitude, The Game, Galactic Starcruiser, and others.
The web app lives in miro-app/. See miro-app/README.md for the dev setup, project structure, and how to bring your own plays library.
The root of the repo contains the underlying Python toolchain — arc linter, planner, simulator, and the full plays library source (plays.md). These are the authoring tools used to build and maintain the library.
App code (everything except the plays library) — MIT
Plays library (plays.yaml, plays.md, and derived JSON files) — CC0 1.0 (public domain). No rights reserved.

