Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
remotion-dev avatar

Add Cli Option

  • 470 installs
  • 55.5k repo stars
  • Updated August 4, 2026
  • remotion-dev/remotion

Add or refactor a Remotion CLI flag as a typed AnyRemotionOption with config, CLI parsing, and docs links wired correctly.

About

add-cli-option is an agent skill for solo builders and open-source contributors who modify the Remotion monorepo and need new command-line or config knobs to behave like first-class options instead of ad-hoc parsing. It walks through creating an option module with module-level default state, a stable cliFlag, human-readable metadata, and getValue logic that respects CLI overrides versus config sources. You learn how to pick TypeScript value types, handle inverted boolean flags, optionally expose SSR names, and link to public documentation so Studio and CLI stay consistent. That matters when agents or scripts pass flags during renders: a single AnyRemotionOption definition prevents drift between CLI, programmatic config, and docs. The skill is narrow but deep—ideal when you are asked to add `--my-flag` or migrate a legacy flag into the shared options registry Remotion expects across packages.

  • Step-by-step creation of packages/renderer/src/options/<name>.tsx with AnyRemotionOption
  • Shows cliFlag, getValue precedence (CLI over config), setConfig, ssrName, and docLink patterns
  • Covers negating flags and type selection via satisfies AnyRemotionOption<T>
  • Intended for converting hardcoded flags or adding brand-new CLI/config options
  • Documentation URL pattern tied to remotion.dev config docs

Add Cli Option by the numbers

  • 470 all-time installs (skills.sh)
  • +61 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #123 of 550 CLI & Terminal skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/remotion-dev/remotion --skill add-cli-option

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs470
repo stars55.5k
Last updatedAugust 4, 2026
Repositoryremotion-dev/remotion

What it does

Add or refactor a Remotion CLI flag as a typed AnyRemotionOption with config, CLI parsing, and docs links wired correctly.

Files

SKILL.mdMarkdownGitHub ↗

Add a new CLI option

How to convert a hardcoded CLI flag into a proper AnyRemotionOption, or add a brand new one.

1. Create the option definition

Create packages/renderer/src/options/<name>.tsx:

import type {AnyRemotionOption} from './option';

let myValue = false; // module-level default state

const cliFlag = 'my-flag' as const;

export const myFlagOption = {
  name: 'Human-readable Name',
  cliFlag,
  description: () => <>Description shown in docs.</>,
  ssrName: null, // or 'myFlag' if used in SSR APIs
  docLink: 'https://www.remotion.dev/docs/config#setmyflagenabled',
  type: false as boolean, // default value, also sets the TypeScript type
  getValue: ({commandLine}) => {
    if (commandLine[cliFlag] !== undefined) {
      return {value: commandLine[cliFlag] as boolean, source: 'cli'};
    }
    return {value: myValue, source: 'config'};
  },
  setConfig(value) {
    myValue = value;
  },
} satisfies AnyRemotionOption<boolean>;

The type in AnyRemotionOption<T> and type: <default> as T determines the option's value type. Use boolean, string | null, number | null, etc.

For negating flags (like --disable-ask-aiaskAIEnabled = false), handle the inversion in getValue.

2. Register in options index

`packages/renderer/src/options/index.tsx`:

  • Add the import (keep alphabetical within the import block)
  • Add the option to the allOptions object

This makes it available as BrowserSafeApis.options.myFlagOption throughout the codebase.

3. Update CLI parsed flags

`packages/cli/src/parsed-cli.ts`:

  • For boolean flags, add BrowserSafeApis.options.myFlagOption.cliFlag to the BooleanFlags array
  • For non-boolean flags, no entry needed here (minimist handles them as strings/numbers automatically)

`packages/cli/src/parse-command-line.ts`:

  • Add to the destructured BrowserSafeApis.options
  • In the CommandLineOptions type, add: [myFlagOption.cliFlag]: TypeOfOption<typeof myFlagOption>;

4. Use the option where needed

Instead of reading parsedCli['my-flag'] directly, resolve via:

const myFlag = myFlagOption.getValue({commandLine: parsedCli}).value;

For Studio options, this is typically in packages/cli/src/studio.ts. For render options, in the relevant render command file.

5. Add to Config

`packages/cli/src/config/index.ts`:

  • Add to the destructured BrowserSafeApis.options
  • Add the setter signature to the FlatConfig type (either in the RemotionConfigObject global interface or the FlatConfig intersection)
  • Add the implementation to the Config object: setMyFlagEnabled: myFlagOption.setConfig

6. Update docs — IMPORTANT, do not skip this step

This step is mandatory. Every new option must have its docs updated to use <Options id="..." /> so the description is pulled from the option definition automatically (single source of truth). If converting an existing hardcoded flag, replace any hand-written description with the <Options> component.

CLI command pages (check all that apply — cli/render.mdx, lambda/cli/render.mdx, cloudrun/cli/render.mdx, cli/benchmark.mdx):

  • Add or update the ### \--my-flag\`` section
  • Use <Options id="my-flag" /> as the description body (no import needed — it's globally available)
  • The id must match the option's cliFlag / id value

`packages/docs/docs/config.mdx`:

  • Add or update the ## \setMyFlagEnabled()\`` section with:
  • <Options id="my-flag" /> for the description
  • A twoslash config example
  • A note that the CLI flag takes precedence

Follow the pattern of nearby entries (e.g., setAskAIEnabled, setEnableCrossSiteIsolation).

7. Build and verify

cd packages/renderer && bun run make
cd packages/cli && bun run make

Reference files

  • Option type definition: packages/renderer/src/options/option.ts
  • Good example to copy: packages/renderer/src/options/ask-ai.tsx (boolean, studio-only)
  • Options index: packages/renderer/src/options/index.tsx
  • CLI flag registration: packages/cli/src/parsed-cli.ts
  • CLI type definitions: packages/cli/src/parse-command-line.ts
  • Config registration: packages/cli/src/config/index.ts

Related skills

CLI & Terminalintegrationsdevops

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.