editing-gameplay-montages skill

A Claude Code skill that cuts Valorant and CS2 clips to music: kills on the beat, RIFE slow motion, a TikTok video.

  • 78 ★ on the repository
  • Last commit
Skill

Extended access

Why this level

  • Scripts set up a Python environment and run `ffmpeg` on your video files.
All reasons and checks

gustavomenani/editing-gameplay-montages

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/editing-gameplay-montages

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Scripts set up a Python environment and run `ffmpeg` on your video files.

This is third-party code. Review the repository files before installing.

What it does

The skill turns gameplay clips and one song into a finished video for TikTok, Reels or Shorts. No video editor is needed: Claude writes the edit into a `timeline.py` file, a custom pipeline assembles every frame, and `ffmpeg` only reads and writes video. The skill finds kills from the kill feed, measures drum hits in the music and puts every shot on a beat. RIFE interpolation builds the smooth slow motion, and before delivery the skill checks repeated frames, stutters and loudness. With a reference edit placed nearby, the montage copies its cuts, rhythm and effects. Changes are requested in plain phrases and each version is saved as a separate file.

Who it is for. Players and short-video editors who record Valorant, CS2 or another shooter and want a music edit without manual work in an editor.

Good fit when

  • You have round recordings with an ace and want a 30 second edit set to a track.
  • You like someone else's edit and want to repeat its cuts on your own clips.
  • You want smooth slow motion for a shot instead of choppy frames.
  • You want lyrics to run word by word over the track, in sync with the vocals.
  • Your clips come in different resolutions and frame rates.

Not a fit when

  • You need the edit on Linux or macOS: only Windows is supported for now.
  • The computer has no Vulkan graphics card and interpolation will take too long.
  • You want to edit non-game video from a live camera.

Example request

Make a TikTok edit from the clips in this folder and the song `track.mp3`, 30 seconds, the ace at the end, with lyrics on screen.

Limitations

Only Windows 10 and 11 with Git Bash and PowerShell work for now. You need Claude Code, `ffmpeg`, `uv` and a Vulkan graphics card: NVIDIA, AMD or Intel. The author recommends the strongest Claude model at maximum reasoning level. Interpolated frames take 7–13 GB of disk space per video. Interpolating 37–46 second videos took 30–75 minutes and rendering took 12–16 minutes on a GTX 1650. Scripts set up a Python environment and the RIFE model in the project folder.

How to disable. Delete the `~/.claude/skills/editing-gameplay-montages` folder. Project working files (`timeline.py`, frames, video versions) sit next to the clips and are removed by hand.

FAQ

How do I install editing-gameplay-montages in Claude Code?

Clone the repository and run `powershell -ExecutionPolicy Bypass -File .\install.ps1`, or `bash install.sh` in Git Bash. The script copies the skill to `~/.claude/skills/` and keeps the previous copy with a date in its name.

What does the skill ask before editing?

It starts with a briefing: format, duration, intensity, where transitions fall, whether lyrics and a cover are needed, and which plays open and close the video. If the request already says everything, the briefing is skipped.

How soon do I get a first result?

A quick `_previa.mp4` preview arrives in under a minute with order, cuts and kills on the beat but without effects. Full interpolation and rendering run in the background and take tens of minutes.

Which recordings work?

Any resolution from 1080p to 4K, ultrawide and stretched 4:3, 30 to 240 frames per second, H.264, HEVC and AV1 in mp4, mkv, mov and ts containers.

How do I change a finished edit?

Describe the change in words: drop a kill, move a frame onto the beat, make the color colder. Every version is saved as `_v1`, `_v2` and so on, and old ones stay.

Discussion

No questions or reviews yet.

Skills

Claude Code skill that turns raw talking-head clips into a finished Instagram reel, picks the best takes and cuts dead air

SkillExtended access143Repository stars

Eleven Claude Code skills turn a talking-head clip into reels: titles, graphics behind you and split screen

PluginExtended access74Repository stars

Six editing skills for Claude Code that turn a raw talking-head clip into an animated short with captions, rendered locally

SkillExtended access61Repository stars

Claude Code skills that turn a talking-head recording into a YouTube video with graphics, sound and thumbnails

SkillBroad access379Repository stars

A Claude Code skill for narrated explainers with a cartoon presenter, lip sync to your voice, poses on cue words and your brand

SkillExtended access73Repository stars
Editors’ pick

A video editing skill for Claude Code and Codex: the agent cuts pauses and filler words, grades color, burns subtitles and adds animated overlays

SkillExtended access31KRepository stars

README in short

Claude receives frames by number and beats from the audio waveform. The result is verified with numbers and frame sheets.

README badge

Original SKILL.md

---
name: editing-gameplay-montages
description: Edit gameplay clips (Valorant, CS2 or any shooter) into a music-synced highlight montage, frag movie, velocity edit or TikTok/Reels/Shorts "edit" with beat sync, slow motion, speed ramps, kill zooms, transitions, lyric words and a cover image; also copy the editing of a reference video ("com a mesma edição desse vídeo"), or fix a rendered edit that stutters ("travado", "quedas de fps"), has choppy slow motion or kills off the beat. Portuguese - "edita um vídeo", "faz um montage", "highlight", "edit pro TikTok", "faz uma capa". Not for plain trimming, joining or converting clips (use ffmpeg).
---

# Editing gameplay montages

A music-synced gameplay edit rendered by a custom Python pipeline. ffmpeg only decodes and encodes; time remapping, motion blur,
camera moves, transitions, text, colour and sound are computed in Python from one file, `timeline.py`, written in beats of the music.

**Core principle: you cannot watch or hear the video, so nothing is done by feel.** Frames are addressed by index, beats are measured
on the waveform, each kill is pinned to its muzzle-flash frame, and every render is judged by numbers and by images you read. Every
shortcut around this produced a version the user sent back (pitfalls.md).

The bundled scripts are measured, not assumed (on synthetic projects with sample-exact truth: every picture event on its exact frame,
every gunshot within 0.2 ms, the delivered sound within 0.1 ms of the song; verification.md). Copy them into the project and edit
`timeline.py`; do not rewrite the pipeline from memory.

## The rules that are never broken

1. **Every event on a MEASURED hit.** A kill, a cut, a bump, a boom, a riser end and a word sit on the attack of a drum hit
   (`beat_hits.py` is the one attack definition; `music_hits.py` writes `hits.json`) or a sung onset, converted with
   `hit(t) = (t - BEAT0) / PER - M0` to 9 decimals. A grid line only where the music has no hit. Never the grid time of a hit.
2. **One exact output frame per picture event:** `vis(beat, lead)` = the frame nearest the moment, then `lead` whole frames earlier.
   Cuts use `CUT_LEAD`, shots, accents, flash-ins and words `HIT_LEAD`; default 1 frame, with a reference its measured lead. The
   muzzle flash is whole on that frame and absent on the one before. No `ceil`, no tolerance.
3. **The enemy is SEEN before he dies:** a take's cut is SHOWN 12 to 16 whole frames (`lead_frames`, default 14) before its first shot,
   at real time up to it. Never a kill 4 frames after a cut ("tem kill que nem aparece").
4. **The enemy visibly DIES inside the take:** the take runs until the body is down (`upto`, measured per kill with `deathstrip.py`),
   slow motion only after that frame; the next cut never comes earlier.
5. **No take without a kill**, and no enemy of a few pixels; the kill feed row confirms each kill.
6. **No standing zoom:** never a crop or zoom that enlarges the gameplay for a whole shot. Only short accents that ease in and out,
   capped (`kill_zoom` ≤ 1.5).
7. **Nothing plays faster than real time** unless the user asks for velocity: `MAX_SPEED = 1.0`, which `draft_ref_timeline.py`
   writes and `preflight.py` enforces. In the house style (only on request) state the choice explicitly: `MAX_SPEED = None` (its
   blur-in squeezes to 1.6x) or `1.0` and a calmer blur-in; a timeline that omits it is refused at delivery (`no-ceiling`).
8. **Words:** centred in the exact middle, caps 21 / 19 % of the frame height (226 / 202 px at 1080p; vertical 0.60 of that), widest
   word 70 % of the width, translucent, and a word steps back from the shot until the body is down (`textfx` `duck_death`).
9. **Every kill is the player's**, visible at the aim, and its K is the shot that killed, re-measured on the pictures (`kverify.py`).
   The same play never twice (a DVR and its trim are the same footage); the best kills first (`kill_rank.py --check` clean).
10. **The ending only darkens** (no zoom on the ace); no label, subtitle or watermark.
11. **Output is 1080x1920 or 1920x1080 at 60 fps**, never 4K or an upscale. The whole game screen shows in both frames: vertical puts
    the 16:9 picture in a window over a blurred backdrop of the same footage, never a crop that hides the minimap or kill feed.
12. **Never waive a sync code and never work around the gate** (`av-offset`, `av-drift`, `frame-count`, `cut-frame`, `pts-gap`,
    `timeline-old`, `check-failed`). Fix the cause and render again.

Report a problem