agentleFS
OpenLaborOpenLabor/openlabor/skills/finance-dashboard/SKILL.md

Finance Dashboard

Skill5 starsChanged 3 months agoMITView on GitHub

Revenue reports, MRR/ARR tracking, churn analysis, invoice aging, and financial health metrics — powered by Stripe data

  • Reads credentials

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 6 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    All Stripe amounts are in cents — always divide by 100 before displaying (e.g., 12400 → $124.00)

    line 197
  2. Distinctive:

    Always state the time period covered at the top of every report (e.g., "March 2026 | Data as of April 2, 2026")

    line 198
  3. Distinctive:

    Never expose raw Stripe IDs (cus_XXX, sub_XXX, in_XXX) — use customer names or plan names

    line 199
  4. Distinctive:

    If CAC is not available, skip LTV:CAC and note: "Provide CAC to calculate LTV:CAC ratio"

    line 203
  5. Distinctive:

    When comparing periods, use calendar months unless the user specifies otherwise

    line 204
  6. Distinctive:

    If Stripe is not connected, prompt: "Connect Stripe in the Apps tab to generate financial reports"

    line 206

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- openlabor-connector: stripe, api_key={{INTERNAL_API_KEY}}, employee={{EMPLOYEE_ID}}, base={{API_BASE_URL}} -->

Finance Dashboard

Penny (accountant) can pull Stripe data and generate executive-ready financial reports. All data comes from the Stripe connector — no new integrations needed.

How to Execute Stripe Actions

use stripe <TOOL_NAME> '<json_args>'

Data Sources

DataToolArgs
All active subscriptionsSTRIPE_LIST_SUBSCRIPTIONS{}
Customer listSTRIPE_LIST_CUSTOMERS{}
Invoice historySTRIPE_LIST_INVOICES{}
Payment historySTRIPE_LIST_PAYMENT_INTENTS{}
Current balanceSTRIPE_RETRIEVE_BALANCE{}
Customer detailSTRIPE_RETRIEVE_CUSTOMER{"customer_id":"cus_XXX"}
Subscription detailSTRIPE_RETRIEVE_SUBSCRIPTION{"subscription_id":"sub_XXX"}
Refund dataSTRIPE_LIST_REFUNDS{}

Report Types

1. Monthly Revenue Summary

Pull all payments for the period using STRIPE_LIST_PAYMENT_INTENTS. Calculate:

  • Total Revenue — sum of all successful payments (status: succeeded)
  • MRR (Monthly Recurring Revenue) — sum of active subscription amounts ÷ billing interval in months
  • ARR — MRR × 12
  • New MRR — from subscriptions created this month (created timestamp in current month)
  • Churned MRR — from subscriptions cancelled this month (canceled_at in current month)
  • Net MRR Growth — New MRR − Churned MRR
  • Revenue by Plan — breakdown grouped by plan.nickname or price.id

Present with month-over-month comparison and % change for each metric.

Output table:

MetricCurrent MonthPrevious MonthChange (%)Status
Total Revenue$X,XXX$X,XXX+X%🟢/🟡/🔴
MRR$X,XXX$X,XXX+X%🟢/🟡/🔴
ARR$XX,XXX$XX,XXX+X%🟢/🟡/🔴
New MRR$XXX$XXX——
Churned MRR$XXX$XXX——
Net MRR Growth$XXX$XXX—🟢/🟡/🔴

2. Customer Health Report

Pull customers via STRIPE_LIST_CUSTOMERS and subscriptions via STRIPE_LIST_SUBSCRIPTIONS. Calculate:

  • Total Customers — count of active customers with at least one active subscription
  • New Customers — customers with created in current month
  • Churned Customers — subscriptions with canceled_at in current month, deduplicated by customer
  • Churn Rate — churned customers ÷ total customers at start of month × 100
  • Customer Lifetime Value (LTV) — average monthly revenue per customer ÷ monthly churn rate
  • LTV:CAC Ratio — LTV ÷ CAC (ask user for CAC if not provided)
  • Top 10 Customers by Revenue — list with name, plan, MRR contribution, and subscription start date

Output table:

MetricValuePrevious PeriodChangeStatus
Total CustomersXX+X🟢/🟡/🔴
New CustomersXX+X—
Churned CustomersXX+X🟢/🟡/🔴
Churn RateX%X%+X%🟢/🟡/🔴
LTV$X,XXX$X,XXX——

Top 10 Customers:

Customer NamePlanMonthly ValueSince
Acme CorpPro$X,XXXJan 2025
............

3. Invoice Aging Report

Pull all open invoices via STRIPE_LIST_INVOICES (filter status: open). Categorize by days since due_date:

  • Current — not yet past due date
  • 1–30 days overdue — due date 1–30 days ago
  • 31–60 days overdue — due date 31–60 days ago
  • 60+ days overdue — due date over 60 days ago
  • Total Outstanding — sum of all unpaid invoice amounts

Flag all invoices over 30 days for immediate follow-up. List specific customer names and amounts (never raw IDs).

Output table:

Aging BucketCountTotal AmountStatus
CurrentX$X,XXX🟢
1–30 daysX$X,XXX🟡
31–60 daysX$X,XXX🔴
60+ daysX$X,XXX🔴
Total OutstandingX$X,XXX—

Overdue Invoices (30+ days):

Customer NameInvoice AmountDays OverdueAction
Acme Corp$X,XXX45 daysSend follow-up
............

4. Cash Flow Snapshot

Pull balance via STRIPE_RETRIEVE_BALANCE, payments via STRIPE_LIST_PAYMENT_INTENTS, and refunds via STRIPE_LIST_REFUNDS.

  • Available Balance — available[0].amount from balance response (convert from cents)
  • Pending Balance — pending[0].amount — funds in transit, not yet settled
  • Recent Refunds — sum of all refunds with created in current month
  • Net Revenue — total successful payments minus total refunds for the month
  • Projected Next Month — sum of all active subscription amounts due next billing cycle

Output table:

MetricAmountNotes
Available Balance$X,XXXReady to pay out
Pending Balance$X,XXXIn transit
Gross Revenue (MTD)$X,XXXSuccessful payments
Refunds (MTD)$X,XXXTotal refunded
Net Revenue (MTD)$X,XXXGross minus refunds
Projected Next Month$X,XXXBased on active subs

5. Plan & Pricing Analysis

Pull subscriptions and group by plan/price. Calculate per tier:

  • Revenue per tier — sum of subscription amounts per plan.nickname or price.id
  • Customer count per tier — subscriptions grouped by plan
  • ARPU (Average Revenue Per User) — tier revenue ÷ tier customer count
  • Churn by tier — cancellations per tier as % of that tier's total
  • Upgrade vs. downgrade trends — subscriptions where plan changed (use metadata or subscription item changes)

Output table:

PlanCustomersMRRARPUChurn RateStatus
StarterX$X,XXX$XXX%🟢/🟡/🔴
ProX$X,XXX$XXX%🟢/🟡/🔴
EnterpriseX$X,XXX$XXXX%🟢/🟡/🔴
TotalX$X,XXX$XXX%—

Status Thresholds

Metric🟢 On Track🟡 Watch🔴 Action Needed
Revenue growth> 0%0%< 0%
Monthly churn rate< 3%3–5%> 5%
Invoice agingAll current1–30 days overdue31+ days overdue
LTV:CAC ratio> 53–5< 3
Net MRR growthPositiveFlatNegative

For every 🔴 metric, provide a specific recommended action (e.g., "Send payment reminder to Acme Corp — $2,400 overdue 45 days").


When to Activate

Triggers: "revenue report", "MRR", "ARR", "churn report", "invoice aging", "financial health", "cash flow", "how much did we make", "revenue breakdown", "customer health", "plan analysis", "financial summary", "billing report"


Guidelines

  1. All Stripe amounts are in cents — always divide by 100 before displaying (e.g., 12400 → $124.00)
  2. Always state the time period covered at the top of every report (e.g., "March 2026 | Data as of April 2, 2026")
  3. Never expose raw Stripe IDs (cus_XXX, sub_XXX, in_XXX) — use customer names or plan names
  4. Flag anomalies explicitly: sudden churn spike, large single refund, payment failure cluster
  5. Present numbers with context: "MRR is $12,400 — up 8% from last month" not just "$12,400"
  6. For 🔴 metrics, always include a concrete recommended next action
  7. If CAC is not available, skip LTV:CAC and note: "Provide CAC to calculate LTV:CAC ratio"
  8. When comparing periods, use calendar months unless the user specifies otherwise
  9. Confirm with user before taking any write actions (creating invoices, issuing refunds)
  10. If Stripe is not connected, prompt: "Connect Stripe in the Apps tab to generate financial reports"

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.