Diagram Generation
by LucasBiason
Geração de diagramas técnicos para tutoriais, artigos e documentação
Skill Details
Repository Files
1 file in this skill directory
name: diagram-generation description: Geração de diagramas técnicos para tutoriais, artigos e documentação
Geração de Diagramas Técnicos
Padrões e ferramentas para criar diagramas em projetos de documentação técnica.
Quando Usar
- Tutoriais que precisam de fluxogramas
- Artigos técnicos com diagramas de arquitetura
- Documentação de APIs com diagramas de sequência
- Knowledge Base com visualizações de conceitos
Ferramentas Recomendadas
APIs Disponíveis
OpenAI DALL-E
import openai
response = openai.images.generate(
model="dall-e-3",
prompt="Diagrama ilustrativo de algoritmo de ordenação bubble sort",
size="1024x1024",
quality="standard"
)
Gemini (Nano Banana)
import google.generativeai as genai
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel('gemini-2.5-flash-image')
response = model.generate_content(
"Crie um diagrama ilustrativo de algoritmo de ordenação"
)
Mermaid (Para Diagramas Técnicos)
Para diagramas técnicos, usar Mermaid (não precisa de API):
Sintaxe declarativa que renderiza direto no GitHub/GitLab.
flowchart TD
A[Entrada] --> B{Decisão}
B -->|Sim| C[Ação 1]
B -->|Não| D[Ação 2]
C --> E[Fim]
D --> E
Tipos de diagrama:
flowchart- FluxogramassequenceDiagram- Diagramas de sequênciaclassDiagram- Diagramas de classeerDiagram- Diagramas ERgantt- Cronogramaspie- Gráficos de pizzastateDiagram- Máquinas de estado
2. PlantUML
Mais flexível, precisa de servidor ou extensão.
@startuml
actor User
User -> API: Request
API -> Database: Query
Database --> API: Result
API --> User: Response
@enduml
3. Excalidraw
Diagramas com visual de desenho à mão. Exporta PNG/SVG.
4. Draw.io (diagrams.net)
Editor visual completo. Arquivos .drawio são XML editável.
5. Python (Matplotlib/Graphviz)
Para diagramas programáticos ou gerados a partir de dados.
import matplotlib.pyplot as plt
import networkx as nx
G = nx.DiGraph()
G.add_edges_from([("A", "B"), ("B", "C"), ("A", "C")])
nx.draw(G, with_labels=True)
plt.savefig("diagram.png")
Padrões por Tipo de Conteúdo
Tutoriais
| Tipo | Ferramenta | Formato |
|---|---|---|
| Fluxo de passos | Mermaid flowchart | Inline no MD |
| Arquitetura simples | Mermaid | Inline no MD |
| Arquitetura complexa | Draw.io | PNG exportado |
| Conceitos abstratos | Excalidraw | PNG exportado |
Artigos Técnicos
| Tipo | Ferramenta | Formato |
|---|---|---|
| Sequência de chamadas | Mermaid sequence | Inline |
| Classes/Estruturas | Mermaid class | Inline |
| Banco de dados | Mermaid ER | Inline |
| Infra/Cloud | Draw.io | PNG |
Knowledge Base
| Tipo | Ferramenta | Formato |
|---|---|---|
| Mapas mentais | Excalidraw | PNG |
| Hierarquias | Mermaid flowchart | Inline |
| Comparações | Tabelas MD | Texto |
| Timelines | Mermaid gantt | Inline |
Templates Mermaid
Fluxograma de Decisão
flowchart TD
START([Início]) --> CHECK{Condição?}
CHECK -->|Verdadeiro| ACTION1[Executar A]
CHECK -->|Falso| ACTION2[Executar B]
ACTION1 --> END([Fim])
ACTION2 --> END
Diagrama de Sequência
sequenceDiagram
participant C as Cliente
participant S as Servidor
participant D as Database
C->>S: POST /api/data
S->>D: INSERT INTO...
D-->>S: OK
S-->>C: 201 Created
Diagrama de Classes
classDiagram
class Animal {
+String nome
+int idade
+comer()
+dormir()
}
class Cachorro {
+latir()
}
Animal <|-- Cachorro
Diagrama ER
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ ITEM : contains
USER {
int id PK
string email
string name
}
ORDER {
int id PK
int user_id FK
date created_at
}
Arquitetura de Sistema
flowchart LR
subgraph Frontend
A[React App]
end
subgraph Backend
B[API Gateway]
C[Auth Service]
D[Core Service]
end
subgraph Data
E[(PostgreSQL)]
F[(Redis)]
end
A --> B
B --> C
B --> D
C --> E
D --> E
D --> F
Convenções de Estilo
Cores (para ferramentas que suportam)
- Azul: Componentes de entrada/usuário
- Verde: Processamento/lógica
- Amarelo: Decisões/condicionais
- Vermelho: Erros/alertas
- Cinza: Componentes externos
Nomenclatura
- Usar verbos para ações: "Processar", "Validar", "Enviar"
- Usar substantivos para componentes: "Servidor", "Database", "Cache"
- Manter consistência: não misturar português e inglês no mesmo diagrama
Tamanho
- Fluxogramas: máximo 10-15 nós
- Sequência: máximo 5-6 participantes
- Se ficar grande demais, dividir em múltiplos diagramas
Workflow de Criação
- Definir objetivo do diagrama
- Listar componentes/passos principais
- Escolher ferramenta apropriada
- Criar rascunho simples
- Refinar e adicionar detalhes
- Exportar no formato correto
- Testar renderização no destino final
Integração com Knowledge Base
Para o projeto Engineering Knowledge Base:
engineering-knowledge-base/
└── [seção]/
└── [tutorial]/
├── README.md # Texto com diagramas Mermaid inline
├── assets/
│ ├── architecture.png # Diagramas complexos
│ └── architecture.drawio # Fonte editável
└── notebooks/
└── 01-intro.ipynb # Pode ter diagramas Python
Diagramas Ilustrativos (APIs de Imagem)
Para diagramas ilustrativos que precisam de estilo visual, usar APIs de imagem:
OpenAI DALL-E
import openai
response = openai.images.generate(
model="dall-e-3",
prompt="Diagrama ilustrativo de algoritmo de ordenação bubble sort",
size="1024x1024",
quality="standard"
)
Gemini (Nano Banana)
import google.generativeai as genai
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel('gemini-2.5-flash-image')
response = model.generate_content(
"Crie um diagrama ilustrativo de algoritmo de ordenação"
)
Implementação: core/utils/diagram_generator/ - Sistema completo para geração de diagramas ilustrativos usando OpenAI DALL-E ou Google Gemini
Manter simples e documentado.
Checklist
Antes de finalizar um diagrama:
- O diagrama tem um propósito claro?
- Está legível em diferentes tamanhos de tela?
- As cores têm contraste suficiente?
- A nomenclatura é consistente?
- O diagrama complementa o texto (não duplica)?
- O formato é apropriado para o destino?
- Se ilustrativo, API configurada (OpenAI ou Gemini)?
Related Skills
Team Composition Analysis
This skill should be used when the user asks to "plan team structure", "determine hiring needs", "design org chart", "calculate compensation", "plan equity allocation", or requests organizational design and headcount planning for a startup.
Startup Financial Modeling
This skill should be used when the user asks to "create financial projections", "build a financial model", "forecast revenue", "calculate burn rate", "estimate runway", "model cash flow", or requests 3-5 year financial planning for a startup.
Dbt Transformation Patterns
Master dbt (data build tool) for analytics engineering with model organization, testing, documentation, and incremental strategies. Use when building data transformations, creating data models, or implementing analytics engineering best practices.
Startup Metrics Framework
This skill should be used when the user asks about "key startup metrics", "SaaS metrics", "CAC and LTV", "unit economics", "burn multiple", "rule of 40", "marketplace metrics", or requests guidance on tracking and optimizing business performance metrics.
Market Sizing Analysis
This skill should be used when the user asks to "calculate TAM", "determine SAM", "estimate SOM", "size the market", "calculate market opportunity", "what's the total addressable market", or requests market sizing analysis for a startup or business opportunity.
Clinical Decision Support
Generate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug develo
Anndata
This skill should be used when working with annotated data matrices in Python, particularly for single-cell genomics analysis, managing experimental measurements with metadata, or handling large-scale biological datasets. Use when tasks involve AnnData objects, h5ad files, single-cell RNA-seq data, or integration with scanpy/scverse tools.
Geopandas
Python library for working with geospatial vector data including shapefiles, GeoJSON, and GeoPackage files. Use when working with geographic data for spatial analysis, geometric operations, coordinate transformations, spatial joins, overlay operations, choropleth mapping, or any task involving reading/writing/analyzing vector geographic data. Supports PostGIS databases, interactive maps, and integration with matplotlib/folium/cartopy. Use for tasks like buffer analysis, spatial joins between dat
Market Research Reports
Generate comprehensive market research reports (50+ pages) in the style of top consulting firms (McKinsey, BCG, Gartner). Features professional LaTeX formatting, extensive visual generation with scientific-schematics and generate-image, deep integration with research-lookup for data gathering, and multi-framework strategic analysis including Porter's Five Forces, PESTLE, SWOT, TAM/SAM/SOM, and BCG Matrix.
Plotly
Interactive scientific and statistical data visualization library for Python. Use when creating charts, plots, or visualizations including scatter plots, line charts, bar charts, heatmaps, 3D plots, geographic maps, statistical distributions, financial charts, and dashboards. Supports both quick visualizations (Plotly Express) and fine-grained customization (graph objects). Outputs interactive HTML or static images (PNG, PDF, SVG).
