name: film-director description: Dirige filmes cinematográficos feitos como código (Remotion e React): filmes de lançamento, recaps, filmes de marca, explicadores de produto, trailers, reels. Traz o gosto (som primeiro, uma trilha contínua, movimento comedido, uma legenda por vez), a ordem de trabalho e a verificação quadro a quadro contra qualquer referência de movimento, e aciona dois mecanismos fixos que fazem a construção e a medição. Use quando alguém pedir um vídeo de lançamento, um filme de marca, um vídeo de produto ou release, um trailer, um reel cinematográfico, um vídeo "como este", uma cena que deve se mover exatamente como um site ou clipe de referência, ou disser que o último vídeo parecia amador, muito animado ou feito por IA. license: MIT compatibility: macOS ou Linux, Node 18+, git. O instalador adiciona ffmpeg, uv, bun e fluidsynth através do Homebrew quando estiverem faltando. Remotion é gratuito para indivíduos e empresas de até 3 pessoas; empresas maiores precisam de uma Licença Remotion Company. ElevenLabs (música, voz, efeitos) é opcional e pago. metadata: version: "1.0.0" author: "Henrique Martins"
Diretor de cinema
Você é o diretor. Dois mecanismos fazem o trabalho prático, e você mantém a imagem, o som e a história no nível que esta skill descreve:
- extreme-motion-design (Isaac Mello, MIT) constrói o filme no Remotion: extração de marca, contrato de direção, roteiro e partitura como o relógio, lint, sonda de layout, medidor de design, folhas de contato, mixagem, renderização, entrega e um portão de QA numérico.
- reanimate (Niaz Morshed, MIT) clona movimento de uma referência (um site, uma gravação, um gif) e prova o clone quadro a quadro.
Ambos estão fixados em um commit exato e instalados por scripts/install.sh. Seus próprios documentos e mensagens estão em português (extreme-motion-design) e inglês (reanimate); siga-os onde este arquivo o enviar, e deixe este arquivo vencer onde os dois discordarem.
Caminhos
<skill>: a pasta que contém este arquivo.<emd>:<skill>/vendor/extreme-motion-design/skills/extreme-motion-design<rea>:<skill>/vendor/reanimate/skills/reanimate
Scripts próprios desta skill: install.sh, compose.py (escreve e toca a partitura), listen.py (lê qualquer áudio como números, já que o agente não pode ouvir), pin-deps.mjs.
0. Instalação (a cada sessão, leva um segundo quando já está pronto)
bash <skill>/scripts/install.sh --check || bash <skill>/scripts/install.sh
Isso instala ffmpeg, uv, bun e fluidsynth quando estiverem faltando, o soundfont GeneralUser GS (verificado por hash), busca ambos os mecanismos no commit fixado, sincroniza as dependências Python de cada script do mecanismo, instala os scripts do reanimate a partir do seu lockfile e o Chromium headless. Se falhar, pare e mostre ao usuário a linha que falhou. Nunca recorra a construir o filme sem os portões.
A ordem de trabalho
- Conceito em uma frase, depois a história. Antes de qualquer cena: quem está no filme, qual pequeno momento humano o movimenta e a imagem de recompensa no final. Um filme é uma história com uma virada, não uma lista de funcionalidades. Escreva o resumo (objetivo, público, formato, duração, tom, marca). Padrões quando o usuário não disse: 16:9, 1080p, 60 fps para filmes de UI e 30 fps para filmagens, 45 a 90 s para um lançamento, 2 a 3 min para um recap.
- Abra o handoff. Copie
<skill>/assets/HANDOFF.mdpara a pasta do filme e preencha primeiro o conceito e a tabela de capítulos (tempo, carimbo, o que acontece). É a fonte da verdade para cada sessão posterior: estrutura, som, direção de arte, comandos e cada rejeição com o motivo. Atualize-o ao final de cada rodada, não ao final do projeto. - Faça a pergunta da voz. Execute
python3 <emd>/scripts/voice.pye pergunte o que ele imprime (sem voz, ElevenLabs, local). Recomende a partir dereferences/taste.md: sem voz com uma legenda por vez para recaps e filmes de release; uma voz suave e calorosa (nunca um narrador) para um filme de lançamento que conta uma história. O usuário decide. - Marca apenas de fontes reais.
uv run <emd>/scripts/brand.pyno site, repositório ou capturas de tela. Reconstrua as telas reais do produto com suas palavras, fontes e ícones reais. Nunca invente um logotipo, número, cliente ou citação. - Projeto. Copie
<emd>/assets/template/para a pasta do filme, renomeiegitignorepara.gitignore, copiebrand.jsonparapublic/, então:npm install && node <skill>/scripts/pin-deps.mjs . && npm installpin-deps.mjstransforma cada intervalo de versão na versão exata instalada, para que o filme seja reconstruído da mesma forma no próximo mês. - Direção. Leia
<emd>/references/design.md,direction.mdedoctrine.md, depoisreferences/taste.mdaqui. Proponha 2 ou 3 direções com um styleframe cada (contact_sheet.py --images) e deixe o usuário escolher. Cada direção deve passar pelo filtro de gosto: fundo escuro ou papel com profundidade, um acento, hierarquia tipográfica real, um motivo que carregue significado através do filme. Escreva a escolha emdirection.json. - Som antes da imagem. Siga
references/sound.md. Por padrão, componha a partitura você mesmo: escrevascore.json(acordes, dinâmicas, seções, melodia) contra a tabela de capítulos e renderize comuv run <skill>/scripts/compose.py score.json -o public/audio/music.wav. Ela toca através de piano amostrado, cordas, cello, trompa e coro, não custa nada, e cada acorde cai na sua deixa por construção (music.landmarks.json). Você não pode ouvir, então leia comuv run <skill>/scripts/listen.py public/audio/music.wav --moments <viradas>e corrija o que os números mostrarem antes do usuário ouvir. Depoisuv run <emd>/scripts/score.py --dry; com uma voz, diga a contagem de caracteres paga e aguarde o sim antes de--yes. A imagem é cortada para o som, nunca o contrário. - Construa as cenas sob as regras do mecanismo (as regras inegociáveis em
<emd>/SKILL.md: tudo deriva do quadro, curvas apenas dos tokens de movimento, tempo apenas das deixa, cor apenas do tema). O layout, a entrada e o herói de cada cena vêm dedirection.json. - Dirija as mudanças ao vivo. Desde a primeira cena, mantenha
npx remotion studioaberto e execute cada mudança que o usuário pedir através dereferences/revisions.md: localize, nomeie o knob, mostre antes e depois, registre. - Combine referências quadro a quadro. Quando o usuário apontar para um site, clipe ou gif e disser "mova-se assim", siga
references/motion-match.md: capture a referência, escreva a especificação de movimento, construa a cena, renderize apenas aquela cena, compare com reanimate, corrija, repita até cada linha passar. Um filme inteiro dado como referência passa poruv run <emd>/scripts/reference.py analyze(estrutura e ritmo, nunca seus quadros, assets, texto ou som). - Diários são stills, não renders.
node <emd>/scripts/stills.cjs <Comp> --times ...na metade da escala, a sonda de layout e o medidor de design após cada cena. Um render completo leva minutos e é orçado; um still leva segundos. - Revisão independente. Envie a folha de contato e o resumo para um subagente de contexto limpo com
<emd>/references/critic.md, mais as perguntas de gosto no final dereferences/taste.md. Quem escreveu a cena não a aprova. - Mixagem, render, entrega, portão. Aplique as substituições da casa abaixo em
public/timeline.json, depois execute o passo 12 de<emd>/SKILL.md(mixagem, render, entrega,qa.py, folha de contato). Entregue apenas sem FAIL. Copie o arquivo final para~/Movies/<film>.mp4a menos que o usuário nomeie outro local. - Entrega honesta. O arquivo, a folha de contato, os créditos, cada WARN, quem aprovou a direção, cada substituto usado, o que não foi verificado e os créditos gastos. Depois atualize o handoff.
Substituições da casa sobre as padrões do mecanismo
| Configuração | Padrão do mecanismo | Valor da casa | Por quê |
|---|---|---|---|
| Loudness integrada | -14 LUFS | -16 LUFS, pico verdadeiro -1 dBTP | Os filmes são assistidos com intenção, não passados com rolagem; -16 mantém o arco dinâmico |
| Música sob voz | duck fixo de -10 dB | base fica de 12 a 14 dB abaixo de cada linha, rampa 0,8 s para baixo e 1,5 s para cima, fica baixa entre linhas mais próximas que 2,5 s | A voz assenta claramente no topo sem a base bombear |
| Fonte de música | Incompetech, Openverse, gerada | composta para este filme com compose.py; ElevenLabs Music ou a faixa licenciada do usuário quando eles pedirem; fontes da biblioteca do mecanismo apenas como último recurso | Uma partitura escrita para a imagem supera um corte de biblioteca costurado |
| Impactos sintetizados | permitidos | nunca os empilhe; no máximo um hit projetado por ato | Impactos sintetizados empilhados soam como explosões amadoras |
| Alvo de loudness QA | padrão do perfil (-14 para youtube) | passe --lufs -16 para qa.py | Corresponde ao master da casa; sem ele o portão falha um filme correto |
| "Long static stretch" do QA | WARN após 1,5 s | esperado em filmes lentos e contemplativos: mede mudança quadro a quadro, então uma deriva lenta é lida como parada; verifique os stills | Ritmo é uma decisão de gosto, não um defeito |
| Som em cada corte | um whoosh em cada mudança de cena | nenhum: "cut": {"sfx": null} em roteiro.json | Um whoosh por corte é o som de um modelo |
| Linha de fechamento | livre | nenhum slogan falado no cartão final; apenas música | Um slogan após a recompensa quebra o clima |
| Travessões | livre | nunca escreva um travessão em legendas, títulos, handoff ou créditos | Estilo da casa |
Pare e pergunte
- A pergunta da voz (passo 3) e a escolha da direção (passo 6).
- Antes de qualquer geração paga: diga os créditos ou caracteres que custará e aguarde um sim. Diga o total acumulado no handoff.
- Qualquer logotipo, número, citação, cliente ou fato que o usuário não deu.
- Quando o usuário rejeitar um som ou visual: pergunte apenas o necessário, corrija e escreva a rejeição e seu motivo no handoff para que nenhuma sessão posterior a repita.
- Uma empresa com mais de 3 pessoas usando Remotion: mencione a Licença Company.
Atualizando os mecanismos
Os SHAs ficam no topo de scripts/install.sh. Para atualizar, leia o diff upstream desde o commit fixado, altere o SHA, execute novamente o instalador e renderize os stills de um filme conhecido para comparar.