I built a tool that turns long videos into short clips.
AI agents built this tool with me.
You paste a link. It reads the transcript, picks the strongest moments, and cuts them into vertical clips with captions. No timeline. No scrubbing through footage.
I put the code on GitHub so anyone could clone it and use it.
There was one problem. The copy in the repo was not the copy I was using.
It was 196 lines behind.
What the Stale Copy Was Missing
For a week I had been fixing three defects in the working copy.
- Severed words. The missing code padded each cut into the silence around it. Without it, cuts landed mid-word.
- Clipping audio. The working copy finished audio with a two-pass loudness step. The repo copy did not have it.
- Undeclared jump cuts. The working copy declared its seams. The repo copy never did.
And the repo copy had no qc.py at all. No quality check file.
So anyone who cloned the repo that day got exactly the version I had spent the week fixing. Clipping audio. Cuts landing mid-word. Jump cuts nobody declared.
Nothing connected the two copies, so nothing could have caught the drift.
Two Copies Is a Bug Generator
The fix was not complicated, but it was structural.
The repo is now the single source of truth. The installed skill on my machine, its scripts and its instructions file, are symlinks into the repo. They point at the same files.
I wrote the reason in the commit itself: two copies of a file that must agree is not a versioning problem. It is a bug generator. One file cannot drift from itself.
That is the whole lesson. If a tool exists in two places, one of them is out of date. You just do not know which one yet.
A Check for Words That Were Never Said
The same commit added verify_text.py, a script with one rule: every word that appears on screen has to be a word the creator actually said.
That rule exists because five fabrications had shipped, or nearly shipped, before it. An invented line. An invented date. An invented statistic. And twice, a third-person narrator label placed on the creator's own channel.
Every one of them was caught by luck. Luck is not a check.
The script allows two exceptions, and both have to leave a receipt. On-screen interface text that makes no claim about the creator can be marked as a prop. Words the creator said somewhere the check cannot prove have to name where they were said.
The Check Had Bugs in It
Here is the part that stayed with me. While I was writing the check, I found two bugs in the check itself.
Both were false negatives. The check said all clear when it should not have.
One pattern was not anchored, so it could match the leading digit of a phrase like 1 MILE WARM-UP and throw that digit away as if it were a CSS length. The guard was blind to exactly the category it was loudest about.
A second filter was too greedy and ate a real line of text, treating it as style data. A filter that hides content reports all clear.
I anchored everything and moved the matching to full matches. A checker that can quietly skip the thing it exists to catch is worse than no checker, because it gives you confidence you did not earn.
What Changed
The commit touched five files, with 828 insertions. Most of that was not new features. It was one file in one place, a quality check that did not exist before, and a text check that runs before a clip ships.
If a tool is worth giving away, the version I give away is the version I run. Not a copy of it. Not a snapshot from last week. The same file.
And if a check matters, the check gets tested too.