Report Generator

by claude-office-skills9c4c7d5cd281MIT499 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 8 months ago

Generate professional data reports with charts, tables, and visualizations

AI-generated overview

Generates formatted data reports with charts, tables, and KPI summaries from supplied data.

What it does
This skill guides an agent in producing professional data reports such as dashboards, KPI summaries, and analytical reports. It describes report structure, Python-based chart and metric calculation examples, and an HTML report template. Outputs are formatted reports containing visualizations, tables, and insights.
When to use it
Use it when you have data in CSV, Excel, or JSON form and want a formatted report, dashboard, or executive summary. It suits sales reports, monthly KPI dashboards, and data analysis write-ups.
Requirements
Instructions only; no scripts ship with the skill. The examples reference Python with pandas, matplotlib, and reportlab, and the metadata lists an office-mcp server with create_docx, create_xlsx, create_chart, and create_pptx tools.

Report Generator Skill

Overview

This skill enables automatic generation of professional data reports. Create dashboards, KPI summaries, and analytical reports with charts, tables, and insights from your data.

How to Use

  1. Provide data (CSV, Excel, JSON, or describe it)
  2. Specify the type of report needed
  3. I'll generate a formatted report with visualizations

Example prompts:

  • "Generate a sales report from this data"
  • "Create a monthly KPI dashboard"
  • "Build an executive summary with charts"
  • "Produce a data analysis report"

Domain Knowledge

Report Components

python
# Report structurereport = {    'title': 'Monthly Sales Report',    'period': 'January 2024',    'sections': [        'executive_summary',        'kpi_dashboard',        'detailed_analysis',        'charts',        'recommendations'    ]}

Using Python for Reports

python
import pandas as pdimport matplotlib.pyplot as pltfrom reportlab.lib.pagesizes import letterfrom reportlab.pdfgen import canvas
def generate_report(data, output_path):    # Load data    df = pd.read_csv(data)        # Calculate KPIs    total_revenue = df['revenue'].sum()    avg_order = df['revenue'].mean()    growth = df['revenue'].pct_change().mean()        # Create charts    fig, axes = plt.subplots(2, 2, figsize=(12, 10))    df.plot(kind='bar', ax=axes[0,0], title='Revenue by Month')    df.plot(kind='line', ax=axes[0,1], title='Trend')    plt.savefig('charts.png')        # Generate PDF    # ... PDF generation code        return output_path

HTML Report Template

python
def generate_html_report(data, title):    html = f'''    <!DOCTYPE html>    <html>    <head>        <title>{title}</title>        <style>            body {{ font-family: Arial; margin: 40px; }}            .kpi {{ display: flex; gap: 20px; }}            .kpi-card {{ background: #f5f5f5; padding: 20px; border-radius: 8px; }}            .metric {{ font-size: 2em; font-weight: bold; color: #2563eb; }}            table {{ border-collapse: collapse; width: 100%; }}            th, td {{ border: 1px solid #ddd; padding: 12px; text-align: left; }}        </style>    </head>    <body>        <h1>{title}</h1>        <div class="kpi">            <div class="kpi-card">                <div class="metric">${data['revenue']:,.0f}</div>                <div>Total Revenue</div>            </div>            <div class="kpi-card">                <div class="metric">{data['growth']:.1%}</div>                <div>Growth Rate</div>            </div>        </div>        <!-- More content -->    </body>    </html>    '''    return html

Example: Sales Report

python
import pandas as pdimport matplotlib.pyplot as plt
def create_sales_report(csv_path, output_path):    # Read data    df = pd.read_csv(csv_path)        # Calculate metrics    metrics = {        'total_revenue': df['amount'].sum(),        'total_orders': len(df),        'avg_order': df['amount'].mean(),        'top_product': df.groupby('product')['amount'].sum().idxmax()    }        # Create visualizations    fig, axes = plt.subplots(2, 2, figsize=(14, 10))        # Revenue by product    df.groupby('product')['amount'].sum().plot(        kind='bar', ax=axes[0,0], title='Revenue by Product'    )        # Monthly trend    df.groupby('month')['amount'].sum().plot(        kind='line', ax=axes[0,1], title='Monthly Revenue'    )        plt.tight_layout()    plt.savefig(output_path.replace('.html', '_charts.png'))        # Generate HTML report    html = generate_html_report(metrics, 'Sales Report')        with open(output_path, 'w') as f:        f.write(html)        return output_path
create_sales_report('sales_data.csv', 'sales_report.html')

Resources

Source and attribution

Source:claude-office-skills/skillsinreport-generatorat commit9c4c7d5

License: MIT

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal

Report Generator Agent Skill | SourceWeft