Transforma o TEXTO de uma história (normalmente infantil) num deck do Mira que é a animação completa dela: cenas contínuas com câmera, closes por dissolve, clima e paleta que mudam com a emoção, atores em SVG de fonte aberta, legendas de conto com narração em voz (edge-tts), música de fundo, capa com QR code e servidor na rede local para rodar no celular ou tablet em tela cheia. O modelo só escreve DADOS (mira/historia.js) num vocabulário fechado; o runtime versionado mira-history.js anima. Use SEMPRE que o usuário disser /mira-history, "anima essa história", "história animada", "conto infantil animado", "transforma essa história em animação", "historinha para o celular", "contar essa história com narração", ou colar um conto e pedir animação. NÃO é para explicar conceito (isso é /mira-animator e /mira-sequence-director) nem para deck de slides comum.
Skill: /mira-history, do texto da história à animação completa
O autor cola uma história. Você entrega uma pasta em decks/ que abre com duplo clique no index.html e conta a história sozinha: cenas animadas, narração, música, botão verde para avançar, tela cheia, QR na capa para o celular.
Você não escreve código de animação. Você escreve um roteiro e um arquivo de dados (mira/historia.js) num vocabulário fechado. Tudo que é difícil (continuidade, câmera, parallax, chuva, neve, névoa, partículas, raio, tremor, reflexo na água, legendas sincronizadas com a voz, música com ducking, trava de avanço, dissolve, rewind, tela cheia, deslizar, QR, modo leve para celular, pausa, modo automático) já está no runtime mira/mira-history.js, que é copiado pronto.
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.
Leia antes de qualquer coisa
references/vocabulario.md inteiro. É a lista fechada do que o runtime entende. Campo fora dela é erro.
references/exemplo-historia.js: O Patinho Feio completo, 15 cenas. Copie a estrutura dele e adapte. Não invente estrutura.
references/roteiro-gabarito.md: o formato do roteiro que você escreve antes do historia.js.
Onde estão os scripts
Nesta pasta, em scripts/. Chame por node <pasta-desta-skill>/scripts/<script>.mjs. Instalado num projeto, a pasta é .claude/skills/mira-history/ (ou .agents/skills/mira-history/). No repositório do Mira, agents/mira-history/. Todos são Node puro; conferir.mjs e a medição de caixa do ator.mjs usam o Chrome da máquina com o puppeteer do projeto (opcional, mas sem eles você entrega às cegas).
Entradas
A história, em texto. Obrigatória.
Título: o da história, ou pergunte. Mínimo 3 palavras para ser narrado (senão capaSemVoz: true).
Música: liste o catálogo templates/history/musicas/ (ou mira-templates/history/musicas/) e pergunte qual; o autor também pode apontar um mp3. Sem resposta, use a primeira do catálogo. A skill não gera música.
Voz: padrão pt-BR-ThalitaMultilingualNeural, 12% mais lenta e tom -4Hz (suave, de conto). Outras vozes pt-BR do edge-tts: pt-BR-AntonioNeural (masculina), pt-BR-FranciscaNeural.
Cria decks/AAAA-MM-DD <slug>/ com toda a árvore (references/, assets/atores, assets/narracao, assets/vendor, mira/), o runtime, os módulos E e P, fonte, QR, launchers abrir-no-celular.bat e .command, a música e uma cópia do catálogo de atores em references/assets/catalogo/. Imprime a lista de músicas e de atores do catálogo. Nada é criado à mão.
Passo 2, o roteiro
Escreva references/history-roteiro.md no formato do gabarito. Quebre a história em 8 a 14 cenas (teto 16), cada uma com: id, lugar, corte ou não, emoção, paleta e clima, câmera, ação principal, quem entra e sai, 1 ou 2 frases de legenda.
Regras de ritmo, que o validar.mjs cobra como aviso:
Primeira cena capa (um cartaz da história: o protagonista no lugar mais bonito, título, e os botões "Começar a história" e "Tocar tudo sozinho"). Última com fim: true.
A cada 2 ou 3 cenas, um corte por dissolve para um close. Plano aberto o tempo todo é o defeito número 1 (foi o que fez a primeira versão do deck de referência ser rejeitada).
Pelo menos 3 paletas de céu ao longo da história. A cor conta a emoção.
Momento de medo, trovão ou susto tem raio, tremor ou tensao.
Troca de lugar (quintal, caminho, lago) coincide com corte.
Legendas: frases curtas, fiéis ao texto original (é a fala do narrador), nenhuma com menos de 3 palavras, no máximo 2 por cena. O texto da história é a narração; não invente diálogo.
Passo 3, os atores
Regra herdada do /mira-asset-scout: animal, pessoa, veículo e objeto detalhado nunca são desenhados à mão. Vêm de SVG.
Catálogo primeiro.novo.mjs listou os atores do catálogo (patinho, patinho-cinza, pata, cisne, galinha, gato, ganso, arvore, pinheiro-neve, taboa, e o que for acrescentado). Para cada um que a história usa:
Não está no catálogo: busque na web, licença aberta. Fontes, nesta ordem: Openclipart (tudo CC0; a busca é https://openclipart.org/search/?query=<termo> e o download é https://openclipart.org/download/<id>/x.svg), unDraw, Open Peeps, Wikimedia Commons (confira a licença item a item). Prefira desenho de lado (perfil), estilo cartoon limpo, poucos caminhos (arquivo até ~60 KB). Baixe para uma pasta temporária e instale:
O script normaliza (remove metadados, prefixa ids, mede a caixa visível), guarda o original em references/assets/, o normalizado em assets/atores/, anota references/CREDITS.md e regrava mira/atores.js.
Variantes por recoloração. Um patinho cinza é o patinho amarelo recolorido: --cor "#ddc177=#9aa2ab" (repita --cor por cor). Liste as cores do SVG com grep -o 'fill:#[0-9a-f]*' arquivo.svg | sort | uniq -c. Silhueta sem cor declarada ganha cor com --fill "#4E7A3A".
Sem web nesta sessão ou não achou: diga isso em uma linha e ofereça: (a) o autor manda o SVG; (b) troca por um ator do catálogo parecido (um ganso no lugar de um pato); (c) a cena passa a ser contada sem esse personagem em tela. Sem resposta, siga pela (b). Nunca desenhe o animal.
Ovos são procedurais: { tipo: 'ovo' }. Sol, lua, nuvens, chuva, neve, névoa, colinas, água, celeiro, cerca, juncos: o runtime desenha.
Confira o sentido de cada ator (obrigatório). O runtime espelha o sprite pela direção em que ele anda, a partir do campo olha. Se você declarar olha: 'direita' para um desenho que olha para a esquerda, o ator anda de costas a história inteira. Não adivinhe pelo nome do arquivo:
node <skill>/scripts/ator.mjs "<deck>" ver
gera references/atores.png com cada ator grande. Abra a imagem e anote, para cada um, para que lado a cabeça aponta. Esse é o olha. Quem se move ou vira sem olha declarado é erro no validador.
Passo 4, escrever mira/historia.js
Copie o references/exemplo-historia.js e adapte: atores, lugares, cenas. Só o vocabulário do vocabulario.md. Tempos em segundos. O que mais dá errado, e como evitar:
Reposicionar um ator no começo de uma cena sem corte. O mundo é contínuo: quem já está em cena continua onde parou. Use mover, não mostrar de novo.
Esquecer de mostrar quem entra num lugar novo. Mudar de lugar esconde todo mundo; quem aparece precisa de mostrar (com dur: 0.01 se já deve estar lá no primeiro quadro).
Legenda de 1 ou 2 palavras. A voz troca de idioma. Mínimo 3.
Duas ações disputando o mesmo ator ao mesmo tempo (dois mover sobrepostos). Encadeie: ate de uma é o de da próxima.
Câmera close sem alvo. Close mira um ator: alvo: 'feio'.
Ator que aparece de pé na água. Na água use a linha agua.* e modo: 'nadar' ou 'boiar'; o runtime desenha o reflexo.
Cena muito longa sem nada acontecendo. Se a fala dura 8 s, dê 8 s de ação (andar, olhar, tremer, câmera aproximando).
Clima que não vai embora.ambiente só mexe nos canais citados: ao sair da tempestade escreva chuva: 0, nuvens: 0.2, frio: 0; ao sair do inverno, neve: 0, gelo: 0.
Passo 5, validar, narrar, conferir (obrigatório, nesta ordem)
node <skill>/scripts/validar.mjs "<deck>" # erros bloqueiam; avisos são revisão
node <skill>/scripts/narrar.mjs "<deck>" # gera 1 mp3 por frase e mede a duração
node <skill>/scripts/conferir.mjs "<deck>" # screenshots de cada cena em 3 instantes + folha.png
node <skill>/scripts/conferir.mjs "<deck>" --movimentos # um quadro por movimento, com seta: ninguém anda de costas
validar.mjs rejeita campo desconhecido, ator inexistente, variante inexistente, ponto inválido, frase curta. Corrija até OK.
narrar.mjs só regera o que mudou (cache por texto e voz). Sem ele, o runtime estima a duração pela contagem de palavras.
conferir.mjs --movimentos grava folha-movimentos.png: um quadro no meio de cada mover, com uma seta vermelha em cima do ator dizendo para onde ele anda. Abra e confira: a cabeça do ator tem que apontar para a seta. Ator de costas para a seta = olha invertido em historia.js; corrija e rode de novo. Esta conferência é obrigatória antes de entregar.
conferir.mjs grava em references/conferencia/ e monta folha.png. Abra a folha e olhe cada quadro: ator faltando, ator flutuando, texto em cima de rosto, câmera cortando o personagem, paleta parada. Corrija o historia.js e rode de novo. Com --leve simula celular. Com --cena c3 --instantes 1s,4s mira um problema.
Toda mudança em legenda pede narrar.mjs de novo (os tempos dependem da voz).
Não entregue sem ter olhado a folha da versão final. O deck de referência levou 25 rodadas de ajuste com o autor; o mínimo que você faz é olhar o que gerou.
Passo 6, entrega
Diga ao autor, em poucas linhas:
O caminho do deck e que o index.html abre com duplo clique.
Que abrir-no-celular.bat (ou .command) sobe o servidor na rede, abre o navegador e mostra o QR na capa; celular e tablet na mesma rede Wi-Fi leem o QR; tela cheia pelo botão (no iPhone o Safari não permite tela cheia).
Na capa, "Começar a história" avança cena a cena (botão verde) e "Tocar tudo sozinho" conta a história inteira sem toque. As teclas: seta ou clique avança quando o botão fica verde; espaço pausa; A liga ou desliga o modo automático; M som; F tela cheia; R reinicia a cena; E edita; P pinta.
Número de cenas, duração total (o conferir.mjs imprime), voz e música usadas.
O que ficou de fora e por quê (ator não encontrado, cena simplificada).
Portões de entrega
Pasta criada por novo.mjs, com references/, assets/atores, assets/narracao, mira/ e os launchers.
references/history-roteiro.md escrito antes do historia.js.
Todo ator concreto vem de SVG do catálogo ou da web com licença anotada em references/CREDITS.md; nenhum desenhado à mão.
historia.js só com o vocabulário; validar.mjs em OK.
Capa com título e QR; última cena com fim: true.
Pelo menos 2 closes por dissolve, 3 paletas, 1 tremor ou raio onde há tensão.
Narração gerada por narrar.mjs, nenhuma frase com menos de 3 palavras.
conferir.mjs rodado na versão final, folha olhada, sem erro no console.
ator.mjs ver olhado e olha declarado para todo ator que se move; conferir.mjs --movimentos olhado: nenhum ator anda de costas.
Módulos E e P presentes em mira/ e referenciados no index.html (o template já traz).
Entrega com caminho, launcher do celular, teclas e duração.
Limites conhecidos, diga na entrega
Sprites rígidos. Os atores não têm braço, asa ou boca articulados: a expressão vem de variantes (outro SVG) e do movimento de corpo inteiro (tremer, balançar, pular). Um close mostra o desenho maior, não um rosto que muda.
Sem web, sem ator novo. O catálogo cobre bicho de fazenda e lago; fora disso depende de busca ou do autor.
Áudio no celular começa no botão Começar (política de autoplay). O iPhone ignora controle de volume da música, então o ducking na fala não acontece lá.
View Transitions (dissolve) existe no Chrome, Edge e Safari 18+; nos outros o corte é um véu preto rápido.
A roda do mouse é ignorada: a navegação é pelos botões, setas e deslizar.
1---2name: mira-history3description: Transforma o TEXTO de uma história (normalmente infantil) num deck do Mira que é a animação completa dela: cenas contínuas com câmera, closes por dissolve, clima e paleta que mudam com a emoção, atores em SVG de fonte aberta, legendas de conto com narração em voz (edge-tts), música de fundo, capa com QR code e servidor na rede local para rodar no celular ou tablet em tela cheia. O modelo só escreve DADOS (mira/historia.js) num vocabulário fechado; o runtime versionado mira-history.js anima. Use SEMPRE que o usuário disser /mira-history, "anima essa história", "história animada", "conto infantil animado", "transforma essa história em animação", "historinha para o celular", "contar essa história com narração", ou colar um conto e pedir animação. NÃO é para explicar conceito (isso é /mira-animator e /mira-sequence-director) nem para deck de slides comum.4---56# Skill: /mira-history, do texto da história à animação completa78O autor cola uma história. Você entrega uma pasta em `decks/` que abre com duplo clique no `index.html` e conta a história sozinha: cenas animadas, narração, música, botão verde para avançar, tela cheia, QR na capa para o celular.910Você **não escreve código de animação**. Você escreve um roteiro e um arquivo de dados (`mira/historia.js`) num vocabulário fechado. Tudo que é difícil (continuidade, câmera, parallax, chuva, neve, névoa, partículas, raio, tremor, reflexo na água, legendas sincronizadas com a voz, música com ducking, trava de avanço, dissolve, rewind, tela cheia, deslizar, QR, modo leve para celular, pausa, modo automático) já está no runtime `mira/mira-history.js`, que é copiado pronto.1112## REGRA DE IDIOMA1314Siga `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.1516## Leia antes de qualquer coisa17181. `references/vocabulario.md` inteiro. É a lista fechada do que o runtime entende. Campo fora dela é erro.192. `references/exemplo-historia.js`: O Patinho Feio completo, 15 cenas. **Copie a estrutura dele e adapte.** Não invente estrutura.203. `references/roteiro-gabarito.md`: o formato do roteiro que você escreve antes do `historia.js`.2122## Onde estão os scripts2324Nesta pasta, em `scripts/`. Chame por `node <pasta-desta-skill>/scripts/<script>.mjs`. Instalado num projeto, a pasta é `.claude/skills/mira-history/` (ou `.agents/skills/mira-history/`). No repositório do Mira, `agents/mira-history/`. Todos são Node puro; `conferir.mjs` e a medição de caixa do `ator.mjs` usam o Chrome da máquina com o puppeteer do projeto (opcional, mas sem eles você entrega às cegas).2526## Entradas2728- **A história**, em texto. Obrigatória.29- **Título**: o da história, ou pergunte. Mínimo 3 palavras para ser narrado (senão `capaSemVoz: true`).30- **Música**: liste o catálogo `templates/history/musicas/` (ou `mira-templates/history/musicas/`) e pergunte qual; o autor também pode apontar um mp3. Sem resposta, use a primeira do catálogo. A skill não gera música.31- **Voz**: padrão `pt-BR-ThalitaMultilingualNeural`, 12% mais lenta e tom -4Hz (suave, de conto). Outras vozes pt-BR do edge-tts: `pt-BR-AntonioNeural` (masculina), `pt-BR-FranciscaNeural`.3233## Passo 1, criar o deck3435```36node <skill>/scripts/novo.mjs <slug> --titulo "<Título>" --musica <nome-do-mp3-do-catálogo>37```3839Cria `decks/AAAA-MM-DD <slug>/` com toda a árvore (`references/`, `assets/atores`, `assets/narracao`, `assets/vendor`, `mira/`), o runtime, os módulos E e P, fonte, QR, launchers `abrir-no-celular.bat` e `.command`, a música e uma cópia do catálogo de atores em `references/assets/catalogo/`. Imprime a lista de músicas e de atores do catálogo. **Nada é criado à mão.**4041## Passo 2, o roteiro4243Escreva `references/history-roteiro.md` no formato do gabarito. Quebre a história em **8 a 14 cenas** (teto 16), cada uma com: id, lugar, corte ou não, emoção, paleta e clima, câmera, ação principal, quem entra e sai, 1 ou 2 frases de legenda.4445Regras de ritmo, que o `validar.mjs` cobra como aviso:4647- Primeira cena `capa` (um cartaz da história: o protagonista no lugar mais bonito, título, e os botões "Começar a história" e "Tocar tudo sozinho"). Última com `fim: true`.48- **A cada 2 ou 3 cenas, um corte por dissolve para um close.** Plano aberto o tempo todo é o defeito número 1 (foi o que fez a primeira versão do deck de referência ser rejeitada).49- Pelo menos **3 paletas de céu** ao longo da história. A cor conta a emoção.50- Momento de medo, trovão ou susto tem `raio`, `tremor` ou `tensao`.51- Troca de lugar (quintal, caminho, lago) coincide com corte.52- **Legendas:** frases curtas, fiéis ao texto original (é a fala do narrador), nenhuma com menos de 3 palavras, no máximo 2 por cena. O texto da história é a narração; não invente diálogo.5354## Passo 3, os atores5556Regra herdada do `/mira-asset-scout`: **animal, pessoa, veículo e objeto detalhado nunca são desenhados à mão.** Vêm de SVG.57581. **Catálogo primeiro.** `novo.mjs` listou os atores do catálogo (patinho, patinho-cinza, pata, cisne, galinha, gato, ganso, arvore, pinheiro-neve, taboa, e o que for acrescentado). Para cada um que a história usa:59 ```60 node <skill>/scripts/ator.mjs "<deck>" catalogo <nome>61 ```622. **Não está no catálogo: busque na web, licença aberta.** Fontes, nesta ordem: Openclipart (tudo CC0; a busca é `https://openclipart.org/search/?query=<termo>` e o download é `https://openclipart.org/download/<id>/x.svg`), unDraw, Open Peeps, Wikimedia Commons (confira a licença item a item). Prefira desenho de lado (perfil), estilo cartoon limpo, poucos caminhos (arquivo até ~60 KB). Baixe para uma pasta temporária e instale:63 ```64 node <skill>/scripts/ator.mjs "<deck>" add <nome> <arquivo.svg> --de <url> --autor "<autor>" --licenca CC065 ```66 O script normaliza (remove metadados, prefixa ids, mede a caixa visível), guarda o original em `references/assets/`, o normalizado em `assets/atores/`, anota `references/CREDITS.md` e regrava `mira/atores.js`.673. **Variantes por recoloração.** Um patinho cinza é o patinho amarelo recolorido: `--cor "#ddc177=#9aa2ab"` (repita `--cor` por cor). Liste as cores do SVG com `grep -o 'fill:#[0-9a-f]*' arquivo.svg | sort | uniq -c`. Silhueta sem cor declarada ganha cor com `--fill "#4E7A3A"`.684. **Sem web nesta sessão ou não achou:** diga isso em uma linha e ofereça: (a) o autor manda o SVG; (b) troca por um ator do catálogo parecido (um ganso no lugar de um pato); (c) a cena passa a ser contada sem esse personagem em tela. Sem resposta, siga pela (b). Nunca desenhe o animal.695. Ovos são procedurais: `{ tipo: 'ovo' }`. Sol, lua, nuvens, chuva, neve, névoa, colinas, água, celeiro, cerca, juncos: o runtime desenha.706. **Confira o sentido de cada ator (obrigatório).** O runtime espelha o sprite pela direção em que ele anda, a partir do campo `olha`. Se você declarar `olha: 'direita'` para um desenho que olha para a esquerda, o ator **anda de costas** a história inteira. Não adivinhe pelo nome do arquivo:71 ```72 node <skill>/scripts/ator.mjs "<deck>" ver73 ```74 gera `references/atores.png` com cada ator grande. **Abra a imagem** e anote, para cada um, para que lado a cabeça aponta. Esse é o `olha`. Quem se move ou vira sem `olha` declarado é erro no validador.7576## Passo 4, escrever `mira/historia.js`7778Copie o `references/exemplo-historia.js` e adapte: atores, lugares, cenas. Só o vocabulário do `vocabulario.md`. Tempos em segundos. O que mais dá errado, e como evitar:7980- **Reposicionar um ator no começo de uma cena sem corte.** O mundo é contínuo: quem já está em cena continua onde parou. Use `mover`, não `mostrar` de novo.81- **Esquecer de mostrar quem entra num lugar novo.** Mudar de `lugar` esconde todo mundo; quem aparece precisa de `mostrar` (com `dur: 0.01` se já deve estar lá no primeiro quadro).82- **Legenda de 1 ou 2 palavras.** A voz troca de idioma. Mínimo 3.83- **Duas ações disputando o mesmo ator ao mesmo tempo** (dois `mover` sobrepostos). Encadeie: `ate` de uma é o `de` da próxima.84- **Câmera `close` sem alvo.** Close mira um ator: `alvo: 'feio'`.85- **Ator que aparece de pé na água.** Na água use a linha `agua.*` e `modo: 'nadar'` ou `'boiar'`; o runtime desenha o reflexo.86- **Cena muito longa sem nada acontecendo.** Se a fala dura 8 s, dê 8 s de ação (andar, olhar, tremer, câmera aproximando).87- **Clima que não vai embora.** `ambiente` só mexe nos canais citados: ao sair da tempestade escreva `chuva: 0, nuvens: 0.2, frio: 0`; ao sair do inverno, `neve: 0, gelo: 0`.8889## Passo 5, validar, narrar, conferir (obrigatório, nesta ordem)9091```92node <skill>/scripts/validar.mjs "<deck>" # erros bloqueiam; avisos são revisão93node <skill>/scripts/narrar.mjs "<deck>" # gera 1 mp3 por frase e mede a duração94node <skill>/scripts/conferir.mjs "<deck>" # screenshots de cada cena em 3 instantes + folha.png95node <skill>/scripts/conferir.mjs "<deck>" --movimentos # um quadro por movimento, com seta: ninguém anda de costas96```9798- `validar.mjs` rejeita campo desconhecido, ator inexistente, variante inexistente, ponto inválido, frase curta. Corrija até `OK`.99- `narrar.mjs` só regera o que mudou (cache por texto e voz). Sem ele, o runtime estima a duração pela contagem de palavras.100- `conferir.mjs --movimentos` grava `folha-movimentos.png`: um quadro no meio de cada `mover`, com uma seta vermelha em cima do ator dizendo para onde ele anda. **Abra e confira: a cabeça do ator tem que apontar para a seta.** Ator de costas para a seta = `olha` invertido em `historia.js`; corrija e rode de novo. Esta conferência é obrigatória antes de entregar.101- `conferir.mjs` grava em `references/conferencia/` e monta `folha.png`. **Abra a folha e olhe** cada quadro: ator faltando, ator flutuando, texto em cima de rosto, câmera cortando o personagem, paleta parada. Corrija o `historia.js` e rode de novo. Com `--leve` simula celular. Com `--cena c3 --instantes 1s,4s` mira um problema.102- Toda mudança em legenda pede `narrar.mjs` de novo (os tempos dependem da voz).103104Não entregue sem ter olhado a folha da versão final. O deck de referência levou 25 rodadas de ajuste com o autor; o mínimo que você faz é olhar o que gerou.105106## Passo 6, entrega107108Diga ao autor, em poucas linhas:109110- O caminho do deck e que o `index.html` abre com duplo clique.111- Que `abrir-no-celular.bat` (ou `.command`) sobe o servidor na rede, abre o navegador e mostra o QR na capa; celular e tablet na mesma rede Wi-Fi leem o QR; tela cheia pelo botão (no iPhone o Safari não permite tela cheia).112- Na capa, "Começar a história" avança cena a cena (botão verde) e "Tocar tudo sozinho" conta a história inteira sem toque. As teclas: seta ou clique avança quando o botão fica verde; espaço pausa; A liga ou desliga o modo automático; M som; F tela cheia; R reinicia a cena; E edita; P pinta.113- Número de cenas, duração total (o `conferir.mjs` imprime), voz e música usadas.114- O que ficou de fora e por quê (ator não encontrado, cena simplificada).115116## Portões de entrega117118- [ ] Pasta criada por `novo.mjs`, com `references/`, `assets/atores`, `assets/narracao`, `mira/` e os launchers.119- [ ] `references/history-roteiro.md` escrito antes do `historia.js`.120- [ ] Todo ator concreto vem de SVG do catálogo ou da web com licença anotada em `references/CREDITS.md`; nenhum desenhado à mão.121- [ ] `historia.js` só com o vocabulário; `validar.mjs` em `OK`.122- [ ] Capa com título e QR; última cena com `fim: true`.123- [ ] Pelo menos 2 closes por dissolve, 3 paletas, 1 tremor ou raio onde há tensão.124- [ ] Narração gerada por `narrar.mjs`, nenhuma frase com menos de 3 palavras.125- [ ] `conferir.mjs` rodado na versão final, folha olhada, sem erro no console.126- [ ] `ator.mjs ver` olhado e `olha` declarado para todo ator que se move; `conferir.mjs --movimentos` olhado: nenhum ator anda de costas.127- [ ] Módulos E e P presentes em `mira/` e referenciados no `index.html` (o template já traz).128- [ ] Entrega com caminho, launcher do celular, teclas e duração.129130## Limites conhecidos, diga na entrega131132- **Sprites rígidos.** Os atores não têm braço, asa ou boca articulados: a expressão vem de variantes (outro SVG) e do movimento de corpo inteiro (tremer, balançar, pular). Um close mostra o desenho maior, não um rosto que muda.133- **Sem web, sem ator novo.** O catálogo cobre bicho de fazenda e lago; fora disso depende de busca ou do autor.134- **Áudio no celular** começa no botão Começar (política de autoplay). O iPhone ignora controle de volume da música, então o ducking na fala não acontece lá.135- **View Transitions** (dissolve) existe no Chrome, Edge e Safari 18+; nos outros o corte é um véu preto rápido.136- **A roda do mouse é ignorada**: a navegação é pelos botões, setas e deslizar.
Run npx skillmds@latest add sandeco/mira-history in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Transforma o TEXTO de uma história (normalmente infantil) num deck do Mira que é a animação completa dela: cenas contínuas com câmera, closes por dissolve, clima e paleta que mudam com a emoção, atores em SVG de fonte aberta, legendas de conto com narração em voz (edge-tts), música de fundo, capa com QR code e servidor na rede local para rodar no celular ou tablet em tela cheia. O modelo só escreve DADOS (mira/historia.js) num vocabulário fechado; o runtime versionado mira-history.js anima. Use SEMPRE que o usuário disser /mira-history, "anima essa história", "história animada", "conto infantil animado", "transforma essa história em animação", "historinha para o celular", "contar essa história com narração", ou colar um conto e pedir animação. NÃO é para explicar conceito (isso é /mira-animator e /mira-sequence-director) nem para deck de slides comum. It is listed under Docs & Writing on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
sandeco (@sandeco) published this skill. Their other Agent Skills are listed on their SkillMD profile.