Claude-skill-registry digital-samba

Build video conferencing integrations using Digital Samba's API and SDK. Use when creating meeting rooms, embedding video calls, generating participant tokens, managing recordings, or integrating real-time collaboration features. Triggers include "Digital Samba", "video conferencing API", "embed video calls", "meeting room integration", "WebRTC iframe", "participant tokens".

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/digital-samba" ~/.claude/skills/majiayu000-claude-skill-registry-digital-samba && rm -rf "$T"
manifest: skills/data/digital-samba/SKILL.md
source content

Digital Samba Integration

Build video conferencing into your applications using Digital Samba's prebuilt infrastructure. No WebRTC/Janus/TURN setup required.

Two Integration Approaches

  1. REST API - Server-side room/session/participant management
  2. Embedded SDK - Client-side iframe control and event handling

Quick Start

1. Create a Room (Server-side)

curl -X POST https://api.digitalsamba.com/api/v1/rooms \
  -H "Authorization: Bearer {DEVELOPER_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"friendly_url": "my-meeting", "privacy": "public"}'

2. Generate Access Token (Server-side)

const jwt = require('jsonwebtoken');

const token = jwt.sign({
  td: "team-uuid",      // Your team ID
  rd: "room-uuid",      // Room ID from step 1
  u: "John Doe",        // User display name
  role: "moderator"     // Optional: user role
}, DEVELOPER_KEY, { algorithm: 'HS256' });

3. Embed the Room (Client-side)

<iframe 
  allow="camera; microphone; display-capture; autoplay;" 
  src="https://yourteam.digitalsamba.com/my-meeting?token={jwt}"
  allowfullscreen="true">
</iframe>

4. Control with SDK (Optional)

import DigitalSambaEmbedded from '@digitalsamba/embedded-sdk';

const sambaFrame = DigitalSambaEmbedded.createControl({ 
  url: roomUrl,
  frame: document.getElementById('video-frame')
});

sambaFrame.on('userJoined', (e) => console.log(`${e.data.name} joined`));
sambaFrame.load();

When to Use What

NeedUse
Create/delete roomsREST API
User authenticationJWT tokens
Embed video UIiframe + SDK
Start/stop recordingREST API or SDK
React to eventsSDK events
Manage participantsREST API
Customize UIRoom settings API

Reference Documentation

For detailed information, see these reference files:

Key Concepts

Room Types

  • Public: Anyone with URL can join (enters name on join screen)
  • Private: Requires JWT token to join

Roles & Permissions

Assign roles via JWT

role
field. Common roles:

  • moderator
    - Full control (mute others, recording, etc.)
  • speaker
    - Can present and speak
  • attendee
    - View/listen only (configurable)

Authentication Flow

  1. Developer key → Server-side API calls only
  2. JWT tokens → Client-side room access
  3. Never expose developer key to browsers

Common Errors

CodeMeaningSolution
401Invalid/missing keyCheck Authorization header
403Insufficient permissionsVerify role/permissions
404Room not foundCheck room UUID/URL
422Validation errorCheck request body

Check for Updates

To check if your installed skill is up to date:

  1. Local version:
    cat .claude/skills/digital-samba/VERSION
  2. Latest version:
    curl -s https://api.github.com/repos/digitalsamba/digital-samba-skill/releases/latest | grep '"tag_name"'

To update (submodule install):

git submodule update --remote .claude/skills/digital-samba

To update (manual install): Re-clone and copy skill files from https://github.com/digitalsamba/digital-samba-skill

Resources