timscheuerai/content-vault/shorts-edit
Claude Code and agent skill by timscheuerai/content-vault
- community
Checking that the SKILL.md file is still in the repository.
Turn raw talking-head recordings (OBS, webcam, screen capture) into finished vertical shorts — cut the retakes and dead air, clean the audio, burn word-by-word captions, add cue-anchored motion graphics and retention pattern-interrupts, all in a single video encode, then prove it with a QA gate. Use when asked to edit/cut/clip raw talking-head footage, remove retakes or dead air, denoise recording audio, add captions or motion graphics to a talking-head video, or improve a video's retention.
Install
npx vskill@latest install timscheuerai/content-vault/shorts-editSKILL.md
shorts-edit
The orchestrator. Raw takes in, postable vertical shorts out.
Built and hardened on a real session: 14 OBS recordings, 57 minutes of raw → 21 minutes of cut. Every rule below exists because a defect got through review looking fine.
The prime directive
Nothing is done until `qa.py` passes. Not "looks good" — passes.
Every single bug in this pipeline's history was invisible to eyeballs and obvious to a measurement. A caption verifier that sampled long words reported perfect while short words were silently wrong. A tier grade was revealed 5.7s before it was spoken and every frame looked fine in isolation. Audio "sounded weird" and the cause was a filter silently changing mode. Do not trust your eyes on this material. Measure.
Subskills
| Skill | Owns | |
|---|---|---|
| shorts-cut | take selection, dead air, why ASR word-ends are fiction | |
| shorts-audio | the two silent audio traps, and why the answer was no denoiser | |
| shorts-motion | scout → plan → render, cue anchoring, the brand, the tier board | |
| shorts-qa | the gate. 7 checks. Run it before anything ships. |
Read the one you need. Read shorts-qa always.
Project layout
Scripts find the project via $SHORTS_PROJECT, --project <dir>, or by walking up from the cwd for raw/.
SETUP
Then point two shell vars at this vault so the pipeline below copy-pastes:
Optional, all with sane fallbacks — see scripts/assets.py:
| Env | Default | If unset | |
|---|---|---|---|
SHORTS_FONT | macOS Helvetica Neue .ttc | on Linux/Windows, set it — there is no fallback face | |
SHORTS_SFX_DIR | shorts-edit/assets/sfx/ | synthesised whoosh/impact/riser, measures clean | |
SHORTS_BRAND_MD | shorts-edit/assets/BRAND.md | ships conformant; edit it to your brand |
The pipeline
Hard rules (violating any of these produces a silent failure)
- ONE video encode. Trim → concat → zoom → overlay → encode, all in one filtergraph.
Two encodes softened a 246 kbps source from SSIM 0.998 to 0.977. Never re-encode a finished clip to add something to it.
- ASR word END times are fiction. They pad into the following silence and can be
phantom words over dead-silent audio. Word STARTs are reliable. All silence reasoning comes from the audio (`silencedetect`/RMS), never the transcript.
- Never let ffmpeg derive caption/graphic timing from durations. The concat demuxer
re-times to CFR and rounds boundaries as it pleases. Use one PNG per output frame.
- Never use `loudnorm` for gain. See shorts-audio. It silently pumps.
- Graphics are cue-anchored, never hand-timed. See shorts-motion.
- Fades only at real cut edges. A mid-beat framing change is not a cut — the audio
runs straight through it. A 30ms fade there dips the voice audibly.
- `concat` wants inputs interleaved
v0,a0,v1,a1,…— not all video then all audio.
The two are identical for one segment, so a single-segment test clip hides the bug.
- PIL's ImageDraw with a partial-alpha fill OVERWRITES pixels, it does not composite.
Draw at full opacity on a layer, then fade the layer. Otherwise a fading element punches a transparent hole through whatever is beneath it.
What shipped
| video | libx264 CRF 6, preset slow, native res/fps, bt709/tv — SSIM 0.9996 vs source | |
| audio | highpass 60Hz + a constant gain to −1.5 dBTP. No denoiser. | |
| captions | Helvetica Neue Medium, lowercase, 18px, tracking −1, no stroke | |
| graphics | cue-anchored, on-brand, drawn per frame at 30fps | |
| retention | pattern interrupt every ≤4.8s; dead-air 0% |
Fix the capture, not the edit
The source was 360×640, 246 kbps, −43 LUFS. No post-processing recovers detail that was never recorded. Raising the OBS canvas and input gain improves every future edit for free.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/shorts-edit/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/timscheuerai/content-vault/shorts-edit)