Diagnose marketing performance for global businesses — root cause analysis, 5-Whys, 48-hour action plan. Has 4 region variants for benchmarks (US/EU/SEA/LATAM). Reads `.agents/product-marketing-context-global.md`. INCLUDES Dropshipping KPI section (ROAS, BE-ROAS, profit margin, CAC). Trigger: 'performance review', 'ad performance', 'marketing diagnosis', 'KPI analysis', 'dropshipping ROAS'.
npx skills add https://github.com/minhnv0807/ai-business-skills --skill 03-performance-eval-global
Diagnose marketing performance — paid ads, organic, funnel — find root cause, propose optimization with 48h action plan and weekly checklist. Region variants (US/EU/SEA/LATAM) provide localized benchmarks.
If you've never done a performance review:
Before diagnosis:
.agents/product-marketing-context-global.md — get product, audience, region, currency, current channels.variants/01-us.md — North America (USD)variants/02-eu.md — Europe (EUR/GBP, GDPR-aware)variants/03-sea.md — Southeast Asia (USD/local, low CPM)variants/04-latam.md — Latin America (USD/BRL/MXN, WhatsApp-first)Ask user up to 4 questions:
| Platform | MCP recommended | Data pulled |
|----------|----------------|-------------|
| Meta Ads | Meta Official MCP (mcp.facebook.com/ads) | 29 tools — performance, anomalies, benchmarks |
| Meta Ads (alt) | Pipeboard, brijr/meta-mcp | Targeting research, ad library |
| Google Ads | Google Official MCP | GAQL — cost, clicks, conv, impression share |
| TikTok Ads | AdsMCP/tiktok-ads-mcp-server | Campaign performance reports |
| Cross-platform | Adspirer ads-mcp | 175+ tools, unified metrics |
Quick MCP diagnostic flow:
1. ads_insights_performance_trend → trending down?
2. ads_insights_anomaly_signal → which KPI is abnormal?
3. ads_insights_industry_benchmark → vs. industry?
4. ads_get_opportunity_score → what does Meta suggest?
→ Feed into Benchmark Table + Diagnostic Tree
Health Score = Σ(Check_pass × W_severity × W_category) / Σ(Check_total × W_severity × W_category) × 100
| Severity | Weight | Example checkpoints |
|----------|--------|--------------------|
| Critical | 5× | Pixel not firing, CAPI not setup, CPA > 3× target |
| High | 3× | Creative similarity > 60%, budget < 5× CPA/day |
| Medium | 1.5× | No retargeting audience, headline > 40 chars |
| Low | 0.5× | Naming convention not followed |
| Score | Grade | Action |
|-------|-------|--------|
| 90–100 | A | Excellent — focus on scaling |
| 75–89 | B | Good — fix Medium, scale gently |
| 60–74 | C | Average — fix High before scaling |
| 40–59 | D | Poor — fix Critical + High first |
| <40 | F | Danger — pause, full audit, rebuild |
[CPM HIGH]
|-- CTR low (<1%)?
| |-- Weak hook → rewrite first 3s
| |-- Wrong targeting → narrow/expand audience
| |-- Stale creative (>7d) → make new creative
|
|-- CTR normal (1–3%) but CPM still high?
| |-- Auction peak → reduce budget, shift schedule
| |-- Audience too small → expand, test new LAL
| |-- Bid too high → switch to lowest cost
|
|-- CTR high (>3%) but CPM high?
|-- Landing page/inbox not converting → fix LP
|-- Unclear CTA → rewrite CTA
[ROAS LOW (<2x)]
|-- CPM ok but few conversions?
| |-- Funnel leak → check each step
| |-- Slow sales response → improve speed, script
| |-- Wrong offer/price → review offer
|
|-- High CPM + few conversions?
| |-- Loop back to CPM tree
|
|-- Many orders but low AOV?
|-- Weak cross-sell/upsell → bundles, larger packages
|-- Bargain hunters → tighten targeting
[POOR LEAD QUALITY]
|-- Many messages but few qualified leads?
| |-- Targeting too broad → narrow with LAL of best customers
| |-- Wrong-fit content → adjust hook + CTA
| |-- Value prop unclear → educate before CTA
|
|-- Qualified leads but no booking?
| |-- Slow follow-up (>2h) → respond within 15 min
| |-- Weak close script → rewrite, train sales
| |-- Price too high → bundle, financing, trial
|
|-- Booking but no-show?
|-- No reminder → auto-remind 24h + 2h before
|-- Trust gap → nurture more before booking
|-- Decision fatigue → simplify booking flow
Ask "Why?" 5 times until you reach a process/system/skill root cause:
| Round | Why? | Answer |
|-------|------|--------|
| 1 | Why did CPM rise? | CTR dropped from 2.5% → 1.1% |
| 2 | Why did CTR drop? | Creative ran 12 days, audience saturation |
| 3 | Why did creative run so long? | No creative refresh schedule |
| 4 | Why no schedule? | No SOP for periodic creative review |
| 5 | Why no SOP? | No creative rotation process defined |
Root cause: Missing SOP for creative rotation
Solution: Lock in 3-5 new creatives/week, review every 3-5 days
| Indicator | Warning | Danger | Action |
|-----------|---------|--------|--------|
| Frequency | >2.5 | >4 | Refresh creative, expand audience |
| CTR decline | -20% vs first 3 days | -40% | New creative |
| CPA increase | +25% vs first 3 days | +50% | Pause, test new |
| Run time | >7 days | >14 days | Mandatory refresh |
| Engagement decline | -30% comments/shares | -50% | Switch angle |
| Negative feedback | >3% | >5% | Pause immediately |
| Metric | Healthy | Warning | Action |
|--------|---------|---------|--------|
| Audience overlap (between ad sets) | <20% | >30% | Merge or exclude |
| Frequency | <2.5 | >4 | Expand audience, new creative |
| Reach vs audience size | <50% | >70% | Audience too small, expand |
| Cost per incremental result | Stable | +30% | Saturated — find new audience |
| % new users in clicks | >60% | <40% | Re-showing to existing — refresh |
Use the variant that matches your ad account billing region, NOT just where the user is located:
| Region | Variant | When to use |
|--------|---------|-------------|
| United States, Canada | 01-us.md | Account billed in USD, US/CA traffic |
| UK, EU, EEA | 02-eu.md | Account billed in EUR/GBP, GDPR consent stack |
| SEA (Vietnam, Thailand, Indonesia, Philippines, Malaysia, Singapore) | 03-sea.md | Lower CPM, mobile-first, super-app context |
| LATAM (Brazil, Mexico, Colombia, Argentina, Chile) | 04-latam.md | WhatsApp-dominant, low CPM, FX volatility |
If running multi-region: load multiple variants, compare benchmarks side-by-side, set per-region targets.
Dropshipping has different success criteria than typical service/B2B marketing. Use this layer when product is sourced from suppliers (AliExpress, CJ, Zendrop) and shipped directly to customer.
| KPI | Formula | Healthy target |
|-----|---------|----------------|
| ROAS | Revenue / Ad spend | 2.5–3x minimum, 4x+ ideal |
| BE-ROAS (Break-even ROAS) | 1 / Profit margin | If margin = 30%, BE-ROAS = 3.33x |
| Profit margin | (Revenue − COGS − Shipping − Fees − Ad spend) / Revenue | 20%+ healthy, 25%+ ideal |
| CAC (Customer Acquisition Cost) | Ad spend / Customers acquired | < AOV × Profit margin |
| CPA (Cost Per Add-to-cart / Purchase) | Ad spend / Conversions | <30% of AOV |
| AOV (Average Order Value) | Revenue / Orders | Higher AOV = lower BE-ROAS pressure |
BE-ROAS = 1 / Profit margin
Examples:
Margin 20% → BE-ROAS = 5.0x (you need 5x ROAS just to break even)
Margin 25% → BE-ROAS = 4.0x
Margin 30% → BE-ROAS = 3.33x
Margin 35% → BE-ROAS = 2.86x
Margin 40% → BE-ROAS = 2.5x
Margin 50% → BE-ROAS = 2.0x
> Below BE-ROAS = losing money on every order.
> 1.2× BE-ROAS = healthy growth zone.
> 2× BE-ROAS = scale aggressively.
| Flag | Threshold | Action |
|------|-----------|--------|
| ROAS < BE-ROAS for 7 days | Always losing | Pause, redo product/creative |
| Profit margin < 20% | Too thin | Raise price OR find cheaper supplier |
| Refund rate > 5% | Too high | Audit product quality + ad claims |
| Chargeback rate > 1% | Critical | Review CB reasons, may risk Stripe ban |
| Shipping time > 18 days | Long | Switch to faster supplier or warehouse stock |
| Cart abandon > 75% | Too high | Audit checkout (shipping cost reveal, slow load) |
| Signal | Threshold | Decision |
|--------|-----------|----------|
| ROAS sustained > 2× BE-ROAS | 7+ consecutive days | Scale +20% per cycle |
| 30+ purchases at target CPA | Within ad set | CBO scaling allowed |
| Profit margin stable > 25% | 14+ days | Open new market |
| Email/SMS list > 1000 | Reached | Add retention campaigns |
> See skill 29-dropshipping-mastery-global for full dropshipping playbook.
Apply when CRITICAL issue detected:
| # | Time | Action | Severity | Expected outcome |
|---|------|--------|----------|------------------|
| 1 | 0–2h | Pause creatives/ad sets with CPA > 2x target | CRITICAL | Stop bleeding spend |
| 2 | 2–4h | Deep-dive data: which creative, audience, time slot | CRITICAL | Identify root cause |
| 3 | 4–8h | Duplicate winning ad set, test new creatives | HIGH | New creative live |
| 4 | 8–12h | Adjust audience: exclude overlap, test new LAL | HIGH | Reduce frequency |
| 5 | 12–24h | A/B test 3 new hooks for top creative | HIGH | Find better hook |
| 6 | 12–24h | Review landing page / inbox flow | MEDIUM | Fix funnel leak |
| 7 | 24–36h | Compare new vs. old performance | MEDIUM | Decide next step |
| 8 | 36–48h | Report + propose week-2 plan | MEDIUM | Concrete plan |
| Day | Focus |
|-----|-------|
| Mon | Compare WoW KPIs, identify top/bottom 3 creatives, check frequency + audience overlap |
| Tue | Make 3-5 new creatives, test new hook, review UGC pipeline + organic |
| Wed | Optimize bid/budget on winners, pause CPA > 2x target, test new audiences |
| Thu | Check Mess→Lead, Lead→Booking, response time, sales script |
| Fri | WoW table, top 3 priorities for next week, content calendar update |
| Need | Skill |
|------|-------|
| Full audit with 84 checkpoints | 21-ads-audit-global |
| Monthly report | 07-marketing-report-global |
| Recompute budget from revenue target | 10-reverse-kpi-global |
| New ad copy with frameworks | 05-ad-copy-global |
| New video script | 04-script-video-global |
| Replan from scratch | 00-marketing-plan-global |
| Dropshipping-specific playbook | 29-dropshipping-mastery-global |
Before delivering evaluation:
Combine vector and keyword search for improved retrieval. Use when implementing RAG systems, building search engines, or when neither approach alone provides sufficient recall.
Combine vector and keyword search for improved retrieval. Use when implementing RAG systems, building search engines, or when neither approach alone provides sufficient recall.
Combine vector and keyword search for improved retrieval. Use when implementing RAG systems, building search engines, or when neither approach alone provides sufficient recall.
| Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet
| Query the Sequence Read Archive (SRA), retrieve scientific publications, and analyze genomics metadata using the SRAgent toolkit. Supports accession conversion (GSE→SRX→SRR), BigQuery metadata queries, manuscript downloads from multiple sources, and scRNA-seq technology identification. Use when working with SRA/GEO datasets, finding publications, or analyzing single-cell sequencing experiments.
Framework for building competitive landscape decks — market positioning, competitor deep-dives, comparative analysis, strategic synthesis. Use when the user asks for a competitive landscape, competitor analysis, peer comparison, market positioning assessment, strategic review, or investment memo deck. Also triggers on "who are the competitors to X", "benchmark X against peers", "build a market map", or any request to systematically evaluate competitive dynamics across an industry.
> Analyzes unit economics by product or service using PayPal merchant insights and QuickBooks cost data, benchmarks against inflation and cost changes, and shows pricing-scenario data (e.g. "a 5% increase historically correlates with ~3% volume drop"). Surfaces analysis only — does not recommend a price. Use when the user asks about raising prices, pricing, margin analysis, what to charge, whether costs are eating into profit, or how a price change might affect their business. Trigger even if the user doesn't say "margin" explicitly — phrases like "am I making enough?", "should I charge more?", or "my costs are going up" all call for this skill.
Define a dataset's metadata profile — infer a Frictionless Table Schema from its data, add Data Package metadata (license, sources, keywords), and write it into datasets.json so the showcase renders a typed field table. Extend or customize via the L0-L3 profile ladder. Use when a registered dataset needs field types, constraints, or catalog metadata before publishing.
Take minhnv0807/03-performance-eval-global from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.