Skills As Functions: The Naming Discipline Behind a 15-Skill Video Pipeline
Wang Jianshuo spent five years trying to build AI video editing. Claude Code reproduced his progress in a night. Then he tore the codebase down and rebuilt it as 15 verbs. Here's why.
Wang Jianshuo (王建硕) has been trying to build automatic AI video editing for five years. Multiple frameworks. Multiple rewrites. The 2020-era version got nowhere. The 2024 version with Cursor was better but still brittle.
Last week, he rebuilt it in one night with Claude Code. The result is the 15-skill video pipeline we covered in the previous post.
But the thing he wrote about — the part he found important enough to publish a Chinese-language essay on — wasn't that he finished it. It was that his finished code was already going wrong, and he had to refactor it almost immediately into 15 separate skills. That refactor is the most interesting design lesson I've seen this month.
The "Familiar Feeling of Code Going Bad"
Wang's exact phrase, lightly translated: "The familiar feeling of code starting to rot reappeared in the Skill world, so I did a round of refactoring."
Code rot in a Claude Code skill doesn't look like code rot in a normal repo. There's no spaghetti-coupling between modules. There's no growing dependency graph. There's no test suite to fall behind. So what's rotting?
The answer is the one most engineers learn the hard way: rot is a naming and scope problem long before it's a code problem.
His original draft was, by all accounts, working. A handful of fat skills that each did several steps of video processing. Functional. Shipped. Tested on a real podcast.
He still tore it down. Because the names had stopped describing what was inside, and that's the moment scope starts running away.
The Discipline: Every Skill Is a Verb
The 15 skills are named with present participles:
transcribing · translating · dubbing · burning · segmenting · overlaying · reframing · syncing · editing · uploading · publishing · promoting · auditing · eating-and-growing · localizing
Not "video-editor". Not "podcast-pipeline". Not "auto-shorts". Transcribing. Reframing. Single actions.
Wang's explanation, in his words: "The fewer things a skill is trying to do, the more reliable it is, and the easier it becomes to connect to other skills. A skill's name is, in fact, its external interface."
A skill's name is its interface. Sit with that. It's not metaphor.
Why This Maps Directly To Function Design
The reason a well-designed function is reusable is that its name tells you exactly what it does — parseInt, flatMap, assertEquals. The reason a badly designed function is un-reusable is that its name promises everything: process, handle, manage. You can't compose those. Their preconditions are unwritten and their post-conditions are negotiable.
Skills work the same way, and we've underappreciated it because skills feel novel. They aren't. They're functions with markdown bodies. The same rules apply:
- One name, one job. If you can't describe a skill in a single present-participle verb, it's probably two skills.
- Define the contract by the artifact it produces.
wjs-transcribing-audiodoesn't dub, doesn't translate, doesn't segment. It produces an SRT and stops. That stop is what makes it composable. - The orchestrator is a separate concern.
wjs-localizing-videoexists only to call the four underlying skills in order. It does no work of its own. This separation — pipeline vs. step — is precisely the same shape as a function that takes pure helpers as arguments.
This is also why Wang's pipeline has 15 skills and not 3. The temptation to merge "transcribing + translating" into a single "subtitle" skill is enormous — they're always run together in the localization flow. But merging them would mean:
- You can no longer ask for subtitles in the source language alone.
- The "subtitle" skill has to choose between Whisper-then-translate and translate-only, branching on whether an SRT already exists.
- The skill grows a configuration surface to encode that branching.
- The skill is now describing too many possible behaviors for its name to be honest.
That's rot. Not yet broken; just rotting.
What This Tells Us About The Skill Ecosystem
I keep saying the most-installed skill on skills.sh is a meta-skill — find-skills, with 1.3M installs. The reason that's load-bearing infrastructure is that the rest of the ecosystem doesn't yet share Wang's naming discipline. Most skills are named ambitiously — "expert-X", "auto-Y", "smart-Z" — which means the only way to find the right one is to search and read descriptions. Names aren't doing their job.
When more authors follow Wang's pattern — verb names, single artifact contracts, separate orchestrator skills — the discoverability problem partially solves itself. You won't need a meta-tool to find a transcription skill; you'll know it's called something with "transcribing" in it.
That's a long way off. But you can adopt the discipline in your own skills today.
A Heuristic For Your Own Skills
Before you publish, run this check:
- Name your skill with one present-participle verb. Can't? Split it.
- Write down the single artifact it produces. A file. A JSON shape. A pull request comment. If you can't name the artifact, it's probably two skills.
- Write down the precondition. "Input must include
X." If your precondition is a paragraph, it's probably two skills. - Now ask: is there a downstream skill that would naturally consume the artifact I just defined? If yes, you've found your seam. Don't paper over it with internal branching — let the next skill do its job.
Wang's full repo at github.com/jianshuo/claude-skills is a working example of this discipline applied across an entire domain. Read it the way you'd read a well-organized standard library: not for the code, for the shape.
The Five-Year Lesson, In One Sentence
Five years ago, the problem with AI video editing wasn't the models — it was that we had to write every step ourselves. The 2024 Cursor-assisted version solved that. The 2026 Claude Code version is faster still. But the thing Wang spent his second night doing — splitting the working code into 15 verbs — is the part that will still be true when the models are five generations newer.
Models get better. Naming discipline compounds.
Part of the AI Skill Daily series — skills worth understanding, one at a time.
Companion piece: The 15-Skill Video Pipeline — the practical walk-through.