All skills

Every week · Run

Weekly FP&A Digest

A routine that drafts your recurring update to Slack overnight: what moved, versus last week and last year. You review, tweak, post.

Download .skill · 14 KB

Free, no email

Quick answer

01What it does

Sets up a routine once, then drafts the same update every period, comparing current numbers with trailing history and the same period last year.

02What you give it

A live connection to your data through MCP, the Slack channel it posts to, a reviewer, and a schedule. It runs in Cowork or Claude Code.

03What you get back

A draft Slack update in a fixed format, sent to your reviewer first. Nothing posts to the live channel unless you turn that on.

Say this to run it

  • “Set up a weekly digest”
  • “Post my numbers to Slack every Monday”
  • “Automate my weekly update”
  • “Recurring finance report”
  • “Schedule a digest”
  • “Daily FP&A update”
  • “Set this up as a routine”

Add it to Claude

  1. 01

    Download the file

    weekly-fpa-digest.skill, 14 KB

  2. 02

    Add it in Claude

    Customize › Skills › Add, then upload the file.

  3. 03

    Connect your data and ask

    “Set up a weekly digest.”

What you get back

This is the format every run returns, from the skill's own template.

Output · references/output-template.md

Weekly Digest — Output Format

Always draft the update in exactly this structure, every period. The consistency is the point — a scannable, identical shape each week is what makes a standing update actually get read instead of skimmed past.


📊 {Metric set name} — Week of {date}

DRAFT — review before posting

{One line, plain language, on the overall direction: "Steady week — revenue and usage both up, deliverability flat." Never lead with a number; lead with the read.}


The numbers

MetricThis period{vs. trailing comparison}{vs. prior-year comparison}
{metric 1}{value}{+/- % , direction}{+/- % , direction}
{metric 2}{value}{+/- % , direction}{+/- % , direction}
{metric 3}{value}{+/- % , direction}{+/- % , direction}

Set the comparison headers to match the configured cadence — e.g., "vs. trailing 7 days" and "vs. same week last year" for a weekly digest, "vs. trailing 30 days" and "vs. same month last year" for a monthly one.

Every row needs both comparisons if both were configured. A number with no comparison is rarely useful in this format — don't include one without at least one, with one exception: a point-in-time metric like cash balance may run without one, marked explicitly as "no comparison configured" in its comparison cells rather than left blank.


Worth flagging

{0-2 bullets, only if something crossed a threshold worth a human's attention — a metric moved unusually, a connection had a gap, a number looks inconsistent with the rest. If nothing is worth flagging, say "Nothing unusual this period" rather than omitting the section — an empty section with a name is a real answer; a missing section reads as a mistake.}


Drafted automatically at {time}. Sources: {which connected systems fed this draft}. Review and post when ready.

For a manual run from pasted numbers (no live connection), use this footer instead:

Drafted manually at {time}. Sources: user-provided figures — no live connection. Review and post when ready.

When the reviewer actually posts the update, they strip the "DRAFT — review before posting" header and the "Review and post when ready" footer — those are review scaffolding, not part of the posted message.

Inside the skill

Four plain-text files you can read before you install.

references/setup.md
# Setting Up the Routine

This skill is configured once and then runs unattended, which makes the
setup pass more important than for an on-demand skill — mistakes here repeat
every period until someone notices.

## 1. Pick metrics that are actually worth a recurring update

Not every number deserves a standing report. Good candidates share three
traits:

- **Someone currently checks or compiles this by hand, on a repeating
  cadence.** If nobody's doing this manually today, a routine isn't solving
  a real problem yet.
- **The comparison matters more than the raw number.** "Revenue was $412K"
  is trivia. "Revenue was $412K, up 6% vs. trailing 7 days and 22% vs. the
  same week last year" is a signal. Always pair the number with at least one
  comparison period.
- **It's stable enough to trust unattended.** A metric that's still being
  redefined, or that depends on a data source that's mid-migration, isn't
  ready for a routine yet — get it stable on demand first, automate it
  second.

Confirm the exact metric list and comparison periods with the user before
building anything. Do not infer a metric list from a generic template.

## 2. Wire the connection, don't paper over it with a paste

A routine that "worked once" because someone pasted a file is not a routine
— it's a one-time skill run wearing a schedule. Before configuring anything:

- Confirm the MCP connection(s) needed actually reach the data in question.
- If a metric requires a connection that isn't set up yet, say so plainly
  and treat it as a blocker, not a workaround.
- Note where each metric comes from (which connected system) so that when a
  number looks wrong later, there's an obvious place to check first.

## 3. Set the schedule and destination explicitly

- Cadence: most FP&A digests are weekly (a Monday morning read) or daily
  (for usage-based or high-velocity businesses). Confirm which, and the
  exact time — the value is being done *before* the person sits down, so the
  schedule should run well ahead of when they'll actually read it.
- Destination: the specific channel or surface the reviewed update gets
  posted to. Confirm this is a channel people already check, not a new one
  nobody will open. The draft itself is delivered to the reviewer — a DM or
  a private review channel — never the live channel (see §4 below).
- Check the delivery connection, not just the data connections: verify the
  Slack (or other destination) connection is actually set up and the
  reviewer who receives the draft is reachable through it. A routine that
  pulls the numbers fine but can't deliver the draft fails just as quietly
  as a broken data source.

## 4. Default to draft-only, and say why

**The routine should draft the update and stop. It should not post to a
live, shared channel on its own by default.** This isn't caution for its
own sake — it's the same principle that runs through every skill in this
library: the model drafts, a person decides. A wrong number that only a
draft-reviewer sees is a non-event. A wrong number that auto-posts to a
company-wide channel is a trust problem that outlasts the fix.

Recommend a trial period — a few weeks of draft-and-review — before the user
enables auto-post, if they want that at all. Many teams are better served
keeping the review step permanently; that's a legitimate choice, not a
failure to "finish" the automation.

## 5. Handle a broken connection loudly, not silently

If the routine runs and a connection is down or a number looks anomalous
(e.g., zero, null, or wildly outside the trailing range), it should say so
explicitly in the draft rather than posting a confident-looking update built
on bad data. A visible "couldn't reach X this week" is far better than a
wrong number nobody questions because it arrived looking normal.

## 6. Configuring the routine

Once the metrics, connections, schedule, and destination are confirmed,
wire the routine itself:

- **Schedule:** create the scheduled run wherever your surface supports one
  — a routine in Cowork, or a scheduled task in Claude Code — with an
  explicit cadence and time, e.g., every Monday at 7am. State the schedule
  plainly; don't leave the cadence implied.
- **Connection:** point the routine at the MCP connection(s) confirmed in
  §2, by name. The scheduled run needs access to them — a connection that
  only works in an interactive session isn't wired yet.
- **Delivery:** the draft goes to the reviewer — a DM or a private review
  channel, per §4 — never the live channel. Name who receives it.
- **First run in draft mode:** trigger the routine once right after
  configuring it, and have the reviewer check that first draft end to end
  before trusting the schedule. The first unattended run should never be
  the first time anyone sees the output.

Related skills