---
name: obs-controls
description: Kontrol lengkap OBS Studio via WebSocket untuk manajemen scene, recording, streaming, virtual camera, audio, source, filter, screenshot, dan banyak lagi. Skill ini menyediakan antarmuka async Python lengkap untuk semua fitur OBS WebSocket v5+.
---

# OBS WebSocket Controls

Skill ini menyediakan kontrol lengkap untuk OBS Studio melalui protokol WebSocket v5+. Mendukung semua operasi utama untuk broadcasting profesional.

## Setup

Prerequisites (jalankan sekali sebelum penggunaan pertama):

```bash
pip install websockets
```

Pastikan OBS Studio sudah berjalan dengan:
1. WebSocket server diaktifkan (default port 4455)
2. Password diatur di Settings → WebSocket Server

Buat file `.env` dengan kredensial OBS:

```bash
OBS_HOST=localhost
OBS_PORT=4455
OBS_PASSWORD=your_password
```

## Usage

Aktifkan skill ini dengan perintah `/skill:obs-controls "<command>" [args]`

### Scene Management
- `scene list` - Tampilkan semua scene
- `scene switch <scene_name>` - Pindah ke scene tertentu
- `scene create <scene_name>` - Buat scene baru
- `scene remove <scene_name>` - Hapus scene

### Recording Control
- `record start` - Mulai rekam
- `record stop` - Hentikan rekam
- `record pause` - Jeda rekam
- `record resume` - Lanjutkan rekam
- `record status` - Cek status rekam

### Streaming Control
- `stream start` - Mulai stream
- `stream stop` - Hentikan stream
- `stream status` - Cek status stream
- `stream toggle` - Toggle streaming
- `stream caption <text>` - Kirim caption ke stream

### Virtual Camera
- `virtualcam start` - Mulai virtual camera
- `virtualcam stop` - Hentikan virtual camera
- `virtualcam status` - Cek status
- `virtualcam toggle` - Toggle virtual camera

### Replay Buffer
- `replay start` - Mulai replay buffer
- `replay stop` - Hentikan replay buffer
- `replay save` - Simpan replay terakhir
- `replay status` - Cek status
- `replay toggle` - Toggle replay buffer

### Studio Mode
- `studio enable` - Aktifkan studio mode
- `studio disable` - Nonaktifkan studio mode
- `studio toggle` - Toggle studio mode
- `studio preview <scene>` - Set preview scene
- `studio transition` - Trigger transition

### Source Management
- `source list <scene>` - Daftar semua source di scene
- `source toggle <scene> <source_name>` - Toggle visibility source
- `source create <scene> <input_name> <input_kind>` - Buat source baru
- `source remove <input_name>` - Hapus input

### Audio Control
- `audio mute <input_name>` - Set mute
- `audio unmute <input_name>` - Set unmute
- `audio toggle <input_name>` - Toggle mute
- `audio volume <input_name> <db>` - Set volume (dB)

### Transitions
- `transition list` - Daftar semua transition
- `transition set <name>` - Set transition aktif
- `transition duration <ms>` - Set durasi transition

### Profile & Collection
- `profile list` - Daftar semua profile
- `profile set <name>` - Set profile aktif
- `collection list` - Daftar scene collection
- `collection set <name>` - Set collection aktif

### Screenshots
- `screenshot <source_name> <file_path>` - Simpan screenshot source

### Filters
- `filter list <source>` - Daftar filter pada source
- `filter toggle <source> <filter_name>` - Toggle filter
- `filter create <source> <filter_name> <filter_kind>` - Buat filter
- `filter remove <source> <filter_name>` - Hapus filter

### Browser Source
- `browser refresh <source_name>` - Refresh browser source

### Media Input
- `media play <input_name>` - Putar media
- `media pause <input_name>` - Jeda media
- `media stop <input_name>` - Stop media
- `media status <input_name>` - Cek status media

### Info & Stats
- `status` - Dapatkan status lengkap OBS
- `version` - Info versi OBS
- `stats` - Statistik performa OBS
- `input list` - Daftar semua input
- `input kind list` - Daftar tipe input

### Hotkeys
- `hotkey list` - Daftar semua hotkey
- `hotkey trigger <name>` - Trigger hotkey

## Contoh Penggunaan

```bash
/skill:obs-controls "scene switch Main"
/skill:obs-controls "record start"
/skill:obs-controls "stream start"
/skill:obs-controls "audio mute Mikrofon"
/skill:obs-controls "virtualcam start"
/skill:obs-controls "status"
```

## Fitur Unggulan

1. **Async/Await** - Kode async penuh untuk performa optimal
2. **Auto Authentication** - Menangani auth OBS WebSocket v5+ otomatis
3. **Context Manager** - Dukungan `async with` untuk koneksi otomatis
4. **High-Level Helpers** - Fungsi bantu seperti `get_full_status()` dan `fit_source_to_canvas()`
5. **Error Handling** - Penanganan error yang komprehensif

## Task Logging Rules

Always output task progress using this compact format:

### ✅ Task: [Name]
**Status**: Success | Warning | Error  
**Time**: 2.4s  
**Result**: Short one-line summary  
**Details**:
- Bullet 1
- Bullet 2

Use code blocks only for actual code. Never dump raw JSON or long walls of text.
