Nº 122 · AI ·15 min read · September 17, 2026

Five Claude Skills and the Choice They Make for You

Five Claude Skills and the Choice They Make for You
Fig. 01 Five Claude Skills and the Choice They Make for You

503. I requested source.unsplash.com nine times this afternoon, in three rounds twenty seconds apart, with a portrait query, a food query and a plain random one. Nine times the server answered 503 and a Heroku page titled "Application Error".

On its own that number is somebody else's outage. It lands in this column because a design skill with almost 29,000 stars on GitHub tells the agent to use that address whenever a page needs a photograph of a real subject. You never pick it. The skill picks it, in a step you do not see, and you find out when the client opens the link.

So this week I read each skill for the same thing: what it does on its own when you do not choose. Every one of the five makes a decision like that, and in each case the decision is written down in a file you can read before installing. That is where I looked.

How I checked

One snapshot, September 17, 2026, between 13:30 and 13:31 UTC.

Repository numbers came from the authenticated gh CLI, because the public API rate limits this machine at 403. Every link in this article was requested with curl in that window and answered 200. The two exceptions are on purpose and named where they appear: the Unsplash address that answered 503, and a Picsum address that answered with a 302 redirect to an actual image, which is how Picsum works.

What I did not do: I did not install or run any of the four GitHub skills. Where I describe behaviour, I read it in the source file, and I say which file.

1. Hallmark

A design skill that builds web pages and refuses the layout every model falls back to.

Link. github.com/Nutlope/hallmark

What it does. You describe a page. Before writing any markup it picks a whole page shape from a catalogue of macrostructures, a long document, a manifesto, a stat led page, a portfolio grid, dresses it in a theme, and runs a checklist of anti patterns against the draft before it hands anything back. It has three other verbs: audit scores an existing page without editing it, redesign keeps the copy and the brand and rebuilds the structure, and study extracts the design logic of a page you admire while refusing to clone it pixel for pixel. The README credits Together AI as the maker. The live gallery at usehallmark.com shows pages built from different briefs, and they do not look like colour swaps of one template, which is the claim.

Who it is for. The producer who needs a one page site for a short film premiere by Friday and does not want it to look like every other page an AI made this month.

What it saves. The substitution is the first pass of a web designer's week: choosing a structure and a type system before anyone argues about details. If you would hire that pass out anyway, this is a sharper brief to hand over. If you would never build a page, it saves nothing.

Cost to install. One command, with Node on the machine.

npx skills add nutlope/hallmark

The catch. It is in references/assets.md, the file the skill loads when a page needs an image. There is a placeholder ladder with five tiers, and the file says skipping tiers is "the slop move." Tier one is Hallmark's own imagery kit. Tier two is hand built SVG. Tier three is Picsum, for a generic photo slot. Tier four is Unsplash Source, https://source.unsplash.com/<w>x<h>/?<keywords>, and the use case written next to it is food, travel, portrait, real product.

That is the tier that answered 503 nine times out of nine, from 13:25:07 to 13:25:49 UTC, and once more in the snapshot window.

Think about which briefs reach tier four. Not the SaaS landing page, which the kit covers. The restaurant, the travel agency, the cast page, the product launch: exactly the pages where a photograph of the subject is the point. Those are the ones that come back with empty image slots. Nothing in the code looks wrong, because the address is well formed. It shows up in the browser.

The fix is cheap once you know it. Tell the agent before it starts that photo slots use your own files, or tier five, a local placeholder checked into the project. The skill itself already insists every placeholder carries a comment with the target size and routes through one constant, so swapping them later is one edit. That part is well designed.

I do not know why the service is down, and I am not going to guess in print. What I can say is what I looked for: in the most recent 100 issues and pull requests the API returned for the repository, none mentions Unsplash, 503 or placeholders. The last commit that touched assets.md is from May 26.

Verified. September 17, 2026, 13:30 UTC. 28,759 stars, 1,480 forks, 47 open issues, MIT with a LICENSE file, last push August 6 at 16:19 UTC, repository created April 27, 2026, not archived. SKILL.md declares version 1.1.0. The live gallery answered 200. The 503s are mine, made with curl, and the tier table was read in assets.md as served in that window.

2. wjs-syncing-multicam and wjs-editing-multicam

Two skills that line up several cameras of the same event by their audio, then cut them into one file.

Link. github.com/jianshuo/claude-skills, engine at github.com/jianshuo/polysync

What it does. The sync skill takes a reference camera and any number of other sources, a second camera, a phone, a separate audio recorder, and finds the time offset of each one. It compares the loudness envelope of the sound rather than the raw waveform, which is the right call: two microphones in the same room sound nothing alike, but they hear the same sentences get loud and quiet at the same moments. It checks for clock drift across the recording, it automatically picks the loudest audio track so a camera with a dead track one does not sync against silence, and it has a mode for a recorder that only covers the middle of the session. Then it writes a small .sync.json file next to each original and never touches the footage. No re-encoded copies. The edit skill reads those files and renders a single MP4 with hard cuts, or cuts with a picture in picture corner.

Both skills say, in their first section, that they no longer ship their own scripts. The work is done by polysync, a Python package by the same author, installed from PyPI.

Who it is for. The editor who gets a podcast shoot with two cameras and a Zoom recording and has to line the three up before anyone can start cutting.

What it saves. The substitution is the manual sync: dragging clips on a timeline until the clap or the first word lands on top of itself, then doing it again for every source. On three sources that is a short job. On a long session with a recorder that started late and a camera that drifts, it is the part of the day nobody bills for.

Cost to install. Three commands, plus ffmpeg and ffprobe on the path.

git clone https://github.com/jianshuo/claude-skills.git
cp -r claude-skills/wjs-syncing-multicam claude-skills/wjs-editing-multicam ~/.claude/skills/
python3 -m pip install -U polysync

The catch. The edit skill describes itself in its first line as "the cam with the loudest mic each second wins." That is one of two modes, and it is not the default.

I read autoedit.py in the polysync source. The --mode flag defaults to rotation. In rotation mode the length of each shot is drawn by a random number generator, seeded with 42, somewhere between 8 and 15 seconds. The audio decides only which camera the cut goes to next. The mode that actually follows whoever is talking is greedy, and you have to ask for it. The skill does document both modes further down, under "Brainstorm before running", so this is not hidden. It is just not what the first line tells you, and the first line is what makes Claude pick the skill.

Two more things decide how you use it. The decision list works in whole seconds, one value per second of reference time, so cuts land on second boundaries and never on the syllable. And the same skill file admits, under "Editing quality", that with close microphones that bleed into each other the loudness score keeps choosing the loudest mic even when the other person is talking, and that the fixes are "applied by hand on the EDL." That EDL is a JSON file only polysync's own renderers read. The command line has five commands, sync, verify, edit, render-cuts and render-pip, and none of them writes a file an editing program imports.

My reading after the source: install it for the sync, which is careful work with a verification step built in, and treat the automatic cut as a rough to watch before anyone else does.

One number disagrees with itself and it matters before a shoot rather than after. The sync skill says a 75 minute 4K shoot from three cameras is "60+ GB". The polysync README, same author, same example, says "250+ GB". Both can be true, because the answer is the codec, not the camera. If you are buying the drive the week before, it is worth seeing what a terabyte holds at each format instead of trusting either figure.

Verified. September 17, 2026, 13:30 UTC. The skills repository: 129 stars, 21 forks, 1 open issue, MIT, last push August 20 at 17:07 UTC, created May 11, 2026, not archived. Its README says it is mirrored automatically from the author's own skills folder by a hook, so it changes when he edits. polysync: 0 stars, 2 forks, MIT, last push May 25 at 16:37 UTC. Its whole commit history is four commits on May 25, and PyPI lists 0.1.0, 0.2.0 and 0.3.0, all uploaded that same day. The source on GitHub declares 0.3.0, matching PyPI. The README's status line still says "Beta (0.1)", and its install line still says "once published", which is the only stale part I found.

3. Frontend Slides

Builds presentations as single HTML files, and converts PowerPoint files into them.

Link. github.com/zarazhangrui/frontend-slides

What it does. Instead of asking you to describe a look in words, it renders a few title slides in different styles and lets you point at one. One comes from a set of twelve presets, at least one from a pack of bold templates, and one is a wildcard. Then it builds the deck as one HTML file with inline CSS and JavaScript, no framework and no build step, and adds in-browser text editing after the first draft. The template gallery in the README is large enough to judge the taste before installing anything.

Who it is for. The director writing a treatment for a pitch on Thursday who wants it to look like a piece of work and not like a corporate template.

What it saves. The layout hours of a treatment deck. The writing and the reference frames are still yours.

Cost to install. Two messages inside Claude Code, sent separately, as the README insists.

/plugin marketplace add https://github.com/zarazhangrui/frontend-slides
/plugin install frontend-slides@frontend-slides

The catch. It is in what "share" means, and a treatment is the kind of document where that matters.

When the deck is done, the skill asks whether you want to share it, and offers two routes. The first is scripts/deploy.sh. Its own header says it "deploys the slide deck to a public URL", and the command inside runs Vercel with --yes --prod. The skill file adds that the link "stays live until the user takes it down", and that redeploying overwrites the same address. For a talk, perfect. For a treatment with an unreleased campaign in it, a public production URL that lives until you remember it is a decision, and it should be made by you before you say yes, not after.

The second route is scripts/export-pdf.sh, and I read it. It opens each slide in a headless browser, takes a 1920 by 1080 PNG screenshot, and wraps the screenshots into a PDF. So the PDF is pictures of slides. The text cannot be selected or searched, and the skill warns that an eighteen slide deck comes out at about 20 MB, with a --compact flag that drops to 1280 by 720.

And the PowerPoint road runs one way. The package has three scripts: one that extracts content from a .pptx, the deploy script and the PDF script. Nothing writes a .pptx. If the agency on the other side needs to edit your deck in PowerPoint, this is the wrong tool, and it is better to know that before the style selection than after.

Verified. September 17, 2026, 13:30 UTC. 29,445 stars, 2,318 forks, 68 open issues, MIT, last push June 23 at 20:08 UTC, repository created January 28, 2026, not archived. The deploy flags were read in deploy.sh, the screenshot method in export-pdf.sh, and the file size warning in SKILL.md, all as served in that window.

4. shuohao-skills

Five skills that turn a novel into production material for a vertical short drama: outline, character bible, art bible, script and storyboard.

Link. github.com/eternityspring/shuohao-skills

What it does. It is a pipeline with a clear order of authority, stated in one line: the outline settles the structure, script, scenes and characters iterate together, and the storyboard only outputs and makes no new decisions. The storyboard stage splits each episode into segments of fifteen seconds or less, the length of one video generation, and each segment into cuts of two to five seconds, with a hard check on both. The script stage estimates episode duration from reading speed instead of guessing. Every skill ships a self test that calls no model and costs nothing, and the reports render in English with --lang en.

Who it is for. The showrunner of a vertical micro drama who has the rights to a book and needs a writers' room document set before the first generation.

What it saves. The substitution is the pre production binder: the character sheets, the prop list, the scene by scene breakdown that a coordinator would otherwise build in a spreadsheet. The rights to the book are not in any skill, and neither is the judgment about which chapters survive.

Cost to install. Three commands, and Node 18 or newer.

git clone https://github.com/eternityspring/shuohao-skills.git
cd shuohao-skills
./scripts/install.sh

The catch. The pictures in the README were made by a different agent than the one you are probably using.

The gallery shows character sheets, set sheets and keyframes, captioned as "actually generated by the skill." Now read the image step inside the skill files. In novel-characters, novel-art and novel-storyboard, image generation runs only through the built in image tool of OpenAI's codex CLI. The files say, in plain words, that without codex the whole step is skipped and you receive only the prompts, and that they deliberately do not use the codex fallback that needs an OpenAI API key. Run this in Claude Code with no codex installed and you get every document in the gallery except the images.

The video prompts have an address too. The storyboard writes one prompt per segment in the structure of MiniMax H3, following that model's published method, down to the alignment line and the cut timestamps. If your generations run on Seedance or Kling, the segment and cut timing carries over, and the prompt text needs rewriting for the model you actually use.

One line from the English README belongs here as well, because it decides the language of the binder: the skills are Chinese first, and the character skill produces Chinese profiles even from an English novel, with a validator that rejects English in those fields.

Verified. September 17, 2026, 13:30 UTC. 3,514 stars, 476 forks, 1 open issue, Apache 2.0 with a LICENSE file, last push September 14 at 00:50 UTC, repository created August 6, 2026, not archived. The codex requirement was read in the three SKILL.md files named above, and the language note in README.en.md. The README states the project was only tested on macOS with Node 24.

5. world-film

Mine. The same continuous fly through the world generation as scroll-world, from last week, but the deliverable is one film instead of a website.

Link. openyourais.com/skills

What it does. It interviews you for the subject, the journey through the scenes, the format and the audio plan, generates one still per scene as the storyboard, and stops. No video is generated until the whole storyboard is approved. Then it renders camera clips where every clip starts from the actual last frame of the previous one, extracted with ffmpeg, so the camera reads as one take with no cuts. A Python assembler normalizes the clips, joins them, checks every seam and lays one continuous music bed or voiceover over the whole film. There is a table that turns target duration into scene count, because in a film, unlike a scroll page, time is fixed.

Who it is for. The brand team that wants a one take fly through of their world for Reels and YouTube and has no 3D department.

What it saves. The substitution is a previs or 3D animation pass for a continuous camera move. If that is the alternative on your desk, this replaces it with a generation budget and an approval gate. If the alternative is a normal edit of existing footage, it saves nothing and costs credits.

Cost to install. One command, plus an authenticated Higgsfield CLI, ffmpeg, ffprobe and Python 3.

unzip world-film.zip -d ~/.claude/skills/

The catch. The README inside the zip says, under "What changed before release": "Nothing. The files went out exactly as they run here." I wrote that as a virtue. Reading the file this week as a stranger would, it is the problem.

The skill still carries the rules of my own studio. Every run is told to live in a human-output/world-film/ folder, which is how my projects are organised and means nothing on your machine. The voiceover step defaults to a Brazilian ElevenLabs voice and a script born in Portuguese, and two of the house rules are written in Portuguese inside an otherwise English file. The worst one is the handoff: for end cards and titles, both the skill and references/pipeline.md send you to a skill called novelty. That skill is not in the public library. It lives on my machine and carries private account details. So the step that finishes the film points to a door you do not have.

None of that breaks the generation or the assembly, which are the parts that matter. It does mean you should read Step 6 before running it, and replace the voice, the folder and the title handoff with your own. The credit estimate is also mine and dated: the skill says it observed roughly 40 to 55 credits per video in July 2026 on my plan, and it tells the agent to measure one still and one video before trusting any number, which is the instruction I would keep.

Verified. September 17, 2026, 13:30 UTC. The zip served at openyourais.com/skills/world-film.zip answered 200 and is byte identical to the file in the site repository. Five files: a README of 867 bytes, a SKILL.md of 16,363 bytes, pipeline.md, prompts.md and assemble.py. The folder, voice and novelty lines were read in that SKILL.md and in pipeline.md. Instructions are in English, with the exceptions above.

What I did not verify

This section is permanent. An empty one would mean the checking was lazy.

I did not install or run any of the four GitHub skills. Nothing above is a benchmark I produced.

I did not see Hallmark reach tier four. I know the tier exists, what it points to and what that address answered. How often a real brief sends the agent there, I did not measure.

I did not run polysync on footage. The random dwell, the seed and the one second resolution are read from autoedit.py; I did not watch a cut made with them. I also did not read the two render scripts line by line, only the command line entry point and the decision list builder.

I did not check whether a Vercel deployment made by Frontend Slides can be password protected afterwards from the Vercel dashboard. I reported what the script does, not what the platform allows.

I did not install codex to confirm that the shuohao image step works there. I confirmed that it is the only route written into the skill files.

I did not re-run world-film this week, so the July credit figure stays a July figure.

And every star count above is a photograph, not a fact. That is what the timestamps are for.

Next Monday, five more.

Sources and verification

VERIFICATION NOTE, September 17, 2026. Every repository number in this article was read by me on September 17, 2026, between 13:30 and 13:31 UTC. Repository metadata came from the authenticated `gh` CLI, not the public unauthenticated API, which rate limits this machine at 403. Every link in the article was requested with `curl` in the same window; all returned HTTP 200 except the two addresses discussed in the text, which returned 503 and 302. The Unsplash Source address was also requested nine times between 13:25:07 and 13:25:49 UTC and returned 503 each time. The polysync release dates came from the PyPI JSON API and its commit history from the GitHub API, in the same session. The four GitHub skills were NOT installed or executed on this machine, and the article says so in its own section. The world-film figures were read out of the zip published at openyourais.com/skills, compared byte for byte with the file in the site repository.

About the author

Read the manifesto→ Write in