Get this effect
Switch to Code in your Claude Desktop App
Install the skill (once)
Show the prompt
Install the Recharm video effects skill: download https://recharm-growth-staging.s3.us-east-2.amazonaws.com/website/downloads/recharm-video-effects.zip and unzip it into ~/.claude/skillsAsk for the effect
Join clipA.mp4 and clipB.mp4 with a color panel wipe Colors: 0xFFC83C 0xF03C3C 0xFF46A0 0xFF8C1E
Several videos, several effects, one ask
Put your clips in the folder, mention them with @, and ask for everything at once. Claude runs one tested script after another on each clip, then joins them.
Put a sale badge on @clip1.mp4, give @clip2.mp4 a VHS look, then join them with a color panel wipe.
Settings you can change
Ask Claude to change any of these, or edit them at the top of the command.
| Setting | Default | What it does |
|---|---|---|
COLORS | 0xFFC83C 0xF03C3C 0xFF46A0 0xFF8C1E | Bar colors from top to bottom; one bar per color. |
IN | 0.35 | Seconds each bar takes to slide in, and again to slide out. |
STAGGER | 0.07 | Delay in seconds between one bar and the next. |
HOLD | 0.08 | Seconds the frame stays fully covered; the cut to clip B happens halfway through. |
Without the skill
Don’t want to install the skill? Paste this prompt into Claude Code and Claude writes the command itself.
Show the prompt
Join clipA.mp4 and clipB.mp4 with a 1.2 second color panel wipe that starts 1.2 seconds before the end of clipA.mp4. Split the frame into 4 horizontal bars of equal height (240 pixels each on a 540x960 frame), colored from top to bottom #FFC83C (yellow), #F03C3C (red), #FF46A0 (pink) and #FF8C1E (orange). Each bar slides in from off the left edge until it covers its full row, taking 0.35 seconds with smoothstep easing (ease in and out), and each bar starts 0.07 seconds after the one above it, so the frame is fully covered 0.56 seconds into the transition. Hold the full cover for 0.08 seconds and cut from clip A to clip B halfway through the hold (0.6 seconds into the transition; B picks up 0.6 seconds into its own clip). Then each bar slides off to the right edge in 0.35 seconds with the same easing and the same 0.07 second stagger, top bar first, revealing clip B. Crossfade the audio over the whole 1.2 seconds. Match B's size and frame rate to A. Use ffmpeg (color sources overlaid with time expressions), keep the audio and save it as output.mp4.Run it without Claude
This is the exact command we tested. Save it as color-panel-wipe.sh and run:
sh color-panel-wipe.sh clipA.mp4 clipB.mp4 output.mp4Show the command
#!/bin/sh
# Color panel wipe: four solid color bars slide in from the left one after another to cover clip A, then slide off to the right to reveal clip B, over 1.2s. The sound crossfades underneath.
# Usage: sh color-panel-wipe.sh clipA.mp4 clipB.mp4 output.mp4 (both clips need an audio track)
set -e
A="$1"; B="$2"; OUT="$3"
COLORS="0xFFC83C 0xF03C3C 0xFF46A0 0xFF8C1E" # bar colors, top to bottom (yellow, red, pink, orange)
IN=0.35 # seconds each bar takes to slide in (and out)
STAGGER=0.07 # delay between one bar and the next
HOLD=0.08 # seconds the frame stays fully covered; the cut to B happens halfway through
calc() { awk "BEGIN { print $1 }"; }
N=$(echo $COLORS | wc -w | tr -d ' ')
D=$(calc "2 * ($IN + ($N - 1) * $STAGGER) + $HOLD")
LEN=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$A")
OFFSET=$(calc "$LEN - $D")
CUT=$(calc "$IN + ($N - 1) * $STAGGER + $HOLD / 2")
SIZE=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "$A")
FPS=$(ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of csv=p=0 "$A")
W=${SIZE%x*}; H=${SIZE#*x}; BAR_H=$(( (H + N - 1) / N ))
# A up to the cut, then B from the same point in the transition, fitted to A's size
GRAPH="[0:v]trim=end=$(calc "$OFFSET + $CUT"),fps=$FPS,format=yuv420p,setsar=1,setpts=PTS-STARTPTS[a];\
[1:v]scale=$W:$H:force_original_aspect_ratio=increase,crop=$W:$H,fps=$FPS,format=yuv420p,setsar=1,trim=start=$CUT,setpts=PTS-STARTPTS[b];\
[a][b]concat=n=2:v=1:a=0[v0]"
# each bar's left edge: slides from -W to 0 (eased in and out), waits, then slides from 0 to W
ease() { echo "st(0,clip((t-$1)/$IN,0,1));ld(0)*ld(0)*(3-2*ld(0))"; }
i=0
for C in $COLORS; do
T_IN=$(calc "$OFFSET + $i * $STAGGER")
T_OUT=$(calc "$OFFSET + $CUT + $HOLD / 2 + $i * $STAGGER")
GRAPH="$GRAPH;color=c=$C:s=${W}x$BAR_H:r=$FPS[c$i];\
[v$i][c$i]overlay=x='if(lt(t,$T_OUT),-$W*(1-($(ease $T_IN))),$W*($(ease $T_OUT)))':y=$((i * BAR_H)):shortest=1:enable='between(t,$T_IN,$T_OUT+$IN)'[v$((i + 1))]"
i=$((i + 1))
done
ffmpeg -y -i "$A" -i "$B" -filter_complex "$GRAPH;[0:a][1:a]acrossfade=d=$D[au]" \
-map "[v$N]" -map "[au]" -r "$FPS" -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac "$OUT"





