CommunityImagemgithub.com

whiteboard

Desenha diagramas como imagens renderizadas: visões de arquitetura e estilo C4, fluxogramas, diagramas de sequência, classe, estado e ER, gráficos de Gantt, mapas mentais. Escreve código fonte em Mermaid, D2 ou PlantUML, renderiza localmente para SVG (e PNG) com um script incluso e corrige erros de sintaxe reportados pelo renderizador. Use quando o usuário pedir um diagrama, gráfico, UML, visual ou imagem de código, sistema, modelo de dados ou processo, ou quando um diagrama explicar um design melhor do que prosa.

O que é whiteboard?

Whiteboard é uma skill para agentes de IA que converte descrições textuais em diagramas renderizados localmente. Ela suporta Mermaid, D2 e PlantUML, gerando imagens SVG e PNG sem enviar dados para servidores externos. O agente escreve o código fonte do diagrama, chama um script `render.mjs` incluso para renderizá-lo e corrige erros de sintaxe iterativamente até o diagrama ficar correto. É ideal para arquiteturas de software, fluxogramas, diagramas de classe e ER, ajudando a visualizar sistemas complexos. A skill detecta automaticamente a ferramenta de renderização apropriada, oferece opções como temas e exportação PNG, e mantém versões anteriores dos diagramas. Caso o renderizador não esteja instalado, o agente informa ao usuário como instalá-lo, mas não o faz automaticamente.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kikostefanov-lab/whiteboard-skill/tree/HEAD/skills/whiteboard

Installed? Explore more Imagem skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que whiteboard faz?

Transforme uma explicação em um diagrama que o usuário possa ver, guardar e colar em qualquer lugar. Você escreve o código fonte do diagrama; scripts/render.mjs renderiza usando o CLI instalado localmente e informa exatamente o que está errado quando não consegue interpretar.

Fluxo de Trabalho

  1. Escolha o tipo e a linguagem do diagrama. Use Mermaid por padrão. Use D2 para diagramas de arquitetura grandes com contêineres aninhados; use PlantUML apenas quando o usuário pedir ou o projeto já o utilizar. Veja references/syntax.md para a sintaxe de cada tipo.

  2. Leia antes de desenhar. Quando o diagrama descrever código, leia o código primeiro. Desenhe o que existe, com nomes reais, não uma imagem genérica. Para solicitações de projeto inteiro (arquitetura, fluxo de controle, modelo de dados), siga references/modes.md.

  3. Escreva o código fonte e renderize. Envie-o via stdin com um título curto (no máximo 80 caracteres). O título nomeia os arquivos, então reutilize-o ao redesenhar o mesmo diagrama:

    node <skill-dir>/scripts/render.mjs --title "Sequência de checkout" <<'EOF'
    sequenceDiagram
      Browser->>API: POST /checkout
      API->>Payments: charge(card)
      Payments-->>API: ok
      API-->>Browser: 201 Created
    EOF
    

    <skill-dir> é a pasta onde este arquivo está. Adicione --language d2 ou --language plantuml para essas linguagens. No Windows, ou quando heredocs forem complicados, escreva o código fonte em um arquivo temporário e use --file <caminho>.

  4. Corrija e execute novamente em caso de falha. Código de saída 1 significa que o renderizador rejeitou o código fonte; a mensagem indica a linha. Corrija essa linha e execute o mesmo comando novamente. Não entregue ao usuário um diagrama que não foi renderizado. Correções comuns estão listadas no final de references/syntax.md.

  5. Relate brevemente. Diga o que o diagrama mostra e forneça os caminhos dos arquivos que o script exibiu (por exemplo, diagrams/checkout-sequence.svg). Se o usuário quiser colar em um README, issue ou wiki, forneça o código fonte em um bloco fenced ```mermaid: GitHub, GitLab e Notion renderizam.

Referência do Script

OpçãoUso
--title <texto>Obrigatório. Nomeia os arquivos: diagrams/<slug>.svg e o código fonte ao lado.
--language <nome>mermaid (padrão), d2 ou plantuml.
--file <caminho>Lê o código fonte de um arquivo em vez de stdin.
--out <dir>Pasta de saída; padrão diagrams na pasta atual.
--pngGera também um PNG (slides, aplicativos de chat, terminais que mostram imagens).
--theme <nome>default, neutral, dark ou forest.
--config <arquivo>Um arquivo de configuração JSON do Mermaid, para cores e fontes da equipe.
--checkApenas valida; não escreve nada.
--openAbre o SVG no visualizador padrão do usuário. Use quando o usuário quiser ver o diagrama agora.
--shareEnvia o código fonte para um gist secreto do GitHub e imprime o link. Execute apenas após o usuário pedir para compartilhar e concordar com o envio.
--jsonResultado legível por máquina.
--doctorVerifica Node.js, cada renderizador e o CLI do GitHub, e informa o que instalar.

Códigos de saída: 0 renderizado, 1 código fonte rejeitado (corrija e execute novamente), 2 argumentos inválidos, 3 renderizador não instalado.

Diagramas nunca leem arquivos locais, variáveis de ambiente ou URLs para dentro da imagem:

  • Mermaid renderiza em uma página de navegador isolada que não pode carregar nada da rede ou disco. Qualquer sintaxe Mermaid funciona, mas imagens remotas ou locais e recursos CSS ficam em branco; incorpore uma imagem como URL data: se ela precisar aparecer.
  • PlantUML: diretivas diferentes das simples (!define, !if, !procedure, !$var, !theme <nome>, !include <stdlib> …), %getenv e similares, e <img:…> são recusadas. Em vez disso, incorpore o conteúdo.
  • D2: importações @ são recusadas. Diagramas com ícones, strings multilinha, HTML ou URLs renderizam apenas para SVG, onde permanecem como links.

Apenas se o usuário explicitamente quiser inclusões ou imagens externas, execute novamente com WHITEBOARD_ALLOW_INCLUDES=1.

Redesenhar com o mesmo título mantém os arquivos anteriores em diagrams/.versions/<slug>/<n>/, então iterar em um diagrama nunca perde a versão anterior.

Quando um Renderizador Está Faltando

O código de saída 3 imprime o comando de instalação. Informe ao usuário o que executar e não instale pacotes globais por conta própria a menos que eles peçam:

  • Mermaid: npm i -g @mermaid-js/mermaid-cli
  • D2: brew install d2, ou veja https://d2lang.com/tour/install
  • PlantUML: brew install plantuml ou apt install plantuml (precisa de Java)

Se um renderizador estiver instalado mas não for encontrado (comum em aplicativos desktop que iniciam sem o PATH do shell de login), defina WHITEBOARD_MMDC, WHITEBOARD_D2 ou WHITEBOARD_PLANTUML para seu caminho completo. A renderização do Mermaid usa o navegador e o pacote Mermaid que vêm com mermaid-cli; se o script encontrar mmdc mas não seu pacote, defina WHITEBOARD_MERMAID_CLI_DIR para a pasta @mermaid-js/mermaid-cli. Quando nada puder ser instalado, forneça o código fonte Mermaid em um bloco fenced para que ainda renderize no GitHub, e informe que não foi verificado por um renderizador.

Bons Diagramas

  • Uma ideia por diagrama. Divida qualquer coisa com mais de cerca de 15 nós ou 20 mensagens em um diagrama geral mais diagramas de detalhe.
  • Rotule cada aresta com o que flui ou acontece (HTTP, publica OrderPlaced, 1..*).
  • Use os nomes do código: nomes de classes, módulos e serviços, endpoints reais, tabelas reais.
  • Escolha o tipo que corresponde à pergunta: quem chama quem ao longo do tempo → sequência; quais são as partes → arquitetura/fluxograma; como os dados se parecem → ER ou classe; como algo muda ao longo do tempo → estado.
  • Mantenha o texto curto dentro dos nós; coloque os detalhes nos rótulos das arestas ou notas.

Habilidades Relacionadas