Agent skill · Testing & QA

vid-motion-graphics

Generates motion graphics videos (MP4) from a content brief. Multi-scene HTML/CSS animations rendered frame-by-frame in headless Chromium via Playwright, assembled with FFmpeg. 1080×1080 default, 16:9 (1920×1080) and 9:16 (1080×1920) supported. 5 style presets. Trigger when user says "create a video", "motion graphic", "animated video", "make a reel", "create an explainer", "animated infographic", or "short video".

Varnan-Techgithub.com/Varnan-TechGitHub ↗
claude-codecopilotships scriptsMIT
Install
npx skills add Varnan-Tech/opendirectory --skill vid-motion-graphics --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 7
SKILL.md size: 12 KB
Bundled scripts: yes
Version: 1.0.0
Declared author: OpenDirectory
Requires: [claude-code, gemini-cli, github-copilot]
Path: skills/vid-motion-graphics/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 571
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# vid-motion-graphics Generates multi-scene motion graphics as MP4. Renders HTML/CSS animations in headless Chromium via Playwright (Web Animations API frame-seeking), assembles PNG frames with FFmpeg. No React, no AI APIs, no Python — zero new dependencies beyond the graphic-gif family. CDN fonts only. No external libraries in HTML. --- ## Critical Rules (read before every generation) 1. **Use `window.renderFrame(t)` — no CSS `@keyframes` for scene transitions.** CSS animation `currentTime` seeking is silently ignored for backward seeks in Chromium. The renderFrame approach: a pure JS function computes `opacity`/`transform` directly from milliseconds. Playwright calls it once per frame. Deterministic, race-free. 2. **No `animation-delay` on ANY element.** Not needed with renderFrame. If you catch yourself writing `animation-delay`, stop — you're using the wrong architecture. 3. **`window.__videoReady = true` only inside `document.fonts.ready.then(...)`.** Never set synchronously — fonts must load before Playwright captures frame 1 or text renders with fallback fonts. 4. **Expose `window.__stopPreview()`.** The browser's rAF preview loop races with Playwright's evaluate/screenshot

What's inside
Steps it walks through
  1. Critical Rules (read before every generation)
  2. Step 1: Intake
  3. Step 2: Internal Architecture (never shown to user)
  4. Step 3: HTML Generation
  5. Step 4: Self-QA (fix every failure before Step 5)
  6. Step 5: Export
  7. Step 6: Output Summary
  8. Prompt Tips (show when user asks for guidance)
Ships with 6 files
  • README.md
  • evals/evals.json
  • references/scene-library.md
  • references/style-presets.md
  • scripts/capture-frames.mjs
  • scripts/export-video.sh
Commands it runs
mkdir -p chart/[slug]
open chart/[slug]/video.html
bash [skill-root]/scripts/export-video.sh \
More from opendirectory
All skills →
About this skill
What does the vid-motion-graphics skill do?

Generates motion graphics videos (MP4) from a content brief. Multi-scene HTML/CSS animations rendered frame-by-frame in headless Chromium via Playwright, assembled with FFmpeg. 1080×1080 default, 16:9 (1920×1080) and 9:16 (1080×1920) supported. 5 style presets. Trigger when user says "create a video", "motion graphic", "animated video", "make a reel", "create an explainer", "animated infographic", or "short video".

How do I install it?

Run `npx skills add Varnan-Tech/opendirectory --skill vid-motion-graphics --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From Varnan-Tech/opendirectory, a repository with 571 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going