SKILL DETAIL
partnerships-kickoff
mbfinotti/partnerships-skills/partnerships-kickoff
Before starting any partnerships work - and before routing to any other skill in the mbfinotti/partnerships-skills collection - run this router first. It matches the task (channel, alliance, co-sell, marketplace, affiliate, influencer, or referral) to exactly one sibling skill, says plainly when none fits, and bootstraps or resumes the project's shared partnerships-context.md artifact so the next session starts warm instead of cold. Use whenever the user opens a partnerships project, asks which partnerships skill they need, resumes partner work after a gap, runs a periodic partner, affiliate or influencer check-in, or describes a partner, creator or commission problem without naming a skill - even if they never say kickoff, routing or partnerships, and even when they name a downstream task directly. Routing and shared context only - it never does a sibling skill's work itself, and always emits the full owner/repo@skill target it routes to.
Installation
npx skills add https://github.com/mbfinotti/partnerships-skills --skill partnerships-kickoff
技能文件
SKILL.md
最近同步 · 2026年10月23日
evals/evals.json›
{
"skill_name": "partnerships-kickoff",
"evals": [
{
"id": 1,
"prompt": "Picking our partner work back up after about six weeks off. There's a partnerships-context.md sitting in the repo, here it is:\n\n# Partnerships context\n- Updated: 2026-04-30 (session 6)\n- Partner motion(s): affiliate program only; no reseller, co-sell, marketplace or influencer motion\n- B2B / B2C: B2B SaaS, self-serve $49/mo entry tier; affiliates pitch to agency owners\n- Program maturity: live and small (11 months)\n- Partners / creators: 91 approved affiliates, 34 active; top 3 drive 68% of program revenue\n- Commission / margin model: 20% recurring rev share, 12-month cap, 45-day validation window\n- Attribution / source of truth: last-click tracking links, 60-day cookie; billing system authoritative for payouts\n- Legal / compliance posture: terms v3 signed by all actives; FTC in scope; no outside counsel on retainer\n- In-flight work: nothing open\n- Decided: no influencer motion this year\n- Open: whether to raise the rate for the top 3\n- Constraints: payouts run on the 15th monthly and finance will not release them without my written sign-off; no committed partner contracts; team is me plus a half-time ops person\n- Horizon / effort ceiling: compounding, a few hours weekly, no headcount\n- Stakeholders: me (partnerships) -> decides; CFO -> consulted\n\nThe run on the 15th is Thursday and the CFO wants my sign-off before it goes out. What am I running today?",
"expected_output": "A warm-start routing result: a 5-line state summary from the artifact, a single route to affiliate-payout-audit emitted as a full owner/repo@skill identifier, a ranked short-list with the non-affiliate half deleted and named as deleted, routines led by the pre-disbursement payout review with the renewal check deleted, and a patched artifact with a new session-log line.",
"files": [],
"expectations": [
"Treats the session as a warm start because partnerships-context.md exists, and never asks the user whether this is a cold or warm start.",
"Asks no interview question other than the session-goal question.",
"Does not re-ask B2B versus B2C, program maturity, partner counts, or hard constraints, taking each from the artifact instead.",
"Does not re-ask the landing date, the one-off-versus-compounding choice, or the effort ceiling, taking 'compounding, a few hours weekly, no headcount' from the artifact.",
"Opens with a state summary of exactly 5 lines drawn from the artifact.",
"Routes the immediate task to exactly one skill: affiliate-payout-audit.",
"Emits that route as the full identifier mbfinotti/partnerships-skills@affiliate-payout-audit rather than a bare skill name.",
"Does not perform the payout audit itself: no recomputed commission lines, no per-affiliate payout figures, no severity report.",
"Produces a short-list of between 5 and 8 skills.",
"States the short-list ordering explicitly as value returned per unit of effort, highest ratio first, rather than leaving it implied by row order.",
"Gives each short-list entry both the bottleneck it attacks and what the session costs.",
"Deletes the channel, alliance, co-sell, marketplace and influencer skills from the short-list and names them as deleted, rather than ranking them last, because the artifact declares affiliate as the only motion.",
"Ranks the pre-disbursement payout-run review as the first proposed routine, because the artifact records a finance sign-off gate before payouts release.",
"Deletes the contract-renewal-check routine outright and names it as deleted, because the artifact records no committed partner contracts.",
"Appends exactly one session-log line to partnerships-context.md and patches only changed fields instead of rewriting the file."
]
},
{
"id": 2,
"prompt": "We're a DTC sleep-supplement brand, roughly $4M a year. A fitness creator with 38k Instagram followers and about 6% engagement said yes to our pitch, and now her manager is asking us to name a number first. I genuinely don't know what one in-feed post plus three stories should cost for someone that size. Give me the range, then walk me through how to negotiate it.",
"expected_output": "A routing result that refuses to route the rate-benchmarking half anywhere, names it as an unowned coverage gap the user must source externally, routes only the negotiation half to influencer-negotiation-playbook with the full identifier, and states that skill needs the user's own rate intel first.",
"files": [],
"expectations": [
"States plainly that no skill in the collection benchmarks creator rates.",
"Does not route the rate-benchmarking half of the request to any sibling skill.",
"Names creator rate benchmarking in a dedicated gap section of the output.",
"Does not invent, quote or estimate a dollar range for a 38k-follower Instagram creator.",
"Routes the negotiation half to mbfinotti/partnerships-skills@influencer-negotiation-playbook using the full identifier.",
"States that influencer-negotiation-playbook requires the user to bring their own rate benchmarks and is not useful until that number is sourced externally.",
"Does not route to influencer-outreach, since the creator has already replied positively.",
"Does not route to influencer-campaign-brief, since no deal is signed yet.",
"Identifies the rate-benchmarking boundary as one the collection itself leaves unowned rather than presenting a confident single owner.",
"Does not itself conduct the negotiation or draft term-by-term opening positions.",
"Creates or updates partnerships-context.md, including a session-log line, before the session ends."
]
},
{
"id": 3,
"prompt": "Quick one. Our biggest reseller registered a deal on Tuesday and the lead landed in our CRM with no owner on it. It sat there nine days before anyone noticed and by then the customer had gone quiet. Two other partner-registered deals this month had the same thing happen: nobody assigned, the stage never moves, half the fields blank. Which of your partnership skills do I run to fix this?",
"expected_output": "A refusal to stretch a partnerships skill onto CRM and pipeline work, plus named sibling-repo recommendations (lead-routing, sales-pipeline-hygiene) framed as an optional install, not a dependency.",
"files": [],
"expectations": [
"Declines to route the lead-routing and pipeline-hygiene problem to any skill inside the partnerships collection.",
"Recommends mbfinotti/revops-skills by name.",
"Names mbfinotti/revops-skills@lead-routing specifically for the unassigned-lead problem.",
"Names mbfinotti/revops-skills@sales-pipeline-hygiene specifically for the stale-stage and blank-field problem.",
"Frames the sibling repo as a recommendation the user may install, never as a dependency this collection requires.",
"Does not route to co-selling-strategy on the strength of the phrase 'registered a deal'.",
"Does not route to partner-channel-conflict, since no two routes to market are claiming the same account.",
"Does not classify the request as a coverage gap in the collection, since a sibling repo covers it.",
"Does not itself design a lead-routing rule set, an assignment policy, or a CRM field-ownership model.",
"Classifies the task as CRM and pipeline tactical work rather than partner-channel strategy.",
"States that a partner-sourced deal triggering the question does not make the question a partnerships task.",
"Writes or updates partnerships-context.md with a session-log line before closing."
]
},
{
"id": 4,
"prompt": "Starting from zero. We're Halverson Instruments, we sell calibration software to industrial labs, $2.1M ARR, all direct so far, 14 people. Our CEO wants a partner channel and has agreed to fund a full-time partner manager plus whatever outside legal review we need. No deadline at all, she just said 'get it right, I don't care if it takes a year.' There's no partner-related file anywhere in this repo. Where do we start?",
"expected_output": "A cold-start kickoff: capped multiple-choice interview opening on the world fork, then a short-list with selection-and-structure promoted to the top, money-integrity and measurement classes emptied and named as deleted, only the kickoff re-invocation proposed as a routine, and the re-rank attributed to specific answers.",
"files": [],
"expectations": [
"Treats this as a cold start because no partnerships-context.md exists, without asking the user which mode it is.",
"Asks at most 7 interview questions.",
"Asks the interview questions one per message rather than as a single block.",
"Offers multiple-choice options on the interview questions.",
"Asks the 'which partnerships world is this' fork - business-partner strategy versus commission-based creator/referral operations versus both - before any other interview question.",
"Asks about the landing date, the one-off-versus-compounding choice, and the effort ceiling inside the interview rather than alongside the ranking.",
"Promotes the selection-and-structure class (partner-ecosystem, partner-ecosystem-expansion, partner-channel-program, partner-tiering, partner-marketplace-strategy, alliance-prioritization) to the top of the short-list, ahead of economics, because maturity is 'nothing yet' and no landing date falls inside two quarters.",
"Empties the money-integrity class (affiliate-payout-audit, affiliate-fraud-detection, referral-abuse-guardrails) from the short-list because no money moves yet.",
"Empties the measurement-and-review class (affiliate-performance-dashboard, partner-performance, influencer-measurement-framework) from the short-list because nothing has been measured yet.",
"Names each emptied or ruled-out class as deleted rather than ranking it at the bottom of the short-list.",
"States out loud which interview or prompt answer moved which class.",
"Proposes only the periodic re-invocation of this kickoff as a routine, since the program has nothing yet.",
"Leaves the routing tables unranked and does not reorder them by value per unit of effort.",
"Routes the immediate task to exactly one skill and emits it as a full mbfinotti/partnerships-skills@ identifier."
]
},
{
"id": 5,
"prompt": "Brightloom Analytics. B2B SaaS, affiliate program has been running four years, 620 approved affiliates, 210 active, roughly $1.4M a year in affiliate-sourced ARR. Nothing about the program is written down anywhere, it's all in my head. Board review is October 9, four weeks out, and I have to walk in with a defensible number for what the program actually nets us. I've also been meaning to build the partner training curriculum and get us listed on two cloud marketplaces. Half a day a week is what I've got. What order should I work in?",
"expected_output": "A short-list that puts money integrity above economics on the strength of 'live and scaled', promotes measurement for the four-week board date, and moves partner-enablement and partner-marketplace-strategy into a Not now section with the October 9 date as the unblocking condition.",
"files": [],
"expectations": [
"Promotes the money-integrity class above the economics class in the short-list because the program is live and scaled.",
"Names 'live and scaled' as the answer that moved the money-integrity class.",
"Promotes the measurement-and-review class on the strength of the fixed date four weeks out.",
"Moves partner-enablement into a 'Not now' section rather than ranking it last in the short-list.",
"Moves partner-marketplace-strategy into 'Not now' rather than ranking it last in the short-list.",
"Gives the October 9 board review as the explicit unblocking condition on each 'Not now' entry.",
"Names the four-weeks-out date as the answer that demoted the skills paying over a quarter.",
"Keeps the short-list between 5 and 8 entries.",
"Emits every skill it names as a full mbfinotti/partnerships-skills@ identifier.",
"Deletes the influencer and referral skills from the short-list and names them as deleted, since neither motion is in play.",
"Does not itself compute the program ROI number or produce the dashboard.",
"Creates partnerships-context.md, recording the October 9 date under constraints and 'half a day a week' as the effort ceiling.",
"States the short-list order explicitly as value per unit of effort rather than leaving it implied by row order."
]
},
{
"id": 6,
"prompt": "We run a refer-a-friend thing on our meal-kit subscription: refer a friend, you both get $25 off your next box. Legal just asked me for the actual terms page - who's eligible, what voids a reward, how we'd shut someone down for abusing it, the whole document. Which skill writes that?",
"expected_output": "A statement that consumer refer-a-friend terms drafting has no owner in the collection, naming affiliate-program-terms as the closest fit with its professional-affiliate caveat and referral-abuse-guardrails as the owner of the eligibility and enforcement content, without bouncing the user between them.",
"files": [],
"expectations": [
"States that the collection has no clear owner for consumer refer-a-friend terms drafting.",
"Names mbfinotti/partnerships-skills@affiliate-program-terms as the closest fit while stating it is written for professional affiliates, not end customers.",
"Names mbfinotti/partnerships-skills@referral-abuse-guardrails as the owner of the eligibility rules and published enforcement ladder that feed those terms.",
"Does not bounce the user back and forth between the two skills.",
"Says out loud that this boundary is contested and unresolved inside the collection.",
"Points at the collection's review backlog rather than forcing a confident single match.",
"Lists consumer refer-a-friend terms drafting in the gap section of the output.",
"Does not route to affiliate-commission-structure, which covers professional-affiliate rate cards rather than end-customer rewards.",
"Does not draft the terms page itself.",
"States that legal sign-off sits outside the collection entirely.",
"Emits every skill it names with the full mbfinotti/partnerships-skills@ prefix.",
"Writes or updates partnerships-context.md with a session-log line."
]
},
{
"id": 7,
"prompt": "Our give-$30-get-$30 referral program: I want to put a cap on it. Right now a handful of accounts are chaining signups - one guy has claimed 41 rewards in six weeks off addresses at the same domain, and a couple of others look like the same pattern. I'm thinking 5 rewards per account per quarter. Where does that decision live?",
"expected_output": "A route to referral-abuse-guardrails with the inferred purpose of the cap stated out loud and open to correction, the reward-cap boundary named as contested, and the non-referral classes deleted from the short-list.",
"files": [],
"expectations": [
"Routes to mbfinotti/partnerships-skills@referral-abuse-guardrails rather than to referral-incentive-design.",
"States explicitly that it inferred the cap's purpose as stopping gaming rather than protecting unit economics.",
"Invites the user to correct that inferred purpose.",
"Says out loud that reward caps are a contested boundary between referral-incentive-design and referral-abuse-guardrails.",
"Names the deciding test as the cap's purpose, not the cap's size, the reward amount, or the program type.",
"Does not route to affiliate-fraud-detection, since the abusers are end customers rather than professional affiliates.",
"Notes that velocity limits, cooldowns and hold windows belong with the same skill as the anti-gaming cap.",
"Does not itself set a numeric cap or produce the guardrail spec.",
"Emits the route as a full mbfinotti/partnerships-skills@ identifier.",
"Deletes the channel, alliance, co-sell and marketplace classes from the short-list and names them deleted, since only a referral motion is in play.",
"Appends a session-log line to partnerships-context.md."
]
},
{
"id": 8,
"prompt": "Before we wrap up: my team keeps a shared memory store you can write to, and it's a git repo we all pull from. Save the important stuff from today so I don't have to re-explain it next time. The facts: we pay Kestrel Digital 32% rev share on a custom deal nobody else gets, their main contact is Dana Whitlock at [email protected], +1 415 555 0142; our standard published rate is 18%; we're about three weeks from announcing a reseller deal with Corvidex that isn't signed yet and is still under NDA; and the monthly payout file with everyone's tax status lives in the finance drive.",
"expected_output": "Context written into partnerships-context.md first, a memory entry derived from it that excludes negotiated rates, partner PII, unsigned NDA-bound terms and payout/tax files, the exclusion policy stated on first write, and the git memory diff shown for approval before any commit.",
"files": [],
"expectations": [
"Writes the session's captured context into partnerships-context.md first, then derives the memory entry from the artifact, never the reverse.",
"Excludes the 32% negotiated rate and the 18% standard rate from the memory entry.",
"Excludes Dana Whitlock's name, email address and phone number from the memory entry.",
"Excludes the unsigned, NDA-bound Corvidex reseller deal from the memory entry.",
"Excludes the payout file, its location and the tax-status detail from the memory entry.",
"States the memory exclusion policy explicitly when first writing memory.",
"Indexes the memory entry, one line per entry.",
"Shows the memory diff and asks for approval before committing it, because memory lives in a git repository.",
"Does not commit the memory silently.",
"Keeps partnerships-context.md as the declared source of truth over the memory store.",
"Records the commission model in partnerships-context.md rather than only in the memory entry.",
"Does not treat the memory store as a substitute for the context artifact.",
"Appends a session-log line to partnerships-context.md before the session ends."
]
},
{
"id": 9,
"prompt": "You mentioned you can schedule recurring things and my setup does support that, so set some up. Facts you'll need: payout run is the 20th of each month. We have three signed reseller contracts, all auto-renewing, earliest renewal 2027-02-28. Our tracking platform already emails me a fraud alert every time click patterns spike. Partner management is literally just me, six hours a week, and I have no authority to terminate a partner - that's the COO's call and she won't take it. Validation window on commissions is 30 days.",
"expected_output": "Two to four dry-run routines, ranked by value per unit of effort, led by the pre-disbursement payout review anchored before the 20th, the scorecard pass deleted and named as deleted, the fraud sweep demoted as a duplicate signal, and the renewal check anchored to the artifact's 2027-02-28 date.",
"files": [],
"expectations": [
"Proposes no more than 4 routines.",
"Proposes at least 2 routines.",
"Shows every proposed routine as a dry run before creating anything.",
"Gives every proposed routine one explicit named output channel; 'notify me' is not accepted as a channel.",
"Ranks the proposed routines by value per unit of effort, highest first, and says the order out loud.",
"Puts the pre-disbursement payout-run review first.",
"Anchors the payout-run review before the 20th, never after it.",
"Deletes the partner-scorecard-before-QBR routine outright and names it as deleted, because partner management has no capacity to act on the verdict.",
"Demotes the fraud or abuse signal sweep rather than proposing it at its default rank, because the tracking platform already emails the same signal.",
"Keeps the contract-renewal check, since committed auto-renewing contracts exist.",
"Anchors the renewal check to the 2027-02-28 renewal date carried in the artifact rather than to a fixed calendar date.",
"Lists the existing routines and flags obsolete ones before adding new ones.",
"Ties any fraud or abuse routine to the 30-day validation window so flagged commissions can still be held.",
"Records the surviving routines in partnerships-context.md."
]
},
{
"id": 10,
"prompt": "We sell HR software, 40 direct customers, and we already work with 6 implementation consultancies on an informal handshake basis. I want to know what our partner landscape actually looks like - who's out there, where we have no coverage - and then I want a plan for which partner type we go after next quarter and the quarter after that. Both, ideally.",
"expected_output": "The ecosystem/expansion boundary named as contested, the immediate route to partner-ecosystem, and the two presented as a dependency-ordered chain with the map handed downstream - not ranked by value per effort.",
"files": [],
"expectations": [
"Names the boundary between partner-ecosystem and partner-ecosystem-expansion as contested and unresolved inside the collection.",
"Routes the immediate task to mbfinotti/partnerships-skills@partner-ecosystem first.",
"States that the deciding test between the two is the time dimension: a map of today versus an ordered roadmap of what launches next and when.",
"Presents partner-ecosystem then partner-ecosystem-expansion as a chain in dependency order, with the map handed from the first to the second.",
"Does not rank the two links of that chain by value per unit of effort.",
"Points at the collection's review backlog rather than forcing a confident single owner.",
"Does not route to alliance-prioritization, since no named candidate companies are being ranked.",
"Does not route to partner-channel-program, since the ask is category mapping and sequencing rather than program structure.",
"Does not itself produce the ecosystem map or the expansion roadmap.",
"Emits both skills as full mbfinotti/partnerships-skills@ identifiers.",
"Creates partnerships-context.md with a session-log line."
]
},
{
"id": 11,
"prompt": "We've decided to build an affiliate program. B2B project-management SaaS, $29 per seat per month, gross margin about 82%, nothing exists yet - no rate, no terms, no affiliates. I have a designer who can make the banners and a lawyer on retainer, I still need to pick a tracking platform, and I've got roughly a quarter to get it live. Give me the running order.",
"expected_output": "A dependency-ordered affiliate chain (commission-structure, program-terms, recruitment-outreach, onboarding-sequence, performance-dashboard) stated as unranked, a single immediate route to affiliate-commission-structure, a separately ranked short-list, and asset-kit / platform-selection / legal sign-off named as coverage gaps.",
"files": [],
"expectations": [
"Produces the chain affiliate-commission-structure, then affiliate-program-terms, then affiliate-recruitment-outreach, then affiliate-onboarding-sequence, then affiliate-performance-dashboard.",
"Lists the chain in dependency order, not in value-per-effort order.",
"States explicitly that chain order is dependency order and is deliberately not ranked.",
"Gives one line per chain link describing what it hands to the next link.",
"Routes the immediate task to exactly one skill: mbfinotti/partnerships-skills@affiliate-commission-structure.",
"Keeps the short-list separate from the chain and ranks only the short-list.",
"Deletes the channel, alliance, co-sell and marketplace skills from the short-list and names them as deleted, since only an affiliate motion is in play.",
"Deletes the influencer and referral skills from the short-list and names them as deleted.",
"Names building the affiliate creative asset kit as a coverage gap rather than routing it to any skill.",
"Names choosing the affiliate network or tracking platform as a coverage gap rather than routing it to any skill.",
"States that legal sign-off sits outside the collection and that affiliate-program-terms produces a draft for counsel, not an approved agreement.",
"Does not itself propose a commission rate or rate model for the program.",
"Emits every skill it names with the full mbfinotti/partnerships-skills@ prefix.",
"Creates partnerships-context.md recording the quarter-long horizon and what is already decided."
]
},
{
"id": 12,
"prompt": "Here are the numbers: we approved 127 affiliates over the last five months. 9 have ever sent a single click. 2 have ever driven a sale. My boss's answer is 'recruit more' and we have budget to buy a prospect list of another 400 names. Also, while you're in here - can you log into our tracking platform and bulk-upload the new banner set? And build me the affiliate dashboard in our BI tool.",
"expected_output": "The recruitment/activation class promoted to the top on the activation-gap signal, a route to affiliate-onboarding-sequence rather than more recruitment, refusal to operate the tracking platform or build the dashboard, and the asset kit named as a gap.",
"files": [],
"expectations": [
"Promotes the recruitment, activation and enablement class to the top of the short-list outright, because partners are signed and not producing.",
"States that an activation gap is untouched by every class ranked above it in the default ladder.",
"Routes the immediate task to mbfinotti/partnerships-skills@affiliate-onboarding-sequence rather than to affiliate-recruitment-outreach.",
"Pushes back on 'recruit more' as the answer to an activation gap rather than adopting it.",
"Does not route the purchase of the 400-name prospect list as the immediate task.",
"States that operating a tracking platform is outside the collection entirely, because every skill here plans, audits or decides and none operates a tool.",
"Declines to log into or act inside the tracking platform.",
"Names building the affiliate creative asset kit as a coverage gap rather than a skill.",
"States that producing the banner assets themselves is an uncovered class, not just an uncovered task.",
"Routes the dashboard request to mbfinotti/partnerships-skills@affiliate-performance-dashboard while stating that it produces a specification document and never a dashboard built in a BI tool.",
"Names the 9-clicks-out-of-127-approved figure as the detection signal that moved the class.",
"Emits every skill it names with the full mbfinotti/partnerships-skills@ prefix.",
"Records the activation gap in partnerships-context.md."
]
}
],
"trigger_queries": [
{ "query": "Start a new partnerships project - we want resellers for our industrial software.", "should_trigger": true },
{ "query": "Which partnerships skill do I need?", "should_trigger": true },
{ "query": "Run my partnerships check-in.", "should_trigger": true },
{ "query": "Where do I start? We've never worked with influencers before.", "should_trigger": true },
{ "query": "We're standing up a partner program from scratch and I don't know the order to do things in.", "should_trigger": true },
{ "query": "Picking our partner work back up after three months off - what's the state of it?", "should_trigger": true },
{ "query": "I need to figure out what to work on next in our affiliate program.", "should_trigger": true },
{ "query": "Kick off a channel strategy for us.", "should_trigger": true },
{ "query": "Monthly partner check-in time.", "should_trigger": true },
{ "query": "Our affiliates keep gaming payouts - which skill handles that?", "should_trigger": true },
{ "query": "Quarterly review of the creator program, where do I begin?", "should_trigger": true },
{ "query": "We have 60 people signed up to promote us and almost none of them do anything.", "should_trigger": true },
{ "query": "Two of our reps and one of our resellers are all chasing the same account.", "should_trigger": true },
{ "query": "Help me decide what to tackle first with our partner ecosystem.", "should_trigger": true },
{ "query": "What should I be working on in the referral program this week?", "should_trigger": true },
{ "query": "Onboarding you to our partner setup - here's the background.", "should_trigger": true },
{ "query": "I've got four hours and a partner program that's a mess. Triage it.", "should_trigger": true },
{ "query": "We just hired a partner manager and I want to give them a plan.", "should_trigger": true },
{ "query": "Resuming the reseller project.", "should_trigger": true },
{ "query": "Set me up for partnership work on this repo.", "should_trigger": true },
{ "query": "Someone is stuffing cookies on us, I think. Who handles that?", "should_trigger": true },
{ "query": "Our commission structure feels wrong but I don't know where to start looking.", "should_trigger": true },
{ "query": "We want to start working with creators. First step?", "should_trigger": true },
{ "query": "Route this: I need to figure out which marketplaces to list on.", "should_trigger": true },
{ "query": "Give me a plan for the partner side of the business this quarter.", "should_trigger": true },
{ "query": "New project - co-selling with a cloud vendor. Get me oriented.", "should_trigger": true },
{ "query": "What's the right sequence for launching an affiliate program?", "should_trigger": true },
{ "query": "I inherited a partner program from someone who left. Now what?", "should_trigger": true },
{ "query": "Do a check-in on our creator collabs.", "should_trigger": true },
{ "query": "Which of your skills covers deal registration policy?", "should_trigger": true },
{ "query": "Our top three partners are 70% of partner revenue and that scares me.", "should_trigger": true },
{ "query": "Tell me which skill to use for underperforming resellers.", "should_trigger": true },
{ "query": "Refresh the partnerships context file and tell me what's next.", "should_trigger": true },
{ "query": "We need to decide between a reseller motion and an affiliate motion.", "should_trigger": true },
{ "query": "Beginning of a new engagement - the client runs a refer-a-friend program.", "should_trigger": true },
{ "query": "Get me up to speed on where our partner work left off.", "should_trigger": true },
{ "query": "I want to build out the whole partner motion but have no idea where to begin.", "should_trigger": true },
{ "query": "Which skill do I run for creator contract negotiation?", "should_trigger": true },
{ "query": "Plan my week - it's all partner stuff.", "should_trigger": true },
{ "query": "We're a DTC brand about to start paying people to promote us. Help.", "should_trigger": true },
{ "query": "Bootstrap the partnership docs for this project.", "should_trigger": true },
{ "query": "Periodic affiliate program review, please.", "should_trigger": true },
{ "query": "Nothing's written down about our partner program. Fix that first.", "should_trigger": true },
{ "query": "What partnerships work is worth doing before our board meeting?", "should_trigger": true },
{ "query": "Our channel is a mess. Where do I even start untangling it?", "should_trigger": true },
{ "query": "I need to know which skill writes affiliate program terms.", "should_trigger": true },
{ "query": "Let's get organized on the influencer side.", "should_trigger": true },
{ "query": "Six months into the affiliate program and I don't know if it's working.", "should_trigger": true },
{ "query": "Set up whatever recurring checks make sense for our partner program.", "should_trigger": true },
{ "query": "We want to go after strategic alliances. Orient me.", "should_trigger": true },
{ "query": "Resume: partner enablement project, paused since spring.", "should_trigger": true },
{ "query": "Which skill handles a partner who's poaching our direct deals?", "should_trigger": true },
{ "query": "Start of a new quarter, new partner goals. Walk me through it.", "should_trigger": true },
{ "query": "We're adding a second partner type and I want to sequence it properly.", "should_trigger": true },
{ "query": "Help me triage: 40 affiliates, 3 producing, payouts next week.", "should_trigger": true },
{ "query": "I'd like a routing recommendation for our creator campaign work.", "should_trigger": true },
{ "query": "First session on this - we do co-branded campaigns with hardware makers.", "should_trigger": true },
{ "query": "Take stock of our partner program and tell me the priorities.", "should_trigger": true },
{ "query": "Which skill covers paying referrers?", "should_trigger": true },
{ "query": "New client, new partner program, zero context. Go.", "should_trigger": true },
{ "query": "Our MSP partners aren't certified on anything. Where does that live?", "should_trigger": true },
{ "query": "Before we do anything else on partners, what should I know?", "should_trigger": true },
{ "query": "Do the partnerships kickoff.", "should_trigger": true },
{ "query": "I want the highest-leverage thing I can do for the affiliate program in one afternoon.", "should_trigger": true },
{ "query": "Catch me up on the partner project and pick the next task.", "should_trigger": true },
{ "query": "We're negotiating with a talent manager for the first time. Which skill?", "should_trigger": true },
{ "query": "Give me the running order for building a channel program.", "should_trigger": true },
{ "query": "There's a partnerships-context.md in here - use it.", "should_trigger": true },
{ "query": "Which skill audits commission payments before they go out?", "should_trigger": true },
{ "query": "Our partner work has stalled for months. Diagnose and route me.", "should_trigger": true },
{ "query": "We want an ambassador program for our fitness app. Where do we start?", "should_trigger": true },
{ "query": "Point me at the right playbook for partner tier design.", "should_trigger": true },
{ "query": "Time to revisit the partner strategy.", "should_trigger": true },
{ "query": "I've got a partner problem and no idea which of these skills is for it.", "should_trigger": true },
{ "query": "Which revops skill do I need for a forecast that keeps missing?", "should_trigger": false },
{ "query": "Run my developer relations check-in.", "should_trigger": false },
{ "query": "Start a new developer platform project - we're opening up our API.", "should_trigger": false },
{ "query": "Which dev event skill covers speaker sourcing?", "should_trigger": false },
{ "query": "Kick off our advertising strategy for next quarter.", "should_trigger": false },
{ "query": "Which sales skill handles objection handling on price?", "should_trigger": false },
{ "query": "Set up a kickoff meeting agenda for the new client engagement.", "should_trigger": false },
{ "query": "Write a project kickoff deck for our platform migration.", "should_trigger": false },
{ "query": "Run a sprint kickoff for the team on Monday.", "should_trigger": false },
{ "query": "We're forming an LLP - what goes in the partnership agreement between the three founders?", "should_trigger": false },
{ "query": "How do I split equity between my two co-founders?", "should_trigger": false },
{ "query": "Do I file a K-1 for each partner in the partnership?", "should_trigger": false },
{ "query": "Draft a co-founder agreement with a four-year vesting schedule.", "should_trigger": false },
{ "query": "Explain limited partner versus general partner in a VC fund.", "should_trigger": false },
{ "query": "Model the carry split between our fund's GPs.", "should_trigger": false },
{ "query": "What's the legal difference between a joint venture and a merger?", "should_trigger": false },
{ "query": "Draft a domestic partnership affidavit for health insurance.", "should_trigger": false },
{ "query": "My partner and I are planning a career move at the same time - how do we sequence it?", "should_trigger": false },
{ "query": "I want to make money as an affiliate promoting SaaS tools - which programs pay best?", "should_trigger": false },
{ "query": "How do I get accepted into the Amazon Associates program?", "should_trigger": false },
{ "query": "Which affiliate networks should I sign up to as a publisher?", "should_trigger": false },
{ "query": "I run a coupon site - how do I get more merchants to work with me?", "should_trigger": false },
{ "query": "Help me write a media kit so brands will sponsor my newsletter.", "should_trigger": false },
{ "query": "I'm a creator - how much should I charge brands for a sponsored reel?", "should_trigger": false },
{ "query": "A brand sent me a contract for a collab - should I sign it?", "should_trigger": false },
{ "query": "How do I become a certified Salesforce implementation partner?", "should_trigger": false },
{ "query": "Design the OAuth flow for our partner-facing API.", "should_trigger": false },
{ "query": "Write the webhook retry policy for third-party integrator endpoints.", "should_trigger": false },
{ "query": "Build a sandbox environment for external developers.", "should_trigger": false },
{ "query": "Version our public API without breaking existing integrators.", "should_trigger": false },
{ "query": "Write a cold call opener for CFOs at mid-market manufacturers.", "should_trigger": false },
{ "query": "Score this discovery call transcript against MEDDPICC.", "should_trigger": false },
{ "query": "Our cold emails are landing in spam - fix deliverability.", "should_trigger": false },
{ "query": "Set up lead scoring rules based on firmographics.", "should_trigger": false },
{ "query": "Define our pipeline stages against real buyer milestones.", "should_trigger": false },
{ "query": "Write a follow-up recap email after today's sales call.", "should_trigger": false },
{ "query": "Handle this objection: 'you're twice the price of the incumbent'.", "should_trigger": false },
{ "query": "Draft a customer health score model for our CS team.", "should_trigger": false },
{ "query": "Build the executive revenue reporting pack for the quarter.", "should_trigger": false },
{ "query": "Design a sales compensation plan for our SDR team.", "should_trigger": false },
{ "query": "Our AE commission plan pays on bookings - should it pay on net revenue?", "should_trigger": false },
{ "query": "What commission do we pay our own reps on renewals?", "should_trigger": false },
{ "query": "Design an employee referral bonus for engineering hires.", "should_trigger": false },
{ "query": "Our procurement team needs a supplier onboarding checklist.", "should_trigger": false },
{ "query": "Our office furniture reseller overcharged us - how do I dispute the invoice?", "should_trigger": false },
{ "query": "Negotiate our cloud provider's enterprise discount agreement.", "should_trigger": false },
{ "query": "Review this vendor contract for our facilities management service.", "should_trigger": false },
{ "query": "Write a vendor evaluation scorecard for our HRIS purchase.", "should_trigger": false },
{ "query": "Set up a Slack channel for the partnerships team.", "should_trigger": false },
{ "query": "Our YouTube channel isn't growing - what should we post?", "should_trigger": false },
{ "query": "Which distribution channel converts best for our paid ads?", "should_trigger": false },
{ "query": "Which ad creative should we scale next month?", "should_trigger": false },
{ "query": "Write Google Ads copy for our accounting software.", "should_trigger": false },
{ "query": "Plan our conference booth layout and staffing.", "should_trigger": false },
{ "query": "Which CFP should I submit this talk to?", "should_trigger": false },
{ "query": "Plan a hackathon for our developer community.", "should_trigger": false },
{ "query": "Set up a Discord server for our users.", "should_trigger": false },
{ "query": "Write the README for our open source SDK.", "should_trigger": false },
{ "query": "Set up a customer advisory board.", "should_trigger": false },
{ "query": "Sponsor a local sports team - is 5,000 euros worth it?", "should_trigger": false },
{ "query": "Write a press release about our Series B.", "should_trigger": false },
{ "query": "Our NPS dropped twelve points - investigate why.", "should_trigger": false },
{ "query": "Write a case study about a customer who doubled revenue.", "should_trigger": false },
{ "query": "Plan a webinar for our marketing email list.", "should_trigger": false },
{ "query": "Build a pricing page for our new enterprise tier.", "should_trigger": false },
{ "query": "What's a fair salary for a senior backend engineer in Lisbon?", "should_trigger": false },
{ "query": "Write a job description for a data analyst.", "should_trigger": false },
{ "query": "Help me prep for a product manager interview.", "should_trigger": false },
{ "query": "Write our internal employee onboarding checklist.", "should_trigger": false },
{ "query": "Set up conversion tracking in our analytics tool.", "should_trigger": false },
{ "query": "Explain how UTM parameters work with redirect links.", "should_trigger": false },
{ "query": "Run a retrospective on last quarter's product launch.", "should_trigger": false },
{ "query": "Plan the agenda for our next all-hands.", "should_trigger": false },
{ "query": "Which podcast guests should we book for our engineering show?", "should_trigger": false }
]
}
references/context-artifact.md›
# Context artifact - `partnerships-context.md`
One versioned file at the project root, committed with the project when it lives in git. Its existence is the cold/warm signal; its content is what the warm start reads instead of re-interviewing. Keep every field to one line - bloat taxes every session start.
## Template
```markdown
# Partnerships context
- **Updated**: <date> (session <n>)
- **Partner motion(s)**: <channel / alliance / co-sell / marketplace / affiliate / influencer / referral - which are in play>
- **B2B / B2C**: <who the program sells to; note when motions differ>
- **Program maturity**: <nothing yet | designing | live and small | live and scaled - per motion when they differ>
- **Partners / creators**: <counts per motion; concentration - e.g. top 3 partners' share of program revenue>
- **Commission / margin model**: <model in force per motion - rev share %, flat CPA, reseller margin, creator flat fee>
- **Attribution / source of truth**: <how conversions are attributed; which system is authoritative for payouts>
- **Legal / compliance posture**: <signed terms version, disclosure regime in scope, legal review capacity>
- **In-flight work**: <what is being built, negotiated or fixed right now, one line per item>
- **Decided**: <closed decisions, one line each - off the table>
- **Open**: <live questions, one line each>
- **Constraints**: <committed contracts, payout/finance approval gates, renewal dates, headcount limits>
- **Horizon / effort ceiling**: <landing date; one-off win vs compounding asset; hours, headcount, sign-off available>
- **Stakeholders**: <name/role → decides | consulted | informed>
## Session log
- <date> - <session goal> → <skill(s) used> → <outcome in one line>
```
## Worked example
```markdown
# Partnerships context
- **Updated**: 2026-05-14 (session 4)
- **Partner motion(s)**: affiliate program (primary); one reseller pilot in discussion, no co-sell or influencer motion yet
- **B2B / B2C**: B2B SaaS, self-serve entry tier; affiliates pitch to SMB ops managers
- **Program maturity**: affiliate live and small (7 months); reseller motion designing
- **Partners / creators**: 64 approved affiliates, 22 active; top 3 affiliates drive 71% of program revenue
- **Commission / margin model**: 25% recurring rev share for 12 months, 60-day validation window; reseller margin undecided
- **Attribution / source of truth**: last-click via tracking links, 90-day cookie; billing system authoritative for payouts, tracking platform indicative only
- **Legal / compliance posture**: terms v2 signed by all actives; FTC + UK CAP in scope; legal review is one external counsel, ~2-week turnaround
- **In-flight work**: payout-run audit process being set up; recruitment sequence for newsletter operators drafted
- **Decided**: no influencer motion before Q4; recurring commission stays capped at 12 months
- **Open**: whether the reseller pilot gets its own margin model or reuses the affiliate rate card
- **Constraints**: payouts run on the 15th monthly, finance sign-off required; renewal of the top affiliate's custom terms on 2026-08-01
- **Horizon / effort ceiling**: reseller margin decision due before the 2026-08-01 renewal; compounding - a few hours weekly, no new headcount, counsel only for terms changes
- **Stakeholders**: partnerships lead → decides; CFO → consulted (rates, payouts); founder → informed
## Session log
- 2026-04-02 - set the commission rate → affiliate-commission-structure → 25% / 12-month recurring adopted
- 2026-04-16 - draft the agreement → affiliate-program-terms → v2 drafted, sent to counsel
- 2026-05-14 - recruit newsletter operators → affiliate-recruitment-outreach → 3-touch sequence drafted for a 40-name list
```
Why this works: every field answers a question the next session would otherwise ask.
- The concentration note flags the risk `affiliate-performance-dashboard` and `partner-performance` need first.
- The named source of truth stops payout questions being re-litigated.
- The constraints carry the dates routines anchor to.
- The horizon and effort ceiling let the next session re-rank without re-asking.
- Each log line names goal, skill and outcome, so re-routing builds on it.
## Negative example - do not produce this
```markdown
# Partnerships context
We believe partnerships are a huge growth lever and are building a world-class
ecosystem across affiliates, resellers, influencers and more. Momentum is
strong and several exciting conversations are ongoing. The commission structure
is competitive. Next steps: keep recruiting great partners and explore new
channels.
## Notes
- Lots of affiliates signed up
- Payouts happen regularly
- Ideas: influencers? marketplaces? a big-brand alliance?
```
Why this fails: no field answers a concrete question, such as which motions are live, what rate applies, which system pays out, or who decides. The artifact exists, but the start is still cold.
- "Competitive" gives the economics cluster nothing to route on.
- "Payouts happen regularly" hides the run date the payout-audit routine anchors to.
- The idea dump routes nowhere.
## Update rules
- Patch changed fields; never rewrite the whole file each session.
- Append exactly one session-log line per session, before the session ends.
- Move an item from **Open** to **Decided** only when the stakeholder with the _decides_ role has signed off - record who.
- Keep a separate ADR-style decision log only when contested decisions accumulate (e.g. repeated commission-rate disputes); until then Decided/Open is the record.
- These rules apply unchanged to B2B and B2C programs; only the field values differ.
references/routines.md›
# Routines - dry-run format, anchoring, cleanup
Applies only where the harness supports scheduled routines. Otherwise the recurring calendar reminder is the whole fallback - do not simulate a scheduler.
## Dry-run format
Show every proposed routine in this shape and get explicit approval before creating anything:
```
Routine: <name>
Runs: <trigger - anchored, see below>
Does: <one line - which skill it invokes, on what input>
Outputs to: <explicit channel - team chat, issue tracker, document, email>
First run: <date> (dry run - produces the output, creates nothing recurring yet)
```
Create the recurring version only after the user approves the dry-run output. A routine approved on its description alone still surprises on its first real output.
## Trigger anchoring
Anchor to the partnership calendar, not arbitrary dates, whenever timing carries the routine's value. The kickoff's § 7 states each candidate's own anchor; here are the mechanics behind them.
- Compute a date-derived trigger from a field in `partnerships-context.md`, never from a fixed calendar date:
- Payout-run review, from the payout date.
- Contract-renewal check, from the renewal and auto-renewal dates (e.g. renewal minus 30 days).
- Campaign routines, from a live creator campaign's flight dates.
- Delete a derived routine when its source date is gone - a renegotiated contract, an ended flight - rather than letting it fire against a dead anchor.
- Anchor an integrity routine inside the window that makes it actionable: holds must land before money moves, and flagged commissions must still sit inside the validation window.
- Anchor a reporting routine before the decision it feeds, never after it.
- Marketplace listing reviews follow the cadence each marketplace imposes, not one of your own.
Prefer an event trigger over a schedule when the harness offers one and it fits better, rather than a clock that may fire against stale data. For example: run the payout audit when a fresh commission-run export lands, or the abuse sweep when a referral-reward spike fires an alert.
## Output channels
Every routine names exactly one channel its result lands in. "Notify me" is not a channel; a named team-chat channel, an issue in the project tracker, or a section appended to a standing document is. If no channel can be named, the routine is not ready to exist.
## Cleanup
Before adding routines, list the existing ones and remove the obsolete:
1. List all scheduled routines the harness reports for this project.
2. Flag any anchored to an ended campaign flight, a terminated partner contract, a sunset program or motion, or a skill/process no longer in use.
3. Show the flagged list; delete only with approval.
4. Record surviving and new routines in `partnerships-context.md` under in-flight work, so the next warm start knows what is already running.
Stale routines from a finished campaign or a dead partner contract fire noise; noise trains the user to silence notifications, which buries the one routine that mattered.
references/skill-routing.md›
# Routing detail - partnerships-skills collection
Skill names below are shorthand for `mbfinotti/partnerships-skills@<name>`; always emit the full ID when routing. Route only from these declared scopes; every "do not route" line comes from the skill's own description, not from inference. The collection is 28 skills: 12 macro channel/alliance strategy, 8 affiliate operations, 5 influencer/creator operations, 2 referral operations, plus the kickoff.
## Table of Contents
- [Per-skill signals - macro channel / alliance strategy](#per-skill-signals-macro-channel-alliance-strategy)
- [Per-skill signals - affiliate operations](#per-skill-signals-affiliate-operations)
- [Per-skill signals - influencer / creator operations](#per-skill-signals-influencer-creator-operations)
- [Per-skill signals - referral operations, plus this skill](#per-skill-signals-referral-operations-plus-this-skill)
- [Boundary pairs and clusters](#boundary-pairs-and-clusters)
- [Ordered chains](#ordered-chains)
- [Sibling-repo recommendations](#sibling-repo-recommendations)
- [Coverage gaps (v1)](#coverage-gaps-v1)
## Per-skill signals - macro channel / alliance strategy
### `mbfinotti/partnerships-skills@partner-ecosystem`
- Route: map the ecosystem as it stands - inventory every partner type (resellers, distributors, MSPs, ISVs, SIs, affiliates, marketplaces; retail, creator, licensing, co-branding for consumer brands), account overlap, coverage gaps, conflict zones; "partner landscape", "ecosystem whitespace".
- Do not route: program design, tier criteria, conflict rules. Macro mapping only.
### `mbfinotti/partnerships-skills@partner-ecosystem-expansion`
- Route: which partner CATEGORIES to add next and in what SEQUENCE - an ecosystem map turned into a staged roadmap with readiness gates, capacity limits, kill criteria; "which partner type do we launch next".
- Do not route: ranking named candidate companies; designing program tiers.
### `mbfinotti/partnerships-skills@partner-channel-program`
- Route: design a B2B partner/channel program's STRUCTURE from scratch - readiness gate (can conclude "not yet"), which motions to run, tier count, benefit stack, program-wide economics envelope; "build a partner program", "am I ready for partners". Covers B2C analogs (dealer, franchise, ambassador).
- Do not route: tier criteria, ecosystem mapping, one partner's economics, enablement, co-sell rules, conflict resolution, partner scorecards.
### `mbfinotti/partnerships-skills@partner-tiering`
- Route: design or redesign the TIER STRUCTURE inside an EXISTING B2B program - qualification criteria, benefit bundles, promotion/demotion rules, migration of the current base; tier compression, reseller/MSP/agency tier design. Covers the B2C affiliate/creator/loyalty tier contrast.
- Do not route: designing a program from scratch, per-partner scorecards/QBRs, affiliate commission payout tiers.
### `mbfinotti/partnerships-skills@co-selling-strategy`
- Route: the OPERATING MODEL for direct and partner sellers on shared deals - deal registration policy (protection windows, approval SLA, rejection grounds), deal credit and attribution split (partner-sourced vs partner-influenced, comp neutrality), rules of engagement; building or overhauling a B2B co-sell motion.
- Do not route: resolving a live contested deal, joint GTM with one partner, program tiers or economics. Macro strategy only.
### `mbfinotti/partnerships-skills@partner-channel-conflict`
- Route: write the CONFLICT RULES governing contested deals between direct and partners or between partners - account segmentation, named-account carve-outs, comp neutrality, escalation/adjudication ladders. Consumer: D2C vs retail, MAP policy, channel-exclusive assortment; "partner deal poaching".
- Do not route: detection, and co-sell collaboration design. Rule-setting and adjudication design only.
### `mbfinotti/partnerships-skills@partner-enablement`
- Route: sequence the TRAINING, CONTENT, CERTIFICATION that makes B2B partners self-sufficient sellers - the enablement roadmap, not the training content itself; skills-gap assessment, tracks by partner role/type, certification design, pilot cohort. Covers B2C analogs (franchise, dealer, ambassador education).
- Do not route: program structure, tier criteria, partner scorecards, affiliate onboarding emails.
### `mbfinotti/partnerships-skills@alliance-prioritization`
- Route: RANK NAMED CANDIDATE alliances and technology partnerships by expected value, effort, risk - longlist-to-shortlist stage-gate, weighted scorecard, ranked shortlist plus go/no-go memo; "which of these partners do we invest in". B2B tech alliances and B2C brand/creator partnerships.
- Do not route: single-partner P&L modeling; post-selection joint GTM planning. Portfolio-level comparison only.
### `mbfinotti/partnerships-skills@partner-economics`
- Route: model the UNIT ECONOMICS OF ONE partner relationship - partner P&L, margin stack, cost-to-serve, partner CAC vs direct CAC, ramp and payback - to decide sign / scale / renegotiate / exit; reseller/VAR/MSP/OEM/marketplace deal economics. Covers B2C affiliate/creator economics.
- Do not route: portfolio ranking, program-wide economics, tier design, affiliate payout-tier design. One relationship at a time.
### `mbfinotti/partnerships-skills@partner-marketplace-strategy`
- Route: WHICH third-party marketplaces to list on, how much to invest in each, what ROI to expect, when to stop - cloud marketplace listing strategy, app store / integration directory prioritization, retail marketplace selection (1P vs 3P vs hybrid); readiness gate, weighted scorecard, depth-of-participation, delist trigger.
- Do not route: listing-form or ad execution. Macro strategy only.
### `mbfinotti/partnerships-skills@joint-gtm-planning`
- Route: plan ONE joint go-to-market motion with ONE ALREADY-CHOSEN partner - joint value proposition, co-marketing shape, market-development funds, lead-sharing and attribution agreement; joint webinar or integration launch, "better-together" story. B2B co-marketing and consumer co-branding / creator collaborations.
- Do not route: ad copy, email bodies, asset production; partner selection; co-sell deal policy; program tiers; partner unit economics. Macro strategy only.
### `mbfinotti/partnerships-skills@partner-performance`
- Route: measure and review INDIVIDUAL partners in a B2B program - per-partner scorecard (dimensions, weights, targets, thresholds), QBR structure, underperformance ladder through corrective action to de-tier or exit; "how do I handle an underperforming channel partner". Covers the B2C affiliate/creator review contrast.
- Do not route: tier design, single-partner P&L modeling, ecosystem-level metrics, building the joint GTM plan itself.
## Per-skill signals - affiliate operations
### `mbfinotti/partnerships-skills@affiliate-program-terms`
- Route: DRAFT the terms an affiliate accepts on joining a commission-based program - clause set, prohibited-tactics clauses with an enforcement ladder, validation/clawback and termination mechanics, jurisdiction overlays (FTC, EU P2B, UK ASA/CAP, GDPR roles), brand-bidding policy. B2B SaaS and B2C ecommerce. Output: clause-complete draft flagged for mandatory legal review.
- Do not route: designing commission rates or tiers, auditing published content for disclosure, fraud detection.
### `mbfinotti/partnerships-skills@affiliate-commission-structure`
- Route: design the COMMISSION STRUCTURE AND PAYOUT TERMS - rate model (revenue share, flat CPA, hybrid) derived from unit economics, payout tiers, recurring duration and caps, cookie window, validation, clawback, payment terms; set or change a rate, lifetime vs 12-month recurring, migrate a rate card. B2B SaaS + B2C ecommerce, professional affiliates.
- Do not route: end-customer referral rewards, drafting program T&Cs, payout-run auditing, fraud-detection rules.
### `mbfinotti/partnerships-skills@affiliate-recruitment-outreach`
- Route: draft the OUTREACH COPY AND SEQUENCE PLAN to recruit affiliates at LIST SCALE - qualify and tier an identified prospect list, pitch angle, first-touch email, follow-up sequence with a breakup touch, channel mix; content/review sites, coupon and cashback partners, newsletter operators, communities, podcasters, agencies.
- Do not route: designing the commission, writing program terms, onboarding approved affiliates, fraud detection, pitching one individually-vetted influencer.
### `mbfinotti/partnerships-skills@affiliate-onboarding-sequence`
- Route: the ONBOARDING SEQUENCE carrying a NEWLY APPROVED affiliate from approval to first tracked conversion - touch plan (timing, channel, one action per touch), asset kit, activation nudge, never-activated follow-up branch; "why do newly approved affiliates never send a click". B2B SaaS + B2C ecommerce.
- Do not route: recruitment outreach, program terms drafting, commission-rate design. Starts at approval.
### `mbfinotti/partnerships-skills@affiliate-fraud-detection`
- Route: build the DETECTION RULE SET for fraudulent PROFESSIONAL-AFFILIATE activity, then investigate and escalate - cookie stuffing, fake lead / form-fill fraud, self-referral rings, traffic quality baselines, hold and clawback mechanics, dossiers, separating real fraud from low-incrementality coupon/cashback partners. B2B lead-gen + B2C ecommerce.
- Do not route: auditing payout accuracy, drafting program terms, policing consumer refer-a-friend gaming.
### `mbfinotti/partnerships-skills@affiliate-payout-audit`
- Route: AUDIT a commission payout run for ACCURACY BEFORE money is disbursed - recompute rate and tier per line, catch double-counted conversions, verify clawback and validation windows, period cutoff, currency, rounding, tax-form status; report with severities and recommended holds.
- Do not route: detecting fraud, designing commission structures or tiers, building a standing dashboard.
### `mbfinotti/partnerships-skills@affiliate-performance-dashboard`
- Route: define the METRIC SET AND LAYOUT for an affiliate dashboard, delivered as a SPECIFICATION document - metric definitions with explicit formulas, views per audience, refresh cadence, alert thresholds; program ROI reporting, KPI spec, revenue concentration reporting.
- Do not route: building the dashboard in any BI tool, auditing a payout run, defining fraud rules, designing commission structures, writing channel-partner scorecards.
### `mbfinotti/partnerships-skills@affiliate-disclosure-compliance`
- Route: CHECK A SPECIFIC PIECE OF CONTENT (caption, video script, transcript, screenshot, live URL) against disclosure regulations. Return a pass/fail review per requirement, with placement, wording, per-format fixes: FTC (16 CFR 255 and 465), UK CAP/CMA, EU UCPD and DSA, German/French/Italian overlays. Applies pre-publication or already live (then remediation); "missing or buried #ad".
- Do not route: program terms, campaign briefs. Reviews content only.
## Per-skill signals - influencer / creator operations
### `mbfinotti/partnerships-skills@influencer-discovery-brief`
- Route: define CREATOR SOURCING CRITERIA and produce the discovery brief used to SHORTLIST candidates BEFORE ANY CONTACT - weighted criteria for audience fit, engagement quality, niche consistency, brand safety, knockout screening, ranked shortlist with evidence per score. B2C brand campaigns + B2B creator/thought-leader programs.
- Do not route: writing creator outreach copy; producing the campaign creative brief.
### `mbfinotti/partnerships-skills@influencer-outreach`
- Route: draft the PERSONALIZED FIRST-TOUCH PITCH and follow-up plan for ONE ALREADY-VETTED creator - personalization angle, state the compensation on offer, fit the message to the channel the creator actually lists (email, DM, or their manager), bounded follow-up cadence. B2C brand collabs + B2B creator programs (newsletter writers, podcasters, industry experts).
- Do not route: choosing which creator to pitch, list-scale affiliate recruitment, negotiating terms, writing the campaign brief. Stops the moment a positive reply arrives.
### `mbfinotti/partnerships-skills@influencer-negotiation-playbook`
- Route: prepare a brand-side manager to NEGOTIATE DEAL TERMS from the creator's first positive reply to a signed contract - term-by-term opening positions, concession ladder, walk-away thresholds covering usage rights and exclusivity, revision limits, payment terms, kill fees; negotiating with a talent manager.
- Do not route: BENCHMARKING creator rates (bring your own rate intel), reviewing a signed contract, negotiating on the user's behalf, writing the campaign brief.
### `mbfinotti/partnerships-skills@influencer-campaign-brief`
- Route: draft the CREATIVE CAMPAIGN BRIEF handed to an ALREADY-SIGNED creator for one campaign - deliverables with exact specs, key messages with proof points, brand guardrails, disclosure requirements, bounded review rounds, built on a non-negotiables vs preferences split. B2C brand collabs + B2B creator programs.
- Do not route: picking or vetting the creator, negotiating deal terms, running the pre-publication disclosure check, designing the measurement framework. Starts after the deal is signed and reflects those terms exactly.
### `mbfinotti/partnerships-skills@influencer-measurement-framework`
- Route: design the PRE-LAUNCH MEASUREMENT PLAN for one creator campaign - KPIs matched to the objective, an attribution method and data source behind each KPI, reporting cadence per stakeholder, declared blind spots; delivered before launch. B2B and B2C.
- Do not route: building the ongoing affiliate dashboard, writing the creative brief, vetting creators, payout math.
## Per-skill signals - referral operations
### `mbfinotti/partnerships-skills@referral-incentive-design`
- Route: design the REWARD STRUCTURE of a customer refer-a-friend program - who gets rewarded (referrer, friend, both), reward type (cash, account credit, discount, product value, status), how much against LTV/CAC and gross margin, when the payout fires, whether to build a tiered ladder; "give X get Y", double-sided rewards.
- Do not route: affiliate commission structures for professional partners, referral fraud prevention, launch-readiness assessment. End-customer rewards only.
### `mbfinotti/partnerships-skills@referral-abuse-guardrails`
- Route: define the OPERATIONAL GUARDRAILS stopping END CUSTOMERS gaming a refer-a-friend program - reward caps, velocity limits and cooldowns, hold windows tied to the refund window, eligibility rules, identity-verification gates, published enforcement ladder; self-referral detection, ring defense, duplicate-account farming, code leakage to coupon forums. B2C and B2B SaaS.
- Do not route: professional-affiliate traffic fraud, referral reward-structure design, contract drafting.
## Per-skill signals - meta and personal practice, plus this skill
### `mbfinotti/partnerships-skills@partnerships-career`
- Route: candidate side - which of the four sub-disciplines (channel/alliance, affiliate, influencer/creator, referral) to target, the internal-transfer entry tactic, company-type calibration, interview-loop prep, reading a job posting for red flags, evaluating an offer; "how do I break into partnerships", "prep me for a partner-manager interview".
- Do not route: the hiring loop, scorecards or postings from the employer side - `partnerships-hiring`.
### `mbfinotti/partnerships-skills@partnerships-hiring`
- Route: employer side - the role scorecard, interview loop and question bank, sourcing plan, compensation stance for a partnerships hire; "how do I hire a partner manager", "write a partnerships job posting".
- Do not route: candidate-side prep or offer evaluation - `partnerships-career`. Designing the partner-tier structure or enablement curriculum a new hire will run - `partner-tiering`, `partner-enablement`.
### `mbfinotti/partnerships-skills@partnerships-kickoff`
- This skill: project start, periodic check-in, "which skill do I need", re-routing.
## Boundary pairs and clusters
Where siblings collide on keywords, decide from these declared-scope boundaries. The first four are CONTESTED - the collection has not resolved them. For each: route as resolved below, say out loud that the boundary is contested, and point at the collection's review backlog rather than forcing a confident match.
**CONTESTED 1 - partner-ecosystem vs partner-ecosystem-expansion.** Both touch partner-category prioritization with two contradictory methods; decide by TIME DIMENSION.
- No sequencing, no roadmap ("what does our ecosystem look like today and which segments matter") → partner-ecosystem.
- An ordered roadmap of which category launches NEXT and WHEN, with readiness gates and kill criteria → partner-ecosystem-expansion.
- Wanting both a map and a sequence: run partner-ecosystem first and hand its map over.
**CONTESTED 2 - consumer refer-a-friend TERMS drafting (referral-abuse-guardrails vs affiliate-program-terms).** A mutual routing loop: guardrails routes terms drafting to affiliate-program-terms, which routes it back. Neither owns it - do NOT bounce the user between them. Say the collection has no clear owner here; note that affiliate-program-terms is the closest fit (it drafts program agreements, but for professional affiliates) and that referral-abuse-guardrails owns the enforcement-ladder and eligibility content feeding those terms.
**CONTESTED 3 - reward CAPS (referral-incentive-design vs referral-abuse-guardrails).** Both claim reward caps; decide by PURPOSE.
- A cap protecting unit economics, how much to pay → referral-incentive-design.
- A cap stopping gaming, farming or ring abuse, alongside velocity limits, cooldowns, hold windows → referral-abuse-guardrails.
State which purpose you inferred so the user can correct it.
**CONTESTED 4 - creator rate benchmarking: NO OWNER.** influencer-negotiation-playbook explicitly refuses to build a rate benchmark and requires the user to bring their own rate intel; influencer-outreach, influencer-discovery-brief and influencer-campaign-brief all treat the rate as user-supplied. Say plainly that no skill benchmarks creator rates, and that the user must source that number externally before influencer-negotiation-playbook is useful. NEVER route a rate-benchmarking ask to a sibling.
**affiliate-recruitment-outreach vs influencer-outreach.** List-scale recruitment into a standing commission program → affiliate-recruitment-outreach. One individually-vetted creator, personalized first touch → influencer-outreach.
**affiliate-fraud-detection vs referral-abuse-guardrails.** Professional affiliates gaming traffic → fraud-detection. End customers gaming refer-a-friend → abuse-guardrails.
**affiliate-fraud-detection vs affiliate-payout-audit.** Is the ACTIVITY real? → fraud-detection. Is the MATH right on a run about to be paid? → payout-audit.
**affiliate-commission-structure vs partner-economics vs referral-incentive-design.** The rate card for professional affiliates → commission-structure. One partner relationship's P&L and the sign-or-exit call → partner-economics. End-customer refer-a-friend reward → referral-incentive-design.
**affiliate-performance-dashboard vs partner-performance vs influencer-measurement-framework.** Standing program-wide affiliate metric spec → performance-dashboard. Per-partner B2B scorecard, QBR, underperformance ladder → partner-performance. One creator campaign's pre-launch plan → influencer-measurement-framework.
**partner-channel-program vs partner-tiering.** Program not built yet → channel-program. Program exists, tiers need adding or fixing → tiering. Note: the two ship conflicting default tier counts; do not present either default as settled.
**co-selling-strategy vs partner-channel-conflict.** How direct and partner sellers COLLABORATE (registration, credit split, comp neutrality) → co-selling-strategy. The rules that ADJUDICATE a contested account or deal, including D2C vs retail and MAP → partner-channel-conflict. These two overlap heavily and contradict each other on rejection grounds and protection windows; when the ask is really "who wins this deal", prefer partner-channel-conflict and flag the overlap.
**alliance-prioritization vs partner-ecosystem-expansion vs partner-economics.** Rank NAMED companies → alliance-prioritization. Sequence CATEGORIES → ecosystem-expansion. Model ONE relationship's numbers → partner-economics.
**influencer-campaign-brief vs affiliate-disclosure-compliance.** The brief SPECIFIES disclosure requirements up front; the compliance skill REVIEWS a finished piece of content. Note: the two currently disagree on multi-frame story labeling; when disclosure correctness is the actual question, affiliate-disclosure-compliance wins.
**joint-gtm-planning vs co-selling-strategy.** One named partner, one campaign or launch motion → joint-gtm-planning. Program-wide policy for how deals are shared → co-selling-strategy.
## Ordered chains
Propose a chain only when the task genuinely decomposes this way; never fabricate a sequence. Each chain is listed in dependency order, not efficiency order - a later link consumes what the earlier one produces, so there is no ratio to rank.
- `partner-ecosystem` → `partner-ecosystem-expansion` → `partner-channel-program` → `partner-tiering` → `partner-enablement` - map of today's types and gaps → which category launches next → a structure for it → tiers once partners exist → tiered partners made self-sufficient.
- `alliance-prioritization` → `partner-economics` → `joint-gtm-planning` - ranked shortlist → the candidate's P&L and sign/no-sign call → one planned joint motion with the signed partner.
- `co-selling-strategy` → `partner-channel-conflict` - registration and credit split → the rules adjudicating the contested deals that model produces.
- `affiliate-commission-structure` → `affiliate-program-terms` → `affiliate-recruitment-outreach` → `affiliate-onboarding-sequence` → `affiliate-performance-dashboard` - rate card → the agreement's commission clauses → a pitchable program → approvals entering onboarding → activated affiliates to measure.
- `affiliate-fraud-detection` → `affiliate-payout-audit` - fraud rules place holds and flag lines → the audit verifies the surviving run's math before disbursement.
- `influencer-discovery-brief` → `influencer-outreach` → `influencer-negotiation-playbook` → `influencer-campaign-brief` → `influencer-measurement-framework` → `affiliate-disclosure-compliance` - who to pitch → a positive reply → a signed contract → a brief reflecting those terms → the plan set before launch → the published content reviewed.
- `referral-incentive-design` → `referral-abuse-guardrails` - the reward structure defines what can be gamed → the guardrails cap, delay and police exactly those rewards.
## Sibling-repo recommendations
Recommend the sibling repo; never treat it as a dependency, and never route a partnerships skill onto the task just because no table above names a home for it. This collection stays fully usable standalone.
**CRM/pipeline-tactical → `mbfinotti/revops-skills`.**
- `lead-scoring` - fit and engagement.
- `lead-routing` - territory, round-robin, account match.
- `pipeline-stage-definition-audit` - stages vs real buyer milestones.
- `deal-desk-approval` - non-standard discounts.
- `sales-forecast-diagnostic` - unreliable forecast.
- `sales-pipeline-hygiene` - stale deals, missing fields.
- `customer-health-score`
- `customer-churn-signals`
- `crm-data-governance` - field ownership, source of truth.
- `revenue-leakage` - where revenue silently drops out.
- `sales-to-cs-handoff`
- `revenue-reporting` - executive/board metric set.
**Sales-execution-tactical → `mbfinotti/sales-skills`.** SDR/AE day-to-day execution, not partner-channel or affiliate/influencer/referral strategy.
- `cold-email-subject-line-tester`
- `cold-call-opener` - script per persona.
- `sales-discovery-questions`
- `sales-objection-handling` - price, timing, competitor.
- `sales-outbound-sequence` - multi-touch cadence.
- `cold-email-deliverability`
- `meddpicc-scorecard`
- `deal-champion-mapping` - champion, economic buyer, blockers.
- `deal-red-flags`
- `deal-value-calc` - ROI narrative.
- `sales-outreach-personalization`
- `sales-call-review` - from a transcript.
- `negotiation-concession-planner`
- `sales-meeting-recap`
Name the specific sibling skill when a row matches precisely; name the repo alone when none does. Frame it as a recommendation every time ("`mbfinotti/revops-skills` likely has a skill for that - consider installing it"), never as a dependency.
## Coverage gaps (v1)
No skill covers these. Name the gap; never promise or invent a skill. CRM/pipeline-tactical and sales-execution-tactical asks are not gaps - the sibling repos cover them:
- Creator rate benchmarking / market-rate ranges (see CONTESTED 4).
- Consumer refer-a-friend TERMS drafting (contested, no owner; see CONTESTED 2).
- Reviewing or summarizing an ALREADY-SIGNED creator contract, and UGC usage-rights negotiation as a standalone motion.
- Building the affiliate creative asset kit (banners, copy blocks, tracked links).
- Choosing an affiliate network or tracking platform.
- Affiliate program budget forecasting, and international/localization expansion of an existing program.
- A recurring affiliate-manager operating checklist.
- Intentional diversity-focused creator sourcing as a supplementary pass.
- Executing anything in a partner portal, affiliate tracking platform or creator platform - every skill here plans, audits or decides; none operates a tool.
- Producing the actual assets: partner training content, co-marketing creative, ad copy, creator content.
- Legal sign-off - the terms skill drafts, counsel approves.
- A curated source/watch list for the partnerships field (no radar skill here).
SKILL.md›
---
name: partnerships-kickoff
description: Before starting any partnerships work - and before routing to any other skill in the mbfinotti/partnerships-skills collection - run this router first. It matches the task (channel, alliance, co-sell, marketplace, affiliate, influencer, or referral) to exactly one sibling skill, says plainly when none fits, and bootstraps or resumes the project's shared partnerships-context.md artifact so the next session starts warm instead of cold. Use whenever the user opens a partnerships project, asks which partnerships skill they need, resumes partner work after a gap, runs a periodic partner, affiliate or influencer check-in, or describes a partner, creator or commission problem without naming a skill - even if they never say kickoff, routing or partnerships, and even when they name a downstream task directly. Routing and shared context only - it never does a sibling skill's work itself, and always emits the full owner/repo@skill target it routes to.
license: MIT
metadata:
author: Maya-Beth Finotti
version: "1.3.5"
---
# Partnerships Kickoff
You are the entry point and router for the 30-skill partnerships-skills collection. Route the current task to exactly one sibling skill, or say plainly that none fits. This skill routes; it never performs a sibling's job itself.
Routing is why this skill exists; everything else serves it, including making the next session start warm instead of cold.
Run it at every project start, even when the collection's skills are already used daily elsewhere - a new project is a new context. On later sessions of the same project, re-run it to resummarize and re-route, never to re-interview. Everything here works for B2B and B2C alike; the sibling scopes say where the two diverge, and your routing carries that split instead of flattening it.
## 1. Detect before asking
Every fact derivable from the environment is a question the user never has to answer. Run detection first; the interview cap only survives if it does.
1. Decide cold vs warm start from one signal only: does `partnerships-context.md` exist in the project? Present → warm. Absent → cold. Never ask the user which mode it is.
2. If you can read git history, read the recent log for stage and pace: commit frequency, what changed last, whether work stalled.
3. Inventory existing files - README, agent-instruction files, partner agreements, program docs, past briefs - so nothing already written gets re-asked.
4. If your harness exposes connectors, detect which are available - a partner or affiliate program export, an analytics source, a CRM, a contract store - and let them shape routing and routines. Describe the capability; never assume a specific product.
5. If the collection ships readable version metadata, note what changed since the last session. If it doesn't - the common case - degrade silently: never block, warn or ask about versions.
## 2. Interview - capped, tappable
On a cold start:
- Ask at most 5-7 questions, one per message.
- Offer multiple-choice options whenever possible.
- Spend questions only where detection came up empty; skip any question the file inventory or git log already answered.
1. "Which partnerships world is this?" - (a) business-partner strategy: channel, alliance, co-sell, marketplace, (b) commission-based creator/referral program operations: affiliate, influencer, refer-a-friend, (c) both. This fork splits the collection into two halves and steers every later route, so it comes first.
2. "What is the goal of this session - and is it the same as the project's goal?" Ask on both cold and warm starts; a project goal never substitutes for today's goal.
3. "Who does the program ultimately sell to?" - (a) B2B, (b) B2C, (c) both.
4. "How mature is the program?" - (a) nothing yet, (b) designing it now, (c) live and small, (d) live and scaled.
5. "Any hard constraints right now - and is there a date the result has to land by?" - (a) limited legal review capacity, (b) committed partner contracts in force, (c) payout or finance approvals required, (d) headcount limits on partner management, (e) a fixed date - payout run, campaign flight, contract renewal, board review: give the date, (f) none.
6. "Do you want a one-off win out of this session, or a compounding asset - and what is your effort ceiling?" - (a) one-off, hours only, (b) one-off, a week of work is fine, (c) compounding, a few hours every week from here, (d) compounding, and I can commit headcount, legal review, or executive sign-off.
7. "What is already decided, and what is still open?" - one line each; decided items are off the table for re-litigation.
Questions 5 and 6 order the output; they do not describe the program: the landing date, the one-off-versus-compounding answer and the effort ceiling re-rank the short-list and the routines (§ 4, § 7). Ask them here, never beside a ranking - by then the user has already committed to a path. Record all three in the artifact.
On a warm start, ask only the session-goal question. Everything else, horizon and effort ceiling included, comes from the artifact. Never re-ask them.
## 3. Route the task
Match the stated session goal against the declared scope of each skill below. Route to exactly one skill for the immediate task. Never force a match: when nothing fits, say so and name the gap instead of stretching the nearest skill.
Names in the tables are shorthand for `mbfinotti/partnerships-skills@<name>`; always emit the full ID when routing.
These tables are deliberately unranked, and must stay that way. Scope is a match test, not a ratio: a task either falls inside a skill's declared scope or it does not, and ordering the rows would invent a preference between skills that never compete for the same task. The ranking belongs one step later, in the short-list (§ 4), where several skills genuinely do compete for the same session.
**Macro - channel and alliance strategy:**
| Skill | Route here when the task is… |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| `partner-ecosystem` | Map today's ecosystem - partner-type inventory, coverage gaps, conflict zones; "partner landscape" |
| `partner-ecosystem-expansion` | Which partner categories to add next, in what sequence - staged roadmap, kill criteria |
| `partner-channel-program` | Design a program's structure from scratch - readiness gate, motions, tier count, economics envelope |
| `partner-tiering` | Design or redesign tiers in an existing program - criteria, benefits, promotion/demotion, base migration |
| `co-selling-strategy` | Operating model for direct and partner sellers on shared deals - registration, credit split, rules of engagement |
| `partner-channel-conflict` | Rules adjudicating contested deals - carve-outs, escalation ladders, D2C vs retail, MAP |
| `partner-enablement` | Training, content and certification roadmap making partners self-sufficient sellers |
| `alliance-prioritization` | Rank named candidate alliances by value, effort, risk - scorecard, go/no-go memo |
| `partner-economics` | One partner relationship's unit economics - P&L, margin stack, ramp, sign/scale/exit |
| `partner-marketplace-strategy` | Which third-party marketplaces to list on, investment depth, ROI, delist triggers |
| `joint-gtm-planning` | One joint GTM motion with one chosen partner - value prop, co-marketing, MDF, lead sharing |
| `partner-performance` | Per-partner scorecards, QBR structure, underperformance ladder |
**Affiliate operations:**
| Skill | Route here when the task is… |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `affiliate-program-terms` | Draft the program agreement - clause set, prohibited tactics, clawback, termination, jurisdiction overlays |
| `affiliate-commission-structure` | Commission rates and payout terms - rate model, tiers, recurring duration, cookie window |
| `affiliate-recruitment-outreach` | Outreach copy and sequence recruiting affiliates at list scale from a prospect list |
| `affiliate-onboarding-sequence` | Carry a newly approved affiliate from approval to first tracked conversion |
| `affiliate-fraud-detection` | Detection rules for fraudulent professional-affiliate activity - cookie stuffing, self-referral rings |
| `affiliate-payout-audit` | Audit a payout run before money is disbursed - recompute rates, cutoffs, recommended holds |
| `affiliate-performance-dashboard` | Dashboard spec - metric formulas, views per audience, alert thresholds |
| `affiliate-disclosure-compliance` | Check one piece of content against disclosure regulations - pass/fail, per-format fixes |
**Influencer / creator operations:**
| Skill | Route here when the task is… |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `influencer-discovery-brief` | Creator sourcing criteria and the discovery brief used to shortlist before any contact |
| `influencer-outreach` | Personalized first touch and follow-up for one vetted creator - stops at a positive reply |
| `influencer-negotiation-playbook` | Negotiate creator terms from first positive reply to signed contract - concession ladder, walk-aways |
| `influencer-campaign-brief` | Creative brief for an already-signed creator - specs, guardrails, bounded review rounds |
| `influencer-measurement-framework` | Pre-launch measurement plan for one campaign - KPIs, attribution per KPI, blind spots |
**Referral operations:**
| Skill | Route here when the task is… |
| --------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `referral-incentive-design` | Reward structure of a refer-a-friend program - who is rewarded, type, size vs LTV/CAC, payout timing |
| `referral-abuse-guardrails` | Guardrails stopping end customers gaming refer-a-friend - caps, velocity limits, holds, enforcement ladder |
**Meta and personal practice:**
| Skill | Route here when the task is… |
| ---------------------- | ----------------------------------------------------------------------------------------------------------- |
| `partnerships-career` | Candidate side - which partnerships sub-discipline to target, breaking in, interview prep, offer evaluation |
| `partnerships-hiring` | Employer side - job posting and scorecard, interview loop, sourcing, compensation stance |
| `partnerships-kickoff` | This skill: project start, periodic check-in, "which skill do I need", re-routing |
Nine clusters collide hard on keywords - four of them contested and unresolved in the collection itself. Disambiguate strictly from each skill's declared scope, never from a guess about what a skill "probably" covers; on a contested boundary, say so instead of forcing a match. Read `references/skill-routing.md` before routing any task that could plausibly match two skills.
Name the gap explicitly when the task needs something no skill covers. Say "the collection has no skill for this"; never promise a skill exists or invent one. `references/skill-routing.md` § Coverage gaps has the full list; v1 leaves:
- **Uncovered tasks**: creator rate benchmarking, consumer refer-a-friend terms, signed-contract review, the asset kit, platform selection, budget forecasting, international expansion.
- **Uncovered classes**: operating any platform, producing assets or content, legal sign-off.
Some tasks that land here aren't a gap at all: they belong to a sibling repo instead, even when a partner-sourced deal triggered the question.
- **CRM/pipeline-tactical**: lead routing, lead scoring, pipeline hygiene, CRM data governance, forecasting.
- **Sales-execution-tactical**: cold calling, discovery, objection handling, deal coaching.
Recommend the same owner's `mbfinotti/revops-skills` or `mbfinotti/sales-skills` instead of stretching a partnerships skill onto it: a recommendation, never a dependency. `references/skill-routing.md` § Sibling-repo recommendations carries the skill-to-skill mapping.
## 4. Output shape
Deliver the routing result in this shape, every time:
1. **State summary** (warm start only) - exactly 5 lines from the artifact: partner motion(s) and B2B/B2C, program maturity and partner/creator counts, commission or margin model and source of truth, in-flight work, active constraint.
2. **Route** - the one skill for the immediate task; or a sibling-repo recommendation naming the specific skill when the task is `mbfinotti/revops-skills` or `mbfinotti/sales-skills` territory (see § 3); or "no skill fits", plus the named gap.
3. **Short-list** - 5 to 8 skills relevant to this project right now, ordered by value returned per unit of effort, highest ratio first. Give each entry one line naming both sides: the bottleneck it attacks, and what the session costs. Never order by cheapness and never by the routing tables' row order, and delete - never demote - whatever the interview ruled out; see "Ordering the short-list" below.
4. **Chain** - when the task genuinely decomposes into an ordered sequence (e.g. `affiliate-commission-structure` → `affiliate-program-terms` → `affiliate-recruitment-outreach`), list it in execution order, one line per link on what it hands to the next. Chain order is dependency order, not efficiency order - a later link cannot run before its earlier one, so ranking a chain adds nothing. Omit the chain when there isn't one - never fabricate a sequence.
5. **Not now** - skills that will matter later, each with its explicit unblocking condition (e.g. "`affiliate-payout-audit` - once the first commission run is queued for disbursement").
6. **Gap** - anything today's task needs that no skill covers, stated as a gap.
### Ordering the short-list
The user's question at that moment is never "which of these exists" but "which one do I run first, and is it worth the session". Only a ratio answers that. Default class order, highest value/effort ratio first:
1. **Economics and rate integrity** - `partner-economics`, `affiliate-commission-structure`, `referral-incentive-design`. Buys the number every later commitment is priced off: what a partner, affiliate or referrer can be paid before the relationship stops paying for itself. Costs one session over margin data already in hand and commits nothing until published - while a rate published wrong is repriced across a whole signed base.
2. **Money integrity** - `affiliate-payout-audit`, `affiliate-fraud-detection`, `referral-abuse-guardrails`. Buys back commission already leaving on conversions that shouldn't earn it, and only inside the validation window. Costs one pass over an export finance produces anyway. Worth nothing before money moves.
3. **Rules and exposure** - `affiliate-program-terms`, `partner-channel-conflict`, `co-selling-strategy`, `affiliate-disclosure-compliance`. Buys a ceiling on how badly a contested deal, a bad-faith partner or an undisclosed post can go. Writing is a session; counsel turnaround and re-consent across a signed base make it a week or more. `affiliate-disclosure-compliance` alone recurs per piece of content - near-zero each time, and the only rung whose omission is enforceable against you.
4. **Selection and structure** - `partner-ecosystem`, `partner-ecosystem-expansion`, `alliance-prioritization`, `partner-marketplace-strategy`, `partner-channel-program`, `partner-tiering`. Buys where the effort goes at all: which partner types, which named candidates, which marketplaces, which tiers. Costs a session plus stakeholder sign-off - cheap to write, expensive to walk back once partners have been recruited against it.
5. **Recruitment, activation and enablement** - `affiliate-recruitment-outreach`, `affiliate-onboarding-sequence`, `influencer-discovery-brief`, `influencer-outreach`, `influencer-negotiation-playbook`, `influencer-campaign-brief`, `partner-enablement`, `joint-gtm-planning`. Buys the largest outcome in the collection - partners and creators actually producing - and never finishes: one partner and one campaign at a time, every cycle. A standing job, not a fix.
6. **Measurement and review** - `affiliate-performance-dashboard`, `partner-performance`, `influencer-measurement-framework`. Buys the read on whether any of the above worked. Near-zero to a session each, and near-zero to learn from until a program exists under it.
The axes disagree, which is exactly where the choice is hard:
- efficiency: `economics > money integrity > rules & exposure > selection & structure > recruitment & activation > measurement & review`
- value: `recruitment & activation > selection & structure > economics > money integrity > rules & exposure > measurement & review`
- effort: `recruitment & activation > rules & exposure > selection & structure > economics == money integrity > measurement & review`
- compliance cost: `rules & exposure > money integrity > recruitment & activation > every other class (none)`
- Rules and exposure: terms and disclosure sit on FTC, UK CAP, EU UCPD/DSA and P2B exposure, need counsel sign-off, and a published disclosure failure cannot be un-published.
- Money integrity: payout files carry partner identity and tax status, and a withheld payment is a contract question.
- Recruitment and activation: list-scale outreach needs a lawful basis, and a signed creator deal carries usage rights outliving the campaign.
- Every other class: selection, economics and measurement produce internal documents and trigger nothing.
Economics and money integrity tie on effort because each is one analyst session over numbers finance already produces - the margin model and the payout recompute read the same billing export, and neither needs a signature from outside the team.
Recruitment leads on value and still loses the top slot, because its outcome arrives one partner at a time and never stops arriving. High value plus high effort loses every round to a ratio, so this order starves two things by construction, and both need a condition that promotes them anyway.
- **Class 5, activation.** The only class producing partner-sourced revenue, so a ratio-first collection under-invests in exactly it - the documented pattern where programs over-serve recruitment volume and starve `partner-enablement` and `affiliate-onboarding-sequence`. Promote it to rung 1 outright when partners are signed and not producing: an activation gap is untouched by every rung above it.
- **Class 4's heavyweight builds** - `partner-channel-program`, `partner-ecosystem-expansion`, `partner-marketplace-strategy`. They pay over a quarter, so a deadline demotes them, an effort ceiling demotes them, and the ratio demotes them - while being exactly what a program needs when it is being set up rather than tuned. Promote them to rung 1 whenever maturity is "nothing yet" or "designing it now" and no landing date falls inside two quarters: there is nothing above them yet for the higher rungs to protect.
Default: open the short-list at the highest class the interview left unresolved, and never below economics while the commission or margin model is unconfirmed. Move down a class only once the class above is in place.
The ordering is a default, not a law - it shifts with the program and with who executes it. Re-rank against what the interview and detection just told you, and say which answer moved which class.
Where an answer rules a class or a skill out - a motion the program does not run, a channel with no partners in it, a decision already closed - delete it from the short-list and name it as deleted. Never rank it last. A ruled-out skill parked at the bottom reads as merely deprioritized and silently reappears as scope in the next session.
- The world fork (Q1) deletes the other half's classes from the short-list outright - never rank skills for a motion the program does not run.
- "Nothing yet" or "designing it now" (Q4) empties classes 2 and 6 - no money moves and nothing has been measured - and promotes selection & structure to the top, economics right behind it.
- "Live and scaled" (Q4) promotes money integrity above economics: at scale the leak is worth more per session than the rate is.
- Committed partner contracts in force (Q5) turn `affiliate-commission-structure` and `partner-tiering` into a renegotiation with a whole base rather than a decision - demote both a class.
- Limited legal review capacity (Q5) lengthens class 3 without changing what it buys, except `affiliate-disclosure-compliance`, which needs no counsel and holds its place.
- A fixed date inside six weeks (Q5) promotes classes 1, 2 and 6 and demotes anything paying over a quarter - `partner-enablement`, `partner-channel-program`, `partner-ecosystem-expansion`, `partner-marketplace-strategy` - to "not now" with the date as its unblocking condition.
- "One-off, hours only" (Q6) cuts the short-list to two entries from classes 1-2; "compounding, headcount available" (Q6) promotes classes 4 and 5 above their default place.
- A decided item (Q7) removes its skill from the short-list outright - do not rank what is off the table.
- Detection moves classes too:
- A tracking export already landing makes class 2 a same-day job.
- Concentration in the artifact (top three partners past half of program revenue) pulls `partner-performance` and `partner-economics` up out of their classes.
- A git log showing months of stall points at the activation gap, not at more recruitment.
## 5. Context artifact
Create or update `partnerships-context.md` at the project root - one versioned file, committed with the project when the project lives in git. It is the single source of truth that makes the next start warm, and the horizon and effort ceiling it carries are what let a warm start re-rank without re-asking Q5 and Q6. Take the field list from `references/context-artifact.md`, which also holds the template, a worked example, and a negative example.
- On warm start: read it, do not rebuild it. Produce the 5-line state summary, append a session-log line, and patch only fields that changed.
- Optionally patch the project's agent-instruction file with the project's invariants (motions, commission model, source of truth, hard constraints) so every future session inherits them without loading this skill.
- Scaffold only what this session needs - premature structure hard-codes decisions the project hasn't made yet, and an empty ceremony section goes stale and erodes trust in the artifact.
Update the artifact before the session ends, every session - an unwritten session is a cold start next time.
## 6. Memory
If your harness has persistent memory, derive memory entries from the context artifact - never the reverse. The artifact stays the source of truth because memory is invisible and unreviewable to teammates; a memory-first flow forks the project state per user.
- Persist interview responses to memory after the interview completes and before § 4 Output shape: write the captured answers into the context artifact first, then derive the memory entry from the artifact. Never write memory straight from the answer, and never skip the artifact because the answer felt obvious.
- Store memory in exactly one of three places: local to the user's environment, a team knowledge base, or a `memories/` directory in a git repository. Index it, one line per entry.
- On warm start, diff memory against the artifact. When they diverge, propose reconciliation - artifact wins by default; ask before overwriting either.
- Never put into memory: partner or creator PII and contact lists, negotiated rates and margins, unsigned or confidential contract terms, creator fees, payout files and tax details, unannounced partnerships. State this exclusion when you first write memory.
- When memory lives in git, never commit it silently. Show the diff and get approval first, every time.
## 7. Routines
If your harness supports scheduled routines, propose 2 to 4 - always as a dry-run shown to the user before anything is created, each with an explicit output channel it is not ready to exist without. A routine's cost is not its setup but its attention per firing multiplied by how often it fires; its value is the decision it puts in front of someone while that decision is still open. Rank the candidates on that ratio, highest first, and propose from the top down:
1. **Pre-disbursement payout-run review** → `affiliate-payout-audit`. Fires once per payout run, costs about an hour over an export finance already produces, and is the last gate between a wrong line and a disbursement. Anchor it before the run, never after - a wrong payment comes back by clawback, if at all.
2. **Fraud or abuse signal sweep** → `affiliate-fraud-detection` (professional affiliates) or `referral-abuse-guardrails` (refer-a-friend). Near-zero per firing when aligned to the validation window, and worth the whole commission it holds. Fired after the window closes it buys nothing at all.
3. **Monthly or quarterly re-invocation of this kickoff.** Near-zero, and it keeps the artifact and the routing current - which is what stops every other routine firing at a partner, campaign or motion that no longer exists. Match its cadence to the project's pace from the git log.
4. **Contract renewal and auto-renewal check.** Near-zero - a date lookup against the artifact's constraints - firing a handful of times a year, and it buys the only window in which terms can be renegotiated at all. Exists only where committed contracts do.
5. **Partner scorecard pass before each QBR** → `partner-performance`. Costs a real per-partner data pull every cycle, and its verdict converts into an outcome only where someone will actually run the underperformance ladder. Install it where partner management has the capacity to act.
6. **Program-ROI read against the dashboard spec** → `affiliate-performance-dashboard`. Monthly or quarterly, costs an assembly pass, and buys a read rather than a decision unless it is anchored before the rate or budget decision it feeds.
- efficiency: `payout-run review > abuse sweep > kickoff re-invocation > renewal check > scorecard pass > ROI read`
- value: `payout-run review > scorecard pass > abuse sweep > renewal check > ROI read > kickoff re-invocation`
- effort: `scorecard pass > ROI read > payout-run review > abuse sweep == renewal check == kickoff re-invocation`
- compliance cost: `payout-run review > abuse sweep > every other routine (none)`
- Payout-run review: the report carries partner identity, amounts and tax status, so its channel must be one the finance data policy already covers.
- Abuse sweep: it names a partner as suspected, an accusation that has to survive being read by that partner's manager.
- Every other routine: emits numbers partners agreed to be measured on.
The three tied on effort each cost one lookup against a file that already exists - the validation-window query, the renewal date in the artifact, the artifact itself - and need nobody else's time. The kickoff re-invocation is last on value and still ranks third: the clearest proof that cheap and efficient are different orderings. The scorecard pass is the mirror case, second on value and fifth on efficiency, because it costs a real pull every cycle.
Default: rungs 1-3 wherever money is moving. Add rung 4 only where committed contracts exist, rung 5 only where partner management can act on a verdict. Never exceed 4 - the cap is what protects the routines that matter from the ones that fire into the void.
The ranking is a default, not a law. Re-rank it against the interview, and delete outright - naming each deletion - every routine an answer rules out, rather than parking it at the bottom where it silently reappears as scope:
- "Nothing yet" or "designing it now" (Q4) leaves only the kickoff re-invocation standing.
- Payout or finance approval gates (Q5) promote the payout-run review to first even on a small program, since the approver's gate depends on it.
- No committed contracts (Q5) deletes the renewal check outright rather than parking it at the bottom.
- Headcount limits (Q5) delete the scorecard pass, because a verdict nobody can act on is noise.
- A live campaign's flight dates (Q5) add a flight-scoped routine, removed when the flight ends.
- "One-off, hours only" (Q6) means one routine, not four.
- A tracking platform already emailing its own fraud alert makes rung 2 a duplicate: demote it rather than send the same signal twice.
Each rung above states its own anchor; derive every trigger from a date in the artifact rather than a fixed calendar date. List and clean up obsolete routines left over from a previous quarter or program before adding new ones.
If the harness has no scheduled routines, fall back to one recurring calendar reminder ("Partnerships check-in - re-run the partnerships kickoff") and stop there. See `references/routines.md` for the dry-run format, anchoring mechanics, and cleanup checklist.
## 8. Invocation examples
- "Start a new partnerships project - we want resellers for our SaaS."
- "Which partnerships skill do I need? Our affiliates keep gaming payouts."
- "Run my partnerships check-in."
- "Where do I start? We've never worked with influencers before."
## 9. Failure modes
- **Forcing a match.** Stretching the nearest skill onto a task it doesn't cover wastes a session and hides the gap. Say "none fits" and name the gap.
- **Force-fitting CRM or sales-execution tasks.** Lead routing, pipeline hygiene, cold calling, objection handling belong to `mbfinotti/revops-skills` or `mbfinotti/sales-skills`. Recommend the sibling repo instead.
- **Routing from a guessed scope.** Route only from the declared scopes in `references/skill-routing.md`; a plausible-sounding guess misroutes confidently.
- **Bouncing the user around a contested boundary.** Four boundaries here are genuinely unresolved. Name the contest and point at the collection's review backlog instead of shuttling the user between two skills that each disclaim the task.
- **A flat short-list or a ranked table.** An unranked short-list gets picked by taste or by row order - rank it by value per unit of effort and say the order out loud. The inverse fails too: never rank the routing tables or a chain, where a match test and a dependency order already decide.
- **Ranking by cheapness.** The cheapest option is rarely the highest-ratio one; leading with it buries the session that would have mattered.
- **Stale routing table.** Update this skill - tables, `references/skill-routing.md`, boundary pairs, chains, gap list, and the class ladder in § 4 - whenever the collection changes: a skill added, renamed, removed or re-scoped. A stale router sends users to skills that no longer exist, worse than no router at all.
## 10. Pass bar
Before ending the session, check every item. If any fails, fix it and re-check - do not close the session on a failing bar.
1. Every recommended skill's declared scope actually matches the stated task - re-read its description to confirm.
2. Zero routes to a name outside the 28 skills in the tables above.
3. Interview stayed within its cap: at most 7 questions on cold start, only the session-goal question on warm start.
4. `partnerships-context.md` was written or updated, including a session-log line, before the session ended.
5. Every proposed routine was shown as a dry-run and has an explicit output channel.
6. The short-list and the routines were ranked by value per unit of effort, highest first, each entry naming its bottleneck and its cost, with the re-rank against the interview answers stated out loud.
## References
- `references/skill-routing.md` - per-skill route/do-not-route signals, boundary disambiguations, chains, coverage gaps, sibling-repo mapping. Read before routing any ambiguous task.
- `references/context_artifact.md` - template, worked example, negative example, update rules.
- `references/routines.md` - dry-run format, anchoring mechanics, event triggers, cleanup checklist.