Joe

DisplayXR demos — rules for all agents

Layout

displayxr-demos/
  CLAUDE.md            ← rules every agent reads (this file)
  CHANGES-NEEDED.md    ← requested changes to packages/, one note per request
  assets/LICENSES.md   ← one entry per asset
  .env.example         ← every key any app reads; copy to .env (never committed)
  packages/core/       ← display page, WebSocket bridge, agent adapters
  packages/importer/   ← dxr-import (Sketchfab, KitBash, Smithsonian)
  apps/energy-grid/    ← Future Grids Training (grid digital twin)
  apps/music-visualizer/
  apps/4dv-player/     ← 4DV.ai volumetric video player (own CLAUDE.md)
  apps/splat-call/     ← Splat Call 3D: live Gaussian-splat video calls (own CLAUDE.md)
  apps/creator-hub/    ← Material Forge, Vehicle Studio, Terra Studio + Push to HQ
  apps/battleship/     ← redirect stub (moved to the displayxr-battleship repo)
  apps/agent-voice/    ← Muse, Dot, Claude voice demo
  apps/aviation-coach/
  apps/playground-port/
  apps/world-gen/      ← World Labs Marble

Where the SDK rules live

The inline-3D page rules that cause most “3D is broken” reports are in DisplayXR/displayxr-web → docs/woven-canvas-rules.md (one session per document, never remount a woven canvas, cover until firstWoven, no CSS effects on a woven canvas or its ancestors). Read it before writing any page that hosts a woven canvas. API: the .d.ts files at that repo’s root.