remotion-dev/nullable-new-params
Fix newly added optional parameters, optional React props, and optional type/interface members in Remotion monorepo diffs by converting internal APIs to required nullable values and updating call sites. Use when a PR, review, or user asks to forbid new `foo?: T` / `param?: T` additions except for exported or documented public APIs where requiring the value would be breaking.
npx skills add https://github.com/remotion-dev/remotion --skill nullable-new-params
Use this skill when a change added a new parameter or type member as optional. In internal Remotion code, new inputs must be required and nullable so every caller makes an explicit choice.
name: T | null, not name?: T.null explicitly when no value exists.value === null / value !== null when null is the absence sentinel.undefined as the absence sentinel for new internal APIs unless the surrounding local contract already standardizes on undefined.frozenFrame?: number | null; make it frozenFrame: number | null.Public APIs are the exception. If the changed signature, props type, or options object is exported from a package public entrypoint or documented in packages/docs/docs, making the new field/argument required is a breaking change. Keep it optional or add a backwards-compatible overload/options path, then document/default it as appropriate.
bun .agents/skills/nullable-new-params/scripts/find-new-optional-params.ts
Useful variants:
bun .agents/skills/nullable-new-params/scripts/find-new-optional-params.ts origin/main...HEAD
bun .agents/skills/nullable-new-params/scripts/find-new-optional-params.ts --cached
exports, or documented in packages/docs/docs.type Before = {
readonly frame?: number;
};
type After = {
readonly frame: number | null;
};
For function parameters:
const before = (frame?: number) => {};
const after = (frame: number | null) => {};
field: null when absent.field: maybeValue ?? null only when undefined can still enter from surrounding code.0, '', or false are valid values.value !== null over value for nullable numbers/strings/booleans.Partial<T> only to dodge the new field.const internal = publicValue ?? null.bunx turbo run make --filter='<package-name>'.writing-docs skill.?: member or param?: parameter remains.null.null path when behavior depends on absence.Take remotion-dev/nullable-new-params from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.