Marketing Prompt Hub
All posts
Published · 24 August 2026 · 8 min read · Skill build

Build a Performance Readout Skill that writes the monthly report

The monthly report is not a writing problem. It is a filing problem, and a Skill fixes filing.

What this post covers
  1. What a Skill actually is, minus the marketing
  2. The folder layout
  3. The SKILL.md
  4. The two reference files that stop the drift
  5. Running it, and the co-work move that makes it good
  6. Where it breaks
  7. Steal ours instead, it is free
  8. Where the Hub fits

Every marketer I know loses the same two days a month. You export from GA4, you export from the ESP, you pull the ads numbers, you paste chunks into a chat, you ask for a summary, and you get back something that reads fine and is subtly wrong. A number got rounded. A date range got mismatched. Claude filled a gap with a plausible figure because you gave it a half-populated table and asked it to be helpful. Then you spend the afternoon checking the thing that was supposed to save you the afternoon.

The usual advice is "write a better prompt." That is wrong, or at least it stops working by month three. A prompt is a one-off instruction with no memory of your metric definitions, no fixed report structure, and no rule about what to do when data is missing. A Skill is a folder on disk that carries all three, every time, without you re-explaining. The upgrade is not better wording. It is moving the report from something you ask for to something you file inputs into.

What a Skill actually is, minus the marketing

A Claude Skill is a directory with a SKILL.md at the root. The frontmatter has a name and a description. The description is the part that matters most, because it is what Claude reads to decide whether to load the Skill at all. Everything else in the folder is context Claude pulls in when it needs it.

That is genuinely the whole thing. No build step, no platform, no subscription to a workflow tool.

Saved promptSkillAgent
Carries your metric definitionsNoYesYes
Same structure every monthOnly if you paste itYesYes
Handles missing data consistentlyNoYes, if you write the ruleYes
Runs without you presentNoNoYes
Setup costTwo minutesAn hour, onceA day plus maintenance

The Skill is the right altitude for a monthly report. Reports are monthly, you want a human eye on them, and the value is consistency rather than autonomy. Do not reach for an agent here. You would be building a scheduler for a thing that happens twelve times a year.

The folder layout

This is the whole artifact. Build it once.

performance-readout/
├── SKILL.md
├── references/
│   ├── report-structure.md      # the fixed section order
│   └── metric-definitions.md    # what "session" means at YOUR company
└── data/
    ├── context.md               # goals, targets, known events
    └── exports/                 # you drop this month's CSVs here

Drop it in ~/.claude/skills/ for Claude Code, or zip it and upload it as a Skill in Claude. Either way the folder is yours, it lives in version control if you want, and it does not belong to a vendor.

data/exports/ is the whole workflow. Once a month you put files in a folder. That is the ritual you are replacing "two days of pasting" with.

The SKILL.md

Copy this. Change the bits in square brackets.

---
name: performance-readout
description: Writes the monthly marketing performance readout from exported
  channel data. Use when the user asks for a monthly report, a performance
  readout, a channel summary, or drops analytics, ESP, ads, or social exports
  into data/exports/. Never estimates a metric that is not in the source files.
---

# Performance Readout

You write the monthly marketing performance readout for [COMPANY].
You are a marketing analyst, not a copywriter. Plain sentences, no adjectives
doing work that numbers should do.

## Before you write anything

1. List every file in `data/exports/`. State the filename, the source, and the
   exact date range each file covers.
2. If two files cover different date ranges, STOP and say so. Do not reconcile
   them yourself.
3. Read `references/metric-definitions.md`. Use those definitions only. If a
   column in an export does not map cleanly to a defined metric, say which
   column and ask.
4. Read `data/context.md` for this period's targets and known events.

## The refusal rule

If a number is not present in the source files, write exactly:

  [MISSING: REAL NUMBER ,  <what you need and which export it comes from>]

Do not estimate. Do not interpolate. Do not carry a prior month forward.
Do not compute a derived metric if any input to it is missing. A readout with
four honest gaps is useful. A readout with four invented numbers is a liability.

## The causality rule

You may state what changed. You may not state why it changed unless
`data/context.md` records a cause. Write "organic sessions fell 18%" not
"organic sessions fell 18% due to the algorithm update." If you have a
hypothesis, put it under "Questions for the team" phrased as a question.

## Structure

Follow `references/report-structure.md` exactly. Same section order every
month, so month-over-month diffs are readable.

## Tone

Written for [CMO / founder / the client] who has eight minutes. Lead with
what moved. Bury the flat channels. No preamble, no "in this report we will."

The two reference files that stop the drift

metric-definitions.md is the one people skip, and it is the one that matters. Claude does not know that your team counts a "lead" at form fill and not at MQL, or that you exclude internal traffic by IP and the export already has it stripped. Write it down once.

# Metric definitions

- Session: GA4 default. Do not use "engaged session" unless named explicitly.
- Lead: form fill on /demo or /contact. Newsletter signups are NOT leads.
- Open rate: [ESP] reported figure. Flag it as unreliable post-MPP but report
  the raw number, do not adjust it.
- Attribution window: [30-day click, last non-direct]. Any channel comparison
  inherits this window. Say so in a footnote.
- "Flat": within 5% month over month. Below that threshold, do not narrate it.

report-structure.md is shorter. A fixed section order, and a note on what belongs in each. Headline movement, channel by channel, what we shipped, what we are watching, questions for the team. The point of freezing it is that you can lay two months side by side and read the difference in ten seconds.

Running it, and the co-work move that makes it good

The monthly invocation is boring, which is correct:

Write the [MONTH] performance readout. Exports are in data/exports/.
Before drafting, give me the file inventory and date ranges, and stop
if anything is missing.

Here is where most people leave value on the table. Do not accept the first draft and edit it silently. The gaps Claude flags are the highest-signal output of the whole run. Work the list:

Take every [MISSING: REAL NUMBER] you flagged. For each one, tell me
which system it lives in and the exact export or view I need to pull.
Rank them by how much the readout suffers without them.

Ten minutes of that, and by month three your exports folder is right the first time and the readout comes back clean. The Skill is not really automating the report. It is auditing your reporting inputs, monthly, for free.

Where it breaks

I would rather you hit these knowingly than discover them in front of a client.

It will happily merge mismatched date ranges if you let it. The STOP instruction in step 2 is load-bearing. Delete it and you get a beautiful readout comparing 28 days of email against 31 days of paid. Test that rule deliberately: feed it two exports with different ranges and confirm it stops.

It cannot tell you why. The causality rule is there because the failure is so tempting. A model that has read the entire internet will generate a confident reason for any movement, and the reason will sound like something a senior strategist would say. It is a guess with good grammar. Keep causes in context.md, written by a human who was there.

Long CSVs get skimmed. If an export runs to thousands of rows, ask for aggregation before narrative, or pre-aggregate in the source tool. Do not assume every row was read because the summary sounds comprehensive.

Definitions rot. When your team changes what counts as a lead, metric-definitions.md is now lying to you with authority. Put a review of that file in the same recurring calendar slot as the report.

Steal ours instead, it is free

We ship a Performance Readout Skill as one of the four free Claude Skills at /skills/. No email gate, no signup, no drip. Download it, open the SKILL.md, and either use it as is or gut it for parts.

I would still build your own first, honestly. The hour you spend writing metric-definitions.md is the hour where you find out that two people on your team define "lead" differently, and that discovery is worth more than the Skill. But if you just need the monthly report to stop eating two days, take ours and go. It is there for that.

The four free prompts at /free/ cover the adjacent job, turning a finished readout into something a stakeholder actually reads.

Where the Hub fits

If the free Performance Readout Skill covers your situation, use the free Skill and do not buy anything. One channel, one report, one stakeholder, you are done. That is not a downsell, it is the honest answer for most solo marketers.

The paid Full Suite ($349/yr) is for when the report is one node in a system. It carries the Reporting Kit, dashboard specs and the report prompts that feed off the same context vault your other Skills read from, so your metric definitions live in one place instead of five folders that quietly disagree. That matters at three to twenty-five people, where the failure mode is not "the report takes too long" but "our numbers do not match each other." If that is not your problem yet, it is not worth $349 to you yet. Come back when it is.

What we exclude: no done-for-you reporting, no dashboards we build for you, no calls. It is a library you run yourself.

Get the 4 free Claude Skills.

Voice Extractor, Competitive Teardown, SERP-Informed Brief, Performance Readout. Installable Skills, ready to drag into Claude Desktop or Claude Code. No email gate.

Open the Skills page