rating-prompt-strategy
When the user wants to improve their app's star rating, increase ratings volume, optimize when and how they prompt users for a review, or recover from a bad rating period. Use when the user mentions "app rating", "star rating", "review prompt", "SKStoreReviewRequest", "In-App Review API", "ask for review", "low rating", "rating drop", "get more reviews", or "recover from 1-star". For responding to reviews, see review-management. For overall ASO health, see aso-audit.
Best use case
rating-prompt-strategy is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
When the user wants to improve their app's star rating, increase ratings volume, optimize when and how they prompt users for a review, or recover from a bad rating period. Use when the user mentions "app rating", "star rating", "review prompt", "SKStoreReviewRequest", "In-App Review API", "ask for review", "low rating", "rating drop", "get more reviews", or "recover from 1-star". For responding to reviews, see review-management. For overall ASO health, see aso-audit.
Teams using rating-prompt-strategy should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/rating-prompt-strategy/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How rating-prompt-strategy Compares
| Feature / Agent | rating-prompt-strategy | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
When the user wants to improve their app's star rating, increase ratings volume, optimize when and how they prompt users for a review, or recover from a bad rating period. Use when the user mentions "app rating", "star rating", "review prompt", "SKStoreReviewRequest", "In-App Review API", "ask for review", "low rating", "rating drop", "get more reviews", or "recover from 1-star". For responding to reviews, see review-management. For overall ASO health, see aso-audit.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
# Rating Prompt Strategy
You optimize when, how, and to whom an app shows review prompts — maximizing high ratings while minimizing negative ones. Ratings are an App Store ranking signal and a conversion factor on the product page.
## Why Ratings Matter for ASO
- **Search ranking** — Apps with higher ratings rank better for competitive keywords
- **Conversion** — Rating stars are visible in search results; a 4.8 beats 4.2 at a glance
- **iOS:** Rating resets per version (you can request a reset in App Store Connect)
- **Android:** Ratings are permanent and cumulative — one bad period is hard to recover
## The Core Rule
**Only prompt users who have experienced value.** Prompting too early produces low ratings. Prompting at a success moment produces 4–5 star ratings.
## iOS — SKStoreReviewRequest
Apple's native prompt. Rules:
- Shows at most **3 times per year** regardless of how many times you call it
- Apple controls the display logic — calling it doesn't guarantee it shows
- Never prompt after an error, crash, or frustrating moment
- Cannot customize the prompt UI
```swift
import StoreKit
// Call at the right moment
if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
SKStoreReviewController.requestReview(in: scene)
}
```
## Android — Play In-App Review API
Google's native prompt. Rules:
- No hard limits, but Google throttles it if called too often
- Show after a clear positive moment
- Cannot determine if the user actually rated (privacy)
```kotlin
val manager = ReviewManagerFactory.create(context)
val request = manager.requestReviewFlow()
request.addOnCompleteListener { task ->
if (task.isSuccessful) {
val reviewInfo = task.result
val flow = manager.launchReviewFlow(activity, reviewInfo)
flow.addOnCompleteListener { /* proceed */ }
}
}
```
## Timing Framework
### The Success Moment Trigger
Define 1–3 "success moments" in your app where users are most satisfied:
| App Type | Good Prompt Moments | Bad Prompt Moments |
|----------|--------------------|--------------------|
| Fitness | After completing a workout | After skipping a session |
| Productivity | After completing a project/task | After a failed save or sync error |
| Games | After winning a level or beating a boss | After losing or failing |
| Finance | After first successful transaction | After a confusing error |
| Meditation | After completing a session | On cold open |
| Shopping | After a successful purchase/delivery | After a failed checkout |
### Session-Based Rules
Only prompt users who meet all criteria:
```
Criteria to prompt:
✓ Sessions >= 3 (not a first-time user)
✓ Time since install >= 3 days
✓ Has completed [activation event] at least once
✓ No crash in last session
✓ No negative signal (error, cancellation) in current session
✓ Not already rated this version
```
## Pre-Prompt Survey (Recommended)
Before triggering the native prompt, show a single in-app question:
```
"Are you enjoying [App Name]?"
[Yes, love it!] [Not really]
```
- **"Yes"** → trigger `SKStoreReviewRequest` / Play In-App Review
- **"Not really"** → show a feedback form (email or in-app), **do not** trigger the native prompt
This filters out dissatisfied users before they can rate you 1–2 stars.
**Expected improvement:** 0.3–0.8 stars on average with a pre-prompt filter.
## Version-Gating (iOS)
iOS allows you to reset ratings per version in App Store Connect. Use this strategically:
- **Reset after a major improvement** — If you fixed the top-complained issues
- **Do not reset** after a controversial change that users disliked
- After a reset, run an aggressive (but filtered) prompt campaign in the first 7 days
- Target your most engaged users first (longest session history)
## Recovering from a Rating Drop
### Diagnosis
1. Check which version caused the drop — correlate with release dates
2. Read the 1-star reviews for that period — find the common complaint
3. Fix the issue in the next release
4. Reply to every 1–3 star review (see `review-management` skill)
### Recovery Campaign
After the fix is shipped:
1. Reply to negative reviews: "Fixed in version X.X — please update and let us know"
2. Some users will update their rating after a reply
3. Run a prompt campaign targeted at your most loyal users (highest session count)
4. Do not prompt users who left a negative review
### Timeline
```
Day 0: Issue identified — hotfix or patch in progress
Day 1–3: Reply to every negative review acknowledging the issue
Day 7: Fix shipped — reply to previous negative reviews "Fixed in X.X"
Day 8+: Enable prompt for sessions >= 5, no crash last 7 days
Week 3: Monitor rating trend — should recover 0.2–0.5 stars in 2–4 weeks
```
## Prompt Frequency
| Platform | Maximum | Recommended |
|----------|---------|-------------|
| iOS | 3× per 365 days (Apple-enforced) | 1–2× per version |
| Android | No hard limit (Google throttles) | 1× per 30 days per user |
Never show the prompt twice in the same session.
## Output Format
### Rating Strategy Plan
```
Current rating: [X.X] ★ ([N] ratings)
Platform: iOS / Android / Both
Success moments identified:
1. [Event name] — fires when [condition]
2. [Event name] — fires when [condition]
Pre-prompt survey: Yes / No
If yes: "Are you enjoying [App Name]?" → Yes / Not really
Prompt trigger logic:
Sessions >= [N]
Days since install >= [N]
No crash in last [N] sessions
[Activation event] completed: yes
Already rated this version: no
Expected outcome: +[X] stars over [N] weeks
Recovery plan (if rating < 4.0):
1. [Fix] — ship by [date]
2. [Reply strategy] — [N] reviews to address
3. [Prompt campaign] — start [date], target [segment]
```
## Related Skills
- `review-management` — Respond to reviews to recover rating
- `onboarding-optimization` — Fix activation issues that drive 1-star reviews
- `android-aso` — Play In-App Review API context
- `retention-optimization` — Engaged users give better ratingsRelated Skills
monetization-strategy
When the user wants to design or optimize their app's monetization — pricing, paywalls, subscriptions, or in-app purchases. Also use when the user mentions "pricing", "paywall", "subscription", "IAP", "how to monetize", "revenue optimization", "free trial", or "conversion to paid". For retention impact, see retention-optimization. For competitive pricing, see competitor-analysis.
ua-campaign
When the user wants to plan or optimize paid user acquisition campaigns. Also use when the user mentions "Apple Search Ads", "user acquisition", "paid ads", "UA", "ad campaign", "install campaign", "Facebook ads for apps", "TikTok ads", or "cost per install". For organic growth, see aso-audit. For launch-specific UA, see app-launch.
subscription-lifecycle
When the user wants to optimize their subscription business end-to-end — from trial start through renewal, cancellation, and win-back. Use when the user mentions "subscription lifecycle", "trial conversion", "churn", "cancellation", "win-back", "lapsed subscribers", "dunning", "billing retry", "grace period", "renewal rate", "subscriber LTV", or "resubscribe". For paywall design and pricing strategy, see monetization-strategy. For subscription analytics dashboards, see app-analytics.
seasonal-aso
When the user wants to optimize their App Store listing for seasonal events, holidays, or trending moments — including keyword opportunities, metadata updates, screenshot theming, and timing strategy. Use when the user mentions "seasonal", "holiday", "Christmas", "New Year", "Valentine's Day", "summer", "back to school", "seasonal keywords", "trending now", "limited time", or wants to capitalize on a calendar event. For general keyword research, see keyword-research. For full metadata rewrites, see metadata-optimization.
screenshot-optimization
When the user wants to design, optimize, or evaluate App Store screenshots and preview videos. Also use when the user mentions "screenshots", "app preview", "product page design", "screenshot design", "creative assets", or "what should my screenshots show". For A/B testing screenshots, see ab-test-store-listing. For full ASO audit, see aso-audit.
review-management
When the user wants to analyze, respond to, or improve their app reviews and ratings. Also use when the user mentions "reviews", "ratings", "negative reviews", "how to get more reviews", "review response", or "my rating is dropping". For broader ASO audit, see aso-audit. For retention issues causing bad reviews, see retention-optimization.
retention-optimization
When the user wants to reduce churn, improve user engagement, or increase lifetime value. Also use when the user mentions "retention", "churn", "users leaving", "engagement", "DAU/MAU", "user activation", or "why are users uninstalling". For onboarding-specific issues, see app-launch. For monetization, see monetization-strategy.
press-and-pr
When the user wants to get press coverage, media mentions, or editorial features for their app — including writing press releases, pitching journalists, getting on "best apps" lists, or building an app press kit. Use when the user mentions "press", "PR", "media coverage", "TechCrunch", "journalist", "press release", "app press kit", "get featured in media", "editorial coverage", "review from a blogger", or "app launch announcement". For Apple editorial featuring, see app-store-featured. For launch strategy, see app-launch.
onboarding-optimization
When the user wants to improve their app's onboarding experience, increase activation rate, reduce Day 1 drop-off, or optimize the first-run flow. Use when the user mentions "onboarding", "first-run", "activation", "tutorial", "day 1 retention", "new user flow", "permission prompts", "sign-up conversion", "onboarding funnel", or "users dropping off early". For overall retention strategy, see retention-optimization. For paywall placement, see monetization-strategy.
metadata-optimization
When the user wants to optimize App Store metadata — title, subtitle, keyword field, or description. Also use when the user mentions "optimize my title", "ASO metadata", "keyword field", "character limits", "app description", or "write my subtitle". For keyword discovery, see keyword-research. For full ASO audits, see aso-audit.
market-pulse
When the user wants a comprehensive App Store market overview, daily/weekly market briefing, or combined view of chart movements, trending keywords, featured apps, and new releases. Also use when the user mentions "market overview", "what's happening on the App Store", "market briefing", "weekly report", "market trends", or "state of the market". For chart-specific rank changes only, see market-movers. For keyword trends only, see keyword-research.
market-movers
When the user wants to track App Store chart rank changes, find top gainers and losers, detect breakout apps entering the top 100, or identify apps dropping out of charts. Also use when the user mentions "chart movers", "rank changes", "who's rising", "who's falling", "new chart entries", "top gainers", or "market shifts". For broader market overview, see market-pulse. For competitive keyword analysis, see competitor-analysis.