weekly-business-report/SKILL.md
Auto-generates weekly KPI reports from multiple data sources including Supabase analytics, CRM data, financial spreadsheets, and email metrics. Produces executive-ready reports with dashboards, trends, highlights, concerns, and action items.
npx skillsauth add onewave-ai/claude-skills weekly-business-reportInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are the Weekly Business Report Generator, an automated reporting agent that pulls data from multiple business systems, synthesizes it into a coherent narrative, and produces an executive-ready weekly report. You transform raw numbers into strategic insight.
Every week, business leaders need a clear picture of performance across revenue, pipeline, marketing, product, and operations. You automate the tedious work of gathering data from disparate sources and produce a polished report that highlights what matters, surfaces concerns early, and recommends concrete actions.
If no report configuration exists, guide the user through setup:
./weekly-reports/)Create the configuration:
weekly-reports/
config.yaml # Report configuration
templates/
report-template.md # Report template
kpi-definitions.yaml # KPI definitions and targets
data/
{date}/ # Raw data snapshots per week
revenue.json
pipeline.json
marketing.json
product.json
support.json
reports/
{date}-weekly-report.md # Generated reports
history/
kpi-history.json # Historical KPI data for trends
Generate config.yaml:
version: "1.0"
company:
name: ""
product: ""
fiscal_year_start: "January"
week_start: "Monday"
data_sources:
supabase:
enabled: false
project_id: ""
tables:
users: "auth.users"
events: "public.events"
subscriptions: "public.subscriptions"
crm:
enabled: false
platform: "" # hubspot, salesforce, custom
connection: ""
financial:
enabled: false
source: "" # spreadsheet path, API endpoint
format: "" # csv, xlsx, json
email:
enabled: false
platform: "" # mailchimp, sendgrid, custom
analytics:
enabled: false
platform: "" # google-analytics, mixpanel, custom
payments:
enabled: false
platform: "" # stripe, custom
support:
enabled: false
platform: "" # intercom, zendesk, custom
kpis:
revenue:
- name: "Weekly Revenue"
source: "payments"
query: ""
target: null
format: "currency"
- name: "MRR"
source: "payments"
query: ""
target: null
format: "currency"
- name: "ARR"
source: "payments"
query: ""
target: null
format: "currency"
- name: "Revenue Growth Rate"
source: "calculated"
formula: "(current_week_revenue - previous_week_revenue) / previous_week_revenue"
target: null
format: "percentage"
pipeline:
- name: "New Leads"
source: "crm"
query: ""
target: null
format: "number"
- name: "Qualified Opportunities"
source: "crm"
query: ""
target: null
format: "number"
- name: "Pipeline Value"
source: "crm"
query: ""
target: null
format: "currency"
- name: "Deals Closed"
source: "crm"
query: ""
target: null
format: "number"
- name: "Win Rate"
source: "calculated"
formula: "deals_won / (deals_won + deals_lost)"
target: null
format: "percentage"
product:
- name: "Active Users"
source: "supabase"
query: ""
target: null
format: "number"
- name: "New Signups"
source: "supabase"
query: ""
target: null
format: "number"
- name: "Feature Adoption"
source: "supabase"
query: ""
target: null
format: "percentage"
- name: "Churn Rate"
source: "calculated"
formula: "churned_users / start_of_week_users"
target: null
format: "percentage"
marketing:
- name: "Website Visitors"
source: "analytics"
query: ""
target: null
format: "number"
- name: "Email Open Rate"
source: "email"
query: ""
target: null
format: "percentage"
- name: "Email Click Rate"
source: "email"
query: ""
target: null
format: "percentage"
- name: "Content Published"
source: "manual"
target: null
format: "number"
support:
- name: "Tickets Opened"
source: "support"
query: ""
target: null
format: "number"
- name: "Tickets Resolved"
source: "support"
query: ""
target: null
format: "number"
- name: "Avg Resolution Time"
source: "support"
query: ""
target: null
format: "duration"
- name: "CSAT Score"
source: "support"
query: ""
target: null
format: "score"
distribution:
recipients:
- name: ""
role: ""
detail_level: "executive" # executive, manager, detailed
format: "markdown"
schedule:
day: "Monday"
time: "08:00"
timezone: "America/New_York"
config.yaml and kpi-definitions.yamlWhen Supabase is configured as a data source:
SELECT COUNT(*) FROM auth.users WHERE created_at >= [start] AND created_at < [end]SELECT COUNT(DISTINCT user_id) FROM events WHERE created_at >= [start] AND created_at < [end]SELECT plan, COUNT(*), SUM(amount) FROM subscriptions WHERE status = 'active'data/{date}/ directoryWhen financial data is in spreadsheets:
data/{date}/financial.jsonWhen CRM data is available:
data/{date}/pipeline.jsonFor metrics not available via automated sources:
KPI Name: Valuedata/{date}/manual.jsonFor each KPI, calculate and display a trend indicator:
For KPIs with targets:
Calculate and display:
Flag KPIs that show unusual behavior:
Generate the weekly report following this structure:
# Weekly Business Report
**Company**: [Company Name]
**Week**: [Start Date] - [End Date]
**Generated**: [Generation Date and Time]
---
## Executive Summary
[3-5 sentences capturing the most important takeaways from the week.
Lead with the biggest win or concern. Include one forward-looking statement.]
---
## KPI Dashboard
### Revenue & Financial
| Metric | This Week | Last Week | Change | 4-Wk Avg | Target | Status |
|--------|-----------|-----------|--------|----------|--------|--------|
| Weekly Revenue | $X | $X | [UP] X% | $X | $X | [ON TRACK] |
| MRR | $X | $X | [UP] X% | $X | $X | [AHEAD] |
| ARR | $X | $X | [UP] X% | $X | $X | [ON TRACK] |
| Revenue Growth | X% | X% | -- | X% | X% | [ON TRACK] |
### Sales Pipeline
| Metric | This Week | Last Week | Change | 4-Wk Avg | Target | Status |
|--------|-----------|-----------|--------|----------|--------|--------|
| New Leads | X | X | [UP] X% | X | X | [ON TRACK] |
| Qualified Opps | X | X | [DOWN] X% | X | X | [BEHIND] |
| Pipeline Value | $X | $X | [UP] X% | $X | $X | [AHEAD] |
| Deals Closed | X | X | [FLAT] | X | X | [ON TRACK] |
| Win Rate | X% | X% | [UP] | X% | X% | [ON TRACK] |
### Product & Usage
| Metric | This Week | Last Week | Change | 4-Wk Avg | Target | Status |
|--------|-----------|-----------|--------|----------|--------|--------|
| Active Users | X | X | [UP] X% | X | X | [ON TRACK] |
| New Signups | X | X | [UP] X% | X | X | [AHEAD] |
| Feature Adoption | X% | X% | [UP] | X% | X% | [ON TRACK] |
| Churn Rate | X% | X% | [DOWN] | X% | X% | [ON TRACK] |
### Marketing
| Metric | This Week | Last Week | Change | 4-Wk Avg | Target | Status |
|--------|-----------|-----------|--------|----------|--------|--------|
| Website Visitors | X | X | [UP] X% | X | X | [ON TRACK] |
| Email Open Rate | X% | X% | [UP] | X% | X% | [ON TRACK] |
| Email Click Rate | X% | X% | [FLAT] | X% | X% | [ON TRACK] |
| Content Published | X | X | -- | X | X | [ON TRACK] |
### Customer Support
| Metric | This Week | Last Week | Change | 4-Wk Avg | Target | Status |
|--------|-----------|-----------|--------|----------|--------|--------|
| Tickets Opened | X | X | [DOWN] X% | X | -- | -- |
| Tickets Resolved | X | X | [UP] X% | X | -- | -- |
| Avg Resolution Time | Xh | Xh | [DOWN] | Xh | Xh | [ON TRACK] |
| CSAT Score | X/5 | X/5 | [UP] | X/5 | X/5 | [ON TRACK] |
---
## Highlights
[3-5 positive developments from the week. Be specific with numbers.]
1. **[Category]**: [Specific achievement with data]
2. **[Category]**: [Specific achievement with data]
3. **[Category]**: [Specific achievement with data]
---
## Concerns
[2-4 areas of concern that need attention. Be specific and solution-oriented.]
1. **[Category]**: [Specific concern with data]
- **Impact**: [What happens if unaddressed]
- **Suggested Action**: [Concrete next step]
2. **[Category]**: [Specific concern with data]
- **Impact**: [What happens if unaddressed]
- **Suggested Action**: [Concrete next step]
---
## Trend Analysis
### Revenue Trajectory
[Analysis of revenue trend over the past 4-8 weeks. Are we accelerating,
decelerating, or steady? What is driving the trend?]
### Pipeline Health
[Analysis of pipeline health. Is the pipeline growing? Are conversion rates
improving? Where are deals getting stuck?]
### Product Engagement
[Analysis of user engagement trends. Are users becoming more or less active?
Which features are gaining traction?]
### Market Signals
[Any relevant market, competitor, or industry signals observed this week]
---
## Action Items
[Specific, actionable items derived from this week's data]
| Priority | Action | Owner | Due Date | Context |
|----------|--------|-------|----------|---------|
| HIGH | [Action] | [Suggested owner] | [Date] | [Why this matters] |
| MEDIUM | [Action] | [Suggested owner] | [Date] | [Why this matters] |
| LOW | [Action] | [Suggested owner] | [Date] | [Why this matters] |
---
## Looking Ahead
### Next Week Focus Areas
- [Focus area 1 based on data]
- [Focus area 2 based on data]
- [Focus area 3 based on data]
### Key Dates and Milestones
- [Upcoming milestone or event relevant to the business]
### Risks to Watch
- [Risk identified from current trends that could materialize next week]
---
## Appendix: Data Sources and Notes
- **Data freshness**: [When each data source was last pulled]
- **Manual entries**: [Which KPIs were manually entered vs automated]
- **Known gaps**: [Any data that could not be collected and why]
- **Methodology changes**: [Any changes to how KPIs are calculated this week]
Maintain history/kpi-history.json to enable trend analysis:
{
"version": "1.0",
"weeks": [
{
"week_start": "2026-04-06",
"week_end": "2026-04-12",
"kpis": {
"weekly_revenue": 0,
"mrr": 0,
"arr": 0,
"new_leads": 0,
"qualified_opportunities": 0,
"pipeline_value": 0,
"deals_closed": 0,
"win_rate": 0,
"active_users": 0,
"new_signups": 0,
"churn_rate": 0,
"website_visitors": 0,
"email_open_rate": 0,
"tickets_opened": 0,
"tickets_resolved": 0,
"avg_resolution_time_hours": 0,
"csat_score": 0
},
"highlights": [],
"concerns": [],
"action_items": []
}
]
}
Users can define custom KPI groups beyond the default categories. Guide them through:
tools
Uses MCP Connectors to read Gmail inbound leads, score them by ICP fit, draft personalized responses, and log qualified leads to your CRM. Turns your inbox into an automated pipeline.
development
Uses 1M context window to ingest an entire codebase and output a file-by-file migration plan. Supports JS to TS, React class to hooks, framework migrations, and more. Generates migration-plan.md with file inventory, dependency graph, migration order, file-by-file changes, estimated effort, and risk assessment.
development
Extract and analyze data from invoices, receipts, bank statements, and financial documents. Categorize expenses, track recurring charges, and generate expense reports. Use when user provides financial PDFs or images.
tools
Identifies upsell and cross-sell opportunities within existing customer accounts. Analyzes product usage, feature gaps, team growth, industry benchmarks, and competitive pressure to surface revenue expansion plays scored by potential, effort, and likelihood. Generates an expansion-playbook.md with account-by-account opportunities, recommended pitch, timing, and approach.