Communitygithub.com

marsik641/space-shorts

Étapes 2 à 4 du pipeline : produire un Short spatial vertical (≤ 30 s, EN uniquement) pour The Universe Inside Out — faits, brief visuel, script, plans, hero-shots et vidéo brouillon pour approbation, puis final via la file d'attente des deux PC de rendu jusqu'à la release (MP4 + publish_en.md) et fusion de la branche dans main. À utiliser pour « on fait la variante N », « /make-video », « lance la vidéo sur X », « prépare le package de téléchargement ».

Qu'est-ce que space-shorts ?

Ce skill orchestre les étapes 2 à 4 du pipeline de production de courts métrages spatiaux verticaux (9:16) pour la chaîne YouTube « The Universe Inside Out ». Il prend en entrée la sélection d'un utilisateur à partir d'un fichier d'idées (ou un objet nommé) et livre un master MP4 au format 1080x1920p60 ainsi qu'un fichier publish_en.md, le tout conforme à la définition du fait (DoD). Le processus est strict : les faits doivent être sourcés avec des références visuelles, un brief visuel « cinéma, pas infographie » est rédigé, le script (6-8 segments, 29-29.5 s, ~55-70 mots) est conçu en boucle, les plans sont générés avec au moins 3 profondeurs, des hero-shots sont produits pour validation, et la critique « Cinéma/wow » évalue chaque plan (score ≥ 8/10). Une fois approuvé, le rendu final est soumis via une file d'attente partagée entre deux PC, avec vérification automatique des trames, TTS, musique, assemblage et QA machine. En cas d'échec, le skill permet le re-rendu partiel, la reprise après pause, et la fusion finale dans la branche main. Il utilise des outils internes comme Blender (via file d'attente), Kokoro pour le TTS, et une bibliothèque spacekit pour les assets réutilisables. Compatible avec Claude Code et Cursor (via worktrees et commandes dédiées).

Compatible avec✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/marsik641/space-shorts/tree/HEAD/.agents/skills/make-video

Demander à votre IA préférée

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

Documentation

/make-video — étapes 2–4 : du choix à la release fusionnée

Entrée : sélection de l'utilisateur depuis le fichier ideas de cette worktree (« /make-video N » + modifications) ou un objet nommé par l'utilisateur. Sortie = DoD (AGENTS.md, « Pipeline des conversations ») : out/<ep>/release/ — master <ep>_en_1080x1920p60.mp4 et publish_en.md, deux fichiers — transmis à l'utilisateur ; QA visuel accepté ; tout commité ; branche fusionnée dans main (video_wt.py finish) ; worktree supprimée. Niveau exigé — docs/quality.md : du cinéma, pas de l'infographie ; les faits dans les mots, le spectacle dans l'image ; final en ≤ 6 h GPU. Uniquement EN, durée cible 29–29,5 s, maximum 30,0 s (docs/shorts_format.md). Liens : processus — docs/pipeline.md ; approbation — docs/approval.md ; package — docs/publish.md ; rôles — docs/workflows.md ; bibliothèque — docs/spacekit.md ; timing — docs/timings.md ; file d'attente — docs/render_queue.md ; agents, commits, pièges — AGENTS.md. Commandes : Git Bash depuis la racine de sa worktree ; <ep> = epNNN_<slug>.

Étape 0 — worktree, file d'attente, commits

  • Branche video/epNNN… après /next-video — continuer dedans. Conversation dans la copie principale sans /next-video — python tools/video_wt.py start → Claude EnterWorktree avec path / Codex workdir.
  • Blender, TTS, musique, assemblage — uniquement via la file d'attente : tâche soumise → la conversation continue le travail textuel.
  • Après chaque bloc — commit type(<ep>): … avec le traileur du modèle. Fin de tour — arbre propre.

Partie A — avant approbation

  1. Épisode. python tools/video_wt.py claim <slug> (slug — [a-z0-9_], ≤ 16, d'après le nom catalogue). Copier episodes/_template/ → episodes/<ep>/, dans episode.json — id = nom du dossier, languages: ["en"] (ne pas définir les chemins frames_dir/audio_dir). À la fin du fichier ideas : Sélectionné : N, <date>, modifications : …, épisode : <ep>. Commit feat(<ep>): épisode depuis la variante N.
  2. Faits : chercheur + vérificateur de faits (docs/workflows.md) → facts.md (chaque chiffre avec lien, références visuelles). Commit.
  3. Brief visuel visual_brief.md (rôle « Metteur en scène ») : références, premier plan, money shot, palette, lumière, caméra et événement de chaque plan, conventions, budget. Critique « Cinéma/wow » sur le brief → modifications. Commit.
  4. Script script_9x16.json (EN) : 6–8 segments, ancres at (s), 29–29,5 s (≤ 30.0 strict), ≈ 55–70 mots ; première phrase — accroche factuelle ; dernière ramène au début (boucle). en_cap — chiffres, | — sauts manuels (docs/pipeline.md, « Titres et sous-titres »). Voix de la chaîne — Kokoro af_heart ×0.98. Commit.
  5. Scène et plans. system.py (paramètres réels → écran, conventions — en docstring) ; manquant — modules spacekit/ (commit séparé feat(spacekit): …, régression tools/imgdiff.py). shots_9x16.py selon le brief : 6–10 plans de 2–5 s, chacun ≥ 3 profondeurs, clé + contre, halo/bloom, mouvement caméra, flou de mouvement, fond non vide (docs/quality.md). episode.json (montage, overlays en, sous-titres dans les zones sécurisées), music_cues.json (sa propre tonalité/mode/tempo). Collages — bout à bout, sur événements ; dernier plan = premier. Σ trames du montage ≤ 1799 à 60 fps. python tools/check_episode.py episodes/<ep>/episode.json. Commit.
  6. Aperçu du timing : python tools/render_queue.py submit preview episodes/<ep>/episode.json --with-tts, statut — status --json. Fiche out/<ep>/9x16/sheet_prev.png ; pas de Traceback/OVERRUN, présence FLASH/EVENT ; cue-list — python tools/cues.py episodes/<ep>/episode.json --logs out/<ep>/9x16/logs.
  7. Hero-shots : par plan submit preview … --hero --shots vN --frames F,F+1,F+2 (F — meilleur moment du plan ; 100 %, sans --samples — échantillons du code du plan, comme dans le final) → out/<ep>/9x16/hero/, sheet_hero.png. Aux critiques et au propriétaire — trame F ; d'après le log hero_vN.log — s/trame et ETA (docs/timings.md). Échantillons et effets lourds à ajuster dans shots_9x16.py (commit, hero à nouveau) pour que le final prenne 4–6 h, pas une heure.
  8. Critique (docs/workflows.md) : « Cinéma/wow » (note des plans 1–10, < 8 — refaire, jusqu'à 3 rounds), composition, rythme/accroche, faits (seulement 4 bloqueurs docs/quality.md) ; optionnel : unicité, son. Modifications → répéter 6–7. Rapports — fichiers dans l'épisode, commit par round fix(<ep>): corrections suite à critique, round K.
  9. Vidéo brouillon entière (docs/approval.md, 1a) : fonction draft dans les plans + preview_movie.py d'épisode via submit task. Non assemblée — à soumettre pour approbation sans elle, avec message « vidéo brouillon : non ».
  10. Approbation : message selon modèle docs/approval.md + fichiers (hero-shots, vidéo brouillon). Commit de l'état. Arrête-toi et attends la réponse. Modifications — retour à l'étape nécessaire.

Partie B — après « ok » : jusqu'au DoD (sans questions, sauf arrêts de docs/approval.md)

  1. Approbation dans l'historique. Cue-list et publish_en.md prêts selon docs/publish.md (conventions — en liste). Commit chore(<ep>): approuvé pour rendu (modifications de l'utilisateur — dans le corps).
  2. Final. python tools/render_queue.py submit final episodes/<ep>/episode.json --approved 'approbation utilisateur : date, contexte conversation'. Le drapeau enregistre le consentement déjà obtenu, ne le remplace pas. À l'utilisateur — id de la tâche, PC, ETA. Le worker choisit lui-même le PC, rend par portions de 120 trames et exécute framecheck, TTS, musique, mix, build_edit, assemblage, QA machine et release. La conversation peut se fermer.
  3. Statut et pannes. status --json (progression — cursor/steps ; les trames jusqu'à la fin de la tâche se trouvent dans l'instantané snapshot, pas dans out/<ep>/). failed — log de l'étape dans l'instantané ; panne temporaire d'environnement — retry JOB ; correction de code/script — cancel JOB, correction dans la worktree, si nécessaire nouvelle approbation, nouvelle tâche. Framecheck FAIL — analyser RERENDER, supprimer les mauvaises trames dans l'instantané (et sur le remote), retry JOB --rerender-shots vN. pause/resume — entre les portions. Ne pas tuer le bash parent.
  4. QA visuel. needs_review = vérifications machines et package prêts. PNG out/<ep>/9x16/qa_en/ et master : pas moins bien que les hero-shots (bruit, flou, surexposition, scintillement), zones sécurisées, sous-titres, désynchronisation, boucle. Propre — python tools/render_queue.py accept JOB ; défaut — correction et nouvelle tâche.
  5. Transmission. Les deux fichiers out/<ep>/release/ à l'utilisateur (Claude — SendUserFile). Les sources ont changé pendant le rendu — comparer publish de l'instantané et JSON de montage avant le commit.
  6. Comptabilité. episodes/INDEX.md (plans, techniques, voix, tonalité, accroche), tableau des épisodes dans README.md, ✅ sujets dans docs/channel.md, mesures s/trame dans docs/timings.md, leçons — dans les docs de profil. Commit docs(<ep>): comptabilité et leçons (code épisode, edit_9x16_en.json, publish_en.md ; sans out/).
  7. Fusion. python tools/video_wt.py finish — propre → release → accept → git merge main → check_episode et tests → ff main → out/<ep>/ transféré dans la copie principale. Conflit — résoudre dans la worktree, commit, répéter. Puis sortir de la worktree (Claude — ExitWorktree keep) et depuis la copie principale python tools/video_wt.py remove epNNN ; ne pas supprimer la worktree de l'application (start --here). C'est seulement maintenant — « prêt ».

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés