Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when building, reviewing, or refactoring a Remotion project, especially parameterized launch or demo videos with shared props schemas, calculateMetadata, Sequence and Series timing, multiple aspect ratios, terminal or footage layers, and render scripts. Prefer official Remotion docs or MCP for API details because package behavior may change.
.claude/skills/hashgraph-online-remotion-video-builder/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -20% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -14% | 0% |
Your Remotion knowledge may be stale. When exact API behavior matters, prefer the official remotion-documentation MCP server or the docs at remotion.dev.
npx create-video@latest and prefer the blank template.remotion and @remotion/* package on the exact same version and avoid caret ranges.src/index.ts calls registerRoot()src/Root.tsx registers all videos with <Composition> or <Still>zod and pass the schema to each <Composition>.calculateMetadata to derive durationInFrames, width, height, transformed props, and defaultOutName.<Series> for narrative order and <Sequence> for overlays, entrances, footage windows, and callouts.premountFor on <Sequence> elements that need assets loaded before they appear.fps={30} and 1920x1080 for landscape unless the brief says otherwise.AbsoluteFill for layering.staticFile() for anything coming from public/.useCurrentFrame() and useVideoConfig() for frame-based logic.spring() with high dampinginterpolate() with clampingMath.random(). Use random(seed) from remotion.z.object() schemadefaultProps matching the component prop shapecalculateMetadata returning dynamic duration or dimensions when inputs require itSupport at least these modes when footage is optional:
noneplaceholderrealThe timeline and overlays should still render when no real footage exists.
If the request is about Millrace or the launch video pipeline, read references/millrace-launch-video.md before implementing.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-19 | pass→pass | 19,612 | 16,910 | -14% | 1 | 1 | 0% | 3,019 | 2,891 | -4% | 0 | 0 | — |
case-01 | fail→pass | 21,643 | 21,088 | -3% | 1 | 1 | 0% | 2,818 | 3,856 | +37% | 0 | 0 | — |
case-02 | fail→pass | 39,434 | 32,854 | -17% | 1 | 1 | 0% | 7,509 | 6,745 | -10% | 0 | 0 | — |
case-03 | pass→pass | 26,305 | 34,382 | +31% | 1 | 1 | 0% | 4,131 | 6,648 | +61% | 0 | 0 | — |
case-04 | pass→pass | 15,601 | 13,348 | -14% | 1 | 1 | 0% | 1,809 | 2,209 | +22% | 0 | 0 | — |
case-05 | pass→pass | 24,006 | 17,941 | -25% | 1 | 1 | 0% | 2,815 | 3,985 | +42% | 0 | 0 | — |
case-06 | pass→pass | 20,839 | 17,820 | -14% | 1 | 1 | 0% | 3,557 | 3,885 | +9% | 0 | 0 | — |
case-07 | pass→pass | 18,464 | 7,130 | -61% | 1 | 1 | 0% | 2,061 | 1,861 | -10% | 0 | 0 | — |
case-08 | pass→pass | 13,498 | 10,172 | -25% | 1 | 1 | 0% | 2,481 | 2,987 | +20% | 0 | 0 | — |
case-09 | pass→pass | 13,337 | 9,514 | -29% | 1 | 1 | 0% | 2,049 | 2,195 | +7% | 0 | 0 | — |
case-10 | fail→pass | 20,973 | 12,137 | -42% | 1 | 1 | 0% | 3,204 | 2,549 | -20% | 0 | 0 | — |
case-11 | pass→pass | 14,496 | 4,660 | -68% | 1 | 1 | 0% | 1,411 | 1,476 | +5% | 0 | 0 | — |
case-12 | fail→pass | 18,398 | 13,039 | -29% | 1 | 1 | 0% | 2,431 | 1,747 | -28% | 0 | 0 | — |
case-13 | pass→pass | 18,537 | 13,355 | -28% | 1 | 1 | 0% | 2,040 | 1,957 | -4% | 0 | 0 | — |
case-14 | pass→pass | 13,870 | 11,928 | -14% | 1 | 1 | 0% | 1,444 | 1,792 | +24% | 0 | 0 | — |
case-15 | pass→pass | 20,932 | 12,416 | -41% | 1 | 1 | 0% | 2,113 | 1,986 | -6% | 0 | 0 | — |
case-16 | fail→pass | 18,732 | 12,124 | -35% | 1 | 1 | 0% | 2,038 | 1,756 | -14% | 0 | 0 | — |
case-17 | pass→pass | 16,441 | 13,429 | -18% | 1 | 1 | 0% | 1,778 | 2,226 | +25% | 0 | 0 | — |
case-18 | fail→fail | 14,119 | 10,213 | -28% | 1 | 1 | 0% | 2,229 | 2,303 | +3% | 0 | 0 | — |
case-20 | pass→pass | 11,837 | 7,082 | -40% | 1 | 1 | 0% | 1,048 | 946 | -10% | 0 | 0 | — |
case-21 | fail→pass | 19,954 | 7,287 | -63% | 1 | 1 | 0% | 2,284 | 1,874 | -18% | 0 | 0 | — |
case-22 | fail→pass | 14,645 | 3,958 | -73% | 1 | 1 | 0% | 1,656 | 938 | -43% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +32 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.