Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage and compare multiple affiliate programs as a portfolio. Triggers on: "manage my affiliate programs", "compare my programs", "portfolio overview", "which program should I focus on", "diversify my affiliate income", "program switching", "affiliate portfolio", "program comparison", "revenue allocation", "which programs to drop", "add new programs", "affiliate program strategy".
.claude/skills/affitor-multi-program-manager/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 157% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 150% | 0% |
Manage and compare multiple affiliate programs as a portfolio — overview, performance comparison, diversification strategy, program switching decisions, and revenue allocation. Output is a portfolio dashboard with strategic recommendations and a weekly action plan.
S7: Automation — Most affiliates either promote too few programs (concentration risk) or too many (effort dilution). This skill applies portfolio thinking to affiliate marketing: analyze your programs like investments, identify which to double down on, maintain, or drop, and allocate your limited time for maximum ROI.
yamlprograms: - name: string # REQUIRED — program name affiliate_url: string # OPTIONAL — affiliate link reward_value: string # OPTIONAL — commission (e.g., "30% recurring") reward_type: string # OPTIONAL — "cps_recurring" | "cps_one_time" | "cpl" | "cpc" monthly_revenue: number # OPTIONAL — avg monthly revenue ($) monthly_clicks: number # OPTIONAL — avg monthly clicks niche: string # OPTIONAL — product category status: string # OPTIONAL — "active" | "paused" | "new" | "considering" goal: string # OPTIONAL — "maximize_revenue" | "diversify" # | "reduce_risk" | "find_gaps" # Default: "maximize_revenue" budget_hours: number # OPTIONAL — weekly hours available for content # Default: 10
Chaining context: If S1 program research or S6.3 performance data exists in conversation, pull program details and metrics automatically.
Compile all programs into a dashboard:
For each program with data:
Concentration Risk:
Niche Overlap:
Revenue Stability:
For each program, assign an action:
Based on budget_hours, allocate weekly time:
Provide specific weekly tasks tied to Affitor skills.
Before presenting output, verify:
If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.
yamloutput_schema_version: "1.0.0" # Semver — bump major on breaking changes portfolio: total_programs: number active_programs: number total_monthly_revenue: number concentration_risk: string # "high" | "moderate" | "low" niche_diversification: string # "good" | "overlapping" | "single_niche" revenue_stability: string # "stable" | "moderate" | "volatile" programs: - name: string niche: string reward_type: string monthly_revenue: number epc: number revenue_share: number action: string # "double_down" | "maintain" | "optimize" | "phase_out" reason: string recommendations: - action: string program: string skill: string # which Affitor skill to use task: string # specific task priority: number # 1 = highest weekly_plan: total_hours: number allocation: - program: string hours: number tasks: string[]
User: "I promote HeyGen ($450/mo), Semrush ($320/mo), Notion ($125/mo), Canva ($80/mo). Which should I focus on?" Action: HeyGen is the star (46% revenue, likely highest EPC). Recommend: Double down on HeyGen (more blog content, S7 content-repurposer). Maintain Semrush. Optimize Notion (high conversion rate potential). Evaluate Canva (low revenue, is it worth the effort?). Weekly plan: 5h HeyGen, 2h Semrush, 2h Notion, 1h research.
User: "I make $2K/month from 3 SaaS tools. How do I reduce risk?" Action: All income from one niche (SaaS) = moderate risk. Recommend: Add 1-2 programs in adjacent niches (e.g., online courses, hosting). Check commission types — if all one-time, recommend adding recurring programs. Use S1 to research programs in new niches.
User: "Should I drop Canva ($80/mo, 500 clicks) and replace it with Jasper?" Action: Canva EPC = $0.16 (low). Calculate opportunity cost: 500 clicks redirected to a $0.50+ EPC program = $250/mo potential. Research Jasper commission (likely $100+ per sale). Recommend: Yes, switch. Use S1 to evaluate Jasper, then S3 for a comparison blog post.
shared/references/affiliate-glossary.md — Portfolio and commission terminology. Referenced in Step 2.shared/references/flywheel-connections.md — master flywheel connection mapcommission-calculator (S1) — managed programs for portfolio calculationfunnel-planner (S8) — portfolio data for funnel planningaffiliate-program-search (S1) — new programs to add to portfolioconversion-tracker (S6) — performance data per programperformance-report (S6) — portfolio performance trendsperformance-report (S6) reveals underperforming programs → recommend swaps or investment reallocationyamlchain_metadata: skill_slug: "multi-program-manager" stage: "automation" timestamp: string suggested_next: - "commission-calculator" - "performance-report" - "affiliate-program-search"
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-13 | fail→pass | 12,588 | 10,077 | -20% | 1 | 1 | 0% | 2,117 | 4,189 | +98% | 0 | 0 | — |
case-05 | fail→fail | 14,826 | 10,368 | -30% | 1 | 1 | 0% | 2,569 | 4,082 | +59% | 0 | 0 | — |
case-06 | fail→fail | 15,452 | 12,724 | -18% | 1 | 1 | 0% | 2,725 | 4,391 | +61% | 0 | 0 | — |
case-12 | fail→pass | 13,246 | 9,661 | -27% | 1 | 1 | 0% | 2,335 | 4,043 | +73% | 0 | 0 | — |
case-04 | pass→pass | 16,253 | 9,945 | -39% | 1 | 1 | 0% | 2,655 | 3,911 | +47% | 0 | 0 | — |
case-01 | fail→fail | 20,106 | 17,728 | -12% | 1 | 1 | 0% | 4,107 | 5,822 | +42% | 0 | 0 | — |
case-02 | fail→fail | 17,607 | 17,199 | -2% | 1 | 1 | 0% | 3,486 | 5,548 | +59% | 0 | 0 | — |
case-03 | fail→fail | 20,791 | 17,169 | -17% | 1 | 1 | 0% | 4,198 | 5,785 | +38% | 0 | 0 | — |
case-07 | fail→pass | 9,688 | 12,860 | +33% | 1 | 1 | 0% | 1,836 | 4,717 | +157% | 0 | 0 | — |
case-08 | fail→fail | 13,288 | 12,366 | -7% | 1 | 1 | 0% | 2,266 | 4,671 | +106% | 0 | 0 | — |
case-09 | fail→pass | 15,751 | 11,431 | -27% | 1 | 1 | 0% | 2,502 | 4,156 | +66% | 0 | 0 | — |
case-10 | pass→pass | 15,046 | 12,562 | -17% | 1 | 1 | 0% | 2,485 | 4,449 | +79% | 0 | 0 | — |
case-11 | pass→pass | 11,763 | 12,396 | +5% | 1 | 1 | 0% | 1,997 | 4,335 | +117% | 0 | 0 | — |
case-14 | pass→pass | 7,476 | 7,760 | +4% | 1 | 1 | 0% | 1,332 | 3,639 | +173% | 0 | 0 | — |
case-15 | fail→pass | 10,537 | 12,582 | +19% | 1 | 1 | 0% | 1,760 | 4,396 | +150% | 0 | 0 | — |
case-16 | fail→fail | 13,074 | 13,793 | +5% | 1 | 1 | 0% | 2,000 | 4,489 | +124% | 0 | 0 | — |
case-17 | fail→pass | 13,820 | 8,789 | -36% | 1 | 1 | 0% | 2,276 | 3,675 | +61% | 0 | 0 | — |
case-18 | fail→pass | 7,391 | 11,102 | +50% | 1 | 1 | 0% | 1,344 | 4,323 | +222% | 0 | 0 | — |
case-19 | pass→pass | 4,527 | 9,344 | +106% | 1 | 1 | 0% | 928 | 4,188 | +351% | 0 | 0 | — |
case-20 | fail→fail | 16,620 | 17,871 | +8% | 1 | 1 | 0% | 2,949 | 4,904 | +66% | 0 | 0 | — |
case-21 | fail→fail | 17,455 | 19,059 | +9% | 1 | 1 | 0% | 3,446 | 6,097 | +77% | 0 | 0 | — |
case-22 | fail→fail | 9,714 | 9,882 | +2% | 1 | 1 | 0% | 1,450 | 3,728 | +157% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +32 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.