Skip to content
cccskills
FreePublished on GitHub

writing-docs

Create and edit Remotion documentation with consistent API pages, code examples, version labels, and compatibility information. The skill also guides sidebar placement and preview card generation when adding or updating pages.

OriginalShow the original description

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

See how to install

Good for

  • Add a documentation page for a public API
  • Standardize code examples and parameter descriptions
  • Review version labels and compatibility information
  • Update sidebar entries and preview cards

Files included (1)

  • SKILL.md7.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Writing Remotion Documentation

Documentation lives in packages/docs/docs as .mdx files.

Adding a new page

  1. Create a new .mdx file in packages/docs/docs
  2. Add the document to packages/docs/sidebars.ts
  3. Write the content following guidelines below
  4. Run bun render-cards.ts in packages/docs to generate social preview cards

Breadcrumb (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.

---
image: /generated/articles-docs-my-package-my-api.png
title: '<MyComponent>'
crumb: '@remotion/my-package'
---

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.

Language guidelines

  • Keep it brief: Developers don't like to read. Extra words cause information loss.
  • Link to terminology: Use terminology page for Remotion-specific terms.
  • Do not bold terms: Write terms as plain text, code spans, or links as appropriate. Do not use bold formatting to introduce a term.
  • Avoid emotions: Remove filler like "Great! Let's move on..." - it adds no information.
  • Separate into paragraphs: Break up long sections.
  • Address as "you": Not "we".
  • Don't blame the user: Say "The input is invalid" not "You provided wrong input".
  • Don't assume it's easy: Avoid "simply" and "just" - beginners may struggle.

Code snippets

Basic syntax highlighting:

```ts
const x = 1;
```

Type-safe snippets (preferred)

Use twoslash to check snippets against TypeScript:

```ts twoslash
import {useCurrentFrame} from 'remotion';
const frame = useCurrentFrame();
```

Hiding imports

Use // ---cut--- to hide setup code - only content below is displayed:

```ts twoslash
import {useCurrentFrame} from 'remotion';
// ---cut---
const frame = useCurrentFrame();
```

Adding titles

Always add a title to code fences that show example usage:

```ts twoslash title="MyComponent.tsx"
console.log('Hello');
```

Special components

Steps

Keep one <Step> per line and add a space after </Step>. Use an explicit line break (<br/> or <br />) when consecutive steps should appear on separate lines. Do not add Markdown bullet markers solely to wrap steps in a <ul>.

<Step>1</Step> First step<br />
<Step>2</Step> Second step

Experimental badge

<ExperimentalBadge>
<p>This feature is experimental.</p>
</ExperimentalBadge>

Interactive demos

<Demo type="rect"/>

Demos must be implemented in packages/docs/components/demos/index.tsx. See the docs-demo skill for details on adding new demos.

AvailableFrom

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 &lt; and &gt; to escape angle brackets in component names:

# &lt;MyComponent&gt;<AvailableFrom v="4.0.123" />
# @remotion/my-package<AvailableFrom v="4.0.123" />

For section headings:

## Saving to another cloud<AvailableFrom v="3.2.23" />

CompatibilityTable

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.

## Compatibility

<CompatibilityTable chrome firefox safari nodejs="" bun="" serverlessFunctions="" clientSideRendering={false} serverSideRendering player studio hideServers />

Optional parameters

For optional parameters in API documentation:

  1. Add ? 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
  2. Do NOT add _optional_ text - the ? suffix is sufficient
  3. Include default value in description - mention it naturally in the text
### onError?

Called when an error occurs. Default: errors are thrown.

Do NOT do this:

### onError?

_optional_

Called when an error occurs.

Combining optional and AvailableFrom

When a parameter is both optional and was added in a specific version:

### onError?<AvailableFrom v="4.0.50" />

Called when an error occurs.

"Optional since" pattern

If a parameter became optional in a specific version (was previously required):

### codec?

Optional since <AvailableFrom v="5.0.0" inline />. Previously required.

Generating preview cards

After adding or editing a page, generate social media preview cards:

cd packages/docs && bun render-cards.ts

Streamlining existing docs

When asked to audit or streamline docs, scan for:

  • Missing <AvailableFrom> indicators for APIs, features, options, parameters, or behaviors introduced in a specific version
  • API names that are not formatted as code spans or linked to their docs page
  • Function and hook references missing ()
  • API pages that should have a ## Compatibility section with <CompatibilityTable>
  • Fragile or broken <Step> formatting

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

add-bug

FreeSummary

Add a reported Remotion bug to the bugs API with its affected versions, a short title, and upgrade guidance. Follow the existing entry format and place the new record first so recent bugs appear at the top.

  • Adding a reported bug to the Remotion bugs API
  • Recording which versions a bug affects
  • Including upgrade guidance in a bug description
remotion-dev/remotion65KUpdated Oct 18, 2026

add-cli-option

FreeSummary

Add a Remotion command-line or configuration option, or convert a hardcoded flag into a shared option definition. Connect parsing, configuration setters, help entries, and generated documentation so the option is consistently available and documented.

  • Add a new Remotion command-line flag
  • Convert a hardcoded flag into a shared option
  • Connect an option to Config setters
remotion-dev/remotion65KUpdated Oct 18, 2026

add-effect

FreeSummary

Add a new effect to @remotion/effects, including its implementation, package entry points, documentation, interactive demo, and preview images. Follow the package conventions and verify the changes with tests, formatting checks, and builds.

  • Implementing a new effect for @remotion/effects
  • Registering effect imports and parameter types
  • Creating documentation and an interactive effect demo
remotion-dev/remotion65KUpdated Oct 18, 2026

add-expert

FreeSummary

Add a person to the Remotion experts page by placing their portrait, entering their profile and contact links, and generating an expert card image. The instructions specify file locations, profile fields, and how to verify card generation.

  • Add a new person to the Remotion experts page
  • Register a portrait, specialties, and contact links
  • Generate an expert card image
remotion-dev/remotion65KUpdated Oct 18, 2026

add-new-package

FreeSummary

Create a new @remotion package within the Remotion monorepo, a repository containing multiple packages. Set up its files, register it across the project, and prepare documentation, usage examples, and build configuration.

  • Creating a new @remotion package
  • Registering a package across the monorepo
  • Adding documentation and usage examples
remotion-dev/remotion65KUpdated Oct 18, 2026

add-sfx

FreeSummary

Add a new sound effect to @remotion/sfx, from registering the audio file to exporting its URL and documenting its use. The workflow covers playback examples, attribution, navigation entries, waveform generation, and the package build.

  • Add a sound effect to @remotion/sfx
  • Create documentation with playback and usage examples
  • Update sound effect navigation and waveform data
remotion-dev/remotion65KUpdated Oct 18, 2026

See all skills by remotion-dev

Report a problem with this skill