Agent skill · Audited from source
remotion-best-practices
skill · digitalsamba/claude-code-video-toolkitMIT licenceAudited 29 Oct 2026 · source 11df17db21da
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.
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
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
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | WARN | 2 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | FAIL | 19 |
L2 Instructions | Prompt injection, authority framing, hidden directives | FAIL | 4 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: critical finding, no behavioural pass.
Findings (25)
CRITICALObfuscation / stealthobf.decode_then_exec · docker/modal-sadtalker/app.py:198
b64decode( ... subprocess.
- Why
- decodes a payload and executes it
- Fix
- —
HIGHCode injectioncode.eval_exec · docker/modal-propainter/app.py:127
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
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
1. Read .env
- Why
- asks the agent to read credentials
- Fix
- —
HIGHPrompt injectionprompt.credential_read · .claude/commands/setup.md:498
1. Read the current .env file
- Why
- asks the agent to read credentials
- Fix
- —
HIGHPrompt injectionprompt.credential_read · .claude/commands/setup.md:508
# 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
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
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
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
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
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
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
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
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
" 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
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
} from '../../../../../lib/components';
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · examples/hello-world/src/components/core/index.ts:21
} from '../../../../../lib/components';
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · examples/hello-world/src/components/demos/DemoSection.tsx:2
import { useTheme } from '../../config/theme';- Why
- No further detail recorded for this rule.
- Fix
- —
LOWObfuscation / stealthobf.decode_call · docker/modal-flux2/app.py:205
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
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
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
Body=base64.b64decode(output_base64),
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWObfuscation / stealthobf.decode_call · docker/modal-ltx2/app.py:607
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
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 "
git clone https://github.com/digitalsamba/claude-code-video-toolkit git -C claude-code-video-toolkit checkout 11df17db21da
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
| Agent | Status | More |
|---|---|---|
| Claude Code | Mentioned in its text, not tested | Skills for Claude Code · About Claude Code |
| Claude Desktop | Mentioned in its text, not tested | Skills for Claude Desktop · About Claude Desktop |
| Codex | Mentioned in its text, not tested | Skills for Codex · About Codex |
| Cursor | Mentioned in its text, not tested | Skills for Cursor · About Cursor |
| OpenClaw | Mentioned in its text, not tested | Skills for OpenClaw · About OpenClaw |
Audit history
Every audit, every source change
- ✕BLOCK F 47 / 100
first audit · source
11df17db21da
README badge
For maintainers · shows the latest audit
[](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.
Similar skills
All coding & review skills →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,…
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,…
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…
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…
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…
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.
Add this badge to your README
[](https://modelsatlas.com/skills/digitalsamba/remotion-best-practices/)
<a href="https://modelsatlas.com/skills/digitalsamba/remotion-best-practices/"><img src="https://modelsatlas.com/skills/digitalsamba/remotion-best-practices/badge.svg" alt="ModelsAtlas: BLOCK F"></a>
Questions about remotion-best-practices
What does the remotion-best-practices skill do?
Is remotion-best-practices safe to install?
What can remotion-best-practices access on my machine?
Which assistants does remotion-best-practices work with?
How current is this page?
Sources
- github.com/digitalsamba/claude-code-video-toolkit — the audited source at commit 11df17db21da and every finding aboveObserved · 29 Oct 2026
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.
- What does the remotion-best-practices skill do?
- Is remotion-best-practices safe to install?
- What can remotion-best-practices access on my machine?