Add a new effect to @remotion/effects, including implementation, package exports, docs, demos, preview images, Remotion skill updates, tests, formatting, and builds.
SkillScore82Maintained
Automatic
◆Coding pack
Last verified 9/27/2026
What it changes
Passed 16 of 19 test cases with the skill, and 9 of 19 without it.
Without skill45%
With skill82%
Checks it passed that the model alone missed
Runs oxfmt in packages/effects
Uses satisfies SequenceSchema for schema typing
Runs repository-level build and formatting checks
and 6 more in the full report
8 fixed10 passed either way4 still failing0 broke
Pass-rate lift
+36 pp
Tokens
+105%
Agent turns
0%
Response time
-55%
Model gemini-3.6-flashMeasured 9/27/2026v218 of 22 cases passed with skill · 19 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 8 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 8
Prompt
If WebGL2 context creation fails during setup inside an effect file, what helper function should be called to throw the error?
What was checked, without and with the skill
Checked
Without skill
With skill
Throws createWebGL2ContextError from Remotion Internals
Missed
Passed
case-09 · gemini-3.6-flash · 9/27/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md348 linessingle file
Add a new @remotion/effects effect
Use this skill when adding a new effect to @remotion/effects.
1. Pick the effect shape
Prefer the WebGL2 backend for new effects. Use 2D only when WebGL cannot express the effect.
Use a single file at packages/effects/src/<effect-name>.ts for simple effects.
Use a folder at packages/effects/src/<effect-name>/ plus a top-level re-export file when the effect needs multiple shaders, runtime helpers, or multiple files.
Import SequenceSchema and Internals from remotion.
Use const {createEffect, createWebGL2ContextError} = Internals;.
Define defaults as const values.
Define a schema with satisfies SequenceSchema; these fields appear in Studio visual editing.
Export the params type.
Resolve defaults in a resolve() helper.
Validate params using helpers from:
packages/effects/src/validate-effect-param.ts
packages/effects/src/color-utils.ts
Throw createWebGL2ContextError('<effect name> effect') if WebGL2 cannot be acquired.
Set documentationLink to https://www.remotion.dev/docs/effects/<slug>.
Include every resolved parameter in calculateKey().
For WebGL2 effects, use this general structure:
import type {SequenceSchema} from 'remotion';
import {Internals} from 'remotion';
import {assertOptionalFiniteNumber, validateUnitInterval} from './color-utils.js';
import {assertEffectParamsObject} from './validate-effect-param.js';
Rebuild, install, and reload the private Remotion Canvas Capture unpacked Chrome extension. Use when the extension needs to be restored after a Codex worktree was deleted, rebuilt after source changes, moved to its durable install directory, or reloaded in Chrome or Chrome Canary.