metadata-audit
Skill7 starsChanged 4 months agoMITView on GitHub
When the user wants to audit or improve an app's store listing metadata using ASOScan (the current title, subtitle/short description, description, keyword field, and what's-new, plus ASOScan's ASO score and recommendations and the change history), then draft specific, honest improvements within the platform's character limits. Also use when the user mentions "audit my listing", "improve my metadata", "optimize my title/subtitle/description", "what's my ASO score", "rewrite my app store copy", or "what changed in my listing", or wants listing text drafted for another language ("translate my listing", "localize my listing"). For choosing which keywords to target, see keyword-opportunities.
- Reads credentials
1 other project uses a version of this.
Adopted by
Most recently taken up by
- gmanch94/claude-code-aidlc-templatetheir own version, first seen Jul 11, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- gmanch94/claude-code-aidlc-template★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- aso-fundamentalsSkill
- asoscan-routerSkill
- asoscan-setupSkill
- competitor-analysisSkill
- keyword-intelligenceSkill
- keyword-opportunitiesSkill
- keyword-spySkill
- review-insightsSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 77
If a limit is decision-critical, verify against Apple's/Google's official docs first.
- Very specific: line 81
Use ASOScan's overall + pillar scores as the quantitative backbone.
- Distinctive: line 117
Every suggestion must be concrete (exact text + char count) and tied to a real keyword or conversion reason.
- Distinctive: line 122
Use this when the user wants their listing in another language or country.
- Distinctive: line 124
Read the saved drafts first.
- Very specific: line 126
If the answer says ASOScan is preparing the keyword data for that market, nothing was charged.
- Very specific: line 136
No invented claims/awards/"#1" superlatives (also banned in Google titles).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Metadata Audit
Score the listing with ASOScan's ASO score, find the gaps, and draft better copy — specific, within limits, and honest.
When to use
- "Audit / optimize my app listing." · "What's my ASO score and how do I raise it?"
- "Rewrite my title / subtitle / description." · "What metadata changed recently?"
Getting the data (two modes)
Pick the first mode that applies, then follow the steps below.
- ASOScan tools are connected (the ASOScan plugin or connector in ChatGPT or Claude, or any MCP client): use the tool named in the table. Do not ask for an API key and do not run
curl. Tool results have the same fields as the API responses below, and a list comes back insideitems. If a tool answers with a message instead of data (reconnect, credits used up, plan limit, "preparing"), pass that message on and stop. - No tools, but you can run shell commands and
ASOSCAN_API_KEYis set: make the API call in the table. Basehttps://asoscan.com/api/public/v1, headerAuthorization: Bearer $ASOSCAN_API_KEY, JSON with camelCase fields. Never print the key. Capture the HTTP status and handle errors as described at the bottom. - Neither: hand off to asoscan-setup. It explains how to connect ASOScan in ChatGPT or Claude, or how to create an API key.
ASOScan only sees the apps in the user's own account and the competitors they track. Every call uses API credits (failed calls are free). Before a call that costs more than 2 API credits, or one that uses AI, tell the user the cost and wait for a yes. Before any call that changes data, ask first.
| Step | Tool (connected) | API call (key) | API credits |
| Find the app | list_my_apps | GET /apps | free |
| ASO score | get_aso_score | GET /apps/{id}/aso-score?country= | free |
| ASOScan recommendations | get_aso_recommendations | GET /apps/{id}/recommendations | free |
| Current listing text | get_listing_metadata | GET /apps/{id}/metadata?country= | free |
| Change history | get_metadata_changelog | GET /apps/{id}/metadata/changelog?country= | free |
| Saved drafts for other languages | list_localized_drafts | GET /apps/{id}/localizations/drafts | free |
| Draft listing text for another language (AI) | draft_localized_metadata | POST /apps/{id}/localizations/{locale}/draft | 2 + 1 AI credit, say the cost first |
Steps
- Find the app —
GET /apps→ note theidandplatform(Apple vs Google — the rules differ). - ASO score (authoritative) —
GET /apps/{id}/aso-score?country=(free) →{ overall, metadata, ratings, conversion, conversionIsProxy, grade, platform, recommendations[]{ category, severity, title, description } }(0–100; severitycritical|warning|info). Use this as the headline number; don't invent one. - Recommendations (
get_aso_recommendationsorGET /apps/{id}/recommendations) →{ items[]{ id, status, platform, category, priority, title, why, how, expectedImpact, updatedAt }, generatedAt }. Lead with the highest priority items and use theirwhyandhowin your field-by-field advice. - Current metadata:
GET /apps/{id}/metadata?country=(free) →{ title, subtitle, promotionalText, keywords, shortDescription, description, whatsNew, releaseDate }. A 404 = nothing captured yet. - Change history:
GET /apps/{id}/metadata/changelog?country=(free) →[{ field, oldValue, newValue, changedAt, oldVersion, newVersion }]. - Target keywords: pull winners from keyword-opportunities / keyword-intelligence.
Platform rules to enforce (Apple/Google official, current)
Apple — indexed search text = Title + Subtitle + hidden Keyword field (+ primary category):
- Title 30 chars, Subtitle 30 chars, Keyword field 100 characters (non-Latin scripts consume it faster).
- Keyword field: commas between terms (a space is allowed within a phrase but costs a character — most list single words and let Apple recombine them across name + subtitle + keywords).
- Don't repeat a word already in Title/Subtitle/category; skip plurals
of included words, generic terms (
app,game), filler (the,to), and competitor/trademarked terms. - Long description is NOT indexed for Apple search — optimize it for conversion. Promotional text (170 chars) isn't a search signal (but updates anytime, no release).
- Screenshots: the first 1–3 appear in search results.
Google — indexed search text = Title + Short description + Full description:
- Title 30 chars, Short description 80 chars, Full description 4,000 chars and it is indexed — weave keywords in naturally (Google penalizes stuffing).
- Title bans: emojis, ALL CAPS, "best/#1/free", CTAs.
- Screenshots: up to 8 per device type.
If a limit is decision-critical, verify against Apple's/Google's official docs first.
The audit
Use ASOScan's overall + pillar scores as the quantitative backbone; weight your
emphasis toward the lowest pillar. Grade Title/Subtitle, Description, Keywords,
Ratings, Conversion (conversionIsProxy: true = estimated until store analytics are
connected), and Freshness.
Always print a score with its denominator. overall is out of 100;
metadata, ratings and conversion are each out of 25. A bare "metadata 25"
reads as a failing grade when it is in fact a perfect one.
Know what the pillars measure. metadata scores completeness and limit
compliance — is each indexed field present, and does it use a sensible share of its
character budget. It does not judge whether the copy is any good: nothing checks that
the title carries a term users search, or that the subtitle states a benefit rather than a
slogan. conversion is the same shape — it counts assets like screenshots and cannot see
what is in them. So never tell the user a 25/25 means their copy is optimal; say the
fields are complete and in-limit, then do the quality read yourself in the field-by-field
section below. That judgement is the value you add on top of the score.
Output template
### Metadata audit — {App} · {platform} ({country}) · credits left: {remaining}
**ASO score: {overall}/100 ({grade})** (metadata {metadata}/25 · ratings {ratings}/25 · conversion {conversion}/25)
**Top 3 quick wins (<1h):** 1) {exact new text + char count} 2) …
**Field-by-field**
- **Title** ({used}/30): "{current}" → "{new}" ({N} chars) — {why}
- **Subtitle/Short** ({used}/{30|80}): "{current}" → "{new}" — {why}
- **Keywords** (Apple, {used}/100): "{current}" → "{new}" — no dupes vs title/subtitle
- **Description / What's new:** {fix}
**ASOScan recommendations:** {surface each by severity}Every suggestion must be concrete (exact text + char count) and tied to a real keyword or conversion reason. Point the user back to ASOScan to re-score after edits.
Listing text for another language
Use this when the user wants their listing in another language or country.
- Read the saved drafts first. If one exists for that locale, show it before writing a new one.
- Tell the user a new draft costs 2 API credits and 1 AI credit, then call it with the store locale (for example
de-DE,fr-FR,es-ES). - If the answer says ASOScan is preparing the keyword data for that market, nothing was charged. Tell the user to ask again in a minute. Use
force(the tool'sforceinput, or?force=true) only when the last "preparing" answer is several minutes old. - Show each variant with its character counts against the platform limits above. The draft is saved in ASOScan. ASOScan does not publish listing text to the stores; the user copies it into App Store Connect or Google Play Console.
Describe the benefit only as Apple documents it: localized name, subtitle and keywords are searchable in every storefront that supports that language, so more people can find the app. Never say a translation raises keyword rank.
Errors, credits & honesty
401→ asoscan-setup ·403no API access ·402out of credits ·404no metadata yet ·503not enabled yet. Reads here are free; only drafting a localized listing costs credits (2 API + 1 AI).- No invented claims/awards/"#1" superlatives (also banned in Google titles). Respect limits exactly. Recommend the outcome, not a guaranteed rank.
- Full reference: https://asoscan.com/api/developers
Related
- keyword-opportunities / keyword-intelligence — choose the keywords to target.
- competitor-analysis — benchmark against rivals.
- review-insights — turn recurring confusion into clearer copy.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

