Communitygithub.com

jjietay/clayducation

Crée une vidéo explicative narrative (MP4) qui enseigne un concept, avec un look 3D en pâte à modeler douce et une mascotte silencieuse, dont le script est vérifié par un agent avant la génération de la voix. Idéal lorsque l'utilisateur demande une vidéo, une explication, une animation ou une démonstration visuelle d'une idée.

Qu'est-ce que clayducation ?

Ce skill génère une vidéo MP4 explicative et narrative, avec un style 3D en pâte à modeler douce et une mascotte silencieuse, pour enseigner un concept. Il utilise le contexte de la conversation et du projet en cours pour adapter le contenu. Le script est automatiquement vérifié par un agent avant la synthèse vocale, garantissant la précision et la pertinence. Le skill est conçu pour fonctionner sur les plateformes Claude (Codex, Code) et intègre des vérifications rigoureuses de la qualité, comme l'absence de chevauchements visuels, un rythme adapté, et des sous-titres corrects. Il s'appuie sur un moteur situé dans `~/.claude/skills/clayducation/engine/` et propose des options de look, de musique et de points de contrôle pour personnaliser la vidéo. L'utilisateur peut demander une vidéo sur des sujets variés, par exemple « crée une vidéo expliquant les vecteurs propres », « génère une explication sur I2C » ou « anime le fonctionnement de l'attention ».

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jjietay/clayducation/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

Vidéo explicative

Vous créez une vidéo qui aide l'utilisateur à apprendre un concept. Vous avez un gros avantage sur un outil frais : vous connaissez cette conversation et ce projet. Utilisez cette connaissance.

Le moteur se trouve dans ~/.claude/skills/clayducation/engine/. Dans ce fichier, make signifie :

node ~/.claude/skills/clayducation/engine/make.mjs <commande> <répertoire-projet>

Étape 0 : demander d'abord (à chaque début du skill)

Que l'utilisateur ait tapé /clayducation ou demandé une vidéo en mots, la première chose que vous faites est de poser les questions ci-dessous avec AskUserQuestion, avec des options cliquables. Omettre chaque question que le message de l'utilisateur ou cette conversation répondent déjà (par exemple, « en style actualité » répond au look, et « avec de la musique lo-fi » répond à la musique). Mettez l'option recommandée en premier et marquez-la « (Recommandé) ». Posez les quatre questions en un seul appel (l'outil en accepte au maximum 4). Si le sujet lui-même n'est pas clair et qu'aucune question n'est omise, posez d'abord la question sur le sujet, dans son propre appel.

QuestionEn-têteOptions (première = par défaut)
Quel look utiliser pour la vidéo ?LookClay 3D : un look en pâte à modeler douce, avec la mascotte silencieuse qui fait le travail · 2D classique, mixte : un style 2D différent pour chaque partie · 2D classique, un style : l'utilisateur le nomme (actualité, tableau blanc, ...)
À qui s'adresse la vidéo et quelle durée ?AuditoireRévision d'examen, standard : notation du cours, nombres travaillés, pièges d'examen, 5 à 6 min · Révision d'examen, approfondie : idem, 8 à 9 min, chaque étape de la dérivation · Débutant, court : intuition d'abord, moins de symboles, 2 à 4 min · (Autre : l'utilisateur nomme un auditoire et une durée, par exemple « révision pour expert, court »)
Quand dois-je vérifier avec vous ?Point de contrôleTout en une fois : revenir avec la vidéo terminée · Après le storyboard : montrer le plan et attendre l'approbation · Après le premier rendu : montrer les premières images et attendre
Quelle musique ?MusiqueCalme (current) : nappe douce, sans rythme · Lo-fi (lofi) : rythme léger, plus d'énergie · Aucune

Mettez une option recommandée en premier lorsque la conversation en suggère une (un examen la semaine suivante : Révision d'examen, approfondie). Si le message ne répond qu'à une moitié de la question Auditoire (par exemple « pour mon examen »), gardez la question et n'offrez que les options qui correspondent à cette moitié. Les auditoires sont : révision d'examen, débutant et révision pour expert (rapide et dense) ; les durées sont : court (2 à 4 min), standard (5 à 6 min) et approfondi (8 à 9 min). Écrivez les réponses dans video.json à l'étape 4 : "_look" (clay ou classic), "_brief": { "viewer": ..., "length": ..., "checkpoint": ..., "style": ... } et "_render": { "music": "current" | "lofi" | false }. Chaque étape ultérieure, et une reconstruction, les y lit et ne repose pas les questions. Si l'utilisateur ignore les questions, utilisez la première option de chacune.

Tout en une fois, sauf si l'utilisateur a choisi un point de contrôle

Après l'étape 0, faites chaque étape ci-dessous sans vous arrêter, et revenez uniquement avec la vidéo terminée et vérifiée. Ne demandez pas « dois-je continuer ? », ne montrez pas de brouillons, n'attendez pas entre les étapes. Chaque vérification ci-dessous est à vous pour l'exécuter et agir en conséquence. Les seuls arrêts sont les points de contrôle que l'utilisateur a choisis : « Après le storyboard » s'arrête après l'étape 7 (montrez le storyboard et le verdict de l'agent de script, puis attendez), et « Après le premier rendu » s'arrête au premier make look de l'étape 9 (montrez ses images, puis attendez).

Le look que l'utilisateur souhaite (à lire avant l'étape 6)

Clay pour les choses qui agissent, Manim pour les graphiques, et la mascotte est dans chaque vidéo. Lisez styles/clay.md. L'utilisateur a choisi le look clay plutôt que l'ancien mélange de styles pour la cohérence entre les vidéos. Les styles 2D sont un look classique sur option ; voir la section ci-dessous.

  • Ne forcez pas un graphique en clay (l'utilisateur l'a demandé). Lorsqu'une image 2D Manim aide le spectateur à comprendre plus que le clay ne le ferait (une courbe, une distribution, un contour, une projection ou autre géométrie dans un plan), faites de cette partie une partie Manim, sur le fond sombre de Manim (styles/math-manim.md). Ne construisez jamais un modèle en clay qui copie une courbe mathématique : l'utilisateur les a fait retirer. Les objets qui agissent, et le travail physique de la mascotte, restent en clay. Une vidéo peut passer d'une partie clay à une partie Manim et revenir, avec la même couleur pour la même chose.

  • Un seul look, plusieurs parties. La vidéo est divisée en parties d'environ 15 à 40 s (accroche, chaque idée, votre cas, conclusion). Chaque partie a son propre fond uni, sa caméra et son décor. Côte à côte, deux parties ne partagent jamais un fond.

  • La mascotte fait le travail. Il est silencieux, sans synchronisation labiale, et le narrateur est une voix off. Il marche, tire, pousse, porte et éteint les choses de ses propres mains, donc une force dans le script est quelque chose que le spectateur le voit faire. L'utilisateur a demandé cela après une vidéo où il se tenait seulement et regardait. Il reste impassible par défaut, et make check AVERTIT lorsqu'il reste au même endroit. Variez le travail : utilisez un assistant d'action différent dans chaque partie (carry, knock, press, grip, pointAt, pushOn ; voir « Utiliser une action différente » dans styles/clay.md). L'utilisateur l'a vu pousser dans chaque partie.

  • Les choses doivent être connectées. Un ressort atteint son mur, une broche touche sa carte, une main touche ce qu'elle tient. L'utilisateur a trouvé un ressort qui manquait son mur après que toutes les vérifications étaient passées. make bake mesure chaque jointure dans models.js (JOINS), alors ajoutez de nouvelles jointures là, et recherchez le contact dans les images fixes.

  • Nos propres modèles uniquement. Utilisez le kit dans styles/library/clay. Ne téléchargez jamais un modèle. Si une vidéo a besoin d'un nouvel objet, ajoutez-le au kit avec le même look.

  • Chaque partie est un seul plan continu. À l'intérieur d'une partie, il n'y a ni coupes ni nouvelles diapositives : les objets arrivent, bougent et se rejoignent pendant que la voix parle, et la caméra se déplace lentement. Une partie se termine dans l'état à partir duquel la partie suivante commence, ou avec un fondu dans le fond de la partie suivante.

  • L'image explique ; le texte ne fait que nommer. Le texte reste plat et net, en HTML par-dessus la 3D. Par image : un chapeau (petites capitales, la partie et une source), un titre d'au plus 8 mots, quelques étiquettes de 1 à 4 mots chacune avec de fines lignes de guidage, et au plus une ligne de légende en bas. Jamais une colonne de phrases, jamais une liste à puces, jamais une légende expliquant la signification des couleurs. Environ 15 mots à l'écran au maximum.

  • Les formules jouent la voix (l'utilisateur a demandé cela). Une formule fixe ne vaut pas mieux que de lire des notes. Construisez chacune avec eqn() : les termes arrivent au fur et à mesure qu'ils sont prononcés, bougent quand la voix les déplace, frappent et explosent quand elle dit annuler, et rebondissent seulement quand elle nomme quelque chose d'important. make look donne une erreur pour une formule qui reste immobile, et pour une phrase « annuler » sans annulation à l'écran. Voir styles/clay.md.

  • Mouvement physique. Les choses bougent comme des objets : un bras tend la main, une balle tombe et rebondit, un bloc tombe et se stabilise, une impulsion se déplace. Pas d'accumulation de boîtes statiques.

  • Le même objet garde sa couleur dans chaque vidéo (le robot est toujours orange, la carte toujours jaune).

Si un storyboard enfreint l'un de ces principes, modifiez le storyboard avant d'écrire le code.

Règles strictes

  • Parallélisme par défaut (l'utilisateur l'a demandé, 2026-11-09). Tout ce qui peut s'exécuter en même temps le fait : une vidéo de 13 minutes a pris 3 heures quand chaque image était mesurée dans une seule page Chrome (un cœur occupé, GPU à 10 %). Le moteur mesure maintenant look, collide, review et stable dans plusieurs pages à la fois (le workers du rendu : la moitié des cœurs, au plus 8, et seulement autant que la mémoire libre le permet ;), et build exécute sheet, stable et review ensemble. Lorsque vous ajoutez une étape qui visite les images, répartissez-la aussi sur plusieurs pages (measureParallel, traceParallel, idParallel dans make.mjs). Dans votre propre travail : lancez les tâches indépendantes ensemble (un look et un auto-test, un rendu Manim et une vérification), et n'attendez jamais qu'une tâche se termine alors qu'une autre pourrait s'exécuter.

  • Faites la réflexion ici, dans la conversation principale. Vous écrivez le script, le storyboard et les scènes vous-même, car le contexte est ici. Ne confiez jamais ces étapes à un sous-agent : un sous-agent commence sans contexte. L'agent de script à l'étape 7 est la seule exception, et il démarre à froid intentionnellement.

  • Ne bâclez jamais l'explication principale. L'utilisateur apprend de ces vidéos. Suivez les règles de rythme dans reference/script.md et corrigez chaque AVERTISSEMENT de rythme.

  • N'inventez jamais un fait. Chaque nombre, formule et affirmation provient d'une source que vous avez vérifiée : le code de l'utilisateur, une fiche technique, une spécification, un article, la documentation. Listez-les dans storyboard.md. Signalez tout ce que vous n'avez pas pu vérifier.

  • « Votre cas » est facultatif. Ajoutez-le uniquement lorsque cette conversation ou ce projet contient vraiment un exemple correspondant (un bug que l'utilisateur a rencontré, un correctif, un nombre mesuré). N'en inventez jamais.

  • Pas de chevauchements. Aucun visuel ne peut en recouvrir un autre : texte sur texte, texte sur un graphique, ou un graphique qui en cache un autre. Chaque étiquette, formule, flèche et objet a son propre espace. check AVERTIT sur les textes qui se chevauchent, et review écrit chaque chevauchement mesuré dans overlaps.md. L'encombrement est du jugement de l'utilisateur, alors recherchez-le dans les images en taille réelle. Le passage d'identification aide : make look ajoute une image des espaces les plus serrés, et AVERTIT pour un texte à moins de 12 px d'une autre chose, du texte sur un dessin, un faible contraste de texte et un modèle que d'autres cachent. Corrigez chaque chevauchement avant make final.

  • Les sous-titres ont une seule ligne. Chaque réplique fait au maximum 42 caractères et deux répliques ne s'affichent jamais en même temps, donc un lecteur n'affiche jamais deux lignes. Le moteur le fait ; verify signale une réplique qui enfreint la règle. Ne modifiez pas SUB_MAX dans make.mjs pour faire tenir une réplique.

  • La boucle fermée (l'utilisateur a demandé cela, et le moteur l'applique). Après chaque édition : make look, lisez chaque image qu'il liste, corrigez ce que vous voyez, et regardez à nouveau. Ensuite seulement, construisez. Ne modifiez jamais et ne construisez jamais à l'aveugle, car une construction est longue et un look prend quelques secondes. Chaque image a un chiffre de VÉRIFICATION en haut à droite, et les portes ne s'ouvrent qu'avec les chiffres de toutes les images, dans l'ordre :

    1. Modifiez. Si vous avez changé script.md, exécutez make voice. Si la vidéo a des parties Manim et que vous avez changé manim_scenes.py ou la voix, exécutez make manim : make look dessine les images Manim, il ne les crée pas.
    2. make look <dir> : il mesure chaque scène modifiée sur chaque image, et dessine ses images proches et ses parties mobiles. Lisez-les toutes. Ensuite make look <dir> --ok <chiffres>. make build s'arrête sans cela. Une image avec les mêmes images et étiquettes qu'une déjà lue et confirmée affiche LU AVANT et n'a pas besoin de chiffre (--ok - quand chaque image est lue avant). Lisez chaque nouvelle image ; la même règle s'applique aux bandes.
    3. make build <dir>. Il s'arrête en cas de collision.
    4. Lisez chaque bande dans build/review/moving.md. Ensuite make look <dir> --moving-ok <chiffres>.
    5. make final <dir>. Il s'arrête si la source a changé après le look ou la construction, ou si une collision ou un chevauchement est ouvert. Exécutez chaque étape comme sa propre commande, arrêtez-vous à la première erreur, et confirmez qu'une modification a été appliquée.
  • Chaque lecteur vérifie les images proches et les parties mobiles. Tout agent ou session qui juge une vidéo lit les images proches de chaque partie modifiée, et toutes les images de chaque chose qui bouge : la mascotte et les objets, pendant tout leur mouvement. Un échantillon de la vidéo ne suffit pas : une main a traversé une table entre les images échantillonnées.

  • Un nouveau défaut obtient une barrière de protection. Lorsque l'utilisateur trouve un défaut, ajoutez-le d'abord à reference/faults.md et à engine/test/selftest.mjs, et confirmez que le test échoue sur ce défaut. Ensuite, corrigez la vidéo. Ne vous contentez pas de corriger la vidéo. Exécutez make selftest après chaque modification d'une vérification.

Ce que l'utilisateur a demandé (conservez-les)

Chacun a été demandé ou choisi à l'oreille. Le moteur les fait surtout automatiquement.

SujetQuoiAutomatique ?
VoixVoix intégrée de Chatterbox, ralentie à environ 160 mots par minute par engine/tts/slow-reference.wav ; chaque paragraphe lu d'une traite pour que le ton porteoui
Pauseschaque point exactement 0,6 s, chaque virgule au plus 0,3 s, définies à partir de la ponctuation du scriptoui ; voice AVERTIT si une pause n'a pas pu être placée
Mauvaises prisesune partie dont les mots diffèrent du script (vérification Whisper) est reprise avec une nouvelle graine, jusqu'à 3 fois ; la meilleure prise est conservéeoui ; AVERTIT si toujours incorrect
Passages rapidesune proposition plus de 1,3 fois le rythme habituel de la vidéo (les mots de symbole comptent double) est reprise ; l'utilisateur a trouvé « lambda v est v, multiplié par lambda » trop rapideoui ; AVERTIT « rapide » : donnez-lui sa propre phrase courte et un [pause]
Nombres négatifslisez « négatif », jamais « moins »voice s'arrête avec une ERREUR
Mots répétés« un un » obtient une virgule (« un, un »), ou la voix dérapeoui
Écritureparagraphes connectés ; [pause] seulement là où une idée se termine ou une animation joue. Rejeté : une pause après chaque phrase, phrases saccadées, voix rapide, voix étirée (étouffée), Kokorovous, voir reference/script.md
Musiqueaudible, régulière, environ 13 dB en dessous de la voix (musicVolume 0.37 ; l'utilisateur l'a augmentée de 3 dB par rapport à 0.26), baisse de volume douce ; deux pistes approuvées, current (par défaut) et lofi. Rejeté : pompage fort-doux, musique trop douce pour être entendue, 4 autres pistesoui ; vous choisissez la piste, voir SOUND.md
Effets sonoresle kit dans engine/sfx.mjs, approuvé à l'oreille ; le whoosh d'entrée 4 dB en dessous des autres accents (l'utilisateur l'a trouvé un peu trop fort). Activé pour les nouvelles vidéos (_render.sfx: true), désactivé pour les anciennesvous ajoutez s.sfx aux signaux ; le moteur les mixe
Audio48 kHz stéréooui ; verify le vérifie
Sous-titresdoux, jamais incrustés ; le mpv de l'utilisateur les affiche petits (sub-scale=0.7)oui
Une ligne de sous-titreune ligne par réplique, au maximum 42 caractères, pas deux répliques en même temps. L'utilisateur a vu deux lignes dans la vidéo 1 de l'ensemble ROS 2oui ; verify signale une réplique qui enfreint la règle
Pas de chevauchementsaucun texte ou graphique n'en recouvre un autrecheck AVERTIT pour les textes, overlaps.md et votre liste de vérification des images pour le reste
Lookun look 3D en pâte à modeler douce avec la mascotte silencieuse, et nos propres modèles ; parties Manim sur fond sombre pour les courbes et graphiques (l'utilisateur a demandé : ne forcez pas un graphique en clay)vous, voir les styles

Le système de couleur d'identification

Pour chaque objet qui porte un motif (pattern: ...) le moteur...

(Le contenu original a été tronqué ; je traduis le texte disponible dans sa totalité pour la version finale du skill.)

Skills associés