Communitygithub.com

Jo5i4swastaken/Skills-Locker

Erstelle eine HyperFrames-Diashow-Komposition – eine Präsentation, einen Pitch-Deck oder ein interaktives Deck mit einzelnen Folien, Fragment-Enthüllungen, Verzweigungssequenzen und Hotspot-Navigation.

Was ist Skills-Locker?

Diese Fähigkeit erstellt eine HyperFrames-Diashow, eine spezielle Art von HyperFrames-Komposition, die aus Szenen, Clips und GSAP-Zeitachsen besteht. Das entscheidende Element ist eine sogenannte 'JSON-Insel', die deklariert, welche Szenen als Folien dienen und wie sie miteinander verbunden sind. Ein integrierter 'SlideshowController' wandelt die kontinuierliche GSAP-Zeitachse in ein diskretes, navigierbares Deck um, das mit dem Befehl 'hyperframes present' ausgeführt wird. Die Fähigkeit unterstützt einzelne Folien, Fragment-Enthüllungen (das schrittweise Einblenden von Inhalten), Verzweigungssequenzen (alternative Pfade, die über Hotspots erreichbar sind) und eine Hotspot-Navigation. Sie ist für die interaktive Präsentation gedacht und nicht für die Ausgabe als lineares MP4-Video, das nur die erste Szene erfassen würde. Bevor die Diashow erstellt wird, erfolgt eine Absichtsbestätigung: Wenn der Benutzer nicht explizit nach einer Diashow fragt, wird er gefragt, ob das gewünschte Format eine HyperFrames-Diashow sein soll. Nur nach positiver Bestätigung wird die Komposition mit allen benötigten Szenen und der JSON-Insel erstellt.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jo5i4swastaken/Skills-Locker/tree/HEAD/skills/slideshow

In Ihrer bevorzugten KI fragen

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

Dokumentation

Autorenvertrag für Slideshows

Eine HyperFrames-Slideshow ist eine normale HyperFrames-Komposition — Szenen, Clips, GSAP-Timelines — mit einer zusätzlichen Zutat: einer JSON-Insel, die deklariert, welche Szenen Folien sind und wie sie zusammenhängen. Der SlideshowController des Players liest die Insel und verwandelt die kontinuierliche GSAP-Timeline in ein diskretes, navigierbares Deck.

Lies zuerst /hyperframes-core für den grundlegenden Kompositionsvertrag (Clips, Tracks, data-*-Attribute, Determinismus-Regeln). Diese Fähigkeit behandelt nur das, was neu ist: das Insel-Schema, Schreibregeln für Folien, Fragmente, Verzweigungen, Validierung und die umschließende Komponente.

Ausgabe — ein navigierbares Deck, kein lineares MP4

Die Ausgabe einer Slideshow ist das laufende Deck: Serviere es mit hyperframes present <project-dir> (oder dem Studio-Präsentationsmodus) — der SlideshowController des Players liest die Insel und steuert Navigation, Fragmente, Verzweigungen und den Präsentatormodus. Siehe Präsentation und Übergabe unten.

Führe hyperframes render nicht für eine Slideshow aus, um ein einzelnes MP4 zu erstellen. Ein Deck wird als mehrere Szenenkompositionen auf oberster Ebene (eine data-composition-id pro Folie) ohne übergeordnete Root-Komposition erstellt, die sie umschließt. Daher löst render nur die erste Komposition auf und gibt ein stillschweigend abgeschnittenes MP4 aus (z. B. 6 Sekunden eines 40-Sekunden-Decks). Ein linearer Hauptlinien-Export (nur Hauptfolien, ohne Verzweigungssequenzen) ist zurückgestellt — bis er ausgeliefert ist, sind die unterstützten Ausgaben das Live-present-Deck und snapshot-Standbilder pro Folie. Wenn ein Benutzer heute ein lineares MP4 benötigt, zeige diese Einschränkung auf, anstatt render auf das Deck zu verweisen.

Absichtsbestätigung

Wenn der Benutzer explizit nach einer Slideshow, Diashow oder HyperFrames-Slideshow fragt, fahre mit dieser Fähigkeit fort.

Wenn die Fähigkeit durch eine verwandte Anfrage wie „Präsentation“, „Pitch-Deck“, „Deck“, „interaktives Deck“ oder „diese Seite konvertieren“ ausgelöst wurde, halte vor dem Erstellen inne und skizziere die Wahl, bevor du um Bestätigung bittest. Erkläre kurz, dass eine HyperFrames-Slideshow ein ausführbares Deck mit diskreten Folien, integrierter Navigation und Präsentatormodus, bearbeitbaren Sprechernotizen, gemeinsam genutzter Medienverwaltung und Validierung vor der Übergabe bedeutet. Bei Quellseiten-Konvertierungen erwähne auch, dass das Ziel darin besteht, das visuelle Design der Originalseite, Interaktionen, Bewegungen und das Medienverhalten zu bewahren, während die Seitenbewegung in Folien-zu-Folien-Übergänge übersetzt wird.

Stelle dann eine kurze Bestätigungsfrage:

Möchtest du das als HyperFrames-Slideshow?

Verwende eine Ja/Nein-Auswahloberfläche, wenn die Umgebung eine bietet; ansonsten stelle die Frage in Klartext.

Setze die Slideshow erst um, wenn der Benutzer mit Ja antwortet. Wenn er Nein sagt, beende die Nutzung dieser Fähigkeit und wechsle zum entsprechenden Nicht-Slideshow-Workflow.


Die beiden Teile

1. Szenen — auf die normale Weise deklariert

Jede Folie wird durch eine Szene untermauert. Deklariere Szenen mit data-composition-id, data-start, data-duration und data-label:

<div
  data-composition-id="problem"
  data-start="0"
  data-duration="8"
  data-label="Das Problem"
  data-width="1920"
  data-height="1080"
>
  <!-- Clips kommen hier hin -->
</div>

Verzweigungsfolien (nur über einen Hotspot erreichbar, von der Hauptlinie ausgeschlossen) werden auf die gleiche Weise deklariert — sie erscheinen nur in einem slideSequences-Eintrag in der Insel, nicht im Haupt-slides-Array.

2. Die JSON-Insel — ein Script-Block pro Komposition

Füge dem Kompositions-HTML genau einen <script type="application/hyperframes-slideshow+json">-Block hinzu. Er enthält alle Metadaten der Slideshow:

<script type="application/hyperframes-slideshow+json">
  {
    "slides": [...],
    "slideSequences": [...]
  }
</script>

Die Insel ist die einzige Quelle der Wahrheit für Folienreihenfolge, Notizen, Fragment-Haltepositionen, Hotspots und Verzweigungssequenzen. Halte sie in der Nähe des <body>-Anfangs, vor den Szenen-divs, damit sie leicht zu finden ist.

Verstecke das Slideshow-Manifest nicht hinter einem alternativen <script type="application/json">-Block plus Laufzeitcode, der die Insel erstellt. Der present-Befehl liest das Kompositions-HTML statisch und erwartet, dass die echte application/hyperframes-slideshow+json-Insel bereits vorhanden ist.


Schema

SlideshowManifest (das Insel-Objekt der obersten Ebene)

{
  "slides": [
    /* SlideRef[] — die Hauptlinie, in der Reihenfolge */
  ],
  "slideSequences": [
    /* SlideSequence[] — Offline-Verzweigungssequenzen */
  ]
}

SlideRef

{
  "sceneId": "problem",
  "notes": "Beginne mit dem Schmerz, nicht mit dem Unternehmen.",
  "fragments": [3.5, 5.2, 7.0],
  "hotspots": [
    /* SlideHotspot[] */
  ],

  "ttsScript": null,
  "ttsAudioUrl": null,
  "ttsDurationMs": null
}
FeldErforderlichHinweise
sceneIdjaMuss exakt mit data-composition-id einer Szene übereinstimmen (oder explizite startTime/endTime angeben). Die Lint-Regel löst Szenen über data-composition-id auf.
notesneinNur für den Präsentator. Niemals dem Publikum gezeigt.
fragmentsneinArray von Zeiten (Sekunden) innerhalb des [start, end]-Bereichs der Folie — siehe Fragmente unten.
hotspotsneinInteraktive Overlays, die eine Verzweigung auslösen — siehe Verzweigungen unten.
startTimeneinOptional. Überschreibt die zeitlichen Grenzen der gefundenen Szene; standardmäßig Start/Ende der Szene.
endTimeneinOptional. Überschreibt die zeitlichen Grenzen der gefundenen Szene; standardmäßig Start/Ende der Szene.
ttsScript, ttsAudioUrl, ttsDurationMsneinReserviert. Schema-Felder existieren, aber die TTS-Wiedergabe ist noch nicht verdrahtet. Weglassen, es sei denn, du befüllst sie für einen zukünftigen Build vor.

SlideHotspot

{
  "id": "h1",
  "label": "Wie haben wir das berechnet?",
  "target": "markttiefgang",
  "region": { "x": 60, "y": 10, "w": 35, "h": 20 }
}
FeldErforderlichHinweise
idjaEindeutig innerhalb der Folie.
labeljaTooltip-/Schaltflächentext, der dem Publikum gezeigt wird.
targetjaMuss mit einer SlideSequence.id in slideSequences übereinstimmen.
regionneinProzentualer Begrenzungsrahmen der Folie: {x, y, w, h} in 0–100. Weglassen, um den Hotspot als eine vollflächige beschriftete Schaltfläche darzustellen.

SlideSequence

{
  "id": "markttiefgang",
  "label": "Methodik der Marktgrößenbestimmung",
  "slides": [{ "sceneId": "mkt-1" }, { "sceneId": "mkt-2" }]
}

slides innerhalb einer Sequenz verwendet die gleiche SlideRef-Form wie die Hauptlinie. Fragmente und verschachtelte Hotspots sind erlaubt.


Schreibregeln für Folien

Dies sind harte Einschränkungen, keine Vorschläge. Eine Folie, die dagegen verstößt, wird bei der Prüfung durch einen Reviewer glatt ersetzt.

  • Die Überschrift ist eine Behauptung in einem vollständigen Satz, kein Label. Schreibe „KMU verbringen 14 Stunden pro Woche mit manueller Terminplanung“, nicht „Planungsproblem“. Der Satz sollte auch dann für sich allein stehen, wenn die Grafik ignoriert wird.
  • Eine Idee + eine Grafik pro Folie. Wenn du versucht bist, eine zweite Aufzählungsliste oder ein zweites Diagramm hinzuzufügen, teile die Folie auf.
  • Beginne mit der Hauptaussage. Der stärkste Punkt kommt zuerst – auf der Folie und in der Reihenfolge des Decks. Investoren lesen von links nach rechts, von oben nach unten, und sie hören auf.
  • Nur Bottom-up-Marktgrößenbestimmung. Schreibe niemals „50 Mrd. $ TAM“, ohne die Berechnung zu zeigen. Baue von den Einzelwirtschaftlichkeiten auf: Konten × ACV oder Transaktionen × Take-Rate.
  • Schriftart mindestens 30pt Äquivalent. Bei 1920×1080 ist eine Überschrift 72–96px; Fließtext ist 48px. Gehe bei Text, den das Publikum lesen muss, niemals unter 40px.

Portieren von Quellseiten

Beim Konvertieren einer vorhandenen Seite in eine Slideshow ist die Quelltreue Teil des Vertrags. Ersetze quellspezifische Widgets nicht durch vereinfachte Annäherungen, es sei denn, der Benutzer bittet ausdrücklich um ein Redesign.

  • Bewahre das visuelle Design der Originalseite, die Bewegungssprache, das interaktive Verhalten, das Medienverhalten und die Präsentationsmöglichkeiten so genau wie möglich. Wenn das Slideshow-System den Präsentatormodus unterstützt, füge Sprechernotizen mit dem gemeinsamen bearbeitbaren Notizverhalten ein, anstatt einer deckspezifischen Implementierung.
  • Portiere mechanische Grafiken aus dem Quell-DOM/CSS/JS so genau wie praktikabel: Benutzerdefinierte Player, Canvas-Visualisierungen, Timelines, Abspielköpfe, Stems, sich ausdehnende Kreise, Hover-Zustände und andere interaktive Details sollten die Konvertierung überstehen.
  • Behandle native <video>-/<audio>-Elemente als Quelle der Wahrheit für jede benutzerdefinierte Medien-Chrome, Canvas-Visualisierung, Wellenform, Beat-Grid oder Abspielkopf. Verbinde die Medienereignisse der Quelle (play, pause, timeupdate, seeking, seeked, ended, ratechange, volumechange) und leite den visuellen Zustand von media.currentTime ab; führe keinen separaten Timer aus, der von der tatsächlichen Wiedergabe abweichen kann.
  • Jedes kopierte <video> oder <audio> mit src muss vor dem Lint HyperFrames-Zeitattribute haben: data-start und data-duration, plus data-has-audio="true", wenn hörbares natives Audio erhalten bleiben soll. Verwende den Zeitbereich der Szene für folienspezifische Medien; für benutzergesteuerte Beweisvideos, die von mehreren fokussierten Folien aus abgespielt werden können, verwende einen deckweiten Bereich. Lasse preload="none" nicht auf Medien; verwende metadata oder auto.
  • Löse Quell-Schriftart-Token vor der Validierung auf. Wenn benutzerdefinierte Quell-Schriftarten beibehalten werden, füge @font-face-Regeln für lokale/erfasste Schriftdateien hinzu. Wenn System-Fallbacks verwendet werden, ersetze tokenisierte Deklarationen wie font-family: var(--f-body) durch konkrete render-sichere Stapel wie system-ui, sans-serif oder ui-monospace, monospace; lasse var(...) nicht als Schriftfamilienwert stehen.
  • Überprüfe die Quelle auf atypische Seitenbewegungen, insbesondere Verhalten, das durch Scrollen, Rad, Berührung, Hash-Zustand, Größenänderung oder eine requestAnimationFrame-Schleife gesteuert wird. Behandle feste Viewports mit übersetzten/skalierten „Welt“-Ebenen, Parallaxe, angehefteten Panels, horizontalen Scrollern, scrollgescrubbten Timelines, Abschnitts-Snapping und Zoom-zu-Element-Kameras als Quellverhalten. Scrollen ist oft der Auslöser für Übergänge in der Quelle, also bewahre den Übergang, indem du seine Fortschrittsstopps, Easing und Kamera-/Fokus-Zustände extrahierst und diese Bewegung dann auf die Slideshow-Navigation durch Timeline-Positionen, Fragmente oder einen wiederverwendbaren Player-/Harness-Hook überträgst. Eigenständige Wrapper, die zu Folienhaltepositionen springen, benötigen dennoch einen expliziten Navigations-Kamera-Übergangs-Hook; die Berechnung von Kamera-Transformationen pro Folie reicht nicht aus. Simuliere keinen buchstäblichen Seiten-Scroll-nach-unten-Übergang innerhalb der Folie; der Betrachter sollte eine Kamerareise/einen Zoom von einem Brennpunkt zum anderen spüren, nicht eine gescrollte Webseite sehen. Halte jeden Folien-zu-Folien-Kamera-Bewegung kontinuierlich: vermeide Zwischenrouten-Stopps, die die x/y-Richtung oder den Zoom umkehren, es sei denn, die Quelle tut dies sichtbar an derselben Grenze. Ein Übergang, der vor dem Landen herumirrt, ist schlimmer als ein einfacherer direkter Fokuswechsel.
  • Bewahre die Medienzuschnitt-Semantik der Quelle. Behandle Screenshots, Tweets/Sozialbeiträge, Produkt-UI-Erfassungen, Diagramme, Dokumente, Code, Bestenlisten und alle Bilder mit lesbarem Text als Beweisinhalte, nicht als dekorative Medien: Verwende das Seitenverhältnis der Quelle (height: auto) oder object-fit: contain innerhalb eines stabilen Rahmens. Verwende object-fit: cover nur, wenn die Quelle es tat, oder für absichtlich dekorative/Hintergrund-/filmische Miniaturansichten. Überprüfe nach dem Einfügen dieser Erfassungen in eine Folie alle vier Kanten auf abgeschnittenen Text, Logos, Bedienelemente oder Bildunterschriften; ein sichtbarer Zuschnitt bei sinnvollen Inhalten ist ein Fehler, es sei denn, die Quelle selbst hat ihn beschnitten.
  • Wenn ein Verhalten für Slideshows generisch ist, lege es im Player/Controller oder in einem wiederverwendbaren Skill-Snippet ab. Löse es nicht mit einmaligen Deck-Skripten.
  • Gestapelte Szenen-Frames dürfen niemals die Interaktion auf der aktiven Folie blockieren. Versteckte Frames benötigen sowohl visuelles Verstecken als auch Ereignis-Sperrung:
.scene-frame {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.scene-frame.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

Wenn Sichtbarkeit imperativ gesteuert wird, setze alle drei Eigenschaften (opacity, visibility und pointerEvents) im Sichtbarkeits-Controller. opacity: 0 allein hinterlässt immer noch eine unsichtbare Ebene, die Klicks verschlucken kann.


Fragmente: Enthüllungs-Haltepositionen innerhalb einer Folie

Ein Fragment ist eine absolute Zeit auf der Kompositions-Timeline (Sekunden) innerhalb des [start, end]-Bereichs einer Folie, an der der Controller einen Enthüllungszustand halten soll.

Wie es funktioniert:

  1. Der Player betritt eine fragmentierte Folie – er sucht direkt fragments[0] auf und hält dort.
  2. Der Benutzer drückt Weiter (oder →) – der Controller sucht fragments[1] auf und hält.
  3. Nach dem letzten Fragment rückt Weiter zur nächsten Folie vor.
  4. Eine Folie ohne Fragmente beginnt an einem Ruheframe innerhalb der Folie, normalerweise ihrem Mittelpunkt, nicht genau bei slide.end.

Fragmentzeiten müssen innerhalb von [start, end] liegen.

Individual skills in this repo

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

Jo5i4swastaken/Skills-Locker

Implements the "100% Retrieval Strategy" by Vercel. Injects a compressed docs index into AGENTS.md/CLAUDE.md to guarantee the agent always uses your global skills and best practices.

Jo5i4swastaken/Skills-Locker

Premium brand-kit image generation skill for creating high-end brand-guidelines boards, logo systems, identity decks, and visual-world presentations. Trained for minimalist, cinematic, editorial, dark-tech, luxury, cultural, security, gaming, developer-tool, and consumer-app brand systems. Optimized for intentional logo concepting, refined composition, sparse typography, strong symbolic meaning, premium mockups, art-directed imagery, and flexible grid layouts.

Jo5i4swastaken/Skills-Locker

Rewrite text to make ideas and sentences clearer and easier to understand. Use when the user wants to simplify prose, untangle a tangled sentence, reduce jargon, sharpen vague claims, or make writing accessible to a wider audience. Works on any text: docs, emails, blog posts, reports, marketing copy, slide bullets, academic prose. TRIGGER on phrases like: "make this clearer", "clarify this", "simplify this", "rewrite for clarity", "plain language", "reduce jargon", "make it easier to understand", "untangle this", "explain this simply", "tighten this up", "make this readable". Returns the rewritten text only — no diff, no commentary.

Jo5i4swastaken/Skills-Locker

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

Jo5i4swastaken/Skills-Locker

Elite UX/UI & Advanced GSAP Motion Engineer. Enforces Python-driven true randomization for layout variance, strict AIDA page structure, wide editorial typography (bans 6-line wraps), gapless bento grids, strict GSAP ScrollTriggers (pinning, stacking, scrubbing), inline micro-images, and massive section spacing.

Jo5i4swastaken/Skills-Locker

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Jo5i4swastaken/Skills-Locker

Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.

Jo5i4swastaken/Skills-Locker

Agent Media OS — resolve any media need (BGM, SFX, image, icon) into a frozen local file + ledger record. One verb (`resolve`) handles the full cascade — project cache, global cache, HeyGen catalog search, freeze, register. Keeps search noise on disk, hands the agent a path. Use when a composition needs background music, sound effects, images, or icons.

Jo5i4swastaken/Skills-Locker

When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms, or wants to do social listening and engagement triage. Also use when the user mentions 'LinkedIn post,' 'Twitter thread,' 'social media,' 'content calendar,' 'social scheduling,' 'engagement,' 'viral content,' 'what should I post,' 'repurpose this content,' 'tweet ideas,' 'LinkedIn carousel,' 'social media strategy,' 'grow my following,' 'TikTok video,' 'Reels,' 'Shorts,' 'video script,' 'video hook,' 'short-form video,' 'create a reel,' 'social listening,' 'brand mentions,' 'competitor monitoring,' 'top posts to comment on,' 'find people asking for,' 'carousel,' 'slide-by-slide,' or 'document post.' Use this for social media content creation, repurposing, scheduling, short-form video scripting, and social listening. For broader content strategy, see content-strategy. For paid ads, see ad-creative. For earned media, see public-relations.

Jo5i4swastaken/Skills-Locker

Use when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); client libraries and SSR integrations (supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues (login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI or MCP server; schema changes, migrations, security audits, Postgres extensions (pg_graphql, pg_cron, pg_vector).

Jo5i4swastaken/Skills-Locker

Watch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.

Verwandte Skills