Show HN: A video editor where the LLM never watches the video A developer known as ranahaani released 'i-hate-editing', an open-source AI video editor skill for Claude Code, Cursor, and Codex that edits talking-head footage without the LLM ever watching the video, relying instead on audio transcription via whisper.cpp and local scripts. The tool automates take selection, silence removal, captioning, screen capture, and sound effects, and is installed via 'npx skills add ranahaani/i-hate-editing'. Drop in raw talking-head takes. Get back something you can publish. I named it after a note to myself: never hand back work that still needs fixing by hand. Same recording on both phones. Left is what came off the camera; right is what came back. Instagram reel this footage shipped as https://www.instagram.com/reel/Db3VN1Boyej/ . The skill picks the take, decides the repo and the docs page were worth capturing, where to zoom, which line gets the highlighter, what goes on each card, and where every sound lands. You say "punchier." It owns the numbers. - Cuts from silence and word onsets, not from scrubbing the timeline - Re-transcribes a short window around every seam so repeated words and mid-clause cuts get caught before you see a preview - Writes captions that still read on a phone, with a proofread gate before they ship - Captures real pages as tall stills, then scrolls, zooms, and highlights the line you said no mocked screenshots - Places free-licensed SFX by intent and aligns peaks so a short window is actually audible - Hands back a package: master, platform crops, ranked thumbnails, post lines - Remembers corrections in taste.md so the tenth video is better than the first - Runs transcription on your machine with whisper.cpp . No cloud STT key. Built for talking-head reels and YouTube explainers. npx skills add ranahaani/i-hate-editing That registers the skill with your agent. You still need the local tools ffmpeg , whisper-cpp , Playwright Chromium . Details in install.md /ranahaani/i-hate-editing/blob/main/install.md . Works in Claude Code, Cursor, Codex, and anything else with a shell: Set up https://github.com/ranahaani/i-hate-editing for me. Read install.md first: clone the repo to a stable path, symlink it into this agent's skills directory, install ffmpeg + whisper.cpp, create the Python venv with playwright + pillow, and optionally run scripts/sfx library.py install. Then read SKILL.md for daily usage. After install, don't start editing โ€” tell me it's ready and wait for me to drop footage into a folder. git clone https://github.com/ranahaani/i-hate-editing ~/Developer/i-hate-editing ln -sfn ~/Developer/i-hate-editing ~/.claude/skills/i-hate-editing Claude Code ln -sfn ~/Developer/i-hate-editing ~/.cursor/skills/i-hate-editing Cursor ln -sfn ~/Developer/i-hate-editing ~/.codex/skills/i-hate-editing Codex cd ~/Developer/i-hate-editing uv venv .venv && uv pip install --python .venv playwright pillow .venv/bin/playwright install chromium brew install ffmpeg whisper-cpp macOS; use your package manager on Linux cd /path/to/your/footage claude or your agent of choice edit these into a reel It scans the machine, asks five questions, picks a Whisper model for your language and hardware, and starts. More in install.md /ranahaani/i-hate-editing/blob/main/install.md . The model does not watch the video. Audio is the clock. Scripts do the mechanical work; the agent only makes taste calls. %%{init: { "theme": "base", "themeVariables": { "fontFamily": "ui-sans-serif, system-ui, sans-serif", "fontSize": "14px", "primaryTextColor": " 0f172a", "lineColor": " 94a3b8", "clusterBkg": " ffffff00", "clusterBorder": " e2e8f0", "edgeLabelBackground": " ffffff", "tertiaryColor": " f8fafc" }, "flowchart": { "curve": "basis", "padding": 16, "nodeSpacing": 32, "rankSpacing": 40, "htmlLabels": true } }}%% flowchart TB RAW "๐ŸŽฌ raw takes" :::src PROF "๐ŸŽ›๏ธ profile.yml" :::cfg subgraph A "๐ŸŽง 1 ยท LISTEN" direction LR SCAN "๐Ÿ” scan" :::listen ASR "๐Ÿ—ฃ๏ธ whisper.cpp" :::listen PACK "๐Ÿ“„ pack" :::listen SIL "๐Ÿ”‡ silences" :::listen TAKES "takes.md" :::artBlue GAPS "gaps.json" :::artBlue SCAN -- ASR -- PACK -- TAKES SCAN -- SIL -- GAPS end subgraph B "โœ‚๏ธ 2 ยท CUT ยท HARD GATE" direction LR EDL "edl.json" :::artAmber RND "๐ŸŽž๏ธ render" :::cut VER{"๐Ÿ›ก๏ธ verify