Agent skill

VidTSX 2D Video Generator

by hassancs91 in hassancs91/claude-faceless-shorts-creator

Generates 2D Remotion-based TSX video files for VidTSX from a shot or scene description, with style presets and rules that keep renders from crashing.

MITAuto-check passedMedia & Creative

Install VidTSX 2D Video Generator

skills CLI
$ npx skills add hassancs91/claude-faceless-shorts-creator --skill vidtsx-2d-generator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install hassancs91/claude-faceless-shorts-creator vidtsx-2d-generator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/hassancs91/claude-faceless-shorts-creator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/vidtsx-2d-generator .claude/skills/vidtsx-2d-generator && rm -rf skills-src

Use ~/.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/

Facts

Skill name
vidtsx-2d-generator
GitHub stars
271
Token cost
~2.8k tokens
SKILL.md length
940 words
Files
2 (incl. references)
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Generates 2D Remotion-based TSX video files for VidTSX from a shot or scene description, with style presets and rules that keep renders from crashing.

  • Works in 5 steps: Clear single shot → generate the .tsx… → Complex, multi-shot, or visually… → Deliver as an actual .tsx file, not… → …
  • Generating a title card or animated clip as a VidTSX TSX file
  • SKILL.md covers How to use this skill, Output spec, Mandatory file structure and Correctness rules, plus 5 more sections
  • Calls node and ffmpeg

What it does

From a description of a shot, scene or short video, the agent writes a `.tsx` file that VidTSX renders frame by frame as a Remotion composition. A clear single shot is generated directly, while a complex, multi-shot or ambiguous request first gets a one-line confirmation of the breakdown. Output is a real file, one shot per file by default, containing only component code under the required section comments, and the agent renders a still, plus frames at each cue for reveals and scrolls, before calling it done.

Defaults are horizontal 1920 by 1080, five seconds at 30 fps and the minimalist style; vertical 1080 by 1920 and square 1080 by 1080 are also available. Six style presets, minimalist, memphis, neo-brutalism, glassmorphism, neon and corporate, are detailed in `references/style-presets.md`. Because a single mistake crashes the render, the correctness rules require frame-based animation only, with no useState, useEffect or setTimeout, strictly increasing `interpolate` ranges, `Easing.bezier` instead of wrapper syntax, and care with chroma-js and `@remotion/paths` imports. 3D work with `@remotion/three`, general React work and editing video files are out of scope.

When your agent uses it

  • Generating a title card or animated clip as a VidTSX TSX file
  • Turning a described scene into a Remotion composition in a chosen style
  • Producing vertical, square or horizontal motion graphics for social platforms

Example prompts

  • “Make a shot: a neon title card that reads Launch Day with a slow zoom.”
  • “Build this scene as a vertical memphis-style clip for Shorts.”
  • “Generate the TSX for a corporate-style horizontal intro with animated bars.”
  • “Turn this into a video: three stat cards that count up one after another.”

Requirements

  • A VidTSX project that renders Remotion compositions

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Clear single shot → generate the .tsx file directly.
  2. Complex, multi-shot, or visually ambiguous request → confirm the shot breakdown or visual direction in one short message first, then…
  3. Deliver as an actual .tsx file, not inline code. These TSX components always exceed 20 lines, and the user edits these files directly…
  4. The file contains only the component code — the structural section comments below are welcome, but no markdown fences, no prose…
  5. Render it and look before calling it done — see Verify the render. A shot you have only reasoned about is not finished; a still (and, for…

What it can do on your machine

Read from SKILL.md and the folder at commit 773054b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • ffmpeg

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

VidTSX 2D Video Generator loads about 2.8k tokens when it runs, and up to ~3.4k if it reads all its reference files. Until then it costs about 241 tokens; SKILL.md has 940 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~241
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.4k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from hassancs91/claude-faceless-shorts-creator at commit 773054b, republished under its MIT licence (© hassancs91). 940 words, ~2,822 tokens.

Download SKILL.mdSave it as .claude/skills/vidtsx-2d-generator/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
vidtsx-2d-generator
description
Generate production-ready 2D TSX video files for VidTSX (Remotion-based) from a shot, scene, or video description. Use whenever the user wants to create or generate a VidTSX video, a 2D TSX shot or scene, an animated clip, title card, or rendered motion graphic — including when they describe a visual animation they want built, or say "make a shot", "build this scene", "generate the TSX", or "turn this into a video". Covers the mandatory file structure and composition config, dimension presets (horizontal/vertical/square), six style presets (minimalist, memphis, neo-brutalism, glassmorphism, neon, corporate), and the hard rules that keep renders from crashing, covering frame-based animation only (no useState/useEffect/setTimeout), strictly monotonic interpolate ranges, Easing.bezier not wrapper syntax, and the chroma-js and @remotion/paths import gotchas. Not for 3D/three.js compositions, general React work, or editing video files.

VidTSX 2D Video Generator

Generate production-ready 2D TSX video files for VidTSX from a description of a shot or video. The files are Remotion compositions that VidTSX renders frame-by-frame, so correctness matters more than cleverness: a single non-monotonic interpolate range or a stray useState will crash the render.

This skill covers 2D motion graphics. 3D work (@remotion/three / React Three Fiber) is out of scope.

How to use this skill

  1. Clear single shot → generate the .tsx file directly.
  2. Complex, multi-shot, or visually ambiguous request → confirm the shot breakdown or visual direction in one short message first, then generate. Don't over-ask; a one-line confirmation is enough.
  3. Deliver as an actual .tsx file, not inline code. These TSX components always exceed 20 lines, and the user edits these files directly. Default to one shot per file (atomic, easy to edit) unless the user asks for a single combined deliverable.
  4. The file contains only the component code — the structural section comments below are welcome, but no markdown fences, no prose explanations inside the file.
  5. Render it and look before calling it done — see Verify the render. A shot you have only reasoned about is not finished; a still (and, for reveals/scrolls, frames at each cue) is the bar.

Output spec

Dimension presets
FormatWidthHeightUse case
horizontal19201080YouTube, presentations
vertical10801920TikTok, Reels, Shorts
square10801080Instagram feed
Defaults
  • Format: horizontal (1920×1080)
  • Duration: 5 seconds
  • FPS: 30
  • Style: minimalist (see references/style-presets.md)

Mandatory file structure

Every generated file follows this skeleton. The labeled section comments are intentional — they keep large files navigable.

tsx
import React from 'react';
import {
  useCurrentFrame,
  useVideoConfig,
  interpolate,
  Easing,
  AbsoluteFill,
  Sequence,
} from 'remotion';

// =============================================================================
// COMPOSITION CONFIG
// =============================================================================
export const compositionConfig = {
  id: 'ComponentName', // PascalCase only — NO hyphens or underscores
  durationInSeconds: 5,
  fps: 30,
  width: 1920,
  height: 1080,
};

// =============================================================================
// STYLE CONSTANTS
// =============================================================================
const COLORS = {
  primary: '#6366f1',
  secondary: '#8b5cf6',
  accent: '#06b6d4',
  background: '#0f0f23',
  text: '#ffffff',
} as const;

const TYPOGRAPHY = {
  fontFamily: 'Inter, system-ui, sans-serif',
} as const;

const EASINGS = {
  easeOut: Easing.bezier(0.33, 1, 0.68, 1),
  easeIn: Easing.bezier(0.32, 0, 0.67, 0),
  easeInOut: Easing.bezier(0.37, 0, 0.63, 1),
  overshoot: Easing.bezier(0.34, 1.56, 0.64, 1),
} as const;

// =============================================================================
// PRE-GENERATED DATA (computed once at module level, NOT during render)
// =============================================================================
const seededRandom = (seed: number): number => {
  const x = Math.sin(seed * 9999) * 10000;
  return x - Math.floor(x);
};

// =============================================================================
// MAIN COMPONENT
// =============================================================================
const ComponentName: React.FC = () => {
  const frame = useCurrentFrame();
  const { fps, durationInFrames, width, height } = useVideoConfig();

  return (
    <AbsoluteFill style={{ backgroundColor: COLORS.background }}>
      {/* Content */}
    </AbsoluteFill>
  );
};

export default ComponentName;

Swap ComponentName for a PascalCase name describing the shot, set the COLORS block from the chosen style preset, and set width/height/durationInSeconds/fps from the request.


Correctness rules

These are not stylistic preferences — they are what makes a render succeed. VidTSX (via Remotion) renders each frame by calling the component at a fixed frame number. There is no event loop, no persistence between frames, and no wall-clock time. Anything that assumes those things will break.

Animation is frame-based, always
  • Drive all motion from useCurrentFrame() + interpolate().
  • Never use useState, useEffect, setTimeout, setInterval, or CSS animations/transitions. They don't fit the frame-by-frame model and produce broken or non-deterministic output.
  • For anything random or procedural, use seededRandom (or an equivalent seeded function) so every render of a given frame is identical. Pre-generate particle/random arrays at module level, never inside the render function — recomputing per frame causes flicker.
  • Stagger animations so elements enter in sequence rather than all at once. It reads better and is the expected look.
interpolate — input ranges must be strictly increasing

interpolate's input range has to be strictly monotonically increasing. Duplicate or descending values throw at runtime.

tsx
// ✅ Correct
interpolate(frame, [0, 30, 60], [0, 1, 0]);

// ❌ Throws — input range descends
interpolate(frame, [60, 30, 0], [0, 1, 0]);

To reverse a mapping, flip the output range, never the input range:

tsx
// ✅ Correct — maps 0→100, 1→0
interpolate(value, [0, 1], [100, 0]);

// ❌ Wrong
interpolate(value, [1, 0], [100, 0]);

For index-based timing, make sure startFrame < endFrame and always clamp:

tsx
const startFrame = index * 30;
const endFrame = startFrame + 30;
interpolate(frame, [startFrame, endFrame], [0, 1], {
  extrapolateLeft: 'clamp',
  extrapolateRight: 'clamp',
});

Always pass extrapolateLeft: 'clamp' and extrapolateRight: 'clamp' unless an unbounded value is genuinely wanted — without them, values shoot past their range before/after the keyframes.

Easing — use Easing.bezier(), never wrapper syntax

Wrapper forms like Easing.out(Easing.cubic) crash. Define named beziers once (see the EASINGS block in the skeleton) and reference them:

tsx
// ❌ Crashes
Easing.out(Easing.cubic);
Easing.in(Easing.quad);

// ✅ Correct
interpolate(frame, [0, 30], [0, 1], {
  easing: EASINGS.easeOut,
  extrapolateRight: 'clamp',
});
chroma-js — namespace import only
tsx
// ✅ Correct
import * as chroma from 'chroma-js';
const color = chroma('#00bfff').brighten(0.5).hex();

// ❌ Wrong — "chroma is not a function"
import chroma from 'chroma-js';
@remotion/paths — only the real functions exist

These helpers do not exist and must never be used: makeCircle(), makeRect(), makeTriangle(), makeLine(), makePie(), makePolygon(), makeEllipse(), makeStar().

Only these imports are valid:

tsx
import { evolvePath, getLength, getPointAtLength, getTangentAtLength } from '@remotion/paths';

Write SVG path strings by hand and animate them with evolvePath:

tsx
const circlePath = 'M 50 10 A 40 40 0 1 1 49.99 10 Z';
const rectPath = 'M 0 0 L 100 0 L 100 50 L 0 50 Z';
const linePath = 'M 0 0 L 100 100';

const { strokeDasharray, strokeDashoffset } = evolvePath(progress, rectPath);
Show full SKILL.md (374 more words)Show less
Composition ID

compositionConfig.id is PascalCase only — no hyphens, no underscores (e.g. ProductReveal, not product-reveal or product_reveal).


Layout

Safe zones
  • Top 10%: reserve for platform UI.
  • Bottom 15%: reserve for captions/buttons.
  • Keep primary content between 25%–75% vertically.
Centering helper
tsx
const centered: React.CSSProperties = {
  position: 'absolute',
  top: '50%',
  left: '50%',
  transform: 'translate(-50%, -50%)',
};

Typography

ElementSizeWeight
Headlines72–120px700–900
Subheadlines36–48px500–700
Body28–36px400–500

Always set margin: 0 on text elements — browser defaults push layouts off-center.


Style presets

When the user names a style, load its palette and characteristics from references/style-presets.md and drop the COLORS object into the skeleton. The six presets are: minimalist (default), memphis, neo-brutalism, glassmorphism, neon/cyberpunk, and corporate. If no style is named, use minimalist.


Verify the render (do not skip)

A shot is not done until you have looked at it. After writing the .tsx, render at least one still and open it — never hand over a shot you have only reasoned about. Rendering succeeds and the numbers look right, yet text overflows its card, an image is cropped at the wrong crop, an element is off-screen, or two things overlap. Only a screenshot catches these.

  • Render a still (e.g. node scripts/render-all.mjs --still --scale=1 <ShotId>) and Read the PNG.
  • For time-based reveals (elements entering on a cue, scrolls, staged phases), a single 60%-of-duration still is not enough — render the full clip and pull frames at each key moment (ffmpeg -ss <t> -i out/<id>.mp4 -frames:v 1 f.jpg), or render stills at several offsets. Verify the state at each cue, not just one frame.
  • Check specifically: images fit their slot (no important content cropped; prefer objectFit: contain on a matching background for heterogeneous real images), text is not clipped or overflowing, nothing is off the safe area, and each animated element is actually visible when it should be.
  • If it is composited over other footage, also spot-check a frame from the final baked output, not just the isolated shot.

Fix what the screenshot reveals, then re-render and look again. Treat "I rendered it and it looks correct" — with the frame shown — as the bar for done.


Final output

Generate the complete .tsx file and nothing else inside it — no surrounding markdown, no commentary before or after the code in the file itself. A short one-line note in chat when handing over the file is fine.

© hassancs91, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .claude/skills/vidtsx-2d-generator of hassancs91/claude-faceless-shorts-creator.

  • SKILL.md
  • references/style-presets.md

Open the folder on GitHubat commit 773054b

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in hassancs91/claude-faceless-shorts-creator, which our catalogue first saw on October 7, 2026.

Compare with similar skills

VidTSX 2D Video Generator 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.

VidTSX 2D Video Generator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
VidTSX 2D Video Generator this skillhassancs91/claude-faceless-shorts-creator271—~2.8kAutomated safety check: PassMIT
Remotion Render via inference.shHainrixz/editor-pro-max2642 repos~2kAutomated safety check: PassCustom licence
Stitch to Remotion Walkthrough Videosgoogle-labs-code/stitch-skills8.5k6 repos~3.2kAutomated safety check: NotesApache-2.0
Create Remotion GeistMarve10s/Better-Fullstack756—~1.4kAutomated safety check: PassMIT
Remotion to HyperFrames Porterheygen-com/hyperframes60k3 repos~2.8kAutomated safety check: PassApache-2.0
Anything2explainerVincentwei1021/anything2explainer2.4k—~2.7kAutomated safety check: PassCustom licence

Similar skills

  • Remotion Render via inference.sh

    Hainrixz/editor-pro-max

    Renders MP4 videos from React and Remotion TSX code through the inference.sh CLI, with settings for resolution, frame rate, duration and codec.

    264 GitHub starsUsed in 2 repos~2k tokens
    Media & CreativeAuto-check passed
  • Stitch to Remotion Walkthrough Videos

    google-labs-code/stitch-skills

    Official

    Builds walkthrough videos from Stitch design projects using Remotion, with transitions, zoom effects and text overlays on each screen.

    8.5k GitHub starsUsed in 6 repos~3.2k tokens
    Media & CreativeAuto-check: notes
  • Create Remotion Geist

    Marve10s/Better-Fullstack

    Create Remotion videos using the Geist design system aesthetic.

    756 GitHub stars~1.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Remotion to HyperFrames Porter

    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.

    60k GitHub starsUsed in 3 repos~2.8k tokens
    Media & CreativeAuto-check passed
  • Anything2explainer

    Vincentwei1021/anything2explainer

    给一个主题,产出一条黑底 MG 风格(幕底可选星点或点阵波)、有配音字幕章节进度条的科普讲解视频(中文或英文;Remotion 代码动画;时长由用户定,常用 3–5 分钟)。内含可编译模板、图元库、配音/分镜/渲染工具、风格与动效规范、多 agent 分工协议与 QC 判据,以及一条完整样片(《RAG 与知识库》)作为质量标尺。Turn any topic into a narrated…

    2.4k GitHub stars~2.7k tokensUpdated 23 days ago
    Media & CreativeAuto-check passed
  • Remotion Motion Graphics

    haidrrrry/claude-remotion-skill

    Create and edit professional motion graphics videos with Remotion (React-based video).

    340 GitHub stars~2k tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed

More from hassancs91/claude-faceless-shorts-creator

  • AI Video Short Maker

    hassancs91/claude-faceless-shorts-creator

    Produces a vertical generative-video short end to end: a locked recurring character animated by a fal video model, ElevenLabs voice, Remotion captions and a clean loop.

    271 GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check: notes
  • TSX Vertical Shorts Builder

    hassancs91/claude-faceless-shorts-creator

    Builds a roughly 40-second vertical short end to end from a topic, scripting beats, rendering TSX compositions and layering voice and captions.

    271 GitHub stars~1.9k tokensUpdated 1 mo ago
    Auto-check: notes
  • Layered-Collage Documentary Shorts

    hassancs91/claude-faceless-shorts-creator

    Builds a vertical collage-style documentary short from script to render: scene dissection into image layers, layer production, TSX assembly on a collage kit, frame checks and voice.

    271 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Sound Effects Planner for Shorts

    hassancs91/claude-faceless-shorts-creator

    Proposes beat-synced sound effects for a rendered short from a reusable library, then mixes an audition preview under the voice once you approve the plan.

    271 GitHub stars~2.6k tokensUpdated 1 mo ago
    Auto-check: notes

Works with

Questions about VidTSX 2D Video Generator

What does VidTSX 2D Video Generator do?

Generates 2D Remotion-based TSX video files for VidTSX from a shot or scene description, with style presets and rules that keep renders from crashing. tsx` file that VidTSX renders frame by frame as a Remotion composition. A clear single shot is generated directly, while a complex, multi-shot or ambiguous request first gets a one-line confirmation of the breakdown.

When should I use VidTSX 2D Video Generator?

VidTSX 2D Video Generator fits situations like: generating a title card or animated clip as a VidTSX TSX file; turning a described scene into a Remotion composition in a chosen style; producing vertical, square or horizontal motion graphics for social platforms.

How do I install VidTSX 2D Video Generator in Claude Code?

Run `npx skills add hassancs91/claude-faceless-shorts-creator --skill vidtsx-2d-generator -a claude-code`. Or copy the skill folder (.claude/skills/vidtsx-2d-generator in hassancs91/claude-faceless-shorts-creator) into .claude/skills/vidtsx-2d-generator in your project. Claude Code loads it when a task matches its description.

How do I install VidTSX 2D Video Generator in Codex?

Run `npx skills add hassancs91/claude-faceless-shorts-creator --skill vidtsx-2d-generator -a codex`. Or copy the skill folder (.claude/skills/vidtsx-2d-generator in hassancs91/claude-faceless-shorts-creator) into .agents/skills/vidtsx-2d-generator in your project. Codex loads it when a task matches its description.

Can I use VidTSX 2D Video Generator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hassancs91/claude-faceless-shorts-creator --skill vidtsx-2d-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vidtsx-2d-generator, .gemini/skills/vidtsx-2d-generator, .github/skills/vidtsx-2d-generator and .opencode/skills/vidtsx-2d-generator in your project.

What does VidTSX 2D Video Generator need to run?

Going by SKILL.md and its folder, VidTSX 2D Video Generator needs the command-line tools its instructions call (node and ffmpeg). Our summary lists: A VidTSX project that renders Remotion compositions.

Does VidTSX 2D Video Generator access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is VidTSX 2D Video Generator safe to install?

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.

What licence does VidTSX 2D Video Generator use?

VidTSX 2D Video Generator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does VidTSX 2D Video Generator use?

About 2.8k tokens (SKILL.md is roughly 11k 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 611 tokens, read only when the agent opens those files.

What are the alternatives to VidTSX 2D Video Generator?

Skills that share tags, products or a category with VidTSX 2D Video Generator: Remotion Render via inference.sh (Hainrixz/editor-pro-max, 264 stars), Stitch to Remotion Walkthrough Videos (google-labs-code/stitch-skills, 8.5k stars), Create Remotion Geist (Marve10s/Better-Fullstack, 756 stars) and Remotion to HyperFrames Porter (heygen-com/hyperframes, 60k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains VidTSX 2D Video Generator?

hassancs91 (a GitHub user) maintains it in hassancs91/claude-faceless-shorts-creator, which has 271 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on August 18, 2026.

Source: hassancs91/claude-faceless-shorts-creator on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.