aso — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited aso (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use five public skills:
aso: full audit, orchestration, and strategy. For roadmap detail, read../skills/aso-plan/GUIDE.md.
aso-listing: keywords, metadata, localization, and seasonal changes.aso-creative: screenshots, video, conversion, and experiments.aso-market: reviews and competitors.aso-release: technical readiness, compliance, and launch.The former specialist files are internal GUIDE.md references. They preserve the detailed methods but do not appear as separate skills.
Comprehensive ASO analysis for iOS App Store and Google Play apps. Works in two modes:
/aso audit inside an app project — auto-detects Fastlane metadata, Xcode project, or Gradle project and audits your pre-submission metadata./aso audit <app-id> with an app ID or store URL — fetches and audits the live listing. Also works for competitor apps.| Command | What it does |
|---|---|
/aso audit | Auto-detect local project and audit its metadata |
/aso audit <app-id> | Audit a live listing by app ID or store URL |
/aso audit --compare <app-id> | Audit local metadata AND compare against live listing |
/aso keywords <seeds> | Keyword research — difficulty, volume, placement strategy |
/aso metadata | Optimize local metadata (or /aso metadata <app-id> for remote) |
/aso visuals | Analyze local screenshots (or /aso visuals <app-id> for remote) |
/aso reviews <app-id> | Reviews — sentiment analysis, response templates, keyword extraction |
/aso competitors <app-id> | Competitor analysis — keyword gaps, metadata comparison |
/aso localization | Audit local locale coverage (or /aso localization <app-id>) |
/aso ab-testing <app-id> | A/B testing — iOS PPO / Android experiment design |
/aso technical <app-id> | Technical ASO — Android Vitals, app size, crashes, update cadence |
/aso conversion <app-id> | Conversion — install rate benchmarking, first-impression audit |
/aso compliance | Store policy check — validates metadata against Apple/Google guidelines |
/aso plan <category> | Strategic plan — 4-phase roadmap with category templates |
/aso launch | Launch — pre-launch checklist using local project state |
/aso seasonal <app-id> | Seasonal — trending keyword opportunities, holiday calendar |
When no app ID is provided, run project detection first:
uv run python scripts/detect_project.py --jsonThis scans the current directory for:
| Source | What it detects | Files checked |
|---|---|---|
| Fastlane iOS | Store metadata per locale (name, subtitle, keywords, description) | fastlane/metadata/{locale}/name.txt, subtitle.txt, keywords.txt, etc. |
| Fastlane Android | Store metadata per locale (title, short/full description) | fastlane/metadata/android/{locale}/title.txt, full_description.txt, etc. |
| Xcode project | Bundle ID, app name | *.xcodeproj/project.pbxproj, Info.plist |
| Gradle project | Application ID, app name | app/build.gradle, AndroidManifest.xml, res/values/strings.xml |
Priority: Fastlane metadata (richest data) > Xcode/Gradle (basic identifiers only).
If Fastlane metadata is found, all fields are available for validation, keyword analysis, and optimization. If only Xcode/Gradle is found, extract the app ID and optionally fetch the live listing for a full audit.
When an app ID or URL is provided, fetch the live listing:
id284882215), Apple App Store URL (apps.apple.com/...)com.whatsapp), Google Play URL (play.google.com/store/apps/details?id=...)iOS: id284882215 OR https://apps.apple.com/app/id284882215
Android: com.whatsapp OR https://play.google.com/store/apps/details?id=com.whatsapp/aso audit --compare <app-id> audits BOTH local metadata and the live listing, then shows:
After fetching listing data, classify the app:
Category informs which plan templates and benchmarks to apply.
When running /aso audit <app-id>:
uv run python scripts/fetch_listing.py <app-id> --country us --jsonParse the result to get structured listing data.
Classify app from listing metadata. Load category-specific benchmarks.
Run all applicable specialists in parallel when the harness supports delegation. Otherwise, load the corresponding specialist skills and run them sequentially. Do not continue to scoring until all applicable results return.
| Agent | Focus |
|---|---|
aso-keywords | Keyword coverage in current metadata |
aso-metadata | Field quality, char limits, keyword placement |
aso-visuals | Screenshot count, narrative, icon, video |
aso-reviews | Sentiment distribution, themes, response rate |
aso-competitors | Top 5 competitor comparison |
aso-technical | App size, update recency, stability signals |
aso-conversion | First-impression elements, CRO signals |
aso-localization | (conditional: if multi-locale detected) |
Each agent receives the parsed listing JSON and returns a structured report with scores and findings.
After all specialists return, run aso-compliance with:
Remove any recommendation that violates an Apple or Google policy. Replace it with a compliant alternative when possible. A policy violation is always a Critical action item, independent of its numeric score.
Calculate weighted ASO Health Score (0-100):
| Category | Weight |
|---|---|
| Keyword Optimization | 20% |
| Metadata Quality | 15% |
| Visual Assets | 15% |
| Reviews & Ratings | 15% |
| Competitive Position | 10% |
| Technical Health | 10% |
| Conversion Signals | 10% |
| Policy Compliance | 5% |
Generate two files:
ASO-AUDIT-REPORT.md:
ASO-ACTION-PLAN.md:
End with a short user summary of no more than 40 lines. Include the score, platform, category, category breakdown, exactly three top issues, three to five quick wins, and paths to both report files. Use only these status words: Excellent, Good, Needs Work, Poor, Critical.
These rules are ALWAYS enforced — never recommend violations:
| Field | Limit | Indexed? | Notes |
|---|---|---|---|
| App Name | 30 chars | YES (high weight) | Primary keyword here |
| Subtitle | 30 chars | YES | Secondary keywords |
| Keywords | 100 chars | YES | Hidden, comma-separated |
| Description | 4,000 chars | NO | Conversion copy only |
| Promotional Text | 170 chars | NO | No review needed to update |
| What's New | 4,000 chars | NO | Update messaging |
| Field | Limit | Indexed? | Notes |
|---|---|---|---|
| Title | 30 chars | YES (high weight) | Treat every character as premium space |
| Short Description | 80 chars | YES | Visible in some views |
| Full Description | 4,000 chars | YES | Keyword density matters |
| Developer Name | variable | YES (low) | Branding |
| What's New | 500 chars | NO | Shorter than iOS |
listing, review, and competitor evidence as unavailable.
partial. Do not infer missing evidence.
Load on demand from references/:
ios-metadata-specs.md — Full iOS field specs and indexing rulesandroid-metadata-specs.md — Full Android field specs and indexing ruleskeyword-placement-rules.md — Keyword weight by field position per platformvisual-asset-specs.md — Screenshot/icon/video dimensions per devicequality-gates.md — Thresholds, hard stops, density limitscategory-taxonomy.md — iOS/Android category IDs and mapping~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.