Communitygithub.com

adukhan98/stripe-video-skill

Verwandelt eine rohe Talking-Head-Aufnahme (plus optionalem Skript, Links, Screen Recordings oder Screenshots) in ein fertiges vertikales Reel, bei dem jeder Beat eine vollflächige animierte Szene im v7 'MINT'-Look ist.

Was ist stripe-video-skill?

Dieser Skill ist ein professionelles Tool zur Erstellung von Vertikal-Videos (Reels) im Stil von Adnaan, dem Haus-Look 'MINT' (seit 2026-10-17 der Standard). Er nimmt eine einzelne Talking-Head-Aufnahme und zerlegt sie in 8–18 vollflächige animierte Szenen, die nahtlos aneinandergereiht werden. Dabei werden zwei Modi unterschieden: 'TALK'-Szenen zeigen ihn bildschirmfüllend mit kinetischer Typografie (Inter Tight 900) statt Untertiteln, und 'VISUAL'-Szenen erklären Konzepte auf einer grauen Pinnwand mit Icon-Discs und einem fahrenden Kamera-System. Ein besonderes Merkmal ist die 'Signature Shrink', bei der das Vollbild auf eine kleine Disc oder Karte schrumpft, um später für den Höhepunkt wieder aufzublühen. Der Skill unterstützt Claude Code und ähnliche Agenten-Plattformen und arbeitet mit einer geteilten Runtime (paper.css/paper.js + v7.css/v7.js) sowie Szenenvorlagen. Er zwingt zu einem strengen Workflow: Beat-Tabelle muss genehmigt werden, bevor Szenen gebaut werden; alle Schnitte werden automatisch auf korrekte Wortgrenzen geprüft; und die Ausgabe erfolgt stets verlustfrei konkatiniert. Ziel ist ein hochwertiges, markentreues Reel mit realistischen Inhalten (echte Webseiten, Repos, Logos) und durchdachter Animation nach Lasseter-Prinzipien.

Funktioniert mit✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/adukhan98/stripe-video-skill/tree/HEAD/skills/adnaan-reel

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

adnaan-reel

Adnaans Aufnahmen → ein Reel, das exakt wie der genehmigte Referenz-Edit aussieht. Bevor irgendetwas anderes passiert, sieh dir assets/style/v8_contact_sheet.jpg an – den genehmigten reel-08-Stiltest des v7 'MINT'-Looks, des Haus-Standards seit 2026-10-17 (Szenen in examples/reel-08-v7/): TALK-Beats mit ihm im Vollformat + unseren kinetischen Captions, VISUAL- Beats auf einer grauen Pinnwand mit Icon-Discs, einer Disc-Kette und einer fahrenden Kamera, die Signature Shrink. Lies references/style.md 'v7' zuerst – es überschreibt die älteren Abschnitte, wo immer sie in Konflikt geraten; die v6-Soundregeln, Safe Zones, Lesbarkeitsregeln und Bewegungsprinzipien gelten weiterhin. Das Art Direction ist verbindlich und befindet sich in references/style.md; die Szenengrammatik (wie ein Reel in Szenen unterteilt wird und welche Szenentypen es gibt) befindet sich in references/scenes.md. Der Look ist Code: die geteilte Runtime templates/runtime/paper.css + paper.js (Welt, kinetische Schrift, Primitive, nach Lasseter-Prinzipien animierte Bewegung) + v7.css + v7.js (v7: Icon-Discs, die Disc-Kette, Schrumpfen/Wachsen zu einer Disc oder Karte, Kamera, Zonenmaske) plus einen Starter pro Szenentyp in templates/scenes/ (v7: talk, talk_depth, visual, chain, card); slots.py prepare installiert sie in jede Szene, sodass eine Szene ~150 Zeilen Copy, Positionen und ein maßgeschneidertes Objekt enthält. Der alte PAPER-Look (rotes Papier + handgezeichnete Markierungsebene marker.css/marker.js, geteiltes Band, reel-06/07 – assets/style/v6_contact_sheet.jpg, v7_contact_sheet.jpg, examples/reel-06/, reel-07/) wird mit init-brand --look paper aktiviert, nur wenn er danach fragt. Ältere Ideenarchive: examples/reel-04/, reel-05/ und references/motion-ideas.md (der serifenbetonte Redaktionslook: examples/reel-03/, init-brand --type editorial).

Du siehst dir das Video nie an – du liest es: ein wortgenaues Transkript, Filmstreifen an Entscheidungspunkten und Verifikationswerkzeuge, die die Schnitte transkribieren.

Prinzipien

  1. Jeder Beat ist eine Szene, in einem von zwei MODI (v7). Das gesamte Reel besteht aus 8–18 bildschirmfüllenden HyperFrames-Szenen hintereinander über den festgelegten Schnitt hinweg, und jeder Beat wählt in der Beat-Tabelle einen Modus aus: TALK (er im Vollformat, unsere kinetischen Caps auf ihm – Aufhänger, Übergänge, Meinungen, Höhepunkte, CTA; talk, oder talk_depth, wenn etwas HINTER ihm sitzt) und VISUAL (kein Sprecher; die Pinnwand, Icon-Discs, flache Vektor-Props, echte Seiten, eine fahrende Kamera – jede Erklärung, jedes Listenelement, jedes Beispiel; visual). Er ist etwa 50 % des Reels auf dem Bildschirm; kein VISUAL-Abschnitt länger als ~8 s ohne ihn. Die Signature Shrink (1–3 pro Reel: seine Aufnahme schrumpft in die aktuelle Kettendisc oder die kleine linke Karte, chain / card; V.grow bringt ihn für den Höhepunkt zurück) verbindet die Modi. Die kleine Karte erscheint 0–2 Mal. Die Karte eines Listen-Reels ist die Disc-Kette (V.chain). Ein langer Bildschirmmitschnitt ist der Typ demo.
  2. Die Wörter sind die Captions. Keine Untertitel. Kinetische Inter Tight 900-Phrasen landen auf den gesprochenen Textstellen, groß (Hero 170–270 px authored, ×0.94 Haus---type-scale; Akzent durch Farbe, keine Kursivschrift; v7: Holzkohle mit einem weichen Glühen auf seiner Aufnahme, EIN mintfarbenes Hero-Wort, mint nur in Hero-Größe). Auf dem Bildschirm erscheinen nur Wörter, die er tatsächlich sagt (ASR-Schreibweisen von Namen korrigiert) – plus ein optionaler Text-Hook, den er schreibt (Überschrift in Frame 0).
  3. Zeig das echte Ding, mit dem echten Logo. Jedes Produkt, Repository, jede Website, Datei oder jedes Framework, das er nennt, erscheint echt: als aufgenommene Seite in einer Browserkarte, echte Repo-Slugs, Sternanzahlen, echte Überschriften und Teilnamen. Jedes Tool oder Unternehmen, das er nennt, erhält sein offizielles Logo (fetch.py logo, geloggt als official), unverändert als <img> in einem Chip/Pill neben dem Namen oder auf der App-Karte – niemals neu gezeichnet, neu eingefärbt oder durch eine reine Text-Pille ersetzt, wenn ein Logo existiert. Illustrative UI ist in Ordnung; erfundene Zahlen, Zitate oder Beiträge nicht.
  4. Genehmige den Plan, dann baue alles. Eine Beat-Tabelle → Genehmigung → alle Szenen parallel gebaut → zusammengesetzt → selbstgeprüft → ausgeliefert. Autopilot („mach es einfach“) überspringt das Warten.
  5. Nie langweilig, immer animiert. Jede Szene hat eine Heldenidee mit echter Bewegung (Dinge teilen, öffnen, verschmelzen, stapeln, auf gepunkteten Pfaden reiten, von Grau zum Akzent wechseln) plus kontinuierliches Leben, und jede Bewegung gehorcht Lasseters Prinzipien (references/animation-principles.md): Antizipation, Überschwingen + Einpendeln, Überlappung, Bögen, Inszenierung, sekundäre Aktion, ein übertriebener Beat, Ausgänge schneller als Eingänge). Die Runtime macht dies standardmäßig; maßgeschneiderte Objekte müssen es auch tun. Wenn eine Szene eine statische Folie sein könnte, mach sie neu. Fülle ist das Hausniveau (reel-05), gemäßigt durch v6: etwa zwei Fokuselemente gleichzeitig und 35–50 % des Rasters leer (inhaltsabhängige Richtlinien, keine harten Grenzen) – ein Heldenobjekt + 1–3 sekundäre Mikroanimationen, die den Satz nachspielen – ein Cursor, der die Sache tut, echte Zahlen, die zu ihrem Wert rollen, Symbole, die zum Leben erwachen, weiche Physik, Charaktere mit Persönlichkeit, Schrift, die performt, Heldensymbole, die auf ihrem Wort landen (references/motion-ideas.md).
  6. Sauberer flacher Vektor oben drauf (v7) – kein handgezeichneter Marker im Mint-Look. Symbol-Discs mit weißen Phosphor-Glyphen (fetch.py icon, V.disc), saubere Vektorstriche, die sich selbst zeichnen (Verbindungen, ein Unterstreichungsbalken, ein Lupenrand – gleiche Breite, kein Boil), flache Vektor-Heldenobjekte mit Persönlichkeit in Bewegung, ein mintfarbener Textmarker hinter echtem Text. Pfirsich ist nur für Daten. (Der alte Papier-Look behält die roten Filzstift-Marker + Caveat-Notizen, hf/marker.js.)
  7. Lesbar, immer. Alles innerhalb der Safe Zone (gemessen), echte Seiten als große Streifen (≥ 0.85, ~45 px Text) mit einem Textmarker hinter der gesprochenen Phrase, kein halbtransparenter Text, Wörter über seiner Kleidung lesbar (v7: Holzkohle + Glühen, mint in Hero-Größe; Papier-Look: auf festem Papier), Chips/Logos/Doodles groß genug für ein Telefon. Er hat dies explizit so gewünscht. IG-Safe-Zones (v6): nichts in den unteren 20 % und nichts rechts von x 900 unterhalb von y 1200 (Gefällt mir/Kommentieren/Teilen) – CTAs sitzen unten links/Mitte.
  8. Ton unterstützt die Stimme – die 30-%-Regel (v6). Kein Mickey-Mousing: 1–2 knallige taktile Geräusche in 0:00–0:04, dann nur strukturelle Übergänge (Punkt 1/2/3, ein Moduswechsel, ein großer Screenshot, der hereingleitet, der CTA, der landet) – etwa 10–14 Cues in 70 s, aus dem leisen und warmen v6-Kit (assets/sfx/v6_*: Stempel, Klonk, Bumm, Papier, Wusch, Plopp), mit Tiefpass bei 5 kHz. Agenten markieren diese Beats mit "role": "hook" | "structural" in beats.json; scenes.py edl (Standard --sfx-policy sop) lässt alles andere still. Mix: Stimme vorne, SFX −16…−22 dB, ein ElevenLabs Music-Bett (instrumental, an den Bogen angepasst) −22…−26 dB unter der Sprache via --music, +2.5 dB über die letzten 3 s.
  9. Verifizieren, bevor du es zeigst. Jeder Schnitt transkribiert, jede Szene checklistengemäß geprüft, das zusammengesetzte Reel durchgescrollt und stichprobenartig überprüft. Wenn du es nicht posten würdest, zeig es nicht.

Harte Regeln

  1. Beat-Tabelle genehmigt, bevor Szenen gebaut werden (außer Autopilot).
  2. Segmentweiser Extrakt → verlustfreie Concat für den Schnitt (render.py), 30 ms Audio-Fades an den Schnitten, niemals innerhalb eines Wortes schneiden, Ränder auffüllen, nur wortgenaue Transkripte, pro Quelle gecached.
  3. Jeder Füllerschnitt und jeder Schnitt verifiziert mit verify_cuts.py – Whisper beendet Wörter zu früh, und audio_env.py tighten frisst weiche Wortenden („code“, „immediately“, „base“, „use“ wurden alle im Referenz-Edit abgeschnitten; „works“ verlor sein „s“ in reel-05, während ASR noch „works“ las). Lies jede Schnittzeile UND ihr ⚠ TAIL/HEAD-Energy-Flag (absichtliche Füllerschnitte flaggen ebenfalls – das ist erwartet); erweitere ein Bereichsende auf die vorgeschlagene Zeit, wenn ein echtes Wort abgeschnitten ist, prüfe erneut, bis es sauber ist.
  4. Rendere niemals eine partielle oder Test-EDL aus edit/. render.py schreibt base.mp4 und timeline.json neben die EDL – eine Test-EDL in edit/ überschreibt die echte Basis. Vorschau einer Szene mit scenes.py preview <id>; teste Schnitte mit verify_cuts.py --probe.
  5. Szenen-EDLs kommen nur von scenes.py edl. Es erstellt Frame-Schnappschüsse jeder Szene, rollt 12 ms vor und hält jede Szene 0,1 s unter der nächsten – ohne das würde render.py's Overlay-Sync einen einzelnen Rohmaterialframe an jeder Szenengrenze auslaufen lassen. Dann scenes.py flashcheck <render> --edit-dir edit: 0 unerwartete Rohmaterial-Frames (es vergleicht jeden Frame mit base.mp4 – reel-05's Decke war papierfarben, also war der alte Ecken-Test blind; die geplanten fullscreen / demo-Fenster kommen aus slots.json und sind erwartet).
  6. Ein Unter-Agent pro Szene, alle in einer Nachricht erzeugt. Überprüfe jedes check_sheet.jpg / motion_strip.jpg, sobald sie eintreffen; sende Korrekturen an denselben Agenten mit SendMessage (es behält den Kontext). Jede Szene ist genau die Frame-Anzahl gemäß ihrer TASK.md (slots.py stellt sie ein und check erzwingt sie) – verifiziere alle Anzahlen mit ffprobe vor scenes.py edl; ein 1-Frame-Fehler ist eine Lücke oder eine Überlappung an einem Schnitt.
  7. Markentreue durch die Runtime. Szenen verwenden paper.css/paper.js + v7.css/v7.js (Mint) oder marker.css/marker.js (Papier) wie installiert – niemals bearbeitet, niemals pro Szene neu implementiert (eine Szene mit eigener Karten- oder Wort-Engine wird bei der Überprüfung abgelehnt). Nur brand.css-Tokens; gebündelte Schriftarten als geladen bestätigt; niemals ein Logo zeichnen oder neu einfärben (echte aus offiziellen Dateien, geloggt); ein Akzent. Niemals eine kostenpflichtige Schriftart klonen – wenn er eine kommerzielle Schriftart möchte, kauft er die Lizenz und legt die Datei ab; bis dahin die nächstgelegene OFL-Schriftart verwenden (Bootzy TM → Inter Tight 900, der aktuelle Standard). Eine globale Änderung (Schriftart, Kartengröße, Easing) wird EINMAL in templates/runtime/ vorgenommen, dann scenes.py runtime + scenes.py rerender.
  8. Downloads durch fetch.py, Aufnahmen durch capture.py (beide loggen Quelle + Rechte); fetch.py credits → credits.md vor der Auslieferung. Seiten Dritter werden als Kommentar zu der Sache gezeigt, die er empfiehlt, in Browserkarten gerahmt, niemals als seine eigenen ausgegeben.
  9. Alle Ausgaben in <projekt>/edit/. Niemals innerhalb des Skill-Verzeichnisses schreiben.
  10. Spiegel-Check vor dem Schnitt: Zoome in jeden Text oder jedes Logo auf seiner Kleidung/seinem Hintergrund in einem voll aufgelösten Standbild (der Filmstreifen ist zu klein – reel-06's rückwärtiger "SAN DIEGO"-Patch wurde nur bei der Szenenüberprüfung entdeckt und kostete einen Neuschnitt jedes Sprecherclips). Rückwärts → "mirror": true.
  11. Lesbarkeit ist ein Überprüfungs-Gate (style.md 'Readability'): Eine Szene mit einem außerhalb der Zone liegenden Pixel, einer unlesbaren Seite, Geistertext, Wörtern auf dunklem Stoff oder einem telefonkleinen Chip/Doodle geht zurück zu ihrem Agenten.
  12. Vertraue Zeitstempeln, nicht Berichten: nachdem ein Agent sagt „neu gerendert“, überprüfe, ob render.mov neuer ist als seine Eingaben (reel-06 v01 meldete ein Neu-Rendering, das nie ankam).

Einrichtung

Gleiche Toolchain wie Video-Edit (Details in install.md): ffmpeg/ffprobe mit libass + zscale, uv (Helper werden ausgeführt als uv run --project <skill_dir> <skill_dir>/helpers/<name>.py …), Transkription (ElevenLabs-Key → Scribe; sonst Apple Silicon mlx via uv sync --extra mlx; sonst whisper.cpp), Node 22+ für HyperFrames (npx --yes hyperframes …), Google Chrome für capture.py. <skill_dir> ist der Ordner, der diese Datei enthält (~/.claude/skills/adnaan-reel).

Frische (einmal pro Sitzung, vor jedem Rendering): der Skill ruft npx --yes hyperframes unpinned auf, was zur neuesten veröffentlichten CLI aufgelöst wird (Szenen-package.json-Pins werden nur von npm run verwendet, das wir nie aufrufen). Bestätige mit npx --yes hyperframes --version vs. npm view hyperframes version, und führe npx --yes hyperframes skills check → npx --yes hyperframes skills update aus, wenn eine HyperFrames-Fertigkeit veraltet ist (sie waren am 2026-10-14 10 Versionen hinten). Notiere die CLI-Version in project.md; wenn ein Rendering nach einem Update anders aussieht als das vorherige Reel, sag Bescheid.

Helfer

HelferWas er tut
`scenes.py init-brand --edit-dir E [--look mintpaper] (mint = v7-Hausstandard) [--accent red
fetch.py icon <name…> --edit-dir E [--weight fill]v7-Icon-Disc-Glyphen: Phosphor (MIT) SVGs → icons/<name>.svg, open-source geloggt; sie im "assets" eines Slots als icons/<name>.svg auflisten, verwende sie als V.disc({icon: name}) (Namen: phosphoricons.com)
scenes.py words --edit-dir EJedes Schnittsegment mit Ausgabestart, Frame und Wörtern – wähle hier die Szenengrenzen
scenes.py cut-speaker --edit-dir E [--only ids]Pro Szene: base.mp4-Fenster → hf/assets/speaker.mp4 (stumm; frame-genaues Suchen; letzte Szene mit dem End-Halt-Frame aufgefüllt) + speaker_cut.webm (seine Maske) für talk_depth / cutout-Szenen + die "assets" der Szene kopieren; --only nach einem Schnittfix während des Baus
scenes.py edl --edit-dir E [--beat-gain-offset -3]edl.json + animations/slots.json + Renderings → edl_scenes.json (Frame-Schnappschüsse, Pre-Roll, 0,1 s Halten, keine Captions) + beats.json jeder Szene → getimte audio[]-Cues aus dem ElevenLabs-Kit
scenes.py preview <id> --edit-dir EEine Szene mit ihrer Stimme → verify/<id>_preview.mp4 (sicher: berührt nie die Basis)
scenes.py flashcheck <video> --edit-dir E [--allow]Frames, die mit base.mp4 übereinstimmen (= Rohmaterial sichtbar) außerhalb der geplanten talk/talk_depth/chain/card/fullscreen/demo-Fenster (muss 0 sein); ohne --edit-dir ein Ecken-Farbtest, der eine eigene Vignette einer Szene toleriert
scenes.py runtime --edit-dir E / scenes.py rerender --edit-dir E [--jobs 4] [--only ids]Die geteilte Runtime in jede Szene neu installieren / alle Szenen parallel neu rendern und Frame-Anzahlen verifizieren – ein ganzes Reel neu stylen (neue Schriftart, Kartengröße, Easing) in Minuten
capture.py <url> --edit-dir E --name n --rea

…

[Text für die Übersetzung gekürzt]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills