npx skills add ...
npx skills add remotion-dev/remotion --skill writing-docs
npx skills add remotion-dev/remotion --skill writing-docs
Guides for writing and editing Remotion documentation. Use when adding docs pages, editing MDX files in packages/docs, or writing documentation content.
Documentation lives in packages/docs/docs as .mdx files.
.mdx file in packages/docs/docspackages/docs/sidebars.tsbun render-cards.ts in packages/docs to generate social preview cardsBreadcrumb (crumb): If a documentation page belongs to a package, add crumb: '@remotion/package-name' to the frontmatter. This displays the package name as a breadcrumb above the title.
One API per page: Each function or API should have its own dedicated documentation page. Do not combine multiple APIs (e.g., getEncodableVideoCodecs() and getEncodableAudioCodecs()) on a single page.
Public API only: Documentation is for public APIs only. Do not mention, reference, or compare against internal/private APIs or implementation details.
API names in prose: Put API names in backticks, and link them if a docs page exists. Function and hook names should include (), for example useVideoConfig(), not useVideoConfig or useVideoConfig. Components should include angle brackets, for example <Player> or <Audio>.
Use headings for all fields: When documenting API options or return values, each property should be its own heading. Use ### for top-level properties and #### for nested properties within an options object. Do not use bullet points for individual fields.
Version indicators: If an API, feature, parameter, or behavior was added in a specific version, add <AvailableFrom> at the page, section, or field where the reader first needs to know it. For example: # prefetch()<AvailableFrom v="4.0.0" />.
Compatibility tables: API pages should ideally include a ## Compatibility section with <CompatibilityTable> before ## See also.
Sidebar order: When adding or moving docs in packages/docs/sidebars.ts, inspect the surrounding entries and match the ordering logic already used there. If a section is alphabetical, place the new entry alphabetically; if it is grouped by workflow or importance, place it consistently with that grouping. Do not leave new additions as one-off outliers.
Basic syntax highlighting:
Use twoslash to check snippets against TypeScript:
Use // ---cut--- to hide setup code - only content below is displayed:
Always add a title to code fences that show example usage:
Formatting around <Step> is delicate. Keep one step per line, add a space after </Step>, and preserve an explicit line break (<br/> or <br />) when the steps are written as a compact inline list. Do not write <Step>1</Step>Add... without a space.
Demos must be implemented in packages/docs/components/demos/index.tsx. See the docs-demo skill for details on adding new demos.
Use to indicate when a feature or parameter was added. No import needed - it's globally available.
For page-level version indicators, use an # h1 heading with <AvailableFrom> inline so it appears next to the title (not below it). Use < and > to escape angle brackets in component names:
For section headings:
Use to indicate which runtimes and environments a component or API supports. No import needed. Place it in a ## Compatibility section before ## See also.
Available boolean props: chrome, firefox, safari, player, studio, clientSideRendering, serverSideRendering. Set to true (supported) or {false} (not supported).
Set to empty string "" for not applicable if this is a frontend API: nodejs="", bun="", serverlessFunctions="".
Use hideServers to hide the Node.js/Bun/serverless row if this is a frontend API.
For optional parameters in API documentation:
? to the heading - this indicates the parameter is optional
--> Don't do it if it is a CLI flag (beginning with --) - CLI flags are always optional_optional_ text - the ? suffix is sufficientDo NOT do this:
When a parameter is both optional and was added in a specific version:
If a parameter became optional in a specific version (was previously required):
After adding or editing a page, generate social media preview cards:
When asked to audit or streamline docs, scan for:
<AvailableFrom> indicators for APIs, features, options, parameters, or behaviors introduced in a specific version()## Compatibility section with <CompatibilityTable><Step> formatting