Communitygithub.com

Malik-rgb43/editing-workflow

>- Design, build and review a motion-graphics piece in HyperFrames/GSAP: product or app launch, feature announcement, kinetic typography, logo reveal, UI explainer, animated screenshots. Triggers: מושן גרפיקס, אנימציה, השקה, טיפוגרפיה קינטית, לוגו אנימציה, "like a Higgsfield / Linear launch". Not for a speaker-to-camera reel (edit-talking-head), AI-generated shots (edit-ai-generated), caption-only work (hebrew-captions-asr) or ad compliance (edit-ad-promo).

What is editing-workflow?

editing-workflow is a Claude Code agent skill that >- Design, build and review a motion-graphics piece in HyperFrames/GSAP: product or app launch, feature announcement, kinetic typography, logo reveal, UI explainer, animated screenshots. Triggers: מושן גרפיקס, אנימציה, השקה, טיפוגרפיה קינטית, לוגו אנימציה, "like a Higgsfield / Linear launch". Not for a speaker-to-camera reel (edit-talking-head), AI-generated shots (edit-ai-generated), caption-only work (hebrew-captions-asr) or ad compliance (edit-ad-promo).

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Malik-rgb43/editing-workflow/tree/HEAD/.agents/skills/edit-motion-graphics

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

edit-motion-graphics

Outcome owner for a finished motion piece (MP4) built as HyperFrames HTML + one paused GSAP timeline. The frame-level PROMPT.md is the product; the code only renders it.

Non-negotiable rules (read first)

  1. No code before an approved frame-level PROMPT.md - also in autonomous runs: the agent drafts, a human approves (decision default Q6). Approval is a recorded line APPROVAL: <who> <date> in the file. Change order is always ledger -> PROMPT.md -> code.
  2. No spend here. AI-3D, AI stills or any paid generation go through paid-generation-gate; this skill makes no paid call. A catalogue listing is not account access.
  3. Review order: Studio preview -> hf_segment ranges -> ONE full render per round of notes -> every-frame QA on the final render. One heavy job at a time (render_lock). Batch the notes; diagnose while the user is still writing, but do not render.
  4. Hard traps: no dir="rtl" on the HyperFrames root (RTL on text elements only, lang="he" on <html>); fonts from files (@font-face in hf/fonts/); hyperframes snapshot --describe false, <= 5 timestamps per call; ASCII work root (new_project).
  5. Fail closed: a gate that cannot run is blocked (not_run), never pass. A timeout, an empty sample or a missing render never passes. A successful tool call is execution evidence; a viewed render is appearance evidence; a still cannot prove motion.
  6. Law vs taste: rules 1-5 are law. Items marked studio style below (no captions by default, banned list, "no pink", Higgsfield grammar, 21st-first) are the owner's taste, taught with their reason; a brief that says otherwise wins on taste, never on gates.
  7. Numbers carry their fps (30 unless the brief says otherwise) and measured timings carry the machine (owner's Windows 11 / Ryzen 7 7435HS / RX 7600S / 32 GB). NVIDIA/Apple timings are unmeasured. Projects restricting spend, installs or publication override this skill.

Inputs -> outputs

In: brief/ledger (from video-intake), brand kit, UI screenshots or components, music/VO. Out: hf/PROMPT.md (frame-level), hf/DESIGN.md (one locked palette + type + motion tokens), hf/cues.js (single timing source for picture and sound), hf/SOURCES.md, the composition, mix.wav, the final MP4, QA reports. Handoffs: notes -> revision-round; other ratios -> multi-video-variants (full re-layout, never a crop); delivery gate -> render-qa-deliver; a reference given -> reference-style-transfer first (no reference -> ask which time range is "the style").

Procedure

  1. Register + intake. Pick one register (launch | kinetic | logo | explainer | calm) and lock length, ratios, VO, music, deliverable name (references/launch-register-and-pace.md). A 30 s dense launch felt x1.7 too fast; the approved length was 45 s: decide length first.
  2. Draft PROMPT.md + DESIGN.md (6 blocks; the camera, seam and event tables; beat cards for any 3D). Run python scripts/motion_spec_check.py hf/PROMPT.md --register <r>; fix; ask for approval.
  3. Source beats (references/ui-sources-and-port.md): catalog -> hf-blocks -> shadcn registries (default) -> 21st.dev only with an account -> hand-build; decide 3D per beat (references/three-d-decision.md).
  4. Build one index.html + cues.js; ported components re-authored seek-safe. Then hf_preflight --strict, python scripts/seek_safe_scan.py hf/, python scripts/palette_audit.py hf/DESIGN.md hf/ [--png <3D renders>].
  5. Approve visually: four stills + a snapshot of every seam + sheet contact sheet; Studio preview; notes batch.
  6. Sound (references/sound-and-captions.md): hf_mix --report; brand sound on every brand event; mux and measure the final file.
  7. One full render under the lock with an ETA first; frame_qa, motion_qa, hf_deliver; score with agent-content/benchmarks/motion-graphics.rubric.md using a separate critic; present the file, numbered changes, the ledger ticked and the honest gaps.

Register at a glance (details: references/launch-register-and-pace.md)

RegisterNew screenEvent cadenceCameraSound
launchevery 2-6 s, >= 2 depth layers<= 0.5-1 s; 45-110/min by hand countnever stops (drift 2-4 %/s, push-ins 8-15 %)music is the SFX; brand sound on every brand event; ring-out
kineticevery 1-3 sup to ~200/min (word swaps count)type is the camerakeyword lands 0..+7 f after it is spoken
logoone idea, 3-8 sresult visible by 0.4-0.75 sone move + settlebrand sound on the reveal; 3-step ending
explainerper idea, 3-6 s30-110/minpurposeful, to the object explainedVO-led; SFX only on visible change
calmholds allowedsparse is fineslow or lockedone uniform bed + subtle foley; no risers/drops

Per-beat 3D in five lines

Decide per beat, write the reason in PROMPT.md: Blender for real geometry / hero material on screen > 2 s (EEVEE first; measured 1.2-2.25 s/frame at 384-640 px, +1-1.5 min per launch); Three.js for data-driven, instanced, 3D-UI-with-live-text, edit-in-rounds or exact-hex beats, after a 1 s hf_segment AMD gate; AI-3D only behind paid-generation-gate and a licence check; 2.5D (depth_25d, Depth Anything V2 Small, 8.1-9.9 s per 2 s clip) for a still that needs a small move; none for UI/message beats. A 3D object never covers information and reacts to the word.

"Boring / looks AI / static" at a timestamp

Replace the beat concept, do not polish it. Pick from the menu: a voice orb driven by the real VO spectrum; a data-driven build (bars, counters, route globe); the UI rebuilt in code and shot as an object (perspective, depth of field, 150-300 % magnification); a shared-element morph that carries content; a number or word swap in place; a 3D hero landing on the keyword. Never a small corner "feature pill", a flat screenshot with a small push-in, or a dot on black. Add the note to the Banned line and fix it at every occurrence (global rule when it repeats).

Time budget (modelled or measured on the owner's machine; not student measurements)

Target: first presentable draft of a 30-45 s launch in about 3-4 h with 1-2 correction rounds (the first real launch took 10 drafts, 7 critic rounds, 4 owner-note rounds); exactly ONE full render per round. Render reference (HyperFrames 0.8.98, E11, heavy 40 s / 1200 f): 1 worker 132.6 s, 4 workers 92.8 s, 8 workers 88.1 s; browser GPU -12 %; capture is the bottleneck (CPU use only 2-3 of 16 logical cores). Earlier premium renders: 8-14 min typical, 4-21 observed (0.8.79-0.8.93). Always benchmark one unit and post an ETA line before a job over 3 minutes.

Gates

States: pass | fail | blocked | n/a, always with a reason.

GatePredicateEvidenceIf falseOwnerRecheck
G0 intakeregister, length, ratios, deliverable name, VO/music source, reference answer recordedhf/BRIEF.mdask (3-4 questions per round); blockedvideo-intakebrief changes
G1 frame-level spec6 blocks; every beat has frames + px + easing + sound + transition; Banned line; hex palette; APPROVAL: linemotion_spec_check.py exit 0 (2 = approval missing = blocked)fix spec; stop before codethis skill + human approverany retime or new beat
G2 clean & smoothONE spline per scene, each move >= 1.2 s, reversals >= 1 s and <= 1.3x, text inside frame at every key; seams exit = entry, hero persists, no repeated technique, no fadetables in PROMPT + checker; motion_qa 0 stutter ranges on the renderre-time / re-path; replace the beat concept rather than polishthis skillany camera or seam change
G3 densityper register: launch = new screen every 2-6 s, event gaps <= 0.7 s (declared breaths excepted), 45-110 events/min (hand count)Events table + 3 frame samples per sceneadd or replace beats; stretch long moves x1.6 instead of crammingthis skillafter any retime
G4 3D per beatevery 3D beat has a card: route (Blender / Three.js / AI-3D / 2.5D / none), a one-sentence reason, ETA, gate evidence, licencebeat-card table; Three.js rows: a 1 s hf_segment frame that is not blankre-decide; AI-3D rows need paid-generation-gatethis skillnew beat or asset
G5 palette lockone palette table; every hex in sources and every 3D render inside itpalette_audit.py exit 0 (+ --png)recolour / re-render; blocked if no tablethis skillnew asset, new render, colour note
G6 UI sourcingeach UI/effect beat has a SOURCES.md row (origin, licence, version, date) and a seek-safe port; no npx shadcn add in a project; no 21st preview/media copiedSOURCES.md + scanswap source or hand-build with a reasonthis skillnew component
G7 seek-safehf_preflight --strict 0 errors; seek_safe_scan.py 0 errors; snapshots at non-sequential times agreereports + snapshot pairfix; never "fix" by suppressing without a reasonthis skillafter every code patch
G8 soundbrand sound on every brand event; SFX under VO within -18..-26 dB and 1-3 f before picture; music rings out; final file -14 LUFS +-0.5, TP <= -1 (house preset v1, Q5)hf_mix --report, hf_deliver verify on the FINAL filere-mix and remux (no re-render)render-qa-deliver measuresany audio or picture retime
G9 captionsno caption elements unless the brief asksgrep of ids/classes + <direction> lineremove / ask in one linethis skillbrief change
G10 render + QAONE full render this round; frame_qa 0 flags; rubric average >= 4.0, no dimension < 3, M1/M3/M7 >= 3; every ledger line tickedQA reports + critic outputback to the failing gate; max one correction round before escalatingrender-qa-delivereach full render

Recording gate results (hf/QA.md, one line per gate)

G1 pass   motion_spec_check exit 0, 24 beats, approval "<who> 2026-10-02"  (re-run after r2 retime: pass)
G5 blocked  3D render coin_r2.png not readable by palette_audit (not_run) - install Pillow or downscale
G7 fail   seek_safe_scan SS02 index.html:211 Math.random -> seeded hash; rescan pending

A gate with no line is not_run. Never write pass from memory of an earlier round: a retime, a new asset or a patch invalidates it (see the Recheck column).

Presenting a draft (render-qa-deliver owns the delivery gate)

Message = the file at once + numbered changes (by the user's own note numbers) + the ledger with every line ticked + the rubric score from the separate critic + the gaps (what was NOT verified: Hebrew proofread, device overlay, loudness on a phone) + the Studio link. Never present with a flagged frame, a failed gate or an unticked ledger line.

References (load when)

  • references/seam-camera-event-tables.md - ALWAYS when writing or reviewing PROMPT.md; also agent-content/techniques/frame-spec-prompt.md and clean-smooth-motion.md.
  • references/launch-register-and-pace.md - choosing the register, pace complaints, banned list, easing numbers.
  • references/three-d-decision.md - any beat with depth or 3D; agent-content/techniques/2-5d.md for 2.5D.
  • references/ui-sources-and-port.md - UI cards, effects, screenshot animation; agent-content/techniques/screenshot-rebuild.md.
  • references/seek-safe-and-render-traps.md - writing code, patches, render differences.
  • references/palette-lock.md, references/typography-hebrew-kinetic.md, references/sound-and-captions.md - DESIGN.md, Hebrew type, the sound plan.
  • references/dated-versions.md - pins and licences (dated; expired = unknown).
  • Scripts (python <script> --self-check first): motion_spec_check.py, palette_audit.py, seek_safe_scan.py. They check text and patterns, never appearance.

Stop and escalate

Blocked, not guessed: no approval line; no render possible; a gate input missing; a price or licence unknown; a Three.js beat whose 1 s segment is blank on AMD (fall back to a Blender sprite). Ask before any spend, install, publication or message to a third party. Never message other agent sessions. A user note "boring / looks AI / static" at a timestamp means replace the beat concept from the register's menu, in one line of explanation.

Maintenance

Volatile facts live only in references/dated-versions.md and the global dated modules (hyperframes-traps.md, three-d-routes.md, audio-mix.md). Add every new owner note to the Banned line, not to this file. Specified, deterministic checks only; model eval not run (decision default Q4).

Individual skills in this repo

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

Malik-rgb43/editing-workflow

>- Script, edit or review a paid-social ad, sponsored post or brand promo for a business, product, app or store (Meta, Instagram, TikTok, 15-60 s): exact offer and CTA, ranked hooks, hook variants, end card, blocking compliance table, licence checks. Triggers: ad, promo, sponsored, campaign; מודעה, פרסומת, קמפיין, ממומן, פרומו, מבצע, הנחה, הוק. NOT for testimonials (edit-testimonial), organic expert reels (edit-talking-head), AI-only films (edit-ai-generated), ratio exports (multi-video-variants).

Malik-rgb43/editing-workflow

>- Transcribe Hebrew speech and build burned-in Hebrew captions: ASR route per hardware, word timestamps, proofreading, RTL and mixed English/number lines, caption font, entrance and exit animation, safe zone, caption QA. Triggers: תמלול, תמלל, כתוביות, כתוביות בעברית, מילים בולטות, קריוקי, המילה יצאה לא נכון, Hebrew captions, transcribe Hebrew, word timestamps, ו/ז look-alike. NOT for translation-only, non-Hebrew ASR, analysis reports (video-analysis), or caption-free motion launches.

Malik-rgb43/editing-workflow

>- Deliver one approved video as several outputs (other aspect ratios, hook variants, platform versions, no-music/no-captions versions) or run several videos in parallel, with one shared mix, strict naming and a manifest that blocks stale derivatives. Triggers: export as 9:16 and 1:1, hook variants, variants batch; גרסאות, וריאציות הוק, כמה סרטונים יחד, 9:16 ו-16:9. NOT for a single deliverable (render-qa-deliver) or designing the master (the type skill).

Malik-rgb43/editing-workflow

>- Turn a video the user sends or links (file, or YouTube/TikTok/Instagram URL) or a folder of clips into measurements (cuts, pacing, per-frame data), keyframe sheets, a Hebrew transcript and sound analysis (SFX, BPM, key, beats, song ID). Triggers: watch, analyse, break down, transcribe this video/reel/ad; תנתח, תעבור על, תמלל, מה קורה בסרטון, קאטים, BPM. NOT for cutting or rendering (type skills), applying a style (reference-style-transfer), or captions for a final render (hebrew-captions-asr).

Malik-rgb43/editing-workflow

Turn a new video idea, brief or list of specifics into a checkable Concept Ledger and ask questions until every parameter is precise, before any concept, prompt or build. Use at the start of any new video, with or without footage, or when the user pastes a concept with specifics. Hebrew - סרטון חדש, בריף, יש לי רעיון, קונספט, תכין לי סרטון, בוא נתחיל פרויקט. NOT for notes on an existing draft (revision-round), analysing a reference (video-analysis) or paid generation (paid-generation-gate).

Related Skills