Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Data Create Viz

ASecurity

Cria visualizações de dados de qualidade profissional com Python no tema Evolution (fundo escuro, acento #00FFA7, fonte Inter). Use quando precisar transformar resultados de query ou um DataFrame em um gráfico, selecionar o tipo de gráfico correto para uma tendência ou comparação, gerar um plot para relatório ou apresentação, ou precisar de um gráfico interativo com hover e zoom. Fontes: Stripe, Omie, Licensing, Evo CRM, ou dados colados/CSV.

529 stars
0 votes
0 copies
2 views
Added 5/29/2026
ai-agentspythongoexpress

Works with

cli

Security Analysis

A100/100

Scanned 5/29/2026

$npx -y skills add evolution-foundation/evo-nexus --skill data-create-viz --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Data Create Viz?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Data Create Viz
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/evolution-foundation-data-create-viz/badge)](https://www.skillsdirectory.com/skills/evolution-foundation-data-create-viz)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: data-create-viz
description: Cria visualizações de dados de qualidade profissional com Python no tema Evolution (fundo escuro, acento #00FFA7, fonte Inter). Use quando precisar transformar resultados de query ou um DataFrame em um gráfico, selecionar o tipo de gráfico correto para uma tendência ou comparação, gerar um plot para relatório ou apresentação, ou precisar de um gráfico interativo com hover e zoom. Fontes: Stripe, Omie, Licensing, Evo CRM, ou dados colados/CSV.
argument-hint: "<fonte de dados> [tipo de gráfico] [instruções adicionais]"
---

# data-create-viz — Criar Visualizações de Dados

Cria visualizações de dados de qualidade profissional usando Python. Gera gráficos a partir de dados com boas práticas de clareza, precisão e design no tema Evolution.

## Uso

```
/data-create-viz <fonte de dados> [tipo de gráfico] [instruções adicionais]
```

## Fluxo de Trabalho

### 1. Entender a Requisição

Determinar:

- **Fonte de dados**: Resultados de query, dados colados, arquivo CSV/Excel, ou dados a serem consultados
- **Tipo de gráfico**: Explicitamente solicitado ou precisa ser recomendado
- **Propósito**: Exploração, apresentação, relatório, componente de dashboard
- **Audiência**: Time técnico, executivos, stakeholders externos

### 2. Obter os Dados

**Se fonte de dados do workspace (Stripe, Omie, Licensing, Evo CRM):**
1. Usar a skill correspondente para buscar os dados
2. Carregar os resultados em um pandas DataFrame
3. Limpar e preparar conforme necessário

**Se dados forem colados ou enviados como arquivo:**
1. Fazer parse dos dados em um pandas DataFrame
2. Limpar e preparar conforme necessário (conversões de tipo, tratamento de nulos)

**Se dados vierem de uma análise anterior na conversa:**
1. Referenciar os dados existentes

### 3. Selecionar o Tipo de Gráfico

Se o usuário não especificou um tipo de gráfico, recomendar um com base nos dados e na pergunta:

| Relacionamento dos Dados | Gráfico Recomendado |
|---|---|
| Tendência ao longo do tempo | Gráfico de linha |
| Comparação entre categorias | Gráfico de barras (horizontal se muitas categorias) |
| Composição parte-todo | Barras empilhadas ou área (evitar pizza a menos que <6 categorias) |
| Distribuição de valores | Histograma ou box plot |
| Correlação entre duas variáveis | Scatter plot |
| Comparação de duas variáveis ao longo do tempo | Linha de eixo duplo ou barras agrupadas |
| Dados geográficos | Mapa coroplético |
| Ranking | Gráfico de barras horizontal |
| Fluxo ou processo | Diagrama Sankey |
| Matriz de relacionamentos | Heatmap |

Explicar brevemente a recomendação se o usuário não especificou.

### 4. Gerar a Visualização

Escrever código Python usando uma destas bibliotecas com base na necessidade:

- **matplotlib + seaborn**: Melhor para gráficos estáticos de qualidade profissional. Escolha padrão.
- **plotly**: Melhor para gráficos interativos ou quando o usuário solicitar interatividade.

**Tema Evolution Dark — Configuração Base:**

```python
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import seaborn as sns
import pandas as pd
import numpy as np

# ── Tema Evolution Dark ──────────────────────────────────────────
EVO_BG       = '#0A0A0A'
EVO_SURFACE  = '#1A1A1A'
EVO_ACCENT   = '#00FFA7'
EVO_TEXT     = '#F0F0F0'
EVO_MUTED    = '#666666'
EVO_BORDER   = '#2A2A2A'

EVO_PALETTE = [
    '#00FFA7',  # Acento principal Evolution
    '#4C9FE8',  # Azul
    '#FFB547',  # Âmbar
    '#FF6B6B',  # Vermelho
    '#A78BFA',  # Roxo
    '#34D399',  # Verde esmeralda
    '#FB923C',  # Laranja
]

# Configurar estilo global
plt.rcParams.update({
    'figure.facecolor': EVO_BG,
    'axes.facecolor': EVO_SURFACE,
    'axes.edgecolor': EVO_BORDER,
    'axes.labelcolor': EVO_MUTED,
    'axes.titlecolor': EVO_TEXT,
    'xtick.color': EVO_MUTED,
    'ytick.color': EVO_MUTED,
    'text.color': EVO_TEXT,
    'grid.color': '#222222',
    'grid.alpha': 0.8,
    'legend.facecolor': '#1A1A1A',
    'legend.edgecolor': EVO_BORDER,
    'legend.labelcolor': EVO_TEXT,
    'font.family': 'DejaVu Sans',  # Fallback para Inter
    'figure.dpi': 150,
})

def apply_evo_style(ax):
    """Aplicar estilo Evolution a um eixo."""
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.spines['left'].set_color(EVO_BORDER)
    ax.spines['bottom'].set_color(EVO_BORDER)
    ax.grid(True, alpha=0.3, color='#2A2A2A', linestyle='-', linewidth=0.5)
    ax.set_axisbelow(True)
```

**Requisitos de código:**

```python
# Criar figura com tamanho apropriado
fig, ax = plt.subplots(figsize=(12, 6), facecolor=EVO_BG)

# [código específico do gráfico]

# Sempre incluir:
ax.set_title('Título Claro e Descritivo', fontsize=14, fontweight='bold',
             color=EVO_TEXT, pad=16)
ax.set_xlabel('Label do Eixo X', fontsize=11, color=EVO_MUTED)
ax.set_ylabel('Label do Eixo Y', fontsize=11, color=EVO_MUTED)

# Aplicar estilo Evolution
apply_evo_style(ax)

# Formatar números adequadamente
# - Percentuais: '45,2%' não '0,452'
# - Moeda BRL: 'R$ 1,2M' não '1200000'
# - Moeda USD: '$1.2M' não '1200000'
# - Números grandes: '2,3K' ou '1,5M' não '2300' ou '1500000'

plt.tight_layout(pad=2.0)
plt.savefig('nome_do_grafico.png', dpi=150, bbox_inches='tight',
            facecolor=EVO_BG)
plt.show()
```

### 5. Aplicar Boas Práticas de Design

**Cores:**
- Usar a paleta Evolution consistente e amigável para daltônicos
- Usar cor significativamente (não decorativamente)
- Destacar o ponto de dado ou tendência principal com #00FFA7 (acento Evolution)
- Usar cinza (#444444) para dados de referência menos importantes

**Tipografia:**
- Título descritivo que enuncia o insight, não apenas a métrica (ex: "MRR cresceu 23% YoY" não "MRR por Mês")
- Labels de eixo legíveis (não rotacionadas 90 graus se possível)
- Labels de dados nos pontos-chave quando adicionam clareza

**Layout:**
- Espaçamento e margens apropriados
- Posicionamento de legenda que não obscurece os dados
- Categorias ordenadas por valor (não alfabeticamente) a menos que haja uma ordem natural

**Precisão:**
- Eixo Y começa em zero para gráficos de barras
- Sem quebras de eixo enganosas sem notação clara
- Escalas consistentes ao comparar painéis
- Precisão apropriada (não mostrar 10 casas decimais)

### 6. Salvar e Apresentar

1. Salvar o gráfico como arquivo PNG com nome descritivo
2. Exibir o gráfico para o usuário
3. Fornecer o código usado para que possam modificar
4. Sugerir variações (tipo de gráfico diferente, agrupamento diferente, intervalo de tempo ampliado)

---

## Exemplos de Código por Tipo de Gráfico

### Gráfico de Linha (Tendência Temporal)

```python
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd

fig, ax = plt.subplots(figsize=(12, 6), facecolor=EVO_BG)

# Plotar linhas com estilo Evolution
for i, (col, label) in enumerate(series):
    ax.plot(df['data'], df[col],
            color=EVO_PALETTE[i],
            linewidth=2.5,
            label=label,
            marker='o', markersize=4,
            markerfacecolor=EVO_BG,
            markeredgecolor=EVO_PALETTE[i],
            markeredgewidth=1.5)

    # Área sob a linha (sutil)
    ax.fill_between(df['data'], df[col],
                    alpha=0.08, color=EVO_PALETTE[i])

# Destacar o último ponto
last_val = df[col].iloc[-1]
ax.annotate(f'R$ {last_val/1e3:.1f}K',
            xy=(df['data'].iloc[-1], last_val),
            xytext=(8, 0), textcoords='offset points',
            color=EVO_ACCENT, fontsize=10, fontweight='bold')

ax.xaxis.set_major_formatter(mdates.DateFormatter('%b/%y'))
plt.xticks(rotation=0)
apply_evo_style(ax)
ax.set_title('Tendência de MRR — Últimos 12 Meses', fontsize=14,
             fontweight='bold', color=EVO_TEXT, pad=16)
ax.legend(loc='upper left')

plt.tight_layout()
plt.savefig('mrr_trend.png', dpi=150, bbox_inches='tight', facecolor=EVO_BG)
```

### Gráfico de Barras (Comparação de Categorias)

```python
fig, ax = plt.subplots(figsize=(10, 6), facecolor=EVO_BG)

# Barras horizontais para muitas categorias
categorias = df['plano'].values
valores = df['total'].values

# Ordenar por valor
idx = np.argsort(valores)
categorias, valores = categorias[idx], valores[idx]

# Colorir a maior barra com acento Evolution
cores = [EVO_ACCENT if v == valores.max() else '#2A4A3A' for v in valores]

bars = ax.barh(categorias, valores, color=cores,
               edgecolor='none', height=0.6)

# Adicionar labels de valor
for bar, val in zip(bars, valores):
    ax.text(val + valores.max() * 0.01, bar.get_y() + bar.get_height()/2,
            f'{val:,.0f}', va='center', color=EVO_TEXT, fontsize=10)

apply_evo_style(ax)
ax.set_xlabel('Total', color=EVO_MUTED)
ax.set_title('Instâncias por Versão', fontsize=14, fontweight='bold',
             color=EVO_TEXT, pad=16)
ax.grid(True, axis='x', alpha=0.3)

plt.tight_layout()
plt.savefig('instancias_versao.png', dpi=150, bbox_inches='tight', facecolor=EVO_BG)
```

### Heatmap (Matriz de Correlação ou Volume)

```python
import seaborn as sns

fig, ax = plt.subplots(figsize=(10, 8), facecolor=EVO_BG)

# Heatmap com tema escuro
cmap = sns.diverging_palette(150, 0, s=80, l=40,
                              center='light', as_cmap=True)

sns.heatmap(pivot_df,
            ax=ax,
            cmap='RdYlGn',
            annot=True, fmt='.0f',
            linewidths=1, linecolor=EVO_BG,
            cbar_kws={'shrink': 0.8})

ax.set_facecolor(EVO_SURFACE)
ax.tick_params(colors=EVO_MUTED)
ax.set_title('Volume por Dia e Hora', fontsize=14, fontweight='bold',
             color=EVO_TEXT, pad=16)

plt.tight_layout()
plt.savefig('heatmap_volume.png', dpi=150, bbox_inches='tight', facecolor=EVO_BG)
```

### Gráfico de Eixo Duplo (Volume + Taxa)

```python
fig, ax1 = plt.subplots(figsize=(12, 6), facecolor=EVO_BG)
ax2 = ax1.twinx()

# Barras para volume (eixo esquerdo)
ax1.bar(df['mes'], df['instancias'], color='#2A4A3A',
        alpha=0.8, label='Novas Instâncias')
ax1.set_ylabel('Novas Instâncias', color=EVO_MUTED)
ax1.tick_params(axis='y', colors=EVO_MUTED)

# Linha para taxa (eixo direito)
ax2.plot(df['mes'], df['churn_pct'], color=EVO_ACCENT,
         linewidth=2.5, marker='o', markersize=5,
         markerfacecolor=EVO_BG, markeredgecolor=EVO_ACCENT,
         label='Churn (%)', zorder=5)
ax2.set_ylabel('Churn (%)', color=EVO_ACCENT)
ax2.tick_params(axis='y', colors=EVO_ACCENT)

ax1.set_facecolor(EVO_SURFACE)
apply_evo_style(ax1)

# Legenda combinada
handles = [
    mpatches.Patch(color='#2A4A3A', label='Novas Instâncias'),
    plt.Line2D([0], [0], color=EVO_ACCENT, linewidth=2, label='Churn (%)'),
]
ax1.legend(handles=handles, loc='upper left',
           facecolor='#1A1A1A', edgecolor=EVO_BORDER)

ax1.set_title('Crescimento vs Churn', fontsize=14, fontweight='bold',
              color=EVO_TEXT, pad=16)

plt.tight_layout()
plt.savefig('crescimento_churn.png', dpi=150, bbox_inches='tight', facecolor=EVO_BG)
```

### Histograma (Distribuição)

```python
fig, ax = plt.subplots(figsize=(10, 6), facecolor=EVO_BG)

ax.hist(df['valor'], bins=30, color=EVO_ACCENT, alpha=0.8,
        edgecolor=EVO_BG, linewidth=0.5)

# Linha de mediana e média
mediana = df['valor'].median()
media = df['valor'].mean()
ax.axvline(mediana, color='#FFB547', linewidth=2, linestyle='--',
           label=f'Mediana: R$ {mediana:,.0f}')
ax.axvline(media, color='#FF6B6B', linewidth=2, linestyle=':',
           label=f'Média: R$ {media:,.0f}')

apply_evo_style(ax)
ax.legend(facecolor='#1A1A1A', edgecolor=EVO_BORDER)
ax.set_xlabel('Valor (R$)', color=EVO_MUTED)
ax.set_ylabel('Frequência', color=EVO_MUTED)
ax.set_title('Distribuição de MRR por Cliente', fontsize=14,
             fontweight='bold', color=EVO_TEXT, pad=16)

plt.tight_layout()
plt.savefig('distribuicao_mrr.png', dpi=150, bbox_inches='tight', facecolor=EVO_BG)
```

### Gráfico Interativo com Plotly (tema Evolution)

```python
import plotly.graph_objects as go
import plotly.express as px

# Layout tema Evolution para Plotly
evo_layout = dict(
    paper_bgcolor='#0A0A0A',
    plot_bgcolor='#1A1A1A',
    font=dict(color='#F0F0F0', family='Inter, sans-serif'),
    xaxis=dict(gridcolor='#2A2A2A', linecolor='#2A2A2A'),
    yaxis=dict(gridcolor='#2A2A2A', linecolor='#2A2A2A'),
    legend=dict(bgcolor='#1A1A1A', bordercolor='#2A2A2A'),
    colorway=EVO_PALETTE,
)

fig = go.Figure()
fig.add_trace(go.Scatter(
    x=df['data'], y=df['mrr'],
    mode='lines+markers',
    name='MRR',
    line=dict(color='#00FFA7', width=2.5),
    marker=dict(color='#0A0A0A', size=6, line=dict(color='#00FFA7', width=2)),
    fill='tozeroy',
    fillcolor='rgba(0, 255, 167, 0.08)',
    hovertemplate='<b>%{x}</b><br>MRR: R$ %{y:,.0f}<extra></extra>'
))

fig.update_layout(
    title=dict(text='Tendência de MRR', font=dict(size=16, color='#F0F0F0')),
    **evo_layout
)

fig.write_html('mrr_interativo.html')
fig.show()
```

## Exemplos

```
/data-create-viz Mostrar MRR mensal dos últimos 12 meses como gráfico de linha com a tendência destacada
```

```
/data-create-viz Aqui estão nossos dados de instâncias por país [cola os dados]. Criar gráfico de barras horizontal ranking por total.
```

```
/data-create-viz Consultar os dados de churn do Stripe e criar um heatmap de taxa de churn por cohort (mês de cadastro vs. mês de churn)
```

```
/data-create-viz Dados do Licensing — criar grid 2x2 mostrando: distribuição por versão, tendência de instâncias ativas, mapa de países, e crescimento semanal
```

## Dicas

- Se quiser gráficos interativos (hover, zoom, filtro), mencionar "interativo" e será usado Plotly
- Especificar "apresentação" se precisar de fontes maiores e maior contraste
- Pode solicitar múltiplos gráficos de uma vez (ex: "criar um grid 2x2 de gráficos mostrando...")
- Gráficos são salvos no diretório atual como arquivos PNG
- O tema Evolution dark é o padrão — compatível com dashboards e relatórios internos
- Para embed em dashboard HTML, usar `data-build-dashboard` em vez desta skill

Attribution

evolution-foundationevolution-foundation
View sourceSee grades on GitHubMore from evolution-foundation →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698461 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →