write-video-script — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited write-video-script (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Video scripts are a different craft from posts. A 60-second talking-head script has a hook in the first three seconds, beats instead of paragraphs, and natural-sounding spoken prose that holds up when said out loud. This skill exists to write video scripts that work in the user's voice, not the average LinkedIn-AI video voice that has become its own template.
Two facts make video important right now: it gets roughly 5x the interactions of equivalent text posts, and LinkedIn's projected content mix has video at about 65% by late 2026. The format is genuinely growing.
But the bar is higher. A weak text post fails quietly. A weak video has the user's face attached to it. The reader can hear filler words, see hesitation, watch the user struggle to land a point. This skill exists to make sure the script is worth reading aloud before the user records anything.
Trigger when:
Do NOT trigger when:
The angle (one sentence) and:
If voice-profile.md exists, read it. Spoken voice and written voice often differ, so flag that this is the spoken version.
A LinkedIn short-form video that works has these traits:
Hook in the first 3 seconds, no exceptions. The first three seconds decide whether the viewer keeps watching. The hook is not the intro ("Hi, I'm X, today I want to talk about..."). The hook is the most interesting thing the video is going to say, delivered first. Then context comes after.
Beats, not paragraphs. Spoken content moves in beats: one claim per beat, with a brief pause before the next. Each beat is one or two short sentences, then a breath, then the next. Long sentences do not work on camera; the speaker runs out of breath and the viewer loses the thread.
Captions are mandatory. A significant share of LinkedIn video is watched muted. The script should be writeable as captions without losing meaning. Avoid puns or wordplay that only land aurally.
Concrete over abstract. Same rule as posts, more important here. The video has 60 seconds; abstract claims burn that time.
Camera-friendly ending. Spoken endings need a clear cue that the video is over. A specific takeaway, a question, or a single sentence that lands. Cold cuts read as the speaker forgot their line.
A 60-second script is roughly:
That is roughly 140-160 spoken words for 60 seconds at conversational pace. Adjust for the speaker's actual pace.
For a 45-second script: cut one beat from the substance. For a 90-second script: add one beat, or develop one of the existing beats further.
Output must read as written by a human on the first pass. The constraints below are how you write, not a checklist to apply later. Do not narrate this process to the user. Do not show a "before humanizer / after humanizer" sequence. Just produce clean output.
Hard bans — never appear in output:
- **Speed:** ...). Write as prose.Required patterns:
Final scan before output:
— and –. Any hit means redraft.Full 33-pattern reference: see humanizer/SKILL.md in this plugin.
Title: [working title]
Target length: [seconds]
Format: [talking-head / demonstration / both]
[0:00-0:03] HOOK
[script]
[On-screen text: optional caption to reinforce]
[0:03-0:15] CONTEXT
[script]
[Visual note if relevant]
[0:15-0:50] SUBSTANCE
Beat 1: [script]
Beat 2: [script]
Beat 3: [script]
[Visual notes for any demonstration]
[0:50-1:00] CLOSE
[script]
[On-screen text: any final card]
---
Word count: [N words for ~M seconds at conversational pace]
Notes for recording:
- [Any cues for the speaker: pauses, emphasis, where to look]
- [Any cues for editing: cuts between talking-head and screen]Angle: I shipped a script without types after a year of arguing for them. Change of mind, specific anchors.
User confirms: "Make this a 60-second talking-head video. I'll film it on my phone."
Output:
Title: I changed my mind about static typing in a week
Target length: 60 seconds
Format: talking-head
[0:00-0:03] HOOK
I shipped a Python script with no type validation last week. Six months ago I would have blocked the same merge in code review.
[On-screen text: "I changed my mind"]
[0:03-0:15] CONTEXT
For a year I was the loudest pro-types person on my team. I wrote the RFC. I held up merges. I was probably annoying.
[0:15-0:50] SUBSTANCE
Beat 1: The script reads twelve JSON fields and writes them to a queue. I almost spent half a day writing a Pydantic model for it. I didn't. I shipped it raw.
Beat 2: I expected a production fire by Wednesday. Malformed payload, schema drift, the 3am page. None of it happened. The script has been running for a week and nothing has broken.
Beat 3: The thing I noticed is that most of my arguments were about the worst case. Real concerns. None of them have actually happened on this script.
[0:50-1:00] CLOSE
I still think types are right for most things. The thing I changed my mind about is the default.
[On-screen text: "Type what's caused problems. Justify the rest."]
---
Word count: ~145 words for ~60 seconds at conversational pace.
Notes for recording:
- Slight pause after "I didn't" in Beat 1.
- Read Beat 3 slower than the others; this is the turn.
- On-screen text at 0:50 should appear after the spoken close, not during.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.