remotion-scaffold — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited remotion-scaffold (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Creates the foundational folder structure, configuration files, and organizational framework for Remotion video projects. This skill focuses exclusively on project setup and does NOT generate animation logic or component implementation.
Generates project scaffolding for:
IN SCOPE:
OUT OF SCOPE:
/remotion-animation)/remotion-component-gen)/remotion-composition)/remotion-component-gen)Accepts project setup requirements:
Natural Language:
Create a new Remotion project scaffold for a 30-second video with 4 scenes.Structured Format:
## Project Requirements
**Project Name:** ProductDemo
**Duration:** 30 seconds
**Frame Rate:** 30 fps
**Dimensions:** 1920x1080 (16:9)
**Number of Scenes:** 4 (Intro, Features, Demo, CTA)
**Asset Types:** Images, Audio (music + SFX)Generates a manifest documenting created structure:
# Scaffold Manifest: ProductDemo
## Status
✅ Directory structure created
✅ Configuration files generated
✅ Scene templates created (empty)
⏳ Ready for implementation
## Generated Structure
src/remotion/compositions/ProductDemo/ ├── index.tsx # ✅ Created - Main composition (empty) ├── constants.ts # ✅ Created - Constants template ├── types.ts # ✅ Created - Type definitions └── scenes/ ├── Scene1Intro.tsx # ✅ Created - Empty template ├── Scene2Features.tsx # ✅ Created - Empty template ├── Scene3Demo.tsx # ✅ Created - Empty template └── Scene4CTA.tsx # ✅ Created - Empty template
public/ ├── images/ # ✅ Created - Empty directory ├── audio/ │ ├── music/ # ✅ Created - Empty directory │ └── sfx/ # ✅ Created - Empty directory └── fonts/ # ✅ Created - Empty directory
## File Templates Created
### Main Composition: `index.tsx`import { AbsoluteFill, Sequence } from "remotion"; import { SCENE_TIMING } from "./constants"; import { Scene1Intro } from "./scenes/Scene1Intro"; import { Scene2Features } from "./scenes/Scene2Features"; import { Scene3Demo } from "./scenes/Scene3Demo"; import { Scene4CTA } from "./scenes/Scene4CTA"; import type { ProductDemoProps } from "./types";
export function ProductDemo({}: ProductDemoProps) { return ( <AbsoluteFill> {/ TODO: Add composition layout via /remotion-composition /} <Sequence from={SCENE_TIMING.intro.start} durationInFrames={SCENE_TIMING.intro.duration} > <Scene1Intro /> </Sequence>
{/ Additional scenes... /} </AbsoluteFill> ); }
### Constants: `constants.ts`// TODO: Define color palette export const COLORS = { // Add colors here } as const;
// TODO: Configure spring animations via /remotion-animation export const SPRING_CONFIGS = { // Add spring configs here } as const;
// Scene timing (30fps, 30 seconds total = 900 frames) const FPS = 30;
export const SCENE_TIMING = { intro: { start: 0, duration: 5 FPS }, features: { start: 5 FPS, duration: 10 FPS }, demo: { start: 15 FPS, duration: 10 FPS }, cta: { start: 25 FPS, duration: 5 * FPS }, } as const;
### Types: `types.ts`export interface ProductDemoProps { // Add custom props here }
export interface SceneProps { // Common scene props }
### Scene Template: `scenes/Scene1Intro.tsx`import { AbsoluteFill } from "remotion";
export function Scene1Intro() { return ( <AbsoluteFill> {/ TODO: Implement scene via /remotion-component-gen /} </AbsoluteFill> ); }
## Next Steps
1. **Define animations** → Run `/remotion-animation` to generate animation configs
2. **Build composition** → Run `/remotion-composition` to structure Sequence layout
3. **Implement scenes** → Run `/remotion-component-gen` for each scene
4. **Configure render** → Run `/remotion-render-config` for output settings
5. **Add assets** → Run `/remotion-asset-coordinator` for asset preparation
## Configuration Summary
| Setting | Value |
|---------|-------|
| **Composition ID** | ProductDemo |
| **Duration** | 30 seconds (900 frames) |
| **Frame Rate** | 30 fps |
| **Dimensions** | 1920x1080 (16:9) |
| **Scenes** | 4 (Intro, Features, Demo, CTA) |
| **Status** | Scaffold complete, ready for implementation |
## File Locations
All files created in:
- **Composition:** `/path/to/project/src/remotion/compositions/ProductDemo/`
- **Assets:** `/path/to/project/public/`
## Scaffold Checklist
Creation checklist:
- [x] Create composition folder structure
- [x] Generate main composition file (`index.tsx`) with TODO markers
- [x] Generate constants file (`constants.ts`) as template
- [x] Generate types file (`types.ts`)
- [x] Create empty scene component files
- [x] Create asset directories (`public/images/`, `public/audio/`)
- [x] Add composition registration skeleton
- [ ] Animation implementation (next: `/remotion-animation`)
- [ ] Composition logic (next: `/remotion-composition`)
- [ ] Scene implementation (next: `/remotion-component-gen`)src/remotion/compositions/VideoName/
├── index.tsx # Main composition
├── constants.ts # Configuration constants
└── types.ts # TypeScript typessrc/remotion/compositions/VideoName/
├── index.tsx # Main composition
├── constants.ts # Shared constants
├── types.ts # Type definitions
└── scenes/
├── Scene1.tsx
├── Scene2.tsx
└── Scene3.tsxsrc/remotion/compositions/VideoName/
├── index.tsx # Main composition
├── constants.ts # Configuration
├── types.ts # Types
├── audio.ts # Audio configuration
└── scenes/
└── ...src/remotion/
├── components/
│ ├── particles/
│ ├── text/
│ ├── progress/
│ └── transitions/
├── compositions/
│ └── VideoName/
└── utils/
├── seededRandom.ts
└── timing.tsimport { AbsoluteFill } from "remotion";
import type { VideoNameProps } from "./types";
export function VideoName({}: VideoNameProps) {
return (
<AbsoluteFill>
{/* TODO: Add composition structure via /remotion-composition */}
</AbsoluteFill>
);
}// TODO: Define via /remotion-animation
export const COLORS = {} as const;
export const SPRING_CONFIGS = {} as const;
export const SCENE_TIMING = {} as const;export interface VideoNameProps {
// Add props here
}import { AbsoluteFill } from "remotion";
export function Scene1() {
return (
<AbsoluteFill>
{/* TODO: Implement via /remotion-component-gen */}
</AbsoluteFill>
);
}Add to src/remotion/Root.tsx:
import { Composition } from "remotion";
import { VideoName } from "./compositions/VideoName";
// Add to RemotionRoot component:
<Composition
id="VideoName"
component={VideoName}
durationInFrames={900} // TODO: Calculate based on requirements
fps={30}
width={1920}
height={1080}
defaultProps={{}}
/>Quick reference for common video formats:
// YouTube (16:9)
{ width: 1920, height: 1080, fps: 30 }
// Instagram Reels / TikTok (9:16)
{ width: 1080, height: 1920, fps: 30 }
// Twitter/X (16:9)
{ width: 1920, height: 1080, fps: 30 }
// Square (1:1)
{ width: 1080, height: 1080, fps: 30 }Standard asset directory structure:
public/
├── images/
│ ├── logos/
│ ├── backgrounds/
│ └── icons/
├── audio/
│ ├── music/
│ └── sfx/
└── fonts/
└── [custom-fonts].woff2This skill is the FIRST STEP in the pipeline:
remotion-scaffold (this skill)
↓ outputs: SCAFFOLD_MANIFEST.md
remotion-animation
↓ outputs: ANIMATION_CONFIG.md
remotion-composition
↓ outputs: COMPOSITION_STRUCTURE.md
remotion-component-gen (per scene)
↓ outputs: SCENE_COMPONENT.md
remotion-render-config
↓ outputs: RENDER_CONFIG.mdWorks with:
/motion-designer — Project requirements may come from design specs/remotion-animation — Next step for animation configuration/remotion-composition — Next step for composition structure/remotion-component-gen — Next step for scene implementation/remotion-render-config — Final step for render settingsThis skill provides clean, minimal project scaffolding that serves as the foundation for the Remotion implementation pipeline.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.