Skip to main content
ClaudeWave
Skill458 repo starsupdated 2mo ago

self-improver

Self-Improver analyzes completed affiliate campaigns by comparing actual results against expectations and applying diagnostic frameworks like offer-market fit and funnel leak analysis to identify root causes of underperformance. Use this skill after running a campaign when you need structured retrospective analysis to diagnose why conversions fell short and generate prioritized improvements for your next iteration.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/Affitor/affiliate-skills /tmp/self-improver && cp -r /tmp/self-improver/skills/meta/self-improver ~/.claude/skills/self-improver
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Self-Improver

Review affiliate campaign results, diagnose what worked and what didn't, and generate a prioritized improvement plan. Uses affiliate-specific diagnostic frameworks (offer-market fit, traffic-content match, funnel leak analysis) to identify root causes and actionable fixes.

## Stage

S8: Meta — Most affiliates repeat the same mistakes because they never do structured retrospectives. Self-Improver closes the feedback loop: it takes your results, compares them to expectations, diagnoses gaps using affiliate-specific frameworks, and produces concrete actions that feed back into S1-S7 for the next iteration.

## When to Use

- User has run a campaign and wants to understand results
- User's affiliate content isn't converting and wants to diagnose why
- User wants to compare actual vs expected results
- User says "what went wrong?", "why no conversions?", "how to improve?"
- User wants a structured retrospective on their affiliate efforts
- Chaining from S6.3 (performance-report) — analyze the data and plan improvements

## Input Schema

```yaml
campaign:
  description: string          # REQUIRED — what was done (e.g., "Published 3 blog reviews
                               # of AI video tools, shared on LinkedIn and Reddit")
  duration: string             # OPTIONAL — how long (e.g., "2 weeks", "1 month")
  skills_used: string[]        # OPTIONAL — which Affitor skills were used
  channels: string[]           # OPTIONAL — where content was distributed

results:
  clicks: number               # OPTIONAL — total clicks on affiliate links
  conversions: number          # OPTIONAL — total signups/purchases
  revenue: number              # OPTIONAL — total commission earned
  traffic: number              # OPTIONAL — total page views / impressions
  feedback: string             # OPTIONAL — qualitative feedback received

expectations:
  expected_clicks: number      # OPTIONAL — what was expected
  expected_conversions: number # OPTIONAL
  expected_revenue: number     # OPTIONAL
  benchmark: string            # OPTIONAL — "industry average" or specific number

context:
  niche: string                # OPTIONAL — product category
  experience: string           # OPTIONAL — "first campaign" | "experienced"
  budget: string               # OPTIONAL — money spent (if any)
```

**Chaining context**: If S6.3 (performance-report) was run in the same conversation, pull KPIs directly. If S1-S5 outputs exist in context, reference them for gap analysis.

## Workflow

### Step 1: Establish Baseline

Collect campaign description and results. If numbers are missing, work with whatever is available. State assumptions clearly: "You didn't share click data, so I'll focus on qualitative analysis."

### Step 2: Compare Results vs Expectations

Calculate gaps:
- **Traffic gap**: Expected vs actual impressions/visits
- **Click gap**: Expected vs actual CTR
- **Conversion gap**: Expected vs actual conversion rate
- **Revenue gap**: Expected vs actual earnings

Use industry benchmarks if user doesn't have expectations:
- Affiliate blog CTR: 2-5%
- Affiliate conversion rate: 1-3%
- Social post engagement: 1-3% of impressions
- Email click rate: 2-5%

### Step 3: Diagnose Root Causes

Apply affiliate-specific diagnostic frameworks:

**Offer-Market Fit**: Is the product right for the audience?
- Wrong audience for the product
- Product too expensive for the audience's budget
- Product solves a problem the audience doesn't have

**Traffic-Content Match**: Is the traffic source aligned with the content?
- Blog content promoted on TikTok (format mismatch)
- Reddit post that reads like an ad (platform mismatch)
- Cold traffic sent to a hard sell (temperature mismatch)

**Funnel Leaks**: Where do people drop off?
- High impressions but low clicks → weak headline/hook
- High clicks but low conversions → landing page or product issue
- High conversions but low revenue → wrong product (low commission)

### Step 4: Prioritize Improvements

Rank each improvement by:
- **Impact**: How much would this change move the needle? (1-5)
- **Effort**: How hard is it to implement? (1-5)
- **Priority**: Impact / Effort ratio

### Step 5: Create Iteration Plan

For each top improvement, specify:
- What to change
- Which Affitor skill to re-run
- Exact prompt modification for better results
- Expected improvement (realistic estimate)

### Step 6: Self-Validation

Before presenting output, verify:

- [ ] Gap calculations accurate: expected minus actual
- [ ] Root causes are evidence-based, not speculation
- [ ] Impact (1-5) and effort (1-5) scores are justified with reasoning
- [ ] Next steps reference specific Affitor skills by name
- [ ] Iteration plan has concrete timeline and measurable success metric

If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.

## Output Schema

```yaml
output_schema_version: "1.0.0"  # Semver — bump major on breaking changes
retrospective:
  campaign: string
  period: string
  overall_assessment: string   # "strong" | "average" | "needs_work" | "failing"

gaps:
  - metric: string             # e.g., "conversion_rate"
    expected: string
    actual: string
    gap: string                # e.g., "-2.5%"

diagnosis:
  root_causes:
    - cause: string            # e.g., "Traffic-content mismatch"
      evidence: string         # what indicates this
      severity: string         # "high" | "medium" | "low"

improvements:
  - action: string             # what to do
    skill: string              # which Affitor skill to use
    prompt: string             # exact prompt for the skill
    impact: number             # 1-5
    effort: number             # 1-5
    priority: number           # impact / effort

iteration_plan:
  next_steps: string[]         # ordered list of actions
  timeline: string             # e.g., "1 week"
  success_metric: string       # how to measure improvement
```

## Output Format

1. **Campaign Summary**