Activate this skill when users need help with OBS Studio Mode's preview/program workflow — staging scene changes privately, rehearsing transitions, and committing them to the live output. Triggers include "enable studio mode", "preview the next scene", "rehearse a transition", "promote preview to program", "what's queued on preview", or "switch my transition to fade". This skill focuses on the two-scene discipline (program = what viewers see, preview = what's being prepared) rather than general streaming setup.
Expert guidance for OBS Studio Mode, the two-scene preview/program workflow used by broadcast operators to stage changes before putting them on air.
Activate studio-mode-operator when users request help with:
Entering and exiting studio mode
Preview-side staging
Transitions between preview and program
Transition rehearsal
Troubleshooting studio mode
Prefer streaming-assistant for end-to-end stream sessions that only
incidentally touch studio mode; reach for this skill when the user's
primary focus is the preview/program discipline itself.
set_scene bypasses the preview and goes straight to air,
which is almost always the wrong thing. Route through preview +
transition instead.get_studio_mode_enabled at the start of a session.get_studio_mode_enabled - Check whether studio mode is activetoggle_studio_mode - Enable/disable studio modeget_preview_scene - Get the name of the scene currently on previewset_preview_scene - Put a scene on preview (no-op on program)get_current_scene / list_scenes - Inspect program and available scenesset_current_scene - Puts a scene DIRECTLY on program; avoid in
studio mode unless the user explicitly wants to skip the transitionlist_transitions - Available transition types (Cut, Fade, Slide, etc.)get_current_transition - Which transition is defaultset_current_transition - Change the default transition + durationtrigger_transition - Execute the current transition (preview -> program)get_obs_status - Sanity-check OBS is connectedThis is the canonical loop studio-mode operators run on every scene change:
1. User indicates what they want live ("Switch to Gaming")
2. Confirm studio mode is on:
- get_studio_mode_enabled
- If false, ask: "Studio mode is off — do you want to enable it and
rehearse, or just cut directly?"
3. Stage on preview:
- set_preview_scene with the target scene
- get_preview_scene to confirm
- Report: "Gaming is queued on preview; program still shows BRB"
4. Confirm the transition type is appropriate:
- get_current_transition
- If the user said "fade", set_current_transition to "Fade" first
5. Commit to program:
- trigger_transition
- The preview scene becomes the new program; program becomes preview
6. Verify:
- get_current_scene (now Gaming)
- get_preview_scene (now BRB — swapped)
| Situation | Transition | Notes |
|---|---|---|
| Breaking news / reactive cut | Cut | Zero-duration, most responsive |
| Segment boundary, same tone | Fade | 300-500ms feels natural |
| Topic change, different tone | Fade + longer (800ms) | Gives viewer a mental beat |
| Structured show transitions | Slide / Swipe | Signals segment change strongly |
| Intentional "jarring" moment | Stinger | Requires a configured stinger media source |
Always prefer the transition the user specifies by name. If ambiguous ("make it smoother"), increase duration on the current transition before switching to a fancier one.
User: "Go to Gaming"
1. get_studio_mode_enabled → true
2. list_scenes → confirm "Gaming" exists
3. set_preview_scene("Gaming")
4. Report: "Gaming queued on preview. Trigger transition when ready?"
5. User confirms
6. trigger_transition
7. Report: "On air with Gaming"
User: "Enable studio mode and stage the BRB scene"
1. get_studio_mode_enabled → false
2. toggle_studio_mode
3. get_studio_mode_enabled → true (verify)
4. At this point preview mirrors program — inform the user
5. set_preview_scene("BRB")
6. Report: "Studio mode on. BRB on preview, Gaming still on program.
Ready to transition."
User: "Show me how a 1-second fade to Intermission looks before I commit"
1. get_current_transition → {name: "Cut", duration: 0}
2. set_current_transition("Fade", duration_ms: 1000)
3. set_preview_scene("Intermission")
4. Report: "Fade set to 1s, Intermission on preview. Hit trigger to
rehearse — the actual program won't change until you do."
5. User says: "OK, now do it"
6. trigger_transition
7. Confirm new program
User: "Just cut to Emergency scene NOW — something on-camera"
1. Skip preview staging (user signalled urgency)
2. set_current_scene("Emergency")
3. Report: "Emergency scene LIVE. Note: we bypassed preview because
you said NOW — let me know when you want to go back to the
preview/program flow."
This is the ONE time set_current_scene is preferable in studio mode.
Prompt operators to acknowledge they're intentionally skipping preview.
set_preview_scene to diverge them.trigger_transition Does Nothingget_studio_mode_enabled. If false, either enable it or
use set_current_scene for direct cuts.Cut, which ignores duration.set_current_transition to Fade/Slide/etc., THEN duration
applies.set_preview_scene after reconnecting.streaming-assistant) over manual
trigger_transition calls.get_preview_scene / set_preview_scene require studio mode to
be enabled. If studio mode is off, these tools will return an error
— treat that as a signal to toggle studio mode first rather than a
hard failure.