Agent skill · Audited from source

remotion-best-practices

skill · digitalsamba/claude-code-video-toolkitMIT licenceAudited 29 Oct 2026 · source 11df17db21da

★ 2,372pushed todayversion 4.0.539
✕BLOCKGrade F · 47/100 · 25 findings · 11df17d
2,372repo stars · whole digitalsamba/claude-code-video-toolkit

Is it safe? No — BLOCK, grade F (47/100). We read this skill's source at commit 11df17db21da and observed filesystem, network and shell access and no hard-coded secrets. The audit raised 25 findings, 6 critical or high. What it does: Create professional videos autonomously using claude-code-video-toolkit — AI voiceovers, image generation, music, talking heads, and Remotion rendering.

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “remotion-best-practices (digitalsamba/claude-code-video-toolkit)”. Retrieved 29 Oct 2026. https://modelsatlas.com/skills/digitalsamba/remotion-best-practices

Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 6 critical or high findings, starting with “Obfuscation / stealth” in docker/modal-sadtalker/app.py:198. Do not install it without reading them.

Trust audit

Audit 0.4.1 · source read 29 Oct 2026

Trust score47/100✕BLOCK F
1 critical5 high2 medium23 low11 info

BLOCK means the audit found something that could harm you or your machine. Grade F is shared by 105 of 14,816 audited skills.

What the source does

  • FilesystemDeclared9 observations
  • NetworkDeclared11 observations
  • ShellDeclared6 observations
  • DependenciesNot pinnedSome versions float
  • SecretsNone foundNo keys in source

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityWARN2
L1 Static sourceSecrets, path traversal, supply chain, hidden codeFAIL19
L2 InstructionsPrompt injection, authority framing, hidden directivesFAIL4
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: critical finding, no behavioural pass.

Findings (25)

CRITICALObfuscation / stealthobf.decode_then_exec · docker/modal-sadtalker/app.py:198
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
b64decode( ... subprocess.
Why
decodes a payload and executes it
Fix
—
HIGHCode injectioncode.eval_exec · docker/modal-propainter/app.py:127
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
fps = eval(fps_str) if "/" in str(fps_str) else float(fps_str or 30)
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
HIGHPrompt injectionprompt.credential_read · .claude/commands/setup.md:26
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
2. Read current .env values (which keys are set vs placeholder)
Why
asks the agent to read credentials
Fix
—
HIGHPrompt injectionprompt.credential_read · .claude/commands/setup.md:431
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
1. Read .env
Why
asks the agent to read credentials
Fix
—
HIGHPrompt injectionprompt.credential_read · .claude/commands/setup.md:498
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
1. Read the current .env file
Why
asks the agent to read credentials
Fix
—
HIGHPrompt injectionprompt.credential_read · .claude/commands/setup.md:508
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
# Read .env, update/add the key, write back
Why
asks the agent to read credentials
Fix
—
MEDIUMInventory / provenanceinv.binary · brands/digital-samba-ai-engineering/assets/voice-design-ref.wav
F-13 Inventory / provenanceCWE-1104Layer L0
voice-design-ref.wav
Why
a compiled or binary member cannot be reviewed from source
Fix
ship source, or explain the binary in the README
MEDIUMNetwork egressnet.raw_ip · tools/qc_layout.mjs:285
F-04 Network egressCWE-200 · CWE-319Layer L1
await page.goto(`http://127.0.0.1:${server.address().port}/index.html`);
Why
No further detail recorded for this rule.
Fix
—
LOWInventory / provenanceinv.binary · tests/render-baseline/public/tone.wav
F-13 Inventory / provenanceCWE-1104Layer L0
tone.wav
Why
a compiled or binary member cannot be reviewed from source
Fix
ship source, or explain the binary in the README
LOWInsecure cryptocrypto.weak_hash · examples/data-viz-chart/build.py:131
F-09 Insecure cryptoCWE-327 · CWE-338Layer L1
key = hashlib.sha1(f"{txt}|{size}|{hex_color}|{bold}".encode()).hexdigest()[:16]
Why
No further detail recorded for this rule.
Fix
—
LOWInsecure cryptocrypto.weak_hash · examples/quick-spot/build.py:101
F-09 Insecure cryptoCWE-327 · CWE-338Layer L1
key = hashlib.sha1(f"{txt}|{size}|{hex_color}".encode()).hexdigest()[:16]
Why
No further detail recorded for this rule.
Fix
—
LOWInsecure cryptocrypto.weak_hash · examples/sky-blue-short/build.py:91
F-09 Insecure cryptoCWE-327 · CWE-338Layer L1
key = hashlib.sha1(f"{txt}|{size}|{fill}".encode()).hexdigest()[:16]
Why
No further detail recorded for this rule.
Fix
—
LOWInsecure cryptocrypto.weak_hash · examples/sky-blue-short/build.py:124
F-09 Insecure cryptoCWE-327 · CWE-338Layer L1
key = hashlib.sha1(f"ph|{scene['slug']}|{accent}|{W}x{H}".encode()).hexdigest()[:16]
Why
No further detail recorded for this rule.
Fix
—
LOWInsecure cryptocrypto.weak_hash · templates/concept-explainer-short/build.py:91
F-09 Insecure cryptoCWE-327 · CWE-338Layer L1
key = hashlib.sha1(f"{txt}|{size}|{fill}".encode()).hexdigest()[:16]
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · examples/ds-crt-stinger/build.py:30
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
"  uv run ../../tools/ltx2.py --lora crt-terminal "
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · examples/hello-world/src/SprintReview.tsx:7
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
import { MazeDecoration } from '../../../lib/components';
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · examples/hello-world/src/components/core/index.ts:13
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
} from '../../../../../lib/components';
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · examples/hello-world/src/components/core/index.ts:21
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
} from '../../../../../lib/components';
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · examples/hello-world/src/components/demos/DemoSection.tsx:2
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
import { useTheme } from '../../config/theme';
Why
No further detail recorded for this rule.
Fix
—
LOWObfuscation / stealthobf.decode_call · docker/modal-flux2/app.py:205
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
return Image.open(io.BytesIO(base64.b64decode(b64))).convert("RGB")
Why
No further detail recorded for this rule.
Fix
—
LOWObfuscation / stealthobf.decode_call · docker/modal-flux2/app.py:271
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
Body=base64.b64decode(output_base64),
Why
No further detail recorded for this rule.
Fix
—
LOWObfuscation / stealthobf.decode_call · docker/modal-image-edit/app.py:183
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
img = Image.open(io.BytesIO(base64.b64decode(b64)))
Why
No further detail recorded for this rule.
Fix
—
LOWObfuscation / stealthobf.decode_call · docker/modal-image-edit/app.py:277
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
Body=base64.b64decode(output_base64),
Why
No further detail recorded for this rule.
Fix
—
LOWObfuscation / stealthobf.decode_call · docker/modal-ltx2/app.py:607
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
img = Image.open(io.BytesIO(base64.b64decode(b64))).convert("RGB")
Why
No further detail recorded for this rule.
Fix
—
LOWSupply chainsupply.unpinned · examples/digital-samba-skill-demo/remotion/package.json
F-08 Supply chainCWE-829 · CWE-1357Layer L1
react, react-dom, @types/react, typescript
Why
4 dependency range(s) float
Fix
pin exact versions or ship a lockfile

Audit 0.4.1 · source sha 11df17db21da · 29 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • Publisherdigitalsamba GitHub organizationOwner of the repository this skill is read from
  • Source folderdigitalsamba/claude-code-video-toolkitThe exact folder we audited
  • LicenceMITAs the repository states it
  • Commit pinned for this verdict11df17db21daA new audit runs when the source changes
  • Repository statusNot archivedPushed today
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: Create professional videos autonomously using claude-code-video-toolkit — AI voiceovers, image generation, music, talking heads, and Remotion rendering.

---
name: video_toolkit
description: Create professional videos autonomously using claude-code-video-toolkit — AI voiceovers, image generation, music, talking heads, and Remotion rendering.
metadata:
  openclaw:
    emoji: "🎬"
    skillKey: "video-toolkit"
    os: ["darwin", "linux"]
    requires:
      bins: ["node", "python3", "ffmpeg", "npm"]
---

# Video Toolkit

Create professional explainer videos from a text brief. The toolkit uses open-source AI models on cloud GPUs (Modal or RunPod) for voiceover, image generation, music, and talking head animation. Remotion (React) handles composition and rendering.

## CRITICAL: Toolkit Path

The toolkit lives at a fixed path. **ALWAYS `cd` here before running any tool command.**

```bash
TOOLKIT=~/.openclaw/workspace/claude-code-video-toolkit
cd $TOOLKIT
```

**NEVER run tool commands from inside a project directory.** Tools resolve paths relative to the toolkit root.

## CRITICAL: Progress Reporting

**ALWAYS add `--progress json` to every cloud GPU tool command.** This gives you structured JSON Lines on stderr so you can monitor job status, detect stuck jobs, and report progress to the user in real-time.

```bash
# CORRECT — always include --progress json
uv run tools/music_gen.py --preset corporate-bg --duration 60 --output bg.mp3 --progress json

# WRONG — no visibility into job status
uv run tools/music_gen.py --preset corporate-bg --duration 60 --output bg.mp3
```

Tools that support `--progress json`: `music_gen.py`, `qwen3_tts.py`, `flux2.py`, `upscale.py`, `sadtalker.py`, `image_edit.py`, `dewatermark.py`, `ltx2.py`, `chain_video.py`.

See the **Progress Reporting** section below for output format and stage definitions.

## CRITICAL: Long-Running Tasks — Use yieldMs, Not background:true

**Any tool command that takes more than 30 seconds MUST use `exec` with `yieldMs` so you can report progress to the user live.** This includes: batch FLUX generation, chain_video, SadTalker, music generation, and any multi-scene pipeline.

```
exec command:"cd ~/.openclaw/workspace/claude-code-video-toolkit && uv run tools/chain_video.py --output-dir /path/ --progress json ..." yieldMs:10000
```

**The polling loop:**
1. `exec` with `yieldMs:10000` starts the command and returns control to you every 10 seconds
2. Read the `--progress json` output — look for `"stage":"item"` (scene complete) or `"stage":"complete"` (all done)
3. Report progress to the user ("Scene 05/30 complete, 17%")
4. Poll again: `process action:poll sessionId:<id>`
5. Repeat until `"stage":"complete"`

**Why:** Your agent run ends when you finish responding. If you use `bash background:true`, you lose the ability to report progress — the user sees silence until they nudge you. With `yieldMs`, you stay in the loop.

**NEVER do this:**
- `bash background:true command:"long running thing"` then promise to "monitor" — you can't, your run ends
- Break a batch into individual tool calls across separate messages — your run ends between each one
- Promise to "continue autonomously" — you literally cannot without an external trigger

## Setup

### Step 1: Check Current State

```bash
cd ~/.openclaw/workspace/claude-code-video-toolkit
uv run tools/verify_setup.py
```

If everything shows `[x]`, skip to "Quick Test" below. Otherwise continue setup.

### Step 2: Install Python Dependencies

```bash
cd ~/.openclaw/workspace/claude-code-video-toolkit
uv sync
```

Note: `uv sync` creates its own `.venv/` from the lockfile, so it sidesteps Debian/Ubuntu's managed-Python restrictions (PEP 668) — no `--break-system-packages` needed. If `uv` is missing, install it first: `curl -LsSf https://astral.sh/uv/install.sh | sh`.

### Step 3: Configure Cloud GPU Endpoints

The toolkit needs cloud GPU endpoint URLs in `.env`. Check if `.env` exists and has Modal endpoints:

```bash
cat ~/.openclaw/workspace/claude-code-video-toolkit/.env | grep MODAL
```

If Modal endpoints are configured, you're ready. If not, **ask the user to provide Modal endpoint URLs** or set up Modal:

```bash
uv sync --extra modal
uv run modal setup   # Opens browser for authentication

# Deploy each tool — capture the endpoint URL from output
cd ~/.openclaw/workspace/claude-code-video-toolkit
uv run modal deploy docker/modal-qwen3-tts/app.py
uv run modal deploy docker/modal-flux2/app.py
uv run modal deploy docker/modal-music-gen/app.py
uv run modal deploy docker/modal-sadtalker/app.py
uv run modal deploy docker/modal-image-edit/app.py
uv run modal deploy docker/modal-upscale/app.py
uv run modal deploy docker/modal-propainter/app.py
uv run modal deploy docker/modal-ltx2/app.py      # Requires: uv run modal secret create huggingface-token HF_TOKEN=hf_...
```

**LTX-2 prerequisite:** Before deploying LTX-2, create a HuggingFace secret and accept the [Gemma 3 license](https://huggingface.co/google/gemma-3-12b-it-qat-q4_0-unquantized):
```bash
uv run modal secret create huggingface-token HF_TOKEN=hf_your_read_access_token
```

Add each URL to `.env`:
```
ACEMUSIC_API_KEY=...                          # Free key from acemusic.ai/api-key (best music quality)
MODAL_QWEN3_TTS_ENDPOINT_URL=https://...modal.run
MODAL_FLUX2_ENDPOINT_URL=https://...modal.run
MODAL_MUSIC_GEN_ENDPOINT_URL=https://...modal.run
MODAL_SADTALKER_ENDPOINT_URL=https://...modal.run
MODAL_IMAGE_EDIT_ENDPOINT_URL=https://...modal.run
MODAL_UPSCALE_ENDPOINT_URL=https://...modal.run
MODAL_DEWATERMARK_ENDPOINT_URL=https://...modal.run
MODAL_LTX2_ENDPOINT_URL=https://...modal.run
```

Optional but recommended — Cloudflare R2 for reliable file transfer:
```
R2_ACCOUNT_ID=...
R2_ACCESS_KEY_ID=...
R2_SECRET_ACCESS_KEY=...
R2_BUCKET_NAME=video-toolkit
```

### Step 4: Verify and Quick Test

```bash
cd ~/.openclaw/workspace/claude-code-video-toolkit
uv run tools/verify_setup.py
```

All tools should show `[x]`. Then run a quick test to confirm the GPU pipeline works:

```bash
cd ~/.openclaw/workspace/claude-code-video-toolkit
uv run tools/qwen3_tts.py --text "Hello, this is a test."

Excerpt, first 6,001 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit 11df17d

npm install
uv run tools/voiceover.py --script VOICEOVER-SCRIPT.md --output public/audio/voiceover.mp3
uv run tools/music.py --prompt "subtle tech ambient" --duration 180 --output public/audio/background-music.mp3
uv run tools/youtube_upload.py --auth
uv run python -c "

Commands as the repository documents them: shown, never run by us. Our verdict covers commit 11df17db21da only.

Works in which agents?

What its own text says, not a test

AgentStatusMore
Claude CodeMentioned in its text, not testedSkills for Claude Code · About Claude Code
Claude DesktopMentioned in its text, not testedSkills for Claude Desktop · About Claude Desktop
CodexMentioned in its text, not testedSkills for Codex · About Codex
CursorMentioned in its text, not testedSkills for Cursor · About Cursor
OpenClawMentioned in its text, not testedSkills for OpenClaw · About OpenClaw
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. ✕BLOCK F 47 / 100

    first audit · source 11df17db21da

README badge

For maintainers · shows the latest audit

ModelsAtlas: BLOCK FMODELSATLASBLOCK · F
[![ModelsAtlas: BLOCK F](https://modelsatlas.com/skills/digitalsamba/remotion-best-practices/badge.svg)](https://modelsatlas.com/skills/digitalsamba/remotion-best-practices/)

The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.

qwen-edit✓SAFE

digitalsamba/claude-code-video-toolkit

AI image editing prompting patterns for Qwen-Image (Qwen-Image-Edit-2511 by default, Qwen-Image-2.1 as a non-commercial Modal opt-in). Use when editing photos while preserving identity, reframing cropped images,…

★ 2.4kGrade B
ffmpeg✓SAFE

digitalsamba/claude-code-video-toolkit

Video and audio processing with FFmpeg. Use for format conversion, resizing, compression, audio extraction, and preparing assets for Remotion. Triggers include converting GIF to MP4, resizing video, extracting audio,…

★ 2.4kGrade B
frontend-design✓SAFE

digitalsamba/claude-code-video-toolkit

Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic…

★ 2.4kGrade B
playwright-recording✓SAFE

digitalsamba/claude-code-video-toolkit

Record browser interactions as video using Playwright. Use for capturing demo videos, app walkthroughs, and UI flows for Remotion videos. Triggers include recording a demo, capturing browser video, screen recording a…

★ 2.4kGrade B
elevenlabs✓SAFE

digitalsamba/claude-code-video-toolkit

Generate AI voiceovers, sound effects, and music using ElevenLabs APIs. Use when creating audio content for videos, podcasts, or games. Triggers include generating voiceovers, narration, dialogue, sound effects from…

★ 2.4kGrade B
Remotion✓SAFE

digitalsamba/claude-code-video-toolkit

Toolkit-specific Remotion patterns — custom transitions, shared components, and project conventions. For core Remotion framework knowledge (hooks, animations, rendering, etc.), see the `remotion-official` skill.

★ 2.3kGrade B

Add this badge to your README

[![ModelsAtlas: BLOCK F](https://modelsatlas.com/skills/digitalsamba/remotion-best-practices/badge.svg)](https://modelsatlas.com/skills/digitalsamba/remotion-best-practices/)

Questions about remotion-best-practices

What does the remotion-best-practices skill do?
AI-native video production toolkit for Claude Code
Is remotion-best-practices safe to install?
No — not without reading the findings first. The audit graded it F (47/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can remotion-best-practices access on my machine?
The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does remotion-best-practices work with?
Its documentation mentions claude-code, claude-desktop, codex, cursor and openclaw. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (11df17db21da), read on 2026-10-29. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.