short-form-video
Skill19 starsChanged 5 months agoMITView on GitHub
Build and iterate short-form vertical (9:16) videos in Hyperframes — TikTok/Reels/Shorts style. Use when the user says "short-form video", "vertical video", "TikTok/Reels/Shorts", "make a short", "talking-head + motion graphics", or when the target is a 1080x1920 composition with face video + synced scene overlays + karaoke captions. Encodes the full May Shorts 19 playbook: face-mode choreography, audio-synced scene timing, karaoke captions, and the 10-rule quality checklist.
We split this skill into the rules it gives an agent
30 rules. 0 are common, 16 are distinctive, and 14 are very specific to this project.
0
Common
Most of the 14 edited versions we read keep these.
16
Distinctive
This author's own choices. Worth a look.
14
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
If the user names a creator reference for this build — "build this like @handle", "use @handle's style", "blend @h1 + @h2" — before …
- Very specific: line 28
If the named handle doesn't have a folder in _reference/creator-library/, stop and tell the user it hasn't been studied yet.
- Very specific: line 41
Every short-form vertical has these four sub-compositions under compositions/, loaded on shared tracks:
- Distinctive: line 102
Problem: if audio is edited (retakes/pauses removed), timestamps in the source transcript no longer match the edited video.
- Distinctive: line 104
The rule: ALL timing lives in edited-time.
- Very specific: line 114
If using a shift() function in captions.html to map transcript words, treat that as the source of truth.
- Distinctive: line 131
All GSAP anchors are LOCAL (0-based from scene start)
- Very specific: line 132
Use tl.set({}, {}, <data-duration>) to pad the timeline so GSAP tl.duration() matches data-duration
- Distinctive: line 136
No dead frames: Every 100ms has ≥1 animating element.
- Distinctive: line 138
Motion through full duration: If entrance anims all land by local 2s on a 4s scene, add secondary motion: underline sweeps, checkmark pops, …
- Very specific: line 167
Use a SEEDED offline analyser (pre-compute the audio feature track) so renders are deterministic.
- Distinctive: line 171
Rotate flavors: No two consecutive transitions the same type.
- Very specific: line 202
Call Read on every PNG so the image loads into context.
- Distinctive: line 208
No blank frames, no unintentional overlap, no text-off-canvas
- Distinctive: line 222
Every short-form build. Run this list during authoring, not after.
- Distinctive: line 224
No dead frames: Every 100ms has an animating element.
- Distinctive: line 230
Rotate transition flavors: No two consecutive the same.
- Very specific: line 266
Write the Plan table: every scene data-start, data-duration, every face-mode transition t, any scene whose internal offsets straddle a cut.
- Very specific: line 272
Don't animate <video> element dimensions — freezes frames.
- Very specific: line 273
Don't use repeat: -1 on any timeline — breaks the capture engine.
- Very specific: line 274
Don't use Math.random() or Date.now() — breaks determinism.
- Very specific: line 275
Don't use <br> inside captions — natural wrapping + <br> produces extra unwanted breaks.
- Distinctive: line 276
Don't skip the frame verification gate.
- Distinctive: line 277
Don't author in original-time if the audio is edited.
- Very specific: line 278
Don't leave background: #07121c flat.
- Distinctive: line 279
Don't hard-cut between scenes.
- Distinctive: line 280
Don't polite-caption. Pop them.
- Distinctive: line 281
Don't let the face sit still.
- Very specific: line 299
Always keep HIDDEN's x, y, scale identical to BOTTOM — they only differ in opacity — so the opacity-fade scenes don't drift geometrically …
- Very specific: line 307
Start it 0.25–0.30s before the new scene's data-start (not the default 0.15s)
“Common” is measured: kept by at least 6 in 10 of the 14 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Short-Form Vertical Video (Hyperframes)
Short-form = 1080x1920 vertical, 10–30s, talking-head face + motion-graphic scene overlays + karaoke captions. Everything in this skill is distilled from the May Shorts 19 iteration autopsy (v1 → v4) and should be applied on every new short.
Always invoke /hyperframes first. This skill sits on top of it — it does not replace the framework rules (data-* attributes, window.__timelines, composition structure). Those are non-negotiable regardless of the format.
When this skill fires
- "Make a short-form video", "TikTok post", "Reels", "Shorts", "vertical video"
- Any build starting from a talking-head recording + script/transcript intended for social
- Retiming, recutting, or re-syncing an existing short
- Adding karaoke captions synced to a voiceover
Creator-reference mode
If the user names a creator reference for this build — "build this like @handle", "use @handle's style", "blend @h1 + @h2" — before brainstorming scenes, read the matching style fingerprint(s):
_reference/creator-library/<handle>/style-distilled.mdif it exists (auto-written at ≥3 analyses).- Otherwise read each of
_reference/creator-library/<handle>/videos/*/analysis.mddirectly.
Apply their signature moves (hook structure, caption style, pacing cadence, transition rotation, scene archetypes, face treatment) on top of the May Shorts 19 playbook below. The creator fingerprint overrides MOTION_PHILOSOPHY.md defaults for these dimensions, but stays subordinate to PREFERENCES.md — if a creator's signature move conflicts with a captured preference, the preference wins.
If the named handle doesn't have a folder in _reference/creator-library/, stop and tell the user it hasn't been studied yet. Suggest /study-creator <url> on 1–3 of their videos before the build.
The playbook (high-level)
- Audio is source of truth. Edit audio FIRST (cut retakes, pauses). Save as
<name>-edit.mp4. Measure exact duration withffprobe— this is the composition'sdata-duration. - Transcribe the edited audio with
npx hyperframes transcribe <edit>.mp4 --model small.en --json, or if retiming an existing build with ashift()function in captions, keep the existing captions and just shift scene starts. - Author scene boundaries in edited-time — NEVER mix original-time and edited-time anchors in the same file. See "Audio-sync protocol" below.
- Build the composition scaffold (4 layers: ambient-bg, seam-treatment, captions, face) — see "Composition scaffold" below.
- Author scenes with LOCAL offsets relative to each scene's
data-start. Each scene is its own sub-composition undercompositions/scene<N>-<label>.html. - Lint → draft render → word-exact frame verification → final render. This is the verification gate. Never skip step 3 (frame verification).
Composition scaffold (the 4 always-on layers)
Every short-form vertical has these four sub-compositions under compositions/, loaded on shared tracks:
index.html (root, 1080x1920, data-composition-id="main")
├── ambient-bg.html track-index="3" — radial gradient + drift grid + particles + vignette
├── face-wrapper + <video> track-index="0" — talking head (see face-mode choreography)
├── seam-treatment.html track-index="5" — feathers y=960 edge (bottom-half scenes only)
├── scene1-<label>.html track-index="1" — scene overlays (back-to-back, no gaps)
├── scene2-<label>.html track-index="1"
├── …
└── captions.html track-index="2" — karaoke captions, word-synceddata-durationis identical across root, ambient-bg, seam-treatment, face-video, face-audio, captions. Only scene overlays change over time.<audio>for the face is a SEPARATE element (mixer needs it), never use the video's own audio track.class="clip"goes on timed divs — NEVER on<video>or<audio>.
Face-mode choreography (the signature move of short-form)
The face lives in a wrapper div sized at the source's native landscape (1920x1080). GSAP animates the WRAPPER (never the video element — animating <video> dimensions freezes frames).
Two modes:
const BOTTOM = { x: 0, y: 1136, scale: 0.5625 }; // bottom-half, full landscape visible
const FULLSCREEN = { x: -1166.5, y: 0, scale: 1.7778 }; // cropped-cover, fills 1080x1920
const MODE_DUR = 0.32;BOTTOM renders the 1920x1080 source at 1080x607.5 centered in the bottom 960px. FULLSCREEN crops horizontally to fill the portrait frame.
Transition 0.15s BEFORE the new scene's content lands, using ease: "expo.inOut":
[
{ t: <scene-4-start>, mode: FULLSCREEN },
{ t: <scene-5-start>, mode: BOTTOM },
…
].forEach(({ t, mode }) => {
mainTl.to("#face-wrapper", { ...mode, duration: MODE_DUR, ease: "expo.inOut" }, t - 0.15);
});A face that snaps modes instantly is the single most jarring frame in a vertical video. Always interpolate.
Face grading (every short, no exceptions)
#face-video {
filter: contrast(1.08) saturate(1.08) brightness(0.97);
}Plus a subtle 1.00 → 1.025 Ken Burns zoom over the full duration (ease: "none") and a side-vignette ::after pseudo-element so the face sinks into the surrounding navy instead of butting against a razor edge.
Seam treatment (required for bottom-half scenes)
A navy→transparent gradient band (60–100px) at y=960 plus a 2px accent scan line with soft glow. Draw it AFTER the face so it sits on top; full-screen scenes will cover it when they take over. Razor-sharp y=960 cuts are the #2 tell for AI-edited content (after background flatness).
Audio-sync protocol (DO NOT skip)
Problem: if audio is edited (retakes/pauses removed), timestamps in the source transcript no longer match the edited video. Scene starts authored in original-time will fire late.
The rule: ALL timing lives in edited-time. Never mix.
Verification procedure for any short-form retime:
- Measure both audio files:
Difference = total cut time.ffprobe -v error -show_entries format=duration -of csv=p=0 assets/original.mp4 ffprobe -v error -show_entries format=duration -of csv=p=0 assets/<name>-edit.mp4 - If using a
shift()function incaptions.htmlto map transcript words, treat that as the source of truth. The mapshift(originalTime) = editedTimeapplies to EVERY scenedata-starttoo. - Scene internal offsets (inside
compositions/sceneN.html) are LOCAL relative to the scene'sdata-start. If a scene's parentdata-startis correct in edited-time, internal offsets stay correct WITHOUT modification — UNLESS a scene straddles a cut, in which case both the parent duration AND internal offsets shift. - Face-mode transition array times MUST use edited-time. They are NOT automatically shifted.
Plan format for retimes (use this table structure every time):
| Scene | Current start | Current dur | New start | New dur | Rationale |
| ... | ... | ... | ... | ... | ... |
Then the face-mode array, then any internal-offset changes, then frame-verification list.
Scene authoring
One scene = one sub-composition file. Scenes sit on the same data-track-index back-to-back (no gaps). Inside each scene:
data-durationmatches the parent's slot exactly- All GSAP anchors are LOCAL (0-based from scene start)
- Use
tl.set({}, {}, <data-duration>)to pad the timeline so GSAPtl.duration()matchesdata-duration
Scene pacing rules (from the 10 principles)
- No dead frames. Every 100ms has ≥1 animating element. Offset first entrance 0.1–0.3s, not t=0.
- Payoff ≥ 1s hold. The "big reveal" of the scene (stamp, number lock, punchline) must have ≥1s on screen, ideally 1.5s. Budget scenes by reveal time, not total time.
- Motion through full duration. If entrance anims all land by local 2s on a 4s scene, add secondary motion: underline sweeps, checkmark pops, ambient drift on cards, small oscillating glows on pills. Dead pacing = swipe-away.
- Vary eases. At least 3 different eases per scene across entrances.
- One jaw-dropper per 5s of runtime. Typography slam, glitch/chromatic reveal, whip-pan, audio-sync slam. Without these, the video reads as "labeled talking head" — correct but forgettable.
Captions (karaoke style)
- Montserrat 900, 46–58px (for 1080 width), 100% white base
- Active word: scale-1.08 pop + color change to your brand accent (
var(--brand-accent)) - Stroke via layered
text-shadow, NEVER-webkit-text-stroke(renders inconsistently in Chromium render) - Drop the rgba background pill — let the stroke hold readability. Captions should feel like graffiti on the frame, not a subtitle track.
- For retimes, use a
shift()function insidecaptions.htmlto map transcript word timestamps → edited-time. This keeps the transcript JSON untouched and makes retimes mechanical.
See references/captions.md under /hyperframes for the full karaoke implementation. TL;DR: per-word <span> elements with data-word-start, GSAP tweens scoped to each span, tight 0.08–0.12s pop durations.
Ambient background (never ship flat navy)
Minimum viable background stack:
- Radial gradient base (center lighter than edges by 15–20%)
- Animated noise/grain overlay at 8–12% opacity
- 4–8 drifting particle dots or grid traces
- Subtle vignette
A flat dark fill alone is a placeholder, not a design. For a techy/control-room aesthetic, build a layered background stack: HUD grid masked to a vignette + circuit traces + pulse nodes + a scan beam + a telemetry ticker + corner mono labels.
Audio reactivity
- Headlines pulse 3–6% on beat. Backgrounds can go 10–30% on bass.
- Text reactivity kept subtle (3–6%) so captions stay readable; backgrounds can push harder.
- Use a SEEDED offline analyser (pre-compute the audio feature track) so renders are deterministic. Do NOT use
AnalyserNodein the render path —Math.random()and real-time audio nodes break determinism.
Transitions
- Rotate flavors. No two consecutive transitions the same type. Six hard cuts in a row is the #1 tell for AI editing.
- Face-mode transitions (
BOTTOM ↔ FULLSCREEN) double as scene transitions when the mode changes between scenes. - For pure overlay scene-to-scene, install from registry:
push-up,flash-through-white,sdf-iris, or the full shader-transitions pack.npx hyperframes catalog --type blockto browse.
The verification gate (mandatory — DO NOT ship without)
Lint passing ≠ design working. Never report a short-form render done until you have extracted frames at word-exact timestamps and READ every PNG.
Step 1 — draft render
cd video-projects/<slug>
npx hyperframes lint
npx hyperframes render --quality draft --output renders/<slug>-vN-draft.mp4Step 2 — word-exact frame extraction
Pick 8–15 timestamps that each correspond to a SPOKEN WORD where a specific visual should be on-screen. Not round numbers. Not mid-scene. The exact word.
mkdir -p renders/frames-vN
for pair in "<t>:<label>" "<t>:<label>" ...; do
t="${pair%%:*}"; label="${pair##*:}"
ffmpeg -y -ss "$t" -i renders/<slug>-vN-draft.mp4 \
-frames:v 1 -q:v 2 "renders/frames-vN/t${t}-${label}.png"
doneStep 3 — Read every PNG
Call Read on every PNG so the image loads into context. Do NOT just list filenames. For each frame confirm:
- The expected visual is on-screen at the expected moment (not 1s late, not early)
- Speaker's face is not cropped in any bottom-half scene
- Full-screen vs bottom-half face mode is correct for that scene
- Captions are on-brand, readable, not overflowing
- No blank frames, no unintentional overlap, no text-off-canvas
Step 4 — if anything fails, fix + re-verify. Never ship broken.
Step 5 — final render
npx hyperframes render --quality standard --output renders/<slug>-vN.mp4Spot-check 3–4 frames from the final render (same timestamps, different folder frames-vN-final/) to confirm the standard-quality encode didn't change anything.
The 10 rules (quality checklist — run BEFORE first draft)
Every short-form build. Run this list during authoring, not after.
- No dead frames. Every 100ms has an animating element.
- Scene payoff ≥ 1s hold. Budget by reveal time, not total time.
- Face is a character. Grade + Ken Burns + side vignette.
- No hard seams. Feather y=960 with gradient + scan line.
- One jaw-dropper per 5s. Typography slam, glitch, whip-pan, audio slam.
- Audio reactivity non-negotiable. 3–6% text, 10–30% background.
- Rotate transition flavors. No two consecutive the same.
- Captions pop, don't politely label. Stroke not pill. Scale + color on active word.
- Motion through full scene duration. Secondary motion if entrances land early.
- Background is a layer, not a color. Radial + noise + particles + vignette minimum.
- Slam/stamp overlays land AFTER target text is fully visible. Reveal logic > word-sync. Stamp
t≥ target-visiblet+ 0.10–0.25s. Otherwise the punchline lands before the setup.
Project structure (every short-form project)
video-projects/<slug>/
├── hyperframes.json
├── meta.json (id, name, dimensions 1080x1920, fps 30)
├── index.html (root composition, the 4-layer scaffold)
├── compositions/
│ ├── ambient-bg.html
│ ├── seam-treatment.html
│ ├── captions.html (with shift() function if retiming)
│ ├── scene1-<label>.html
│ ├── scene2-<label>.html
│ └── ...
├── assets/
│ ├── <name>.mp4 (original recording)
│ ├── <name>-edit.mp4 (edited — cuts removed — this is what the comp uses)
│ ├── transcript.json (whisper output)
│ └── brand assets (logo, brand-tokens.css, background music)
└── renders/
├── <slug>-v1-draft.mp4
├── frames-v1/
├── <slug>-v1.mp4
└── ...Retime protocol (when audio is re-edited or timestamps drift)
- Measure old and new edited audio durations with
ffprobe. Delta = total cut time. - Identify cut window(s): which seconds were removed, from where.
- Write the Plan table: every scene
data-start,data-duration, every face-mode transitiont, any scene whose internal offsets straddle a cut. - For each scene that straddles a cut, both its parent duration AND its internal offsets change. Scenes entirely on one side of the cut just need parent
data-startshifted. - Lint → draft render → word-exact frame verify → final render. No shortcuts.
What NOT to do in short-form
- Don't animate
<video>element dimensions — freezes frames. Animate wrapper div. - Don't use
repeat: -1on any timeline — breaks the capture engine. Finite counts only. - Don't use
Math.random()orDate.now()— breaks determinism. Seeded PRNG if pseudo-random needed. - Don't use
<br>inside captions — natural wrapping +<br>produces extra unwanted breaks. - Don't skip the frame verification gate. Lint exit code is not visual truth.
- Don't author in original-time if the audio is edited. Edited-time or nothing.
- Don't leave
background: #07121cflat. Layer it. - Don't hard-cut between scenes. Rotate transition flavors.
- Don't polite-caption. Pop them.
- Don't let the face sit still. Grade + Ken Burns always.
Face-mode & scene lessons
Distilled from four concrete problems early short-form renders ran into and what fixed them. Apply these on every new short.
1. Slam/stamp timing — reveal logic beats word-sync
A SLAM/STAMP overlay (KILLED, DEAD, STOP, etc.) lands AFTER its target text is fully visible, not during the spoken word. In one early build, two products were pitched as opponents — the KILLED stamp fired at local 0.46s while the second product's name didn't appear until 0.66s, so viewers saw "X … KILLED" with no visible target. The joke collapsed.
Rule: stamp_t ≥ target-text-visible_t + 0.10–0.25s. The "visible" timestamp is the END of the target's entrance animation, not its start. Word-sync is a guideline; visual reveal order is the constraint.
2. BOTTOM face-mode scale — don't ship the default
Default BOTTOM = { x: 0, y: 1136, scale: 0.5625 } (exact horizontal fit for a 1920×1080 source) leaves empty studio background flanking the speaker if they occupy <70% of the source frame. This is a common starting default — and it leaves visible dead space left and right of the speaker in every BOTTOM scene when the source framing isn't tight.
Rule: prefer BOTTOM = { x: -180, y: 1110, scale: 0.75 } — crops 180px each side, bottom-anchors to y=1920. Preview ONE frame of BOTTOM mode against the actual source video before committing the constant. If the source speaker is tight-framed already, scale 0.65 may be enough; if the source is wide studio framing, push to scale 0.80 and re-tune x.
Always keep HIDDEN's x, y, scale identical to BOTTOM — they only differ in opacity — so the opacity-fade scenes don't drift geometrically mid-fade.
3. Face-mode transitions — three things at once, not one
When the face changes mode between adjacent scenes, a bare 0.15s pre-roll + 0.32s duration expo.inOut on just the face wrapper reads as rigid — the outgoing scene's panels are still fully opaque behind the morphing face, so the eye sees two things fighting instead of a crossfade.
Rule: for any "hero" scene-to-scene face-mode change (especially BOTTOM ↔ FULLSCREEN), do all three:
- Extend that specific transition's duration to 0.45–0.55s (not the default 0.32s)
- Start it 0.25–0.30s before the new scene's
data-start(not the default 0.15s) - Fade + blur the outgoing scene's panel wrapper to
opacity: 0, filter: blur(6px)over 0.20–0.25s, starting 0.25s before scene end
Implementation-wise, promote the face-mode transition array to per-entry dur so one transition can be longer than the others:
[ { t: 2.06, mode: FULLSCREEN, dur: 0.50 }, { t: 3.71, mode: HIDDEN, dur: 0.32 }, ... ]
.forEach(({ t, mode, dur }) => mainTl.to("#face-wrapper", { ...mode, duration: dur, ease: "expo.inOut" }, t));Three simultaneous changes = "a real editor edited this." Any one alone = rigid.
4. Data-feel scenes beat decoration scenes mid-video
For scenes 3–5 of a 15–20s short (the "middle grind" where attention drops the hardest), lean on visuals that read as information — bar races, stat grids with counting numbers, heatmaps, sparklines, flowcharts, dashboard chrome with telemetry ticking, pain-point grids that flash red in sequence. One early build's scene 4 was a radar-rings + terminal-chip + sparks combo — functional but decorative, and it read as "bland." Replacing it with a 3×3 pain-point grid lighting up red-orange in sequence + a sparkline stroke-drawing with a YOU-ARE-HERE marker + the payoff slam — same time budget — landed much harder.
Rule: pure typography-plus-icon scenes feel like slides. Data-feel scenes feel like evidence. When a middle scene feels bland, replace the decoration with something that reads as information: a small number ticking up, a bar filling, a chart stroking in, a grid flashing in sequence.
Reference compositions
This workspace doesn't ship bundled example videos. Build your own reference library instead: run /study-creator <url> on a few short-form videos whose editing you admire, and this skill will read each creator's _reference/creator-library/<handle>/style-distilled.md when you say "build this like @handle." Your /setup step already seeds this with the reels you pasted.
Related skills (invoke in addition)
/hyperframes— framework rules (always first)/hyperframes-cli— CLI commands (init, lint, preview, render)/gsap— animation library reference/hyperframes-registry— installing transition blocks/study-creator— study a reference creator so you can later "build this like @handle"
Other versions15 projects use a version of this.
Word for word · 0
None found.
Edited · 7
- nateherkai/hyperframes-student-kit★ 2.2k86% same
- nateherkai/herk-edit-kit★ 1.5k86% same
- notivn/AIEV★ 13288% same
- assafkip/claude-video-editor★ 1790% same
- tony-hoang-ai-automation/mkt-skills★ 490% same
- F0rger123/claude-video-editing-god-mode★ 186% same
- chriswestt/claude-skills★ 090% same
Wrote their own version · 8
- marcosmodly/marketing-skill★ 100same name
- iart-ai/tiktok-video-skills★ 11same name
- astDeniss/business-skills★ 8same name
- NexumAI-online/skills-edicion★ 4same name
- Jiliac/skills★ 1same name
- willlee1995/skills★ 1same name
- kpatdev/my-skills★ 0same name
- kpatdev/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use short-form-edit, cut-mistakes and 7 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
NexumAI-onlineSkillshort-form-edit
Convertí una grabación hablada en un reel, YouTube Short o anuncio corto terminado, con apertura que genere curiosidad, resolución respaldada por el contenido, cortes narrativos, gráficos sincronizados, B-roll en movimiento, subtítulos, música sutil y efectos. Para videos largos usá edit-video; para quitar sólo pausas, cut-silences.
Also in 4 projects that use this
nateherkaiSkillcut-mistakes
Agent 2 of the video editing pipeline. Finds and removes spoken mistakes — stutters, repeated words, false starts, and retakes (re-recorded lines) — from a talking-head recording. Use after cut-silences, when asked to cut mistakes, remove stutters / repeats / filler restarts, clean up flubs, or keep the best take. Works review-gated: it proposes every cut with context and a reason for approval, then renders only the approved cuts via ffmpeg. Requires a word-level transcript.
Also in 4 projects that use this
nateherkaiSkillcut-silences
Agent 1 of the video editing pipeline. Removes silences and dead air from a talking-head recording. Use when asked to cut silences, trim pauses, remove dead air / gaps, or tighten the pacing of a raw video, given a word-level transcript. Produces an edit list (EDL), a re-timed transcript for downstream agents, and optionally the cut video via ffmpeg. Does NOT cut mistakes, repeats, or false starts — that is the cut-mistakes agent.
Also in 4 projects that use this
Google CloudSkillvideo-storytelling
Cinematic video ad storytelling expertise. Covers 3-act narrative structure, emotional arcs, camera motion, scene transitions, and voiceover pacing for 10-second commercial video ads using Gemini Omni. Load this skill when generating video ads or storylines.
Also in 4 projects that use this
ConardLiSkillmotion-showreel
用代码制作图形、文字或界面动画视频,输出 MP4 和可编辑源码,最长 20 分钟。适用于动效作品集、产品片、UI 动效、动态排版、Logo 片头、生成艺术与讲解视频;支持独立选择 BGM/音效来源、用户口播,以及用用户提供的口播稿通过 TTS 合成语音。不用于实拍制作、写实人物生成或一般视频剪辑。
Also in 4 projects that use this
iart-aiSkilllower-thirds
This skill should be used when the user asks to "make an animated lower third", "add lower thirds", "create a name tag/name lower third", "build broadcast titles", "animate a title/name/role caption", "do a speaker name overlay", or "template lower thirds across a list of names". Covers enter/exit animation (slide/wipe/mask reveal), in/out timing & dwell, safe-area & broadcast conventions, name-vs-role type hierarchy, brand styling, and rendering one design across many names.
Also in 3 projects that use this
- +2 more from nateherkai
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- feedbackSkill
- gsapSkill
- hyperframes-cliSkill
- hyperframes-registrySkill
- hyperframesSkill
- make-a-videoSkill
- setupSkill
- study-creatorSkill
- website-to-hyperframesSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

