Remotion Best Practices
lyonjs/shortvid.io
Best practices for Remotion - Video creation in React. An agent skill from lyonjs/shortvid.io.
Create and edit React video compositions in the Pneuma Remotion workspace.
$ npx skills add pandazki/pneuma-skills --skill pneuma-remotion -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-remotion --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/pandazki/pneuma-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/modes/remotion/skill .claude/skills/pneuma-remotion && 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 "pneuma-remotion" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/remotion/skill into .claude/skills/pneuma-remotion/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-remotion", 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/pandazki/pneuma-skills/tree/main/modes/remotion/skillType 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 pandazki/pneuma-skills --skill pneuma-remotion -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-remotion --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/modes/remotion/skill .agents/skills/pneuma-remotion && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pneuma-remotion" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/remotion/skill into .agents/skills/pneuma-remotion/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-remotion", 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 pandazki/pneuma-skills --skill pneuma-remotion -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-remotion --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/modes/remotion/skill .cursor/skills/pneuma-remotion && 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 "pneuma-remotion" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/remotion/skill into .cursor/skills/pneuma-remotion/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-remotion", 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/pandazki/pneuma-skills.git --path modes/remotion/skill--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 pandazki/pneuma-skills --skill pneuma-remotion -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-remotion --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/modes/remotion/skill .gemini/skills/pneuma-remotion && 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 "pneuma-remotion" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/remotion/skill into .gemini/skills/pneuma-remotion/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-remotion", 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 pandazki/pneuma-skills pneuma-remotionInstalls 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 pandazki/pneuma-skills --skill pneuma-remotion -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/modes/remotion/skill .github/skills/pneuma-remotion && 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 "pneuma-remotion" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/remotion/skill into .github/skills/pneuma-remotion/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-remotion", 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 pandazki/pneuma-skills --skill pneuma-remotion -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-remotion --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/modes/remotion/skill .opencode/skills/pneuma-remotion && 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 "pneuma-remotion" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/remotion/skill into .opencode/skills/pneuma-remotion/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-remotion", 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.
pneuma-remotionCreate and edit React video compositions in the Pneuma Remotion workspace.
Pneuma Remotion is an agent skill from pandazki/pneuma-skills. Create and edit React video compositions in the Pneuma Remotion workspace. Use for composition code, animation timing, playback, and export tasks rendered in the live video viewer.
Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 48 other files, including reference files (for example `references/color-and-contrast.md`, `references/motion-design.md` and `references/spatial-design.md`).
It sits in Media & Creative, covering Video production. It works with Remotion and React. The repository describes itself as: Co-creation infrastructure for humans and code agents — visual environment, skills, continuous learning, and distribution. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0023d3c. 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:
curlnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl and npx, 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.
Pneuma Remotion loads about 5.4k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 49 tokens; SKILL.md has 2,189 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 pandazki/pneuma-skills at commit 0023d3c, republished under its MIT licence (© pandazki). 2,189 words, ~5,368 tokens.
.claude/skills/pneuma-remotion/SKILL.md (or your agent's skills folder). This skill also uses 45 other files; get the full folder from GitHub.Create programmatic videos with React and Remotion inside the Pneuma workspace. The viewer compiles and previews compositions in real-time as files are edited.
The Pneuma viewer for Remotion is a Player panel with frame-accurate scrubbing. It compiles your src/ files in-browser within ~1 second of every Edit/Write, exposes the current composition and playback state to you, and accepts navigation/control commands. Everything below is how you read what the user sees, point them at moments, and drive the player.
Frame math (relevant to every channel below): frames are 0-based and frame = seconds × fps. Default fps is 30, so 2 seconds = frame 60.
User messages may include a <viewer-context mode="remotion"> block carrying:
src/Root.tsx).Root.tsx (the dropdown list).src/.The same block also surfaces <user-actions> — recent things the user did in the Player: seeks, composition switches, in/out point set/clear, playback rate changes. Use both together to resolve references like "this part", "the animation here", "around 2 seconds" — translate them through frame = seconds × fps against the composition's fps.
Remotion has one vocabulary for "which object in the viewer". The same
shape — a ViewerAddress — is what a <viewer-locator> card points at and
what the Address: line of a <viewer-context> reports back to you.
| Key | Half | Meaning |
|---|---|---|
file | coarse | Composition ID from Root.tsx. |
frame | fine | A specific frame within the composition (reported in <viewer-context>). |
inFrame / outFrame | fine | A loop range — when both are set the Player loops over that span. |
When the user is watching a composition, the Address: line in
<viewer-context> hands you a ready-made {file, frame} ViewerAddress — copy
that JSON straight back into a <viewer-locator> card.
After creating or editing compositions, embed locator cards in your reply so the user can jump straight to what changed. The address attribute is a ViewerAddress:
file — composition ID from Root.tsx (required).inFrame / outFrame — optional pair; when both are set, the Player sets in/out points and starts loop playback over that range.Open a composition:
<viewer-locator label="Open MyComposition" address='{"file":"MyComposition"}' />Loop a specific range (example: a hero shot from 3s to 5s at 30fps → frames 90-150):
<viewer-locator label="Loop hero shot" address='{"file":"MyComposition","inFrame":90,"outFrame":150}' />Reach for the loop variant whenever you modified timing in a specific section, added a new scene, or changed a transition — it lets the user see exactly what changed without scrubbing.
The viewer exposes 4 agent-callable actions for driving the Player. Invoke them with POST $PNEUMA_API/api/viewer/action.
| Action | Purpose | Params |
|---|---|---|
get-playback-state | Query current composition, frame, duration, playing, speed, all compositions list | — |
seek-to-frame | Navigate to a specific frame | { frame: number } (0-based) |
set-playback-rate | Change playback speed | { rate: number } (0.25 – 4) |
set-composition | Switch the active composition in the viewer | { compositionId: string } |
Example — seek to the start of the hero shot (frame 90 = 3s at 30fps):
curl -X POST "$PNEUMA_API/api/viewer/action" \
-H "Content-Type: application/json" \
-d '{"actionId":"seek-to-frame","params":{"frame":90}}'Prefer locator cards for "look at this" — they're cheaper and the user controls the click. Reach for actions when you need to drive the Player synchronously (e.g. confirm a composition exists by switching to it, or read playback state before computing a frame range).
When running in the Electron desktop client, $PNEUMA_API/api/native/* exposes file-system and OS bridges (open path, reveal in finder, etc.). Web sessions return { available: false } — always handle that case.
width={{{compositionWidth}}} height={{{compositionHeight}}} unless the user requests otherwise..claude/, .pneuma/, or node_modules/.src/ directory.Video creation follows three stages. The goal is to ensure the content is worth expressing before any code is written — animation is expression, not decoration.
A compelling video requires understanding the subject with enough breadth and depth to find the angle worth expressing. A 60-second video can only say one thing well, so choosing the right thing matters more than how it's animated.
Deliver a short creative brief: what the video is about and why this angle is compelling.
Not everything should move. Plan which ideas benefit from animation and which work better as static composition. This prevents the common trap of animating everything uniformly.
For each section of content, assign a motion intent:
| Intent | When to use | Example |
|---|---|---|
| static | The idea is clear as text/image | A definition, a quote |
| subtle | Light emphasis helps | A fade-in, a gentle scale |
| animated | Motion carries meaning | A data comparison, a process flow |
| hero | The memorable moment | The key insight, the reveal |
Every video needs one hero moment — the scene that gets the most animation investment and makes the video memorable.
Guidelines for motion intent:
Assemble the full plan before writing code:
Present this outline and wait for confirmation before coding. Changing direction mid-implementation is expensive.
When to compress this process:
The Pneuma viewer automatically compiles and previews compositions as files are edited (1-second debounce). No dev server startup needed.
Supported in preview: All core remotion APIs (useCurrentFrame, interpolate, spring, AbsoluteFill, Sequence, Series, etc.) and local file imports within src/.
Static assets go in public/ and are referenced with staticFile():
import { Img, staticFile } from "remotion";
<Img src={staticFile("logo.png")} /> // → public/logo.pngNot supported in preview: External packages like @remotion/google-fonts, @remotion/three, @remotion/motion-blur. These require running npx remotion studio separately.
| File | Purpose |
|---|---|
src/index.ts | Entry point (registerRoot()) |
src/Root.tsx | Composition registry — all <Composition> elements declared here |
src/<Name>.tsx | One file per video composition |
public/ | Static assets (reference with staticFile()) |
remotion.config.ts | CLI configuration |
Keep one composition per file. Register every new composition in src/Root.tsx.
When a Pneuma Remotion session opens fresh (no src/), this is the minimum shape that compiles and previews. Use it as the anchor for new projects — adapt the aesthetic, but don't invent a different file layout or skip the registration pattern.
// src/index.ts — only runs in the Remotion CLI; the in-browser preview
// imports Root.tsx directly and is allowed to be absent here.
import { registerRoot } from "remotion";
import { RemotionRoot } from "./Root";
registerRoot(RemotionRoot);// src/Root.tsx — the ONE file the viewer parses to discover compositions.
// Every <Composition id> becomes a tab in the player's composition switcher.
// durationInFrames must be an integer; compute it from your timing plan
// (frame = seconds × fps) rather than hard-coding round numbers that don't
// match the inner Sequence layout.
import { Composition } from "remotion";
import { Intro } from "./Intro";
export const RemotionRoot: React.FC = () => (
<>
<Composition
id="Intro"
component={Intro}
durationInFrames={180} // 6s at 30fps
fps={30}
width={1280}
height={720}
/>
</>
);// src/Intro.tsx — one composition per file. Common idioms in one place:
// AbsoluteFill for the canvas, Sequence for time segments, useCurrentFrame
// + interpolate for tweens, spring for organic motion. Tokens hoisted to
// the top of the file so they're easy to scan and tune.
import React from "react";
import {
AbsoluteFill,
Sequence,
useCurrentFrame,
useVideoConfig,
interpolate,
spring,
Easing,
} from "remotion";
// Tokens hoisted so palette + type live near the top of the file.
const C = { bg: "#f4efe8", fg: "#2d2621", accent: "#b85c3a" };
const FONT_DISPLAY = "'Fraunces', 'Georgia', serif";
const expoOut = Easing.out(Easing.exp);
export const Intro: React.FC = () => {
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
// Spring for the title's settle — natural deceleration, not a linear ramp.
const titleScale = spring({ frame, fps, config: { damping: 14, stiffness: 110 } });
// Interpolate for opacity tweens — easier to read than spring for fades.
const titleOpacity = interpolate(frame, [0, 18], [0, 1], { easing: expoOut, extrapolateRight: "clamp" });
return (
<AbsoluteFill style={{ background: C.bg, color: C.fg, fontFamily: FONT_DISPLAY }}>
<Sequence from={0} durationInFrames={90}>
<h1 style={{ fontSize: 96, opacity: titleOpacity, transform: `scale(${titleScale})` }}>
Title
</h1>
</Sequence>
<Sequence from={90} durationInFrames={90}>
{/* next beat — body, lower third, asset, etc. */}
</Sequence>
</AbsoluteFill>
);
};A few non-negotiables this skeleton encodes — keep them when you build the user's project:
src/Root.tsx is the ONLY file the viewer scans for <Composition>. Adding a <Composition> anywhere else is silently invisible.durationInFrames integer, fps integer, dimensions multiples of 2. Off-by-one durations make the trim/loop UI behave oddly.Root.tsx. Multi-composition files make the viewer's per-composition active-file tracking ambiguous.public/, referenced via staticFile("name.png"). Imports of binary assets in src/ don't resolve in the in-browser preview.When the user picks a gallery seed, you'll find the same shape but with more aesthetic content — read those files for richer motion + typography patterns. When the workspace is empty, this skeleton is the starting point.
Video is the most aesthetically exposed medium — every frame is a visual artifact with nowhere to hide. Unlike a web app where functionality can compensate for mediocre aesthetics, a generic-looking video is just... generic. The goal is for someone to ask "how was this made?" rather than "which AI made this?"
These patterns have become strong signals that a video was AI-generated. They're not inherently bad techniques, but their combination is now a fingerprint:
If a video hits 3+ of these, it's worth reconsidering the design direction.
Strong videos commit to a clear aesthetic stance rather than playing it safe. Some directions to consider (not exhaustive — the content should drive the choice):
Write the chosen direction as a comment at the top of each composition file. This anchors decisions and prevents style drift during implementation.
Typography — often the primary visual element in video:
@remotion/google-fonts — see rules/fonts.md and references/typography.md.Color — see references/color-and-contrast.md:
Motion — see references/motion-design.md:
Easing.out(Easing.exp) is a strong default (snappy, confident).Layout — see references/spatial-design.md:
Before delivering, review these questions. They're diagnostic, not pass/fail — if several feel wrong, it's worth a revision pass:
The references/ directory contains detailed guidance. Read the relevant file when making design decisions in that area:
| Decision area | Reference |
|---|---|
| Font choice, sizing, weight, pairing | references/typography.md |
| Color palette, OKLCH, tinted neutrals | references/color-and-contrast.md |
| Spacing, grids, visual hierarchy | references/spatial-design.md |
| Easing curves, stagger, pacing | references/motion-design.md |
| Copy, labels, voice | references/ux-writing.md |
Remotion drives all animation through frame counting, not CSS:
useCurrentFrame() and interpolate() / spring(). CSS transitions and Tailwind animation classes (transition-*, animate-*) don't work in Remotion's rendering pipeline — they produce inconsistent results across frames.seconds * fps rather than raw frame counts for readability.type (not interface) for component props.Read individual rule files on demand when the topic is relevant:
Fundamentals
useCurrentFrame, interpolate patternsAssets & Media
<Img> componentText & Typography
Visual Effects
Audio & Captions
Advanced
© pandazki, 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 45 other files (references) in modes/remotion/skill of pandazki/pneuma-skills.
Open the folder on GitHubat commit 0023d3c
Pneuma Remotion 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 |
|---|---|---|---|---|---|---|
| Pneuma Remotion this skillpandazki/pneuma-skills | 161 | — | ~5.4k | Automated safety check: Pass | MIT | |
| Remotion Best Practiceslyonjs/shortvid.io | 147 | 33 repos | ~1k | Automated safety check: Pass | MIT | |
| Remotion to HyperFrames Porterheygen-com/hyperframes | 60k | 3 repos | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Anything2explainerVincentwei1021/anything2explainer | 2.4k | — | ~2.7k | Automated safety check: Pass | Custom licence | |
| Remotion Motion Graphicshaidrrrry/claude-remotion-skill | 340 | — | ~2k | Automated safety check: Pass | MIT | |
| Remotion BitsMarve10s/Better-Fullstack | 756 | 1 repos | ~8.2k | Automated safety check: Pass | MIT |
lyonjs/shortvid.io
Best practices for Remotion - Video creation in React. An agent skill from lyonjs/shortvid.io.
heygen-com/hyperframes
Ports an existing Remotion (React) composition to HyperFrames HTML with GSAP, one way, and grades the result against a tiered set of reference fixtures.
Vincentwei1021/anything2explainer
给一个主题,产出一条黑底 MG 风格(幕底可选星点或点阵波)、有配音字幕章节进度条的科普讲解视频(中文或英文;Remotion 代码动画;时长由用户定,常用 3–5 分钟)。内含可编译模板、图元库、配音/分镜/渲染工具、风格与动效规范、多 agent 分工协议与 QC 判据,以及一条完整样片(《RAG 与知识库》)作为质量标尺。Turn any topic into a narrated…
haidrrrry/claude-remotion-skill
Create and edit professional motion graphics videos with Remotion (React-based video).
Marve10s/Better-Fullstack
Animation components and utilities for Remotion video projects.
Marve10s/Better-Fullstack
Create Remotion videos using the Geist design system aesthetic.
pandazki/pneuma-skills
Explain something by writing it on a board. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
AI-orchestrated video production on @pneuma-craft. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Lucid Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Plotwise workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Sprite Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma WebCraft Mode workspace guidelines with Impeccable.style design intelligence.
Categories
Create and edit React video compositions in the Pneuma Remotion workspace. Pneuma Remotion is an agent skill from pandazki/pneuma-skills. Create and edit React video compositions in the Pneuma Remotion workspace.
Pneuma Remotion fits situations like: composition code; animation timing; export tasks rendered in the live video viewer.
Run `npx skills add pandazki/pneuma-skills --skill pneuma-remotion -a claude-code`. Or copy the skill folder (modes/remotion/skill in pandazki/pneuma-skills) into .claude/skills/pneuma-remotion in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pandazki/pneuma-skills --skill pneuma-remotion -a codex`. Or copy the skill folder (modes/remotion/skill in pandazki/pneuma-skills) into .agents/skills/pneuma-remotion 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 pandazki/pneuma-skills --skill pneuma-remotion -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pneuma-remotion, .gemini/skills/pneuma-remotion, .github/skills/pneuma-remotion and .opencode/skills/pneuma-remotion in your project.
Going by SKILL.md and its folder, Pneuma Remotion needs the command-line tools its instructions call (curl and npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use curl and npx, 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.
Pneuma Remotion is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.4k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Pneuma Remotion: Remotion Best Practices (lyonjs/shortvid.io, 147 stars), Remotion to HyperFrames Porter (heygen-com/hyperframes, 60k stars), Anything2explainer (Vincentwei1021/anything2explainer, 2.4k stars) and Remotion Motion Graphics (haidrrrry/claude-remotion-skill, 340 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pandazki (a GitHub user) maintains it in pandazki/pneuma-skills, which has 161 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 9, 2026.
Source: pandazki/pneuma-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.