From sophron-skills
Expert-level diagnostic workflow for identifying and fixing constraints in Meta Ads accounts. Use when a user reports that an ad account, campaign, or funnel has "died," stopped performing, or experienced a sudden spike in Cost Per Result (CPP/CPA/CPL). Applies to direct purchase, lead gen/call booking, webinar, quiz, and subscription funnel types.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sophron-skills:bottleneck-analysisThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill runs a systematic, data-driven diagnostic to identify the exact root cause of performance degradation in Meta Ads accounts. The core principle is: **go deep, never stay generic.** A surface-level answer like "creative fatigue" is not acceptable. The analysis must drill through account → campaign → ad set → individual ad until the specific mathematical break point is isolated and prov...
This skill runs a systematic, data-driven diagnostic to identify the exact root cause of performance degradation in Meta Ads accounts. The core principle is: go deep, never stay generic. A surface-level answer like "creative fatigue" is not acceptable. The analysis must drill through account → campaign → ad set → individual ad until the specific mathematical break point is isolated and proven with data.
Before touching any data, ask the user for the following if not already provided:
Always compare two periods:
Pull both periods at the account level first. Do not start at the ad level.
Pull these metrics for both periods and compare:
| Metric | What a Change Tells You |
|---|---|
| Cost Per Result (CPP/CPL) | Is there actually a problem? (>30% change = investigate) |
| Cost Per Link Click (CPLC) | Is the traffic getting more expensive? |
| Page Conversion Rate (CVR) | Is the traffic converting at the same rate post-click? |
| CPM | Is the auction getting more expensive? |
| CTR (Link) | Are people clicking through with intent? |
| CTR (All) | Are people engaging with the content at all? |
| Frequency | Are the same people seeing the ads repeatedly? |
| CPMr (CPM × Frequency) | The leading indicator — is reach shrinking? |
| Spend | Has total spend changed significantly? |
The two-metric rule: Cost Per Result is always a function of CPLC × CVR. If CPR spiked, one or both of these changed. Identify which one before going deeper.
The 30% threshold: A shift of >30% in any key metric over the comparison period is the trigger for a bottleneck investigation. Even if CPP is flat, a 30% CPM spike warrants investigation — something else must be compensating, and that compensation may not last.
The "not enough data" rule: If an ad has spent less than 2–4x the target CPA, nothing has really happened yet. Do not make definitive decisions on low-spend data unless the ad is completely failing (e.g., spent 1x CPA with zero conversions).
Once you know whether the issue is in traffic cost (CPLC) or post-click conversion (CVR), drill into the funnel to find the exact stage where the drop-off occurs.
For Direct Purchase / Subscription:
Impressions → Link Clicks → Landing Page Views (LPV) → Initiate Checkout (IC) → Purchase
For Lead Gen / Call Booking:
Impressions → Link Clicks → LPV → Form Start → Form Submit (Lead) → Call Booked → Show Rate → Close Rate → Cash Collected
For each stage, calculate the conversion rate between stages for both periods. The stage where the rate dropped most is the primary break point. Do not assume — calculate it.
Once the funnel break point is identified, drill down through the account hierarchy to find which specific campaigns, ad sets, and ads are responsible. This is where generic analysis fails. You must get specific.
At campaign level: Which campaigns are driving the CPR spike? Are all campaigns affected or just one?
At ad set level: Which ad sets have the worst CPR in the crisis period? How has spend allocation shifted between baseline and crisis? Are budget-starved ad sets the issue?
At ad level: For the worst-performing ad sets, pull individual ad metrics. Compare each ad's performance between baseline and crisis. Identify:
For each hypothesis, the check must be done with actual data — not assumed.
MUST READ for full diagnostic logic: references/diagnostic-framework.md
MUST READ for metric interpretation: references/metric-interrelationships.md
MUST READ for funnel-type KPI baselines: references/funnel-kpis.md
When multiple things break at the same time, do not try to identify a single root cause. List all confirmed constraints and prioritise them by mathematical impact on revenue/CAC.
Prioritisation logic: Which constraint, if fixed today, would have the largest immediate impact on Cost Per Result? Fix that first.
Example priority order:
Never commit to a conclusion based on a single data point. You need at least two independent data points pointing to the same narrative.
Ask the user which mode they want before writing the output:
Mode 1 — Brief: 2–3 sentences identifying the constraint and the single most important action to take.
Mode 2 — Full Comprehensive Analysis: Use this exact structure:
Period Analysed: [Baseline dates] vs. [Crisis dates]
[One paragraph. State the root cause clearly. Is it a traffic issue, a post-click issue, a structural issue, or a measurement issue? What is the single most important thing the reader needs to know?]
| Metric | Baseline | Crisis | Change | Verdict |
|---|---|---|---|---|
| Total Spend | ||||
| Cost Per Result (CPP/CPL) | ||||
| Cost Per Link Click | ||||
| Page CVR | ||||
| CPM | ||||
| CPMr | ||||
| Frequency | ||||
| [Funnel stage rates] |
[Explain which hypothesis was proven correct and provide the specific data that proves it. Be explicit: "Ad X spent $450 in the baseline with 6 purchases ($75 CPP). In the crisis period it received $15 of spend and 0 purchases — not because it fatigued (CTR was 19.7%, up from 18.2%) but because the CBO algorithm reallocated budget to unproven warm ad sets."]
[Identify the specific ads still working and explain what they have in common. Identify the specific ads that collapsed and explain the mechanism. This section must name individual ads with their metrics — not generic statements.]
[Numbered list ordered by urgency and mathematical impact. Each item must be specific and actionable — not "refresh creative" but "pause ad X and ad Y immediately; they have spent $450 combined in the crisis period with zero purchases."]
npx claudepluginhub leoxmoore/sophron-skills --plugin sophron-skillsCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.