Source profileQuality 67/100

MoizIbnYousaf/marketing-cli/skills/remotion-best-practices/references/upstream-internal/skills/add-cli-option/SKILL.md

add-cli-option

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

Source repository stars
27
Declared platforms
0
Static risk flags
1
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

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

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/remotion-best-practices/references/upstream-internal/skills/add-cli-option"
    Safe inspection promptEditorial

    Inspect the Agent Skill "add-cli-option" from https://github.com/MoizIbnYousaf/marketing-cli/blob/f12fbcbe4929584697b309b9096c9427b0cfce8e/skills/remotion-best-practices/references/upstream-internal/skills/add-cli-option/SKILL.md at commit f12fbcbe4929584697b309b9096c9427b0cfce8e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

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

      This step is mandatory. Every new option must have its docs updated to use 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 component.

      Add or update the \--my-flag\ sectionUse as the description body (no import needed — it's globally available)The id must match the option's cliFlag / id value
    2. 02

      1. Create the option definition

      Create packages/renderer/src/options/.tsx:

      Create packages/renderer/src/options/.tsx:The type in AnyRemotionOption and type: as T determines the option's value type. Use boolean, string | null, number | null, etc.For negating flags (like --disable-ask-ai → askAIEnabled = false), handle the inversion in getValue.
    3. 03

      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 objectpackages/renderer/src/options/index.tsx:
    4. 04

      3. Update CLI parsed flags

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

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

      4. Use the option where needed

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

      Instead of reading parsedCli['my-flag'] directly, resolve via:For Studio options, this is typically in packages/cli/src/studio.ts. For render options, in the relevant render command file.

    Permission review

    Static risk signals and limitations

    Network access

    medium · line 21

    The documentation includes network, browsing, or remote request actions.

    docLink: 'https://www.remotion.dev/docs/config#setmyflagenabled',

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score67/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars27SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    MoizIbnYousaf/marketing-cli
    Skill path
    skills/remotion-best-practices/references/upstream-internal/skills/add-cli-option/SKILL.md
    Commit
    f12fbcbe4929584697b309b9096c9427b0cfce8e
    License
    MIT
    Collected
    2026-07-28
    Default branch
    main
    View the original SKILL.md

    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

    Alternatives

    Compare before choosing

    Computed 9438,313

    wshobson/agents

    brand-landingpage

    Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens —

    Computed 9227

    MoizIbnYousaf/marketing-cli

    seo-machine

    Build an organic-traffic operating system for any site or app: a multi-phase, resumable engine that ships programmatic landing pages (alternatives, comparisons, use-cases, playbooks) on top of real keyword research. Use when the user says 'SEO machine', 'build organic traffic', 'rank on Google', 'we need traffic', 'alternatives pages', 'comparison pages', '/for/ pages', 'programmatic SEO', or 'build an SEO engine'. Distinct from `seo-audit` (one-off diagnostic) and `seo-content` (single-article

    Computed 9142,015

    coreyhaines31/marketingskills

    sales-enablement

    When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also use when the user mentions 'sales deck,' 'pitch deck,' 'one-pager,' 'leave-behind,' 'objection handling,' 'deal-specific ROI analysis,' 'demo script,' 'talk track,' 'sales playbook,' 'proposal template,' 'buyer persona card,' 'help my sales team,' 'sales materials,' or 'what should I give my sales reps.' Use this for any document or asset that helps a sales team close deals. Fo

    Computed 89165

    JasonColapietro/suede-creator-skills

    suede-copy

    Write conversion copy that earns the click: landing sections, email, microcopy, buttons, headlines, CTAs, variants, and anti-slop edits.