Communitygithub.com

sourceframe

Vídeos explicativos com qualidade de engenharia, construídos como diagramas animados em Remotion e three.js, onde cada número na tela é lido de uma fonte ou calculado pela build. Use quando for solicitado um vídeo explicativo, uma demonstração técnica, um diagrama animado, um vídeo para LinkedIn ou redes sociais sobre como algo funciona, ou 'faça um vídeo sobre X', especialmente quando a precisão for importante. Abrange captação, briefing, livro de fatos, direção de arte, contrato de layout, animação orientada por quadros, assets 3D processuais, verificação medida, codificação e entrega. Transfere para a habilidade cuelab para som.

O que é sourceframe?

A habilidade **sourceframe** fornece uma metodologia completa e rigorosa para a criação de vídeos explicativos técnicos de alto nível, utilizando Remotion e three.js. Diferente de outras abordagens, ela trata a produção do vídeo como um projeto de engenharia: começa com a coleta de requisitos, um 'livro de fatos' que verifica cada afirmação, e um contrato de layout que garante legibilidade em múltiplas plataformas. O nome 'sourceframe' reflete a regra central: cada quadro do vídeo pode ser rastreado até uma fonte verificável, seja um dado de um documento, uma RFC ou um valor computado pela própria build. A habilidade é ideal para criar vídeos que explicam mecanismos com estados mutáveis (como bits sendo alterados, ponteiros se movendo ou hashes se propagando), sendo perfeita para demonstrações de protocolos, algoritmos, arquiteturas de sistemas ou análises pós-morte. Ela é compatível com as plataformas Remotion e three.js, e é expressamente contraindicada para vídeos de opinião, anúncios ou conteúdo baseado em aparência sem substância. O método é dividido em dez fases, desde a captação inicial até a entrega, com ênfase em verificação automática, design determinístico e honestidade sobre o que foi ou não verificado.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/endlessconflict/sourceframe/tree/HEAD/skills/sourceframe

Perguntar na sua IA favorita

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

Documentação

O que sourceframe faz?

Um método para fazer um vídeo da mesma forma que você construiria um sistema: requisitos primeiro, um livro do que é verdade, um contrato de layout, pequenos passos verificados, medição antes da opinião. O produto é um vídeo curto, silencioso primeiro (15 a 90 segundos) que explica um mecanismo seguindo um elemento focal através dele. O nome é a regra: cada quadro remonta a uma fonte.

Esta habilidade foi destilada de uma construção real (um vídeo explicativo de 77 segundos sobre como o coreboot executa código C antes da DRAM existir, com uma grade de cache de 4.096 células, um chip flash 3D e treinamento de DRAM) e reprovada em um segundo assunto não relacionado (examples/merkle-proof, uma prova de inclusão Merkle cujo cada hash é computado pela build). Os caminhos abaixo são relativos à pasta desta habilidade.

Quando usar, quando não usar

Use para: vídeos de "como funciona", demonstrações de protocolos ou algoritmos, tours de arquitetura de sistemas, sequências de "o que acontece quando", reconstituições de pós-morte. Ele brilha quando o assunto tem um mecanismo com um estado que muda (bits mudam, um ponteiro se move, um hash se propaga).

Não use para: edições de cabeça falante ou filmagens, anúncios de produtos, branding de movimento puro, qualquer coisa onde o conteúdo é opinião em vez de mecanismo. Para esses casos, use uma habilidade de movimento simples. Se o usuário quiser apenas um carrossel estático, use uma habilidade de carrossel.

Os sete princípios

  1. Livro antes dos pixels. Escreva FACTS.md (afirmação, evidência, status) antes da primeira cena. Status V lido de uma fonte nesta sessão, C computado pela build, S esquemático e rotulado na tela, H memória (reverificar), N precisa de fonte (bloqueia o envio). Nunca invente um número, um símbolo, um caminho, uma versão. Prefira C: deixe a build computar o que o vídeo mostra.
  2. Um elemento focal. Uma coisa por quadro é a âncora do olho: ela recebe a única cor de "foco", é sempre a etapa atual e nunca compete com uma segunda. Tudo o resto é mais silencioso por construção.
  3. Cor é significado. Os papéis da paleta (data, focus, ok, bad, ink) são semânticos e fixos para todo o vídeo. Nunca escolha um tom por estética.
  4. Determinismo. Um quadro é uma função pura do seu número de quadro. Sem tempo de relógio, sem Math.random, sem transições CSS, sem useFrame. Use hash(n) com semente para qualquer coisa pseudoaleatória. Isso é o que torna possível a renderização paralela, imagens estáticas e sincronização de som posterior.
  5. A imagem é o instrumento. A animação existe para mostrar uma mudança de estado. Cada movimento responde "o que isso mostra?". Proibido: o mesmo fade-up em todos os blocos, easing quicante ou elástico, decoração em loop, brilho por si só.
  6. Meça primeiro, veja depois. Números são baratos e exatos; opiniões são caras. Verifique tipos, faça lint do livro, sonde o contêiner, meça pixels onde puder, depois veja uma folha de contato por rodada.
  7. Regras de parada. Máximo de três rodadas de revisão por conjunto de cenas, máximo de três correções por rodada. Diga o que sobrou e por que parou. Honestidade supera polimento: rotule o que não foi verificado.

As dez fases

Cada fase tem uma entrega e um portão. Não pule um portão para economizar tempo: os erros caros estão todos a montante.

#faseentregaportão
0captaçãoverificação de ajuste em uma linha, plataforma, duração, silencioso primeiro ou com sompergunte apenas o que bloqueia o trabalho (uma pergunta), caso contrário decida e afirme
1briefingBRIEF.md seções 1 a 3a conclusão cabe em uma frase; o elemento focal pode ser nomeado em uma frase
2evidênciaFACTS.md preenchido para cada afirmação planejada; scripts de computação para linhas Ctools/ledger_lint.py passa; nenhuma linha N
3direçãolista de exclusão, frase ideia, momento marcante, tokens theme.tsteste do concorrente aprovado (veja references/02-direction.md)
4storyboardtabela: cena, segundos, o que se move, legenda, linha do livro; timeline.jsonorçamento de legenda cumprido; duração total justificada
5fundamentosprojeto scaffolded, fontes, tema, concha, câmera, pré-visualização abreuma imagem estática renderiza; WebGL funciona (veja armadilhas: comprimento do caminho)
6construçãocenas, as mais difíceis e centrais primeiropor cena: imagens estáticas, uma folha de contato, no máximo 3 correções
7assetsassets 3D e de ícone, processuais a menos que uma fonte licenciada seja necessáriatodo logotipo ou marca usado inalterado e creditado
8verificaçãorenderização completa, codificação, sonda, folha de quadros, lint do livrotodas as verificações automáticas verdes; folha revisada; falhas listadas
9entregamp4, quadro de capa, texto da legenda, texto alternativo, créditos, lista "não verificado"o usuário pode publicá-lo sem perguntar o que é verdade

Fase 0: captação

Afirme em uma linha o que você fará: Lendo isto como: <meio> para <leitor>, <elemento focal>, <duração>. Faça uma pergunta apenas se a resposta mudar o que você constrói (plataforma e proporção de tela; se o som virá depois; quais fontes são autoritativas). Canvas padrão 1080 x 1350 (4:5) a 30 fps para feeds sociais; veja references/08-adapting.md para 16:9, 1:1, 9:16.

Fase 1: briefing

Copie templates/starter/BRIEF.md. Preencha a intenção (meio, leitor, conclusão, elemento focal, clima). A conclusão deve ser uma frase que um espectador possa repetir. Se você não conseguir nomear o elemento focal em uma frase, você ainda não tem um vídeo: decida e diga isso, ou faça uma pergunta.

Fase 2: evidência (a parte que a maioria dos vídeos pula)

  1. Identifique as fontes primárias (especificação, RFC, árvore fonte, folha de dados, página de manual, saída medida). Leia as linhas exatas que você citará. Registre arquivo:linha ou URL mais seção.
  2. Para cada número, pergunte: a build pode computá-lo? Se sim, escreva um script que o computa, o verifique de uma segunda maneira, aborte em caso de discordância e escreva um módulo gerado que as cenas importam (examples/merkle-proof/scripts/compute.mjs é o modelo: recursão RFC versus build iterativa devem concordar ou nada é escrito).
  3. Qualquer coisa que não possa ser fonte torna-se um esquemático rotulado (S, e a palavra "esquemático" aparece na tela) ou é cortada. [PRECISA DE FONTE] visível é permitido em rascunhos, nunca na renderização.
  4. Dados ilustrativos são legais quando honestos: itens de exemplo inventados são mostrados como texto de exemplo simples e registrados como S.
  5. Execute python tools/ledger_lint.py como um alarme: todo dígito em uma string de cena deve aparecer no livro.

Formato completo e exemplos: references/01-brief-and-ledger.md.

Fase 3: direção

Escreva a frase ideia: "Neste vídeo, [algo que pertence ao assunto] torna-se [o dispositivo]." Execute o teste do concorrente: se um vídeo genérico sobre o tópico pudesse usar a mesma frase, é uma ideia de categoria, não uma ideia. Escolha um momento marcante (o único movimento forte) e a lista de exclusão (as três visualizações mais óbvias, agora proibidas: tipicamente uma pilha de retângulos com setas, uma captura de tela, um objeto centralizado em um gradiente). Defina os dials: variância, intensidade de movimento, densidade, cada um de 1 a 10, a partir do assunto (um explicador de segurança para engenheiros é calmo e denso; um teaser de lançamento não é nem um nem outro). Detalhes e regras de coreografia em references/02-direction.md.

Fase 4: storyboard e temporização

Uma tabela: cena, segundos, o que se move, legenda, linha do livro. Orçamentos que se sustentaram na prática:

  • legenda no máximo 2 linhas e 14 palavras, mínimo de 48 px em um canvas 1080 (um telefone mostra o canvas a cerca de 0,36x, então 48 px são cerca de 17 pt); rótulos com pelo menos 26 px;
  • uma legenda fica pelo menos palavras / 2,6 + 0,8 segundos, nunca substituída no meio da frase;
  • uma ideia por cena; uma cena com mais de 12 s precisa de batidas internas (etapas) com sua própria legenda;
  • a peça inteira é uma ideia contada uma vez: corte qualquer cena cuja remoção não perca uma linha do livro.

Escreva a ordem das cenas e as durações apenas em timeline.json. Remotion, os scripts de verificação e o pipeline de som do cuelab leem todos esse mesmo arquivo.

Fase 5: fundamentos

node scripts/scaffold.mjs <diretório-destino> --install

Depois: edite src/theme.ts (paleta, canvas), coloque fontes em public/fonts, defina BRAND em src/ui/Chrome.tsx, edite timeline.json. Mantenha o caminho do projeto curto (veja armadilhas: ANGLE precisa de um caminho curto no Windows). Renderize uma imagem estática de uma cena 3D antes de escrever mais: se o WebGL falhar agora, falhará depois.

Fase 6: construção, cena por cena

Ordem: a cena marcante primeiro (o 3D ou grade difícil), depois as cenas que dependem dela, depois cenas de conexão. Por cena:

  1. escreva a cena contra o contrato de layout (references/03-layout-contract.md) usando Shell, tokens e os ajudantes de animação;
  2. bash tools/shots.sh <Cena> out/<cena> <quadros...>: escolha quadros no início, meio do movimento e repouso de cada batida, uma folha de contato;
  3. leia a folha uma vez, responda: primeira/segunda/terceira coisa vista? elemento focal onde pretendido? algo genérico? o que cortar? Corrija no máximo três coisas; refaça apenas os quadros alterados;
  4. quando a cena estiver estável, prossiga. Não polir a cena 2 enquanto a cena 6 não estiver construída.

Padrões de animação que funcionam (revelações de linha mascaradas, linhas escalonadas, embaralhamento de hash, inversão de bits, rótulos projetados em 3D, grades instanciadas) estão em references/04-remotion-patterns.md; receitas 3D em references/05-three-assets.md.

Fase 7: assets

Prefira assets processuais: eles são determinísticos, pequenos, tematizáveis e não apresentam risco de licença. Caixas foil, logotipos extrudados, grades de células instanciadas e campos de pontos cobrem a maioria dos explicadores. Use malhas geradas por IA apenas quando um objeto orgânico ou de marca for essencial e a licença e o custo do serviço forem aceitáveis para o usuário; nunca esconda que um asset foi gerado. Logotipos e marcas reais: use o arquivo do próprio projeto inalterado (recolorir uma marca de uma cor geralmente é aceitável; redesenhar não é), verifique a licença, credite na tela ou na legenda.

Fase 8: verificação

Automática, nesta ordem (do mais barato ao mais caro):

npx tsc --noEmit                 # tipos
python tools/ledger_lint.py      # números vs livro
bash tools/shots.sh Main out/m <quadros>   # folha de contato, olhe uma vez
npm run render && npm run encode          # renderização bruta, depois yuv420p h264 de alcance limitado
                                          # encode.sh termina executando tools/probe.py

tools/probe.py verifica codec, yuv420p (não yuvj420p), tamanho, fps, duração contra timeline.json, alcance limitado, sem quadros pretos, átomo fast-start. Depois olhe uma folha do mp4 final (quadros a cada 4 s, extraídos com ffmpeg) e em um quadro em tamanho real para nitidez do texto. Se um crítico de design estiver disponível (por exemplo, a habilidade creator-critic), execute-o em uma pasta de imagens estáticas: trate bloqueadores como bloqueadores e maiores como perguntas. Lista de verificação completa: references/06-verification.md.

Fase 9: entrega

Entregue: out/video.mp4, um quadro de capa (um quadro de repouso onde o título e o elemento focal são legíveis), rascunho de legenda (simples, sem hype, fonte nomeada), texto alternativo (uma frase sobre o que o vídeo mostra), créditos (assets, logotipos, licenças) e uma lista "não verificado" (qualquer coisa no status do livro H ou S, qualquer coisa que a build não possa provar, qualquer coisa que você não tenha conseguido revisar a olho). Não publique nada você mesmo.

Escolhendo entre opções (tabelas de decisão)

perguntaescolhaporque
2D ou 3D para um elemento3D apenas quando profundidade ou forma física é o ponto (um chip, uma pilha, um campo de um milhão de itens); caso contrário 2D3D custa tempo de renderização e legibilidade; use-o onde explica
câmeraortográfica, manual = true, fixa por cenaortho mantém rótulos projetáveis e medidas honestas
rótulos em 3DHTML ou SVG projetado com project()texto permanece nítido e estilizado
muitas células repetidasInstancedMesh (milhares) ou Points (um milhão)chamadas de draw
fontesno máximo duas famílias, OFL ou licenciadas, empacotadas em public/fontsdeterminismo, sem rede na renderização
texto em laje ou preenchimentotexto escuro em preenchimentos claros, nunca branco sobre clarocontraste
somprojete-o depois que a imagem estiver bloqueada, a partir de timeline.jsonveja a habilidade cuelab

Modos de falha que este método existe para prevenir

O vídeo bonito mas errado (sem livro); o vídeo correto mas ilegível (sem contrato de layout); o vídeo genérico (sem frase ideia, sem lista de exclusão); o vídeo que parece bom no estúdio e quebra na renderização (não determinismo); o vídeo que parece bom a 100% e é uma bagunça no telefone (pisos de tipo, teste de miniatura); o vídeo que não pode ser pontuado (sem timeline única); o vídeo cujas afirmações ninguém pode verificar (sem honestidade na entrega). Bugs concretos encontrados durante a construção dos dois primeiros vídeos, cada um com sintoma, causa e correção, estão em references/07-pitfalls.md; leia-o antes de depurar qualquer coisa que pareça mágica.

Arquivos nesta habilidade

caminhoo que
references/01-brief-and-ledger.mdmodelo de briefing, formato do livro, como computar e verificar fatos
references/02-direction.mdfrase ideia, lista de exclusão, dials, regras de coreografia, tokens de movimento
references/03-layout-contract.mdcanvas, áreas seguras, pisos de tipo e a aritmética de escala de telefone
references/04-remotion-patterns.mdpadrões de animação testados com código
references/05-three-assets.mdthree.js no Remotion: câmera, shader foil, bordas, instanciação, pontos, extrusão, projeção de rótulo
references/06-verification.mda escada de verificação completa, protocolo de folha de contato, codificação e sonda
references/07-pitfalls.mdtodos os bugs reais encontrados, com correções
references/08-adapting.mdoutras proporções de tela, temas, idiomas, variante sem 3D, transferência para som
templates/starter/um projeto Remotion funcional: tema, ajudantes, cromo UI, kit three.js, ferramentas, modelos BRIEF e FACTS
scripts/scaffold.mjscopia o starter para um novo projeto e instala
../../examples/merkle-proof/um exemplo completo de 36 s com fatos computados, livro, renderização e sonda

Nota de licença que você deve transmitir

Remotion não é MIT. É gratuito para indivíduos e para equipes de até três pessoas; empresas acima disso precisam de uma licença paga (o CLI do Remotion imprime o aviso, veja remotion.pro/license). Informe o usuário uma vez, no início, quando o projeto pode ser comercial. three.js, React e as fontes empacotadas (SIL OFL) são permissivas.

Habilidades Relacionadas