From obs-mgmt
First-run setup for the obs-mgmt plugin. Verifies OBS Studio is installed, enables and configures obs-websocket (bundled in OBS 28+), stores connection details in $CLAUDE_USER_DATA, and registers royshil/obs-mcp as an MCP server in Claude Code so later skills can drive OBS programmatically. Run this once before any other skill in this plugin.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin obs-mgmtThis skill uses the workspace's default tool permissions.
This skill is the prerequisite for every other skill in `obs-mgmt`. After it succeeds, later skills assume:
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
This skill is the prerequisite for every other skill in obs-mgmt. After it succeeds, later skills assume:
obs-mcp MCP server registered in Claude Code.$CLAUDE_USER_DATA/obs-mgmt/config.json.This plugin separates plugin config (small pointers, owned by the plugin) from user-owned data (backups, exported scene collections, notes — owned by the user). Two env vars control where each lives:
| Env var | Purpose | Default if unset |
|---|---|---|
OBS_CONFIG_PATH | Override the auto-detected OBS config directory. Useful for non-standard installs, custom --profile flags, or running multiple OBS configs side by side. | Resolved by detect-install skill from install type. |
OBS_WORKSPACE (the management workspace) | User-owned folder for config backups, exported scene JSON, recording notes, and any docs Claude generates about the user's OBS setup. | Prompt the user during setup; suggest ~/Documents/OBS-Workspace/ or ~/repos/obs-workspace/. |
Setup will:
Resolve the plugin data root for config pointers only:
DATA_ROOT="${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/obs-mgmt"
mkdir -p "$DATA_ROOT"
Bootstrap the management workspace by delegating to the init-workspace skill. That skill prompts for the path, scaffolds the layout (backups/, scenes/, plugins/, docs/), and offers to turn it into a private GitHub repo so the workspace is versioned. Persist the export in ~/.bashrc / ~/.zshrc so it's stable across sessions:
export OBS_WORKSPACE="$HOME/Documents/OBS-Workspace"
Persist pointers in $DATA_ROOT/config.json:
{
"install_type": "native|flatpak|snap|appimage",
"config_path": "/home/<user>/.config/obs-studio",
"workspace_path": "/home/<user>/Documents/OBS-Workspace",
"websocket": { "host": "localhost", "port": 4455 },
"mcp_bundled": true,
"setup_complete": true
}
Never store the websocket password in config.json — it stays in the user's shell env (OBS_WEBSOCKET_PASSWORD).
The workspace layout is scaffolded by init-workspace — see that skill for details. User-owned content (backups, exports, notes) must live under the management workspace, never under $CLAUDE_USER_DATA. Claude can freely write docs/notes/exports into $OBS_WORKSPACE/docs/ to build up a knowledge base about the user's specific OBS rig; if the workspace is a git repo, those writes can be committed for version history.
Delegate to the detect-install skill in this plugin. It returns one of native, flatpak, snap, or missing. If missing, stop and tell the user how to install OBS for their distro; do not proceed.
If the user has set OBS_CONFIG_PATH in their env, prefer that over the auto-detected path and validate it exists and contains a global.ini (the OBS marker file).
OBS 28+ bundles obs-websocket v5. The user must enable it once via the GUI (it cannot be enabled headlessly without editing config files OBS may overwrite):
4455 unless it conflicts.Prompt the user for the password and store it in config.json (chmod 600 the file). Do not echo the password back.
For older OBS (<28), instruct the user to install the standalone obs-websocket plugin from https://github.com/obsproject/obs-websocket/releases and restart OBS before continuing.
This plugin ships royshil/obs-mcp as a bundled MCP server via .mcp.json at the plugin root — no manual claude mcp add needed. When the plugin is enabled, Claude Code spawns the server automatically via npx -y obs-mcp@latest.
The bundled server reads two environment variables:
OBS_WEBSOCKET_URL (default ws://localhost:4455)OBS_WEBSOCKET_PASSWORD (required)Set them in the user's shell profile so they're inherited by Claude Code:
# ~/.bashrc or ~/.zshrc
export OBS_WEBSOCKET_PASSWORD="<password from step 2>"
# Optional, only if non-default:
# export OBS_WEBSOCKET_URL="ws://<host>:<port>"
Reload the shell, then restart Claude Code so the MCP server picks up the new env. Verify with:
claude mcp list
The obs server should appear and report connected.
Prerequisite: Node.js 18+ on PATH so npx can fetch obs-mcp. If the user prefers a pinned local install, they can npm i -g obs-mcp and Claude Code's npx call still resolves it.
In the same Claude Code session (or after a restart so the MCP server loads), call an obs-mcp tool that lists scenes — e.g. GetSceneList or equivalent. A successful response confirms:
If the call fails:
config.json.claude mcp list and re-run step 3.Write config.json with "setup_complete": true and a timestamp. Other skills in this plugin should read this file and refuse to run if setup is incomplete, pointing the user back here.