Communitygithub.com

k8s-animate

Cria um vídeo explicativo no estilo 3Blue1Brown sobre processos do Kubernetes, utilizando os ícones oficiais e narração opcional. Apenas sob invocação humana — execute somente quando o usuário digitar /k8s-animate; nunca dispare por conta própria.

O que é k8s-animate?

A skill **k8s-animate** permite criar vídeos animados no estilo 3Blue1Brown (usando a biblioteca Manim) para explicar processos do Kubernetes, empregando exclusivamente os ícones oficiais da comunidade Kubernetes (CC-BY-4.0). Ela é acionada apenas pelo comando `/k8s-animate`, garantindo que o agente de IA nunca a execute sem solicitação explícita. A skill suporta dois modos: `voiceover=on` (narração via Kokoro TTS local, offline e de qualidade comercial) ou `voiceover=off` (vídeo silencioso). O fluxo inclui verificação do ambiente, instalação de dependências (com permissão do usuário), definição colaborativa de um storyboard aprovado, escrita da cena Python baseada em exemplos prontos, pré-visualização e renderização final do MP4. A skill é compatível com macOS, Linux (Arch, Debian/Ubuntu) e requer Python, Manim, ferramentas de sistema e, opcionalmente, Kokoro. Ela foi projetada para ser usada por desenvolvedores e profissionais de DevOps que desejam criar vídeos educativos tecnicamente precisos sobre Kubernetes, com animações dinâmicas e narrativa clara.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Crie um vídeo explicativo sobre Kubernetes

A saída é um MP4 para uma palestra: gráfica, animada, quase sem texto, sem legendas.

Argumento voiceover=on|off (padrão on). on narra com a voz local do Kokoro TTS; off produz um vídeo silencioso e nunca instala ou carrega o Kokoro.

Argumento setup: apenas instalação, sem vídeo. Faça a etapa "Verificar o ambiente" abaixo e pare.

Duas pastas. SKILL é o diretório base da skill (a pasta que contém este arquivo). Ela contém .venv/, icons/, references/ e scripts/. OUT é <diretório de trabalho do usuário>/<tópico>, criado por vídeo. O arquivo da cena, media/ e o MP4 final ficam em OUT, nunca em SKILL (atualizar ou remover a skill exclui SKILL). Use caminhos absolutos; não dependa do diretório atual.

O que acompanha esta skill

  • icons/: os ícones oficiais da comunidade Kubernetes (conjunto identificado, CC-BY-4.0). Use apenas estes ícones para componentes e recursos do Kubernetes. Nunca redesenhe, recolorir em outra coisa ou substitua por uma forma genérica um componente que tenha um ícone aqui. Para conceitos sem ícone (CSR, certificado, pacote, regras iptables), use formas simples como Doc e Packet da referência.
  • references/node_join.py: um exemplo completo e aprovado (kubeadm node join). Copie seu estilo, paleta e classes auxiliares.
  • references/kokoro_service.py: Kokoro-82M integrado ao manim-voiceover.
  • references/kit.py: paleta compartilhada, ajudantes e a cena base Explainer mais voiced(Scene). Novas cenas importam dele.
  • scripts/setup.sh [voiceover=on|off] [--yes]: informa o que está faltando e exibe o plano de instalação (macOS, Arch, Debian/Ubuntu); instala apenas com --yes.
arquivocomponentearquivocomponentearquivocomponente
apikube-apiserverpodPodcmConfigMap
etcdetcdrsReplicaSetsecretSecret
schedkube-schedulerdeployDeploymentpvPersistentVolume
c-mkube-controller-managerstsStatefulSetpvcPersistentVolumeClaim
c-c-mcloud-controller-managerdsDaemonSetscStorageClass
kubeletkubeletjobJobnsNamespace
k-proxykube-proxycronjobCronJobsaServiceAccount
control-planenó do plano de controlesvcServicerole / c-roleRole / ClusterRole
nodenó workerepEndpointsrb / crbRoleBinding / ClusterRoleBinding
hpaHorizontalPodAutoscaleringIngressquotaResourceQuota
crdCustomResourceDefinitionnetpolNetworkPolicylimitsLimitRange

O Manim descarta o texto incorporado nesses SVGs, e api, c-m, sched, kubelet, k-proxy compartilham o mesmo glifo de engrenagem. Sempre rotule os ícones com o auxiliar Icon(nome, rótulo).

Fluxo de trabalho

1. Verificar o ambiente

Execute bash SKILL/scripts/setup.sh voiceover=<on|off>. Se exibir Ready., continue. Caso contrário, ele exibiu o que está faltando e o plano (primeira execução nesta máquina): mostre o plano ao usuário e pergunte antes de instalar.

  • Após confirmação, execute novamente com --yes. É lento (torch, pacotes do sistema), então execute em segundo plano ou com um timeout longo.
  • Se o plano tiver uma linha sudo que você não pode digitar a senha: forneça ao usuário o comando para executar por conta própria (! bash SKILL/scripts/setup.sh voiceover=<on|off> --yes).
  • Kokoro é gratuito, Apache-2.0 (adequado para cursos pagos), offline e com qualidade quase comercial; se o usuário não quiser, sugira voiceover=off.

2. Combinar o storyboard

Pergunte pelo tópico se não foi fornecido. Em seguida, proponha um storyboard no chat e aguarde aprovação, pois a renderização leva minutos:

  • 6 a 12 etapas, cada uma com: um rótulo de etapa de 1 a 3 palavras, o que se move na tela, uma frase falada.
  • História contada através de movimento: ícones em caixas, pacotes em arcos, mudanças de cor para estado. Apenas rótulos curtos na tela.
  • Os fatos devem estar corretos para a versão atual do Kubernetes. Se não tiver certeza sobre um detalhe, diga em vez de adivinhar.

3. Escrever a cena

Modele-a em references/node_join.py:

  • Um dicionário NARRATION (etapa → frase) como atributo de classe, um método por etapa; Explainer.construct percorre-os dentro de with self.voice(line).
  • Escreva OUT/<tópico>.py com from references.kit import *, subclassifique Explainer e adicione <Nome>Voiced = voiced(<Nome>) no final. As etapas são def beat(self, i). O <Nome> silencioso e o <Nome>Voiced narrado vêm do mesmo código.
  • Nunca nomeie o arquivo da cena como um módulo stdlib (operator.py quebra as importações do Python).
  • Reutilize a paleta (fundo escuro #0b1220, azul k8s #326ce5, token dourado, rede verde-água, âmbar NotReady, verde Ready) e os auxiliares Icon, Packet, Doc, Step, Pill, send.
  • Classes pequenas, código mínimo.
  • Escreva os termos como são falados na narração: kubeadm → "kube admin", etcd → "et-cee-dee", kubectl → "kube control".

4. Pré-visualizar e renderizar

Execute o manim como PYTHONPATH=SKILL SKILL/.venv/bin/manim --media_dir OUT/media ... a partir de OUT.

  1. Pré-visualização: ... -ql <tópico>.py <Nome>, depois extraia ~8 quadros com ffmpeg em uma folha de contato e examine uma vez. Corrija sobreposições, rótulos cortados e texto escuro ou ilegível.
  2. Renderização final: ... -qh <tópico>.py <Nome> quando voiceover=off, ou <Nome>Voiced quando voiceover=on. Copie OUT/media/videos/<tópico>/1080p60/<Nome>.mp4 para OUT/<tópico>.mp4.
  3. Com voiceover=on, confirme que o MP4 tem um fluxo de áudio (ffprobe).
  4. Abra o MP4 ao finalizar (open no macOS; xdg-open no Linux, ou se não houver tela, apenas exiba o caminho).

Informe o caminho absoluto do MP4, a duração, algo para ouvir (pronúncia de termos incomuns) e lembre ao usuário que os ícones precisam do crédito "Ícones da comunidade Kubernetes, CC BY 4.0" (o encerramento já mostra). Opções de voz: af_heart (padrão), am_michael, am_fenrir; passe um como voiced(<Nome>, voice="am_michael").

Habilidades Relacionadas