Repository navigation
Releases: Leonxlnx/cinetic
Release list
cinetic v1.1.0
This version teaches cinetic what top-tier launch films measurably do. Their pictures and soundtracks were measured frame by frame, and the results became a technique library the agent draws from at random, a reference of craft norms, a recalibrated sound engine and a set of tested motion primitives in the starter.
Two snapshots of this version went through judged rounds against the same agent working without cinetic but with the official Remotion agent skills, and, new in these rounds, against the films 0.5.0 made for the same briefs. In round 7 the cinetic films met 54 of 56 of the written expectations against 41 of 56, won 2 of 4 blind comparisons with the neutral judge, 4 of 4 with the house-style judge and 3 of 4 against the 0.5.0 films. The fixes from round 7's findings are in this release but were not judged again; see docs/evaluation.md.
Highlights
- A technique library, drawn at random.
assets/library/techniques.jsonholds 273 techniques in 14 categories (opening hooks, transitions, camera, typography, UI choreography, data, product demo, end cards, colour and light, texture, layout, pacing, micro-interactions, depth). Each has a build recipe in the starter's tokens and helpers, default timing at 60 fps, when to use and avoid it, the formats and energy it suits, and a ban-safe variant where the original look touches a hard ban.scripts/pick.pydraws about one technique per 2.5 s of film, in the order the film's format needs them and weighted toward proven workhorses and its energy, so films stop converging on the same fade-up, push-in and end card.references/technique-library.mdis generated from the JSON. - Craft rules from measurement.
references/craft-rules.mdgives measured norms for pacing, smoothness, text timing, transitions, camera, UI in motion, colour over time and layout, plus what separates the top tier from good films. - Sound that stops sounding stock. Keys are a short, dark modal tock instead of band-passed noise; typing defaults to
auto(soft per-key typing over a 10 dB music duck up to 25 characters a second, one tuned blip per word above); the UI click is one bright, very short press-and-release voice per film; effects go on discrete state changes, about 5 per 10 s, and most cuts are carried by the music; the ending subtracts instead of slamming.sound.mdgains measured norms and a sound-slop table. - Tested motion primitives. The Remotion starter ships
TypeOn,Scramble,Roll,Morph,IrisandMaskRisenext toWords,CursorandRackFocus, plusE.type,E.exit,stagger,inertia,arriveK,zoomSpeedandzoomHandoff, each rendered frame by frame at 60 and 30 fps and at blur sub-frames.
Added
scripts/pick.py: weighted random draws from the technique library (--format,--energy,--seconds,--category,--n,--seed,--exclude,--avoid,--brand-supplied,--json),--list,--show <id>,--validateand--markdown. A plan prints its seed so it can be reproduced and recorded in the treatment.assets/library/techniques.jsonand the generatedreferences/technique-library.md.references/craft-rules.md.- The treatment template gains a "Drawn techniques" section and a gate line for it.
- Starter primitives in
src/fx/and helpers insrc/lib/anim.tsandsrc/lib/camera.ts(see Highlights);references/motion-tokens.mdlists them with their defaults. score.py: typing stylesauto(default),soft,mechanical,pitched,muted,wordandoff; a music duck under per-key typing (mix.typing_duck_db); levelling of keys, clicks, crisp ticks and word blips against the music; acrisptick variant; a typing block, effect levels and the loudest moment's position in the report.synth.py:key_clickstyles and kinds with a secondary transient,word_blip,crisp_tick, a newui_click, and a small room for tiny sounds.render.sh --looprenders lossless PNG intermediates, so a loop's seam survives the encode, anddeliver.sh --loopencodes the WebM at CRF 26.render.sh --blurstops before the sub-frame pass while a move is faster than clean blur allows (80 px/f), or on an unexplained full-frame change away from an act boundary, which would be a cut its sub-frames blend into a double exposure.--accept-fast A-Band--accept-cut A-Bwaive a range you checked at full size (a frame-filling wipe, a flood, a flash, a zoom-through).av-audit.pywarns when a landing sound (land, pop, tock, bell, snap, hit, drop) comes after the picture has already stopped moving.forensics.pygates a still opening, measured on the film's own scale (a warning when the first visible change comes after 1.0 s, a failure after 2.5 s), and runs the hook check on films of 6 s or less with 1 s windows.brand-svg.tswrites aLockupSvgexported fromsrc/brand/Mark.tsxas is, for marks that are part of the word, sobrand-kit.shno longer assumes a mark beside a typed name.sheet.py --imagestiles stills or frames you already have, labelled by file name.grid-check.tsaccepts one declared designed hold (export const HOLD = {from, to}, at most 96 f at 60 fps).- Tests for
pick.py(scripts/test/pick.test.py), run in CI, including a check that the generated library page matches the JSON.
Changed
- SKILL.md Step 1 draws the film's techniques with
pick.pybefore the beat sheet. The agent builds the picks the concept can carry and rerolls (at most twice) or drops the rest with a written reason; it never adds an undrawn technique. - Measured norms replace several defaults: one designed near-still hold of 60–96 f per film; an end card that assembles over 60–80 f and then holds 36–80 f still or creeping ≤ 6%; exits into a cut on
E.exitand entrances decaying ×0.89–0.94 per frame; text being read at most about 3 px/f; entry blur 6–8 px or none (Wordsdefaults to 8); standalone hero words up to 5× the statement size; frame-filling edges allowed 150–300 px/f for a few frames; secondary moves starting at 55–75% of the leading move; continuous takes up to 560 f; one lull of 1–4 s at 55–85% of the runtime and the biggest peak at 75–90%; large centred product windows; 12–20 f cursor travel with a 60 f dwell; time-boxed prompts. - Sound rules: the drop on the hero reveal is the loudest moment, and the lockup is the most resolved one; effects sit within ±0.15 pan except whooshes and risers; whooshes (about 2 a film) only on camera-scale moves and logo zooms; risers end on a hard stop, a filter drop or a gap.
av-audit.pysuggests a sound only for the 3 biggest picture changes, instead of warning on every strong change without one.- Product UI: push in 2–5× on every interaction that carries the story, hold a wide shot of readable UI at most about 1.7 s, and label every bar or chart that carries meaning. A text reveal never shows part of a glyph.
taste-and-slop.mdnames haze behind the hero and the stock tech palette.- Sound goes on the frame an arrival becomes readable (its
settleOf), never on the tween's last frame or a later bar line; every arrival of the lockup is sounded where it happens. Frame-0 sound assumes a moving frame 0. - Anything posted to a feed masters at −14 LUFS whatever the brand's temperament; −16 is only for a sting that plays at the head of other videos.
brand-and-color.mdadds the word test for a mark that is a letter of the name, and how to export such a lockup.- A loop's frame 0 is its poster and names the product; numbers stay true in every in-between state; every number on screen carries its label or unit.
- The 9:16 feed zone keeps the bottom 420 px clear (was 384), matching current overlays.
- The static end tail
forensics.pyallows is 2 s at the film's frame rate instead of a fixed 120 frames. finishing.md: run long renders in the background and read the log.- The hook names the product on screen by about a quarter of the runtime. The oversize opening line (
oh-oversize-fly-then-small) travels every frame and hands straight to the small one, and becomes a signature move.
Fixed
av-audit.pypicks onsets in numpy. librosa's cached numba peak picker could segfault the whole process.- A key event on frame 0 could start before the film and lose its attack.
mixColoraccepts thergb()strings it returns, so nested mixes no longer fall back to black.- A loop rendered from JPEG intermediates failed its seam gate even when its frames matched.
pick.pyfailed inside a film project:new-film.shnow copies the library toscripts/library/, andpick.pyfinds it there. When a category has run out for the format, it says so instead of blaming--energy.lint-film.mjsflagged a build number such as "#2187" as a purple hex; an all-digit #NNN(N) in running text is now a number label.- A sub boom dropped onto true silence, and a silence opening again, clicked; both now ramp over a few milliseconds.
- A hard cut inside an act blurred into one double-exposed frame:
measure-speed.pynow renders every hard cut it measures with one sample.
Install with the skills CLI: npx skills add Leonxlnx/cinetic
Or download cinetic.skill below: a zip of the skill folder with cinetic/SKILL.md at its root.
cinetic v1.0.0
cinetic is an agent skill that has your coding agent direct, score and render short films from code: launch films and teasers, product and feature videos, looping feature animations, logo stings, UI walkthroughs and social cut-downs. One beat grid in timeline.ts drives the picture, a synthesized soundtrack and the QA scripts, and a film counts as done only after its render has been measured and reviewed.
Install it with the skills CLI (npx skills add Leonxlnx/cinetic), or in Claude Code with /plugin marketplace add Leonxlnx/cinetic followed by /plugin install cinetic@cinetic. To install by hand, download cinetic.skill from the release page (a zip whose top folder is cinetic/; the four demo films are attached next to it) and unzip it into ~/.claude/skills/.
Changes since 0.5.0 are listed under Added and Changed below. The rule and check changes come from the fifth evaluation round, which tested 0.5.0 against the same agent working without cinetic but with the official Remotion agent skills. In that round the cinetic runs met 54 of 56 written expectations (96%) against 41 of 56 (73%), won 2 of 4 blind comparisons with a neutral judge, and won 4 of 4 with a second blind judge applying the house style guide (the hard bans). The neutral judge's remaining craft points, such as quiet stretches, end cards without a descriptor and a loud sound on a still frame, fed the new rules. The plugin manifests, the license and CI were added for the public release. 1.0.0 itself has not been through a separate blind round; see the evaluation for the method and every round.
Highlights
- A directed workflow from brief to delivery. Steps 0 to 8 each write a file, every gate is a check you run, and the review loop ends at the ship gate. The concept step writes three concepts through different lenses, runs the ownership, deletion, specificity and feature-word tests, picks one story device the film owns, and writes a treatment with a beat sheet. Stings, loops and short clips take a scaled-down path.
- A brand built from three personality adjectives. They set the typeface (vendored with
add-font.mjs), the stage, the accent and the motion character. Marks are explored on a sheet of 6-10 directions with a 64 px misread test, lockups are compared in three settings, andpalette.pybuilds and checks the palette in OKLCH. A brand you supply always wins. - One beat grid for picture, sound and QA.
src/timeline.tsholds FPS, BPM,b(bar, beat, sub), acts, cues and copy, andgrid-check.tschecks it. Starters for Remotion 4 (React, the default) and HyperFrames (HTML and GSAP) are scaffolded bynew-film.sh, which also copies every script into the project. - Sound computed from the picture.
export-cues.tstakes sync frames from the same springs and eases as the picture.score.pysynthesizes a tuned score and effects with stems, andmaster.pymasters to −14 LUFS (−16 for calm brands and short stings) with true peak at or under −1.5 dBTP on the WAV and a 3 ms fade-in at sample 0.check-sync.pyholds true peak at or under −1 dBTP after encoding. - Finishing.
render.shmakes previews, sharp masters and motion-blurred masters. With--blur,measure-speed.pyreads on-screen speed with optical flow and picks the sub-frames per frame, andaccumulate.pyaverages them in float and quantizes once to BT.709 yuv420p, dithering only smooth ramps.--budgetcaps the cost and--10bitwrites a High 10 master.probe.pyandcheck-sync.pygate every file. - Measured review.
lint-film.mjsandlayout-audit.sh(safe zones including 9:16 feed presets, covered text, text speed) run while you build.forensics.pychecks pops, stalls, holds, ghosts, borders, judder, banding, compression smear, hook energy and loop seams.av-audit.pychecks onsets against cues per stem, whoosh apexes, the loudness target, a click at the head and loud sounds on a still picture. Contact sheets (sheet.py) feed five critic prompts, and a ship gate on an 11-dimension rubric decides when a film is done. - Hard bans against the generated look. No eyebrow labels, stacked taglines or filler text; no serif or italic; no orange, amber, beige or cream; no neon or glow; no purple, violet or indigo, and no multi-hue gradients; no glassmorphism, emoji, sparkles, particles or confetti; no bouncy overshoot except on a true landing.
lint-film.mjsandpalette.pyenforce the bans, and regression tests cover both. A supplied brand is recorded inBRIEF.md, and acinetic:brand-supplied <what>comment exempts its own line and the next, or the whole file when it sits in the file's leading comment. - Deliverables.
deliver.shwrites a poster from a clean still, MP4, WebM and GIF loops with a loop-seam check, ProRes 4444 alpha stings, 9:16 and 1:1 re-layouts (never crops of the master) and a manifest inqa/. For an invented brand,brand-kit.shexports SVG and PNG marks and lockups, favicons, an avatar and an X header. - Guides. 17 files in
references/cover concept, copy and type, brand and color, timing, motion tokens, camera, transitions, product UI, sound, finishing, Chromium rendering traps, both engines, formats, the review loop and a catalog of generated-look tells. A worked example follows Tessel, a 33 s launch film, from idea to master, including 15 mistakes and their fixes.
Added
- Text-speed check in
layout-audit.sh: with--speedit also renders the frame after each audited frame and fails readable text (effective opacity at least 0.5, at least the minimum size) whose center moves more than 20 px per frame (px/f), measured in a 1080 px tall frame.--max-text-speedsets the limit. It is on by default with--cues, and--no-speedturns it off. The Step 4 gate andreview-loop.mduse the same limit. av-audit.pywarns when a loud effect (within 6 dB of the loudest) lands on a picture that barely changes from 3 frames before it to 6 frames after, and lists these asvisual.still_hits.- Hook check in
forensics.py: a film over 6 s that starts at frame 0 and is not a loop gets a warning when its first 2 s move less than max(0.5, 0.5× the film's median 2 s window).review-loop.mddocuments it. - Claude Code plugin marketplace (
.claude-plugin/marketplace.jsonandplugin.json), MIT license, andlicenseandcompatibilityfields in the SKILL.md frontmatter. - CI checks the SKILL.md frontmatter and the JSON manifests, confirms the skills CLI discovers the skill, and runs the lint regression tests and Python and shell syntax checks. A release workflow packages
cinetic.skillon each version tag, checks thatplugin.jsonmatches the tag, and takes the release notes from CHANGELOG.md.
Changed
- Launch films and product videos end on a card that says what the product is in one short line under the name ("The build cache for CI.") when the brief gives no practical fact to carry. A bare name is for stings.
- When a gate flags a quiet stretch, the fix is motion, not a looser threshold.
- The master check covers the fastest frames of every act at full size, including the lockup's entrance and exit, where a sliding wordmark most often shows stepped copies. The fix is
measure-speed.py --floor a-b:n. - The Step 5 gate asks for each sound's loudness to match the size of its visible cause.
sound.mdadds "Scale each sound to its cause": a caret blink or small tick sits 12-18 dB under the landing hit, set through each event'sweightinsrc/sync.ts.product-ui.md: a changed digit rolls (a masked vertical slide) or cuts. Two numbers are never crossfaded in place, because the half-and-half frames read as a ghosted double image, worse after motion blur.brand-and-color.md: a letter redrawn inside a wordmark is traced from the typeface's own glyph withoutline-text.py, and only the feature that carries the idea changes, so it matches the font's stroke weight, terminals and curve tension.
cinetic v0.5.0
Blind reviews found films sparse, static at the end and quiet at the payoff. This version fills the frame, keeps the end moving, lets the music lead, and removes a compression smear from blurred masters.
Added
- Compression smear check in
forensics.py. Flat fields (at least 1% of the frame, 98% within ±2 of one code value) are split into 16 px blocks of the exact luma plane and sampled twice per second. A smeared share over 0.2 of the frame fails on two samples and warns on one, and a ×25smear.pngsheet is written.finishing.md§5 documents the cause and the fix. render.sh --10bitencodes a blurred master as High 10 (yuv420p10le), for masters that will be graded or re-encoded.palette.py --stage-hueand--stage-chromagive the stage a hue from the brand's world (pine-black 160, deep teal 200, ink-navy 235). A purple stage hue (270-340) is refused and a warm one (31-118) gets a warning. A dark stage at h 235-270 with C < 0.02 gets a note that it is the stock dev-tool theme.- Per-film loudness target: the gate reads
master.lufsfromaudio/score.jsonand accepts −14 or −16 LUFS when none is set. −16 is allowed for calm brands and stings. av-audit.pywarns when the first 5 ms of audio peak above −40 dBFS.brand-svg.tsreads an optionalLOCKUPtoken (ratio, gap, weight, track) fromtokens.ts, so the brand kit's SVG lockups match the film's lockup. It prefers a font vendored byadd-font.mjsovernode_modules.- Lint regression tests:
scripts/test/lint-film.test.mjsrunslint-film.mjson 11 fixtures that declare their expected hits. It also checks that both starters fail only on their placeholder markers and lint clean without them, and thatpalette.pyrefuses banned accents and papers unless--brand-suppliedis passed.
Changed
- Films fill the frame. The hero covers about 40-70% of a product shot, no region larger than about a quarter of the frame stays empty outside designed negative space, and in vertical feeds the platform's caption and button zones get background instead of empty bands.
- The last third keeps moving. The lockup appears once, at the end, and brand logo time stays at or under about 12% of the runtime.
- The music leads the picture with a progress motif and resolves on a lockup chord. A feature video lands its value in one short payoff line.
- Text in flight stays under about 20 px/f.
- Renders are stopped by their own PID, never with a
pkill -fpattern that can kill other renders on a shared machine. - Step 1 adds the feature-word test: watching muted, a stranger should use the brief's word for the feature.
Fixed
- Flat backgrounds in blurred masters no longer smear under compression. swscale's 8×8 ordered dither turned a flat paper that fell between two code values into a 228/229 checker that x264 kept in some blocks and flattened in others.
accumulate.pynow does the BT.709 conversion in float and quantizes once, so flat fields round exactly, and TPDF dither goes only into smooth ramps, with one fixed pattern. - Posters come from a clean lossless still instead of a frame decoded from the H.264 master, which baked 4:2:0 chroma and block smear into the image.
deliver.shuses--poster-from, else a Remotion still of--comp, else the last frame kept byhf-finish.sh. If the still does not match the master's frame (mean absolute difference at most 2, at most 0.25% of pixels more than 32 levels off), it warns and uses the master's frame. - The soundtrack no longer clicks on its first sample.
master.pyapplies a 3 ms raised-cosine fade-in from zero at sample 0 and a fade-out of at least 10 ms after the limiter.
Install with the skills CLI: npx skills add Leonxlnx/cinetic
Or download cinetic.skill below: a zip of the skill folder with cinetic/SKILL.md at its root.
cinetic v0.4.0
Blind review read the logo sting's mark as a minus sign and the launch teaser's blue on slate as a stock dev-tool look. This version adds checks for both, lays out vertical video for real feeds and sharpens the sound's opening.
Added
- Lopsided feed safe zones.
src/lib/safe.tsholds per-edge presets, and 9:16 frames default tofeed9x16(top 270, right 120, bottom 384, left 64 px) instead of a symmetric margin.layout-audit.sh --safetakes a preset or explicit insets, readable text in 9:16 must be at least 32 px, andformats.md§7 covers filling the tall frame. - Covered-text audit:
layout-audit.shfails text painted under a moving element taggeddata-mover(z-order counts). scripts/add-font.mjsandnew-film.sh --fontvendor a@fontsource-variable/*family into the project:npm packin a temp folder, the upright.woff2files and license copied in, imported fromfonts.ts, andFONT/FACESset with weights clamped to the font's axis. Nothing is installed into a sharednode_modules.- Mark misread test: the mark sheet gains a 64 px column and a misread score (0 when the mark reads first as a common symbol).
- A lockup sheet that compares three settings (
brand-and-color.md§6), and palettes derived from the world of the name (brand-and-color.md§9).palette.pynotes an accent in the#3B82F6/#2563EBframework-blue family. - Progress motif: a
progressblock inscore.jsonclimbs matching events one scale step each, up to the tonic. A personality table insound.mdmatches the score's energy to the brand. score.pywarns on a soft hook (first 0.5 s more than 12 dB under the median) and names any effect that starts inside the end fade.- New tells in
taste-and-slop.md: anonymous product, end card without the brief's fact, default palette, colorless film, misread mark, empty vertical frame, covered text, soft hook, wrong sound energy and soft first second. The director and art/copy/UI critics check them at P0 or P1.
Changed
- The score opens at full intent: a 20 ms chord attack with the intro drone already at level. Effects fade with the music at the end.
- New rules in SKILL.md: name the feature once; keep moving elements off text; restraint still shows color, with the accent carrying the key beats; the end card carries the brief's practical fact, and a still end card holds no longer than about 2.5 s; state changes on the frame its cause lands; energy builds toward the payoff.
- A brand named for heat or fire goes red-hot or white-hot, never orange.
Fixed
- Word exits no longer pop.
Words.tsxand the starter's demo faded each exiting word on the sameE.incurve as its move, which dropped the last half of the opacity in 2-3 frames. The move still accelerates away onE.in; the opacity now followsE.smooth.
Install with the skills CLI: npx skills add Leonxlnx/cinetic
Or download cinetic.skill below: a zip of the skill folder with cinetic/SKILL.md at its root.
cinetic v0.3.0
Hard bans against the fastest tells of generated work, enforced by the linter, the palette builder and the critics.
Added
- A Hard bans section in SKILL.md: no eyebrow or kicker labels, stacked taglines or filler text; no serif or italic; no orange, amber, beige or cream; no neon or glow; no purple, violet or indigo, and no multi-hue gradients; no glassmorphism, emoji, sparkles, particles or confetti; no bouncy overshoot off a landing. A brand you supply still wins and is recorded in
BRIEF.md.taste-and-slop.mdlists the bans as HB1-HB11. - New
lint-film.mjsrules:banned-color,glass,glow,emojiandstock-decoration. Acinetic:brand-supplied <what>comment, for a brand's own color or face, exempts its own line and the next, or a whole file when it sits in the file's leading comment block. palette.pyshares the banned OKLCH regions and refuses an accent, a--paperor--temp warminside them unless--brand-suppliedis passed.--paperchecks a paper you choose, and the default neutral tint stays at a chroma too low to read as warm.- A smoothness gate in
motion-tokens.md: zeroforensics.pyfails and the Finish dimension at 5. - Evals: every brief asserts the hard bans. The feature loop and the launch teaser check proof specificity, and the teaser also checks blur artifacts, cut sync and a brand kit. A fourth brief covers a 9:16 video in a supplied brand.
Changed
- The
serifrule matches more families, and theitalicrule also flags a skew on type (a faux italic). - Spring overshoot is reserved for true landings, where an object arrives at a surface or a lock, at most 2 per film, and
motion-tokens.mdkeeps it to 1-7% on a contact. Thepop(14% overshoot) andland(about 15%) presets inanim.tsandmotion.jsare marked as true landings only. - The critics run an HB1-HB11 checklist on the sheets first and measure borderline colors with
palette.py. Any hit is P0 unlessBRIEF.mdlists it as brand-supplied, and the verifier may not lower or reject one for being brief or small. - Every personality in
brand-and-color.mdis now a sans on a neutral or cool stage with a red, green, teal, blue or yellow accent. A banned-region table and one accent per hue family were added, the worked palettes moved inside the bans, and the HyperFrames starter's paper became#f5f6f7. copy-and-type.mdloads Schibsted Grotesk in its font example and lists eyebrows, stacked taglines, "Introducing", text walls and filler text as hard bans.
Install with the skills CLI: npx skills add Leonxlnx/cinetic
Or download cinetic.skill below: a zip of the skill folder with cinetic/SKILL.md at its root.
cinetic v0.2.0
The first blind review, of 0.1.0, found films that would be just as true of a simpler product, and story devices that drifted to a bare dot. This version puts product specificity and brand personality first.
Added
- A specificity test in the first law and the Step 1 gate: the proof shows what this product does that a simpler one would not.
concept-and-story.mdandTREATMENT.mdstart from the name and the product's non-obvious behavior, andproduct-ui.mdasserts the story's facts indata.ts. scripts/palette.py: neutrals tinted from one accent for a light or dark stage, contrast and neon checks, and accent coverage on a still.- Personality-first brand choices in
brand-and-color.md: three adjectives map to a fontsource family, a stage, an accent and a motion character. Marks are explored on a scoredMarkSheetof 6-10 directions, "block plus accent dot" marks are warned against, and the lockup spans 28-45% of the frame width. - Brand kit export:
brand-kit.sh,brand-svg.tsandoutline-text.pywrite SVG and PNG marks and lockups with the name outlined through HarfBuzz, plus favicons, an avatar and an X header. render.sh --budgetcaps the blur pass, andrender.shprints the sub-frame multiple and an estimate in minutes before it renders.- Sound checks:
score.pywarns when a film of 20 s or more has a loudness range under 5 LU, and when the payoff sits less than 2 LU above the median momentary loudness.av-audit.pywarns on strong picture changes with no sound within ±3 frames (--peak-tol). - Review: the director and art/copy/UI critics ask whether the film is true of a simpler product, looks like the starter or the Tessel worked example, has an ownable mark and data that agrees with the story. The director also checks the fastest blurred frames.
taste-and-slop.mdadds ten tells.
Changed
- The starter's typeface is a placeholder:
fonts.ts,tokens.tsand the HyperFrames@font-facecarrycinetic:placeholder, solint-film.mjsfails until a family is chosen.FONT.sansis renamedFONT.text. copy-and-type.mdshows how to install a family, and letter or sweep reveals must never spell a different word partway through.deliver.shwrites its manifest and loop-seam report toqa/and takes several--alphacompositions.formats.mdsets the sting lockup scale, held and cleared alpha versions, and a product-first hook.measure-speed.pycounts only forward-backward consistent flow and supported tracks, gives cuts no speed, defaults--maxto 32 and flags moves over 80 px/f. Frames the samples cannot cover get a shorter shutter throughblur.ts, and the starter's demo travel stays under 80 px/f.timing-grid.mdputs every cut and velocity peak on a beat with a hit, andsound.mdraises the loudness-range target to 5-8 LU.review-loop.md: review rounds run on previews, and the master gets one check.
Install with the skills CLI: npx skills add Leonxlnx/cinetic
Or download cinetic.skill below: a zip of the skill folder with cinetic/SKILL.md at its root.
cinetic v0.1.0
First version: a skill for directing, building and rendering launch films, product videos, feature loops, logo stings and UI walkthroughs from code.
Added
SKILL.md: five laws, a Step 0-8 workflow with gates you run, a scaled-down path for stings and loops, and the ship gate (every rubric dimension at least 3, the Finish and "Sound and sync" dimensions at 5, mean at least 4.2).formats.mdholds one recipe per format, andworked-example.mdfollows Tessel, a 33 s launch film, from idea to master with 15 mistakes and their fixes.- Remotion starter (Remotion 4.0.529):
src/timeline.tsis the only source of timing (FPS,BPM,b(),f60(),ACT,CUE,COPY) for a 9 s two-act demo.lib/anim.tsholds the easing and spring tokens,lib/sync.tscomputes sync frames, andblur.tswithFilmSubsplits frames over a 240-degree shutter. The demo palette, mark and wordmark are markedcinetic:placeholder. - HyperFrames starter (HyperFrames 0.8.79): one paused GSAP timeline,
motion.jswith the same tokens, and GSAP and Geist copied locally bysetup.mjs.hf-finish.shlints, checksdata-duration, renders PNGs, encodes BT.709 once, muxes and runs the sync and spec gates. - Scaffold and static checks:
new-film.shcopies a starter and every script into a project and rejects a BPM whose beat is not a whole number of frames.lint-film.mjsbans CSS animation, randomness, raw easings, off-token colors and leftover placeholders.grid-check.tschecks the 16th grid, text holds and gaps of more than 48 frames without an event, andlayout-audit.shchecks every text box on rendered stills. - Sound:
export-cues.tswritesout/cues.jsonfrom the picture code,score.pyrenders a 48 kHz score plus tuned effects per cue with stems, andmaster.pymasters to −14 LUFS under a 0.77 ceiling and zeroes the tail. - Render and delivery:
render.shrenders muted, muxes the WAV with ffmpeg and gates onprobe.pyandcheck-sync.py(lag at most 48 samples).--blurpicks samples per frame from optical flow (measure-speed.py) and averages sub-frames in float (accumulate.py).deliver.shwrites a poster, GIF, WebM and ProRes alpha. - Review:
forensics.pyflags pops, stalls, dead holds, ghosts, border slivers, judder, banding and loop seams, andav-audit.pychecks onsets per stem within ±2 frames.sheet.pyandgrab.shmake labeled contact sheets and exact frame grabs.review-loop.mddefines rounds, the 11-dimension rubric and the ship gate, with five critic prompts inassets/critics/. - Guides: timing grid, motion tokens, camera, transitions, product UI, concept and story, copy and type, brand and color, sound, finishing, the Remotion and HyperFrames engines, 16 Chromium rendering traps, and 80 generated-look tells with fixes.
assets/TREATMENT.mdis the Step 1 template. - Evals: three briefs (a feature loop, a launch teaser and a logo sting), each with objective checks (size, duration, 60 fps and BT.709 tags, plus true peak on the two with sound and loudness on the teaser) and visual ones, used to compare runs with and without the skill.
Install with the skills CLI: npx skills add Leonxlnx/cinetic
Or download cinetic.skill below: a zip of the skill folder with cinetic/SKILL.md at its root.