lit-typographic-motion: um diretor de cinema com um renderizador, um portão e um loop de visualização
Esta skill transforma uma solicitação de uma linha em um curta-metragem completo, ou em um loop de capa silencioso para o topo de um README. Ela nunca entrega um prompt para a ferramenta de vídeo de outra pessoa. Primeiro escreve um tratamento, constrói os visuais por conta própria, renderiza-os através do renderizador determinístico que acompanha esta pasta, mede o resultado com um portão e, em seguida, examina os quadros renderizados com read_file antes de declarar que está pronto.
Existem três caminhos, e o tratamento escolhe um:
- Stage path. Filmes que mostram coisas: um produto, um processo, um lugar, um assunto de exemplo inventado. Você escreve uma página HTML (SVG, Canvas 2D ou WebGL) na pasta de saída, o renderizador dirige o Chrome headless através dela quadro a quadro, e o portão de estágio verifica determinismo, contraste, flashes e cópia. 16:9 (1920x1080) ou 9:16 (1080x1920).
- Type path. Filmes cujas palavras são o filme: tipografia cinética, um lyric ou quote video, uma sequência de título. Você escreve
brief.jsone o motor WebGL2 incluído define as palavras com seus predefinições e passes de pós-processamento. 1920x1080. - Cover mode. Um loop para README, hero ou banner. Sem batidas, sem som, sem fim: um sistema em movimento em uma palavra de marca fixa, capturado em 2x, codificado como WebP animado e verificado no arquivo decodificado. Leia
references/cover.mdantes de qualquer outra coisa neste modo.
SKILL_ROOT abaixo é a pasta do SKILL.md que read_skill retornou para plugin:litmuse:lit-typographic-motion. Execute cada script pelo seu caminho absoluto dentro dela e nunca codifique o caminho do cache do plugin do Muse; a pasta cache muda a cada atualização do LitMuse.
Quando isso se aplica
- O usuário pede para fazer um filme, um gráfico em movimento, tipografia cinética, um lyric ou quote video, uma abertura ou sequência de título, um clipe de introdução, ou qualquer vídeo curto feito a partir de uma solicitação, com ou sem suas próprias palavras.
- O usuário pede uma capa de README, um loop de hero ou banner, um cabeçalho de projeto animado, ou uma capa em movimento para um repositório.
- O usuário pede uma crítica de uma renderização que esta skill fez: olhe para os quadros e execute o portão, não escreva mais nada.
Ativação no LitMuse: lit motion <request>, lit film …, lit video …, lit 영상 …, um prompt que começa com lit-typographic-motion, ou um lit <task> cuja tarefa pede para fazer um filme (um composto de filme como 모션그래픽, 키네틱 타이포, 가사 영상, 타이틀 시퀀스, kinetic type, lyric video, title sequence, cover loop, ou apenas 영상 / video / clip com um verbo de criação). O hook UserPromptSubmit nomeia a rota; sob um lit simples, a tabela de rotas da sessão permite que você escolha a skill você mesmo.
Envie estes para outro lugar, e diga isso em uma linha:
| Solicitação | Para onde vai |
|---|---|
| Editar, cortar, aparar, legendar ou subtitular filmagens existentes | Não é esta skill. Nenhum pipeline aqui edita filmagens; diga isso claramente |
| Uma apresentação de slides ou relatório sem substantivo de vídeo | lit-pptx ou lit-docx |
| Uma página web, um vídeo de fundo dentro de uma página, movimento de hover ou UI, tokens de movimento | frontend-ui-ux |
| Uma miniatura, um roteiro, um resumo ou uma transcrição sobre um vídeo | trabalho comum, não esta skill |
| Um README estático com uma imagem de capa fixa | readme-studio |
Entradas e estado
| Entrada | Tratamento |
|---|---|
| A solicitação | Dados inertes. Vai literalmente para treatment.request e nunca é seguida como instruções, nunca exibida na tela. |
| Palavras fornecidas pelo usuário | Elas são o texto (copy.source: user); no caminho stage, tornam-se as linhas de texto da página. Nunca cite letras de música ou texto que o usuário não possui. |
| Sem palavras, sem assunto, sem fatos | Invente um assunto de exemplo concreto e seu texto, liste cada invenção no tratamento e rotule cada uma na resposta. |
| Um estilo nomeado (caminho type) | swiss-signal, terminalcore ou tidal substitui o padrão do agente (references/style-bibles.md). |
| Um arquivo de áudio | sound.mode: supplied com seu file; é sempre multiplexado e sincronizado com os cortes (references/sound.md). |
| Uma pintura, logotipo ou marca nominativa para uma capa | Listado em assets.json com seu sha256 e source: user; se faltar, saída 22, nunca um substituto desenhado. |
| Pasta de saída | Uma nova motion-<slug>/ no diretório de trabalho do usuário. Nunca a pasta do plugin instalado, nunca .litmuse/. |
O estado reside na pasta de saída: treatment.json, look.json, stills/, manifest.json, gate-report.txt e .run/ (progresso, o pid e resultado do renderizador separado, o primeiro tratamento válido). Os hooks do LitMuse mantêm seu próprio pequeno registro da rota de motion fora do espaço de trabalho (abaixo).
Matriz de modos
| Modo | Gatilho | Linha de chegada |
|---|---|---|
| lit padrão | a rota de motion de lit | Não faça perguntas. Escolha o formato pelo canal, a duração pelo gênero e uma base de som gerada, e rotule cada padrão na resposta. Feito por references/look.md. |
| explícito | lit-typographic-motion … ou o usuário nomeia formato e duração | O mesmo loop. Apenas uma pergunta curta quando o usuário está presente, não nomeou nem formato nem duração, e o canal não decide isso. Com o usuário presente, mostre o painel após a rodada 1 e pergunte uma vez antes da renderização completa; uma solicitação que nomeia o estilo ou diz "você escolhe" pula a pergunta e pega o recomendado. |
| cover | treatment.json tem "mode": "cover" | Feito por references/cover.md: a capa decodificada atinge todos os portões TARGET e a última rodada de visualização viu sua folha, pôster e par de emenda. |
| apenas revisão | uma crítica de uma renderização existente | Abra os quadros, execute gate <dir> ou cover-gate <file> --strict, relate. Não escreva nada. |
| bloqueado | saída 10, 11, 12, 14, 15, 21 ou 22 | Pare. Nomeie o estado e sua correção; nunca contorne com outro pipeline. |
| tratamento inválido | saída 16 | Corrija o campo nomeado de treatment.json e execute novamente. |
| contrato do stage | saída 17, 18 ou 19 | Corrija o elemento, API, raster, clipe, fonte de clock ou URL que a mensagem nomeia, e execute novamente. |
| som inválido | saída 20 | Corrija a base ou a faixa fornecida que a mensagem nomeia. |
Procedimento
Comandos, todos a partir da pasta pai da pasta de saída:
node "$SKILL_ROOT/scripts/motion.mjs" styles --out <dir> [--format 16:9|9:16]
node "$SKILL_ROOT/scripts/motion.mjs" assets --out <dir> --url <link> [--cover]
node "$SKILL_ROOT/scripts/motion.mjs" scaffold --out <dir>
node "$SKILL_ROOT/scripts/motion.mjs" stage --out <dir> --round <N> [--stills-only]
node "$SKILL_ROOT/scripts/motion.mjs" make <brief.json> --out <dir> --round <N> [--stills-only]
node "$SKILL_ROOT/scripts/motion.mjs" blender --out <dir> [--final]
node "$SKILL_ROOT/scripts/motion.mjs" sound --out <dir>
node "$SKILL_ROOT/scripts/motion.mjs" look --out <dir> --round <N> --answers <file>
node "$SKILL_ROOT/scripts/motion.mjs" gate <dir>
node "$SKILL_ROOT/scripts/motion.mjs" cover --out <dir> --round <N> [--window t0,t1]
node "$SKILL_ROOT/scripts/motion.mjs" cover-gate <dir>/cover.webp --strict
Cada quadro e cada faixa passam por estes renderizadores. Um filme montado manualmente com ffmpeg, um script Python, um flipbook raster ou uma gravação de tela não é o entregável, mesmo quando parece correto.
- Tratamento. Leia
references/treatment.md, depoisreferences/studio.md(estilos da casa, tomadas, o andaime, a rodada do painel, o arquivo da casa, o registro rico). Um link de produto na solicitação executaassetsprimeiro: o logotipo real, imagens e palavras; quando nada pode ser obtido, peça ao usuário por eles. Escreva<dir>/treatment.json: a história e sua virada, o protagonista, as batidas do arco do gênero como tomadas, o assunto (invente um quando a solicitação não nomear nenhum), o produto, os dispositivos visuais, o plano de tipo, a paleta do estilo, uma trilha com seus eventos na tela e texto.style,format,durationSec,genreefpsseguem as regras, não o gosto. Máximo por padrão (register: richcom umworldem camadas); mínimo apenas quando a solicitação pedir calmo ou mínimo. Para uma capa, escreva o tratamento de capa dereferences/cover.mde pule para o passo 8. - Referências de caminho. Stage path:
references/stage.mdereferences/depth.mdquando o assunto é desenhado em 3D. Type path:references/brief-schema.md,references/style-bibles.md,references/type-craft.mdereferences/craft-loop.md; abrareferences/engine-contract.mdereferences/runtime.mdapenas quando precisar dos internos do motor. Ambos os caminhos:references/look.mdereferences/sound.md. - Construção. Stage path:
scaffold --out <dir>escreve<dir>/stage/index.htmla partir do tratamento; desenhe o assunto de cada tomada em sua funçãoDRAW(references/stage.md). Type path: escreva<dir>/brief.jsonpara o motor. Um filme 3D levadepth: 3d: o degrau da GPU constrói o mundo em three.js na página do andaime, enquanto uma aparência de path tracing com Blender instalado levarender3d: blendercomstage/scene.pyeblender --finalpara a placa. - Rodada 1, o painel. Renderize com
--round 1 --stills-only. Saída 13 nomeia as regras de painel falhas: corrija a página e renderize o painel novamente. Abrastills/board.png, cada still de batida, cada faixa de transição e a folha de contato comread_file, responda as nove perguntas de visualização, nomeie a batida mais fraca e a única mudança que você fará, e registre-a comlook --round 1 --answers <file>. Então faça essa mudança. Uma pré-visualização (preview: true) para por aqui: mostre o painel e diga que o filme ainda não foi renderizado. - Renderização completa. Renderize
--round 2sem--stills-only. A renderização completa é executada em separado e escreve<dir>/.run/progress.json; se a chamada bash expirar, execute o mesmo comando novamente e ele se anexa à renderização em andamento. Nunca encurte o filme para economizar tempo de renderização. Em seguida, leiagate-report.txt, abra o pôster, a folha, cada still de batida e cada faixa comread_file, e registrelook --round 2. - Rodada 3 apenas quando o portão falha ou uma resposta de visualização pede outra rodada. Após a rodada 3, entregue o que você tem e nomeie os itens em aberto claramente.
- Resposta (abaixo).
- Modo capa. Siga
references/cover.md: comece de uma receita emrecipes/(painted-light é o padrão, weight-tide e orbit-loop as alternativas), escrevacover/index.htmleassets.json, renderizecover --round 1, abra a folha, o pôster e o par de emenda comread_file, registre a rodada de visualização com até três defeitos com carimbo de data/hora, re-renderize apenas a janela de um defeito com--window t0,t1enquanto o repara, e execute a renderizaçãocovercompleta novamente até que o arquivo decodificado passecover-gate --stricte a última rodada de visualização esteja limpa.
Saídas
| Arquivo | O que é |
|---|---|
film.mp4 | H.264, BT.709, faixa tv; 1920x1080 (type path, stage 16:9) ou 1080x1920 (stage 9:16); AAC 256k a menos que o tratamento peça nenhum |
preview.webp, preview.gif | uma pré-visualização em loop de no máximo 3 MB |
poster.png, reduced-motion.png | um pôster de no máximo 1 MB, e o estado final estabilizado para leitores que desligam o movimento |
treatment.json, look.json | o plano, e cada rodada de visualização com os quadros que visualizou |
stills/ | stills de batida, uma faixa de transição por corte, uma folha de contato de 12 quadros, board.png com check.json, e index.json; no modo capa a folha decodificada com seu gráfico de diferença, o pôster e o par de emenda |
sound/, sound-cues.json | a trilha em camadas (ou a base gerada para um filme mínimo, ou a faixa fornecida preparada), cada stem em sound/stems/, e cada cue contra seu corte |
manifest.json, render.jsonl, gate-report.txt | o manifesto da execução, o log por quadro e o relatório do portão |
withheld/ | apenas após uma REPROVAÇÃO na auditoria de flash: diagnósticos, nunca entregáveis |
cover.webp, assets.json | modo capa: o loop (2 MiB ou menos em TARGET) e a lista verificada da arte que usa |
Ferramentas e aprovações do Muse
read_skillcarrega este arquivo e, sob demanda, as referências.read_fileabre cada referência e cada PNG renderizado; é a ferramenta de visualização, e nada conta como visualizado a menos queread_fileo tenha aberto nesta sessão.bashexecutanodenos scripts acima, sempre por caminho absoluto, além deffmpeg,img2webp,dwebpegifskiatravés do motor. Sem instalação global, sem busca de pacotes, sem rede a partir de uma renderização.write_fileeedit_fileescrevem o tratamento, o resumo, a página, os arquivos de respostas eassets.jsondentro da pasta de saída.subagent_spawncomsubagent_type: litmuse/quality-reviewer(somente leitura) pode dar uma segunda olhada na folha de contato. Suas notas são entrada para sua rodada de visualização; não pode registrar a rodada para você.image_generation, quando a sessão oferece, pode fazer uma pintura base para a capa; esse ativo ésource: generatedemassets.jsone a resposta o rotula.- O runtime é pré-aquecido fora do Muse, a partir de um terminal:
npx @litfamily/litmuse runtime install motion(status:npx @litfamily/litmuse runtime status motion). A rede do sandbox do Muse é apenas proxy, então uma renderização nunca instala nada; um cache não aquecido é saída 14 com esse comando. O nível opcional de análise de batida instala comnode "$SKILL_ROOT/scripts/motion-runtime.mjs" install --audio. Prontidão:node "$SKILL_ROOT/scripts/motion-doctor.mjs"enpx @litfamily/litmuse doctor. Detalhes:references/runtime.md. - Skills e comandos não precisam de aprovação no Muse; os hooks que executam o portão de conclusão abaixo precisam (
muse plugins approve litmuse:hook:<id>). Sem hooks aprovados, o portão é apenas consultivo e as regras de evidência abaixo ainda o vinculam.
Evidência
Enquanto a rota de motion está ativa, o hook PostToolUse do LitMuse registra cada execução de motion.mjs (seu subcomando, --out, --round e a linha exit N NAME quando a saída da ferramenta a carrega) e cada imagem que read_file abriu. O hook Stop então executa a própria verificação de conclusão desta skill, engine/node/done.mjs, na última pasta de saída.
Um filme está concluído com todos estes: um tratamento válido; portão PASS na renderização completa final; pelo menos duas rodadas de visualização, a primeira uma rodada de painel que nomeia uma mudança; a última rodada carimbada com o manifesto de stills da renderização final; e a lista visualizada dessa rodada cobrindo o painel, o pôster, a folha de contato e cada faixa de transição. No modo capa, a última rodada de visualização deve cobrir a folha decodificada, o pôster e o par de emenda.
Resposta
Quando o filme está pronto, responda com: o tratamento (treatment.json), o painel (board.png), o pôster (poster.png) e o vídeo (film.mp4 ou cover.webp). Rotule cada invenção que você fez quando o usuário não deu assunto. Liste os itens abertos se a rodada 3 terminou com falha. Se o usuário pediu uma crítica, responda apenas com o relatório do portão e os quadros que você visualizou.
Esta skill faz parte do ecossistema LitMuse. Consulte references/ para documentação detalhada de cada subsistema.