Screenmap
aleqsio/screenmap
Generate a visual navigation map of an Expo / React Native or NativeScript app.
React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android.
$ npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install software-mansion-labs/skills fishjam-react-native-client --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/software-mansion-labs/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/fishjam/references/react-native-client .claude/skills/fishjam-react-native-client && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "fishjam-react-native-client" agent skill from https://github.com/software-mansion-labs/skills/tree/main/skills/fishjam/references/react-native-client into .claude/skills/fishjam-react-native-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fishjam-react-native-client", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/software-mansion-labs/skills/tree/main/skills/fishjam/references/react-native-clientType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install software-mansion-labs/skills fishjam-react-native-client --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/software-mansion-labs/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/fishjam/references/react-native-client .agents/skills/fishjam-react-native-client && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fishjam-react-native-client" agent skill from https://github.com/software-mansion-labs/skills/tree/main/skills/fishjam/references/react-native-client into .agents/skills/fishjam-react-native-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fishjam-react-native-client", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install software-mansion-labs/skills fishjam-react-native-client --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/software-mansion-labs/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/fishjam/references/react-native-client .cursor/skills/fishjam-react-native-client && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fishjam-react-native-client" agent skill from https://github.com/software-mansion-labs/skills/tree/main/skills/fishjam/references/react-native-client into .cursor/skills/fishjam-react-native-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fishjam-react-native-client", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/software-mansion-labs/skills.git --path skills/fishjam/references/react-native-client--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install software-mansion-labs/skills fishjam-react-native-client --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/software-mansion-labs/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/fishjam/references/react-native-client .gemini/skills/fishjam-react-native-client && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fishjam-react-native-client" agent skill from https://github.com/software-mansion-labs/skills/tree/main/skills/fishjam/references/react-native-client into .gemini/skills/fishjam-react-native-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fishjam-react-native-client", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install software-mansion-labs/skills fishjam-react-native-clientInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/software-mansion-labs/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/fishjam/references/react-native-client .github/skills/fishjam-react-native-client && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fishjam-react-native-client" agent skill from https://github.com/software-mansion-labs/skills/tree/main/skills/fishjam/references/react-native-client into .github/skills/fishjam-react-native-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fishjam-react-native-client", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install software-mansion-labs/skills fishjam-react-native-client --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/software-mansion-labs/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/fishjam/references/react-native-client .opencode/skills/fishjam-react-native-client && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fishjam-react-native-client" agent skill from https://github.com/software-mansion-labs/skills/tree/main/skills/fishjam/references/react-native-client into .opencode/skills/fishjam-react-native-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fishjam-react-native-client", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fishjam-react-native-clientReact Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android.
Fishjam React Native Client is an agent skill from software-mansion-labs/skills. React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android. Use when writing a React Native or Expo app that calls Fishjam, configures the Fishjam Expo plugin, sets up permissions, runs background streaming, integrates CallKit, or renders RTCView. Trigger on: '@fishjam-cloud/react-native-client', 'fishjam expo plugin', 'FishjamProvider mobile', 'useCameraPermissions', 'useMicrophonePermissions', 'useForegroundService', 'useCallKit', 'useCallKitEvent', 'useCallKitService', 'RTCView'…
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files (for example `audio-output.md`, `callkit.md` and `example-projects.md`).
It sits in Mobile, covering Cross-platform mobile apps. It works with React Native, Expo, iOS and React. The repository describes itself as: Software Mansion's set of skills for AI-assisted React Native development. The licence is MIT.
Read from SKILL.md and the folder at commit e3f00cd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx and npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Fishjam React Native Client loads about 1.9k tokens when it runs. Until then it costs about 234 tokens; SKILL.md has 578 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from software-mansion-labs/skills at commit e3f00cd, republished under its MIT licence (© software-mansion-labs). 578 words, ~1,900 tokens.
.claude/skills/fishjam-react-native-client/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.@fishjam-cloud/react-native-client — Fishjam's SDK for React Native / Expo apps on iOS and Android. Re-exports the web @fishjam-cloud/react-client hook surface, overrides some hooks with mobile-aware versions, and adds mobile-only APIs.
Read
../platform/SKILL.mdfirst for the domain model.Read
../react-client/SKILL.mdfor the shared hook catalog. This skill is the mobile delta — permissions, foreground service, screen-share broadcast extension, CallKit, audio routing, the Expo plugin. The hooks that work identically to the web SDK aren't re-documented here.
npm install @fishjam-cloud/react-native-client @fishjam-cloud/react-native-webrtc
# @fishjam-cloud/react-native-webrtc is a peerDependency — install it explicitly.
# Do NOT install upstream `react-native-webrtc` (the unforked package) — it will collide.app.json (Expo):
{
"expo": {
"plugins": [
[
"@fishjam-cloud/react-native-client",
{
"android": {
"enableForegroundService": true,
"enableScreensharing": true
},
"ios": {
"enableScreensharing": true,
"broadcastExtensionTargetName": "MyAppScreenSharing",
"broadcastExtensionDisplayName": "MyApp Screen Sharing",
"appGroupContainerId": "group.com.myapp.screensharing",
"mainTargetName": "MyApp"
}
}
]
]
}
}Then npx expo prebuild to generate native code.
import { FishjamProvider } from '@fishjam-cloud/react-native-client';
export default function App() {
return (
<FishjamProvider fishjamId={process.env.EXPO_PUBLIC_FISHJAM_ID!}>
<Room />
</FishjamProvider>
);
}../react-client/)These hooks behave identically to the web SDK — see ../react-client/ references.
useConnection, useDataChannel, useSandbox, useUpdatePeerMetadata, useVAD, Variant, InitializeDevicesSettings.
useSandboxRoomTypedivergence. The web SDK accepts'audio_only'(underscore); the React Native SDK accepts'audio-only'(hyphen). Passing the wrong form on either platform makes the Sandbox API reject the request. (Web wire format isaudio_only; the RN hook silently sends'audio-only'and the server validation 400s.)
Same call signatures as web; internals adapted to React Native. Read ../react-client/ references for the API, then this skill's mobile-hook-overrides.md for behavioral deltas.
useCamera, useMicrophone, useScreenShare, useCustomSource, useInitializeDevices, useLivestreamStreamer, useLivestreamViewer, usePeers.
| Hook / API | Purpose | Reference |
|---|---|---|
useCameraPermissions, useMicrophonePermissions | Query / request iOS-Android device permissions | permissions.md |
useForegroundService | Keep audio/video/screen-share alive when the app is backgrounded on Android | foreground-service.md |
useCallKit, useCallKitEvent, useCallKitService | iOS CallKit integration (treats Fishjam sessions as native phone calls) | callkit.md |
useAudioOutput + AudioDeviceType | Switch audio routing (speaker / earpiece / Bluetooth) | audio-output.md |
RTCView, RTCPIPView | Native components for rendering video tracks (in place of <video>) | rtcview.md |
ScreenCapturePickerView + startPIP / stopPIP | Native components / functions for iOS screen picker and Picture-in-Picture | screen-sharing.md, picture-in-picture.md |
FishjamProvider differencesThe mobile provider is a thin wrapper around the React one but drops two props:
persistLastDevice — not supported on mobile (no localStorage; OS manages device selection).fishjamClient — internal-only on mobile (the SDK constructs its own with clientType: 'mobile').All other props (fishjamId, reconnect, constraints, bandwidthLimits, videoConfig, audioConfig, debug) work the same as web.
@fishjam-cloud/react-native-webrtc (the fork) — but NOT the upstream react-native-webrtc. The fork is a peerDependency of @fishjam-cloud/react-native-client, so you must add it explicitly. Installing the upstream (unforked) react-native-webrtc will collide with the fork and break the native build.app.json/app.config.ts. For bare: still register and run npx expo prebuild, or do the manual native steps (native-setup.md).useInitializeDevices. iOS in particular will silently fail device init if NSCameraUsageDescription / NSMicrophoneUsageDescription isn't declared and granted.useForegroundService solves this.broadcastExtensionTargetName + appGroupContainerId and the plugin scaffolds it during prebuild.ios.supportsPictureInPicture: true and enableVoIPBackgroundMode: true for CallKit-paired calls.| File | When to read |
|---|---|
native-setup.md | Install + Expo plugin options (Android + iOS), bare workflow manual steps, prebuild flow. |
permissions.md | useCameraPermissions, useMicrophonePermissions, request-before-init pattern. |
rtcview.md | Rendering video — RTCView props (streamURL, trackId, mediaStream), RTCPIPView, mirror / styling. |
screen-sharing.md | Android MediaProjection vs iOS Broadcast Extension; ScreenCapturePickerView; app-group pitfalls. |
foreground-service.md | ForegroundServiceConfig, Android permissions, iOS background modes. |
picture-in-picture.md | RTCPIPView, startPIP, stopPIP, plugin flags. |
callkit.md | useCallKit, useCallKitEvent, useCallKitService, CallKitConfig, CallKitAction. |
audio-output.md | useAudioOutput, AudioDeviceType, switching speaker / earpiece / Bluetooth. |
mobile-hook-overrides.md | Per-hook behavioral deltas vs the web SDK. |
example-projects.md | Runnable apps in the fishjam-cloud/examples repo under mobile-react-native/. |
© software-mansion-labs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files in skills/fishjam/references/react-native-client of software-mansion-labs/skills.
Open the folder on GitHubat commit e3f00cd
Fishjam React Native Client next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fishjam React Native Client this skillsoftware-mansion-labs/skills | 291 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Screenmapaleqsio/screenmap | 239 | — | ~7.2k | Automated safety check: Pass | MIT | |
| ThemingCode-with-Beto/skills | 141 | — | ~2.5k | Automated safety check: Pass | None | |
| Expo Tailwind SetupCherryHQ/cherry-studio-app | 4k | 8 repos | ~3k | Automated safety check: Pass | MIT | |
| Expo Brownfield Integrationmweinbach/agent-coworker | 156 | 2 repos | ~900 | Automated safety check: Notes | Custom licence | |
| Expo UIarcboxlabs/linkcode | 155 | — | ~1.2k | Automated safety check: Pass | MIT |
aleqsio/screenmap
Generate a visual navigation map of an Expo / React Native or NativeScript app.
Code-with-Beto/skills
Scaffold a unified, cross-platform color theme system into an Expo Router app.
CherryHQ/cherry-studio-app
Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
arcboxlabs/linkcode
Framework (OSS). An agent skill from arcboxlabs/linkcode.
entropyconquers/simfleet
Operate a simfleet device fleet: slimmed iOS simulators and Android emulators, parallel React Native worktree lanes with leased Metro ports, the native build cache, and per-agent device claims.
software-mansion-labs/skills
Complete onboarding guide for developers who are new to Detour, the open-source deferred deep linking SDK by Software Mansion.
software-mansion-labs/skills
TypeGPU is type-safe WebGPU in TypeScript. An agent skill from software-mansion-labs/skills.
software-mansion-labs/skills
Enable react-native-worklets Bundle Mode (imports inside worklets, third party libraries on worklet runtimes) in an Expo, RN CLI or brownfield React Native app, including the mandatory…
software-mansion-labs/skills
Software Mansion's moq-kit — native Swift (iOS) and Kotlin (Android) SDKs for Media over QUIC (moq-lite) live streaming: sub-second-latency playback, camera/microphone/screen publishing, and…
software-mansion-labs/skills
Software Mansion's react-native-moq — Media over QUIC (MoQ) live streaming for React Native: sub-second-latency video/audio playback, camera/mic/screen publishing, and realtime data tracks over a…
software-mansion-labs/skills
Software Mansion's guide for migrating Expo SDK apps to Meta Quest using expo-horizon packages.
Works with
Categories
React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android. Fishjam React Native Client is an agent skill from software-mansion-labs/skills. React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android.
Fishjam React Native Client fits situations like: writing a React Native; expo app that calls Fishjam; configures the Fishjam Expo plugin; sets up permissions.
Run `npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a claude-code`. Or copy the skill folder (skills/fishjam/references/react-native-client in software-mansion-labs/skills) into .claude/skills/fishjam-react-native-client in your project. Claude Code loads it when a task matches its description.
Run `npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a codex`. Or copy the skill folder (skills/fishjam/references/react-native-client in software-mansion-labs/skills) into .agents/skills/fishjam-react-native-client in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fishjam-react-native-client, .gemini/skills/fishjam-react-native-client, .github/skills/fishjam-react-native-client and .opencode/skills/fishjam-react-native-client in your project.
Going by SKILL.md and its folder, Fishjam React Native Client needs the command-line tools its instructions call (npx and npm). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Fishjam React Native Client is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Fishjam React Native Client: Screenmap (aleqsio/screenmap, 239 stars), Theming (Code-with-Beto/skills, 141 stars), Expo Tailwind Setup (CherryHQ/cherry-studio-app, 4k stars) and Expo Brownfield Integration (mweinbach/agent-coworker, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
software-mansion-labs (a GitHub organization) maintains it in software-mansion-labs/skills, which has 291 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on September 28, 2026.
Source: software-mansion-labs/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.