Aso review risk
Scan your App Store / Google Play listing copy for the things that get apps REJECTED — unverifiable claims ("#1", "best"), prices or promos in the name/subtitle, competitor/trademark names, and keyword stuffing (Guideline 2.3.7). Flags each risk with the guideline it violates and a concrete fix, BEFORE you submit. Use before any metadata submission or resubmission. Self-contained; no paid API, no account. Use when the user says "will my app get rejected", "check my listing before I submit", "is this metadata safe to submit", "review my app store copy for rejection risk", or "will this pass App Store review".From its SKILL.md
npx -y skills add airowe/store-ops --skill aso-review-riskAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.6 KB, as published. Nobody here has run it
aso-review-risk
Rejections cost you a review cycle (a day or more) and reset your momentum. Most metadata rejections are avoidable — they're the same handful of rule violations every time. This skill scans your listing copy for them before you submit, so you fix them on your terms instead of the reviewer's.
Pairs with aso-rejection-assistant: that one helps after a rejection; this one stops the rejection from happening.
Inputs
- The listing copy to check — name/title, subtitle/short description, the keyword field (iOS), promotional text, and the description. Provide the actual text you're about to submit.
- Optional:
--app <slug>to read the live listing viaaso-audit/asc-metadata-sync/gplay-metadata-syncinstead of pasting. - Optional:
--store <appstore|playstore|both>(default both).
What it flags (each with the guideline + a fix)
Scan every field for these rejection triggers. For each hit, report the field, the offending text, the guideline it risks, and a specific fix.
-
Unverifiable claims (2.3.7). Superlatives and rankings you can't prove: "#1", "best", "world's fastest", "the top …", "most popular", "guaranteed". → Fix: drop it, or make it verifiable ("rated 4.8★ by 12k users") and only if true.
-
Prices / promos in metadata (2.3.7). Prices, discounts, or time-bound offers in the name, subtitle, or keyword field: "Free", "50% off", "$4.99", "Sale", "Limited time". These belong in promotional text or the description, never the ranking fields. → Fix: move the offer to promotional text; strip it from name/subtitle.
-
Competitor & trademark names (2.3.7). Another app's name or a trademark used to piggyback ("like Notion", "Instagram downloader", brand names in the keyword field). Fastest path to a keyword-field rejection. → Fix: remove them; rank on your own value terms (chain into aso-keyword-research for legitimate high-volume alternatives).
-
Keyword stuffing / packing (2.3.7). The keyword field or description packed with irrelevant or repeated terms "to game the system" — the same word in title+subtitle+keywords (wasted + flagged), long comma-runs of loosely related terms, stop-word filler. → Fix: de-dupe across fields, keep terms genuinely relevant. (Chain into aso-metadata-optimization to re-pack within the char budget honestly.)
-
Metadata that overpromises (2.3 intro). Copy or screenshots that claim features the app doesn't have, or placeholder/"lorem"/"TODO" text left in. → Fix: make the copy match the shipped app.
Output
Write marketing/aso/<app>/review-risk-<date>.md:
- A risk table: field · offending text · guideline · severity · fix.
- A verdict line: "N high-risk items — do not submit until fixed" or "No rejection triggers found in the provided copy."
- The cited rule for each flagged guideline (see
references/rejection-triggers.mdfor the verbatim 2.3.7 text).
Severity is honest: high = a near-certain rejection trigger (price in name, unverifiable superlative, trademark in keywords); watch = borderline (aggressive but arguably defensible) — flagged so you decide, not silently passed or silently failed.
Honesty rules
- Every flag names the specific guideline and quotes the rule — never a vague "this might get rejected."
- Flagged, not Apple's verdict. A high-risk flag means "this pattern gets apps rejected," not "Apple will reject this." The reviewer decides; this gives you the informed choice to fix it first.
- Never invents a rule. If copy is clean, it says so plainly rather than manufacturing a finding to look useful.
Honest limits
- It scans the text you provide against the common metadata rules — it can't see your app's actual behavior, your privacy label accuracy, or IAP flow, so it won't catch functional-rejection reasons (4.x, 3.1.1, 5.1.x).
- The guidelines drift; the verbatim quotes in
references/are current as of authoring — verify against the live page for anything borderline. - "watch"-level items are judgment calls; the skill surfaces them, you decide.
No external dependency
Self-contained — pattern + guideline reasoning over your own copy. No paid API,
no account, no credentials. Reads the live listing only through the existing
owned-data skills when you pass --app.
Run it before every submission
Make it the last step before you hit submit — and re-run it after any copy edit from aso-metadata-optimization. When a rejection does slip through, feed its cited rule back here so the next scan pre-clears that class.
You scanned this by hand. ShipASO — the hosted agent — runs review-risk on every draft it proposes, so nothing reaches your approval queue carrying an obvious rejection trigger. Your store credentials are never held. → https://app.shipaso.com
The plugin is complete and free; the hosted tier just sells not having to remember.