Skip to content

DirectorySkills

Run 1Hand off and explain“In talk.mp4 hand over from a list of the three things to app-screenshot.png.”
Runs in
  • Claude Code
  • Codex
  • Cursor
  • Gemini CLI
  • GitHub Copilot
  • OpenCode
Generates with
Your agent's model
Tested with
Claude Code 2.1.322Claude Sonnet 5.51 real run, 10 Nov
Needs
Node 22+Chromeffmpeg
Licence
Recaply licence

Hand off and Explain

One side panel hands over to the next without the speaker moving back.

$9.99once, yours to keep

Adds two side panels to a talking-head video that hand over one to the next without the speaker moving back: a list, then the screen that explains it. Timed to the words they say, on their own footage, with their sound kept; 16:9, 9:16, 1:1 or 4:5. Renders locally with Chrome and ffmpeg: no video model, no key and no cost. Use when someone moves from one graphic straight to the next (what to change, then where to change it).

By RecaplyUpdated 11 Nov

Install Hand off and Explain

After the download, ask your agent to add it, or run the line yourself.

Read https://recaply.co/skills/panel-handoff-overlay/install.md and follow it to install the panel-handoff-overlay skill from panel-handoff-overlay.zip.

Paste it into your agent. It reads our install steps, finds the ZIP you downloaded and adds the skill for you.

New to skills? How to install a skill

Similar skills

All 735 skills

Who Hand off and Explain is for

What you get

  • Your video with the overlay timed to the words, sound kept
  • The speaker slides aside once
  • 16:9, 9:16, 1:1 or 4:5

Good fit

  • When someone moves from one graphic straight to the next (what to change, then where to change it)

Not for

  • Footage with nobody speaking
  • Cutting or re-editing the video itself

About this skill

You say

In talk.mp4 hand over from a list of the three things to app-screenshot.png.

It said back

The video is rendered: talk-graphics.mp4 in the working folder, 1920x1080, 24.3 s, 30 fps. The sound is the speaker's own and unchanged. I checked the settled frame of each beat and the check found no layout problems.

Beats (both panels on the left, so the speaker stays on the right):

1. List, 10.2–17.6 s, from "So we tried three things". The title is "Three things" and the items are numbered. Each appears as it is said:

  • Written updates on Friday
  • One shared board
  • 15-minute call, only when stuck

2. Screenshot, 17.4–21.4 s, from "After one quarter". It slides in as the list leaves, shown in a phone frame (the screenshot is portrait).

Show more

What it did in run 1

  1. panel-handoff-overlay
  2. ls -la
  3. S=.claude/skills/panel-handoff-overlay && node $S/scripts/check.mjs; echo '{"video":"talk.mp4","transcript":"talk.json"}' > overlay.json && node $S/scripts/overlay.mjs overlay.json --words
  4. node .claude/skills/panel-handoff-overlay/scripts/check.mjs; echo '{"video":"talk.mp4","transcript":"talk.json"}' > overlay.json && node .claude/skills/panel-handoff-overlay/scripts/overlay.mjs overlay.json --words
  5. ./app-screenshot.png
  6. node .claude/skills/panel-handoff-overlay/scripts/overlay.mjs overlay.json --face 12
  7. ./face-check.png
  8. cat > overlay.json <<'E' { "video": "talk.mp4", "transcript": "talk.json", "look": "paper", "face": [50, 30], "beats": [ { "beat": "list", "cue": "three things", "title": "Three things", "numbered": true, "points": ["Written updates on Friday", "One shared board", "15-minute call, only when stuck"], "cues": ["Written updates", "one shared board", "15-minute call"], "until": "stuck", "side": "left" }, { "beat": "shot", "cue": "After one quarter", "image": "app-screenshot.png", "frame": "phone", "place": "side", "side": "left", "for": 4 } ] } E node .claude/skills/panel-handoff-overlay/scripts/overlay.mjs overlay.json --check
  9. ./overlay.json
  10. node .claude/skills/panel-handoff-overlay/scripts/overlay.mjs overlay.json --check
  11. ./overlay-check.png
  12. node .claude/skills/panel-handoff-overlay/scripts/overlay.mjs overlay.json 2>&1 | tail -8; ls -la *.mp4
  13. Done

10 Nov 2026 · Claude Code 2.1.322 with Claude Sonnet 5.5 · 1 min 36 s · $0.14 of API use

Questions

Is Hand off and Explain free?

No. Hand off and Explain costs $9.99 once and stays in your Recaply account, or it comes with the Recaply plan ($19.99 a month), which opens every premium skill and prompt.

Which agents can use Hand off and Explain?

Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

What do I get when I buy Hand off and Explain?

A ZIP of the whole skill folder (106 KB): the SKILL.md your agent follows and its 12 other files, the references, templates and scripts it uses. You download it from this page whenever you need it, and install it in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. The Recaply plan opens it too, with every other premium skill and prompt.

How do I install Hand off and Explain?

Buy it, then download the ZIP from this page. For Claude Code, unzip it into .claude/skills/ in your project. For Codex, Cursor and Gemini CLI, unzip it and run npx skills add ./panel-handoff-overlay with your agent's flag.

What do I get from Hand off and Explain?

Your video with the overlay timed to the words, sound kept. The speaker slides aside once. 16:9, 9:16, 1:1 or 4:5.

What does Hand off and Explain need?

Node 22+, Chrome and ffmpeg, and no API key. Each use costs nothing beyond your agent.

How big is Hand off and Explain?

13 files, about 80,123 tokens in all. The SKILL.md is about 2,461 tokens, and your agent reads it only when the job fits.

What does a run cost?

Our 1 runs took 1 min 36 s to 1 min 36 s and $0.14 to $0.14 of API use each, in Claude Code with claude-sonnet-5-5. On a Claude plan, a run counts toward your usage instead.

Do I have to name Hand off and Explain to use it?

Type /panel-handoff-overlay first to make sure it loads. Without it, Claude Code may judge a small job simple enough to do without the skill.