[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EZBYYT2DPHV20YNP4PYCQS":3,"skill-same:01M6EZBYYT2DPHV20YNP4PYCQS":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6EZBYYT2DPHV20YNP4PYCQS","interactive-theatre-designer",null,"Designs interactive theatrical experiences with branching narratives, audience participation systems, and immersive environmental storytelling.","luokai0\u002Fai-agent-skills-by-luo-kai","luokai0","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F266954973?v=4","01M6E16VNT42JB8B3X3254QWJ7","luo kai","01M6E16VTFVP6S5XJF1V1MPV90",14,"MIT","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fcreative\u002Finteractive-theatre-designer\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"designer","interactive","interactive theatre designer","performance","context","user","shape","build","storytelling","environmental","systems","narrative","branching","about","with","2026-11-10 10:12:30",false,"---\nname: interactive-theatre-designer\ndescription: Designs interactive theatrical experiences with branching narratives, audience participation systems, and immersive environmental storytelling.\nlicense: MIT\ngovernance_phases: [shape, build]\norgan_affinity: [organ-ii]\ntriggers: [user-asks-about-theatre, user-asks-about-interactive-narrative, context:performance]\n---\n\n# Interactive Theatre Designer\n\nThis skill provides guidance for creating theatrical experiences where audiences participate in, influence, or co-create the performance through interactive systems and branching narratives.\n\n## Core Competencies\n\n- **Branching Narrative**: Multi-path story structures\n- **Audience Agency**: Meaningful choice and participation\n- **Immersive Design**: Environmental storytelling, site-specific work\n- **Live Systems**: Real-time adaptation and emergence\n- **Hybrid Formats**: Physical\u002Fdigital integration\n\n## Interactive Theatre Fundamentals\n\n### Spectrum of Interactivity\n\n```\nPassive                                                     Active\n│                                                              │\n├──Traditional──┬──Promenade──┬──Immersive──┬──Participatory──┤\n│   Theatre     │   Theatre   │   Theatre   │    Theatre      │\n│               │             │             │                 │\n│ Fixed seats   │ Audience    │ Audience    │ Audience        │\n│ Fourth wall   │ moves       │ is inside   │ affects         │\n│ No agency     │ Partial     │ story world │ narrative       │\n│               │ agency      │ Some agency │ Full agency     │\n└───────────────┴─────────────┴─────────────┴─────────────────┘\n```\n\n### Participation Modes\n\n| Mode | Description | Design Challenge |\n|------|-------------|------------------|\n| Witness | Observe from within | Manage sight lines, intimacy |\n| Explorer | Choose where to go | Balance FOMO, reward curiosity |\n| Player | Make story choices | Create meaningful stakes |\n| Co-creator | Generate content | Scaffold creativity |\n| Performer | Become a character | Lower inhibition barriers |\n\n## Branching Narrative Design\n\n### Structure Types\n\n```\nLinear with Variations\nA ──→ B ──→ C ──→ D\n      ↓\n      B' (variation based on earlier choice)\n\nBranching Tree\n      ┌── B1 ──→ C1\nA ────┤\n      └── B2 ──→ C2 ──┬── D1\n                      └── D2\n\nFolding Paths (reconvergent)\n      ┌── B1 ──┐\nA ────┤        ├──→ D\n      └── B2 ──┘\n\nHub and Spoke\n         ┌── B ──┐\n    ┌────┤       │\nA ──┤    └───────┘\n    │    ┌── C ──┐\n    └────┤       │\n         └───────┘\n\nParallel Threads\nA1 ───────→ B1 ───────→ C1\n            ↕ sync\nA2 ───────→ B2 ───────→ C2\n```\n\n### Choice Architecture\n\n```python\nclass NarrativeChoice:\n    \"\"\"A decision point in the story\"\"\"\n\n    def __init__(self, prompt, options):\n        self.prompt = prompt\n        self.options = options\n        self.context_requirements = []\n        self.consequences = {}\n\n    def evaluate_options(self, audience_state):\n        \"\"\"Determine available choices based on state\"\"\"\n        available = []\n        for option in self.options:\n            if option.is_available(audience_state):\n                available.append(option)\n\n        # Always ensure at least two meaningful options\n        if len(available) \u003C 2:\n            available.append(self._create_fallback_option())\n\n        return available\n\n\nclass StoryBeat:\n    \"\"\"A unit of narrative action\"\"\"\n\n    def __init__(self, content, duration_range, choice=None):\n        self.content = content\n        self.min_duration = duration_range[0]\n        self.max_duration = duration_range[1]\n        self.choice = choice  # Optional NarrativeChoice\n        self.state_changes = {}  # What this beat modifies\n        self.prerequisites = []  # What must be true to reach this\n```\n\n### Consequence Systems\n\n```python\nclass ConsequenceTracker:\n    \"\"\"Track choices and their ripple effects\"\"\"\n\n    def __init__(self):\n        self.choices_made = []\n        self.world_state = {}\n        self.character_relationships = {}\n        self.available_endings = set()\n\n    def record_choice(self, choice_id, option_selected, timestamp):\n        self.choices_made.append({\n            'choice': choice_id,\n            'selected': option_selected,\n            'time': timestamp\n        })\n        self._apply_consequences(choice_id, option_selected)\n        self._update_available_endings()\n\n    def _apply_consequences(self, choice_id, option):\n        \"\"\"Apply immediate and delayed consequences\"\"\"\n        # Immediate effects\n        for effect in option.immediate_effects:\n            self._apply_effect(effect)\n\n        # Queue delayed effects\n        for effect in option.delayed_effects:\n            self._queue_effect(effect)\n\n    def get_story_fingerprint(self):\n        \"\"\"Unique identifier for this audience's journey\"\"\"\n        return hash(tuple(\n            (c['choice'], c['selected'])\n            for c in self.choices_made\n        ))\n```\n\n## Audience Agency Design\n\n### Choice Design Principles\n\n**Make Choices Meaningful**:\n- Clear stakes: What's at risk?\n- Visible consequences: Changes they can observe\n- Emotional investment: Characters they care about\n- No \"right\" answer: Multiple valid paths\n\n**Avoid Choice Paralysis**:\n- Limit to 2-4 options at decision points\n- Provide adequate context (but not too much)\n- Use time pressure sparingly and purposefully\n- Signal importance level of choices\n\n### Voting and Collective Choice\n\n```python\nclass CollectiveDecision:\n    \"\"\"Aggregate audience input into story decisions\"\"\"\n\n    def __init__(self, voting_method='plurality'):\n        self.voting_method = voting_method\n        self.votes = {}\n\n    def collect_votes(self, options, timeout_seconds=30):\n        \"\"\"Gather votes from audience\"\"\"\n        # Methods: raise hands, mobile app, physical movement, sound\n        pass\n\n    def resolve(self):\n        \"\"\"Determine outcome based on voting method\"\"\"\n        methods = {\n            'plurality': self._plurality,      # Most votes wins\n            'supermajority': self._supermajority,  # Needs 2\u002F3\n            'consensus': self._consensus,      # Unanimous\n            'weighted': self._weighted,        # Some votes count more\n            'random_delegate': self._delegate  # One person decides\n        }\n        return methods[self.voting_method]()\n\n    def _plurality(self):\n        return max(self.votes.keys(), key=lambda x: self.votes[x])\n```\n\n### Individual vs Collective Agency\n\n| Approach | Pros | Cons |\n|----------|------|------|\n| Individual choices | Personal investment | Logistical complexity |\n| Collective voting | Easy to manage | Minority feels unheard |\n| Representative | Balance of both | Choosing representative |\n| Parallel paths | Everyone gets agency | Requires more content |\n\n## Immersive Environment Design\n\n### Space as Narrative\n\n```\nTRADITIONAL STAGE          IMMERSIVE SPACE\n\n┌─────────────────┐       ┌─────────────────────────────┐\n│                 │       │  GARDEN    │    LIBRARY    │\n│      STAGE      │       │  (Past)    │    (Memory)   │\n│                 │       │     ◇      ↔      ◇        │\n├─────────────────┤       ├────────────┼───────────────┤\n│    AUDIENCE     │       │  KITCHEN   │    BEDROOM    │\n│                 │       │  (Present) │    (Future)   │\n└─────────────────┘       │     ◇      ↔      ◇        │\n                          └─────────────────────────────┘\n                               ◇ = Performance hotspot\n                               ↔ = Audience flow path\n```\n\n### Environmental Storytelling Elements\n\n```python\nclass ImmersiveSpace:\n    \"\"\"Design an immersive theatrical environment\"\"\"\n\n    def __init__(self, venue):\n        self.venue = venue\n        self.zones = {}\n        self.artifacts = []\n        self.ambient_states = {}\n\n    def add_zone(self, zone):\n        \"\"\"Define a narrative zone\"\"\"\n        self.zones[zone.name] = zone\n\n    def design_discovery_path(self, story_beats):\n        \"\"\"Create environmental narrative arc\"\"\"\n        path = []\n        for beat in story_beats:\n            zone = self._select_zone_for_beat(beat)\n            artifacts = self._place_artifacts(beat, zone)\n            ambient = self._set_ambient_state(beat, zone)\n            path.append({\n                'beat': beat,\n                'zone': zone,\n                'artifacts': artifacts,\n                'ambient': ambient\n            })\n        return path\n\n\nclass NarrativeArtifact:\n    \"\"\"Object that tells story when discovered\"\"\"\n\n    def __init__(self, name, backstory, discovery_trigger):\n        self.name = name\n        self.backstory = backstory  # What it reveals\n        self.discovery_trigger = discovery_trigger  # How found\n        self.required_for_story = False\n        self.hidden_level = 0  # 0=obvious, 5=very hidden\n```\n\n### Sensory Design\n\n| Sense | Storytelling Uses | Technical Considerations |\n|-------|-------------------|--------------------------|\n| Visual | Character, mood, focus | Lighting plots, scenic |\n| Audio | Atmosphere, transition | Speakers, acoustic design |\n| Smell | Memory, place, emotion | Scent machines, natural |\n| Touch | Texture, temperature | Material selection |\n| Taste | Ritual, communion | Food safety, allergies |\n\n## Live System Design\n\n### Real-Time Adaptation\n\n```python\nclass ShowController:\n    \"\"\"Manage live show based on audience behavior\"\"\"\n\n    def __init__(self, script, performers, systems):\n        self.script = script\n        self.performers = performers\n        self.systems = systems  # Lights, sound, effects\n        self.current_beat = None\n        self.audience_state = AudienceState()\n\n    def update(self):\n        \"\"\"Called continuously during show\"\"\"\n        # Observe audience\n        self.audience_state.update(self._observe_audience())\n\n        # Check for triggers\n        triggers = self._check_triggers()\n\n        # Adapt if needed\n        for trigger in triggers:\n            self._handle_trigger(trigger)\n\n        # Cue performers\n        self._send_performer_cues()\n\n    def _check_triggers(self):\n        \"\"\"Detect conditions that require adaptation\"\"\"\n        triggers = []\n\n        # Audience engagement low\n        if self.audience_state.engagement \u003C 0.3:\n            triggers.append(('low_engagement', 'intensify'))\n\n        # Audience moving to unexpected zone\n        if self._unexpected_movement():\n            triggers.append(('migration', 'redirect_or_adapt'))\n\n        # Time running over\u002Funder\n        pace = self._calculate_pace()\n        if pace \u003C 0.8:\n            triggers.append(('slow_pace', 'compress'))\n        elif pace > 1.2:\n            triggers.append(('fast_pace', 'expand'))\n\n        return triggers\n```\n\n### Performer Communication\n\n```python\nclass PerformerCueSystem:\n    \"\"\"Real-time communication with performers\"\"\"\n\n    def __init__(self):\n        self.performers = {}\n        self.cue_queue = []\n\n    def add_performer(self, name, device_type):\n        \"\"\"Register performer with their cue device\"\"\"\n        self.performers[name] = {\n            'device': device_type,  # 'earpiece', 'wearable', 'visual'\n            'current_track': None,\n            'status': 'ready'\n        }\n\n    def send_cue(self, performer, cue_type, content, urgency='normal'):\n        \"\"\"Send cue to specific performer\"\"\"\n        cue = {\n            'performer': performer,\n            'type': cue_type,  # 'go', 'hold', 'redirect', 'improv'\n            'content': content,\n            'urgency': urgency\n        }\n        self._transmit(cue)\n\n    def broadcast_state_change(self, new_state):\n        \"\"\"Inform all performers of story state change\"\"\"\n        for performer in self.performers:\n            self.send_cue(\n                performer,\n                'state_change',\n                new_state,\n                urgency='low'\n            )\n```\n\n## Documentation and Planning\n\n### Show Bible Structure\n\n```markdown\n## [Show Title] Production Bible\n\n### Concept\n- Logline (one sentence)\n- Themes\n- Audience experience goals\n\n### Narrative\n- Story summary (non-branching core)\n- Branch points and options\n- Endings (and how reached)\n- Character breakdowns\n\n### Space\n- Venue requirements\n- Zone map\n- Artifacts inventory\n- Technical requirements\n\n### Interactivity\n- Choice points catalog\n- Participation mechanics\n- Edge cases and recovery\n\n### Operations\n- Audience journey map\n- Performer tracks\n- Stage management protocol\n- Emergency procedures\n```\n\n### Run Sheet Format\n\n```\nTIME    | BEAT           | ACTION                | TRIGGERS\n--------|----------------|----------------------|------------------\n0:00    | GATHERING      | Audience enters      | N\u002FA\n0:15    | INTRO          | Host welcome         | All present\n0:20    | CHOICE 1       | Vote on path         | 2 min timer\n0:22    | BRANCH A or B  | Split audience       | Vote result\n...     | ...            | ...                  | ...\n1:45    | CONVERGENCE    | All paths meet       | All groups arrive\n2:00    | FINALE         | Final choice         | Timer\n2:10    | END            | House lights         | Applause\n```\n\n## Best Practices\n\n### Designing for Failure\n\n- Plan for empty rooms (no one chooses that path)\n- Plan for crowded rooms (everyone chooses same path)\n- Plan for confused audiences (unclear instructions)\n- Plan for disruptive participants (graceful management)\n- Plan for technical failures (degraded mode operation)\n\n### Rehearsal Process\n\n1. **Paper prototype**: Walk through on paper first\n2. **Block rehearsal**: Test spacing and movement\n3. **Branch rehearsals**: Practice each path separately\n4. **Integration**: Run full show with choices\n5. **Audience tests**: Invited audience for feedback\n6. **Tech**: Add all technical elements\n7. **Previews**: Public performances for refinement\n\n## References\n\n- `references\u002Fchoice-architecture.md` - Designing meaningful decisions\n- `references\u002Fimmersive-case-studies.md` - Notable productions analysis\n- `references\u002Flive-systems-tech.md` - Technical implementation patterns\n","# Interactive Theatre Designer\n\nThis skill provides guidance for creating theatrical experiences where audiences participate in, influence, or co-create the performance through interactive systems and branching narratives.\n\n## Core Competencies\n\n- **Branching Narrative**: Multi-path story structures\n- **Audience Agency**: Meaningful choice and participation\n- **Immersive Design**: Environmental storytelling, site-specific work\n- **Live Systems**: Real-time adaptation and emergence\n- **Hybrid Formats**: Physical\u002Fdigital integration\n\n## Interactive Theatre Fundamentals\n\n### Spectrum of Interactivity\n\n```\nPassive                                                     Active\n│                                                              │\n├──Traditional──┬──Promenade──┬──Immersive──┬──Participatory──┤\n│   Theatre     │   Theatre   │   Theatre   │    Theatre      │\n│               │             │             │                 │\n│ Fixed seats   │ Audience    │ Audience    │ Audience        │\n│ Fourth wall   │ moves       │ is inside   │ affects         │\n│ No agency     │ Partial     │ story world │ narrative       │\n│               │ agency      │ Some agency │ Full agency     │\n└───────────────┴─────────────┴─────────────┴─────────────────┘\n```\n\n### Participation Modes\n\n| Mode | Description | Design Challenge |\n|------|-------------|------------------|\n| Witness | Observe from within | Manage sight lines, intimacy |\n| Explorer | Choose where to go | Balance FOMO, reward curiosity |\n| Player | Make story choices | Create meaningful stakes |\n| Co-creator | Generate content | Scaffold creativity |\n| Performer | Become a character | Lower inhibition barriers |\n\n## Branching Narrative Design\n\n### Structure Types\n\n```\nLinear with Variations\nA ──→ B ──→ C ──→ D\n      ↓\n      B' (variation based on earlier choice)\n\nBranching Tree\n      ┌── B1 ──→ C1\nA ────┤\n      └── B2 ──→ C2 ──┬── D1\n                      └── D2\n\nFolding Paths (reconvergent)\n      ┌── B1 ──┐\nA ────┤        ├──→ D\n      └── B2 ──┘\n\nHub and Spoke\n         ┌── B ──┐\n    ┌────┤       │\nA ──┤    └───────┘\n    │    ┌── C ──┐\n    └────┤       │\n         └───────┘\n\nParallel Threads\nA1 ───────→ B1 ───────→ C1\n            ↕ sync\nA2 ───────→ B2 ───────→ C2\n```\n\n### Choice Architecture\n\n```python\nclass NarrativeChoice:\n    \"\"\"A decision point in the story\"\"\"\n\n    def __init__(self, prompt, options):\n        self.prompt = prompt\n        self.options = options\n        self.context_requirements = []\n        self.consequences = {}\n\n    def evaluate_options(self, audience_state):\n        \"\"\"Determine available choices based on state\"\"\"\n        available = []\n        for option in self.options:\n            if option.is_available(audience_state):\n                available.append(option)\n\n        # Always ensure at least two meaningful options\n        if len(available) \u003C 2:\n            available.append(self._create_fallback_option())\n\n        return available\n\n\nclass StoryBeat:\n    \"\"\"A unit of narrative action\"\"\"\n\n    def __init__(self, content, duration_range, choice=None):\n        self.content = content\n        self.min_duration = duration_range[0]\n        self.max_duration = duration_range[1]\n        self.choice = choice  # Optional NarrativeChoice\n        self.state_changes = {}  # What this beat modifies\n        self.prerequisites = []  # What must be true to reach this\n```\n\n### Consequence Systems\n\n```python\nclass ConsequenceTracker:\n    \"\"\"Track choices and their ripple effects\"\"\"\n\n    def __init__(self):\n        self.choices_made = []\n        self.world_state = {}\n        self.character_relationships = {}\n        self.available_endings = set()\n\n    def record_choice(self, choice_id, option_selected, timestamp):\n        self.choices_made.append({\n            'choice': choice_id,\n            'selected': option_selected,\n            'time': timestamp\n        })\n        self._apply_consequences(choice_id, option_selected)\n        self._update_available_endings()\n\n    def _apply_consequences(self, choice_id, option):\n        \"\"\"Apply immediate and delayed consequences\"\"\"\n        # Immediate effects\n        for effect in option.immediate_effects:\n            self._apply_effect(effect)\n\n        # Queue delayed effects\n        for effect in option.delayed_effects:\n            self._queue_effect(effect)\n\n    def get_story_fingerprint(self):\n        \"\"\"Unique identifier for this audience's journey\"\"\"\n        return hash(tuple(\n            (c['choice'], c['selected'])\n            for c in self.choices_made\n        ))\n```\n\n## Audience Agency Design\n\n### Choice Design Principles\n\n**Make Choices Meaningful**:\n- Clear stakes: What's at risk?\n- Visible consequences: Changes they can observe\n- Emotional investment: Characters they care about\n- No \"right\" answer: Multiple valid paths\n\n**Avoid Choice Paralysis**:\n- Limit to 2-4 options at decision points\n- Provide adequate context (but not too much)\n- Use time pressure sparingly and purposefully\n- Signal importance level of choices\n\n### Voting and Collective Choice\n\n```python\nclass CollectiveDecision:\n    \"\"\"Aggregate audience input into story decisions\"\"\"\n\n    def __init__(self, voting_method='plurality'):\n        self.voting_method = voting_method\n        self.votes = {}\n\n    def collect_votes(self, options, timeout_seconds=30):\n        \"\"\"Gather votes from audience\"\"\"\n        # Methods: raise hands, mobile app, physical movement, sound\n        pass\n\n    def resolve(self):\n        \"\"\"Determine outcome based on voting method\"\"\"\n        methods = {\n            'plurality': self._plurality,      # Most votes wins\n            'supermajority': self._supermajority,  # Needs 2\u002F3\n            'consensus': self._consensus,      # Unanimous\n            'weighted': self._weighted,        # Some votes count more\n            'random_delegate': self._delegate  # One person decides\n        }\n        return methods[self.voting_method]()\n\n    def _plurality(self):\n        return max(self.votes.keys(), key=lambda x: self.votes[x])\n```\n\n### Individual vs Collective Agency\n\n| Approach | Pros | Cons |\n|----------|------|------|\n| Individual choices | Personal investment | Logistical complexity |\n| Collective voting | Easy to manage | Minority feels unheard |\n| Representative | Balance of both | Choosing representative |\n| Parallel paths | Everyone gets agency | Requires more content |\n\n## Immersive Environment Design\n\n### Space as Narrative\n\n```\nTRADITIONAL STAGE          IMMERSIVE SPACE\n\n┌─────────────────┐       ┌─────────────────────────────┐\n│                 │       │  GARDEN    │    LIBRARY    │\n│      STAGE      │       │  (Past)    │    (Memory)   │\n│                 │       │     ◇      ↔      ◇        │\n├─────────────────┤       ├────────────┼───────────────┤\n│    AUDIENCE     │       │  KITCHEN   │    BEDROOM    │\n│                 │       │  (Present) │    (Future)   │\n└─────────────────┘       │     ◇      ↔      ◇        │\n                          └─────────────────────────────┘\n                               ◇ = Performance hotspot\n                               ↔ = Audience flow path\n```\n\n### Environmental Storytelling Elements\n\n```python\nclass ImmersiveSpace:\n    \"\"\"Design an immersive theatrical environment\"\"\"\n\n    def __init__(self, venue):\n        self.venue = venue\n        self.zones = {}\n        self.artifacts = []\n        self.ambient_states = {}\n\n    def add_zone(self, zone):\n        \"\"\"Define a narrative zone\"\"\"\n        self.zones[zone.name] = zone\n\n    def design_discovery_path(self, story_beats):\n        \"\"\"Create environmental narrative arc\"\"\"\n        path = []\n        for beat in story_beats:\n            zone = self._select_zone_for_beat(beat)\n            artifacts = self._place_artifacts(beat, zone)\n            ambient = self._set_ambient_state(beat, zone)\n            path.append({\n                'beat': beat,\n                'zone': zone,\n                'artifacts': artifacts,\n                'ambient': ambient\n            })\n        return path\n\n\nclass NarrativeArtifact:\n    \"\"\"Object that tells story when discovered\"\"\"\n\n    def __init__(self, name, backstory, discovery_trigger):\n        self.name = name\n        self.backstory = backstory  # What it reveals\n        self.discovery_trigger = discovery_trigger  # How found\n        self.required_for_story = False\n        self.hidden_level = 0  # 0=obvious, 5=very hidden\n```\n\n### Sensory Design\n\n| Sense | Storytelling Uses | Technical Considerations |\n|-------|-------------------|--------------------------|\n| Visual | Character, mood, focus | Lighting plots, scenic |\n| Audio | Atmosphere, transition | Speakers, acoustic design |\n| Smell | Memory, place, emotion | Scent machines, natural |\n| Touch | Texture, temperature | Material selection |\n| Taste | Ritual, communion | Food safety, allergies |\n\n## Live System Design\n\n### Real-Time Adaptation\n\n```python\nclass ShowController:\n    \"\"\"Manage live show based on audience behavior\"\"\"\n\n    def __init__(self, script, performers, systems):\n        self.script = script\n        self.performers = performers\n        self.systems = systems  # Lights, sound, effects\n        self.current_beat = None\n        self.audience_state = AudienceState()\n\n    def update(self):\n        \"\"\"Called continuously during show\"\"\"\n        # Observe audience\n        self.audience_state.update(self._observe_audience())\n\n        # Check for triggers\n        triggers = self._check_triggers()\n\n        # Adapt if needed\n        for trigger in triggers:\n            self._handle_trigger(trigger)\n\n        # Cue performers\n        self._send_performer_cues()\n\n    def _check_triggers(self):\n        \"\"\"Detect conditions that require adaptation\"\"\"\n        triggers = []\n\n        # Audience engagement low\n        if self.audience_state.engagement \u003C 0.3:\n            triggers.append(('low_engagement', 'intensify'))\n\n        # Audience moving to unexpected zone\n        if self._unexpected_movement():\n            triggers.append(('migration', 'redirect_or_adapt'))\n\n        # Time running over\u002Funder\n        pace = self._calculate_pace()\n        if pace \u003C 0.8:\n            triggers.append(('slow_pace', 'compress'))\n        elif pace > 1.2:\n            triggers.append(('fast_pace', 'expand'))\n\n        return triggers\n```\n\n### Performer Communication\n\n```python\nclass PerformerCueSystem:\n    \"\"\"Real-time communication with performers\"\"\"\n\n    def __init__(self):\n        self.performers = {}\n        self.cue_queue = []\n\n    def add_performer(self, name, device_type):\n        \"\"\"Register performer with their cue device\"\"\"\n        self.performers[name] = {\n            'device': device_type,  # 'earpiece', 'wearable', 'visual'\n            'current_track': None,\n            'status': 'ready'\n        }\n\n    def send_cue(self, performer, cue_type, content, urgency='normal'):\n        \"\"\"Send cue to specific performer\"\"\"\n        cue = {\n            'performer': performer,\n            'type': cue_type,  # 'go', 'hold', 'redirect', 'improv'\n            'content': content,\n            'urgency': urgency\n        }\n        self._transmit(cue)\n\n    def broadcast_state_change(self, new_state):\n        \"\"\"Inform all performers of story state change\"\"\"\n        for performer in self.performers:\n            self.send_cue(\n                performer,\n                'state_change',\n                new_state,\n                urgency='low'\n            )\n```\n\n## Documentation and Planning\n\n### Show Bible Structure\n\n```markdown\n## [Show Title] Production Bible\n\n### Concept\n- Logline (one sentence)\n- Themes\n- Audience experience goals\n\n### Narrative\n- Story summary (non-branching core)\n- Branch points and options\n- Endings (and how reached)\n- Character breakdowns\n\n### Space\n- Venue requirements\n- Zone map\n- Artifacts inventory\n- Technical requirements\n\n### Interactivity\n- Choice points catalog\n- Participation mechanics\n- Edge cases and recovery\n\n### Operations\n- Audience journey map\n- Performer tracks\n- Stage management protocol\n- Emergency procedures\n```\n\n### Run Sheet Format\n\n```\nTIME    | BEAT           | ACTION                | TRIGGERS\n--------|----------------|----------------------|------------------\n0:00    | GATHERING      | Audience enters      | N\u002FA\n0:15    | INTRO          | Host welcome         | All present\n0:20    | CHOICE 1       | Vote on path         | 2 min timer\n0:22    | BRANCH A or B  | Split audience       | Vote result\n...     | ...            | ...                  | ...\n1:45    | CONVERGENCE    | All paths meet       | All groups arrive\n2:00    | FINALE         | Final choice         | Timer\n2:10    | END            | House lights         | Applause\n```\n\n## Best Practices\n\n### Designing for Failure\n\n- Plan for empty rooms (no one chooses that path)\n- Plan for crowded rooms (everyone chooses same path)\n- Plan for confused audiences (unclear instructions)\n- Plan for disruptive participants (graceful management)\n- Plan for technical failures (degraded mode operation)\n\n### Rehearsal Process\n\n1. **Paper prototype**: Walk through on paper first\n2. **Block rehearsal**: Test spacing and movement\n3. **Branch rehearsals**: Practice each path separately\n4. **Integration**: Run full show with choices\n5. **Audience tests**: Invited audience for feedback\n6. **Tech**: Add all technical elements\n7. **Previews**: Public performances for refinement\n\n## References\n\n- `references\u002Fchoice-architecture.md` - Designing meaningful decisions\n- `references\u002Fimmersive-case-studies.md` - Notable productions analysis\n- `references\u002Flive-systems-tech.md` - Technical implementation patterns\n",{"name":5,"license":15,"triggers":39,"description":7,"organ_affinity":43,"governance_phases":45},[40,41,42],"user-asks-about-theatre","user-asks-about-interactive-narrative","context:performance",[44],"organ-ii",[25,26],"main","4d2fb89cdfb75f3f6fd3c6c5ec9ad90ea129eb3c","ai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fcreative\u002Finteractive-theatre-designer",1,"https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai","https:\u002F\u002Fgithub.com\u002Fluokai0","a solo builder.","2026-05-06 04:29:04",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill interactive-theatre-designer",{"tool":60,"command":61},"bunx","bunx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill interactive-theatre-designer",{"tool":63,"command":64},"pnpm","pnpm dlx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill interactive-theatre-designer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fcreative\u002Finteractive-theatre-designer\u002FSKILL.md",true,[68,74,78],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fchoice-architecture.md","REFERENCE","参考文档",7576,"https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fcreative\u002Finteractive-theatre-designer\u002Freferences\u002Fchoice-architecture.md",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fimmersive-case-studies.md",5106,"https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fcreative\u002Finteractive-theatre-designer\u002Freferences\u002Fimmersive-case-studies.md",{"path":79,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Flive-systems-tech.md",7147,"https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fcreative\u002Finteractive-theatre-designer\u002Freferences\u002Flive-systems-tech.md",[83,110,127,156,188,225],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":34},"01M6F2SKTE208174C7S7JJCZC7","write-contracts","Generates secure Aptos Move V2 smart contracts with Object model, Digital Asset integration, security patterns, and storage type guidance. Includes comprehensive storage decision framework for optimal data structure selection. Triggers on: 'write contract', 'create NFT collection', 'build marketplace', 'implement minting', 'generate Move module', 'create token contract', 'build DAO', 'implement staking'. Ask storage questions when: 'store', 'track', 'registry', 'mapping', 'list', 'collection'.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fwrite-contracts\u002FSKILL.md",[],[90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109],"write","contracts","write contracts","storage","secure","create","generate","collection","model","decision","ask","smart-contracts","selection","objects","structure","nft","token","aptos","critical","move",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":34},"01M6F2RFXJ6T9MKW0A7N7GM45B","web-search","通用网络搜索技能，支持多引擎搜索（百度、必应、DuckDuckGo），无需API密钥即可获取实时信息","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fweb-search-ex-skill\u002FSKILL.md",[],[117,118,119,120,121,122,123,124,125,126],"web","search","web search","搜索","baidu","bing","duckduckgo","百度","多引擎","internet",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":138,"publishedAt":34},"01M6F2K968G1FZEZFPW2E6B222","solo-build","Execute implementation plan tasks with TDD workflow, auto-commit, and phase gates. Use when user says \"build it\", \"start building\", \"execute plan\", \"implement tasks\", \"ship it\", or references a track ID. Do NOT use for planning (use \u002Fplan) or scaffolding (use \u002Fscaffold).","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fsolo-build\u002FSKILL.md",[133],{"categoryNo":134,"categoryName":135,"taxonomyType":136,"taxonomyTypeDesc":137},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[26,139,140,141,142,143,144,145,118,146,147,148,90,149,150,151,152,153,154,155],"solo","solo build","MCP","workflow","commit","tasks","code","Bash","plan","read","auto","references","context7","query","scaffolding","ship it","project",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":168,"publishedAt":34},"01M6F2GKN39SGHSPWYB3662YC8","react-email","Use when building HTML email templates with React components, adding a visual email editor to an application using the React Email visual editor, rendering emails to HTML, or sending emails with Resend. Covers welcome emails, password resets, notifications, order confirmations, newsletters, transactional emails, and the embeddable email editor component.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Freact-email-skills\u002FSKILL.md",[162,165],{"categoryNo":163,"categoryName":164,"taxonomyType":136,"taxonomyTypeDesc":137},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":166,"categoryName":167,"taxonomyType":136,"taxonomyTypeDesc":137},"01JBSEEDCAT000000000000009","前端开发",[169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,33],"react","email","react email","github","editor","components","react components","component","welcome","https","notifications","password","node","use","html","resend","visual","emails","rendering",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":206,"publishedAt":34},"01M6F2FBVGVDFSG8SSFJGXA40C","APITester Agent-Driven API Testing","Test API endpoints and document responses. Define tests in plain English, run them, get formatted results. Agent-driven Postman alternative.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fopenclaw-api-tester\u002FSKILL.md",[194,197,200,201],{"categoryNo":195,"categoryName":196,"taxonomyType":136,"taxonomyTypeDesc":137},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":198,"categoryName":199,"taxonomyType":136,"taxonomyTypeDesc":137},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":134,"categoryName":135,"taxonomyType":136,"taxonomyTypeDesc":137},{"categoryNo":202,"categoryName":203,"taxonomyType":204,"taxonomyTypeDesc":205},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224],"testing","api","api testing","driven","APITester Agent Driven API Testing","test","run","postman","results","plain english","tester","endpoints","document","get","define","tests","english","api-tester",{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":231,"publishedAt":34},"01M6F273Y3NGAPVJZ608BC0G9G","hubspot-implementation-plan","Generate a phased implementation plan from a HubSpot audit report. Creates prioritized, sequenced cleanup processes with effort estimates, dependencies, and automation feasibility. Use after running \u002Fhubspot-audit.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fhubspot-implementation-plan\u002FSKILL.md",[],[147,232,233,234,235,236,237,96,238,239,240,241,242,182,243,244,33,245],"implementation","hubspot","hubspot implementation plan","automation","feasibility","cleanup","planning","report","audit","audit report","phased implementation","dependencies","processes","hubspot audit"]