--- name: diagrama category: dev-tools description: "Gera diagramas de arquitectura, fluxo, ER e sequência em três formatos: draw.io (.drawio), Excalidraw e Mermaid. Usar quando 'diagrama', 'arquitectura', 'draw.io', 'fluxo', 'ER', 'sequência', 'infra', 'componentes'." version: "1.0.0" created: 2026-04-04 tools: [mcp__claude_ai_Excalidraw__export_to_excalidraw, mcp__mcp-mermaid__generate, Write, Bash] --- # Skill: /diagrama Gera diagramas técnicos em três formatos consoante o caso de uso. Suporta arquitectura de sistemas, fluxogramas, diagramas ER, sequência, infra-estrutura e redes. --- ## Quando usar cada formato | Formato | Quando usar | Output | |---------|------------|--------| | **draw.io** | Diagramas formais para documentação, propostas, clientes | `.drawio` (editável) | | **Excalidraw** | Esboços rápidos, brainstorming visual, estilo whiteboard | `.excalidraw` / MCP | | **Mermaid** | Diagramas como código, versionáveis em Git, embeds Markdown | `.svg` / `.png` | --- ## Processo de execução ### 1. Identificar pedido Quando o utilizador pede um diagrama, detectar: - **Tipo:** arquitectura | fluxo | ER | sequência | rede | organograma | classe - **Formato pretendido:** draw.io (default para doc. formal) | excalidraw | mermaid - **Contexto:** sistemas envolvidos, entidades, actores Se não especificado, perguntar apenas: "draw.io (formal) ou Excalidraw (esboço)?" ### 2. Gerar conteúdo --- ## Geração draw.io (.drawio) O formato draw.io é mxGraph XML. Gerar o XML e guardar como `.drawio`. ### Estrutura base ```xml ``` ### Templates de elementos mxGraph **Rectângulo (componente/serviço):** ```xml ``` **Seta/ligação:** ```xml ``` **Cilindro (base de dados):** ```xml ``` **Cloud (serviço externo):** ```xml ``` **Actor (pessoa/utilizador):** ```xml ``` **Swimlane (grupo/camada):** ```xml ``` ### Paleta de cores Descomplicar | Componente | fillColor | strokeColor | |-----------|-----------|-------------| | Serviço/App | `#dae8fc` | `#6c8ebf` | | Base de dados | `#f8cecc` | `#b85450` | | Fila/Queue | `#d5e8d4` | `#82b366` | | Externo/Cloud | `#fff2cc` | `#d6b656` | | Infra/Servidor | `#e1d5e7` | `#9673a6` | | Claude/IA | `#f0f4ff` | `#4a6cf7` | ### Guardar ficheiro Guardar em `/media/ealmeida/Dados/Hub/tmp/diagramas/` com nome descritivo: ``` YYYY-MM-DD-nome-diagrama.drawio ``` Abrir com: ```bash drawio "/media/ealmeida/Dados/Hub/tmp/diagramas/NOME.drawio" & ``` (ou abrir manualmente com draw.io desktop / draw.io no browser) --- ## Geração Excalidraw Usar o MCP `mcp__claude_ai_Excalidraw__export_to_excalidraw` para diagramas no estilo whiteboard. ### Fluxo 1. Chamar `mcp__claude_ai_Excalidraw__create_view` para iniciar sessão 2. Chamar `mcp__claude_ai_Excalidraw__export_to_excalidraw` com o conteúdo estruturado 3. Informar o utilizador do link/path gerado ### Casos de uso preferidos - Brainstorming e exploração rápida - Diagramas de fluxo com estilo manual - Esboços para reuniões - Arquitecturas de alto nível para comunicação interna --- ## Geração Mermaid Usar o MCP `mcp__mcp-mermaid__generate` para diagramas como código. ### Tipos suportados **Fluxograma:** ``` flowchart TD A[Início] --> B{Condição} B -->|Sim| C[Acção] B -->|Não| D[Fim] ``` **Sequência:** ``` sequenceDiagram participant U as Utilizador participant A as Claude Code participant N as n8n U->>A: Pedido A->>N: Trigger workflow N-->>A: Resultado A-->>U: Resposta ``` **ER:** ``` erDiagram CLIENTE ||--o{ PROJECTO : tem PROJECTO ||--o{ TAREFA : contém TAREFA { int id string nome string estado } ``` **Arquitectura de componentes (C4):** ``` C4Context title Stack Descomplicar Person(eal, "Emanuel", "Utilizador principal") System(cc, "Claude Code", "Interface interactiva") System(clip, "Paperclip", "Agentes autónomos") System(n8n, "n8n", "Automação determinística") Rel(eal, cc, "usa directamente") Rel(cc, clip, "delega tarefas complexas") Rel(cc, n8n, "activa workflows") ``` ### Guardar output Guardar o código Mermaid em `/media/ealmeida/Dados/Hub/tmp/diagramas/NOME.mmd` e renderizar para SVG/PNG via MCP. --- ## Templates prontos por contexto ### Arquitectura StackDescomplicar Gerar diagrama com as três camadas do stack: - **Camada 1:** Claude Code (trabalho interactivo) - **Camada 2:** n8n (automação determinística) - **Camada 3:** Paperclip (raciocínio autónomo) ### Proposta comercial Diagrama da solução para o cliente com: - Infra-estrutura actual (antes) - Solução proposta (depois) - Componentes e integrações ### Pipeline de dados Diagrama de fluxo com: - Fonte → Processamento → Destino - Triggers, transformações, outputs ### Diagrama ER Desk CRM Entidades principais: Lead → Customer → Estimate → Invoice → Payment --- ## Boas práticas - **Máx. 10-15 elementos** por diagrama (mais → dividir em sub-diagramas) - **Labels curtos:** 2-4 palavras por elemento - **Setas com label** quando o fluxo não é óbvio - **Cor consistente** por tipo de componente (seguir paleta Descomplicar) - **Nome descritivo** no ficheiro (não "diagrama1.drawio") - **Guardar em Hub/tmp/diagramas/** para fácil acesso --- ## Instalar draw.io MCP (opcional, para funcionalidades avançadas) O vídeo #210 do Stack_Pesquisa_Videos.md demonstra um MCP draw.io com geração automática a partir de análise de código. Para instalar: ```bash # Verificar se há MCP draw.io disponível no gateway # Ver: Hub/04-Stack/claude-code-context-hygiene.md → secção MCPs ``` Alternativa: usar draw.io via browser em https://app.diagrams.net (gratuito, sem instalação) e importar o `.drawio` gerado. --- ## Healing Log Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar. ```jsonl {"date":"","issue":"","fix":"","source":"user|auto"} ``` *Adicionar nova linha após cada erro corrigido.*