Install any skill in seconds. Free to start, no credit card required.
Get Started Free →guanyang/remotion-markup
Best practices for writing Remotion React Markup
Passed 24 of 25 test cases with the skill, and 12 of 25 without it.
and 17 more in the full report
12 fixed12 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.8-flash on 10/21/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
I want to display an overlay logo from `public/brand/logo.png` inside my Remotion composition. I currently have `<img src="/brand/logo.png" style={{ width: 100 }} />`. Refactor this to use the recommended Remotion canvas image component and static asset reference.
| Checked | Without skill | With skill |
|---|---|---|
| Renders overlay image using CanvasImage component | Missed | Passed |
| Wraps asset reference in staticFile function | Passed | Passed |
The instructions your model reads when the skill loads.
This is guidance for writing Remotion React Markup. If this is not relevant, load Remotion Best Practices instead.
Users may make edits in the code outside of the conversation.
If you detect a surprising change made in the meanwhile, don't overwrite it, assume it was intentional or ask for confirmation.
Inside a composition or scene component, get fps from useVideoConfig() for
all seconds-to-frames calculations, including timing props such as from,
trimBefore and durationInFrames. Keeping the expression on
the JSX node, such as trimBefore={4 * fps}, lets Studio edit the timing and
keeps it correct if the composition frame rate changes.
Drive animations using useCurrentFrame() and interpolate().
CSS transition or animation will not render correctly, they need to refactored.
Tailwind animation class will not render correctly, they need to be refactored.
Use Easing.bezier() and Easing.spring() to customize timing.
Before choosing the markup hierarchy, read editable timeline structure. Choose editing units first, then the tracks or shared timing boundaries they need. It includes a complete example with interactive components and their registrations. For source-editable styles, schemas, and keyframes, see Remotion Interactivity.
import { useCurrentFrame, useVideoConfig, Easing, interpolate, Interactive } from "remotion";
export const FadeIn = () => {
const frame = useCurrentFrame();
const {fps} = useVideoConfig();
return (
<Interactive.Div
name="Title"
test cases passed, vs 12 / 25 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.