git2video — vídeo de lançamento a partir do histórico real do Git
Lê o histórico real de commits de um repositório Git e produz um vídeo de lançamento preciso e polido: coletar → storyboard → validar → renderizar → qa → entregar. Funciona 100% localmente (Node ≥ 22, ffmpeg, Playwright Chromium — verifique com doctor primeiro). Sem uso de rede durante a renderização; segredos são removidos de diffs; e-mails nunca aparecem na saída.
skills/git2video/scripts/doctor.mjs # verifica o ambiente, corrige linhas com MISSING
scripts/collect.mjs # git -> story.json (commits agrupados, breaking changes, estatísticas, hunks sanitizados)
scripts/validate.mjs # storyboard sem áudio deve passar antes da renderização
scripts/render.mjs # storyboard -> video.mp4 (+ webm/gif), layout-audit.json
scripts/qa.mjs # gate scriptado: report.json + report.md em out/qa/
references/storyboard-guide.md # tipos de cena, formatos de dados, regras de escrita — leia antes de criar
references/faq.md # solução de problemas
Fluxo de trabalho
1. Coletar o histórico.
node skills/git2video/scripts/collect.mjs --repo <dir-do-repo> --out /tmp/g2v/story.json \
[--from <tag|sha|YYYY-MM-DD>] [--to HEAD] [--max-commits 400] [--include-contributors] [--gh]
Padrão: última tag → HEAD; sem tag: últimos 30 dias. Leia /tmp/g2v/story.json após.
2. Criar storyboard.json (você, o agente — leia references/storyboard-guide.md primeiro). Regra geral para um vídeo de lançamento de 30–45s:
título (3–4s) → destaques (5–8s) → diff (5–8s) → estatísticas (4–5s) →
cronologia (opcional 4–6s) → breaking changes (3–5s, apenas se houver) →
contribuidores (3–5s, apenas com --include-contributors) → encerramento (3–4s)
Cada cena possui: id, type, duration (0.8–15s), narration
(≤ 2 frases; legível no tempo a 0.35s/palavra), source (SHAs dos commits que
comprovam as afirmações), data (específico do tipo — formatos no guia). As afirmações devem
ser rastreáveis até story.json — não invente nada.
3. Validar.
node skills/git2video/scripts/validate.mjs --storyboard /tmp/g2v/storyboard.json \
--story /tmp/g2v/story.json
Corrija todos os erros antes de renderizar. Aumente a janela de duração total para uma demonstração com
--min/--max apenas quando o usuário solicitar um clipe curto de teste.
4. Renderizar.
node skills/git2video/scripts/render.mjs --storyboard /tmp/g2v/storyboard.json \
--out /tmp/g2v --preset 16:9 --fps 30 --theme dark [--formats mp4,webm,gif]
Presets: 16:9@1920, 9:16@1080, 1:1@1080. Temas: dark (padrão), light, neon. Renderizações são determinísticas em uma máquina; ~2–4 min para um vídeo de 40s a 30fps. v0.1 é silencioso: a narração é queimada como legendas automaticamente.
5. QA (scriptado, não por intuição).
node skills/git2video/scripts/qa.mjs --storyboard /tmp/g2v/storyboard.json --out /tmp/g2v
Leia out/qa/report.md. PASS → entregue. FAIL → veja os detalhes em report.json, corrija o storyboard, re-renderize, execute o qa novamente. Máximo de 3 loops de correção. Depois disso, relate honestamente o que ainda falha e por quê.
6. Entregar. Informe ao usuário: o caminho absoluto de video.mp4 (+webm/gif), o veredito
do QA em uma linha, quaisquer resquícios do 3º loop e ofereça: outro preset (vertical),
variantes de tema (light/neon) ou um GIF para incorporação no README (--formats gif).
Regras rígidas
- Nunca invente commits, estatísticas ou diffs: o
sourcede cada cena nomeia SHAs reais do story.json. Se o histórico não suportar um tipo de cena, pule a cena. - Nunca coloque e-mails de contribuidores na saída; apenas nomes com --include-contributors.
- Não edite arquivos em skills/git2video/templates/ ou scripts/ durante a renderização; o mecanismo determinístico + QA os pressupõem. Alterações de cenas/temas/estilos de assets apenas como trabalho separado e declarado.
- Prefira menos cenas precisas a preenchimento; mantenha a narração ≤ 2 frases.