Communitygithub.com

SingleGrain-Team/video-skills

Builds a 10-14 second product sting out of a short run of UI moments (an entry screen, a single counting metric, a navigation list, one click that opens a menu, then an endcard) cut together so every cut carries the previous motion forward and the piece reads as one continuous camera move. Delivered as a 1920x1080 H.264 MP4 plus an editable single-file HyperFrames project. Use it for app launches, feature teasers, social bumpers and site intros when you have a product's logo, a couple of screenshots, one headline number and its real nav labels, and want polished UI motion without narration.

¿Qué es video-skills?

video-skills is a Cursor agent skill that builds a 10-14 second product sting out of a short run of UI moments (an entry screen, a single counting metric, a navigation list, one click that opens a menu, then an endcard) cut together so every cut carries the previous motion forward and the piece reads as one continuous camera move. Delivered as a 1920x1080 H.264 MP4 plus an editable single-file HyperFrames project. Use it for app launches, feature teasers, social bumpers and site intros when you have a product's logo, a couple of screenshots, one headline number and its real nav labels, and want polished UI motion without narration.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/SingleGrain-Team/video-skills/tree/HEAD/skills/ui-sting

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

ui-sting

A short, silent-by-default film made of UI beats. The look comes from two things only: one ease family, and matched motion vectors at every cut. Do not add idle motion or decoration.

Inputs to collect

  • Brand: name, logo (PNG with alpha or SVG), 2-3 colors (ground, ink, one accent), a font that is legal to render (an open face is fine; Inter is the default).
  • Two screenshots at 1920x1080 of real product screens (an entry/landing screen and a detail screen that contains a command, form or headline you can crop to).
  • One metric worth counting (for example "662 skills") with a label and a sub-line.
  • The real primary navigation labels (5 of them), and which one gets highlighted (the third).
  • The one action the viewer should take (a button label) and 4 menu options it opens.
  • Endcard: a 2-word tagline, the URL, optionally a command to type in the zoomed card.

Use only assets you own or are licensed to use. Never put third-party logos or UIs in the film.

Slots

slotframes (30fps)what to put there
A lockup1-35logo mark + wordmark, two parts that bounce against each other, then rise out
B entry36-72screenshot card enters from below, a brand-colored gloss crosses it, exits left
C zoom73-113card at 1.5x entering from the right; a crop of the detail screenshot plus a command that types in; rises out
D counter114-154metric card rises in, number rolls 0 to N, exits right
E nav155-209rows waterfall in from the left, an accent pill travels from row 1 to row 3
F action210-304the button arrives oversized and contracts, cursor clicks, menu opens, highlight steps to option 3
G endcard305-325tagline + lockup + URL land with a pull-back, spring settle and a shimmer through the mark

Total 325 frames = 10.83 s. Everything is keyed off F(n) = (n - 1) / 30.

Workflow

  1. Scaffold: npx --yes hyperframes init <dir> --non-interactive --resolution landscape. This gives the project files; then replace index.html and add assets/.
  2. Copy template/index.html and template/assets/ from this skill into the project. Replace the three placeholder images with the real logo and screenshots (keep file names, or update the src/url() references).
  3. Re-brand only the brand layer: the :root color tokens, the copy strings, the NAV, MENU arrays, the ICO path data (24x24 viewBox, 1.7 stroke, round caps; draw generic glyphs, never another company's marks), the command string CMD, the counter target (the 662 in AMT) and the crop (#c-crop background position/size: pick the region of the detail screenshot you want to show; size = screenshot width x scale, position = negative offset of the crop in scaled pixels).
  4. Re-measure the two nav numbers. After changing labels, render once, open a settled nav frame (about t = 6.5 s) and read each label's right edge. Set NAV[i].w to the row width (icon + label) and pw = w + 46 for the first three rows. Highlight lands on row 3 and must fit it.
  5. npx --yes hyperframes check. The single-file layout produces nested_structure_needs_subcomposition warnings; they are expected for this format. Errors and the contrast section must be clean.
  6. Render: npx --yes hyperframes render --quality looks --workers 2 --output final.mp4.
  7. Review frames (see Validation), fix, re-render. Deliver final.mp4 and the project folder.

Music is optional. If used, resolve it through the media-use catalog or generation, confirm the license allows commercial use, add it as an <audio id="bed" class="clip" ...> clip on its own track (it needs the id), and keep it low. The film works silent.

Motion rules (do not break these)

  1. One ease family: arrivals use EO = 1 - 2^(-10p), exits use its mirror EI = 2^(10(p-1)). Pass them as functions. The strings "expo.out"/"expo.in" are a different curve and shift every exit by several pixels. No overshoot, no linear, no stock elastic or back.
  2. Matched vectors at every cut (see references/seams.md). Nothing settles before a cut; nothing starts from rest after one. Axis and direction must agree on both sides.
  3. Curves are tweens, decisions are stamps. The typing rhythm, odometer values and highlight path are stamped frame by frame with tl.set, which stays exact and seek-safe.
  4. Uneven on purpose: nav rows are not evenly pitched and typing has three double-frames.
  5. Fast moves carry blur that ramps with the same ease, peaking when speed peaks.
  6. Two-part marks counter-bounce: a damped spring A * e^(-t/0.279) * sin(2*pi*t/0.5), +A on one part and -A on the other. The endcard staggers its words by 2 frames on the same spring.
  7. The last digit of the counter carries a vertical-only blur (SVG feGaussianBlur stdDeviation="0 4").
  8. No idle motion. If a beat feels empty, add information, not wobble.
  9. Do not change frame numbers, durations, clip data-start/data-duration, EO/EI, the stamped arrays' lengths, or the scene wrapper tweens unless you re-plan the seams on both sides.

Technical notes

  • Authoring is in a 720x720 square ("world") that each .scene scales 1.5x onto 1920x1080, with the square centred by the .w wrapper (offset 280). Off-screen exits therefore use large pixel values.
  • Clip boundaries sit just below frame times (1.166, not 1.1667).
  • Dark themes need a second nav layer: light type vanishes on a bright pill. Keep dark ink on the accent pill instead, and use ink (not accent) for any accent-colored small text on a light ground: an orange on cream fails the 3:1 contrast gate.
  • Never measure text at runtime; it races font loading. Bake numbers from a render.
  • Register the font under a family you control if it is not a system face.

Validation

  1. npx --yes hyperframes check passes (runtime, layout, motion, contrast).
  2. Extract 6-8 frames and look at them: ffmpeg -ss <t> -i final.mp4 -frames:v 1 f.png at roughly 0.5, 1.8, 3.1, 4.4, 6.5, 8.5, 9.4, 10.7 s. Tile with hstack/vstack to review at once.
  3. Confirm: logo centred; entry screenshot readable; typed command not clipped; counter ends on its target; the pill rests on the intended row and is wide enough; the menu opens off the button's corner and the highlight steps to option 3; endcard text is centred and legible.
  4. Spot-check two seams per references/seams.md.
  5. ffprobe the output: 1920x1080, h264, 30 fps, duration about 10.83 s.

Delivery

final.mp4 (1920x1080 H.264) plus the project folder (index.html, assets/). The project is editable: re-brand by changing data, not motion.

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

SingleGrain-Team/video-skills

Make a 30-45 second launch film for a product by staging it inside one persistent, neutral chat window. A user types a request, the assistant answers and calls the product as a connected tool, a progress card runs, a follow-up triggers a second tool action, and the result lands as a count-up headline number before closing on the logo, tagline and call to action. Use when you need a launch, feature or integration announcement video for something that plugs into AI assistants (a skill, MCP server, plugin, connector, CLI). Delivers a rendered 1920x1080 MP4 plus an editable single-file HyperFrames project.

SingleGrain-Team/video-skills

Build a motion graphic where a screen recording plays in a large frame beside a checklist, and each checklist item ticks off at the exact moment that step happens in the recording, ending with every item checked and a short hold. Use when someone has a screen recording (product walkthrough, tutorial, onboarding, install demo) plus a list of steps with timestamps and wants a "watch the steps get done" film. Input is a recording, step labels with timestamps, a title and an optional palette; output is a 1920x1080 H.264 MP4 and the editable HyperFrames project.

SingleGrain-Team/video-skills

Build a 15-20 second product launch film that shows the product's real screen on a laptop built from plain CSS (no 3D model, no generation model) in a dark studio, scrolls the page, zooms into the interface for one key action such as typing a search, and resolves to the logo lockup. Use when someone has a full-page screenshot or screen recording of their product, one action worth showing, and a logo, and wants a short silent-friendly launch teaser rendered as a 1920x1080 MP4 with an editable HyperFrames project.

SingleGrain-Team/video-skills

Builds a 6-8 second logo sting in which the brand mark rides inside a refracting liquid bead (distorted past legibility), the bead swells, holds still for a beat, then ruptures into droplets and leaves the logo lockup (mark plus wordmark) crisp and upright on screen. Delivered as a 1920x1080 H.264 MP4 plus the editable HyperFrames project, with no 3D model, stock footage or generation model. Use it for brand intros and outros, product-launch openers, channel stings and any "reveal our logo" moment, from an SVG or PNG logo (including raster-only logos), a wordmark string and a palette.

SingleGrain-Team/video-skills

Make a 20-30 second launch film for a product that is not tied to one interface, such as a CLI, package, plugin or agent skill. The identical prompt or command is typed into four visually different surfaces in turn (a wide terminal, a tall chat card, a floating palette, an editor cell), the film then hard-cuts into a fast reel of real outputs on a beat or fixed tempo grid, and it closes on the command in a large pill. Delivered as a rendered 1920x1080 MP4 plus the editable HyperFrames project. Music is optional - with a track the cuts land on detected beats, without one they land on a 120 bpm grid.

SingleGrain-Team/video-skills

Make a roughly 30-second film that explains a code change (a pull request, release or uncommitted diff) to people who will never read the diff. It opens by showing the real diff scrolling past too fast to follow, cuts to a plain-language summary, fires four capability beats each pinned to a real code snippet, and closes on how to get it (install command and URL). Delivered as a 1920x1080 H.264 MP4 plus the editable HyperFrames project. Use when asked to turn a PR, changelog or release into a launch or explainer video.

SingleGrain-Team/video-skills

Render a 5-6 second motion graphic in which an oversized condensed headline (2-4 words) punches in behind a presenter, using a background-removed cutout of the presenter layered on top of the lettering. A hard cut then removes the presenter while the same headline holds the exact same size and position, and a short supporting line appears for a reading hold. Use it for talking-head intros, chapter openers, launch announcements and social hooks when you have one presenter clip, a headline, a supporting line and a palette. Built on HyperFrames; delivers a 1920x1080 H.264 MP4 plus the editable project.

Skills relacionados