Systems Lab

Agent skill

sequence-analyzer

Analyzes email sequence performance metrics.

dormantSelf-containedInstructions only1,506 words

Filed under Outbound email.

From ekatasingh1107/b2b-gtm-skills · 99 skills · 2 · pushed 2026-04-11

What it does when it runs

Analyzes email sequence performance metrics. Evaluates open rates, click rates, reply rates, and conversion by step. Identifies drop-off points, benchmarks against industry averages, and recommends optimizations.

Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about sequence-analyzer

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/ekatasingh1107/b2b-gtm-skills.git /tmp/b2b-gtm-skills
git -C /tmp/b2b-gtm-skills sparse-checkout set "skills/composites/sequence-analyzer"
mkdir -p ~/.claude/skills/sequence-analyzer
cp -R "/tmp/b2b-gtm-skills/skills/composites/sequence-analyzer/." ~/.claude/skills/sequence-analyzer/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from ekatasingh1107/b2b-gtm-skills/blob/eae8dd0bb98da1c8e84abd297066a87015dd860f/skills/composites/sequence-analyzer/SKILL.md, which is licensed MIT (repository). 1,506 words, 27 headings.

Sequence Analyzer

Evaluates the performance of email outreach and nurture sequences. Ingests per-email metrics (opens, clicks, replies, conversions, unsubscribes), identifies drop-off points and underperforming steps, benchmarks against industry averages for B2B services, and outputs actionable optimization recommendations.

Prerequisites

  • agency.config.json populated (sequences, benchmarks)
  • Sequence performance data: per-email metrics for at least one complete sequence run
  • Data source: CRM export, email tool analytics, or manual input
  • Optional: previous analyzer reports for trend comparison

Capabilities Used

  1. crm-writer -- pull sequence engagement data from CRM
  2. reply-analyzer -- analyze reply quality and sentiment
  3. ab-test-analyzer -- evaluate A/B test results within sequences
  4. email-copywriter -- rewrite underperforming emails

Phase 0: Intake

Read agency.config.json:

  • sequences[] -- defined sequences with expected benchmarks
  • outreach.daily_caps -- volume context
  • benchmarks -- agency-specific benchmark targets if defined:
    {
      "benchmarks": {
        "cold_outreach": {
          "open_rate": 55,
          "click_rate": 5,
          "reply_rate": 8,
          "positive_reply_rate": 3,
          "meeting_rate": 2,
          "unsubscribe_rate": 0.5
        },
        "nurture": {
          "open_rate": 40,
          "click_rate": 4,
          "reply_rate": 5,
          "conversion_rate": 12,
          "unsubscribe_rate": 0.3
        }
      }
    }
    

Accept parameters:

  • sequence_name -- (required) name of the sequence to analyze
  • data_source -- crm | csv | manual. Default: crm
  • date_range -- start and end dates for analysis period
  • comparison_period -- previous period for trend analysis. Default: previous_equivalent
  • include_rewrites -- boolean, generate improved copy for underperformers. Default: true
  • granularity -- per_email | per_step | aggregate. Default: per_email

Phase 1: Data Collection

From CRM

Query CRM for sequence performance data:

For each email in the sequence:
  - Sent count
  - Delivered count (sent - bounced)
  - Open count (unique opens)
  - Click count (unique clicks)
  - Reply count (unique replies)
  - Positive reply count (interested / meeting booked)
  - Negative reply count (not interested / unsubscribe request)
  - Neutral reply count (OOO, wrong person, info request)
  - Unsubscribe count
  - Bounce count (hard + soft)
  - Conversion count (meeting booked / demo scheduled / proposal requested)

From CSV

Accept a CSV with columns:

step, subject, sent, delivered, opened, clicked, replied, positive_replies, negative_replies, unsubscribed, bounced, converted

Manual Input

Prompt for per-step data:

For sequence "[name]", provide metrics for each step:
Step 1: [subject line]
  Sent: ___  Opens: ___  Clicks: ___  Replies: ___  Meetings: ___  Unsubs: ___
Step 2: ...

Phase 2: Per-Email Analysis

For each email in the sequence, calculate:

Core Metrics

Step [N]: "[Subject Line]"
---
Sent: [count]
Delivered: [count] ([delivery_rate]%)
Opened: [count] ([open_rate]%)
Clicked: [count] ([click_rate]%)
Replied: [count] ([reply_rate]%)
  - Positive: [count] ([positive_rate]%)
  - Negative: [count] ([negative_rate]%)
  - Neutral: [count] ([neutral_rate]%)
Converted: [count] ([conversion_rate]%)
Unsubscribed: [count] ([unsubscribe_rate]%)
Bounced: [count] ([bounce_rate]%)

Step-Over-Step Decay

Calculate the drop-off between each step:

Step 1 -> Step 2: [X]% drop in opens, [Y]% drop in clicks
Step 2 -> Step 3: [X]% drop in opens, [Y]% drop in clicks
...

Benchmark Comparison

Compare each email against industry benchmarks:

Step [N] vs Benchmark:
  Open rate: [actual]% vs [benchmark]% -- [ABOVE/BELOW/AT benchmark]
  Click rate: [actual]% vs [benchmark]% -- [ABOVE/BELOW/AT benchmark]
  Reply rate: [actual]% vs [benchmark]% -- [ABOVE/BELOW/AT benchmark]

Flag emails performing >20% below benchmark as "underperforming." Flag emails performing >20% above benchmark as "outperforming."

Phase 3: Funnel Analysis

Sequence Funnel

SEQUENCE FUNNEL: [name]
===
             Sent: [count] (100%)
        Delivered: [count] ([rate]%)
           Opened: [count] ([rate]%)  -- at least one email opened
          Clicked: [count] ([rate]%)
          Replied: [count] ([rate]%)
Positive replies: [count] ([rate]%)
       Converted: [count] ([rate]%)

Drop-Off Identification

Identify the biggest drop-off points:

CRITICAL DROP-OFFS:
1. Step [N] -> Step [N+1]: [X]% drop -- [diagnosis]
2. Step [N] -> Step [N+1]: [X]% drop -- [diagnosis]

Drop-off diagnoses:

  • Large open drop: subject line fatigue, send timing, list quality degradation
  • Large click drop: CTA weak, content not compelling, link placement poor
  • Large reply drop: ask too big, value prop unclear, timing wrong
  • Spike in unsubs: content mismatch, frequency too high, tone wrong

Cumulative Performance

Total across all steps:
  Unique contacts reached: [count]
  Total emails sent: [count]
  Total opens: [count] (avg [rate]% per email)
  Total clicks: [count] (avg [rate]% per email)
  Total replies: [count] (total reply rate: [rate]%)
  Total conversions: [count] (sequence conversion rate: [rate]%)
  Total unsubscribes: [count] (sequence unsub rate: [rate]%)
  Cost per conversion: [if spend data available]

Phase 4: Content Analysis

Subject Line Performance

Rank all subject lines by open rate:

SUBJECT LINE RANKING:
1. "[subject]" -- [open_rate]% -- Style: [question/number/curiosity/direct]
2. "[subject]" -- [open_rate]% -- Style: [type]
3. "[subject]" -- [open_rate]% -- Style: [type]
...

Identify patterns:

  • Which subject line styles perform best?
  • What length performs best?
  • Does personalization (first name, company) improve opens?

CTA Performance

Rank CTAs by click and reply rate:

CTA RANKING:
1. "[CTA text]" in Step [N] -- [click_rate]% clicks, [reply_rate]% replies
2. "[CTA text]" in Step [N] -- [click_rate]% clicks, [reply_rate]% replies
...

Identify patterns:

  • Direct CTAs ("Book a call") vs soft CTAs ("Reply with thoughts")
  • Link-based CTAs vs reply-based CTAs
  • CTA placement (end of email vs inline vs PS)

Reply Quality

If reply-analyzer data available:

REPLY ANALYSIS:
  Total replies: [count]
  Positive (interested): [count] ([rate]%)
  Negative (not interested): [count] ([rate]%)
  Neutral (OOO, wrong person): [count] ([rate]%)
  Common positive signals: [list]
  Common objections in negative replies: [list]
  Steps generating most positive replies: [step numbers]

Phase 5: Trend Analysis

If comparison period data is available:

PERIOD-OVER-PERIOD COMPARISON
===
Metric          | Current | Previous | Change | Trend
Open rate       | [%]     | [%]      | [+/-]  | [up/down/flat]
Click rate      | [%]     | [%]      | [+/-]  | [up/down/flat]
Reply rate      | [%]     | [%]      | [+/-]  | [up/down/flat]
Conversion rate | [%]     | [%]      | [+/-]  | [up/down/flat]
Unsub rate      | [%]     | [%]      | [+/-]  | [up/down/flat]

Flag significant changes (>10% shift in either direction).

Phase 6: Optimization Recommendations

Based on analysis, generate specific, actionable recommendations:

Underperforming Emails

For each email flagged as underperforming:

STEP [N] OPTIMIZATION
---
Issue: [specific metric below benchmark]
Diagnosis: [likely cause based on patterns]
Recommendation: [specific change to make]
Priority: [HIGH/MEDIUM/LOW]

Rewrite (if include_rewrites = true):
  Original subject: "[old subject]"
  Recommended subject: "[new subject]" -- [reasoning]

  Original CTA: "[old CTA]"
  Recommended CTA: "[new CTA]" -- [reasoning]

  Body changes: [specific suggestions]

Sequence-Level Recommendations

SEQUENCE OPTIMIZATIONS
===

1. TIMING:
   - [Recommendation about send days/times based on open patterns]
   - [Recommendation about spacing between emails]

2. CONTENT:
   - [Recommendation about content types that work best]
   - [Recommendation about email length based on performance]
   - [Recommendation about personalization approach]

3. STRUCTURE:
   - [Should emails be added/removed?]
   - [Should the sequence be shortened/extended?]
   - [Should the CTA progression change?]

4. TARGETING:
   - [Are certain segments performing differently?]
   - [Should the sequence be split by segment?]

5. A/B TEST SUGGESTIONS:
   - Test 1: [subject line variant] -- Expected impact: [%]
   - Test 2: [CTA variant] -- Expected impact: [%]
   - Test 3: [timing variant] -- Expected impact: [%]

Phase 7: Output

Return structured JSON:

{
  "sequence_name": "cold_outreach_d2c_india",
  "analysis_date": "2026-03-07",
  "date_range": {"start": "2026-02-01", "end": "2026-02-28"},
  "summary": {
    "total_contacts": 200,
    "total_emails_sent": 950,
    "sequence_open_rate": 52.3,
    "sequence_click_rate": 4.8,
    "sequence_reply_rate": 7.2,
    "sequence_conversion_rate": 2.5,
    "sequence_unsub_rate": 0.4,
    "total_conversions": 5,
    "health": "GOOD",
    "vs_benchmark": "ABOVE_AVERAGE"
  },
  "per_email": [
    {
      "step": 1,
      "subject": "Quick question about your Shopify store",
      "sent": 200,
      "open_rate": 58.5,
      "click_rate": 6.2,
      "reply_rate": 4.5,
      "conversion_rate": 1.0,
      "unsub_rate": 0.5,
      "vs_benchmark": "ABOVE",
      "status": "OUTPERFORMING"
    }
  ],
  "drop_offs": [
    {
      "from_step": 3,
      "to_step": 4,
      "open_rate_drop": 18.5,
      "diagnosis": "Subject line fatigue -- Step 4 uses similar style to Step 3",
      "recommendation": "Change Step 4 subject line style from question to curiosity gap"
    }
  ],
  "top_performers": [
    {"step": 1, "metric": "open_rate", "value": 58.5, "reason": "Strong curiosity-based subject line"}
  ],
  "underperformers": [
    {"step": 4, "metric": "open_rate", "value": 38.2, "reason": "Subject line fatigue, poor timing"}
  ],
  "recommendations": [
    {
      "type": "rewrite",
      "step": 4,
      "priority": "HIGH",
      "change": "Replace subject line and lead with fresh angle",
      "expected_impact": "+8-12% open rate",
      "rewrite": {
        "original_subject": "Following up on my last email",
        "new_subject": "This cost [industry] brands 23% in lost revenue last quarter",
        "reasoning": "Pattern interrupt instead of follow-up framing"
      }
    }
  ],
  "ab_test_suggestions": [
    {
      "test": "Step 1 subject line: question vs statement",
      "hypothesis": "Direct statement may outperform question for enterprise segment",
      "sample_size_needed": 100,
      "duration": "2 weeks"
    }
  ],
  "trend": {
    "vs_previous_period": {
      "open_rate_change": "+3.2%",
      "reply_rate_change": "+1.1%",
      "conversion_change": "+0.5%"
    }
  },
  "generated_at": "2026-03-07T10:00:00Z"
}

Phase 8: Review

Present the analysis report.

APPROVAL GATE: "Sequence analysis complete. [N] optimization recommendations. Apply the rewrites?"

If approved:

  • Update sequence emails via crm-writer
  • Set up A/B tests for recommended variants
  • Schedule next analysis for 2-4 weeks out
  • Log baseline metrics for comparison

Example Usage

Trigger phrases:

  • "Analyze the cold outreach sequence performance"
  • "How is our nurture sequence doing?"
  • "Sequence analytics for [sequence name]"
  • "Which emails in the sequence are underperforming?"
  • "Optimize our outreach sequence based on the numbers"
  • "Run sequence analysis for February"
  • "Compare this month's sequence performance to last month"

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what sequence-analyzer does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.