Communitygithub.com

k8s-animate

Erstellt ein 3Blue1Brown-artiges Manim-Video, das einen Kubernetes-Prozess mit den offiziellen Kubernetes-Icons erklärt, optional mit Vertonung. Nur auf menschliche Aufforderung ausführen – starte es nur, wenn der Benutzer /k8s-animate eingibt; niemals selbstständig auslösen.

Was ist k8s-animate?

Dieses Skill erstellt animierte Erklärvideos im Stil von 3Blue1Brown, die Kubernetes-Abläufe visualisieren. Es nutzt die offizielle Manim-Engine und die offiziellen Kubernetes-Community-Icons (CC-BY-4.0). Der Workflow umfasst eine Umgebungsprüfung mit automatischer Installation aller Abhängigkeiten, das Erstellen eines Storyboards mit 6–12 Schritten, die Programmierung der Szene in Python mit Manim, und schließlich das Rendern als MP4. Das Skill kann sowohl stumme Videos als auch vertonte Versionen mit dem lokalen Kokoro-TTS (Apache-2.0, offline) erstellen. Es ist für macOS, Arch Linux und Debian/Ubuntu optimiert und erfordert zwingend die manuelle Aktivierung durch den Benutzer mittels `/k8s-animate`. Der gesamte Code wird im Benutzer-Arbeitsverzeichnis erstellt, während das Skill-Verzeichnis nur Hilfsdateien, Icons und Referenzen enthält.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wielenmaker/k8s-animate/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Erstelle ein Kubernetes-Erklärvideo

Die Ausgabe ist ein MP4 für einen Vortrag: grafisch, animiert, fast kein Text, keine Untertitel.

Argument voiceover=on|off (Standard on). on vertont mit der lokalen Kokoro-TTS-Stimme; off erstellt ein stummes Video und installiert oder lädt Kokoro nie.

Argument setup: nur Installation, kein Video. Führe den Schritt "Umgebung prüfen" unten aus und stoppe dann.

Zwei Ordner. SKILL ist das Basisverzeichnis des Skills (der Ordner, der diese Datei enthält). Er enthält .venv/, icons/, references/ und scripts/. OUT ist <das Arbeitsverzeichnis des Benutzers>/<Thema>, wird pro Video erstellt. Die Szenendatei, media/ und das endgültige MP4 befinden sich in OUT, niemals in SKILL (Aktualisieren oder Entfernen des Skills löscht SKILL). Verwende absolute Pfade; verlasse dich nicht auf das aktuelle Verzeichnis.

Was mit diesem Skill geliefert wird

  • icons/: die offiziellen Kubernetes-Community-Icons (beschriftetes Set, CC-BY-4.0). Verwende ausschließlich diese Icons für Kubernetes-Komponenten und -Ressourcen. Zeichne sie nie neu, färbe sie in etwas anderes um oder ersetze eine Komponente, die hier ein Icon hat, durch eine generische Form. Für Konzepte ohne Icon (CSR, Zertifikat, Paket, iptables-Regeln) verwende einfache Formen wie Doc und Packet aus der Referenz.
  • references/node_join.py: ein vollständiges, genehmigtes Beispiel (kubeadm-Knotenbeitritt). Kopiere dessen Stil, Farbpalette und Hilfsklassen.
  • references/kokoro_service.py: Kokoro-82M eingebunden in manim-voiceover.
  • references/kit.py: gemeinsame Palette, Helfer und die Explainer-Basis-Szene sowie voiced(Scene). Neue Szenen importieren daraus.
  • scripts/setup.sh [voiceover=on|off] [--yes]: meldet, was fehlt, und gibt den Installationsplan aus (macOS, Arch, Debian/Ubuntu); installiert nur mit --yes.
DateiKomponenteDateiKomponenteDateiKomponente
apikube-apiserverpodPodcmConfigMap
etcdetcdrsReplicaSetsecretSecret
schedkube-schedulerdeployDeploymentpvPersistentVolume
c-mkube-controller-managerstsStatefulSetpvcPersistentVolumeClaim
c-c-mcloud-controller-managerdsDaemonSetscStorageClass
kubeletkubeletjobJobnsNamespace
k-proxykube-proxycronjobCronJobsaServiceAccount
control-planeSteuerungsebene-KnotensvcServicerole / c-roleRole / ClusterRole
nodeWorker-KnotenepEndpointsrb / crbRoleBinding / ClusterRoleBinding
hpaHorizontalPodAutoscaleringIngressquotaResourceQuota
crdCustomResourceDefinitionnetpolNetworkPolicylimitsLimitRange

Manim entfernt den in diese SVGs eingebetteten Text, und api, c-m, sched, kubelet, k-proxy teilen sich dasselbe Zahnrad-Symbol. Beschrifte Icons immer mit dem Icon(name, label)-Helfer.

Arbeitsablauf

1. Umgebung prüfen

Führe bash SKILL/scripts/setup.sh voiceover=<on|off> aus. Wenn es Ready. ausgibt, fahre fort. Andernfalls wurde ausgegeben, was fehlt, und der Plan (erster Lauf auf diesem Rechner): Zeige dem Benutzer den Plan an und frage vor der Installation.

  • Bei Bestätigung führe es erneut mit --yes aus. Es ist langsam (torch, Systempakete), also führe es im Hintergrund oder mit einem langen Timeout aus.
  • Wenn der Plan eine sudo-Zeile enthält und du das Passwort nicht eingeben kannst: Gib dem Benutzer den Befehl, den er selbst ausführen soll (! bash SKILL/scripts/setup.sh voiceover=<on|off> --yes).
  • Kokoro ist kostenlos, Apache-2.0 (geeignet für bezahlte Kurse), offline und nahezu kommerzielle Qualität; wenn der Benutzer es nicht möchte, schlage voiceover=off vor.

2. Storyboard abstimmen

Frage nach dem Thema, falls es nicht angegeben wurde. Schlage dann ein Storyboard im Chat vor und warte auf Genehmigung, da das Rendern Minuten dauert:

  • 6–12 Szenen, jede mit: einer 1–3 Wörter umfassenden Schritthezeichnung, was sich auf dem Bildschirm bewegt, einem gesprochenen Satz.
  • Geschichte durch Bewegung erzählt: Icons in Kästchen, Pakete auf Bögen, Farbänderungen für Zustände. Nur kurze Beschriftungen auf dem Bildschirm.
  • Fakten müssen für die aktuelle Kubernetes-Version korrekt sein. Wenn du dir bei einem Detail unsicher bist, sage es, anstatt zu raten.

3. Szene schreiben

Modelliere sie nach references/node_join.py:

  • Ein NARRATION-Wörterbuch (Szene → Satz) als Klassenattribut, eine Methode pro Szene; Explainer.construct durchläuft sie innerhalb von with self.voice(line).
  • Schreibe OUT/<Thema>.py mit from references.kit import *, erstelle eine Unterklasse von Explainer und füge am Ende <Name>Voiced = voiced(<Name>) hinzu. Szenen sind def beat(self, i). Die stumme <Name> und die vertonte <Name>Voiced stammen aus demselben Code.
  • Benenne die Szenendatei niemals nach einem stdlib-Modul (operator.py unterbricht Pythons Importe).
  • Verwende die Palette wiederverwenden (dunkel #0b1220, k8s-blau #326ce5, goldener Token, teal Netzwerk, amber NotReady, grün Ready) und die Helfer Icon, Packet, Doc, Step, Pill, send.
  • Kleine Klassen, minimaler Code.
  • Schreibe Begriffe so, wie sie in der Erzählung gesprochen werden: kubeadm → "kube admin", etcd → "et-cee-dee", kubectl → "kube control".

4. Vorschau, dann rendern

Führe manim aus als PYTHONPATH=SKILL SKILL/.venv/bin/manim --media_dir OUT/media ... von OUT aus.

  1. Vorschau: ... -ql <Thema>.py <Name>, extrahiere dann mit ffmpeg etwa 8 Frames in ein Kontaktblatt und betrachte es einmal. Behebe Überlappungen, abgeschnittene Beschriftungen und dunklen oder unlesbaren Text.
  2. Endgültiges Rendern: ... -qh <Thema>.py <Name> wenn voiceover=off, oder <Name>Voiced wenn voiceover=on. Kopiere OUT/media/videos/<Thema>/1080p60/<Name>.mp4 nach OUT/<Thema>.mp4.
  3. Mit voiceover=on bestätige, dass das MP4 einen Audiostream hat (ffprobe).
  4. Öffne das MP4, wenn du fertig bist (open auf macOS; xdg-open auf Linux, oder wenn es kein Display gibt, gib einfach den Pfad aus).

Melde den absoluten MP4-Pfad, die Dauer, worauf zu achten ist (Aussprache ungewöhnlicher Begriffe) und erinnere den Benutzer daran, dass die Icons die Quellenangabe "Kubernetes community icons, CC BY 4.0" benötigen (der Abspann zeigt sie bereits). Sprachoptionen: af_heart (Standard), am_michael, am_fenrir; übergib eine als voiced(<Name>, voice="am_michael").

Verwandte Skills