Skip to content

DirectorySkills

Run 1Phones turning in a row“Show our three new app screens on turning phones for an Instagram reel, with the line "Your plan, in your pocket". Everything I have is in this folder. If something is missing, use a plausible placeholder and tell me what you assumed.”
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

Phones Turning in a Row

Three phones turn in 3D in a row to show the app's screens, with a line above.

$9.99once, yours to keep

A row of phones swings round in 3D, one after another, each showing one of the app's screens, under a short line. A 4 to 10 second clip in 16:9, 9:16, 1:1 or 4:5, as an MP4 on its own or as one scene of a longer launch film. Renders locally with Chrome and ffmpeg: no video model, no key and no cost. Use when a mobile app launch or update wants to show two or three screens at once in a lively way.

By RecaplyUpdated 11 Nov

Install Phones Turning in a Row

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

Read https://recaply.co/skills/turning-phones-scene/install.md and follow it to install the turning-phones-scene skill from turning-phones-scene.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 Phones Turning in a Row is for

What you get

  • An MP4 scene at 16:9, 9:16, 1:1 or 4:5
  • A row of phones swings round in 3D, one after another, each showing one of the app's screens, under a short line
  • Works alone or as one scene in a longer film

Good fit

  • When a mobile app launch or update wants to show two or three screens at once in a lively way

Not for

  • A whole launch film in one go (use a launch film)
  • Filmed footage or people on camera

About this skill

You say

Show our three new app screens on turning phones for an Instagram reel, with the line "Your plan, in your pocket". Everything I have is in this folder. If something is missing, use a plausible placeholder and tell me what you assumed.

It said back

The reel is rendered: 4.9 seconds, 1080×1920 (9:16), 30 fps, 458 KB. The layout check found no problems and I looked at the final frame. I did not look at the motion itself. The phones swing round one after another under "Your plan, in your pocket", then sway.

File: launch-scene/turning-phones.mp4, with film.json and the screens beside it.

Show more

What it did in run 1

  1. turning-phones-scene
  2. ls -la .
  3. cd .; ls -R photos .claude | head -50; cat logo.svg; file *.png *.jpg photos/* | head -30; node .claude/skills/turning-phones-scene/scripts/check.mjs
  4. ls -R photos && cat logo.svg && file *.png *.jpg photos/*
  5. node .claude/skills/turning-phones-scene/scripts/check.mjs
  6. ls -R photos
  7. ./shot.png
  8. ./sheet.png
  9. ./phone.png
  10. ./logo.svg
  11. mkdir -p /tmp/tw-build ./launch-scene && cd ./launch-scene && cp ../phone.png ../logo.svg . && cat > /tmp/tw-build/a.html <<'E' <body style="margin:0;width:585px;height:1170px;background:#f5f6f8;font-family:Helvetica,Arial,sans-serif;color:#1f2a37"> <div style="padding:90px 36px"><div style="font-size:44px;font-weight:700">Today</div> <div style="display:flex;gap:12px;margin:28px 0"> <div style="flex:1;background:#fff;border-radius:16px;padding:20px 14px;color:#1f6f5c;font-weight:700;font-size:22px">12 open</div> <div style="flex:1;background:#fff;border-radius:16px;padding:20px 14px;color:#1f6f5c;font-weight:700;font-size:22px">4 due</div> <div style="flex:1;background:#fff;border-radius:16px;padding:20px 14px;color:#1f6f5c;font-weight:700;font-size:22px">98% on time</div></div> <div style="font-size:22px"> <div style="background:#fff;border-radius:12px;padding:24px 20px;margin-bottom:12px;display:flex;justify-content:space-between">Weekly report<b style="color:#c2621a;font-weight:400">Today</b></div> <div style="background:#fff;border-radius:12px;padding:24px 20px;margin-bottom:12px;display:flex;justify-content:space-between">Team sync notes<b style="color:#c2621a;font-weight:400">Today</b></div> <div style="background:#fff;border-radius:12px;padding:24px 20px;margin-bottom:12px;display:flex;justify-content:space-between">Launch checklist<b style="color:#c2621a;font-weight:400">Today</b></div></div></div></body> E cat > /tmp/tw-build/b.html <<'E' <body style="margin:0;width:585px;height:1170px;background:#1f2a37;font-family:Helvetica,Arial,sans-serif;color:#fff"> <div style="padding:90px 36px"><div style="font-size:22px;color:#cbd5e1">Tidewater</div><div style="font-size:44px;font-weight:700;margin-bottom:28px">Done</div> <div style="font-size:22px"> <div style="background:#fff;color:#1f2a37;border-radius:12px;padding:24px 20px;margin-bottom:12px;display:flex;justify-content:space-between">Invoice #2041<span style="color:#1f6f5c">Done</span></div> <div style="background:#fff;color:#1f2a37;border-radius:12px;padding:24px 20px;margin-bottom:12px;display:flex;justify-content:space-between">Q4 plan draft<span style="color:#1f6f5c">Done</span></div></div> <div style="margin-top:40px;background:#fff;border-radius:16px;padding:24px 20px;color:#1f6f5c;font-weight:700;font-size:30px">98% on time</div></div></body> E C="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" "$C" --headless --hide-scrollbars --window-size=585,1170 --screenshot=$PWD/screen-today.png file:///tmp/tw-build/a.html 2>/dev/null "$C" --headless --hide-scrollbars --window-size=585,1170 --screenshot=$PWD/screen-done.png file:///tmp/tw-build/b.html 2>/dev/null cat > film.json <<'E' { "look": "swiss", "size": "9:16", "accent": "#1F6F5C", "name": "Tidewater", "logo": "logo.svg", "out": "turning-phones.mp4", "scenes": [ { "scene": "turning-phones", "title": "Your plan, in your pocket", "screens": ["phone.png", "screen-today.png", "screen-done.png"] } ] } E node ../.claude/skills/turning-phones-scene/scripts/film.mjs film.json --check
  12. mkdir -p /tmp/tw-build ./launch-scene && cp ./phone.png ./logo.svg ./launch-scene/
  13. /tmp/tw-build/a.html
  14. /tmp/tw-build/b.html
  15. ./launch-scene/film.json
  16. cd ./launch-scene && cp ../phone.png ../logo.svg . && C="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" && "$C" --headless --hide-scrollbars --window-size=585,1170 --screenshot=$PWD/screen-today.png file:///tmp/tw-build/a.html 2>/dev/null; "$C" --headless --hide-scrollbars --window-size=585,1170 --screenshot=$PWD/screen-done.png file:///tmp/tw-build/b.html 2>/dev/null; ls
  17. cd ./launch-scene && cp ../phone.png ../logo.svg . && ls
  18. /tmp/tw-build/shot.mjs
  19. node /tmp/tw-build/shot.mjs ./launch-scene && ls
  20. node ../.claude/skills/turning-phones-scene/scripts/film.mjs film.json --check
  21. ./launch-scene/film-check.png
  22. sed -i '' 's/padding:90px 36px/padding:100px 72px/; s/font-size:22px">12 open/font-size:19px">12 open/; s/font-size:22px">4 due/font-size:19px">4 due/; s/font-size:22px">98% on time/font-size:19px">98% on time/' /tmp/tw-build/a.html /tmp/tw-build/b.html && node /tmp/tw-build/shot.mjs $PWD && node ../.claude/skills/turning-phones-scene/scripts/film.mjs film.json --check
  23. sed -i '' -e 's/padding:90px 36px/padding:100px 72px/' -e 's/font-size:22px">12 open/font-size:19px">12 open/' -e 's/font-size:22px">4 due/font-size:19px">4 due/' -e 's/font-size:22px">98% on time/font-size:19px">98% on time/' /tmp/tw-build/a.html /tmp/tw-build/b.html
  24. node /tmp/tw-build/shot.mjs ./launch-scene && node ../.claude/skills/turning-phones-scene/scripts/film.mjs film.json --check
  25. /tmp/tw-build/a.html
  26. /tmp/tw-build/b.html
  27. /tmp/tw-build/a.html
  28. /tmp/tw-build/a.html
  29. /tmp/tw-build/a.html
  30. node /tmp/tw-build/shot.mjs ./launch-scene && node ../.claude/skills/turning-phones-scene/scripts/film.mjs film.json --check
  31. ./launch-scene/film-check.png
  32. node ../.claude/skills/turning-phones-scene/scripts/film.mjs film.json && ls -la turning-phones.mp4 && ffprobe -v error -show_entries format=duration -of csv=p=0 turning-phones.mp4
  33. Done

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

Questions

Is Phones Turning in a Row free?

No. Phones Turning in a Row 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 Phones Turning in a Row?

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

What do I get when I buy Phones Turning in a Row?

A ZIP of the whole skill folder (60 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 Phones Turning in a Row?

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 ./turning-phones-scene with your agent's flag.

What do I get from Phones Turning in a Row?

An MP4 scene at 16:9, 9:16, 1:1 or 4:5. A row of phones swings round in 3D, one after another, each showing one of the app's screens, under a short line. Works alone or as one scene in a longer film.

What does Phones Turning in a Row need?

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

How big is Phones Turning in a Row?

13 files, about 40,677 tokens in all. The SKILL.md is about 1,668 tokens, and your agent reads it only when the job fits.

What does a run cost?

Our 1 runs took 1 min 40 s to 1 min 40 s and $0.30 to $0.30 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 Phones Turning in a Row to use it?

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