Optimize a Shopify App Store listing for maximum installs. Helps with app title (30 chars), subtitle (62 chars), keywords (20 terms), description copy, screenshot strategy, and demo video planning. Use when user needs help with app store listing, ASO, keywords, app description, screenshots, or conversion rate optimization.
Before starting any mode, determine the current state and recommend the next logical step.
marketing/MEMORY.md and marketing/STATUS.mdmarketing/ does NOT exist: tell the user to run the init skill first and stopmarketing/apps/ to list app directories
b. If one app: use it automatically
c. If multiple apps: check if user's request mentions a specific app, otherwise ask
d. Set {slug} for all subsequent file pathsmarketing/apps/{slug}/listing.md — check each section for populated contentmarketing/apps/{slug}/keywords.md — check for keyword researchmarketing/apps/{slug}/positioning.md — note available differentiatorsPresent this dashboard to the user:
ASO Progress — {app_name}:
1. Listing Audit {done/not started/skipped}
2. Keyword Research {done/not started/in progress}
3. Title Optimization {done/not started/in progress}
4. Subtitle Optimization {done/not started/in progress}
5. Description Copy {done/not started/in progress}
6. Visual Asset Strategy {done/not started/in progress}
Positioning data: {available/not found}
Detection logic:
Based on completion state, recommend the next logical mode:
The user can override and jump to any mode. Each mode works standalone.
Score each element of an existing listing against best practices. Skip this step for pre-launch apps with empty listings.
Read references/shopify-aso-guide.md for character constraints and best practices.
Read references/funnel-benchmarks.md for install rate benchmarks.
Read marketing/apps/{slug}/listing.md and evaluate each section:
App Name (30 chars):
Subtitle (62 chars):
App Introduction (100 chars):
Search Terms:
Description:
Visual Assets:
Show a prioritized improvement list: overall score (X/6 elements optimized), ranked improvements with specific recommendations, and benchmark comparison ("Listings with all 6 elements optimized see 30-40% install rates. Your estimated range: {rate}").
Add an audit comment at the top of marketing/apps/{slug}/listing.md: <!-- Listing Audit: {date} | Score: X/6 | Priority: {top recommendation} -->. Update the Listing Changelog with the audit entry.
Research and prioritize 20 search terms merchants use to find apps like this.
Read references/shopify-aso-guide.md — keyword research methodology and prioritization criteria.
Read marketing/apps/{slug}/positioning.md — if available, extract:
If positioning data is not available:
"No positioning data found. I'll ask you directly about your target merchants and differentiators."
Ask the user: "Who is your ideal merchant, and what problem does your app solve for them?"
Walk the developer through 5 keyword sources. For each, explain the method and ask them to share findings:
Source 1 — Shopify App Store Autocomplete:
"Go to the Shopify App Store search bar. Type the first 2-3 words of what your app does and note every autocomplete suggestion. These are real merchant search terms."
Source 2 — Competitor Listings:
"Look at the titles and subtitles of your top 3-5 competitors. What keywords do they use? List them — we'll decide which to target and which to differentiate from."
Source 3 — Merchant Forums:
"Search Shopify Community and Reddit r/shopify for how merchants describe the problem your app solves. Note the exact phrases they use — this is the language your listing should speak."
Source 4 — Support Tickets (if applicable):
"If you have existing users, check your support requests. How do merchants describe what they need? Their words are your best keywords."
Source 5 — Google Trends:
"Compare 2-3 keyword variations in Google Trends (e.g., 'abandoned cart recovery' vs 'cart abandonment email'). The higher-volume variant is your primary term."
After gathering keywords from all sources, help the developer prioritize into a ranked list of 20:
| Priority | Criteria |
|---|---|
| P1 (1-5) | High volume signals, high intent, appears in multiple sources |
| P2 (6-12) | Moderate volume signals, high intent, appears in 1-2 sources |
| P3 (13-20) | Low volume, very high intent (long-tail), niche terms |
For each keyword, note: estimated volume (high/medium/low), competition level (high/medium/low), and which source(s) it came from.
Keywords file — Write to marketing/apps/{slug}/keywords.md:
# Keyword Research — {App Name}
## Research Date: {today}
## Sources Consulted
- [x/] Shopify App Store Autocomplete
- [x/] Competitor Listings
- [x/] Merchant Forums
- [x/] Support Tickets
- [x/] Google Trends
## Prioritized Keywords
| # | Keyword | Priority | Est. Volume | Competition | Source(s) |
|---|---------|----------|-------------|-------------|-----------|
| 1 | {keyword} | P1 | High | {level} | {sources} |
...
## Keyword Strategy Notes
{Any strategic observations: gaps in competitor coverage, emerging terms, etc.}
Listing file — Update the Search Terms table in marketing/apps/{slug}/listing.md with the top 20 keywords (# , Keyword, Est. Volume, Competition, Ranking columns).
Update the Listing Changelog in listing.md with the keyword research entry.
Craft the app title within Shopify's 30-character constraint.
Read references/shopify-aso-guide.md — App Name section for constraints and best practices.
marketing/apps/{slug}/keywords.md — identify the #1 primary keywordmarketing/apps/{slug}/listing.md — check current title (if any)marketing/apps/{slug}/positioning.md (optional) — app's unique angleIf keywords are not researched yet:
"I recommend running Keyword Research (Step 2) first so we can use your top keyword in the title. Want to do keywords first, or proceed with what you know?"
Generate 5-10 title options. For each option, show:
Option 1: "QuickCart B2B — Wholesale Orders" (30/30 chars)
Primary keyword: "wholesale orders" (P1)
Pattern: [Brand] — [Keyword Phrase]
Option 2: "Wholesale Ordering by QuickCart" (30/30 chars)
Primary keyword: "wholesale ordering" (P1)
Pattern: [Keyword Phrase] by [Brand]
...
Title patterns to try:
[Brand] — [Keyword] (brand recognition + SEO)[Keyword] by [Brand] (keyword-first, best for new apps)[Keyword]: [Benefit] (pure SEO + value prop)[Brand] [Keyword] (compact, no separator)For each option: show character count, identify primary keyword, rate readability (clear/ok/confusing).
Present all options. Ask the developer to pick one or request modifications. Confirm the final choice.
Update marketing/apps/{slug}/listing.md:
**Current:** field to the chosen title with character count**Alternatives tested:**Update the Listing Changelog with the title optimization entry.
Craft the subtitle within Shopify's 62-character constraint using secondary keywords.
Read references/shopify-aso-guide.md — Subtitle section for constraints and best practices.
marketing/apps/{slug}/keywords.md — identify P1-P2 keywords NOT used in the titlemarketing/apps/{slug}/listing.md — check current title (to avoid keyword repetition) and current subtitle (if any)If title is not optimized yet:
"The subtitle should complement the title with secondary keywords. I recommend optimizing the title (Step 3) first. Want to do the title first, or proceed?"
Generate 5-8 subtitle options. For each:
Option 1: "Automate B2B pricing, net terms, and quick order forms" (53/62 chars)
Secondary keywords: "B2B pricing", "net terms", "quick order"
Overlap with title: none
Option 2: "The all-in-one wholesale solution for Shopify merchants" (55/62 chars)
Secondary keywords: "wholesale solution", "Shopify merchants"
Overlap with title: "wholesale" (acceptable if title uses different form)
...
Subtitle guidelines:
Present all options. Ask the developer to pick one or request modifications.
Update marketing/apps/{slug}/listing.md:
**Current:** field to the chosen subtitle with character count**Alternatives tested:**Update the Listing Changelog with the subtitle optimization entry.
Write the App Store description using proven copywriting frameworks.
Read references/shopify-aso-guide.md — Description Structure section.
Read references/content-frameworks.md — PAS and AIDA framework details.
marketing/apps/{slug}/listing.md — current title, subtitle, keywordsmarketing/apps/{slug}/positioning.md (optional) — differentiators, competitive gapsmarketing/positioning/positioning.md (optional) — competitive analysis, positioning statementmarketing/positioning/icp.md (optional) — target merchant language and pain pointsmarketing/positioning/jtbd.md (optional) — job statement for the hookIf positioning data is available, use it to inform the description:
If positioning data is not available:
"No positioning data found. I'll ask you about your target merchants and key differentiators to write effective copy."
Ask: "Who are your target merchants, what's their biggest pain point, and what makes your app different?"
Guide the developer through the PAS structure for the above-fold section (what 98% of visitors see):
Problem:
"Name the specific pain point in merchant language. Be concrete." Ask the developer to describe the problem. Draft the Problem section.
Agitate:
"Quantify the cost of not solving it. Lost revenue, wasted time, missed opportunities." Help the developer add urgency. Draft the Agitate section.
Solution:
"Your app as the answer. Lead with the key differentiator, not a feature list." Draft the Solution section referencing the app's unique value.
Also draft a 100-character App Introduction that captures the essence of the PAS. Show character count.
For the 2% who click "more," structure the full description:
Present the complete description draft. Ask for feedback and iterate.
Update marketing/apps/{slug}/listing.md:
Update the Listing Changelog with the description writing entry.
Plan the 6 screenshots, video, and interactive demo to maximize conversion.
Read references/shopify-aso-guide.md — Visual Assets section for screenshot best practices, video guidelines, and interactive demo impact data.
marketing/apps/{slug}/listing.md — current title, subtitle, description (for messaging consistency)marketing/apps/{slug}/positioning.md (optional) — key differentiators to highlight visuallyGuide the developer through planning each screenshot slot. The first 3 are visible without scrolling and are critical.
Screenshot 1 (Hero):
"This is the most important visual. Show your app's primary value — the 'aha moment' a merchant would see. What single screen best represents what your app does?"
Screenshot 2 (Key Feature):
"Show your strongest differentiating feature in action. What does your app do that competitors don't?"
Screenshot 3 (Results/Proof):
"Show outcomes: a dashboard, analytics, or before/after. Merchants want to see what success looks like."
Screenshots 4-6 (Supporting):
"Use these for: secondary features, setup simplicity, integrations, mobile experience, or merchant testimonials overlaid on screenshots."
For each screenshot, recommend:
Create a storyboard: 0-5s hook (problem/outcome, NOT logo) → 5-15s setup (speed/ease) → 15-35s key workflow → 35-50s results (metrics, time saved) → 50-60s CTA. Include captions (merchants watch without sound). Show real UI, not mockups. Focus on merchant workflow, not feature tour.
"Interactive demos increase conversion by 20-40%. Focus on the 'aha moment' — the shortest path to the first time a merchant sees value."
Update marketing/apps/{slug}/listing.md:
Update the Listing Changelog with the visual strategy entry.
After completing any mode, update persistent state.
Read marketing/STATUS.md and update:
last_updated: today's dateactive_app: current app slug (if changed during this session)Append to marketing/logs/{today}.md (create if it doesn't exist):
## ASO Optimizer: {Mode Name}
- **Mode:** {Listing Audit / Keyword Research / Title / Subtitle / Description / Visuals}
- **App:** {app_name} ({slug})
- **Key outputs:** {brief summary of what was created/updated}
- **Next step:** {recommended next mode or next skill}
| Mode | Reference Files | Reads | Writes |
|---|---|---|---|
| Step 0: Detect & Route | — | MEMORY.md, STATUS.md, apps/{slug}/listing.md, apps/{slug}/keywords.md, apps/{slug}/positioning.md | — |
| Step 1: Listing Audit | references/shopify-aso-guide.md, references/funnel-benchmarks.md | apps/{slug}/listing.md | apps/{slug}/listing.md (audit comment + changelog) |
| Step 2: Keyword Research | references/shopify-aso-guide.md | apps/{slug}/positioning.md (optional) | apps/{slug}/keywords.md, apps/{slug}/listing.md (search terms table + changelog) |
| Step 3: Title Optimizer | references/shopify-aso-guide.md | apps/{slug}/keywords.md, apps/{slug}/listing.md, apps/{slug}/positioning.md (optional) | apps/{slug}/listing.md (app name + changelog) |
| Step 4: Subtitle Optimizer | references/shopify-aso-guide.md | apps/{slug}/keywords.md, apps/{slug}/listing.md | apps/{slug}/listing.md (subtitle + changelog) |
| Step 5: Description Writer | references/shopify-aso-guide.md, references/content-frameworks.md | apps/{slug}/listing.md, apps/{slug}/positioning.md, positioning/positioning.md, positioning/icp.md, positioning/jtbd.md (all optional) | apps/{slug}/listing.md (intro + description + changelog) |
| Step 6: Visual Assets | references/shopify-aso-guide.md | apps/{slug}/listing.md, apps/{slug}/positioning.md (optional) | apps/{slug}/listing.md (visual assets + changelog) |
| All modes | — | STATUS.md | STATUS.md, logs/{today}.md |