Communitygithub.com

k8s-animate

Créez une vidéo explicative Manim, style 3Blue1Brown, décrivant un processus Kubernetes à l’aide des icônes officielles Kubernetes, avec option de narration vocale. Réservé à l’utilisateur — exécutez-le uniquement lorsque l’utilisateur tape /k8s-animate ; ne le déclenchez jamais de votre propre chef.

Qu'est-ce que k8s-animate ?

Cette compétence permet de générer une vidéo MP4 animée, de style 3Blue1Brown, expliquant un processus Kubernetes (par exemple, l’ajout d’un nœud avec kubeadm, le fonctionnement du plan de contrôle, etc.) en utilisant exclusivement les icônes officielles de la communauté Kubernetes sous licence CC-BY 4.0. La vidéo est conçue pour être graphique, animée, avec très peu de texte et aucun sous-titre. Elle supporte une option de narration via Kokoro TTS. La compétence est destinée à être invoquée manuellement par l’utilisateur via la commande `/k8s-animate` et ne doit jamais être déclenchée automatiquement. Le flux de travail comprend : la vérification de l’environnement (avec installation automatique des dépendances), la proposition d’un storyboard pour validation, l’écriture de la scène animée à l’aide d’une bibliothèque de références, puis le rendu et l’ouverture du fichier MP4 final. La compétence est développée pour fonctionner avec le framework Manim et est testée sur macOS, Arch Linux et Debian/Ubuntu.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Créer une vidéo explicative Kubernetes

Le résultat est un MP4 pour une conférence : graphique, animé, presque pas de texte, pas de sous-titres.

Argument voiceover=on|off (par défaut on). on narre avec la voix locale Kokoro TTS ; off produit une vidéo silencieuse et n’installe ni ne charge jamais Kokoro.

Argument setup : installation uniquement, pas de vidéo. Effectuez l’étape « Vérifier l’environnement » ci-dessous, puis arrêtez-vous.

Deux dossiers. SKILL est le répertoire de base de la compétence (le dossier contenant ce fichier). Il contient .venv/, icons/, references/ et scripts/. OUT est <répertoire de travail de l'utilisateur>/<sujet>, créé par vidéo. Le fichier de scène, media/ et le MP4 final résident dans OUT, jamais dans SKILL (la mise à jour ou la suppression de la compétence supprime SKILL). Utilisez des chemins absolus ; ne vous fiez pas au répertoire courant.

Ce qui est fourni avec cette compétence

  • icons/ : les icônes officielles de la communauté Kubernetes (ensemble étiqueté, CC-BY-4.0). Utilisez uniquement ces icônes pour les composants et ressources Kubernetes. Ne les redessinez jamais, ne les recoloriez pas en autre chose et ne remplacez pas un composant qui a une icône ici par une forme générique. Pour les concepts sans icône (CSR, certificat, paquet, règles iptables), utilisez des formes simples comme Doc et Packet de la référence.
  • references/node_join.py : un exemple complet et approuvé (ajout de nœud kubeadm). Copiez son style, sa palette et ses classes d’aide.
  • references/kokoro_service.py : Kokoro-82M intégré dans manim-voiceover.
  • references/kit.py : palette partagée, aides et la scène de base Explainer plus voiced(Scene). Les nouvelles scènes l’importent.
  • scripts/setup.sh [voiceover=on|off] [--yes] : signale ce qui manque et affiche le plan d’installation (macOS, Arch, Debian/Ubuntu) ; n’installe qu’avec --yes.
fichiercomposantfichiercomposantfichiercomposant
apikube-apiserverpodPodcmConfigMap
etcdetcdrsReplicaSetsecretSecret
schedkube-schedulerdeployDeploymentpvPersistentVolume
c-mkube-controller-managerstsStatefulSetpvcPersistentVolumeClaim
c-c-mcloud-controller-managerdsDaemonSetscStorageClass
kubeletkubeletjobJobnsNamespace
k-proxykube-proxycronjobCronJobsaServiceAccount
control-planenœud de plan de contrôlesvcServicerole / c-roleRole / ClusterRole
nodenœud workerepEndpointsrb / crbRoleBinding / ClusterRoleBinding
hpaHorizontalPodAutoscaleringIngressquotaResourceQuota
crdCustomResourceDefinitionnetpolNetworkPolicylimitsLimitRange

Manim supprime le texte intégré dans ces SVG, et api, c-m, sched, kubelet, k-proxy partagent le même glyphe d’engrenage. Étiquetez toujours les icônes avec l’aide Icon(name, label).

Flux de travail

1. Vérifier l’environnement

Exécutez bash SKILL/scripts/setup.sh voiceover=<on|off>. S’il affiche Prêt., continuez. Sinon, il affiche ce qui manque et le plan (premier lancement sur cette machine) : montrez le plan à l’utilisateur et demandez avant d’installer.

  • Après confirmation, exécutez-le à nouveau avec --yes. C’est lent (torch, paquets système), alors exécutez-le en arrière-plan ou avec un long délai d’attente.
  • Si le plan contient une ligne sudo et que vous ne pouvez pas taper le mot de passe : donnez à l’utilisateur la commande à exécuter lui-même (! bash SKILL/scripts/setup.sh voiceover=<on|off> --yes).
  • Kokoro est gratuit, sous licence Apache-2.0 (acceptable pour les cours payants), hors ligne et de qualité quasi commerciale ; si l’utilisateur ne le souhaite pas, suggérez voiceover=off.

2. Se mettre d’accord sur le storyboard

Demandez le sujet s’il n’a pas été donné. Proposez ensuite un storyboard dans le chat et attendez l’approbation, car le rendu prend plusieurs minutes :

  • 6 à 12 séquences, chacune avec : un intitulé d’étape de 1 à 3 mots, ce qui se déplace à l’écran, une phrase parlée.
  • L’histoire racontée par le mouvement : icônes dans des boîtes, paquets sur des arcs, changements de couleur pour l’état. Seulement de courtes étiquettes à l’écran.
  • Les faits doivent être corrects pour la version actuelle de Kubernetes. En cas de doute sur un détail, dites-le plutôt que de deviner.

3. Écrire la scène

Modelez-la sur references/node_join.py :

  • Un dictionnaire NARRATION (séquence → phrase) comme attribut de classe, une méthode par séquence ; Explainer.construct les parcourt en boucle à l’intérieur de with self.voice(line).
  • Écrivez OUT/<sujet>.py avec from references.kit import *, sous-classez Explainer, et ajoutez <Nom>Voiced = voiced(<Nom>) en bas. Les séquences sont def beat(self, i). Le <Nom> silencieux et le <Nom>Voiced narré proviennent du même code.
  • Ne nommez jamais le fichier de scène d’après un module de la bibliothèque standard (operator.py casse les importations Python).
  • Réutilisez la palette (fond sombre #0b1220, bleu k8s #326ce5, jeton or, réseau sarcelle, ambre NotReady, vert Ready) et les aides Icon, Packet, Doc, Step, Pill, send.
  • Classes petites, code minimal.
  • Épelez les termes comme ils sont prononcés dans la narration : kubeadm → « kube admin », etcd → « et-see-dee », kubectl → « kube control ».

4. Prévisualiser, puis rendre

Exécutez manim comme PYTHONPATH=SKILL SKILL/.venv/bin/manim --media_dir OUT/media ... depuis OUT.

  1. Prévisualisation : ... -ql <sujet>.py <Nom>, puis extrayez ~8 images avec ffmpeg en une seule planche contact et regardez-la une fois. Corrigez les chevauchements, les étiquettes coupées et le texte sombre ou illisible.
  2. Rendu final : ... -qh <sujet>.py <Nom> quand voiceover=off, ou <Nom>Voiced quand voiceover=on. Copiez OUT/media/videos/<sujet>/1080p60/<Nom>.mp4 vers OUT/<sujet>.mp4.
  3. Avec voiceover=on, confirmez que le MP4 a un flux audio (ffprobe).
  4. Ouvrez le MP4 une fois terminé (open sur macOS ; xdg-open sur Linux, ou s’il n’y a pas d’affichage, imprimez simplement le chemin).

Signalez le chemin absolu du MP4, la durée, tout élément à écouter (prononciation de termes inhabituels) et rappelez à l’utilisateur que les icônes nécessitent le crédit « Icônes de la communauté Kubernetes, CC BY 4.0 » (l’outro l’affiche déjà). Options vocales : af_heart (par défaut), am_michael, am_fenrir ; passez-en une comme voiced(<Nom>, voice="am_michael").

Skills associés