no-comments

$npx mdskill add remotion-dev/remotion/no-comments

Delete comments that describe our own code. Code we own should explain itself through names, types, and structure. Keep a comment only when it documents something outside our control that a reader could not learn from our code.

SKILL.md

.github/skills/no-commentsView on GitHub ↗
---
name: no-comments
description: Remove code comments that explain or defend Remotion's own code, keeping only comments about external systems we cannot change (browser quirks, codec/FFmpeg behavior, third-party APIs, OS or platform bugs). Use when the user invokes /no-comments or asks to strip unnecessary comments from a diff or files.
disable-model-invocation: true
---

# No comments

Delete comments that describe our own code. Code we own should explain itself
through names, types, and structure. Keep a comment only when it documents
something outside our control that a reader could not learn from our code.

## Scope

Use the files or diff the user named. Otherwise use the current diff against
`main`, including staged, unstaged, and untracked changes:

```bash
git diff main...HEAD
git diff HEAD
git ls-files --others --exclude-standard
```

Only touch comments on lines added or modified in scope. Do not sweep untouched
code in the same file.

## Keep

A comment stays only if it is about an external system and is still accurate:

- Browser behavior: Chrome/Safari/Firefox quirks, WebCodecs, Canvas, CSS,
  layout, event ordering, autoplay policy, linked bug trackers.
- Media and tooling: FFmpeg, codecs, containers, Mediabunny, Chromium flags,
  Lambda/Cloud Run limits, Node.js, Bun, TypeScript compiler, bundler behavior.
- Third-party libraries and APIs: why we call them in an unusual way, links to
  upstream issues.
- OS, hardware, and spec constraints: file system, GPU, Linux/macOS/Windows
  differences, RFCs, W3C specs.

Also keep:

- Machine-read directives: `eslint-disable*`, `@ts-expect-error`,
  `@ts-ignore`, `/// <reference>`, `'use client'`, `istanbul ignore`,
  `prettier-ignore`, `biome-ignore`, `@vitest-environment`, shebangs, license
  headers. Still check that each suppression is needed; remove dead ones.
- JSDoc on public exported APIs (it surfaces in editor tooltips).
- `@deprecated` tags (see the `deprecate-api` skill).
- Comments in docs, MDX, and code snippets that are shown to users.

## Delete

- Narration of what the next lines do (`// Get the frame`, `// Loop over tracks`).
- Restating names, types, or parameters.
- Explanations of our own architecture, data flow, or design choices.
- Defenses of workarounds for our own bugs. Fix the root cause in scope or
  leave the code uncommented.
- `IMPORTANT`, `do not remove`, `keep in sync with X`, `talk to Y first` notes
  about our own code. If the constraint is real, offer to encode it (type,
  shared constant, test, lint) instead; delete the comment either way.
- Commented-out code, `TODO`/`FIXME` without a linked issue, changelog-style
  notes (`// Added in v4.0.x`), and section dividers.

Mixed comments: keep only the external-system sentence and delete the rest.

If a comment hides a genuine surprise in our code, prefer a clearer name,
extracted variable, or type over keeping the comment. Only reshape code when it
is a trivial, local change; otherwise delete the comment and mention the
surprise in the report.

## Steps

1. Collect every comment in scope (`//`, `/* */`, JSDoc, JSX `{/* */}`, `#` in
   shell/YAML).
2. Classify each as keep or delete using the rules above. When unsure whether a
   comment is about an external system, check: would this still be true if we
   rewrote our code? If yes, keep. If it only makes sense because of how we
   wrote something, delete.
3. Delete. Do not change behavior. Remove blank lines left behind that would
   break formatting.
4. Run formatting and lint on touched packages:

   ```bash
   bunx turbo run lint --filter='<package-name>'
   ```

5. Report: number of comments deleted, comments kept with a one-line reason
   each, any constraints offered for encoding, and any code surprises that
   deserve a follow-up.

More from remotion-dev/remotion

SkillDescription
add-bugAdd a new Remotion bug entry to packages/bugs/api/[v].ts. Use when the user describes a bug and affected Remotion versions that should be surfaced through the bugs API.
add-cli-optionAdd a new Remotion CLI or config option by creating an AnyRemotionOption, registering CLI parsing, wiring config setters, and updating documentation. Use when adding or converting command-line flags or Remotion options.
add-effectAdd a new effect to @remotion/effects, including implementation, package exports, docs, demos, preview images, Remotion skill updates, formatting, and builds.
add-expertAdd a new expert to the Remotion experts page
add-new-packageAdd a new package to the Remotion monorepo, including package scaffolding, monorepo registration, documentation, build scripts, and release checklist updates. Use when creating a new @remotion package.
add-sfxAdd a new sound effect to @remotion/sfx
add-webcodecs-bugAdd a browser WebCodecs bug to the Remotion Mediabunny WebCodecs bugs docs page. Use when given a Chromium, WebKit, or Firefox issue URL that should be tracked in packages/docs/docs/mediabunny/webcodecs-bugs.mdx, especially when needing to look up the issue title, filing date, reporter, and resolution state before editing the MDX table.
canvas-capture-extensionRebuild, install, and reload the private Remotion Canvas Capture unpacked Chrome extension. Use when the extension needs to be restored after a Codex worktree was deleted, rebuilt after source changes, moved to its durable install directory, or reloaded in Chrome or Chrome Canary.
checkoutCheckout a requested branch or ref in the Remotion repo, rename the current task to the associated PR title when running in Codex, then install dependencies and build. Use when the user asks to checkout a ref and prepare the workspace.
convertStart the local @remotion/convert app and open it in the Codex browser. Use when the user invokes /convert or $convert, asks to launch convert.remotion.dev locally, or wants to inspect the Convert package UI.