Skill: iOS ASO Generator

A Claude Code skill that scans your Swift/SwiftUI codebase and emits paste-ready App Store metadata — App Name, Subtitle, Keywords, Description, and more.

2 May 20266 min readAgent optimised version
AI-Ometerslop disclosure index
Mostly AI80%
 

iOS App Store Optimization (ASO) Generator

This skill scans an iOS Swift/SwiftUI codebase and emits a single English-only ASO.md at the repo root containing paste-ready App Store metadata plus a research-notes appendix. It encodes Apple's 2025–2026 metadata rules, WWDC25 changes (App Store Tags, CPP organic keywords, SAP collapse), and a codebase-signal extraction taxonomy.

The whole searchable surface on the App Store is 160 characters total: App Name (30) + Subtitle (30) + Keywords (100). Everything else exists for conversion or browse — not search ranking. Get those 160 right and the rest follows.

Install

/plugin marketplace add https://github.com/conorluddy/ASOMarketplace
/plugin install ios-aso-plugin

Then in any iOS project:

/ios-aso

When this skill applies

Trigger when you want to:

  • Generate ASO metadata for a new iOS app
  • Audit or improve an existing App Store listing
  • Pick keywords from your codebase
  • Choose a category, write a subtitle, draft a description, or prepare for submission
  • Check metadata for rejection risk (2.3.7)

The skill assumes English (U.S.) primary locale. Cross-localization expansion (en-GB, en-AU, en-CA, es-MX) is offered as an optional appendix in the output.

Workflow

Step 1 — Confirm iOS project and find the brand

Confirm the working directory is an iOS project: look for *.xcodeproj, *.xcworkspace, or a Package.swift declaring an iOS platform.

Find the brand name in this precedence order:

  1. fastlane/metadata/en-US/name.txt (if present, treat existing files as the source of truth and propose refinements rather than rewrites)
  2. CFBundleDisplayName in the primary target's Info.plist
  3. CFBundleName
  4. The Xcode target name
  5. The repo's README first heading

Step 2 — Scan the codebase for signals

Build a feature inventory by union-ing signals across Tier 1–4 sources:

  • Tier 1: Info.plist (NS*UsageDescription strings), Localizable.strings / .xcstrings, fastlane/metadata, README
  • Tier 2: *.entitlements, PrivacyInfo.xcprivacy, Xcode capabilities (widgets, Live Activities, App Clips, Background Modes)
  • Tier 3: App Intents (AppIntent, AppShortcut), StoreKit IAPs, SwiftUI/UIKit view + module names, Core Data / SwiftData entities, Package.swift / Podfile dependencies
  • Tier 4: Snapshot test names, accessibility identifiers

Tokenize all user-facing strings, frequency-rank after stop-word filtering, and produce a candidate keyword pool of 30–50 single words.

Step 3 — Synthesize the metadata

Pick the keyword set, not phrases. Choose 10–20 single-word tokens that recombine across Title + Subtitle + Keywords into the highest-relevance 2- and 3-word phrases. Apple combines words across those three fields within a locale to form search phrases. Tokens multiply; phrases don't.

Draft fields in this order:

  1. App Name (≤30 chars): Brand: Keyword Phrase (colon is the most efficient separator). For new/indie apps put 1–2 of your strongest keywords here.
  2. Subtitle (≤30 chars): A readable mini-sentence with 2–3 keyword tokens not used in the Name. Leave 1–2 chars headroom — the last word of a fully-packed subtitle occasionally fails to index.
  3. Keywords field (≤100 chars): Comma-separated, no spaces after commas. Single words only. Exclude every word already in Name, Subtitle, primary category, and Apple's stop-word list.
  4. Primary category: Drives browse placement AND is a text-relevance signal in search.
  5. Secondary category: Browse only.
  6. Promotional Text (≤170): Updatable anytime without a build — use for promos, new features, social proof.
  7. Description: First 170 chars are the hook (above the "more" fold). Then 5–10 benefit-led bullets.
  8. What's New: Template only.
  9. IAP names (≤30) and descriptions (≤45) for each detected StoreKit product.
  10. Screenshot caption suggestions — per WWDC25, captions feed Apple's AI tagging.

Step 4 — Validate against the rules

Hard rules:

  • App Name ≤30 chars; Subtitle ≤30; Keywords ≤100
  • Keywords field has no spaces after commas — Apple counts them
  • No word appears in more than one of Name/Subtitle/Keywords (or in the primary category)
  • No plurals of singular forms used elsewhere (Apple stems English; climb and climbs are duplicates)
  • Single words only in the Keywords field

Apple Review 2.3.7 rejection triggers (default-exclude):

  • Trademarks the developer doesn't own
  • Competitor brand names in the Keywords field
  • Superlatives without proof: #1, Best, Top, World's Best
  • Pricing language: Free, 50% Off, $0.99
  • Generic catch-alls: app, the, for, of, game, best, top
  • "AI" claims without genuine AI integration

Step 5 — Write ASO.md

The skill writes a 16-section output file:

SectionPurpose
TL;DROne-line summary of the strategy
App NameFinal with char count
SubtitleFinal with char count
KeywordsFinal comma-separated string
Promotional TextUpdatable copy
DescriptionFull with fold-break marked
What's NewTemplate
IAPsNames + descriptions per product
CategoriesPrimary + secondary
Screenshot CaptionsPer-screen suggestions
Cross-LocalizationOptional en-GB/AU/CA/MX appendix
Custom Product PagesCPP keyword targets
ASA SeedApple Search Ads seed terms
Pre-Submission Checklist2.3.7 and hard-rule verification
Research NotesWhy each choice was made, citing codebase evidence
Candidate PoolEvery considered keyword with evidence, for iteration

The Research Notes section is what you read to iterate — concrete evidence like "Picked workout because it appears 47× across Localizable.strings and the project depends on HealthKit."

Notes on the post-September-2025 keyword research landscape

The legacy Apple Search Ads "Search Popularity" score collapsed on Sept 29, 2025 — ~77% of U.S. keywords now floor to "5". Don't rely on it. Free signals that still work:

  • App Store autocomplete (Apple-direct)
  • App Store search results count + which apps rank for a term
  • Apple Ads' beta Monthly Search Term Rank Report (limited to legacy SAP ≥ 35 terms)

If you have access to AppTweak / Sensor Tower / MobileAction / Appfigures / App Radar — cross-validate the skill's picks. The skill itself doesn't assume any paid tool.

Iteration

ASO is iterative. The skill produces a v1. Submit, wait ~4 weeks, track keyword rankings in App Store Connect Analytics, and replace bottom-quartile keywords with alternates from the Candidate Pool. Promotional Text refreshes every 30–90 days. Re-run the skill after major feature ships.