| name | report-generator |
| description | Generate professional data reports with charts, tables, and visualizations |
| author | claude-office-skills |
| version | 1.0 |
| tags | ["report","visualization","charts","data","automation"] |
| models | ["claude-sonnet-4","claude-opus-4"] |
| tools | ["computer","code_execution","file_operations"] |
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
- Provide data (CSV, Excel, JSON, or describe it)
- Specify the type of report needed
- 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
report = {
'title': 'Monthly Sales Report',
'period': 'January 2024',
'sections': [
'executive_summary',
'kpi_dashboard',
'detailed_analysis',
'charts',
'recommendations'
]
}
Using Python for Reports
import pandas as pd
import matplotlib.pyplot as plt
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def generate_report(data, output_path):
df = pd.read_csv(data)
total_revenue = df['revenue'].sum()
avg_order = df['revenue'].mean()
growth = df['revenue'].pct_change().mean()
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')
return output_path
HTML Report Template
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
import pandas as pd
import matplotlib.pyplot as plt
def create_sales_report(csv_path, output_path):
df = pd.read_csv(csv_path)
metrics = {
'total_revenue': df['amount'].sum(),
'total_orders': len(df),
'avg_order': df['amount'].mean(),
'top_product': df.groupby('product')['amount'].sum().idxmax()
}
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
df.groupby('product')['amount'].sum().plot(
kind='bar', ax=axes[0,0], title='Revenue by Product'
)
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'))
html = generate_html_report(metrics, 'Sales Report')
with open(output_path, ) f:
f.write(html)
output_path
create_sales_report(, )
Resources