Skill: Novo Deck (Mira)
Objetivo
Porta de entrada de uma nova apresentação. Numa conversa curta, colete o que o Mira precisa para montar a pasta do tema e deixe tudo pronto para o pipeline (/mira-extract → /mira-planner → /mira-builder → ...).
- FAZ: cria a estrutura de
decks/<tema>/(comreferences/) na primeira ação, para o usuário já ter onde soltar o material-fonte; depois monta o deck a partir de um template, aplica o tema base, opcionalmente sobrescreve a cor principal e registra o deck nomira.config.json. - NÃO FAZ: não escreve conteúdo de slide, não extrai briefing, não anima. A skill para no setup e oferece o próximo passo.
Regra de ouro
Tudo o que esta skill cria ou edita vive dentro de decks/<deck_id>/. Nunca toque em arquivos fora de decks/, com a única exceção de registrar o deck no mira.config.json da raiz.
Fluxo de Execução
Passo 1: Criar a estrutura — primeira ação obrigatória
Esta é uma ordem operacional: a primeira ação da skill é criar a pasta do deck e toda a árvore interna, de uma vez. Antes disso, não faça pergunta, mensagem intermediária, leitura de referência, escolha de template, planejamento ou geração. references/, assets/, assets/vendor/ e mira/ não podem ser adiadas para outro passo.
Derive o slug diretamente do pedido em kebab-case, minúsculo e sem acento. Se o usuário chamou apenas /mira-new, use novo-deck; em colisão com deck já construído, use novo-deck-2, novo-deck-3 etc. Defina deck_id = YYYY-MM-DD <slug>, usando a data local atual e exatamente um espaço. Exemplo: 2026-07-31 spec-driven-development. Não pergunte o nome antes de criar. O nome pode ser refinado depois, mas a pasta precisa existir primeiro.
Crie imediatamente:
decks/<deck_id>/
decks/<deck_id>/references/
decks/<deck_id>/assets/
decks/<deck_id>/assets/vendor/
decks/<deck_id>/mira/
Isso não é detalhe de ordem, é o ponto da skill. Sem a pasta no disco, o usuário não tem onde soltar o PDF, o print ou o documento que ele já tem na mão, e a conversa trava. A pasta primeiro, as escolhas depois.
Se decks/<deck_id>/index.html já existir, aí sim é um deck montado de verdade: avise e pergunte se é para usar outro nome. Se só a pasta existir, sem index.html, é esqueleto de uma sessão anterior: retome dentro dele, liste o que já tem em references/ e siga. Nunca peça outro nome nesse caso.
Com as pastas criadas, pare e ofereça os dois caminhos, sempre com o caminho absoluto da pasta de referências (caminho relativo não ajuda quem vai arrastar arquivo no explorador):
"Criei a estrutura em
<caminho absoluto de decks/<deck_id>>. A pasta de referências está pronta:<caminho absoluto de decks/<deck_id>/references>Como você prefere começar? 1. Me contar aqui no chat do que trata a apresentação, e eu já registro. 2. Colocar os arquivos (PDF, doc, prints, links) nessa pasta e me avisar quando terminar."
Trate a resposta assim, e nos dois casos o material tem que acabar dentro de references/:
- Escolheu 1 (texto no chat): ouça a descrição e salve na hora como
decks/<deck_id>/references/_tema.md. Não deixe para depois. - Escolheu 2 (vai soltar arquivos): espere o aviso. Quando ele disser que terminou, liste o que você encontrou em
references/antes de continuar. Se estiver vazia, diga isso e pergunte se ele quer descrever por texto no lugar. - Os dois: vale, salve o
_tema.mde liste os arquivos.
Só depois de ter referência ou descrição registrada siga para o Passo 2.
Passo 2: Coletar o resto dos requisitos (conversacional)
Pergunte de forma objetiva, com os defaults entre parênteses. Se o usuário já adiantou uma resposta, não pergunte de novo.
Template do deck (esqueleto). Liste dinamicamente varrendo
mira-templates/decks/(cada subpasta comindex.htmlé um template), incluindo os do/mira-image-template, que aparecem lá automaticamente.mira-defaultvem SEMPRE em primeiro na lista, com o rótulo(recomendado)ao lado. Os demais seguem em ordem alfabética. Mostre todos e deixe o usuário escolher: recomendado não é obrigatório. Se ele não escolher nenhum, use omira-defaultsem perguntar de novo.1. mira-default (recomendado) — título em cima, animação ocupando o slide inteiro 2. aula-capitulo — aula ou palestra a partir de um capítulo 3. demo-tecnica — demo técnica / walkthrough 4. pitch-projeto — pitch de projeto 5. sandeco-just-animation-template — palco preto, só animação, sem textoTema base (identidade visual). Liste dinamicamente varrendo
mira-templates/themes/(cada.css, excetobase.css, é um tema). Built-in:mira-dark(default, laranja),light-minimal,corporate-blueeneon-emerald; temas do/mira-image-templateaparecem aqui também. Se o template escolhido tiver um tema de mesmo nome (templates derivados de imagem), use-o como padrão desse template, pois é a identidade que veio da imagem; o usuário ainda pode escolher outro.Cor principal (opcional). Sem pedido, use a cor do tema base. Se pedir uma cor (hex
#RRGGBBou nome como "roxo"), converta para hex e trate como override no Passo 5. Confirme a cor.Descrição do tema, só se ele escolheu o caminho 2 no Passo 1 e ainda não descreveu nada. Uma ou duas frases: do que trata, para quem, qual o objetivo. Salve como
references/_tema.md. Se o_tema.mdjá existe, pule.
Passo 3: Montar o deck
Para os templates built-in (mira-default, aula-capitulo, pitch-projeto, demo-tecnica, sandeco-just-animation-template) com um tema built-in, use o comando canônico do Mira, que copia o esqueleto, injeta o CSS do tema e registra no config:
npx mira-animator new "<deck_id>" --deck=<template> --theme=<tema-base>
A pasta já existe desde o Passo 1, e isso não é problema: o CLI só recusa quando encontra um index.html montado, então ele escreve dentro do esqueleto e preserva o que estiver em references/.
Isso cria decks/<deck_id>/index.html com o tema base embutido (entre /* @MIRA:THEME:START */ e /* @MIRA:THEME:END */). O comando já deixa o deck offline por padrão: copia as libs vendoradas (Tailwind, AOS, Lucide, D3, fonte Inter, embarcadas na instalação) para decks/<deck_id>/assets/vendor/ e aponta o <head> para elas. O deck abre por file:// sem internet e passa em firewall corporativo. Nada é baixado.
Caso especial,
sandeco-just-animation-template: deck de animação pura, multi-slide (cada<section>é uma animação de tela cheia, sem títulos nem texto sobreposto), multicor e theme-agnóstico. Por isso onewignora o--themee mantém o bloco@MIRA:THEMEneutro do próprio template; a cor vive numa paleta livre (nenhuma predominante), não na cor única do tema. Não aplique override de cor aqui. O preenchimento segue a seção "Variante: sandeco-just-animation-template" domira-animator.
mira-defaulté o padrão. Se o usuário não escolher template, é este: um título em cima e a animação ocupando todo o resto do quadro 16:9, sem card, sem pílulas, sem moldura. Quadro 16:9 fixo com faixa cinza nas sobras, navegação por seta, modos E e P. Ao contrário do animation-pure, ele aceita--themenormalmente. Não tem câmera nem terços: quem vai gravar com webcam usa/mira-studio-full(16:9) ou/mira-studio(9:16). O preenchimento segue a seção "Variante: mira-default" domira-animator.Use
aula-capituloquando o deck for denso de conteúdo (tabela, código, timeline, comparativo): lá o slide é um card com texto ao redor da animação, que é outro trabalho.
Para templates ou temas do
/mira-image-template(e como fallback sem npx em qualquer caso): monte na mão a partir da cópia local. Copiemira-templates/decks/<template>/index.htmlparadecks/<deck_id>/index.html, substitua o bloco entre os marcadores@MIRA:THEMEpelo CSS demira-templates/themes/<tema>.cssseguido demira-templates/themes/base.css, e adicione o deck emmira.config.json(decks[]). O CLI só conhece decks e temas built-in, então templates/temas derivados de imagem precisam desta montagem local. Depois, rodenode mira-templates/vendor/apply-offline.mjs "decks/<deck_id>"para deixar esse deck offline (a montagem manual não passa pelo CLI, então não recebe o offline automático). Por fim, instale as ferramentas de autoria — a montagem manual não copia os módulos de edição/pintura. Rodenpx mira-animator edit "decks/<deck_id>"; sem npx, copiemira-edit.js,mira-edit-free.jsemira-draw.jsdemira-templates/authoring/paradecks/<deck_id>/mira/e injete antes do</body>as três tags<script defer src="mira/...">(commira-edit-free.jsdepois demira-edit.js).
Passo 4.5: Lembranças do usuário (memória de preferências)
Com o deck montado e antes de preencher qualquer slide, consulte o que este usuário já corrigiu em decks anteriores:
npx mira-animator memoria consolidar
npx mira-animator memoria lembrancas --papel capa --formato 16x9
npx mira-animator memoria lembrancas --papel conteudo --formato 16x9
Uma consulta por papel de slide (nota de escopo só aparece quando o papel dela é informado). Ajuste --formato ao deck.
- Lembrança ativa é orientação, não ordem: aplique onde o slide se encaixa no escopo dela.
- A marca manda acima da memória:
#FF904D,text-wrap: balancena capa e área segura continuam inegociáveis. - Nota candidata não é aplicada. Se aparecer alguma, avise em uma linha e siga.
- Se o comando falhar por qualquer motivo, gere normalmente e siga. Memória nunca trava a criação.
Passo 5: Aplicar a cor principal custom (só se houver override)
Se o usuário escolheu cor diferente da do tema base, edite o :root dentro dos marcadores @MIRA:THEME de decks/<deck_id>/index.html. A partir do hex #RRGGBB (componentes R, G, B em decimal), substitua somente estas variáveis derivadas da primária:
| Variável | Novo valor |
|---|---|
--mira-primary |
#RRGGBB |
--mira-glow-soft |
rgba(R, G, B, 0.15) |
--mira-glow-strong |
rgba(R, G, B, 0.25) |
--mira-icon-bg |
rgba(R, G, B, 0.15) |
--mira-icon-border |
rgba(R, G, B, 0.30) |
--mira-stage-glow |
rgba(R, G, B, 0.06) |
--mira-accent-2 |
tom mais claro da primária |
Para --mira-accent-2, clareie a primária misturando ~35% de branco: para cada componente, novo = round(C + (255 - C) * 0.35), e escreva em hex.
Não altere as demais variáveis (--mira-bg, --mira-text, --mira-text-soft, --mira-card-bg, --mira-card-border, --mira-pill-*). Elas pertencem ao tema base e garantem o contraste. Assim o override de cor compõe com qualquer tema base.
Passo 6: Fechar a intake de referências
A pasta decks/<deck_id>/references/ existe desde o Passo 1 e já pode ter material. Aqui você só absorve o que chegou depois. A intake segue as regras do /mira-references (copiar, nunca mover nem editar o original), aplicadas dentro de decks/:
- Caminho de arquivo/pasta: copie para
decks/<deck_id>/references/. - Texto colado: salve como
.mdemreferences/. - Link: registre em
decks/<deck_id>/references/fontes.md. - Descrição do tema: salve como
decks/<deck_id>/references/_tema.md(semente do briefing que o/mira-extractvai ler), se ainda não foi salva no Passo 1.
Se ainda não há material, tudo bem: repita o caminho absoluto da pasta e diga que ele pode soltar arquivos lá a qualquer momento. Para coletas maiores ou posteriores, acione o /mira-references.
Passo 7: Resumo e próximo passo
Mostre um resumo curto:
Deck criado: decks/<deck_id>/
Template: <template> | Tema: <tema-base> | Cor principal: <hex>
Referências: <n> arquivo(s) em decks/<deck_id>/references/
Depois ofereça o próximo passo (não execute sem confirmar):
"Pronto. Quer que eu acione o /mira-extract agora para gerar o briefing a partir das referências?"
Regras Inegociáveis
- A estrutura de pastas é literalmente a primeira ação. Derive o slug do pedido (ou use
novo-deck) e criedecks/<deck_id>/comreferences/,assets/vendor/emira/antes de qualquer pergunta, leitura, escolha ou planejamento. - Há duas paradas obrigatórias. A primeira logo depois de criar as pastas, para o usuário escolher entre descrever por texto ou soltar arquivos em
references/, sempre com o caminho absoluto à mostra. A segunda no fim, antes do pipeline. - Pasta existente sem
index.htmlé esqueleto, não conflito. Retome dentro dela e liste o que há emreferences/. Só peça outro nome quando existirdecks/<deck_id>/index.html. - A skill para no setup. Só siga para o pipeline após o usuário confirmar.
- Escreva apenas dentro de
decks/<deck_id>/(mais o registro emmira.config.json). Nunca edite o original de uma referência. - O tema base deve ser um dos temas válidos (built-in ou derivado de imagem via
/mira-image-template); a cor custom é aplicada por cima dele, só nas variáveis derivadas da primária. - Texto visível em português brasileiro com acentuação correta. Proibido travessão (—); use vírgula ou dois-pontos.