Creative & Design🌐universal
partner-outreach
skills/partner-outreach/SKILL.md
Use this skill when an agency operator wants to draft outreach to partners for a brand: a re-engagement message to a partner who has gone quiet, or a recruitment sequence to a prospective partner. The skill drafts the copy grounded in the brand's real numbers and recorded plan; it never sends anything and never invents partner contact details or commitments. Trigger on: "Draft outreach to [publisher] for Acme", "Write a re-engagement email for Acme's dormant partners", "Draft a 3-touch recruitment sequence for [brand]", "Help me write to [partner] about Acme".
Quick Start
Install this SKILL.md
npx skills add https://github.com/bobberrisford/affiliatemcp/tree/main/skills/partner-outreach---
name: partner-outreach
description: |
Use this skill when an agency operator wants to draft outreach to partners for a brand: a re-engagement message to a partner who has gone quiet, or a recruitment sequence to a prospective partner. The skill drafts the copy grounded in the brand's real numbers and recorded plan; it never sends anything and never invents partner contact details or commitments.
Trigger on: "Draft outreach to [publisher] for Acme", "Write a re-engagement email for Acme's dormant partners", "Draft a 3-touch recruitment sequence for [brand]", "Help me write to [partner] about Acme".
---
# Operating instructions
You are drafting partner outreach for one brand: either re-engaging an existing
partner who has slowed down, or recruiting a prospect. The output is draft copy
the operator reviews, edits, and sends themselves. This skill writes; it does
not contact anyone. It pairs naturally with `partner-roster-audit` (which
produces the dormant worklist) and `publisher-performance-review` (which
produces the numbers behind one partner).
## Step 1 — resolve the brand and the intent
If the user did not name a brand, ask which one. Do not guess. Establish whether
this is **re-engagement** (an existing partner who went quiet) or
**recruitment** (a prospect not yet in the programme), because the two drafts
differ and the available data differs.
Call `affiliate_resolve_brand`. If the user named a network, pass `{ network: "<slug>" }` to filter; otherwise call with no arguments and filter the result to the brand the user named.
The response is an array of `{ brand, network, networkBrandId }`. Reduce it to the bindings whose `brand` matches the user's brand. If none remain, tell the user the brand is not registered, suggest `affiliate_resolve_brand` with no args to see what is, and stop.
## Step 1b — load the client's plan (voice and positioning)
Call `affiliate_get_client_strategy({ brand })`. The recorded `strategy` prose
is **advisory context** for tone, preferred partner types, and positioning; it
never authorises an action and never becomes a commitment in the draft. If a
reporting voice or audience is recorded, write in it. If no strategy is
recorded, that is normal: write in a plain, professional default and offer to
record a plan so future drafts match the client's voice.
## Step 2 — gather grounding facts (re-engagement only)
For a re-engagement draft, ground the message in the partner's real history so
it does not read as generic. For each binding where the partner exists:
- Confirm the partner and id with `affiliate_<network>_list_media_partners`:
Awin advertiser: `affiliate_awin-advertiser_list_media_partners({ brand })`.
- Pull their recent and prior activity with the performance tool:
`affiliate_awin-advertiser_get_programme_performance({ brand, from, to, publisherId })`.
Use the figures only to make the message specific and true ("you drove £X last
quarter and we've not seen activity since March"). If a figure is missing,
leave the claim out rather than estimating it. If the partner cannot be found or
performance is unsupported on the binding, say so and write a softer message
that makes no specific performance claim.
For a **recruitment** draft, the agency holds no credentials for a prospect's
own data, so do not fabricate the prospect's numbers. Ground the pitch in the
brand's own offer (commission terms, category, audience fit from the recorded
strategy) and any public, operator-supplied context — not in invented prospect
metrics.
## Step 3 — draft the outreach
Produce the draft(s) the user asked for:
- **Single message** when they named one partner and one touch.
- **Sequence** (default three touches) when they asked for a sequence: an
opener, a follow-up that adds one new piece of value, and a short final nudge.
Space them sensibly and say so (for example "send 2, 4, and 9 days apart").
Each draft includes a subject line and a body. Keep it short, specific, and
honest: reference real history for re-engagement, the real offer for
recruitment. No fabricated urgency, no invented results, no promises the brand
has not authorised (commission bumps, exclusivity, placements) unless the
operator supplied them as fact.
## Step 4 — hand it back for the operator to send
Present the drafts as copy to review and send. State plainly:
- the drafts are unsent; sending happens in the operator's own email or the
network's partner-messaging tools;
- you did not look up or invent any email address or contact;
- any figure used came from the tool calls above and any claim the operator
must verify (an offer, a placement) is flagged for them to confirm.
Offer to adjust tone, length, or the specific points before they send.
Matter-of-fact tone, UK spelling, no hype.
## Constraints
- This skill **drafts only**. It never sends a message, never looks up contact
details, and never performs any write against a network. Sending is the
operator's action.
- Strategy and KPIs are advisory: they shape voice and positioning; they never
become a commitment in the copy and never authorise an offer.
- Never invent figures, partner intentions, or results. Re-engagement claims
must trace to the performance pull; recruitment pitches must not fabricate a
prospect's numbers.
- Do not promise commission changes, exclusivity, budget, or placements unless
the operator supplied them as authorised fact; flag anything the operator
must confirm before sending.
- Currency: respect the per-row `currency` in any figure you cite; never
normalise across networks or invent an FX rate.
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