Communitygithub.com

remotion-gotchas-index

Índice de erros: sintomas → localização da correção, correções curtas inline, correções longas apontam para skills especializadas. Verifique primeiro quando houver falhas de renderização, aparência incorreta ou problemas de layout. Palavras-chave: erro, falha, armadilha.

O que é remotion-gotchas-index?

Este skill é um índice centralizado de problemas comuns (gotchas) encontrados ao trabalhar com o ecossistema Remotion, organizado por sintomas e categorias (renderização, design, engenharia de workflow, etc.). Ele serve como um ponto de entrada de depuração: cada entrada lista um sintoma, sua causa raiz e um link direto para a correção (inline ou para outro skill especializado, como `remotion-design-system` ou `remotion-assembly`). O índice contém regras rigorosas para evitar que correções fiquem soltas e para garantir que soluções sejam validadas visualmente por humanos. Ele também inclui um 'mapa de minas' de riscos potenciais que ainda não foram encontrados, mas são conhecidos pela comunidade. Suporta todos os workflows do Remotion e é essencial para desenvolvedores que usam ferramentas como Claude Code ou Cursor para montagem de vídeos, garantindo que diagnósticos sejam rápidos e precisos, evitando retrabalho. A lista prioriza categorias como 'congelamento/falha de renderização', 'falsos positivos do QC', 'workflow de engenharia', entre outros, com uma navegação em árvore para localizar rapidamente a entrada correta.

Funciona com~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/jincheng2026/jc-remotion-skills/tree/main/skills/remotion-gotchas-index

Perguntar na sua IA favorita

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

Documentação

Índice de Erros (Sintoma → Localização da Correção)

Regra: Cada erro é arquivado após correção e inspeção visual humana. Correções com skill profissional associado são escritas nesse skill, aqui fica apenas o ponteiro; correções sem skill próprio (fluxo de engenharia/pipe de renderização) podem ter a correção curta inline (para ver a correção de um relance, sem pulo), mas com mais de cinco linhas deve ser movida para um arquivo profissional e depois alterada de volta para ponteiro. Este arquivo não deve ultrapassar 150 linhas; se ultrapassar, mova a correção inline mais longa primeiro.

Navegação por Família (Primeiro identifique a família, depois consulte o item, evite pular entre itens parentes próximos):

  • Família de Renderização Travada/Suspensa/Desaparecida: Primeiro execute o autoteste inicial render-service.cjs (a partir de 2026-07-24, ele intercepta automaticamente #37 volume public, #38 falha de assinatura, chrome não abre e usa o Chrome do sistema como fallback); se o autoteste passar e ainda travar → siga para #23 deadlock de concorrência → #25 dataless → #26 coleta do harness → #24 pacote npm corrompido.
  • Família de Falso Positivo QC: #29 caixa fantasma (portão null) / #31 fonte inchada na inicialização a frio (isenção qcAllow) / #32 caixa Place estica altura (inspeção visual, liberar como falso); QC reportar "zero violações" primeiro verifique a cobertura (#35).
#CategoriaSintomaLocalização da Correção
01RenderizaçãoChinês muda silenciosamente para Song / funciona às vezes, às vezes nãoremotion-design-system §6 #01 (fonts.ts + FontGuard)
02Fluxo de Engenhariaremotion still sai 〇, a imagem não muda após alterar o códigoremotion-design-system §6 #02
03Fluxo de EngenhariaImagem de comparação em miniatura julga erroneamente detalhes de fonteremotion-design-system §6 #03
04Renderização\uXXXX em propriedades JSX aparece literalmente (ex.: icon="✅")remotion-design-system §6 #04
05DesignA réplica do placeholder desenhado pelo componente "parece bem diferente"remotion-design-system §0 Regra de Ferro 4 (material real como corpo principal)
06RenderizaçãoTexto gradiente com backgroundClip:text fica escuro na saídaremotion-design-system §6 #06 (cor sólida + textShadow)
07DesignBloco de cor plana / fundo preto plano / logo falso parecem baratosremotion-design-system references/texture.md (bloco gel + glow + vinheta + logo real)
08ExportaçãoBordas de texto MG com auréola/borrão, "qualidade do MG piorou"remotion-design-system §6 #08 (config fixa jpeg100+crf15)
34Estética de DesignUsuário diz "não é sofisticado / grosseiro / parece erro / não natural / não fluido / não suave"design-system references/motion.md "Cinco Leis da Suavidade" — Tabela de Atribuição: ① Esqueleto pré-montado (estrutura não mencionada aparece antes) ② Por evitar, corta itens contínuos ③ Borda corta ou fica suspensa deixando lacuna (>2px é descontinuidade) ④ Movimento uniforme sem desaceleração para parada ⑤ Estado muda instantaneamente como um todo. Verifique item por item, proibido ajustar parâmetros por intuição; ao corrigir um, cuidado para não pisar em outro (0722-01 corrigiu "linha não atravessa círculo" mas pisou em "cortar" + "expor esqueleto", retrabalho de duas rodadas)
09Fluxo de EngenhariaRenderização longa desaparece no meio / mp4 corrompido / pgrep julga erroneamente processo vivoremotion-design-system §6 #09 (desanexar nohup + reconhecer linha + de log)
10Montagem de Filme LongoCena nua / longa paralisia, MG todo comprimido na esquerda sem impactoremotion-design-system references/layout.md (takeover/momento do protagonista) + remotion-assembly references/rhythm.md (auditoria de densidade)
11Efeito SonoroFilme inteiro sem som / som soterrado inaudível / volume não atinge padrãoremotion-assembly references/audio.md (normas de volume + loudnorm masterização)
12Montagem de Filme LongoElemento parado após entrada parece rígido / capítulo corta abruptamente em um frame sem saídaremotion-design-system references/motion.md (Breathe + disciplina de saída useExit)
13DesignTexto em fundo claro fica cinza ilegível (texto nu sobre placa branca)remotion-design-system §0 Regra 5 + references/texture.md
14Montagem de Filme LongoCabeçalho/linha de sobrancelha no canto superior esquerdo sobrepõe textoremotion-design-system references/layout.md (posição mutuamente exclusiva do cabeçalho)
15LegendasQuebra de palavra na legenda / fragmento de inglês / sem fundoremotion-assembly references/subtitle.md (corte semântico + caixa de fundo + script de verificação)
16Captura de MaterialRéplica desenhada à mão do produto "não fica boa por mais que se ajuste"remotion-assembly references/broll.md §0 Preâmbulo (sintetizador não é prancheta; quatro níveis de material + pipeline de coleta e edição)
17Montagem de Filme LongoIA diz que parece bem, mas usuário vê que é muito diferente (ponto cego de frame estático / miniatura engana)remotion-assembly SKILL §2.5 Oficina Segmentada (medir antes de codificar + revisão dinâmica do usuário)
18Captura de MaterialTrecho de material parece "colado", não se integra ao filmeremotion-assembly references/broll.md Etapa 5 do pipeline (camada de uniformização de cor)
19Temporização de AnimaçãoEntrada do filme inteiro arrastada como PPT / duração do efeito não corresponde ao designremotion-design-system references/motion.md §0 (quadros escritos em 60fps mas a composição é 30fps; converter segundos para quadros primeiro)
20DesignTamanho de montagem "não importa quanto ajuste, parece menor que a referência"remotion-design-system references/specs.md (consulte a tabela de especificações antes de codificar, proibido estimativa visual)
21Efeito SonoroEfeito sonoro soa barato/fraco, tanto a síntese quanto a amostra de referência são rejeitadasremotion-assembly references/audio.md Regra 8 (solução correta = biblioteca profissional de efeitos sonoros: cache do剪映 → @remotion/sfx → Mixkit → CC0 → pacotes comerciais; qualidade deve ser aprovada pelo usuário em uma lista de audição, IA pode apenas filtrar defeitos de espectro)
22Fluxo de EngenhariaÁudio e vídeo dessincronizam cada vez mais em vídeos de audição/montadosremotion-sfx SKILL §2 Regra de Montagem (proibido montagem com -c copy e -shortest: pequenas diferenças de duração se acumulam em deriva; deve-se travar comprimento igual + recodificação completa)
23Fluxo de EngenhariaRenderização trava/excede tempo limite inexplicavelmente, repetidas tentativas repetem a travaProibido concorrência de renderização no mesmo projeto (alerta de zona de mina "concorrência quebra" confirmado): múltiplas sessões/processos órfãos colidem em deadlock. Diagnóstico = ps -o etime,pcpu (etime muito maior que o esperado + CPU 0% contínuo = morto, mate); timeout da ferramenta só mata bash, deixando node órfão causando colisão em cadeia; renderização deve ser com nohup em segundo plano real + reconhecer linha + de log (mesma família do erro #09); antes de renderizar, verifique o campo, mas o modo de verificação deve evitar auto-match: `pgrep -f "remotion render
24Fluxo de EngenhariaRenderização reporta Named export not found/plugin is not a function e outros erros internos de pacoteInstalação concorrente de npm pode corromper pacotes (múltiplas sessões npm i simultâneas / processos se matam interrompendo escrita): sintoma = require retorna export vazio, TypeError interno da árvore de dependências; correção = pacote corrompido rm -rf node_modules/<pacote> + npm cache clean --force + reinstalar, corrupção múltipla diretamente rm -rf node_modules && npm ci (primeiro mova o binário do navegador em node_modules/.remotion para fora para proteger, depois exclua); disciplina = permitir apenas uma sessão manipulando npm no mesmo projeto por vez
25Fluxo de EngenhariaRenderização permanentemente travada em porcentagem fixa do Bundling, árvore de processo 0% CPU, trocar Node/reinstalar dependências não adiantaArquivo de material foi despejado pelo serviço de sync em casca dataless vazia (2026-07-16 caso sangrento: App de sync de terceiros ao desinstalar despejou 747MB de material principal, bundle copiar public/ leu arquivo bloqueado permanentemente, renderização em cadeia travou a noite toda). Diagnóstico = ls -lO public/** veja flag dataless; correção = restaure entidade do original/fonte de download (brctl inútil para provider já desinstalado); prevenção = verifique dataless na entrada de material (broll.md 2b), projeto não coloque em diretório gerenciado por sync. Variante (2026-07-28, iCloud despejou node_modules): CLI/Studio inicia e trava silenciosamente em 0% CPU, nem número de versão aparece ("Otimizar Armazenamento do Mac" despejou arquivos de dependência, pacote @remotion com quase 10k dataless, require espera download da nuvem); correção = reinstalar dependências em diretório entidade node_modules.nosync/ + link simbólico homônimo (nome *.nosync impede iCloud de sincronizar, cura recorrência); diretório antigo deve ser movido para fora da árvore do projeto (para ../.trash/) — renomear dentro do projeto causa varredura recursiva pelo watcher do Studio, segunda trava
26Fluxo de EngenhariaProcesso de renderização "desaparece do nada" com o fim da rodada do subagente/agent, não é deadlock de concorrência (#23) nem interrupção no meio da renderização longa (#09)Quando a rodada do subagente termina, o harness coleta sua cadeia de processos filhos que estão em primeiro plano ou não foram completamente desanexados → renderização é morta no meio deixando fragmentos. Correção pertence à família #09: iniciar renderização deve desanexar completamente do shell pai (nohup + run_in_background/setsid, redirecionar todos os fds); julgar conclusão apenas pela linha +/linha final do log, não se o agent ainda está vivo; iniciar renderização longa dentro do subagente é especialmente fatal (limite da rodada = morte do processo); quando necessário, divida em "iniciar renderização desanexada nesta rodada → reconhecer log na próxima rodada"
27Fluxo de EngenhariaEntrada .mjs/ESM do serviço de renderização import '@remotion/renderer' reporta does not provide an export named 'Fragment'Quando package.json não tem type:module, carregar renderer com entrada ESM aciona falha de interoperabilidade react/jsx-runtime em sua construção ESM (confirmado no Node 24); correção = script de serviço mude para .cjs + require para contornar pela construção CommonJS (evidência: anotação no topo de scripts/render-service.cjs)
28Fluxo de Engenharia<Sequence layout="none" premountFor={N}> passa por tsc mas reporta premountFor não existe/tipo incompatívelSequenceProps do Remotion é união discriminada: premountFor é válido apenas no branch padrão/layout:"absolute-fill" (AbsoluteFillLayout), o branch {layout:"none"} não tem esta propriedade (tipo ver LayoutAndStyle em node_modules/remotion Sequence.d.ts). Correção = mídia que precisa de premount deve ser envolvida em Sequence de layout padrão (não escrever layout ou escrever absolute-fill); quando precisar de layout="none" para posicionamento, aninhe uma Sequence de layout padrão separada para a mídia receber premount. Derivada prática da zona de mina oficial ③ (premountFor)
29Fluxo de EngenhariaSonda QC reporta "sobreposição fantasma" falso positivo: o elemento naquele quadro é invisível a olho nuSonda QC (src/design/qc.tsx) em cada quadro pega [data-qc] e chama getBoundingClientRect para julgar sobreposição; se o elemento está invisível mas ainda no DOM (não escondido padrão ou totalmente opaco mas visualmente já cedeu), rect ainda existe → reporta sobreposição falsa (seg05 S5Appare hit). Lado da sonda só filtra opacity<0.15 e w/h<3, placeholder fantasma não é bloqueado. Correção = componente invisível deve retornar return null diretamente (método de portão null), sem nó não há rect; regras detalhadas de prevenção de sobreposição de placeholder em remotion-design-system references/layout.md §10.5. Outra variante (caixa Place estica altura) já listada separadamente como #32, correção siga #32
30Fluxo de EngenhariaArquivo escrito por Bash "comando bem-sucedido" mas desaparece em segundos / Read não vê arquivo recém-criado / filme renderizado ls não existeNova sessão executa em sandbox por padrão: escrita de Bash não autorizada cai em cópia temporária da sandbox, comando termina e evapora (0719-01 teste confirmado: dados de legenda, 18 Scenes, 590MB de filme tudo evaporou, apenas 3 arquivos escritos pela ferramenta Write sobreviveram); escrever via caminho de link simbólico /tmp no projeto agrava o redirecionamento. Correção = antes de começar, passe pelo assembly SKILL §0.5 Passo 0 autoinspeção do ambiente; se não passar, pare e peça ao usuário para autorizar Bash/edição antes de continuar; proibido link simbólico para contornar caminhos chineses (adicione aspas duplas ao caminho inteiro), proibido dangerouslyDisableSandbox para auto-resgate, proibido copiar projeto para /tmp trabalhar; produtos de arquivo devem ser escritos preferencialmente com a ferramenta Write
31Fluxo de EngenhariaQC reporta sobreposição apenas nos primeiros quadros do segmento, visualmente sem sobreposição (comum sub-zh × moldura)Nos primeiros quadros de inicialização a frio, a fonte não foi carregada, a caixa de texto medida com fonte de fallback fica inchada, rect se intersecta é falso positivo de medição (0715-01 seg03 e 0715-02 S04 duas vezes confirmado, variante da família fantasma #29). Correção = após inspeção visual, isente com lista branca qcAllow para o par de elementos (as demais asserções permanecem), não mude layout por causa de alguns quadros de falso positivo
32Fluxo de EngenhariaQC reporta em massa sobreposição de caixa place@72,* na zona esquerda, quadro renderizado visualmente não tem sobreposiçãoCaixa Place de zona esquerda paginada/agrupada tem bounding maior que o conteúdo visual (recipiente esticado), caixas intersectando ≠ interseção visual (0715-02 QC de filme inteiro 15 tipos de violação amostrados, todos deste tipo). Correção = após inspeção visual do quadro renderizado, liberar como falso; cura definitiva = altura da caixa Place deve corresponder ao conteúdo real ou o grupo deve receber qcAllow; sub-clearance que ultrapassa a linha de espaço livre julga verdadeiro/falso separadamente, não está nesta categoria
33Renderização/ExportaçãoUm trecho do filme final com pessoa/vídeo congelado em frame estático, o mesmo trecho no original se move (comum em fundo 4K); a olho nu é "pessoa não se move", mas md5/mpdecimate não detectaOffthreadVideo de fundo 4K durante renderização decodifica com travamento e repete frames (mais provável ao sobrepor animação SVG complexa) → mude a fonte do fundo para 1080p H264 (a composição já é 1080p, 4K é desperdício e atrapalha a decodificação), altere o componente principal para fonte 1080p e re-renderize para resolver. Diagnóstico deve usar ffmpeg -vf freezedetect=n=-50dB:d=0.3 — md5 todos diferentes ≠ imagem em movimento (ruído de compressão de frame estático também faz cada frame ter md5 diferente, engana), mpdecimate também é interferido por ruído, não confiável, apenas freezedetect com tolerância a ruído é preciso; trecho de material (pessoa saindo, material parado em si) reportar freeze é normal, não bug (0721-01 confirmado: trecho de pessoa de 63-69s congelado, após trocar fonte 4K para 1080p, freezedetect zero congelamento). Anexo: codificação de entrega sugerida -bf 0 -g 30 -movflags +faststart para melhorar compatibilidade do player (Remotion padrão gera muitos B-frames, alguns players travam ao seek)
34RenderizaçãoTrecho de material no filme final com grande área preta sólida/barra preta morta/vidro vazio, só uma faixa vertical na borda; tanto placeholder quanto material real podem sofrer; autoinspeção pós-renderização tende a perder (ponto de amostragem não caiu na janela de material presente)OffthreadVideo com "caixa grande style width + objectFit/translate" escreve corte, o width não é aplicado no lado da renderização → conteúdo é renderizado na largura da caixa e depois truncado pelo deslocamento (0721-01 seis trechos confirmados: S02/S06/S07/S10/S13/S16, o único correto S14 usou "video 100% preenche caixa + transform scale overshoot"). Correção e comporta de aceitação pós-renderização = remotion-assembly references/broll.md Regra 12
35Fluxo de EngenhariaMembro da equipe/QC reporta "filme inteiro zero violações" mas na verdade há muitas sobreposições — falsa aprovaçãoSonda QC (src/design/qc.tsx) montada dentro de cada Scene, só roda no intervalo de frames daquele trecho; Scene esquece de montar <QcProbe/> (só declara qc?:boolean mas não consome) → aquele trecho não tem asserções → summary limpo é falsa aprovação (0722-01 caso sangrento: 20 trechos apenas 1 montou sonda, reportou zero violações mas na verdade 8 tipos reais de violação). Correção já solidificada: sonda emite heartbeat de cobertura por frame QC{hb:1,n}, render-service.cjs qc verifica "quadros cobertos/frames renderizados", <90% ou 0 elemento durante todo o período → julga [FAIL] Cobertura insuficiente em vez de "zero violações". Disciplina: "zero violações" deve ser capaz de distinguir entre "testou e não há problemas" e "não testou nada"; no modo de produção, durante a fase de integração, execute primeiro um pequeno segmento de qc para confirmar a cobertura antes do filme inteiro. Adendo (2026-07-24 revisão encontrou): Sonda deve ser montada na raiz (raiz da montagem {qc ? <QcProbe/> : null}, como Koubo072101/072201) — quando montada dentro da Scene, useCurrentFrame retorna frame local (começa em 0), o número do frame do heartbeat fica desalinhado com o intervalo global: a cobertura de QC do filme inteiro/entre trechos pode falhar falsamente (frames locais de cada trecho se sobrepõem, deduplicados ≪ frames totais), e uma sonda ausente em um trecho pode ser mascarada por frames locais do trecho vizinho como falso PASS; render-service já adicionou filtro de intervalo de frame, mas a cobertura global só é garantida com montagem na raiz. Teste curto de QC de trecho único não detecta esta armadilha — para testar a grade, use cenários que disparam falha (intervalo entre trechos / remova uma sonda de propósito), não teste apenas trechos normais
36DesignTexto MG da zona esquerda borrado no fundo claro quase ilegível, scrim parece não funcionarInfoScrim (src/design/InfoScrim.tsx) gradiente padrão transparente à esquerda → escurecido à direita, só escurece o lado direito; MG de informação colocado à esquerda do filme (usuário decidiu informação à esquerda) → MG da zona esquerda nu na área mais clara (armário branco/parede clara) sem fundo (0722-01 confirmado; 0715-02 já havia batido na mesma armadilha, mas só corrigiu localmente no trecho, a lacuna base não foi preenchida). Correção = InfoScrim adicionar parâmetro side (padrão 'right' compatível com filmes antigos), para filmes com informação à esquerda passar side="left". Lição: defeito de base corrige na base ou registra, proibido corrigir apenas no trecho — correção local = deixar a armadilha para o próximo filme
37Fluxo de EngenhariaRenderização travada no Bundling sem sair, copyfile ... ETIMEDOUT, processo vivo mas sem saídapublic/footage/ acumulou muitos materiais antigos (0722-01 2GB/6 peças), Remotion bundle copia todo public/ para diretório temporário a cada vez → copyfile estoura tempo limite (diferencie de #25 dataless: é volume/tempo de cópia, o arquivo em si existe como entidade). Correção = mantenha apenas o material do filme atual em public/footage/, mova o resto para ../footage-hold/ (2GB→466MB, bundle de travado para 1.8s). Disciplina: após entregar a correção, não reverta cegamente — antes de reverter, pergunte "este filme precisa ser renderizado novamente?" (0722-01 mesma armadilha foi pisada duas vezes porque o material foi movido de volta após a entrega)
38Fluxo de EngenhariaQualquer processo que toca em arquivo trava permanentemente, kill -9 inútil, zumbis UE se acumulam; reinstalar dependências/trocar Node não adiantaProcesso de verificação de assinatura de código do macOS (amfid/syspolicyd) travou → binários que precisam de verificação de assinatura não podem exec (diferente de #25 dataless, #37 volume, #23 deadlock, é nível de sistema). Diagnóstico: ffprobe -version (sistema) normal mas node_modules/@remotion/compositor-darwin-arm64/ffprobe -version trava permanentemente = assinatura travou; `ps -axo pid,stat,comm
39Captura de MaterialGrok imagem-para-vídeo três tipos de falha: resolução baixa padrão 736×400, ampliação borrada / elementos se transformam e增生 (morph) / composição específica é forçadamente "preenchida"① Resolução: se não mencionar explicitamente, usa padrão 736×400 (ampliação 2.6x borra halftone/borda de corte) — instrução deve fixar 720p(1280×720), testado 4/4 acerto; CLI resolution_name tem apenas duas opções 480p/720p, pedir 1080p cai de volta (2026-07-24 testado), 1080p deve usar xAI API (grok-imagine-video-1.5) ou trocar ferramenta. ② morph 增生: engrenagem cresce/calendário múltiplas células/anel se despedaça — no final do prompt, adicione restrição de bloqueio para o elemento propenso a崩 ("manter tamanho único original proibido增生", "número de células e cor não mudam", "anel contínuo não quebra"). ③ preenchimento forçado: "elementos esparsos + grande fundo vazio + figura humana vazia + fragmentos de rosto expostos" aciona modelo para preencher área vazia, preencher buraco vazio, crescer rosto completo (14ª execução 6 versões todas falharam) — não continue adicionando proibições, vá alterar a composição de entrada que o acionou (preencha os fragmentos/use linha de contorno para delimitar espaço negativo/remova fragmentos de rosto expostos, após alterar, execute de uma vez). Chamada gbro headless também precisa de --always-approve --permission-mode bypassPermissions --max-turns 10 para acionar ferramenta de vídeo. Veja detalhes em remotion-broll SKILL "Geração AI de B-roll Colagem" seção
40RenderizaçãoAvatar circular de crachá parece torto, cunha de fundo aparece dentro do anel dourado, ajustar ângulo com CSS pioraProibido usar CSS rotate + deslocamento dentro do círculo de corte para corrigir avatar torto — rotação gira em torno do centro da img, a janela de visualização está descentralizada, ambos se somam ampliando a sensação de torto e rotacionando para fora revelando borda (0724-01 duas rodadas para corrigir). Solução correta = cozinhar imagem offline: PIL endireite a foto (alguns graus) depois corte "rosto centralizado em quadrado" salve como asset, NamePlate avatarImgStyle use 100%/left:0/top:0 adesivo direto em janela cheia; asset global public/assets/author-avatar.png já disponível, referencie diretamente
41Fluxo de Engenhariarender-service segment renderiza filme inteiro reporta frame range 0-N is not inbetween 0-(N-1)Parâmetros de início e fim de segment/splice são números de frame inclusive: filme inteiro = 0 (durationInFrames-1) (composição de 1355 frames passar 0 1354), copiar durationInFrames diretamente certamente reportará erro
42DesignUsuário diz legenda "não é bonita" mas não sabe dizer o que está erradoPrimeiro verifique se a linha em inglês está sendo renderizada com fonte chinesa — os glifos latinos de fonte chinesa são apenas para preenchimento, largura e espaçamento estão todos errados, é a causa número um de "não sei o que está estranho" (BilingualSub versão antiga linha en usava FONT.zh, 2026-07-26 confirmado). Correção = linha em inglês deve usar fonte ocidental proporcional FONT.subEn (Inter); verifique também o peso da linha em chinês, camada de legenda use FONT.subZh (PingFang SC) 400 fino, não use 700 da camada de embalagem. Julgamento de textura de fonte deve ser em corte local 1:1, miniatura não mostra (mesmo que #03); antes de alterar a versão, produza várias opções do mesmo frame para o usuário escolher, não aposte em uma opção
43Montagem de Filme Longoqc-master zero FAIL zero WARN, mas usuário diz "qualidade muito diferente / efeitos cada vez mais feios / legenda diferente do que o skill disse"Inspeção técnica verifica "o filme está quebrado?"; não verifica "o filme usou a base?" — duas coisas diferentes, não use o sinal verde do primeiro como prova do segundo. 0727-01 confirmado: 25 trechos auto-construíram 324 linhas _kit.tsx recriando cards, efeito apenas quad fade-in deslocamento 0, design/motion zero referência, 25 trechos apenas 8 tinham saída, 77 legendas en todas vazias degradando para linha única em chinês; qc-master passou tudo. Correção = montagem ⓪ comporta node scripts/check-scenes.mjs src/koubo/scenes-<nome> (referência zero a motion / zero saída = FAIL) + verificação de falta de en em check-subs.mjs, ambas executadas após codificação e antes de iniciar renderização. Ordem de diagnóstico: primeiro verifique quais técnicas estão faltando, depois verifique se os parâmetros estão corretos — um comando check-scenes pode mostrar se você está reinventando a roda, mas ele cobre apenas um tipo de feiura (base não usada); cor/ritmo/fonte/composição cada um tem sua verdadeira origem (typography/rhythm/#42/layout), não trate um único caminho como diagnóstico universal. ⚠️ Lição anexa: na época, o parâmetro do comando check-subs foi passado errado (passou nome do filme em vez de caminho do arquivo) e reportou ENOENT, viu o erro e seguiu em frente, então linha inicial pendurada com palavra única, largura excedente de 16.5 caracteres também foram perdidos — script de verificação reportar erro ≠ verificação passou, se não rodar é como se não tivesse rodado

Referência de classificação (reservada conforme sistema de filme base): Renderização / Temporização de Animação / Studio Execução Local / Exportação / Efeito Sonoro / Captura de Material / Montagem de Filme Longo / Design / Fluxo de Engenharia.

Zona de Mina de Alerta (44 itens no diretório de erros, captura de tela fornecida pelo usuário em 2026-07-16)

Regra: Aqui é mapa de zona de mina, não erro — apenas nome do sintoma, sem correção, a maioria ainda não pisamos. Ao atingir qualquer um: corrija + inspeção visual humana, depois promova para número oficial na tabela acima. Os que já correspondem a erros existentes estão marcados com pertencimento.

CategoriaArmadilha (original)Nosso Estado
RenderizaçãoLOGO piscando / vídeo frame estático / ProRes transparente borda preta / efeito travado no canto superior esquerdo / imagem esticada / chrome de página / rosto obstruído / colisão com legenda / Emoji / Logo preto come pretoJá temos correspondência: colisão com legenda = #14 sobreposição; Emoji = #04 + especificação de ícone (ícone real lucide); rosto obstruído = proibido entrada de pessoa em três zonas (layout.md); Logo preto come preto = especificação de logo dark/light dupla versão (texture.md). Os outros 6 não pisamos, cuidado: vídeo frame estático (OffthreadVideo trava frame), imagem esticada (objectFit), chrome de página (captura de tela com borda do navegador no frame)
Animação/TemporizaçãoPhase índice esquece break / efeito não sincroniza com narração / spring overshootJá temos correspondência: efeito não sincroniza com narração = §2.5 alinhamento palavra a palavra + visual principal com SRT; spring overshoot = motion.md §11 itens proibidos. Phase índice esquece break não pisamos (tipo switch branch esquece de escrever)
Studio/Execução LocalStudio fecha instantaneamente (SIGPIPE) / EMFILE estouro de handle / staticBase hash expirado / HEVC tela preta / id underscore / Studio+still concorrência quebraTodos não pisamos. Cuidado com dois de alta probabilidade: HEVC tela preta (material de gravação de iPhone é HEVC, converter para H.264 antes de armazenar), Studio+still concorrência quebra (rodar still/render com Studio aberto pode colidir — nosso workflow frequentemente concorrente, se acertar, não suspeite primeiro do código)
ExportaçãoDisco C estoura / OOM / qualidade borrada / renderização lenta / julgamento Encoded falsoJá temos correspondência: qualidade borrada = #08 (jpeg100+crf15); julgamento Encoded falso = #09 critério de conclusão só reconhece linha + de log (mesmo tipo: texto de log ≠ sucesso). OOM/renderização lenta não pisamos (cuidado com filme longo 4K com número de frames concorrentes)
Efeito Sonoroimpact-heavy cheio no filme / cada grupo com whoosh / som na frente, movimento atrásJá temos correspondência: impact-heavy cheio no filme = audio.md martelo SFX no filme inteiro ≤2 lugares (usuário rejeitou whoosh de abertura mesma lição); cada grupo com whoosh = sequência de golpes deve ter pop leve por item, não um som pesado por grupo. "Som na frente, movimento atrás" não pisamos, pendente para verificar (suspeito que seja regra de temporização de SFX frame com efeito frame desalinhado, definir quando acertar)
Captura de Materialyt-dlp 403 / fetch não usa proxy / Wikimedia GFW / Firefox cookie / PNG é na verdade HTMLParcialmente já temos: pipeline de coleta yt-dlp em broll.md (nós baixando Lovable não encontramos 403, quando encontrar, primeiro adicione cookie/UA/proxy três peças). "PNG é na verdade HTML" armadilha típica: "imagem" baixada é na verdade página HTML de anti-hotlink — verifique com comando file antes de armazenar, esta regra é adotada diretamente como passo fixo do pipeline de material
Montagem de Filme LongoCapítulo sem pausa para respirar / Host卡↔Chip colideJá temos correspondência: Capítulo sem pausa para respirar = motion.md §1/§2 tela limpa entre capítulos; Host卡↔Chip colide = layout.md Regra 9 posição mutuamente exclusiva (mesmo tipo de sobreposição)
DesignNão replicar House Style / kicker overclaim / proporção não calculada / legenda repeteNão replicar House Style = toda a razão de ser do nosso design-system. kicker overclaim (texto do kicker exagera para além do que a narração diz), proporção não calculada (material deformado), legenda repete (legenda e texto MG repetem a mesma frase) três não pisamos — legenda repete cuidado: nossa decisão de chip e Stamp não repetir é o mesmo princípio
Zona de Mina Oficial (remotion-dev/skills claro, 2026-07-16 comparação, veja docs/官方skills对照.md)① CSS transition/animation/Tailwind animação = renderização certamente quebra (oficial FORBIDDEN, codex escreve código é o mais fácil de misturar) ② ffmpeg cortar sem recodificar = frame inicial congelado (uma das causas de "vídeo frame estático" do filme base, -c copy cortar proibido) ③ Sequence com mídia sem premountFor = primeiro frame trava/tela preta ④ @remotion/transitions consome duração total (dois planos sobrepostos, sistema de alinhamento duro SRT desalinhará o filme inteiro) ⑤ fetch dados externos sem delayRender = renderiza frame vazio①②④⑤ não pisamos, item de verificação pré-codificação; ③ premountFor já adotado conforme regra (Scene06 previne primeiro frame preto) → derivou novo erro prático #28 (premountFor com layout='none' tipo mutuamente exclusivo)
Fluxo de EngenhariaEscopo de modificação se expande / tamanho de fonte <48px / renderiza 4K automaticamenteEscopo de modificação se expande = exemplo negativo da disciplina de oficina segmentada "renderizar apenas aquele trecho/alterar apenas aquele trecho"; tamanho de fonte <48px (em 1080p, texto corporal abaixo de 48px o espectador não lê, precisa distinguir cenário de specs.md texto mínimo explicativo 20-22px: ele provavelmente se refere ao corpo da informação); renderiza 4K automaticamente (sem confirmação, inicia renderização grande queima máquina) — esta regra é adotada diretamente como disciplina: renderização só inicia com o escopo confirmado pelo usuário/plano

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

Habilidades Relacionadas