skills/aso-audit/SKILL.md
When the user wants to audit or optimize an App Store or Google Play listing. Also use when the user mentions 'ASO audit,' 'app store optimization,' 'optimize my app listing,' 'improve app visibility,' 'app store ranking,' 'audit my listing,' 'why aren't people downloading my app,' 'improve my app conversion,' 'keyword optimization for app,' or 'compare my app to competitors.' Use when the user shares an App Store or Google Play URL and wants to improve it.
npx skillsauth add coreyhaines31/marketingskills aso-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyze App Store and Google Play listings against ASO best practices. Fetches live listing data, scores metadata, visuals, and ratings, then produces a prioritized action plan.
Check for product marketing context first:
If .agents/product-marketing-context.md exists (or .claude/product-marketing-context.md in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
Apple: apps.apple.com/{country}/app/{name}/id{digits}
Google: play.google.com/store/apps/details?id={package}
If the user gives an app name instead of a URL, search the web for:
site:apps.apple.com "{app name}" or site:play.google.com "{app name}"
Use WebFetch to retrieve the listing page. Extract every available field:
Apple App Store fields:
Google Play fields:
If WebFetch returns incomplete data (stores render client-side), note gaps and work with what's available. Ask the user to paste missing fields if critical.
WebFetch cannot extract screenshot images or caption text. Take a screenshot of the listing page to get visual data:
Promotional text (Apple): This 170-char field appears above the description but is often indistinguishable from it in scraped HTML. If you cannot confirm its presence, note this and recommend the user check App Store Connect.
Before scoring, classify the app into one of three tiers. This determines how you interpret "textbook ASO" deviations — a deliberate brand choice by a household name is not the same as a missed opportunity by an unknown app.
| Tier | Signals | Examples | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- | | Dominant | Household name, 1M+ ratings, top-10 in category, near-universal brand recognition. Users search by brand name, not generic keywords. | Instagram, Uber, Spotify, WhatsApp, Netflix | | Established | Well-known in their category, 100K+ ratings, strong organic installs, recognized brand but not universally known. | Strava, Notion, Duolingo, Cash App, Calm | | Challenger | Building awareness, <100K ratings, needs discovery through keywords and ASO tactics. Most apps fall here. | Your app, most indie/startup apps |
Dominant apps get adjusted scoring in these areas:
Established apps get partial adjustment:
Challenger apps are scored strictly against textbook ASO best practices — every character, screenshot, and keyword matters.
Key principle: Before docking points, ask: "Is this a mistake or a deliberate choice by a team that has data I don't?" If the app has 1M+ ratings and a dedicated ASO team, assume their choices are data-informed unless clearly wrong.
Score each dimension 0-10 using the criteria in references/scoring-criteria.md.
Apply the brand maturity tier adjustments from Phase 1.5.
Reference files for platform specs and benchmarks:
references/apple-specs.md — Official Apple character limits, screenshot/video specs, CPP/PPO rules, rejection triggersreferences/google-play-specs.md — Official Google Play limits, screenshot specs, Android Vitals thresholds, policiesreferences/benchmarks.md — Conversion data, rating impact, video lift, screenshot behavior, CPP/event benchmarks| # | Dimension | Weight | What It Covers | | --- | -------------------- | ------ | ------------------------------------------------------------------------- | | 1 | Title & Subtitle | 20% | Character usage, keyword presence, clarity, brand + keyword balance | | 2 | Description | 15% | First 3 lines, keyword density (Google), CTA, structure, promotional text | | 3 | Visual Assets | 25% | Screenshot count/quality/messaging, video, icon, feature graphic | | 4 | Ratings & Reviews | 20% | Average rating, volume, recency, developer responses | | 5 | Metadata & Freshness | 10% | Category choice, update recency, localization count, data safety | | 6 | Conversion Signals | 10% | Price positioning, IAP transparency, social proof, download range |
Final score = weighted sum, out of 100.
| Score | Grade | Meaning | | ------ | ----- | --------------------------------------------------------- | | 85-100 | A | Well-optimized; focus on A/B testing and iteration | | 70-84 | B | Good foundation; clear opportunities to improve | | 50-69 | C | Significant gaps; prioritized fixes will have high impact | | 30-49 | D | Major optimization needed across multiple dimensions | | 0-29 | F | Listing needs a complete overhaul |
If the user provides competitor URLs or asks for comparison:
If no competitors are specified, suggest the user provide 2-3 or offer to search for top apps in their category.
Use the template in references/report-template.md to structure the output.
The report must include:
references/apple-specs.md for full specs, dimensions, and rejection triggersreferences/google-play-specs.md for full specs and policy details| Field | Apple Indexed? | Google Indexed? | | --------------------- | ---------------- | ---------------------- | | Title | Yes | Yes (strongest signal) | | Subtitle / Short desc | Yes | Yes | | Keyword field | Yes (hidden) | Does not exist | | Long description | No | Yes (heavily) | | Screenshot captions | Yes (since 2025) | No | | In-app events | Yes | N/A (LiveOps instead) | | Developer name | No | Partial | | IAP names | Yes | Yes |
Flag these if found. Items marked (tier-dependent) should be evaluated against the app's brand maturity tier — they may be deliberate choices for Dominant apps.
Always flag (all tiers):
Flag for Challenger/Established only (not mistakes for Dominant apps):
Flag for all tiers but note context:
tools
When the user wants to figure out which marketing actually drives conversions and revenue, choose or interpret an attribution model, or reconcile conflicting numbers across tools. Also use when the user mentions "attribution," "attribution model," "first-touch vs last-touch," "multi-touch," "which channel drives revenue," "what's my real CAC," "my dashboards disagree," "Google/Meta says X but GA says Y," "media mix model," "MMM," "incrementality," "geo lift," "holdout test," "how did you hear about us," "self-reported attribution," "dark social," or wants to instrument attribution themselves — "stitch my bookings to their source," "SavvyCal/Calendly attribution," "close the identify gap," "track conversions on a third-party domain," "first-party / self-hosted attribution." For event tracking setup and UTMs, see analytics. For ad-platform pixels/CAPI, see ads. For pipeline and CRM revenue reporting, see revops. For the AI-search attribution blind spot, see ai-seo.
tools
When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' 'should I offer a free plan,' 'pricing page teardown,' 'pricing page audit,' 'is my pricing page AI-readable,' or 'can AI read my pricing.' Use this whenever someone is figuring out what to charge, how to structure their plans, or wants to audit a pricing page (for humans and for the AI agents that shortlist tools). For in-app upgrade screens, see paywalls. For offer construction (bonuses, guarantees, value framing, naming) on services/courses/coaching/high-ticket B2B, see offers.
tools
When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions "set up tracking," "GA4," "Google Analytics," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "analytics implementation," "tracking plan," "how do I measure this," "track conversions," "Mixpanel," "Segment," "are my events firing," or "analytics isn't working." Use this whenever someone asks how to know if something is working or wants to measure marketing results. For choosing attribution models, comparing multi-touch/MMM/incrementality, or reconciling conflicting numbers across tools, see attribution. For A/B test measurement, see ab-testing.
data-ai
When the user wants to run influencer, creator, or ambassador partnerships to promote their product — finding and vetting partners, structuring deals, briefing creators, disclosure compliance, and measuring ROI. Also use when the user mentions 'influencer marketing,' 'creator partnerships,' 'sponsorships,' 'YouTube sponsorships,' 'podcast sponsorships,' 'brand ambassador,' 'ambassador program,' 'creator program,' 'UGC creators,' 'B2B influencers,' 'thought leader ads,' 'gifting,' 'product seeding,' 'whitelisting creator content,' 'how much to pay an influencer,' or 'FTC disclosure.' For affiliate/referral payout mechanics, see referrals. For community-led advocacy, see community-marketing. For turning creator content into paid ads, see ad-creative.