{"_id":"@elven-observability/proposals-skill","name":"@elven-observability/proposals-skill","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@elven-observability/proposals-skill","version":"0.1.0","description":"Anthropic skill-creator pack codifying Elven Works commercial proposal standards: A4-portrait hybrid .docx generation (locked cover/diagrams + native editable body), canonical 'observabilidade' template, binary lint. Sibling of @elven-observability/docs-s","license":"MIT","author":{"name":"Elven Works","email":"docs@elven.works"},"homepage":"https://github.com/elven-observability/elven-proposals-skill#readme","repository":{"type":"git","url":"git+https://github.com/elven-observability/elven-proposals-skill.git"},"bugs":{"url":"https://github.com/elven-observability/elven-proposals-skill/issues"},"bin":{"proposals-skill":"bin/proposals-skill.js"},"scripts":{"test":"bash tests/lint.test.sh && bash tests/build.test.sh","test:lint":"bash tests/lint.test.sh","test:build":"bash tests/build.test.sh","prepack":"chmod +x bin/proposals-skill.js"},"dependencies":{"docx":"^9.0.2","puppeteer":"^23.5.0"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"keywords":["claude-code","anthropic","skill","proposal","proposta","docx","elven","elven-observability","pt-br","commercial","a4"],"gitHead":"038a0ea38e8221cd7a6b1607b912341c0fea052f","_id":"@elven-observability/proposals-skill@0.1.0","_nodeVersion":"25.8.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-qrIA9F5/Q8Iwh9ll00MKjurd95+Amv1e48Q4Zo+Fc7cNcJ8sH4h9qA4q7A2zOYSbGDEac32lWTjTEYVRjkqvOg==","shasum":"5af8c63adfe84962f25e84150ab4d434cbf3b257","tarball":"https://registry.npmjs.org/@elven-observability/proposals-skill/-/proposals-skill-0.1.0.tgz","fileCount":43,"unpackedSize":3310872,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGIslY9HFiQajuP6gt44/Qv+HvmMoNgcZnHX7j6dJ3U/AiAC43o1+7cBzNNXqvIdvAmlcCwXOAX9sOk7zppf0zabGg=="}]},"_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/proposals-skill_0.1.0_1779135769482_0.40264697417721895"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T20:22:49.401Z","0.1.0":"2026-05-18T20:22:49.804Z","modified":"2026-05-18T20:22:50.025Z"},"maintainers":[{"name":"elven_observability","email":"elven.observability@elven.works"}],"description":"Anthropic skill-creator pack codifying Elven Works commercial proposal standards: A4-portrait hybrid .docx generation (locked cover/diagrams + native editable body), canonical 'observabilidade' template, binary lint. Sibling of @elven-observability/docs-s","homepage":"https://github.com/elven-observability/elven-proposals-skill#readme","keywords":["claude-code","anthropic","skill","proposal","proposta","docx","elven","elven-observability","pt-br","commercial","a4"],"repository":{"type":"git","url":"git+https://github.com/elven-observability/elven-proposals-skill.git"},"author":{"name":"Elven Works","email":"docs@elven.works"},"bugs":{"url":"https://github.com/elven-observability/elven-proposals-skill/issues"},"license":"MIT","readme":"# `@elven-observability/proposals-skill`\n\n**Propostas comerciais da Elven Works, sempre no mesmo padrão — em `.docx` A4.**\n\nUm pacote npm que instala um *skill* no Claude Code. Depois de instalado,\nqualquer pessoa do comercial (ou o agente de IA) gera uma proposta comercial\nA4 retrato com **identidade visual idêntica**, **valores conferidos**, e um\n**`.docx` editável pronto para enviar** — com 3 comandos.\n\n> Skill irmã de **[`@elven-observability/docs-skill`](https://www.npmjs.com/package/@elven-observability/docs-skill)**\n> (documentação técnica) e **[`@elven-observability/decks-skill`](https://www.npmjs.com/package/@elven-observability/decks-skill)**\n> (apresentações 16:9). Este aqui faz **propostas comerciais**.\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- [Sua primeira proposta, passo a passo](#sua-primeira-proposta-passo-a-passo)\n- [O documento gerado](#o-documento-gerado)\n- [O `vars.json`](#o-varsjson)\n- [As 18 seções](#as-18-seções)\n- [Todos os comandos](#todos-os-comandos)\n- [Lint binário](#lint-binário)\n- [Perguntas frequentes](#perguntas-frequentes)\n- [Skills irmãs](#skills-irmãs)\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/proposals-skill\nproposals-skill install\n\n# 2. Cria uma proposta nova\nproposals-skill new hinode\ncd hinode\n\n# 3. Edita o vars.json, depois:\nproposals-skill lint hinode      # 9/9 obrigatório\nproposals-skill build hinode     # gera o .docx A4\n```\n\nPronto. Você tem um `.docx` A4 retrato no padrão Elven — capa, 18 seções,\ntabelas de valores, header e footer — pronto para o comercial revisar e enviar.\n\n---\n\n## Por que esse skill existe\n\nAntes: cada proposta saía de um jeito. Página em US Letter em vez de A4, fontes\nmisturadas (Inter + Arial + Times), placeholders `{{cloud_destino}}` vazando no\ntexto, capa com faixa branca. O cliente recebia documentos que não pareciam da\nmesma empresa.\n\nDepois: **um padrão, codificado em código.**\n\n- A página (A4 retrato), as fontes (Inter), as cores e os estilos vêm de um\n  contrato único e travado (`docx-styles.js`).\n- O conteúdo é **template + variáveis**: 18 seções canônicas em `content.md`,\n  preenchidas por um `vars.json` por cliente.\n- O `.docx` é **híbrido**: capa e diagramas como imagem travada (visual\n  impecável); corpo e tabelas de valores como Word nativo editável.\n- Um **lint binário** reprova antes de chegar ao cliente: A4 errado, `{{slot}}`\n  vazando, valor faltando, fonte fora do padrão.\n\nResultado: qualquer pessoa do comercial produz proposta com a mesma qualidade.\n\n---\n\n## Instalação\n\n### Recomendado — npm global\n\n```bash\nnpm install -g @elven-observability/proposals-skill\nproposals-skill install\n```\n\nO `proposals-skill install` copia o conteúdo do skill para\n`~/.claude/skills/proposals-skill/`. A instalação **não é automática de\npropósito**. Numa nova sessão do Claude Code, o skill aparece em `/skills`.\n\n### Sem instalar global — npx\n\n```bash\nnpx @elven-observability/proposals-skill install\n```\n\n### Requisitos\n\n- **Node.js 18+**\n- O primeiro `npm install` baixa o Chromium do Puppeteer (~200 MB) — usado para\n  renderizar a capa.\n\n---\n\n## Sua primeira proposta, passo a passo\n\n### 1. Crie a pasta\n\n```bash\nproposals-skill new hinode\n```\n\n`hinode` é o *slug* do cliente — kebab-case, sem acento. Você recebe:\n\n```\nhinode/\n├── vars.json       ← variáveis do cliente (edite este)\n├── content.md      ← conteúdo (cópia editável; em geral não mexa)\n└── assets/         ← coloque architecture.png aqui\n```\n\n### 2. Preencha o `vars.json`\n\nCliente, projeto, datas, o `cenario` (3 parágrafos), regiões, e os **valores\ncomerciais** (migração, SRE, Command Center, total). Schema completo abaixo.\n\n### 3. Adicione o diagrama de arquitetura\n\nColoque `hinode/assets/architecture.png` — o diagrama da migração desse cliente.\nSem ele, o build usa um exemplo.\n\n### 4. Lint\n\n```bash\nproposals-skill lint hinode\n```\n\nSaída esperada: `PASS hinode (9/9)`. Se reprovar, a mensagem diz a regra\n(L1–L10) e o motivo. Conserte e rode de novo.\n\n### 5. Build\n\n```bash\nproposals-skill build hinode\n```\n\nGera `hinode/hinode-18-05-2026.docx` + `hinode/source-notes.md` (trilha de\nauditoria com os valores comerciais).\n\n### 6. Confira e entregue\n\nAbra o `.docx` no Word. Bata o `checklists/pre-deliver.md`. Envie.\n\n---\n\n## O documento gerado\n\n`.docx` **A4 retrato**, **híbrido**:\n\n| Camada | Como | Por quê |\n|---|---|---|\n| Capa | imagem full-bleed (gradiente Elven + texto) | visual travado, impecável |\n| Diagramas | imagens fixas embutidas | visual complexo travado |\n| Corpo (texto, seções) | Word nativo, estilos nomeados | o comercial edita |\n| Tabelas de valores | tabelas Word nativas | o comercial edita os números |\n| Header / footer | \"Proposta Elven\" + \"Confidencial — válido por N dias\" + página | padrão do documento |\n\n---\n\n## O `vars.json`\n\n| Campo | Tipo | Descrição |\n|---|---|---|\n| `cliente` | string | nome do cliente |\n| `cliente_slug` | string | kebab-case sem acento — nomeia pasta/arquivo |\n| `projeto` | string | título do projeto |\n| `versao` | string | ex: `V1` |\n| `data_emissao` | string | formato `DD.MM.AAAA` |\n| `validade_dias` | number | validade da proposta |\n| `cenario` | string[] | 3 parágrafos sobre o cliente |\n| `cloud_destino` | string | nuvem destino |\n| `regiao_primaria` / `regiao_dr` | string | regiões |\n| `aplicacoes_especificas` | string[] | apps específicas do cliente |\n| `migracao.horas` / `migracao.valor_total` | number / string | projeto de migração |\n| `sre.horas_mes` / `sre.valor_mes` | number / string | Suporte SRE |\n| `command_center.plano` / `.acionamentos` / `.valor_mes` | string / number / string | Command Center |\n| `total_mensal` | string | total SRE + CC |\n| `executivo_elven` / `responsavel_legal_elven` | string | partes Elven |\n| `contato_cliente_nome` / `responsavel_legal_cliente` | string | partes do cliente (opcional) |\n\nDetalhes em `skill/reference/vars-schema.md` (após `install`).\n\n---\n\n## As 18 seções\n\nCapa · Cenário · Sobre a Elven · Nossas Soluções · Arquitetura Zero-Trust ·\nMigração · Suporte pós-migração · Treinamento · Sustentação com evoluções ·\nAnalytics + planos Command Center · Excedentes · Suporte SRE (escopo + SLA) ·\nTecnologias Suportadas · Gestão e relatórios · Nossos clientes ·\nInvestimento (migração) · Investimento (SRE + CC) · De Acordo.\n\nA maioria é **conteúdo fixo da marca**; o que muda é preenchido pelo `vars.json`.\nContrato completo em `skill/reference/content-contract.md`.\n\n---\n\n## Todos os comandos\n\n```bash\nproposals-skill install [--force]      # copia o skill p/ ~/.claude/skills/\nproposals-skill update                 # atualiza o skill instalado\nproposals-skill new <cliente-slug>     # cria a pasta da proposta\nproposals-skill build <pasta>          # gera o .docx A4 + source-notes.md\nproposals-skill lint <pasta>           # lint binário (10 regras)\nproposals-skill --version | --help\n```\n\n---\n\n## Lint binário\n\n10 regras. Ou passa, ou reprova.\n\n| Regra | Verifica |\n|---|---|\n| L1 | `vars.json` presente e JSON válido |\n| L2 | Campos obrigatórios preenchidos |\n| L3 | Nenhum `{{slot}}` vazando |\n| L4 | Tipos corretos (validade numérica, valores string) |\n| L5 | `cliente_slug` kebab-case |\n| L6 | 18 seções canônicas presentes |\n| L7 | Diagramas existem |\n| L8 | Sem emoji |\n| L9 | Data `DD.MM.AAAA` |\n| L10 | docx A4 + fonte única (pós-build) |\n\n---\n\n## Perguntas frequentes\n\n**O docx saiu em US Letter / com fonte errada.**\nNão sai — o gerador trava A4 e Inter por contrato. Era exatamente esse o bug do\nsistema antigo (pandoc sem reference-doc). Se viu isso, não foi este skill.\n\n**Posso mudar o texto de uma seção fixa?**\nEdite o `content.md` da pasta do cliente (override) só se houver variação real\nde escopo. As seções fixas são o discurso comercial padrão — alterá-las por\ncliente quebra a padronização.\n\n**Como gero o PDF?**\nv0.1 entrega `.docx`. PDF é v0.2 (precisa LibreOffice/Word para converter).\nPor ora: abra o `.docx` e exporte como PDF pelo Word.\n\n**`{{slot}}` apareceu no documento.**\nNão deveria — o lint (L3) reprova isso antes do build. Rode `proposals-skill\nlint` e preencha o campo faltante no `vars.json`.\n\n**Preciso de um relatório técnico, não proposta.**\nUse **`@elven-observability/docs-skill`**. Para slides, **`decks-skill`**.\n\n---\n\n## Skills irmãs\n\n| Skill | Faz | Saída |\n|---|---|---|\n| `docs-skill` | documentação técnica + PS reports | `.md` + PDF |\n| `decks-skill` | apresentações / decks | HTML 16:9 + PDF |\n| **`proposals-skill`** | **propostas comerciais** | **`.docx` A4** |\n\nTrês skills, escopos próprios, **convenções idênticas** — quem usa uma sabe\nusar as três.\n\n---\n\n## Contribuindo\n\nBem-vindo: fixtures de teste, mensagens de lint mais claras, correção de bugs\nde layout.\n\nNão bem-vindo (abra issue antes): segundo template sem caso real, afrouxar\nregras de lint, mudar o contrato visual (A4, Inter, paleta), novas dependências\nno CLU.\n\nFluxo: fork → branch → `npm test` passando → atualizar `CHANGELOG.md` → PR.\nVersionamento [SemVer](https://semver.org/).\n\n---\n\n## Licença\n\n[MIT](LICENSE) © 2026 Elven Works.\n","readmeFilename":"README.md","_rev":"1-1787273cc815112ab448dba7c77cb367"}