From mentilead-growth-os
Track and analyze funnel metrics for a Shopify app. Updates weekly metrics, compares against benchmarks, identifies funnel bottlenecks, and recommends optimizations. Use when user wants to update metrics, analyze performance, identify bottlenecks, or compare against Shopify benchmarks.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mentilead-growth-os:metrics-dashboardThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before starting any mode, determine the current state and recommend the next logical step.
Before starting any mode, determine the current state and recommend the next logical step.
marketing/MEMORY.md and marketing/STATUS.mdmarketing/ does NOT exist: tell the user to run the init skill first and stopmarketing/apps/ to list app directories
b. If one app: use it automatically
c. If multiple apps: check if user's request mentions a specific app, otherwise ask
d. Set {slug} for subsequent per-app file readsmarketing/apps/{slug}/funnel.md — weekly funnel data, conversion rates, channel attribution
b. Read marketing/metrics/portfolio.md — portfolio-level aggregated metrics (if exists)
c. Scan marketing/metrics/weekly/ — list existing weekly snapshots
d. Optionally read marketing/apps/{slug}/reviews.md — review count for dashboardMetrics Dashboard — {app_name}:
Latest data week: {most_recent_week from funnel.md, or "no data"}
Weeks tracked: {count of data rows in funnel.md}
Funnel summary: {views} views → {installs} installs ({install_rate}%) → {active} active → ${mrr} MRR
Bottleneck: {lowest-rated conversion stage, or "unknown — no data"}
Channel data: {available / not tracked}
Weekly snapshots: {count of files in metrics/weekly/}
Detection logic:
apps/{slug}/funnel.mdreferences/funnel-benchmarks.md — lowest relative ratingmarketing/metrics/weekly/Based on metrics state, recommend the next logical mode:
The user can override and jump to any mode. Each mode works standalone.
Enter this week's funnel metrics, calculate conversion rates, compare against benchmarks, and identify the bottleneck. This is the ONLY mode that writes to MEMORY.md.
Read references/funnel-benchmarks.md — full funnel conversion rate benchmarks, ratings (Poor/Average/Good/Excellent), and recommended actions for each stage.
marketing/apps/{slug}/funnel.md — existing weekly data for WoW comparisonmarketing/apps/{slug}/reviews.md — current review countmarketing/experiments/backlog.md — active experiments that may affect metrics"Let's update your funnel metrics. What are this week's numbers?"
- App Store Views: {number}
- Add App Clicks: {number}
- Installs Completed: {number}
- Onboarding Completed: {number}
- Activated (first value moment): {number}
- Trial-to-Paid Conversions: {number}
- Churned Users: {number}
- Active Users (total): {number}
- MRR: ${amount}
- New Reviews: {number}
Accept partial data — not all metrics may be available every week. Note any missing metrics as "—" in the table.
For each adjacent stage pair, calculate the conversion rate:
Conversion Rates — Week of {date}:
| Stage | Count | Rate | Calculation |
|-------|-------|------|-------------|
| Views → Add App | {add_clicks} / {views} | {rate}% | Add App Clicks / Views |
| Add App → Install | {installs} / {add_clicks} | {rate}% | Installs / Add App Clicks |
| Install → Onboard | {onboard} / {installs} | {rate}% | Onboarding / Installs |
| Onboard → Activate | {activate} / {onboard} | {rate}% | Activated / Onboarding |
| Activate → Paid | {paid} / {activate} | {rate}% | Paid / Activated |
If previous week data exists in apps/{slug}/funnel.md, calculate WoW changes:
Week-over-Week Trends:
| Metric | Last Week | This Week | Change | % Change |
|--------|-----------|-----------|--------|----------|
| Views | {prev} | {curr} | {+/-N} | {+/-N%} |
| Installs | {prev} | {curr} | {+/-N} | {+/-N%} |
| Install Rate | {prev}% | {curr}% | {+/-N pp} | — |
| Active Users | {prev} | {curr} | {+/-N} | {+/-N%} |
| MRR | ${prev} | ${curr} | {+/-$N} | {+/-N%} |
If no previous data: "First week of tracking — trends will appear after next update."
Compare each conversion rate against the benchmark table from references/funnel-benchmarks.md:
Benchmark Comparison:
| Stage | Your Rate | Rating | Benchmark (Good) | Action |
|-------|-----------|--------|-------------------|--------|
| View → Add App | {rate}% | {Poor/Avg/Good/Excellent} | 30-40% | {action from benchmarks} |
| Add → Install | {rate}% | {Poor/Avg/Good/Excellent} | 80%+ | {action from benchmarks} |
| Install → Onboard | {rate}% | {Poor/Avg/Good/Excellent} | 70%+ | {action from benchmarks} |
| Onboard → Activate | {rate}% | {Poor/Avg/Good/Excellent} | 60%+ | {action from benchmarks} |
| Activate → Paid | {rate}% | {Poor/Avg/Good/Excellent} | 20%+ | {action from benchmarks} |
| 30-Day Retention | {rate}% | {Poor/Avg/Good/Excellent} | 85%+ | {action from benchmarks} |
Use the exact rating thresholds and actions from references/funnel-benchmarks.md. Do NOT hardcode benchmark values — always read from the reference file.
The bottleneck is the stage with the lowest rating relative to its benchmark. If multiple stages are Poor, the earliest funnel stage takes priority (fix the top of the funnel first).
BOTTLENECK: {stage_name}
Your rate: {rate}% (rated {Poor/Average})
Benchmark: {benchmark range}
Impact: {why this matters — from reference file}
Recommended skill: {which GrowthOS skill addresses this}
Bottleneck-to-skill mapping:
Update marketing/apps/{slug}/funnel.md using the structure from templates/funnel-tracker.md:
last_updated to today's dateIf apps/{slug}/funnel.md doesn't exist, create it using templates/funnel-tracker.md as the base.
If multiple apps exist, update marketing/metrics/portfolio.md:
---
last_updated: {today}
---
# Portfolio Metrics
## Weekly Summary
| App | Views | Installs | Rate | Active | MRR | Bottleneck |
|-----|-------|----------|------|--------|-----|------------|
| {app_1} | {views} | {installs} | {rate}% | {active} | ${mrr} | {stage} |
| {app_2} | {views} | {installs} | {rate}% | {active} | ${mrr} | {stage} |
| TOTAL | {sum} | {sum} | {avg}% | {sum} | ${sum} | — |
Create the file if it doesn't exist. If it exists, update the summary table with latest data.
This is the ONLY mode that writes to MEMORY.md.
Read marketing/MEMORY.md and update or add:
## Funnel Health
- {app_name}: {views} views → {installs} installs ({rate}%) → {active} active → ${mrr} MRR
- Bottleneck: {stage} at {rate}% ({rating}) — {recommended action}
- Tracked since: {first_week_date}, {weeks_count} weeks of data ({today})
Only record validated data from the funnel file. If data is incomplete, note what's missing and skip MEMORY.md updates for missing fields.
"Metrics updated for week of {date}. Bottleneck: {stage} at {rate}% ({rating}). {recommendation}. Next: add channel attribution (Step 2) or generate a weekly snapshot (Step 3)."
Track where installs come from and calculate customer acquisition cost per channel.
Read references/funnel-benchmarks.md — CAC benchmarks (Good <$20, Average $20-50, Poor $50+) and channel cost ranges.
marketing/apps/{slug}/funnel.md — existing channel attribution datamarketing/outreach/campaigns/ — campaign data for outreach channelmarketing/experiments/backlog.md — experiments affecting channel performance"Let's track where your installs come from. For each active channel, provide installs and spend this week:"
Channel Installs Spend Organic App Store {number} $0 Cold Outreach {number} ${amount} Content/SEO {number} $0 App Store Ads {number} ${amount} Partnerships {number} $0 Community/Forums {number} $0 {number} ${amount} Google Ads {number} ${amount} "Skip any channels you're not using. Add custom channels if needed."
For each channel with spend > $0:
For organic channels (spend = $0):
Channel Performance — {app_name} (Week of {date}):
| Channel | Installs | Share | Spend | CAC | Rating |
|---------|----------|-------|-------|-----|--------|
| {channel} | {installs} | {install_share}% | ${spend} | ${cac} | {Good/Avg/Poor} |
| ... | | | | | |
| TOTAL | {total_installs} | 100% | ${total_spend} | ${blended_cac} | {rating} |
CAC ratings from references/funnel-benchmarks.md:
Based on the data, provide recommendations:
Update the Channel Attribution table in marketing/apps/{slug}/funnel.md:
Replace the Channel Attribution section with current data. Preserve the table structure from templates/funnel-tracker.md. Update last_updated in frontmatter.
"Channel attribution updated. {total_installs} installs across {channel_count} channels. Blended CAC: ${blended_cac} ({rating}). Best channel: {top_channel}."
Generate a comprehensive weekly review file that captures this week's performance, trends, and commentary.
marketing/apps/{slug}/funnel.md — this week's funnel datamarketing/apps/{slug}/reviews.md — review metricsmarketing/metrics/portfolio.md — portfolio metrics (if multi-app)marketing/STATUS.md — current phase and prioritiesmarketing/experiments/backlog.md — active experimentsmarketing/metrics/weekly/ — previous snapshots for comparisonCreate marketing/metrics/weekly/{today}.md using the structure from templates/weekly-review.md:
---
week_of: {today}
phase: "{current_phase from STATUS.md}"
---
# Weekly Marketing Review — Week of {today}
## Metrics Snapshot
| Metric | This Week | Last Week | Change | Target | Health |
|--------|-----------|-----------|--------|--------|--------|
| App Store Views | {views} | {prev_views} | {change} | {target} | {[ON TRACK]/[NEEDS ATTENTION]/[CRITICAL]} |
| Installs | {installs} | {prev_installs} | {change} | {target} | {health} |
| Install Rate | {rate}% | {prev_rate}% | {change} | 30%+ | {health} |
| Active Users | {active} | {prev_active} | {change} | {target} | {health} |
| Trial-to-Paid | {rate}% | {prev_rate}% | {change} | 20%+ | {health} |
| New Reviews | {count} | {prev_count} | {change} | {target} | {health} |
| MRR | ${mrr} | ${prev_mrr} | {change} | ${target} | {health} |
| 30-Day Retention | {rate}% | {prev_rate}% | {change} | 85%+ | {health} |
## Funnel Bottleneck
**{stage_name}** at {rate}% ({rating})
- Benchmark: {benchmark_range}
- Recommended action: {action from benchmarks}
- Suggested skill: {skill_name}
## Channel Performance
| Channel | Installs | CAC | Rating |
|---------|----------|-----|--------|
| {channel} | {installs} | ${cac} | {rating} |
## Active Experiments
| ID | Hypothesis | Stage | Days Active |
|----|-----------|-------|-------------|
| {id} | {hypothesis} | {stage} | {days} |
## Auto-Generated Commentary
{Generate 2-3 bullet points summarizing this week's performance:}
- Highlight the biggest improvement (largest positive WoW change)
- Flag the biggest concern (largest negative WoW change or Poor-rated metric)
- Note phase-appropriate context (what to focus on given current_phase)
## Next Week's Priorities
{Copy from STATUS.md if set, otherwise generate 3 priorities based on bottleneck and phase}
If multiple apps, add a portfolio summary table at the top of the snapshot:
## Portfolio Summary
| App | Views | Installs | Rate | MRR | Bottleneck | Health |
|-----|-------|----------|------|-----|------------|--------|
| {app_1} | {views} | {installs} | {rate}% | ${mrr} | {stage} | {health} |
| {app_2} | {views} | {installs} | {rate}% | ${mrr} | {stage} | {health} |
| TOTAL | {sum} | {sum} | {avg}% | ${sum} | — | — |
Read marketing/STATUS.md and update:
"Weekly snapshot generated at marketing/metrics/weekly/{today}.md. {key_highlight}. {key_concern}."
After completing any mode, update persistent state.
Read marketing/STATUS.md and update:
last_updated: today's dateAppend to marketing/logs/{today}.md (create if it doesn't exist):
## Metrics: {Mode Name}
- **Mode:** {Metrics Update / Channel Attribution / Weekly Snapshot}
- **App:** {app_name} ({slug})
- **Key outputs:** {brief summary of what was created/updated}
- **Next step:** {recommended next mode or next skill}
| Mode | References Read | User Files Read | User Files Written |
|---|---|---|---|
| Step 0: Detect & Route | — | MEMORY.md, STATUS.md, apps/{slug}/funnel.md, metrics/portfolio.md, metrics/weekly/, apps/{slug}/reviews.md (opt) | — |
| Step 1: Metrics Update | references/funnel-benchmarks.md | apps/{slug}/funnel.md, apps/{slug}/reviews.md (opt), experiments/backlog.md (opt) | apps/{slug}/funnel.md, metrics/portfolio.md (multi-app), MEMORY.md |
| Step 2: Channel Attribution | references/funnel-benchmarks.md | apps/{slug}/funnel.md, outreach/campaigns/ (opt), experiments/backlog.md (opt) | apps/{slug}/funnel.md |
| Step 3: Weekly Snapshot | — | apps/{slug}/funnel.md, apps/{slug}/reviews.md (opt), metrics/portfolio.md (opt), STATUS.md, experiments/backlog.md, metrics/weekly/ | metrics/weekly/{today}.md, STATUS.md |
| All modes | — | STATUS.md | STATUS.md, logs/{today}.md |
npx claudepluginhub mentilead/growthos --plugin mentilead-growth-osSets up GA4/GTM tracking, interprets analytics data, analyzes conversion funnels, calculates ROI, and measures product engagement. For analytics-driven decisions.
Generates marketing performance reports with executive summaries, key metrics tables, trend analysis, wins/misses, and prioritized optimizations for campaigns or channels.
Generates structured Vietnamese marketing reports following the "read 5 minutes, know what to do next" principle. Produces executive summaries, channel data, auto-diagnostics, actionable proposals with deadlines and owners.