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.
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
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
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.
npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/remotion-best-practices/references/upstream-internal/skills/add-cli-option"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
- 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 - 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. - 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: - 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 - 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
The documentation includes network, browsing, or remote request actions.
docLink: 'https://www.remotion.dev/docs/config#setmyflagenabled',Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 67/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 27 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated 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-ai → askAIEnabled = 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
allOptionsobject
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.cliFlagto theBooleanFlagsarray - 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
CommandLineOptionstype, 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
FlatConfigtype (either in theRemotionConfigObjectglobal interface or theFlatConfigintersection) - Add the implementation to the
Configobject: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
idmust match the option'scliFlag/idvalue
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
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 —
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
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
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.