MCPInstall

studio-config-option-lifecycle

Classify and wire Remotion Studio config options as either startup-fixed or reloadable while preventing mixed lifecycle behavior across consumers. Use when adding, changing, or reviewing a Config setter or CLI option consumed by Studio, its preview server, compiler, HTML bootstrap, public-folder watcher, or render queue.

Installs
421
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/remotion-dev/remotion --skill studio-config-option-lifecycle
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads studio-config-option-lifecycle automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Studio Config Option Lifecycle

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.

Classify the whole option

Inspect every Studio consumer, then assign one lifecycle to the whole option:

  • Startup-fixed: Changing the value requires recreating a server, compiler, watcher, directory mapping, or other initialized resource.
  • Reloadable: Every Studio consumer can safely use the new value after the browser reload or at another deliberate request boundary.

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.

Wire startup-fixed values

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.

Wire reloadable values

Read reloadable options through a getter that retains CLI precedence:

const getValue = () =>
	option.getValue({commandLine: parsedCli}).value;

await StudioServerInternals.startStudio({
	getValue,
});

Pass the getter as a required internal callback and invoke it only at the boundary that should observe config changes, such as generating Studio HTML after the config-file-changed browser reload. Do not evaluate the getter earlier and pass its result onward.

Use the existing getStudioRuntimeConfig() path for values already represented by StudioRuntimeConfig. Be careful when extending that exported type: adding a required property can be a public API break. For independent HTML bootstrap values, pass a dedicated getter through the internal Studio server layers.

Only use this pattern when all Studio consumers are reloadable. Typical examples include UI behavior and HTML bootstrap defaults that do not require rebuilding initialized resources.

Resolve lifecycle conflicts

Search all reads of the option and decide each one independently:

rg -n "myOption|setMyOption|my-cli-flag" packages

If the consumers do not all support reloading, capture the option once at Studio startup and pass that same value to every consumer. For example, if the active preview compiler cannot change bundlers, future render jobs must retain the startup bundler choice as well.

Treat aliases as one option. If a deprecated setter updates multiple underlying values, make every affected Studio consumer follow the stricter startup-fixed lifecycle.

Reset and rollback

Ensure config reload resets the option before executing the changed file, so deleting a setter restores the default. Options registered through BrowserSafeApis.options and exposed directly through Config are reset by resetBrowserSafeConfigOptions(). Add an explicit reset in ConfigInternals.resetConfigOptions() for custom module state.

Preserve transactional reload behavior: an invalid changed config must leave the previous valid configuration active.

Verify the lifecycle

Use existing checks or a manual workflow to verify the classification:

  • Reloadable: change the option after the initial read, cross the intended reload/request boundary, and confirm the new value is observed.
  • Startup-fixed: capture the initial value, change config state, and confirm the initialized consumer still receives the original value.
  • Cross-consumer: confirm every Studio consumer receives the same startup snapshot when any one consumer requires it.
  • Reset: omit a previously set option on reload and confirm its default is restored.
  • Nullable internal inputs: verify call sites pass null explicitly when no value exists.

Run focused builds and checks for the affected packages:

bunx turbo run make lint formatting --filter='@remotion/cli' --filter='@remotion/studio-server'
bun test packages/cli/src/test/config-reload.test.ts packages/cli/src/test/config-reset.test.ts

FAQ

What does the studio-config-option-lifecycle skill do?

Classify and wire Remotion Studio config options as either startup-fixed or reloadable while preventing mixed lifecycle behavior across consumers. Use when adding, changing, or reviewing a Config setter or CLI option consumed by Studio, its preview server, compiler, HTML bootstrap, public-folder watcher, or render queue.

How do I install studio-config-option-lifecycle?

Run npx skills add https://github.com/remotion-dev/remotion --skill studio-config-option-lifecycle in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/studio-config-option-lifecycle/ (personal) or .claude/skills/studio-config-option-lifecycle/ (project).

Which AI agents can use studio-config-option-lifecycle?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is studio-config-option-lifecycle safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains studio-config-option-lifecycle?

It is published by remotion-dev in remotion-dev/remotion. It has 421 recorded installs.

More from remotion-dev/remotion

View all →

web-renderer-test

remotion-dev/remotion

Add explicitly requested web renderer tests or update existing ones for implementation changes.

OfficialTesting & QA2.8K installs

writing-docs

remotion-dev/remotion

Guides for writing and editing Remotion documentation. Use when adding docs pages, editing MDX files in packages/docs, or writing documentation content.

OfficialDocs & Writing2.7K installs

video-report

remotion-dev/remotion

Generate a report about a video

OfficialMedia & Creative2.7K installs

add-sfx

remotion-dev/remotion

Add a new sound effect to @remotion/sfx

OfficialMedia & Creative2.6K installs

docs-demo

remotion-dev/remotion

Add an interactive demo to the Remotion documentation. Use when creating a new component for docs pages.

OfficialDocs & Writing2.4K installs

add-expert

remotion-dev/remotion

Add a new expert to the Remotion experts page

OfficialMedia & Creative2.4K installs

Popular media & creative skills

View category →

hyperframes

heygen-com/hyperframes

Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.

Media & Creative1.2M installs

media-use

heygen-com/hyperframes

Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.

Media & Creative1.1M installs

hyperframes-registry

heygen-com/hyperframes

About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.

Media & Creative1M installs

hyperframes-creative

heygen-com/hyperframes

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.

Media & Creative916.5K installs

ai-video-generation

101-skills/superpowers

Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse

Media & Creative881.5K installs

ai-image-generation

101-skills/superpowers

Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image

Media & Creative880.3K installs