Install
$ agentstack add skill-liamrjohnston30-remotion-motion-graphics-skill-cinematic-camera ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Cinematic Camera
Example output
Clips built by an agent following this skill — one continuous world, a keyframed camera traveling through it (click for full MP4):
A movement system for Remotion graphics: instead of disconnected panels popping in and out of a void, build one continuous scene and move a camera through it. Use for most renders unless the request explicitly calls for a static composition.
Approved-reference gate
Complete this before planning or coding:
- Look at the latest 3–5 approved renders relevant to the same project, series, product, aspect ratio, or visual idea.
- Open the source compositions and inspect their camera keyframes, timing, spacing, typography, colors, density, entrances, exits, and end holds.
- Inspect representative frames or the actual renders when available. Filenames alone are not enough.
- Inventory real product assets in
public/: logos, mascots, screenshots, recordings, footage, and prior outputs. Prefer authentic assets over CSS placeholders or invented marks. - Write a short beat map that explains how the new clip continues the approved visual system.
- If no relevant approved reference exists, say so and plan the new direction before rendering.
Do not begin implementation from generic defaults when an approved project-specific system exists. Recent approved work is the baseline, not optional inspiration.
Reference priority:
- Same project and same video.
- Same product or series.
- Same aspect ratio and use case.
- Other recently approved renders.
- Generic defaults only when no approved reference applies.
Core idea
Build one continuous scene—a world larger than the viewport—and move a camera through it. The viewer travels through the idea: open tight on an action, reveal its context, move to the contrast or payoff, then settle.
Avoid disconnected panels appearing independently in a void. Panels may exist, but they should share one world and camera, with meaningful spatial relationships.
Camera rig
Use one shared keyframe timeline for focal point and zoom:
const ease = Easing.inOut(Easing.cubic);
const KEY_T = [0, 46, 62, 78, 96, 132, 174, TOTAL_FRAMES];
const fx = interpolate(frame, KEY_T, [/* focal x */], {
easing: ease,
extrapolateRight: 'clamp',
});
const fy = interpolate(frame, KEY_T, [/* focal y */], {
easing: ease,
extrapolateRight: 'clamp',
});
const z = interpolate(frame, KEY_T, [/* zoom */], {
easing: ease,
extrapolateRight: 'clamp',
});
{/* Entire scene in world coordinates */}
- Default canvas: 1080x1920 at 30fps unless the editor requests another format.
- World width is usually 2–2.5 times the viewport width.
- Repeat values across adjacent keys to create holds.
- Camera moves generally take 14–24 frames.
- End with two nearly identical keys for a clean editor hold.
- Keep the camera, cursor, impact effects, and connected panels in the same world coordinate system.
Choreography grammar
- Open tight on something already moving.
- Hold while the primary action completes.
- Reveal that the action belongs to a larger system.
- Whip-pan or travel to the contrast/payoff.
- Pull out while supporting elements finish in staggered waves.
- Settle for a clean cut.
Rules:
- Camera moves to the action; the action happens during the hold.
- One primary action per beat.
- Use micro-motion during holds: typing, ticking, pulsing, playback, progress, or cursor movement.
- Prefer continuous transformation over scene replacement.
- Clicks use a short press, ripple, and visible state change.
- Motion must explain the script beat, not merely decorate it.
Authenticity and identity
- Use real logos, mascots, footage, screenshots, recordings, or output files when available.
- Do not substitute colored squares, generic landscapes, invented marks, or fake UI when authentic assets exist.
- Match the product's established visual identity before applying generic defaults.
- Reuse the project's existing components and camera language when appropriate.
- Product names, filenames, counters, progress, and real UI text are allowed. Do not repeat narrated sentences.
Mandatory QA before delivery
- Render representative stills for the opening, each major camera destination, the transition/impact, and the payoff.
- Compare those frames beside the approved references for framing, density, identity, and polish.
- Verify every important logo and product asset is real and readable.
- Verify camera moves follow hold → move → hold and the action is not hidden during a whip.
- Render the full review MP4.
- Inspect the full motion pass enough to catch lingering overlays, empty transitions, cropped assets, dead frames, or weak end holds.
- Deliver only when it looks like the same visual system as the approved references.
If the first pass misses the reference standard, revise before showing it.
Technical constraints
- Drive render-critical motion with
useCurrentFrame(),spring(), andinterpolate(). - No CSS transitions or keyframes.
interpolate()input ranges must be strictly increasing.- Keep worlds moderate in size; large blurred or shadowed layers can slow renders.
- Use tabular numerals for ticking data.
- Follow the
motion-graphicsskill and the official Remotion best-practices skill alongside this one.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: liamrjohnston30
- Source: liamrjohnston30/remotion-motion-graphics-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.