
Create Viz
Turn query results or pandas DataFrames into clear, publication-ready Python charts for reports, decks, and dashboards.
Overview
Create Viz is an agent skill most often used in Grow (also Validate scope and Build docs) that generates publication-quality Python charts from query results or DataFrames.
Install
npx skills add https://github.com/anthropics/knowledge-work-plugins --skill create-vizWhat is this skill?
- Workflow: clarify data source, purpose, and audience before plotting
- Loads warehouse query results, pasted tables, CSV/Excel, or in-thread analysis into pandas
- Recommends chart types when the user does not specify trend vs comparison needs
- Targets publication-quality clarity for executives and external stakeholders
- Supports exploration plots and dashboard-ready components with Python best practices
Adoption & trust: 2.9k installs on skills.sh; 19.6k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have numbers in a warehouse or CSV but no consistent process to pick the right chart and ship a credible plot for a decision-maker.
Who is it for?
Indie SaaS founders and analysts who query product or revenue data and need fast, accurate charts without opening a separate BI suite.
Skip if: Real-time production dashboard infrastructure, pure statistical modeling without a plotting deliverable, or design-only mockups with no dataset.
When should I use this skill?
Turning query results or a DataFrame into a chart, selecting chart type for trends or comparisons, or generating interactive plots with hover and zoom for reports.
What do I get? / Deliverables
You get a labeled, audience-appropriate Python visualization grounded in cleaned data, ready to paste into a report or slide deck.
- Publication-quality chart image or interactive figure
- Documented chart-type rationale for the audience
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Visualization is canonical on Grow/analytics where founders interpret metrics, though the same charts support validation narratives and internal ops reviews. create-viz is chart output from analyzed data—primary shelf is grow/analytics, not raw pipeline ETL.
Where it fits
Plot weekly activation and retention after pulling warehouse metrics for a solo founder review.
Chart survey or waitlist funnel counts to decide whether to narrow the MVP scope.
Embed an accuracy-checked line chart into an internal experiment readme shared with collaborators.
Visualize error-rate spikes from exported logs to prioritize the next fix.
How it compares
Skill-driven plotting workflow from conversation data, not a hosted charting SaaS or a generic 'run matplotlib' one-liner.
Common Questions / FAQ
Who is create-viz for?
Solo builders and small teams who analyze data in Claude-powered workflows and need dependable Python charts for stakeholders.
When should I use create-viz?
In Grow when reviewing metrics, in Validate when illustrating prototype or survey results, and in Build/docs when documenting experiments—whenever you have a DataFrame or query output that needs the right chart type.
Is create-viz safe to install?
It may run queries against connected warehouses and write plot files locally; review the Security Audits panel on this Prism page and scope connector credentials before use.
SKILL.md
READMESKILL.md - Create Viz
# /create-viz - Create Visualizations > If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). Create publication-quality data visualizations using Python. Generates charts from data with best practices for clarity, accuracy, and design. ## Usage ``` /create-viz <data source> [chart type] [additional instructions] ``` ## Workflow ### 1. Understand the Request Determine: - **Data source**: Query results, pasted data, CSV/Excel file, or data to be queried - **Chart type**: Explicitly requested or needs to be recommended - **Purpose**: Exploration, presentation, report, dashboard component - **Audience**: Technical team, executives, external stakeholders ### 2. Get the Data **If data warehouse is connected and data needs querying:** 1. Write and execute the query 2. Load results into a pandas DataFrame **If data is pasted or uploaded:** 1. Parse the data into a pandas DataFrame 2. Clean and prepare as needed (type conversions, null handling) **If data is from a previous analysis in the conversation:** 1. Reference the existing data ### 3. Select Chart Type If the user didn't specify a chart type, recommend one based on the data and question: | Data Relationship | Recommended Chart | |---|---| | Trend over time | Line chart | | Comparison across categories | Bar chart (horizontal if many categories) | | Part-to-whole composition | Stacked bar or area chart (avoid pie charts unless <6 categories) | | Distribution of values | Histogram or box plot | | Correlation between two variables | Scatter plot | | Two-variable comparison over time | Dual-axis line or grouped bar | | Geographic data | Choropleth map | | Ranking | Horizontal bar chart | | Flow or process | Sankey diagram | | Matrix of relationships | Heatmap | Explain the recommendation briefly if the user didn't specify. ### 4. Generate the Visualization Write Python code using one of these libraries based on the need: - **matplotlib + seaborn**: Best for static, publication-quality charts. Default choice. - **plotly**: Best for interactive charts or when the user requests interactivity. **Code requirements:** ```python import matplotlib.pyplot as plt import seaborn as sns import pandas as pd # Set professional style plt.style.use('seaborn-v0_8-whitegrid') sns.set_palette("husl") # Create figure with appropriate size fig, ax = plt.subplots(figsize=(10, 6)) # [chart-specific code] # Always include: ax.set_title('Clear, Descriptive Title', fontsize=14, fontweight='bold') ax.set_xlabel('X-Axis Label', fontsize=11) ax.set_ylabel('Y-Axis Label', fontsize=11) # Format numbers appropriately # - Percentages: '45.2%' not '0.452' # - Currency: '$1.2M' not '1200000' # - Large numbers: '2.3K' or '1.5M' not '2300' or '1500000' # Remove chart junk ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) plt.tight_layout() plt.savefig('chart_name.png', dpi=150, bbox_inches='tight') plt.show() ``` ### 5. Apply Design Best Practices **Color:** - Use a consistent, colorblind-friendly palette - Use color meaningfully (not decoratively) - Highlight the key data point or trend with a contrasting color - Grey out less important reference data **Typography:** - Descriptive title that states the insight, not just the metric (e.g., "Revenue grew 23% YoY" not "Revenue by Month") - Readable axis labels (not rotated 90 degrees if avoidable) - Data labels on key points when they add clarity **Layout:** - Appropriate whitespace and margins - Legend placement that doesn't obscure data - Sorted categories by value (not alphabetically) unless ther