{"_id":"@elven-observability/decks-skill","_rev":"3-366c380c41da8fdcc50c9e2ed1d565d4","name":"@elven-observability/decks-skill","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@elven-observability/decks-skill","version":"0.1.0","keywords":["claude-code","anthropic","skill","presentation","deck","slides","elven","elven-observability","pt-br","lint","html","pdf","puppeteer"],"author":{"name":"Elven Works","email":"docs@elven.works"},"license":"MIT","_id":"@elven-observability/decks-skill@0.1.0","maintainers":[{"name":"elven_observability","email":"elven.observability@elven.works"}],"homepage":"https://github.com/elven-observability/elven-decks#readme","bugs":{"url":"https://github.com/elven-observability/elven-decks/issues"},"bin":{"decks-skill":"bin/decks-skill.js"},"dist":{"shasum":"4b08a119a9a7b8aeb164c42a010af793b6c62e79","tarball":"https://registry.npmjs.org/@elven-observability/decks-skill/-/decks-skill-0.1.0.tgz","fileCount":62,"integrity":"sha512-m1GGCOCU3HEylP7dU0dVP3HPbt1jA9PMcoKo07e1h2Lm/vBho+H0eY3HR3OVcM8ghwPEwgrdxSFClH1qQakqKA==","signatures":[{"sig":"MEUCIGIY1dQHbLJYA1oKLp2ro03yLudEaMRGdKNmhSLXQc+6AiEArzmWHDGdDcWhWZBTxnnFH/O0HMtwEJ1HzP0NOCghYmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283325},"engines":{"node":">=18"},"gitHead":"c02554125513cff91ddbb6462dd2191d54906674","scripts":{"test":"bash tests/lint.test.sh && bash tests/render-pdf.test.sh && bash tests/preview.test.sh","prepack":"chmod +x bin/decks-skill.js skill/scripts/lint.sh","test:lint":"bash tests/lint.test.sh","test:render":"bash tests/render-pdf.test.sh","test:preview":"bash tests/preview.test.sh"},"_npmUser":{"name":"elven_observability","email":"elven.observability@elven.works"},"repository":{"url":"git+https://github.com/elven-observability/elven-decks.git","type":"git"},"_npmVersion":"11.11.0","description":"Anthropic skill-creator pack codifying Elven Works presentation deck standards: 2 canonical deck types (client-report, workshop-mentorship), 12 locked layouts, binary lint, and Puppeteer PDF+preview rendering. Sibling of @elven-observability/docs-skill.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"marked":"^14.1.0","puppeteer":"^23.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/decks-skill_0.1.0_1778870773990_0.4790401852430284","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@elven-observability/decks-skill","version":"0.1.1","keywords":["claude-code","anthropic","skill","presentation","deck","slides","elven","elven-observability","pt-br","lint","html","pdf","puppeteer"],"author":{"name":"Elven Works","email":"docs@elven.works"},"license":"MIT","_id":"@elven-observability/decks-skill@0.1.1","maintainers":[{"name":"elven_observability","email":"elven.observability@elven.works"}],"homepage":"https://github.com/elven-observability/elven-decks#readme","bugs":{"url":"https://github.com/elven-observability/elven-decks/issues"},"bin":{"decks-skill":"bin/decks-skill.js"},"dist":{"shasum":"a0b666dcce6f07b92019e0e0bc99132520e54f88","tarball":"https://registry.npmjs.org/@elven-observability/decks-skill/-/decks-skill-0.1.1.tgz","fileCount":62,"integrity":"sha512-Lfo8P9Tzo5eg0TZYeuwF1N0Q3itfmVlfMa1XANyHxBr/59MGTyVMNHph7UxN3aGIgMq8BVinIREeKxm0OfrODA==","signatures":[{"sig":"MEUCIDLS2eD69hSEdTIQYpGZC3w1XkgfPcoaICsLSYvfbzpfAiEAw42ZX0rqxHTnDJo+Jagn9HvKZ8DKdLG8p55tdohrcDs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":285944},"engines":{"node":">=18"},"gitHead":"74b432b7f57a685d494eb81bf80dc7fcd77b27e8","scripts":{"test":"bash tests/lint.test.sh && bash tests/render-pdf.test.sh && bash tests/preview.test.sh","prepack":"chmod +x bin/decks-skill.js skill/scripts/lint.sh","test:lint":"bash tests/lint.test.sh","test:render":"bash tests/render-pdf.test.sh","test:preview":"bash tests/preview.test.sh"},"_npmUser":{"name":"elven_observability","email":"elven.observability@elven.works"},"repository":{"url":"git+https://github.com/elven-observability/elven-decks.git","type":"git"},"_npmVersion":"11.11.0","description":"Anthropic skill-creator pack codifying Elven Works presentation deck standards: 2 canonical deck types (client-report, workshop-mentorship), 12 locked layouts, binary lint, and Puppeteer PDF+preview rendering. Sibling of @elven-observability/docs-skill.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"marked":"^14.1.0","puppeteer":"^23.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/decks-skill_0.1.1_1778871741872_0.35693996739558065","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@elven-observability/decks-skill","version":"0.1.2","description":"Anthropic skill-creator pack codifying Elven Works presentation deck standards: 2 canonical deck types (client-report, workshop-mentorship), 12 locked layouts, binary lint, and Puppeteer PDF+preview rendering. Sibling of @elven-observability/docs-skill.","license":"MIT","author":{"name":"Elven Works","email":"docs@elven.works"},"homepage":"https://github.com/elven-observability/elven-decks#readme","repository":{"type":"git","url":"git+https://github.com/elven-observability/elven-decks.git"},"bugs":{"url":"https://github.com/elven-observability/elven-decks/issues"},"bin":{"decks-skill":"bin/decks-skill.js"},"scripts":{"test":"bash tests/lint.test.sh && bash tests/render-pdf.test.sh && bash tests/preview.test.sh","test:lint":"bash tests/lint.test.sh","test:render":"bash tests/render-pdf.test.sh","test:preview":"bash tests/preview.test.sh","prepack":"chmod +x bin/decks-skill.js skill/scripts/lint.sh"},"dependencies":{"marked":"^14.1.0","puppeteer":"^23.5.0"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"keywords":["claude-code","anthropic","skill","presentation","deck","slides","elven","elven-observability","pt-br","lint","html","pdf","puppeteer"],"gitHead":"712bc510a15eac157338e934a9d73c0f3d3d34c0","_id":"@elven-observability/decks-skill@0.1.2","_nodeVersion":"25.8.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-nRENHCNo2cLf2KAj8KpXT+OeiOnm3eLrpmmXNoY5U7uic1b3/4P+6Ix0noj1/dGrsp+nlU4z7MIqGK095IX8cQ==","shasum":"6f3ead32c2d68dc18b4b94d9cc8744cc3c133c18","tarball":"https://registry.npmjs.org/@elven-observability/decks-skill/-/decks-skill-0.1.2.tgz","fileCount":52,"unpackedSize":300032,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCqvN91u87B6KHYFOurxuvazYdVJIpO2e1OB4P6mZ/hrwIhAOawvPV0rSjhj6LVmV3ogyXrK1ZQ59gUhTj+o+3qx9g0"}]},"_npmUser":{"name":"elven_observability","email":"elven.observability@elven.works"},"directories":{},"maintainers":[{"name":"elven_observability","email":"elven.observability@elven.works"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/decks-skill_0.1.2_1779112209175_0.20691601681830618"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T18:46:13.834Z","modified":"2026-05-18T13:50:09.437Z","0.1.0":"2026-05-15T18:46:14.237Z","0.1.1":"2026-05-15T19:02:22.038Z","0.1.2":"2026-05-18T13:50:09.335Z"},"bugs":{"url":"https://github.com/elven-observability/elven-decks/issues"},"author":{"name":"Elven Works","email":"docs@elven.works"},"license":"MIT","homepage":"https://github.com/elven-observability/elven-decks#readme","keywords":["claude-code","anthropic","skill","presentation","deck","slides","elven","elven-observability","pt-br","lint","html","pdf","puppeteer"],"repository":{"type":"git","url":"git+https://github.com/elven-observability/elven-decks.git"},"description":"Anthropic skill-creator pack codifying Elven Works presentation deck standards: 2 canonical deck types (client-report, workshop-mentorship), 12 locked layouts, binary lint, and Puppeteer PDF+preview rendering. Sibling of @elven-observability/docs-skill.","maintainers":[{"name":"elven_observability","email":"elven.observability@elven.works"}],"readme":"# `@elven-observability/decks-skill`\n\n**Apresentações da Elven Works, sempre no mesmo padrão visual — sem improviso.**\n\nUm pacote npm que instala um *skill* no Claude Code. Depois de instalado, qualquer pessoa do time (ou o próprio agente de IA) gera decks 16:9 com **identidade visual idêntica**, **lint que reprova drift**, e **PDF pronto pra entregar** — tudo com 3 comandos.\n\n> Skill irmã: **[`@elven-observability/docs-skill`](https://www.npmjs.com/package/@elven-observability/docs-skill)** faz documentação e relatórios em texto corrido. Este aqui faz **slides**.\n\n---\n\n## Índice\n\n- [Comece em 60 segundos](#comece-em-60-segundos)\n- [Por que esse skill existe](#por-que-esse-skill-existe)\n- [Instalação](#instalação)\n- [Seu primeiro deck, passo a passo](#seu-primeiro-deck-passo-a-passo)\n- [Os 2 tipos de deck](#os-2-tipos-de-deck)\n- [Como montar um slide](#como-montar-um-slide)\n- [Todos os comandos](#todos-os-comandos)\n- [Como o lint funciona](#como-o-lint-funciona)\n- [Usando com o Claude Code (agente IA)](#usando-com-o-claude-code-agente-ia)\n- [Perguntas frequentes](#perguntas-frequentes)\n- [O contrato visual](#o-contrato-visual)\n- [Estrutura do pacote](#estrutura-do-pacote)\n- [Contribuindo](#contribuindo)\n- [Licença](#licença)\n\n---\n\n## Comece em 60 segundos\n\n```bash\n# 1. Instala (uma vez por máquina)\nnpm install -g @elven-observability/decks-skill\ndecks-skill install\n\n# 2. Cria um deck novo\ndecks-skill new client-report meu-primeiro-deck\ncd meu-primeiro-deck\n\n# 3. Edita o deck.html, depois:\ndecks-skill lint deck.html       # 10/10 obrigatório\ndecks-skill preview deck.html    # gera PNGs pra revisar\ndecks-skill render deck.html     # gera o PDF final\n```\n\nPronto. Você tem um PDF 1280×720 no padrão visual da Elven, com paleta, fontes, logo e numeração travados.\n\n---\n\n## Por que esse skill existe\n\nAntes: cada pessoa montava deck do seu jeito. Cores diferentes, fontes diferentes, espaçamento torto, logo em lugar aleatório. Cliente recebia coisas que não pareciam da mesma empresa.\n\nDepois: **um padrão, codificado em código.**\n\n- A paleta, as fontes e o frame 16:9 vêm de um CSS único e travado (`elven-deck.css`), extraído de um deck real aprovado (o deck de incidente do cliente kontik).\n- Você **compõe** cada slide com um conjunto fechado de componentes testados — sem inventar CSS no meio do caminho.\n- Um **lint binário** roda 10 verificações estruturais. Se algo fugiu do padrão, ele reprova **antes** de chegar no cliente.\n- O **render** transforma o HTML em PDF com Puppeteer — mesma saída em qualquer máquina.\n\nResultado: qualquer engenheiro Elven, designer, ou agente de IA produz deck com a mesma qualidade. O padrão deixa de depender de quem fez.\n\n---\n\n## Instalação\n\n### Recomendado — npm global\n\n```bash\nnpm install -g @elven-observability/decks-skill\ndecks-skill install\n```\n\nO `decks-skill install` copia o conteúdo do skill para `~/.claude/skills/decks-skill/`. A instalação **não é automática de propósito** — você roda o comando conscientemente. Numa nova sessão do Claude Code, o skill aparece em `/skills`.\n\n### Sem instalar nada global — npx\n\n```bash\nnpx @elven-observability/decks-skill install\n```\n\n### Conferir que deu certo\n\n```bash\ndecks-skill --version              # → 0.1.2\nls ~/.claude/skills/decks-skill/    # → SKILL.md, templates/, themes/, ...\n```\n\n### Requisitos\n\n- **Node.js 18+**\n- O primeiro `npm install` baixa o Chromium do Puppeteer (~200 MB) — usado pra gerar PDF e preview. Numa máquina sem internet liberada, isso pode falhar; nesse caso fale com o time de infra.\n\n---\n\n## Seu primeiro deck, passo a passo\n\n### 1. Escolha o tipo\n\nPergunta única: **quem vai consumir o deck?**\n\n- Cliente lendo um PDF sozinho, sem ninguém apresentando → **`client-report`**\n- Turma numa sala, com instrutor ao vivo, multi-dia → **`workshop`**\n\n### 2. Crie o scaffold\n\n```bash\ndecks-skill new client-report kontik-incidente-2026-05-08\ncd kontik-incidente-2026-05-08\n```\n\nVocê recebe uma pasta já montada:\n\n```\nkontik-incidente-2026-05-08/\n├── deck.html          ← seu deck (já passa no lint, com placeholders)\n├── elven-deck.css     ← o tema (não edite)\n├── source-notes.md    ← anote de onde vieram os dados\n├── qa-notes.md        ← checklist antes de entregar\n└── assets/            ← logo + gráficos\n```\n\n### 3. Edite o `deck.html`\n\nAbra o `deck.html`. Ele já vem com 5 slides válidos que cobrem as receitas mais comuns (capa, resumo executivo, linha do tempo, gráfico + evidências, fechamento). Cada slide é uma `<section class=\"slide\">` com `.content` dentro.\n\nPrecisa de outra composição? Veja [Como montar um slide](#como-montar-um-slide) abaixo, ou abra `~/.claude/skills/decks-skill/reference/slide-recipes.md`.\n\n### 4. Rode o lint\n\n```bash\ndecks-skill lint deck.html\n```\n\nSaída esperada:\n\n```\nPASS deck.html (10/10)\n\nSummary: 1 pass / 0 fail\n```\n\nSe reprovar, a mensagem diz exatamente qual regra (L1–L10) e por quê. Conserte e rode de novo.\n\n### 5. Revise visualmente\n\n```bash\ndecks-skill preview deck.html\n```\n\nIsso gera `preview/slide-01.png`, `slide-02.png`, … e um `contact-sheet.png` com todos os slides em grade. Abra o contact-sheet e procure: texto cortado, contraste ruim, card desalinhado. Conserte antes do PDF.\n\n### 6. Gere o PDF\n\n```bash\ndecks-skill render deck.html --out kontik-incidente-24h.pdf\n```\n\nPDF 1280×720, uma página por slide, pronto pra mandar.\n\n### 7. Antes de entregar\n\nAbra `qa-notes.md` (já veio na pasta) e bata item a item. É o último filtro.\n\n---\n\n## Os 2 tipos de deck\n\n| | `client-report` | `workshop` |\n|---|---|---|\n| **Quem consome** | Cliente lendo um PDF | Turma + instrutor ao vivo |\n| **Formato** | Um deck só | Multi-dia |\n| **Vem com** | `deck.html`, `source-notes.md`, `qa-notes.md` | `agenda/`, `slides/`, `html-slides/`, `labs/`, `materials/` (speaker notes, scripts, guias) |\n| **Speaker notes** | Não | Sim — 4 seções obrigatórias por slide |\n| **Labs hands-on** | Não | Sim — um por dia |\n| **Exemplo canônico** | Relatório de incidente kontik | \"Observability: From Zero to Hero\" (3 dias) |\n\nOs dois usam **exatamente o mesmo contrato visual**. O que muda são os artefatos que acompanham.\n\n---\n\n## Como montar um slide\n\nNão existe \"layout fixo\". Cada slide é uma **variante** com uma **moldura** (`.content`) onde você **compõe** componentes. Toda a flexibilidade do kontik, sem improviso.\n\n**A moldura — igual em todo slide** (o lint exige):\n\n```html\n<section class=\"slide\">           <!-- ou: slide dark | slide cover | slide split-dark -->\n  <img class=\"logo\" src=\"assets/elven-logo.png\" alt=\"Elven\" />\n  <div class=\"content\">\n    <div class=\"kicker\">Categoria do slide</div>\n    <h2>Headline que diz a tese.</h2>\n    <!-- componha aqui -->\n  </div>\n  <div class=\"source\">Fonte / metodologia.</div>\n</section>\n```\n\n**Componentes pra compor dentro do `.content`:**\n\n| Componente | Pra que serve |\n|---|---|\n| `.metric-rail` | régua de 4 números-âncora — só na capa |\n| `.two-col` / `.three-col` / `.score-grid` | grids de composição |\n| `.panel` | card branco (título + texto) |\n| `.chart-card` + `.chart` | card de gráfico (SVG data-driven) |\n| `.timeline` | linha do tempo, até 6 marcos |\n| `.callout` | destaque tipado (`Leitura final:`, `Interpretação:`) |\n| `.evidence` | cards de evidência com tarja colorida |\n| `.matrix` | tabela de dados / plano de ação |\n| `.code` | bloco de código |\n| `.diagram` | diagrama de fluxo (nós + setas) |\n| `.decision` | par de cards comparativos |\n| `.takeaways` | fechamento — lista de pontos |\n\nCombinações testadas (extraídas do deck kontik) estão em **`reference/slide-recipes.md`** — 9 receitas prontas. Catálogo completo de componentes em `reference/component-catalog.md`.\n\n> **Regra de ouro:** o slide 01 é sempre `class=\"slide cover\"`. Todo slide tem `.logo`, `.content` e `.kicker`. O lint reprova se faltar.\n\n---\n\n## Todos os comandos\n\n```bash\ndecks-skill install [--force]\n```\nCopia o skill pra `~/.claude/skills/decks-skill/`. `--force` sobrescreve sem perguntar.\n\n```bash\ndecks-skill update\n```\nAtualiza o skill instalado (igual a `install --force`). Use depois de `npm update -g`.\n\n```bash\ndecks-skill new <client-report|workshop> <nome>\n```\nCria uma pasta nova a partir do template. Ex: `decks-skill new workshop curso-otel-2026`.\n\n```bash\ndecks-skill lint <arquivo.html> [<arquivo.html>...]\n```\nRoda as 10 verificações. Exit 0 = passou tudo; exit 1 = reprovou. Aceita vários arquivos.\n\n```bash\ndecks-skill render <arquivo.html> [--out <saida.pdf>]\n```\nGera o PDF (Puppeteer, 1280×720, uma página por slide). Sem `--out`, salva ao lado do `.html`.\n\n```bash\ndecks-skill preview <arquivo.html> [--out-dir <pasta>]\n```\nGera um PNG por slide + um `contact-sheet.png` com todos juntos. Pra QA visual.\n\n```bash\ndecks-skill --version      # imprime a versão\ndecks-skill --help         # imprime a ajuda\n```\n\n---\n\n## Como o lint funciona\n\nO lint é **binário**: ou passa 10/10, ou reprova. Cada regra checa uma coisa estrutural do HTML:\n\n| Regra | O que verifica |\n|---|---|\n| **L1** | `<!DOCTYPE html>` + `<html lang=\"pt-BR\">` |\n| **L2** | `<title>` presente e não-vazio |\n| **L3** | Tema importado (`elven-deck.css` ou tokens inline) |\n| **L4** | Existe pelo menos um elemento `.slide` |\n| **L5** | Canvas declarado como 1280×720 |\n| **L6** | O primeiro slide é `class=\"slide cover\"` |\n| **L7** | Todo slide tem uma moldura `.content` |\n| **L8** | Todo slide tem um `.kicker` |\n| **L9** | Todo slide tem o `.logo` |\n| **L10** | Nenhum emoji no texto visível (use `.tag` no lugar) |\n\nQuando reprova, a saída diz a regra e o motivo:\n\n```\nFAIL deck.html (9/10):\n  - L6: first slide is not class=\"slide cover\"\n```\n\nUse o lint como **gate**: nada vai pro cliente sem 10/10.\n\n---\n\n## Usando com o Claude Code (agente IA)\n\nEsse pacote é, antes de tudo, um *skill* de IA. Depois de `decks-skill install`, abra uma sessão do Claude Code e simplesmente peça:\n\n```\ncria um deck client-report sobre o incidente do cliente X usando o decks-skill\n```\n\nO agente carrega o skill, identifica o tipo, monta o scaffold, compõe os slides com as receitas, preenche o conteúdo, roda o lint e gera o PDF — tudo no padrão da casa. Os 8 documentos de referência (`reference/`) e os 3 checklists guiam o agente passo a passo.\n\n---\n\n## Perguntas frequentes\n\n**O PDF saiu com fonte errada / sem o visual certo.**\nO tema usa Inter e IBM Plex Mono via fallback do sistema. Em máquina/CI sem essas fontes, o render cai numa fonte genérica. Instale as fontes localmente ou rode o render numa máquina que já as tenha. Self-host das fontes está no roadmap v0.2.\n\n**Posso criar um componente novo?**\nNão na v0.1. O conjunto de componentes é o contrato. Se faltar algo de verdade, abra uma *issue* com um exemplo de deck real que precise dele — componentes entram com evidência, não por palpite.\n\n**Posso usar a cor/logo de um cliente em vez da Elven?**\nAinda não. A v0.1 tem um tema só (Elven). Multi-tema é v0.2+, quando algum cliente realmente exigir.\n\n**Funciona em inglês?**\nA v0.1 é pt-BR apenas, igual à `docs-skill`. Tradução é roadmap futuro.\n\n**`decks-skill: command not found` depois do install.**\nO `npm install -g` instala num diretório que precisa estar no `PATH`. Rode `npm bin -g` pra ver onde, e confira seu `PATH`. Ou use `npx @elven-observability/decks-skill ...`.\n\n**Preciso disso pra um relatório em texto corrido (não slides).**\nEsse não é o skill certo. Use **[`@elven-observability/docs-skill`](https://www.npmjs.com/package/@elven-observability/docs-skill)**.\n\n**O `render`/`preview` está lento.**\nA primeira execução sobe o Chromium do Puppeteer. As seguintes são rápidas. Cada render leva poucos segundos.\n\n---\n\n## O contrato visual\n\nTudo abaixo é **travado** na v0.1 — mexer quebra o padrão e reprova no lint.\n\n**Paleta** (extraída de um deck real aprovado):\n\n| Token | Cor | Uso |\n|---|---|---|\n| `--teal` | `#00bfa5` | accent principal — eyebrow, callout, KPI positivo |\n| `--paper` | `#f4f7f8` | fundo do slide |\n| `--ink` | `#0f1923` | texto principal |\n| `--red` | `#ff5252` | erro, KPI negativo |\n| `--amber` | `#fbbf24` | atenção, warning |\n\n**Tipografia:** Inter (texto) + IBM Plex Mono (código).\n**Frame:** 1280×720 (16:9), numeração `01, 02, …` no canto inferior direito, logo Elven no canto superior direito.\n\nDetalhes completos: `~/.claude/skills/decks-skill/reference/brand-tokens.md`.\n\n---\n\n## Estrutura do pacote\n\n```\n@elven-observability/decks-skill/\n├── bin/decks-skill.js          # a CLI\n└── skill/                      # o que é copiado pra ~/.claude/skills/\n    ├── SKILL.md                # ponto de entrada do agente IA\n    ├── templates/              # os 2 scaffolds (client-report, workshop)\n    ├── themes/                 # elven-deck.css + elven-deck-charts.js\n    ├── reference/              # 8 docs: brand, receitas, componentes, voz editorial, etc.\n    ├── checklists/             # pre-deliver, visual-qa, persona-coverage\n    ├── scripts/                # lint.sh, render-deck.js, preview-deck.js\n    └── assets/                 # logo Elven + gráficos de exemplo\n```\n\n---\n\n## Contribuindo\n\nBem-vindo:\n\n- Fixtures de teste novas (`tests/fixtures/`).\n- Mensagens de erro do lint mais claras.\n- Componente novo — **com um deck real que precise dele** anexado à issue.\n\nNão bem-vindo (abra issue antes):\n\n- Tipos de deck sem caso real (talk curto, demo interna).\n- Afrouxar regras L1–L10 sem evidência de drift.\n- Dependências novas no CLI.\n- Quebrar o contrato visual (paleta, fontes, frame).\n\nFluxo: fork → branch → `npm test` passando → atualizar `CHANGELOG.md` → PR. Versionamento segue [SemVer](https://semver.org/).\n\n---\n\n## Licença\n\n[MIT](LICENSE) © 2026 Elven Works.\n","readmeFilename":"README.md"}