@leejungkiin/awkit 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +15 -0
  2. package/core/GEMINI.md +45 -7
  3. package/package.json +3 -3
  4. package/skills/ab-test-store-listing/SKILL.md +220 -0
  5. package/skills/android-aso/SKILL.md +197 -0
  6. package/skills/app-analytics/SKILL.md +210 -0
  7. package/skills/app-clips/SKILL.md +163 -0
  8. package/skills/app-icon-optimization/SKILL.md +170 -0
  9. package/skills/app-launch/SKILL.md +153 -0
  10. package/skills/app-marketing-context/SKILL.md +129 -0
  11. package/skills/app-store-featured/SKILL.md +213 -0
  12. package/skills/apple-search-ads/SKILL.md +205 -0
  13. package/skills/asc-metrics/SKILL.md +157 -0
  14. package/skills/aso-audit/SKILL.md +179 -0
  15. package/skills/competitor-analysis/SKILL.md +163 -0
  16. package/skills/competitor-tracking/SKILL.md +185 -0
  17. package/skills/crash-analytics/SKILL.md +181 -0
  18. package/skills/in-app-events/SKILL.md +176 -0
  19. package/skills/keyword-research/SKILL.md +141 -0
  20. package/skills/localization/SKILL.md +165 -0
  21. package/skills/market-movers/SKILL.md +137 -0
  22. package/skills/market-pulse/SKILL.md +170 -0
  23. package/skills/metadata-optimization/SKILL.md +170 -0
  24. package/skills/monetization-strategy/SKILL.md +175 -0
  25. package/skills/onboarding-optimization/SKILL.md +194 -0
  26. package/skills/orchestrator/SKILL.md +297 -25
  27. package/skills/press-and-pr/SKILL.md +204 -0
  28. package/skills/rating-prompt-strategy/SKILL.md +184 -0
  29. package/skills/retention-optimization/SKILL.md +165 -0
  30. package/skills/review-management/SKILL.md +154 -0
  31. package/skills/screenshot-optimization/SKILL.md +167 -0
  32. package/skills/seasonal-aso/SKILL.md +141 -0
  33. package/skills/spec-gate/SKILL.md +312 -0
  34. package/skills/subscription-lifecycle/SKILL.md +206 -0
  35. package/skills/swiftui-pro/references/design.md +44 -0
  36. package/skills/symphony-enforcer/SKILL.md +92 -11
  37. package/skills/systematic-debugging/SKILL.md +32 -7
  38. package/skills/ua-campaign/SKILL.md +207 -0
  39. package/skills/verification-gate/SKILL.md +23 -2
@@ -0,0 +1,181 @@
1
+ ---
2
+ name: crash-analytics
3
+ description: When the user wants to monitor, triage, or reduce their app's crash rate — including setting up Crashlytics, prioritizing which crashes to fix first, interpreting crash data, and understanding how crashes affect App Store ranking. Use when the user mentions "crash", "crashlytics", "crash rate", "ANR", "app not responding", "crash-free sessions", "crash-free users", "symbolication", "stability", "firebase crashes", "app crashing", or "crash report". For overall analytics setup, see app-analytics.
4
+ metadata:
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # Crash Analytics
9
+
10
+ You help triage, prioritize, and reduce app crashes — and understand how crash rate affects App Store discoverability and ratings.
11
+
12
+ ## Why Crash Rate Is an ASO Signal
13
+
14
+ - **App Store ranking** — Apple's algorithm penalizes apps with high crash rates
15
+ - **App Store featuring** — High crash rate disqualifies editorial consideration
16
+ - **Ratings** — Crashes are the #1 cause of 1-star reviews
17
+ - **Retention** — A crash in the first session destroys Day 1 retention
18
+
19
+ **Target:** crash-free sessions > 99.5% | crash-free users > 99%
20
+
21
+ ## Tools
22
+
23
+ | Tool | What it provides | Setup |
24
+ |------|-----------------|-------|
25
+ | **Firebase Crashlytics** | Real-time crashes, ANRs, symbolicated stack traces | Add `FirebaseCrashlytics` pod/SPM package |
26
+ | **App Store Connect** | Crash rate trend, crashes per session | Built-in, no code needed |
27
+ | **Xcode Organizer** | Aggregated crash logs from TestFlight + App Store | Xcode → Window → Organizer → Crashes |
28
+ | **MetricKit** | On-device diagnostics, hang rate, launch time | iOS 13+, automatic |
29
+
30
+ **Recommended:** Crashlytics (real-time alerts + search) + App Store Connect (trend validation)
31
+
32
+ ## Crashlytics Setup
33
+
34
+ ### iOS (Swift)
35
+
36
+ ```swift
37
+ // AppDelegate or @main App struct
38
+ import FirebaseCore
39
+ import FirebaseCrashlytics
40
+
41
+ @main
42
+ struct MyApp: App {
43
+ init() {
44
+ FirebaseApp.configure()
45
+ // Crashlytics is auto-initialized
46
+ }
47
+ }
48
+ ```
49
+
50
+ ### Non-fatal errors (track without crashing)
51
+
52
+ ```swift
53
+ // Log a non-fatal error
54
+ Crashlytics.crashlytics().record(error: error)
55
+
56
+ // Log a custom key for debugging context
57
+ Crashlytics.crashlytics().setCustomValue(userId, forKey: "user_id")
58
+ Crashlytics.crashlytics().setCustomValue(screenName, forKey: "current_screen")
59
+ ```
60
+
61
+ ### Android (Kotlin)
62
+
63
+ ```kotlin
64
+ // build.gradle (app)
65
+ implementation("com.google.firebase:firebase-crashlytics:18.x.x")
66
+
67
+ // No additional code needed — auto-captures unhandled exceptions
68
+ // For non-fatal:
69
+ FirebaseCrashlytics.getInstance().recordException(throwable)
70
+ ```
71
+
72
+ ## Triage Framework
73
+
74
+ Not all crashes are equal. Prioritize by impact:
75
+
76
+ **Priority Score = Crash Frequency × Affected Users × User Segment Weight**
77
+
78
+ | Priority | Criteria | Response time |
79
+ |----------|---------|---------------|
80
+ | P0 — Critical | Crashes on launch / checkout / core feature; >1% of sessions | Fix today |
81
+ | P1 — High | Crashes in common flows; >0.1% of sessions | Fix this release |
82
+ | P2 — Medium | Edge case crashes; <0.1% of sessions | Fix next release |
83
+ | P3 — Low | Rare, non-blocking crashes; <0.01% of sessions | Backlog |
84
+
85
+ ### Crashlytics Dashboard Triage
86
+
87
+ 1. Sort by **"Impact"** (unique users affected), not frequency
88
+ 2. Group: `onboarding`, `checkout`, `core feature`, `background`, `launch`
89
+ 3. Assign P0/P1 to the top 3–5 issues
90
+ 4. Set a **velocity alert** in Crashlytics for any issue affecting >0.5% of users
91
+
92
+ ## Reading a Crash Report
93
+
94
+ ```
95
+ Fatal Exception: com.example.NullPointerException
96
+ at com.example.UserProfileVC.loadData:87
97
+ at com.example.HomeVC.viewDidLoad:45
98
+
99
+ Keys:
100
+ user_id: 12345
101
+ current_screen: "home"
102
+ app_version: "2.3.1"
103
+ os_version: "iOS 17.3"
104
+ ```
105
+
106
+ **Steps to debug:**
107
+ 1. Open the file and line in Xcode (`UserProfileVC.swift:87`)
108
+ 2. Check what can be nil at that point
109
+ 3. Reproduce with the user context (OS version, device, screen)
110
+ 4. Write a failing test before fixing
111
+
112
+ ## Symbolication
113
+
114
+ Crashlytics auto-symbolicates if you upload dSYMs. If you see unsymbolicated traces:
115
+
116
+ ```bash
117
+ # Manually upload dSYMs
118
+ ./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios MyApp.app.dSYM
119
+ ```
120
+
121
+ For Bitcode-enabled builds, download dSYMs from App Store Connect → Activity → Build → dSYMs.
122
+
123
+ ## App Store Connect Crash Data
124
+
125
+ - **App Store Connect → App Analytics → Crashes** — Crash rate trend per version
126
+ - Compare crash rate before and after each release
127
+ - A spike on a specific version = regression in that release
128
+
129
+ **Crash rate formula:** Crashes / Sessions × 100
130
+
131
+ ## Release Strategy to Minimize Blast Radius
132
+
133
+ Use phased releases to catch crashes before full rollout:
134
+
135
+ **iOS:** App Store Connect → Version → Phased Release (7-day rollout: 1% → 2% → 5% → 10% → 20% → 50% → 100%)
136
+
137
+ **Android:** Play Console → Production → Managed publishing → Rollout percentage
138
+
139
+ **Rule:** Monitor Crashlytics for 24 hours at each phase. If crash rate increases >0.2%, pause rollout.
140
+
141
+ ## Responding to Crash-Driven 1-Star Reviews
142
+
143
+ 1. Identify the app version where crash-related 1-stars appeared
144
+ 2. Fix the crash
145
+ 3. Reply to each crash-related review: "Fixed in version X.X — please update"
146
+ 4. After update ships, use `rating-prompt-strategy` to recover rating
147
+
148
+ ## Output Format
149
+
150
+ ### Crash Audit Report
151
+
152
+ ```
153
+ Stability Report — [App Name] v[version] ([period])
154
+
155
+ Crash-free sessions: [X]% (target: >99.5%)
156
+ Crash-free users: [X]% (target: >99%)
157
+ Top crash issues:
158
+
159
+ P0 Issues (fix immediately):
160
+ #1 [Exception type] — [X] users, [X]% of sessions
161
+ File: [filename:line]
162
+ Cause: [hypothesis]
163
+ Fix: [specific action]
164
+
165
+ P1 Issues (this release):
166
+ #2 [Exception type] — [X] users, [X]% of sessions
167
+ ...
168
+
169
+ Action Plan:
170
+ Today: Fix P0 issue #1 → release hotfix
171
+ This week: Fix P1 issues #2, #3 → include in v[X.X]
172
+ Monitoring: Set velocity alert at 0.5% session threshold
173
+ ```
174
+
175
+ ## Related Skills
176
+
177
+ - `app-analytics` — Full analytics stack; Crashlytics is one piece
178
+ - `rating-prompt-strategy` — Recover rating after fixing crash-driven 1-stars
179
+ - `review-management` — Respond to crash-related reviews
180
+ - `retention-optimization` — Crashes on Day 1 destroy retention metrics
181
+ - `app-store-featured` — Crash rate > 2% disqualifies editorial featuring
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: in-app-events
3
+ description: When the user wants to create, plan, or optimize App Store In-App Events — the event cards that appear on the Today tab, search results, and your product page. Use when the user mentions "in-app event", "App Store event", "event card", "Today tab", "live event", "challenge", "game event", "seasonal event card", or wants visibility beyond organic search. For general ASO, see aso-audit. For seasonal keyword strategy, see seasonal-aso.
4
+ metadata:
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # In-App Events
9
+
10
+ You help the user plan, write, and optimize **App Store In-App Events** — event cards that surface in search, the Today tab, and the product page, driving installs and re-engagement without paid media.
11
+
12
+ ## What In-App Events Are
13
+
14
+ In-App Events are time-limited content cards on the App Store. They appear:
15
+ - **Today tab** (editorial + algorithmic)
16
+ - **Search results** (alongside app results)
17
+ - **Your product page**
18
+ - **Personalized recommendations** (for lapsed users)
19
+
20
+ **Key advantage:** Existing users who haven't opened your app recently are notified of events. Non-users see them as discovery.
21
+
22
+ ## Event Types
23
+
24
+ | Type | Best For | Example |
25
+ |------|----------|---------|
26
+ | **Challenge** | User-generated competition | "30-Day Streak Challenge" |
27
+ | **Competition** | Ranked or scored contest | "Weekly High Score Leaderboard" |
28
+ | **Live Event** | Real-time activity | "Live Q&A with Experts" |
29
+ | **Major Update** | Significant new feature | "Introducing AI Coach" |
30
+ | **Premiere** | First-time content launch | "New Series: Morning Routines" |
31
+ | **Special Event** | Seasonal or themed moment | "Holiday Collection Unlocked" |
32
+
33
+ ## Event Card Specs
34
+
35
+ | Field | Limit | Notes |
36
+ |-------|-------|-------|
37
+ | **Event name** | 30 chars | Appears prominently — keyword-conscious |
38
+ | **Short description** | 50 chars | Below the name on cards |
39
+ | **Long description** | 120 chars | Shown in expanded event view |
40
+ | **Event card image** | 2160×1080px | 2:1 ratio, PNG/JPG, no text required |
41
+ | **Badge** | — | Chosen from the 6 type badges above |
42
+ | **Duration** | Up to 31 days | Start and end time required |
43
+
44
+ Up to **10 events** can be live or scheduled at a time.
45
+
46
+ ## Planning Workflow
47
+
48
+ ### Step 1 — Event Idea Selection
49
+
50
+ 1. Check for `app-marketing-context.md`
51
+ 2. Evaluate event type based on app category:
52
+
53
+ | App Type | Best Event Types |
54
+ |----------|----------------|
55
+ | Games | Challenge, Competition, Major Update |
56
+ | Fitness | Challenge, Live Event, Major Update |
57
+ | Productivity | Major Update, Premiere |
58
+ | Social / Community | Live Event, Challenge |
59
+ | Streaming / Content | Premiere, Special Event |
60
+ | Utility | Major Update, Special Event |
61
+
62
+ 3. Identify the primary goal:
63
+ - **Re-engagement** → Use notification-triggering events (any type)
64
+ - **New user acquisition** → Focus on Today tab visibility (Challenge or Competition)
65
+ - **Feature launch** → Major Update type
66
+
67
+ ### Step 2 — Write Event Copy
68
+
69
+ **Event name (30 chars) — rules:**
70
+ - Lead with the user benefit or action, not your app name
71
+ - Include relevant keywords where natural
72
+ - ✅ "30-Day Habit Challenge" | ❌ "AppName Challenge 2026"
73
+
74
+ **Short description (50 chars):**
75
+ - Answer "what's in it for me?" in one line
76
+ - ✅ "Build a streak and win exclusive rewards"
77
+
78
+ **Long description (120 chars):**
79
+ - Expand on the short description: what, when, and why to join
80
+ - ✅ "Join our 30-day challenge. Complete daily habits, hit your streak, and unlock your achievement badge."
81
+
82
+ ### Step 3 — Event Card Image
83
+
84
+ Spec: 2160×1080px, 2:1 ratio
85
+
86
+ **Best practices:**
87
+ - No text needed (name/description appear as overlay) — but a short tagline is allowed
88
+ - High contrast, bold visual that works at small thumbnail size
89
+ - Show the outcome or reward, not just the app UI
90
+ - Test thumbnail at 390×195px to verify legibility
91
+
92
+ ### Step 4 — Submit in App Store Connect
93
+
94
+ 1. App Store Connect → Your App → In-App Events → `+`
95
+ 2. Fill all required fields + upload image
96
+ 3. Submit for review (typically 24–48 hours)
97
+ 4. Schedule start/end times
98
+
99
+ **Submit 3–5 days before** the desired start date to account for review time.
100
+
101
+ ## Optimization Tips
102
+
103
+ ### Maximize Today Tab Placement
104
+
105
+ Apple's algorithm favors events that are:
106
+ - **Timely** — tied to real-world moments (holidays, trends, app anniversaries)
107
+ - **High quality** — polished images, complete descriptions
108
+ - **Engaging** — event types that drive sessions (challenges > updates)
109
+ - **Consistent** — apps that run regular events get better recurring placement
110
+
111
+ **Run at least one event per month** to maintain algorithmic eligibility.
112
+
113
+ ### Keyword Visibility in Search
114
+
115
+ Event names and short descriptions are **indexed by the App Store search algorithm**.
116
+
117
+ - Include 1–2 target keywords in the event name naturally
118
+ - The short description can reinforce secondary keywords
119
+ - Use `keyword-research` skill to validate which terms to include
120
+
121
+ ### Re-engagement Notification
122
+
123
+ Users who have downloaded your app but haven't opened it recently receive a push notification for your event automatically — no opt-in required. This is the highest-value feature of In-App Events.
124
+
125
+ **Make the event name the notification subject line** — write it to be compelling as a standalone message.
126
+
127
+ ## Output Format
128
+
129
+ ### Event Brief
130
+
131
+ ```
132
+ 📅 Event: [Name — 30 chars]
133
+ Type: [Badge type]
134
+ Dates: [Start] → [End]
135
+
136
+ Copy:
137
+ Short: [50 chars]
138
+ Long: [120 chars]
139
+
140
+ Image direction:
141
+ Visual: [describe the scene/concept]
142
+ Style: [photography / illustration / abstract]
143
+ Key element: [the reward, the action, the outcome]
144
+
145
+ Goals:
146
+ Primary: [re-engagement / acquisition / feature launch]
147
+ KPIs: [sessions spike, downloads, event page views]
148
+
149
+ Submit by: [date — 4 days before start]
150
+ ```
151
+
152
+ ### Event Calendar (monthly)
153
+
154
+ ```
155
+ Week 1: [Event name] — [type] — [dates]
156
+ Week 2: [No event / buffer]
157
+ Week 3: [Event name] — [type] — [dates]
158
+ Week 4: [Event name] — [type] — [dates]
159
+ ```
160
+
161
+ ## Common Mistakes
162
+
163
+ | Mistake | Fix |
164
+ |---------|-----|
165
+ | App name in event name | Lead with the user benefit |
166
+ | Generic image (screenshot of UI) | Show the reward/outcome visually |
167
+ | Events shorter than 7 days | Minimum 7 days for Today tab consideration |
168
+ | Submitting day-of | Submit 4–5 days early for review |
169
+ | No recurring schedule | Run 1+ events/month for sustained placement |
170
+
171
+ ## Related Skills
172
+
173
+ - `seasonal-aso` — Align event timing with keyword seasonal peaks
174
+ - `screenshot-optimization` — Apply same visual best practices to event images
175
+ - `app-store-featured` — Events increase editorial feature eligibility
176
+ - `retention-optimization` — Track re-engagement lift from events
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: keyword-research
3
+ description: When the user wants to discover, evaluate, or prioritize App Store keywords. Also use when the user mentions "keyword research", "find keywords", "search volume", "keyword difficulty", "keyword ideas", or "what keywords should I target". For implementing keywords into metadata, see metadata-optimization. For auditing current keyword performance, see aso-audit.
4
+ metadata:
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # Keyword Research
9
+
10
+ You are an expert ASO keyword researcher with deep knowledge of App Store search behavior, keyword indexing, and ranking algorithms. Your goal is to help the user discover high-value keywords and build a prioritized keyword strategy.
11
+
12
+ ## Initial Assessment
13
+
14
+ 1. Check for `app-marketing-context.md` — read it for app context, competitors, and goals
15
+ 2. Ask for the **App ID** (to understand current rankings)
16
+ 3. Ask for **target country** (default: US)
17
+ 4. Ask for **seed keywords** — 3-5 words that describe the app's core function
18
+ 5. Ask about **intent**: Are they optimizing for downloads, revenue, or brand awareness?
19
+
20
+ ## Research Process
21
+
22
+ ### Phase 1: Seed Expansion
23
+
24
+ Start with the user's seed keywords and expand using multiple methods:
25
+
26
+ **Apple Search Suggestions**
27
+ - Use each seed keyword to get autocomplete suggestions
28
+ - Try variations: "[keyword] app", "[keyword] for [audience]", "best [keyword]"
29
+ - Note long-tail suggestions — these often have lower competition
30
+
31
+ **Competitor Keywords**
32
+ - Pull keyword rankings for top 3-5 competitors
33
+ - Identify keywords competitors rank for that the user doesn't
34
+ - Look for keywords where competitors rank poorly (opportunity)
35
+
36
+ **Category Analysis**
37
+ - What keywords do top apps in the category target?
38
+ - Are there category-specific terms the user is missing?
39
+
40
+ **Synonym & Related Terms**
41
+ - Generate synonyms and related terms for each seed keyword
42
+ - Consider how users actually describe the problem (not the solution)
43
+ - Think about misspellings and abbreviations users might search
44
+
45
+ ### Phase 2: Keyword Evaluation
46
+
47
+ For each keyword candidate, evaluate:
48
+
49
+ | Signal | What to check | Why it matters |
50
+ |--------|--------------|----------------|
51
+ | **Search Volume** | Volume score (1-100) or traffic estimate | Higher volume = more potential impressions |
52
+ | **Difficulty** | Competition score (1-100) | Lower difficulty = easier to rank |
53
+ | **Relevance** | How closely it matches the app's function | Irrelevant traffic doesn't convert |
54
+ | **Intent** | Is the searcher looking to download? | "how to edit photos" vs "photo editor app" |
55
+ | **Current Rank** | Where the app currently ranks (if at all) | Easier to improve existing rank than start from zero |
56
+
57
+ ### Phase 3: Opportunity Scoring
58
+
59
+ Calculate an **Opportunity Score** for each keyword:
60
+
61
+ ```
62
+ Opportunity = (Volume × 0.4) + ((100 - Difficulty) × 0.3) + (Relevance × 0.3)
63
+ ```
64
+
65
+ Where:
66
+ - Volume: 1-100 scale
67
+ - Difficulty: 1-100 scale (inverted — lower difficulty = higher score)
68
+ - Relevance: 1-100 scale (manual assessment)
69
+
70
+ ### Phase 4: Keyword Grouping
71
+
72
+ Group keywords into strategic buckets:
73
+
74
+ **Primary Keywords (3-5)**
75
+ - Highest opportunity score
76
+ - Must appear in title or subtitle
77
+ - These define your core positioning
78
+
79
+ **Secondary Keywords (5-10)**
80
+ - Good opportunity but lower priority
81
+ - Target in subtitle and keyword field
82
+ - May rotate based on performance
83
+
84
+ **Long-tail Keywords (10-20)**
85
+ - Lower volume but very specific intent
86
+ - Fill remaining keyword field space
87
+ - Often easier to rank for
88
+
89
+ **Aspirational Keywords (3-5)**
90
+ - High volume, high difficulty
91
+ - Long-term targets as the app grows
92
+ - Track but don't sacrifice primary keywords for these
93
+
94
+ ## Output Format
95
+
96
+ ### Keyword Research Report
97
+
98
+ **Summary:**
99
+ - Total keywords analyzed: [N]
100
+ - High-opportunity keywords found: [N]
101
+ - Estimated total monthly search volume: [N]
102
+
103
+ **Top Keywords by Opportunity:**
104
+
105
+ | Keyword | Volume | Difficulty | Relevance | Opportunity | Current Rank | Action |
106
+ |---------|--------|------------|-----------|-------------|--------------|--------|
107
+ | [keyword] | [1-100] | [1-100] | [1-100] | [score] | [rank or —] | Primary |
108
+
109
+ **Keyword Strategy:**
110
+
111
+ ```
112
+ Title (30 chars): [primary keyword 1] + [primary keyword 2]
113
+ Subtitle (30 chars): [secondary keywords]
114
+ Keyword Field (100): [remaining keywords, comma-separated]
115
+ ```
116
+
117
+ **Competitor Keyword Gap:**
118
+
119
+ | Keyword | Your Rank | Competitor 1 | Competitor 2 | Competitor 3 | Gap? |
120
+ |---------|-----------|-------------|-------------|-------------|------|
121
+
122
+ **Recommendations:**
123
+ 1. Immediate changes to make
124
+ 2. Keywords to start tracking
125
+ 3. Content/feature opportunities based on keyword demand
126
+
127
+ ## Tips for the User
128
+
129
+ - **Don't repeat keywords** across title, subtitle, and keyword field — Apple indexes each field separately
130
+ - **Use singular forms** — Apple automatically indexes both singular and plural
131
+ - **No spaces after commas** in the keyword field — save characters
132
+ - **Avoid "app" and category names** — Apple already knows your category
133
+ - **Update quarterly** — Search trends change with seasons and culture
134
+ - **Track weekly** — Monitor rank changes to measure impact
135
+
136
+ ## Related Skills
137
+
138
+ - `metadata-optimization` — Implement the keyword strategy into actual metadata
139
+ - `aso-audit` — Broader audit that includes keyword performance
140
+ - `competitor-analysis` — Deep dive into competitor keyword strategies
141
+ - `localization` — Keyword research for international markets
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: localization
3
+ description: When the user wants to localize their App Store listing for international markets. Also use when the user mentions "localization", "translate my app", "international markets", "expand to new countries", "localize metadata", or "which countries should I target". For keyword research in specific markets, see keyword-research. For metadata writing, see metadata-optimization.
4
+ metadata:
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # App Store Localization
9
+
10
+ You are an expert in App Store internationalization and localization strategy. Your goal is to help the user expand to new markets by localizing their App Store presence effectively.
11
+
12
+ ## Initial Assessment
13
+
14
+ 1. Check for `app-marketing-context.md` — read it for current markets and languages
15
+ 2. Ask for the **App ID** (to see current localizations)
16
+ 3. Ask: **Is the app itself localized** (UI, content) or just the store listing?
17
+ 4. Ask: **Which markets** are they considering?
18
+ 5. Ask: **Budget** — professional translation or AI-assisted?
19
+
20
+ ## Market Prioritization
21
+
22
+ ### Tier 1 Markets (highest ROI for most apps)
23
+
24
+ | Market | Language | App Store Code | Notes |
25
+ |--------|----------|---------------|-------|
26
+ | United States | English | en-US | Largest market |
27
+ | United Kingdom | English | en-GB | Easy win if US is done |
28
+ | Germany | German | de-DE | Largest EU market |
29
+ | Japan | Japanese | ja | High ARPU, competitive |
30
+ | France | French | fr-FR | Large EU market |
31
+ | South Korea | Korean | ko | High smartphone penetration |
32
+ | China | Simplified Chinese | zh-Hans | Massive but complex (needs ICP) |
33
+ | Brazil | Portuguese | pt-BR | Largest LATAM market |
34
+ | Canada | English/French | en-CA/fr-CA | Easy win |
35
+ | Australia | English | en-AU | Easy win |
36
+
37
+ ### Tier 2 Markets (good potential)
38
+
39
+ Spain (es-ES), Italy (it), Netherlands (nl), Sweden (sv), Russia (ru), Mexico (es-MX), India (en-IN/hi), Indonesia (id), Turkey (tr), Saudi Arabia (ar-SA)
40
+
41
+ ### How to Choose
42
+
43
+ Evaluate each market on:
44
+
45
+ | Factor | Weight | How to assess |
46
+ |--------|--------|--------------|
47
+ | Market size | 30% | iPhone user base in country |
48
+ | Competition | 25% | How many localized competitors? |
49
+ | Effort | 20% | Translation complexity, cultural distance |
50
+ | Revenue potential | 15% | ARPU in the market |
51
+ | Strategic fit | 10% | Does your app solve a local need? |
52
+
53
+ ## Localization Checklist
54
+
55
+ ### Metadata Localization
56
+
57
+ For each target market:
58
+
59
+ - [ ] **Title** (30 chars) — Localized with market-specific keywords
60
+ - [ ] **Subtitle** (30 chars) — Localized with local keywords
61
+ - [ ] **Keyword field** (100 chars) — Completely new research per market
62
+ - [ ] **Description** (4000 chars) — Translated and culturally adapted
63
+ - [ ] **Promotional text** (170 chars) — Localized for local events/seasons
64
+ - [ ] **What's New** — Translated for each update
65
+ - [ ] **Screenshots** — Text overlays translated, culturally appropriate imagery
66
+ - [ ] **App Preview Video** — Subtitles or localized version
67
+
68
+ ### Critical: Keywords Are NOT Translations
69
+
70
+ **The biggest localization mistake:** Translating English keywords directly.
71
+
72
+ Instead:
73
+ 1. Run `keyword-research` for each target market separately
74
+ 2. Understand how locals search (different terms, different intent)
75
+ 3. Use local autocomplete suggestions
76
+ 4. Check what local competitors use in their metadata
77
+
78
+ **Example:**
79
+ - English keyword: "budget tracker"
80
+ - German: "Haushaltsbuch" (household book) — NOT "Budget Tracker"
81
+ - Japanese: "家計簿" (household ledger) — completely different concept
82
+ - Spanish: "control de gastos" (expense control) — different framing
83
+
84
+ ### Cultural Adaptation
85
+
86
+ | Element | What to check |
87
+ |---------|--------------|
88
+ | Screenshots | Currency symbols, date formats, number formats |
89
+ | Colors | Cultural color associations (red = luck in China, danger in West) |
90
+ | Imagery | Diverse representation, culturally appropriate |
91
+ | Tone | Formal vs informal varies by culture |
92
+ | Features | Highlight features relevant to local needs |
93
+ | Social proof | Use local press, local user counts if possible |
94
+ | Pricing | Local pricing expectations (purchasing power parity) |
95
+
96
+ ## Localization Workflow
97
+
98
+ ### Phase 1: Research (per market)
99
+
100
+ 1. Analyze top 10 apps in your category in the target market
101
+ 2. Run keyword research with local seed terms
102
+ 3. Identify local competitors and their positioning
103
+ 4. Understand local App Store trends
104
+
105
+ ### Phase 2: Translation & Adaptation
106
+
107
+ **For metadata (title, subtitle, keywords):**
108
+ - Use native speakers with ASO knowledge (not just translators)
109
+ - Provide context: "This is an App Store title, must include [keyword]"
110
+ - Review with keyword data — does the translation include high-volume terms?
111
+
112
+ **For description:**
113
+ - Professional translation with cultural adaptation
114
+ - Not word-for-word — adapt examples, references, humor
115
+ - Maintain the same persuasive structure
116
+
117
+ **For screenshots:**
118
+ - Translate text overlays
119
+ - Adjust UI language if app is localized
120
+ - Consider local design preferences
121
+
122
+ ### Phase 3: Launch & Monitor
123
+
124
+ 1. Submit localized metadata
125
+ 2. Monitor keyword rankings in each market (weekly)
126
+ 3. Track conversion rate by country
127
+ 4. Iterate based on performance data
128
+
129
+ ## Output Format
130
+
131
+ ### Localization Plan
132
+
133
+ For each recommended market:
134
+
135
+ ```
136
+ ## [Country] — [Language]
137
+
138
+ Priority: [High/Medium/Low]
139
+ Estimated effort: [hours/days]
140
+ Expected impact: [download increase estimate]
141
+
142
+ Keywords (top 10):
143
+ | Keyword | Volume | Difficulty | English equivalent |
144
+ |---------|--------|------------|-------------------|
145
+
146
+ Metadata:
147
+ - Title: [localized title] ([X]/30 chars)
148
+ - Subtitle: [localized subtitle] ([X]/30 chars)
149
+ - Keywords: [localized keyword field] ([X]/100 chars)
150
+
151
+ Cultural notes:
152
+ - [specific adaptations needed]
153
+ ```
154
+
155
+ ### Market Prioritization Matrix
156
+
157
+ | Market | Size | Competition | Effort | Revenue | Score | Priority |
158
+ |--------|------|-------------|--------|---------|-------|----------|
159
+
160
+ ## Related Skills
161
+
162
+ - `keyword-research` — Run for each target market
163
+ - `metadata-optimization` — Write localized metadata
164
+ - `screenshot-optimization` — Localize screenshot designs
165
+ - `competitor-analysis` — Analyze local competitors