Install any skill in seconds. Free to start, no credit card required.
Get Started Free →remotion-dev/remotion-interactivity
Structure Remotion markup for interactivity
Passed 22 of 22 test cases with the skill, and 13 of 22 without it.
and 15 more in the full report
9 fixed13 passed either way0 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/18/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 9 test cases the skill fixed. Same model, same prompt, with and without the skill.
I am defining an `InteractivitySchema` for a custom Remotion title component. I want to add a prop named `accentColor` for changing text highlight color. I wrote `accentColor: { default: '#ff0000' }`. Studio doesn't display a color picker control or descriptive label for it. How should the schema field be defined so Studio renders a color control with a label? Show the schema definition snippet.
| Checked | Without skill | With skill |
|---|---|---|
| Sets the type property to color in the schema field object. | Missed | Passed |
| Includes a description string property in the schema field object. | Missed | Passed |
The instructions your model reads when the skill loads.
By writing Remotion markup in a specific way, the Remotion Studio is able to recognize the structure of the code and makes it interactive:
If the markup is too complex for the Studio to make it interactive, then the values become grayed out.
Use Interactive.create({layout: 'absolute-fill'}) for components that fill their parent. The wrapper provides their visual root and timeline item, and clips overflow by default, so the inner component can return a fragment. Put timing, dimensions, and per-instance styles on the exported component.
Keep visuals that belong together in the same component, so they move and trim together. An inner layout container can still provide alignment, clipping within a smaller area, or an animated group; a container that only fills the scene is usually unnecessary. Cards, text boxes, and SVGs with their own bounds can keep the default layout: 'none' and forward style to their visual root.
import {Video} from '@remotion/media';
import type React from 'react';
import {Interactive, type InteractivitySchema} from 'remotion';
type SceneProps = {
readonly title: string;
};
const SceneInner: React.FC<SceneProps> = ({title}) => {
return (
<>
<Video
name="Background footage"
src="https://remotion.media/video.mp4"
objectFit="cover"
style={{width: '100%', height: '100%'}}
/>
<Interactive.Div
name="Scene title"
style={{
position: 'absolute',
left: 80,
bottom: 80,
color: 'white',
test cases passed, vs 13 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.