Cria o slide seguinte começando exatamente na pose em que a animação do slide indicado estava, com corte seco, para os dois se comportarem como um slide só e a animação continuar sem salto. Use SEMPRE que o usuário disser "/mira-sequence", "sequência desse slide", "continua a animação no próximo slide", "parte 2 dessa animação", "quero um slide que continua o anterior", "corte seco entre os slides", "os dois slides têm que parecer um só", "encadeia esses slides", ou pedir para quebrar uma animação longa em slides encadeados sem transição visível.
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
Cria o slide seguinte começando exatamente na pose em que a animação do slide indicado estava, com corte seco, para os dois se comportarem como um slide só e a animação continuar sem salto. Use SEMPRE que o usuário disser "/mira-sequence", "sequência desse slide", "continua a animação no próximo slide", "parte 2 dessa animação", "quero um slide que continua o anterior", "corte seco entre os slides", "os dois slides têm que parecer um só", "encadeia esses slides", ou pedir para quebrar uma animação longa em slides encadeados sem transição visível.
Skill: Sequência, dois slides que se comportam como um
O autor indica um slide. Você cria o slide seguinte nascendo na pose exata em que o anterior estava e continuando dali. Na apresentação, a passagem não aparece: quem assiste vê uma animação só, que muda de comportamento no meio.
Exemplo: a bola quica pela tela e para no centro. No slide seguinte a bola já está no centro, parada onde ficou, e passa a subir e descer.
REGRA DE IDIOMA
Siga agents/_shared/idioma.md. Todo texto visível em português brasileiro com acentuação correta. Proibido travessão (—): use vírgula ou dois-pontos.
O que este agente faz, e o que não faz
Faz: a JUNTA. O contrato de continuidade entre dois slides, a pose de entrega, o corte seco na navegação e a animação nova começando de onde a anterior parou.
Não faz: escolher metáfora. A metáfora é herdada do slide de origem, por definição: é a mesma cena continuando. Se o autor quer outra cena, o agente é o /mira-animator, não este.
Nunca faz: mudar a transição global do deck. O corte seco é do par, e só dele. Todos os outros slides passam exatamente como passavam antes.
As duas regras do Mira que esta skill suspende, de propósito
Diga isso na entrega, não deixe implícito.
Entrada coreografada. A regra zero manda toda animação entrar com coreografia. O slide de continuação não entra: ele já está em cena. Fade, stagger, escala 0, data-aos, tudo proibido nos atores herdados. A entrada já aconteceu no slide de origem.
Método A/B da metáfora. Não roda. A metáfora já foi eleita no slide de origem e continuar é o objetivo.
O que continua valendo sem exceção: loop interno perpétuo na continuação, temperamento e beat sheet, cor do tema, anti-vazamento, idioma pt-br, sem travessão. E a régua de composição do mira-animator: a cena preenche a faixa livre inteira, espaço vazio é defeito, e o que a ação não usa vira cenário ambiente da própria metáfora (parado ou em deriva lenta, nunca focal).
Entradas
Deck e slide de origem. Se o autor não disser, pergunte. Nunca adivinhe o slide.
O que acontece na continuação, em uma frase ("a bola só sobe e desce"). Sem isso, pergunte: é a única coisa que você não consegue deduzir do slide anterior.
Título da continuação, opcional. O padrão é repetir o título da origem, porque título trocando é a única coisa que o espectador enxerga no corte. Se o autor pedir outro, avise que a troca aparece, e mantenha o mesmo número de linhas.
O contrato de continuidade
Cinco peças. Nenhuma é opcional.
1. Marcadores do par
Na <section> de origem e na de continuação:
<!-- @MIRA:SEQ origem="bola" · a continuação nasce da pose entregue aqui --><sectiondata-mira-seq="bola"><!-- @MIRA:SEQ continua="bola" · sem entrada: já está em cena --><sectiondata-mira-seq-de="bola">
O comentário é para quem lê. Os atributos são o que o código lê. O id do par é curto, minúsculo e único no deck. Uma continuação pode carregar os dois atributos e virar origem da próxima: a corrente pode ter três ou mais slides.
2. Barramento da pose
Injete uma vez por deck, no topo do <script> das animações:
/* @MIRA:SEQ:BUS pose viva entregue de um slide para o seguinte */window.__miraSeq = window.__miraSeq || {};
varMiraSeq = {
gravar: function (id, pose) { if (pose) window.__miraSeq[id] = pose; },
ler: function (id) { returnwindow.__miraSeq[id] || null; }
};
A origem grava. Onde depende do estilo do palco:
Palco declarativo (reger(svgId, quadro) com quadro(ms), que é o mira-default e derivados), última linha do quadro:
if (ms > 0) MiraSeq.gravar('bola', { x: x, y: y, r: R, achatamento: k });
O ms > 0 não é enfeite. O reger chama quadro(0) a cada frame enquanto o slide está fora da tela. Sem a guarda, sair do slide sobrescreve a pose de entrega pelo primeiro quadro da história, e a continuação nasce no lugar errado.
Palco imperativo (animateSlug() com transições D3, templates de card), um amostrador ao lado da animação:
Aqui não precisa de guarda: o animateSlug() só reseta os elementos quando o slide volta a aparecer, e a continuação já travou a pose antes disso.
Regras da pose: objeto novo a cada gravação, nunca um mutado no lugar. Coordenadas absolutas do viewBox, nunca fração de F.vy(k), porque o título da continuação pode ter altura diferente e a fração mudaria de lugar. Só o que a continuação precisa: posição, raio, ângulo, opacidade, deformação. Não despeje o estado inteiro.
Nada no desenho de um ator herdado pode sair do relógio local. Sombra, brilho, rastro e escala derivada tiram valor da POSE, não de ms. É o erro que passa despercebido: a entrega no repouso fica perfeita, e entregar no meio do ciclo faz o elemento derivado pular, porque a continuação começa o relógio dela no zero e a origem estava no meio do dela.
3. A continuação trava a pose e começa nela
functionposeEntrega(F) { return { x: F.W / 2, y: F.vy(.82), r: 46, achatamento: 1 }; }
functionanimBolaSobe(svgId) {
var p = palco(svgId); if (!p) return;
var svg = p.svg, F = p.F;
var base = poseEntrega(F);
/* ...cria os elementos JÁ na pose, sem opacity 0, sem scale 0... */reger(svgId, function (ms) {
if (ms === 0) base = MiraSeq.ler('bola') || poseEntrega(F); /* trava ao entrar *//* ...desenha a partir de `base`... */
});
}
ms === 0 acontece nos quadros congelados e no primeiro quadro ao vivo, então a pose fica atualizada enquanto a origem roda e trava no instante da entrada.
O portão duro do movimento: a função de movimento avaliada em ms = 0 tem que devolver exatamentebase. y = base.y - alt * (0.5 - 0.5 * Math.cos(2 * Math.PI * t)) serve, porque em t = 0 o cosseno vale 1 e o deslocamento vale 0. y = base.y - alt * Math.sin(...) com fase diferente de zero não serve. Confira essa conta antes de escrever o resto.
poseEntrega(F) é o plano B, e é obrigatório. Escreva a pose de repouso da origem com a mesma expressão que a origem usa, não com número mágico. Ela é usada quando ninguém passou pelo slide anterior: link direto no meio do deck, e principalmente /mira-slide-to-video, que grava cada slide isolado a partir do zero. Continuação que só funciona depois da origem está quebrada.
4. Corte seco na navegação
O deck rola com behavior: 'smooth'. Rolagem suave mostra os dois slides deslizando e mata a ilusão.
Procure por scrollIntoView, não por function ir. Cada template chama a passagem de slide de um jeito, e um deck real costuma ter mais de um caminho: o teclado, o botão flutuante #mira-next, a barra #mira-progress, o /mira-remote-control mandando do celular. Patch aplicado só no teclado deixa o botão rolando suave, e o defeito só aparece na hora da palestra. Faça a busca, liste os caminhos e aplique a guarda em todos.
Guarda comum, com a nomenclatura do mira-default:
functionparSeq(a, b) {
var origem = a.getAttribute('data-mira-seq');
return !!origem && b.getAttribute('data-mira-seq-de') === origem;
}
functionir(d) {
var de = atual(), i = Math.max(0, Math.min(secs.length - 1, de + d));
if (i === de) return;
/* @MIRA:SEQ par em sequência salta sem rolagem, nos dois sentidos */var seco = parSeq(secs[de], secs[i]) || parSeq(secs[i], secs[de]);
secs[i].scrollIntoView({ behavior: seco ? 'instant' : 'smooth', block: 'start' });
}
É 'instant', nunca 'auto'. Pela especificação, 'auto' quer dizer "use o valor de scroll-behavior do elemento", e todo deck do Mira traz html { scroll-behavior: smooth }. Escrever 'auto' deixa o salto suave, não dá erro nenhum no console, e a continuidade morre sem explicação aparente. É a armadilha mais fácil de cair nesta skill inteira. Os templates mira-studio já usam 'instant' pelo mesmo motivo.
5. A volta retrocede
Voltar da continuação para a origem não reinicia a história. Antes do corte seco, a continuação percorre o movimento para trás por cerca de um segundo e pousa em base; depois a origem reaparece no instante de entrega que havia gravado, com o loop de repouso ativo.
No palco declarativo, gravar(id, pose, ms) publica pose e relógio. Registre os relógios por palco em RELOGIOS: o relógio da continuação precisa aceitar um valor dirigido e o da origem precisa retomar com deslocamento. No rewind, pegue a fase corrente do ciclo e dirija quadro(ms) até zero com d3.easeSinInOut; o último quadro tem que chamar quadro(0) e devolver base exato. Nunca reproduza todo o tempo absoluto acumulado: no máximo um ciclo, senão a volta fica frenética depois de uma palestra longa.
A navegação arma uma flag one-shot antes do salto. Na ativação, a origem consome a flag e retoma no ms gravado; se não houver registro, usa o instante de repouso declarado pela origem. Sem flag, o relógio continua começando em zero: sair do par e retornar toca a história normalmente.
No palco imperativo, que não tem quadro(ms), faça o fallback percebido: tween da pose atual da continuação até a pose base na mesma duração. Ao entrar com a flag, a origem monta direto no estado final e pula apenas a coreografia de entrada; loops internos continuam rodando.
Duas guardas são obrigatórias:
Deep link na continuação: sem pose gravada, não invente movimento. Arme a flag e salte seco; a origem cai no repouso declarado.
Novo comando durante o rewind: aborte timer ou tween e salte seco imediatamente, sem enfileirar navegação.
A transição global do deck é intocável
O corte seco vale para o par em sequência e para mais nada. Todo o resto do deck continua passando exatamente como passava antes, byte por byte. Isto não é preferência de estilo, é requisito: o corte só lê como continuidade porque as outras passagens são diferentes dele. Deck inteiro seco não tem par em sequência, tem deck sem transição.
Proibido, sem exceção:
Mexer no html { scroll-behavior: smooth } do CSS.
Trocar o 'smooth' das outras passagens, ou tirar o else do ternário.
Desligar o /mira-transition-dissolve do deck. O par pula o fade; os outros slides seguem esmaecendo.
Remover data-aos de qualquer seção que não seja a de continuação.
Encostar em scroll-snap, scroll-margin, #mira-progress ou na duração de qualquer transição existente.
A guarda é sempre condicional ao par.seco ? 'instant' : 'smooth', nunca um valor fixo. Valor fixo é o sintoma: se em algum ponto do patch você escreveu o comportamento novo sem o parSeq decidindo, você acabou de mudar o deck inteiro.
Antes de entregar, passe todos os outros slides do deck e confirme que a transição deles continua igual à de antes.
Em template de card (aula-capitulo, pitch-projeto, demo-tecnica) a coleção se chama cardSections e o índice vem de outro lugar, mas a guarda é a mesma. Deck com crossfade (/mira-transition-dissolve, mira-studio) já salta com behavior: 'instant' e o que precisa ser desligado é o esmaecimento: o par em sequência pula o dissolve() e chama o salto direto, senão o corte ganha um fade que é exatamente o que ele não pode ter.
Identidade visual, o que precisa bater entre os dois slides
Qualquer diferença aqui aparece como um piscar no corte.
Mesmo viewBox e mesmo preserveAspectRatio. No mira-default sai de graça, porque o palco() calcula pela caixa e as duas seções têm o mesmo tamanho.
Mesma cor, vinda do tema pelo mesmo COR.*. Nunca hex escrito à mão em um dos lados.
Mesmo raio, mesma espessura de traço, mesma opacidade, mesmo filtro nos atores herdados.
Mesma ordem de empilhamento: quem estava por cima continua por cima.
Gradiente e clipPath têm id derivado do svgId, então a continuação redefine os seus, com stops idênticos.
Mesmo fundo de seção.
data-aos fora da seção de continuação.
Passo a passo
Localize a <section> de origem no decks/<deck>/index.html e leia a função da animação inteira.
Ache o repouso. Que pose a origem tem no fim do ciclo? Se a origem não repousa, é o momento de dizer isso ao autor: a pose viva resolve o corte, mas uma origem que nunca para entrega uma pose diferente a cada execução, e a continuação fica imprevisível. O caminho normal é a origem ganhar um compasso de repouso no fim do ciclo, com o loop sustentado por deriva lenta.
Nomeie os atores herdados e monte a pose: só o que atravessa.
Instale o barramento se ainda não existir no deck, e a gravação na origem.
Beat sheet da continuação, temperamento herdado da origem, sem beat de entrada. O primeiro beat começa na pose.
Escreva a <section> nova logo depois da origem, com os marcadores, o mesmo título e o palco.
Escreva a função, criando os elementos já na pose, com poseEntrega(F) de plano B, e registre em ligar() ou em setupAnimationTriggers(), conforme o template.
Instale o retrocesso: relógios por palco, pose+instante gravados, repouso declarado e flag one-shot.
Aplique o corte seco e o rewind em todo caminho de navegação do deck, achado por busca de scrollIntoView.
Teste as bordas: deep link na continuação, segundo comando durante o rewind e retorno à origem vindo de fora do par.
Reporte o que o autor precisa olhar no navegador: ida sem salto, volta visível até o repouso e loop da origem ativo depois do pouso.
Portões de entrega
Marcadores data-mira-seq e data-mira-seq-de nas duas seções, id do par único no deck.
Barramento injetado uma vez só no deck.
Origem gravando a pose, com ms > 0 no palco declarativo.
Pose em coordenadas absolutas do viewBox, objeto novo a cada quadro.
Continuação travando com ms === 0 e caindo em poseEntrega(F) sem a origem.
poseEntrega(F) escrita com a mesma expressão do repouso da origem, sem número mágico.
Movimento da continuação devolve base exato em ms = 0, conta conferida.
Nenhuma entrada nos atores herdados: sem fade, sem stagger, sem escala 0, sem data-aos.
Loop interno perpétuo na continuação.
Título repetido, ou trocado com o mesmo número de linhas e o autor avisado.
Cor, raio, traço, opacidade e empilhamento idênticos nos atores herdados.
Corte seco com behavior: 'instant', nos dois sentidos, em TODOS os caminhos de navegação do deck, não só no teclado.
Barramento grava pose e relógio; origem declara o instante de repouso.
Volta dirige o relógio da continuação para trás em cerca de um segundo e pousa em base exato.
Flag one-shot consumida pela origem: retoma no instante gravado; vindo de fora do par, começa do zero.
Deep link volta sem rewind pelo plano B; novo comando durante rewind aborta e salta sem fila.
Palco imperativo usa tween até a pose base e monta a origem no estado final.
Transição global intacta: guarda sempre condicional ao par, CSS de rolagem não tocado, dissolve e AOS dos outros slides preservados, passagens restantes conferidas uma a uma.
Anti-vazamento preservado, deck não reordenado, nada mais tocado.
Limites conhecidos, diga na entrega
A roda do mouse não aciona o rewind. Ela é rolagem direta do espectador, não um comando da navegação do deck.
Controle remoto pendente. O caminho do remoto ainda depende da correção BUG-20260818-R7MC; até ela convergir, não declare a volta remota como verificada.
Continuação sem origem cai no plano B. É por isso que o plano B é obrigatório.
Origem sem repouso entrega pose imprevisível. A continuação nasce correta de qualquer jeito, mas o autor não controla onde a cena começa.
Modo cinema: se a origem usa MiraCinema, a câmera também faz parte da pose. Entregue cena.camera junto ou deixe as duas cenas na mesma posição de câmera, senão o corte tem zoom.
Exemplo completo
references/exemplo-bola.html é um deck de verdade, no mira-default, que abre por file:// e roda: a bola quica e para no centro, o slide seguinte continua dali e a volta retrocede até o repouso. Três slides, porque o primeiro existe para dar o contraste da rolagem suave contra o corte seco. As cinco peças do contrato estão implementadas e comentadas no lugar onde moram, e o cabeçalho do arquivo traz o que conferir no navegador.
Antes de escrever a sua, abra ele e passe os slides. É mais rápido que ler a especificação de novo.