Skip to main content
skill CX Codex

fishjam — Claude Code skill for Fishjam WebRTC work

A skill covering the Fishjam platform and its SDKs, so your agent writes backend and client video code without guessing.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add software-mansion-labs/skills --skill fishjam -a claude-code
Open on GitHub

What fishjam does

Fishjam is Software Mansion's hosted WebRTC platform. This skill kicks in before the agent writes, reviews or debugs code that talks to a Fishjam instance — from a Node or Python backend, or from a React, React Native and Expo client. Skip it and the model mixes up the data model and method names.

It routes you to sub-skills under references/. Start with references/platform/SKILL.md for rooms, peers, tracks, tokens and notifications, then pick the one matching your build: js-server-sdk, python-server-sdk, react-client, react-native-client, composition. Svelte, Vue and web workers drop to @fishjam-cloud/ts-client; plain REST lives in references/platform/rest-endpoints.md.

Two things break production. The management token stays on the backend — if it leaks, regenerate it from the Dashboard. A peer token is valid for 24 hours from creation and is consumed during the initial WS handshake, so a peer that has not connected yet, or needs to reconnect later, requires refreshPeerToken (refresh_peer_token). Sandbox API URLs are dev-only: anyone holding one can create rooms on your account, which is why they never ship in a client build.

What it helps with

  • create a room and hand a peer token to a client from Node
  • wire a React app to Fishjam through the provider
  • refresh an expired peer token so a peer can reconnect
  • build a composed stream with overlays and restreaming
  • learn the room, track and notification model before coding

Example prompts for the agent

  • Write an Express backend that creates a Fishjam room and returns a peer token
  • Add FishjamProvider to my React app and connect the camera
  • A peer dropped after a day — how do I refresh its token with refreshPeerToken?

How to install fishjam

1Skills CLI (Vercel)

npx skills add software-mansion-labs/skills --skill fishjam -a claude-code

2Manually: put the files in place

~/.claude/skills/fishjam/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/fishjam/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about fishjam

How do I install fishjam in Claude?

Run npx skills add software-mansion-labs/skills --skill fishjam -a claude-code. The skill lands at ~/.claude/skills/fishjam/SKILL.md.

What does the fishjam skill do?

It teaches the agent the Fishjam platform and routes it to the right sub-skill: server SDKs for Node and Python, client SDKs for React and React Native, plus compositions and REST.

Do I need a backend as well as a client?

In production yes — a Fishjam app usually pairs a server SDK with a client SDK. Prototypes can skip the backend through the Sandbox API, but those URLs must not go into a production client build.

Source text

SKILL.md · MIT
---
name: fishjam
description: "Software Mansion's Fishjam — hosted WebRTC platform for video, audio, one-to-many livestreaming, and compositions. MUST USE before writing, reviewing, or debugging ANY code that talks to a Fishjam instance from a backend (Node, Python) or a client (React web, React Native / Expo). Routes to platform fundamentals and the right SDK sub-skill. Trigger on: 'Fishjam', 'fishjam.io', 'fishjam.swmansion.com', 'fishjam dashboard', 'Fishjam ID', 'management token', 'peer token', 'sandbox API', 'livestream room', '@fishjam-cloud/js-server-sdk', 'fishjam-server-sdk', '@fishjam-cloud/react-client', '@fishjam-cloud/react-native-client', '@fishjam-cloud/ts-client', 'FishjamClient', 'FishjamProvider', 'FishjamNotifier', 'FishjamAgent', 'createPeer', 'createRoom', 'createAgent', 'createLivestreamStreamerToken', 'createMoqToken', 'refreshPeerToken', 'webhook', 'gemini fishjam', 'vapi fishjam', 'fishjam expo plugin', 'Fishjam composition', 'CompositionClient', 'forwardRoomTracks', '@fishjam-cloud/composition'."
license: MIT
---

# Fishjam

Software Mansion's hosted WebRTC platform. Routes between platform fundamentals, the four SDKs, and compositions.

Read the **`references/platform/SKILL.md`** first for the domain model (rooms, peers, tracks, tokens, notifications). Then read the SDK sub-skill that matches what you're building. All sub-skills are in `references/`.

## Which sub-skill do I need?

| You are writing…                                                                  | Sub-skill                                                                                       |
| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Anything Fishjam — start here for glossary, room types, auth, notifications, REST | `references/platform/SKILL.md`                                                                  |
| A Node.js / Express / Fastify / Hono backend                                      | `references/js-server-sdk/SKILL.md`                                                             |
| A Python / FastAPI / Flask backend                                                | `references/python-server-sdk/SKILL.md`                                                         |
| A React app in a browser                                                          | `references/react-client/SKILL.md`                                                              |
| A React Native / Expo app for iOS or Android                                      | `references/react-native-client/SKILL.md`                                                       |
| Vanilla TS / Svelte / Vue / web worker (non-React)                                | `references/react-client/SKILL.md` → `ts-client-escape.md` (drop to `@fishjam-cloud/ts-client`) |
| A composed stream: a call as a broadcast, restreaming, overlays, React templates  | `references/composition/SKILL.md`                                                               |
| Just calling REST directly (no SDK)                                               | `references/platform/rest-endpoints.md`                                                         |

A production Fishjam app always has **a backend (server SDK) + a client (client SDK)**. For prototyping you can skip the backend with the Sandbox API — see `references/platform/sandbox-vs-production.md`.

## Critical rules

- Management token **never** leaves the backend. If it leaks, regenerate it from the Dashboard.
- Peer tokens are valid for **24 hours from creation**. The token is consumed during the initial WS handshake; an established session keeps running on its own. If the peer hasn't connected yet or needs to _reconnect_ after 24h, call `refreshPeerToken` / `refresh_peer_token` to mint a new one.
- Sandbox API URLs are dev-only. Anyone holding one can create rooms on your account — never ship in a production client build.

© software-mansion-labs · MIT · software-mansion-labs/skills

Similar skills

Everything for Backend and APIs →

From the same set6

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor