MCPInstall

report-generator

Generate professional PDF/HTML reports with charts, tables, and narrative from data. Supports templates, branding, and automated report generation.

Installs
153
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill report-generator
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads report-generator automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Report Generator

Create professional, data-driven reports with charts, tables, and narrative text. Perfect for business reports, analytics dashboards, status updates, and automated reporting pipelines.

Quick Start

from scripts.report_gen import ReportGenerator

# Create a simple report
report = ReportGenerator("Monthly Sales Report")
report.add_text("This report summarizes sales performance for Q4 2024.")
report.add_table(sales_data, title="Sales by Region")
report.add_chart(sales_data, chart_type="bar", title="Revenue by Month")
report.add_text("Key findings: Revenue increased 25% quarter-over-quarter.")
report.generate().save("sales_report.pdf")

# From template
report = ReportGenerator.from_template("executive_summary")
report.set_data(data_dict)
report.generate().save("exec_summary.pdf")

Features

  • Multiple Output Formats: PDF, HTML
  • Rich Content: Text, tables, charts, images, headers
  • Chart Types: Bar, line, pie, scatter, area, heatmap
  • Table Formatting: Auto-styling, conditional formatting
  • Templates: Pre-built report templates
  • Branding: Logo, colors, fonts, headers/footers
  • Sections: Table of contents, page numbers, appendices
  • Data Integration: CSV, DataFrame, dict inputs

API Reference

Initialization

# New report
report = ReportGenerator("Report Title")
report = ReportGenerator("Report Title", subtitle="Q4 2024 Analysis")

# From template
report = ReportGenerator.from_template("quarterly_review")

# With config
report = ReportGenerator("Title", config={
    "page_size": "letter",
    "orientation": "portrait",
    "margins": {"top": 1, "bottom": 1, "left": 0.75, "right": 0.75}
})

Report Metadata

# Title and subtitle
report.set_title("Annual Report 2024")
report.set_subtitle("Financial Performance Analysis")

# Author and date
report.set_author("Analytics Team")
report.set_date("December 2024")
report.set_date_auto()  # Use today

# Organization
report.set_organization("Acme Corporation")
report.set_logo("logo.png")

Adding Content

Text Content

# Simple paragraph
report.add_text("This is a paragraph of analysis text.")

# Styled text
report.add_text("Important finding!", style="highlight")
report.add_text("Key metric: 42%", style="metric")

# Headers
report.add_heading("Executive Summary", level=1)
report.add_heading("Revenue Analysis", level=2)
report.add_heading("By Region", level=3)

# Bullet points
report.add_bullets([
    "Revenue increased 25% YoY",
    "Customer acquisition up 15%",
    "Churn rate decreased to 3%"
])

# Numbered list
report.add_numbered_list([
    "Expand to European markets",
    "Launch mobile application",
    "Implement AI-driven analytics"
])

Tables

# From DataFrame
import pandas as pd
df = pd.DataFrame({
    'Region': ['North', 'South', 'East', 'West'],
    'Revenue': [100000, 85000, 92000, 78000],
    'Growth': ['12%', '8%', '15%', '5%']
})
report.add_table(df, title="Regional Performance")

# From dict/list
data = [
    {'Product': 'A', 'Sales': 1000, 'Profit': 200},
    {'Product': 'B', 'Sales': 1500, 'Profit': 350}
]
report.add_table(data, title="Product Summary")

# With styling
report.add_table(df, title="Sales Data",
    highlight_max=['Revenue'],       # Highlight max values
    highlight_min=['Growth'],        # Highlight min values
    currency_cols=['Revenue'],       # Format as currency
    percent_cols=['Growth'],         # Format as percent
    align={'Region': 'left', 'Revenue': 'right'}
)

Charts

# Bar chart
report.add_chart(
    data=df,
    chart_type="bar",
    x="Region",
    y="Revenue",
    title="Revenue by Region"
)

# Line chart
report.add_chart(
    data=time_series_df,
    chart_type="line",
    x="Month",
    y=["Sales", "Forecast"],
    title="Sales Trend"
)

# Pie chart
report.add_chart(
    data=category_df,
    chart_type="pie",
    values="Amount",
    labels="Category",
    title="Budget Allocation"
)

# Chart options
report.add_chart(
    data=df,
    chart_type="bar",
    x="Region",
    y="Revenue",
    title="Revenue Analysis",
    color="#3498db",
    width=6,           # inches
    height=4,
    show_values=True,
    show_legend=True
)

Images

# Add image
report.add_image("screenshot.png", caption="Dashboard View")
report.add_image("diagram.png", width=5, caption="Architecture Diagram")

Special Elements

# Page break
report.add_page_break()

# Horizontal line
report.add_divider()

# Spacer
report.add_spacer(height=0.5)  # inches

# Callout box
report.add_callout(
    "Key Insight: Customer retention improved 20% after implementing the new onboarding flow.",
    style="info"  # info, warning, success, error
)

# Quote
report.add_quote(
    "Data is the new oil.",
    attribution="Clive Humby"
)

Sections and Structure

# Start a new section
report.start_section("Financial Analysis")

# Add content to section
report.add_text("...")
report.add_table(...)

# End section
report.end_section()

# Table of contents (auto-generated)
report.enable_toc()

# Appendix
report.start_appendix()
report.add_heading("Raw Data", level=2)
report.add_table(raw_data)

Branding and Styling

# Logo and organization
report.set_logo("logo.png", width=150)
report.set_organization("Acme Corp")

# Colors
report.set_colors(
    primary="#1e40af",      # Headers, accents
    secondary="#6b7280",    # Secondary text
    background="#ffffff"    # Background
)

# Fonts
report.set_fonts(
    heading="Helvetica-Bold",
    body="Helvetica"
)

# Header and footer
report.set_header("Confidential - Internal Use Only")
report.set_footer("Page {page} of {total}")

# Watermark
report.set_watermark("DRAFT")

Templates

# Available templates
report = ReportGenerator.from_template("executive_summary")
report = ReportGenerator.from_template("quarterly_review")
report = ReportGenerator.from_template("project_status")
report = ReportGenerator.from_template("analytics_dashboard")

# Template with data
report = ReportGenerator.from_template("monthly_metrics")
report.set_data({
    "period": "December 2024",
    "revenue": 1500000,
    "growth": 0.15,
    "customers": 5000,
    "charts": {"revenue_trend": trend_df}
})
report.generate()

Generation and Export

# Generate report
report.generate()

# Save as PDF
report.save("report.pdf")

# Save as HTML
report.save("report.html")

# Get bytes
pdf_bytes = report.to_bytes()
html_string = report.to_html()

Templates

Executive Summary

  • Title page
  • Key metrics highlights
  • Summary bullets
  • Charts section
  • Recommendations

Quarterly Review

  • Performance overview
  • Financial metrics
  • Comparison to previous quarter
  • Goals progress
  • Next quarter outlook

Project Status

  • Project overview
  • Timeline/milestones
  • Risks and issues
  • Team updates
  • Next steps

Analytics Dashboard

  • KPI cards
  • Multiple charts
  • Trend analysis
  • Data tables
  • Insights

CLI Usage

# Generate from JSON config
python report_gen.py --config report_config.json --output report.pdf

# With template
python report_gen.py --template executive_summary --data data.json --output summary.pdf

# Quick report from CSV
python report_gen.py --csv data.csv --title "Data Report" --output report.pdf

CLI Arguments

ArgumentDescriptionDefault
--configReport configuration JSON-
--templateTemplate name-
--dataData JSON file-
--csvCSV data file-
--titleReport titleReport
--outputOutput file pathreport.pdf
--formatOutput format (pdf/html)pdf

Examples

Sales Report

report = ReportGenerator("Q4 Sales Report")
report.set_subtitle("October - December 2024")
report.set_organization("Sales Department")
report.set_logo("company_logo.png")

report.add_heading("Executive Summary", level=1)
report.add_text(
    "Q4 2024 showed strong performance across all regions, "
    "with total revenue reaching $4.2M, a 23% increase over Q3."
)

report.add_callout(
    "Total Revenue: $4.2M (+23% QoQ)",
    style="success"
)

report.add_heading("Regional Performance", level=2)
report.add_chart(regional_data, "bar", x="Region", y="Revenue",
                 title="Revenue by Region")
report.add_table(regional_data, title="Detailed Metrics")

report.add_heading("Trends", level=2)
report.add_chart(monthly_data, "line", x="Month", y="Revenue",
                 title="Monthly Revenue Trend")

report.add_heading("Recommendations", level=1)
report.add_bullets([
    "Increase investment in high-growth East region",
    "Address declining West region performance",
    "Launch Q1 promotional campaign"
])

report.generate().save("q4_sales_report.pdf")

Analytics Dashboard

report = ReportGenerator("Marketing Analytics")
report.set_date_auto()

# KPI Summary
report.add_heading("Key Metrics", level=1)
kpis = [
    ["Visitors", "125,000", "+15%"],
    ["Conversions", "3,750", "+22%"],
    ["Revenue", "$187,500", "+18%"],
    ["CAC", "$45", "-8%"]
]
report.add_table(kpis, headers=["Metric", "Value", "Change"])

# Traffic Sources
report.add_heading("Traffic Sources", level=2)
report.add_chart(traffic_df, "pie", values="Sessions", labels="Source",
                 title="Traffic Distribution")

# Conversion Funnel
report.add_heading("Conversion Funnel", level=2)
report.add_chart(funnel_df, "bar", x="Stage", y="Users",
                 title="Funnel Analysis", horizontal=True)

# Trend Analysis
report.add_heading("Trends", level=2)
report.add_chart(daily_df, "line", x="Date", y=["Visitors", "Conversions"],
                 title="Daily Performance")

report.generate().save("marketing_dashboard.pdf")

Dependencies

reportlab>=4.0.0
Pillow>=10.0.0
pandas>=2.0.0
matplotlib>=3.7.0

Limitations

  • Charts rendered as static images in PDF
  • Complex layouts may need manual adjustment
  • Large datasets may impact performance
  • HTML output has basic styling (no interactive charts)

FAQ

What does the report-generator skill do?

Generate professional PDF/HTML reports with charts, tables, and narrative from data. Supports templates, branding, and automated report generation.

How do I install report-generator?

Run npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill report-generator in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/report-generator/ (personal) or .claude/skills/report-generator/ (project).

Which AI agents can use report-generator?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is report-generator safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains report-generator?

It is published by dkyazzentwatwa in dkyazzentwatwa/chatgpt-skills. It has 153 recorded installs.

More from dkyazzentwatwa/chatgpt-skills

View all →

ocr-document-processor

dkyazzentwatwa/chatgpt-skills

Extract text and structure from scans, images, and scanned PDFs. Use for OCR, searchable PDFs, table extraction, receipt parsing, and business card parsing.

Media & Creative4.8K installs

crypto-ta-analyzer

dkyazzentwatwa/chatgpt-skills

Run multi-indicator technical analysis on crypto or market OHLCV data. Use for deterministic trend, momentum, volume, and divergence analysis.

Business & Finance1.6K installs

text-summarizer

dkyazzentwatwa/chatgpt-skills

Generate extractive summaries from long text documents. Control summary length, extract key sentences, and process multiple documents.

693 installs

financial-calculator

dkyazzentwatwa/chatgpt-skills

Run loan, investment, NPV, retirement, savings, and risk calculations with schedules and charts. Use for deterministic financial modeling tasks.

Business & Finance503 installs

document-converter-suite

dkyazzentwatwa/chatgpt-skills

Convert PDFs, Office docs, markdown, HTML, and tables between editable formats. Use for best-effort document conversion, PDF utilities, form filling, and table extraction.

Docs & Writing483 installs

image-enhancement-suite

dkyazzentwatwa/chatgpt-skills

Open the skill to read its SKILL.md instructions.

Media & Creative293 installs

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs