Install any skill in seconds. Free to start, no credit card required.
Get Started Free →remotion-dev/studio-config-option-lifecycle
Classify and wire Remotion Studio config options as either startup-fixed or reloadable while preventing mixed lifecycle behavior across consumers.
Passed 21 of 22 test cases with the skill, and 8 of 22 without it.
and 23 more in the full report
13 fixed8 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 13 test cases the skill fixed. Same model, same prompt, with and without the skill.
Which Remotion function is responsible for clearing and resetting options defined in `BrowserSafeApis.options` before re-executing `remotion.config.ts` during a live config reload?
| Checked | Without skill | With skill |
|---|---|---|
| Identifies resetBrowserSafeConfigOptions as the reset function for BrowserSafeApis.options. | Missed | Passed |
The instructions your model reads when the skill loads.
Make reload behavior explicit for every Studio-facing option. A config file is reset and re-executed when it changes, but a consumer only observes the new value if its code reads the option again.
Inspect every Studio consumer, then assign one lifecycle to the whole option:
If any consumer must be startup-fixed, make the option startup-fixed for all Studio consumers. Do not implement mixed lifecycle behavior.
Do not infer reloadability from Config.set*() state being updated. Config re-execution updates module state regardless of whether an already-created consumer observes it.
Resolve the option once in packages/cli/src/studio.ts before calling startStudio():
const fixedValue = option.getValue({commandLine: parsedCli}).value;
await StudioServerInternals.startStudio({
fixedValue,
});
Pass the value, not a getter, through startStudio(), startServer(), and the consumer. Keep new internal parameters required; use T | null when absence is valid.
Capture startup-fixed render settings in StudioRenderJobFixedConfig at the Studio queue boundary and thread that object into the job processor. Do not call option.getValue() from the processor, because config state may have changed since Studio startup.
Typical startup-fixed consumers include the Studio port, entry point, active compiler choice and override, polling mode, public directory and watcher, network binding, and cross-site-isolation headers.
Read reloadable options through a getter that retains CLI precedence:
const getValue = () =>
option.getValue({commandLine: parsedCli}).value;
test cases passed, vs 8 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.