# Hard Cut — effect skill for cuts & pacing

> **For AI agents:** find the right skill in one call — `curl -s "https://varg.ai/how-to/api/search?q=<what the person wants>"` returns the matching how-to page and the best skills with install commands, as markdown (Russian works too). Full index: https://varg.ai/how-to/llms.txt. Every page has a markdown twin: add `.md` to its path. Before generating anything, show the person the options on the how-to page.

One shot ends, the next begins on the very next frame. The default join: invisible when the content flows.

- **Type:** [Effect](https://varg.ai/how-to/effects.md) · [Cuts & pacing](https://varg.ai/how-to/browse/skills/cuts.md)
- **Slug:** `hard-cut`
- **Status:** live
- **Publisher:** varg (varg, verified)
- **License:** MIT
- **Source:** https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#hard-cut
- **Works in:** Claude Code, Claude.ai, Codex, Cursor, OpenClaw, Gemini CLI, Any MCP client, varg Studio
- **Requires:** ffmpeg, HyperFrames (npx hyperframes), Remotion, CapCut (by hand), Python + MoviePy
- **Cost:** Free — the take renders locally; generated footage, if any, bills by the model

## What it does

Frame N is shot A, frame N+1 is shot B. No overlap, no effect.

**When:** Most joins in any edit. Use it whenever the change of shot is motivated by story, speech or rhythm.

**Watch out:** Two near-identical framings of the same subject cut together read as a mistake (a jump cut) unless you mean it.

**Timing:** 0 frames

**Also called:** straight cut, cut, butt cut

### In FFmpeg

Re-encode with the concat filter (any sources) or losslessly with the concat demuxer (identical codecs).
```bash
ffmpeg -i a.mp4 -i b.mp4 -filter_complex \
"[0:v]trim=2:5,setpts=PTS-STARTPTS[v0];[0:a]atrim=2:5,asetpts=PTS-STARTPTS[a0];\
 [1:v]trim=0:3,setpts=PTS-STARTPTS[v1];[1:a]atrim=0:3,asetpts=PTS-STARTPTS[a1];\
 [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" out.mp4
```

### In HyperFrames

```html
<video id="a" src="a.mp4" data-start="0" data-duration="3" data-media-start="2" data-track-index="0" data-has-audio="true"></video>
<video id="b" src="b.mp4" data-start="a" data-duration="3" data-track-index="0" data-has-audio="true"></video>
```
`data-start="a"` means "start when clip a ends".

### In Remotion

```tsx
import {Series} from 'remotion';
import {Video} from '@remotion/media';

<Series>
  <Series.Sequence durationInFrames={90}><Video src={staticFile('a.mp4')} trimBefore={60} /></Series.Sequence>
  <Series.Sequence durationInFrames={90}><Video src={staticFile('b.mp4')} /></Series.Sequence>
</Series>
```
`trimBefore` replaced `startFrom` in v4.0.319.

### In CapCut

Put the playhead on the cut point and Split (Ctrl/Cmd+B on desktop, Split in the bottom toolbar on mobile), delete the unwanted part; clips on the main track snap together.

### In MoviePy

```python
from moviepy import VideoFileClip, concatenate_videoclips
a = VideoFileClip('a.mp4').subclipped(2, 5)
b = VideoFileClip('b.mp4').subclipped(0, 3)
concatenate_videoclips([a, b]).write_videofile('out.mp4')
```

### Where this comes from

- [FFmpeg filters: concat](https://ffmpeg.org/ffmpeg-filters.html#concat-filter)
- [FFmpeg formats: concat demuxer](https://ffmpeg.org/ffmpeg-formats.html#concat)
- [Remotion: <Series>](https://www.remotion.dev/docs/series)
- [HyperFrames: data attributes](https://hyperframes.heygen.com/concepts/data-attributes)
- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)

## Use when

- Most joins in any edit. Use it whenever the change of shot is motivated by story, speech or rhythm.

## Not for

- Two near-identical framings of the same subject cut together read as a mistake (a jump cut) unless you mean it.

## Install

- Claude Code: `claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg`
- Codex: `npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y`
- Cursor: `npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y`

## Example output

https://s3.varg.ai/how-to/previews/5c397ed672a5/take-hard-cut.mp4 — cut between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0. (credit: Rendered by varg · Big Buck Bunny (2008) + WING IT! (2023))

## More cuts & pacing skills

- [SmartCut (capcut-ai-editor)](https://varg.ai/how-to/skills/capcut-smartcut-mcp.md): MCP that reads CapCut auto-captions to cut silences and duplicate takes right inside your CapCut project.
- [Auto-Editor](https://varg.ai/how-to/skills/auto-editor.md): CLI that cuts dead space by loudness or motion and exports MP4 or editor timelines; now also an agent skill.
- [AutoCut](https://varg.ai/how-to/skills/autocut.md): Edit video in a text editor: Whisper transcribes, you delete lines in Markdown, AutoCut cuts the video.
- [Cut Video](https://varg.ai/how-to/skills/cut-video.md): Claude Code skill that tightens long recordings with forced-aligned cuts, keeping laughs and comedic pauses.
- [Videogrep](https://varg.ai/how-to/skills/videogrep.md): Search spoken words across videos and auto-build supercuts of every match.
- [PySceneDetect](https://varg.ai/how-to/skills/pyscenedetect.md): Find cuts, fades and scene changes in a video, then split it or export scene lists for the edit.
