Creative & Design🌐universal
client-weekly-report
premium-skills/agency-pack/client-weekly-report/SKILL.md
Use this skill when an agency operator wants the Monday weekly note produced for every client in the book in one pass, each in the client's own recorded voice and escalation thresholds, rather than one brand at a time. This is the premium batch extension of the free `programme-performance-report` skill's weekly-client-note output profile, not a replacement for it. Trigger on: "Give me this week's client notes for the whole book", "Run the Monday reports for every client", "Batch the weekly notes for all clients", "Send-ready weekly notes for the book".
Quick Start
Install this SKILL.md
npx skills add https://github.com/bobberrisford/affiliatemcp/tree/main/premium-skills/agency-pack/client-weekly-report---
name: client-weekly-report
description: |
Use this skill when an agency operator wants the Monday weekly note produced for every client in the book in one pass, each in the client's own recorded voice and escalation thresholds, rather than one brand at a time. This is the premium batch extension of the free `programme-performance-report` skill's weekly-client-note output profile, not a replacement for it.
Trigger on: "Give me this week's client notes for the whole book", "Run the Monday reports for every client", "Batch the weekly notes for all clients", "Send-ready weekly notes for the book".
---
# Premium scope note
The free `programme-performance-report` skill already produces the weekly
client note for **one named brand**: a short, pasteable verdict, a headline
table, and top risers/fallers. This premium skill does not change that
profile's content or its rules; it adds two things:
1. **Batching**: run the weekly-client-note profile for every registered
brand in the book in one pass, instead of the operator asking brand by
brand.
2. **Voice-matched, send-ready formatting**: apply each brand's recorded
strategy voice, audience, and escalation threshold (from
`affiliate_get_client_strategy`) to its own note, and format every note
as a ready-to-paste email draft with a consistent subject-line
convention, so a Monday morning produces N send-ready drafts rather than
N separate conversations.
It is not a headline-only rollup (that is the free `agency-portfolio-rollup`
skill, or this pack's `portfolio-rollup`); it produces the actual
per-client narrative text.
## Assumptions and requirements
- At least one brand is registered via `affiliate_resolve_brand`. If none
are, stop and point the user at `affiliate-networks-mcp setup`.
- Credentials for bound networks are configured; recommend
`affiliate-networks-mcp doctor <slug>` when credential state is uncertain.
- Client strategy files are optional per brand. A brand with no recorded
strategy still gets a note, in a neutral default voice, with no escalation
threshold applied.
- This produces email-ready drafts, never sends them. Sending is a separate
action outside any tool this skill uses.
## Step 1 — enumerate the book
Call `affiliate_resolve_brand` with no arguments. The response is an array of
`{ brand, network, networkBrandId }`. Group by `brand` to get the book's
distinct client list. If empty, tell the user no brands are registered and
stop.
## Step 2 — load each brand's plan
Call `affiliate_list_client_strategies` once. For each brand with
`hasStrategy` or `hasKpi`, call
`affiliate_get_client_strategy({ brand })` to load its `strategy` prose (for
voice, audience, and escalation threshold) and `kpi.targets` (for the
verdict). Brands with neither are noted as "no recorded voice; using the
default weekly-note format" and proceed without a custom voice.
## Step 3 — pull each brand's week
For each brand, run the free weekly-client-note logic exactly as
`programme-performance-report` specifies it: prefer
`affiliate_build_brand_snapshot({ brand })` for the standard `last7d` window,
falling back to per-network
`affiliate_<network>_get_programme_performance({ brand, from, to })` calls
for a custom window or per-publisher detail. For example:
- Impact advertiser: `affiliate_impact-advertiser_get_programme_performance({ brand, from, to })`
If a brand's binding fails, capture the verbatim error and still produce
notes for the remaining brands. Never let one brand's failure block the rest
of the batch.
## Step 4 — write one note per brand
For each brand, produce exactly the weekly-client-note shape the free skill
defines: a one-line plain-language verdict leading with direction of travel,
a small headline table per network, and the top three risers and top three
fallers by gross sale week-on-week. Apply that brand's recorded voice and
audience from Step 2 if present; otherwise use a neutral, matter-of-fact
default. Surface anything crossing a recorded escalation threshold at the
top of that brand's note, in bold or its own line, whatever the format.
Format each as a ready-to-paste email draft:
1. **Subject** — `Weekly update — <Brand> — week of <Monday date>`.
2. **Body** — the note content from above.
Never invent contact details or a recipient; leave `[client contact]` as a
placeholder unless the user supplies one.
## Step 5 — present the batch
Above the drafts, give a short ledger: brands processed, brands with a
recorded voice applied, brands using the default format, brands that
crossed their escalation threshold this week, and brands that failed
(verbatim error). Then present the drafts, one per brand, in book order or
sorted by whichever brand needs the most attention first (a breached
threshold or the largest negative delta).
## Large accounts
Follow the free skill's large-account guidance: prefer
`affiliate_build_brand_snapshot` and `affiliate_query_brand_data` over raw
row pulls, and respect any `truncated: true` or `result_too_large` result by
following its hint rather than treating a partial pull as complete.
## Constraints
- Never invent figures, a brand's voice, or an escalation threshold. Read
each from `affiliate_get_client_strategy`'s output only.
- Currency: respect each network's currency per brand; never blend currencies
or invent an FX rate across the batch.
- This is a batch of drafts. Sending any of them is the user's action; this
skill never sends.
- If a brand's KPI file has `parseErrors`, report each verbatim in that
brand's note and exclude the malformed line from its verdict, exactly as
the free skill requires.
- Pair with `client-onboarding` to record a voice/threshold for a brand
currently defaulting.
Repository
7stars
1forks
Details
Related Skills
More creative & design skills you might like
expo-router
Creative & DesignNavigation and routing for Expo Router. Covers file-based routes, groups and dynamic routes, folder organization, Link with previews and context menus, native Stack, page titles, modals and form sheets, NativeTabs, headers and toolbars, and header search bars.
🌐universal
2.8k
178
View
expo-native-ui
Creative & DesignBuild beautiful, native-feeling Expo screens. Covers Apple HIG styling, semantic colors, native controls, SF Symbols, media, visual effects, gradients, storage, and responsive layout. For routing and navigation, use the expo-router skill; for motion and animation, use the expo-animation skill.
🌐universal
2.8k
178
View
frontend-slides
Creative & DesignCreate stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.
🤖claude🌐universal
30.6k
2.4k
View
frontend-slides
Creative & DesignCreate stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.
🤖claude🌐universal
30.6k
2.4k
View