| name | mira-new |
| description | Porta de entrada para um novo deck do Mira: coleta requisitos conversacionalmente e monta a pasta em decks/ pronta para o pipeline. NÃO gera slides, só prepara o terreno. Use SEMPRE que o usuário disser /mira-new, novo deck, nova apresentação, criar deck, começar slides sobre, quero fazer slides de, novo tema de slides, iniciar uma apresentação, cria uma pasta de slides, ou pedir para começar uma apresentação do zero sobre algum assunto. |
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>/ (com references/) 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 no mira.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.md e 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 com index.html é um template), incluindo os do /mira-image-template, que aparecem lá automaticamente.
mira-default vem 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 o mira-default sem 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 texto
-
Tema base (identidade visual). Liste dinamicamente varrendo mira-templates/themes/ (cada .css, exceto base.css, é um tema). Built-in: mira-dark (default, laranja), light-minimal, corporate-blue e neon-emerald; temas do /mira-image-template aparecem 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 #RRGGBB ou 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.md já 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 o new ignora o --theme e mantém o bloco @MIRA:THEME neutro 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" do mira-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 --theme normalmente. 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" do mira-animator.
Use aula-capitulo quando 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. Copie mira-templates/decks/<template>/index.html para decks/<deck_id>/index.html, substitua o bloco entre os marcadores @MIRA:THEME pelo CSS de mira-templates/themes/<tema>.css seguido de mira-templates/themes/base.css, e adicione o deck em mira.config.json (decks[]). O CLI só conhece decks e temas built-in, então templates/temas derivados de imagem precisam desta montagem local. Depois, rode node 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. Rode npx mira-animator edit "decks/<deck_id>"; sem npx, copie mira-edit.js, mira-edit-free.js e mira-draw.js de mira-templates/authoring/ para decks/<deck_id>/mira/ e injete antes do </body> as três tags <script defer src="mira/..."> (com mira-edit-free.js depois de mira-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: balance na 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
.md em references/.
- 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-extract vai 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 crie decks/<deck_id>/ com references/, assets/vendor/ e mira/ 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á em references/. Só peça outro nome quando existir decks/<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 em mira.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.