store-listing-assets
Use when writing store copy to character limits (name, subtitle, descriptions, keywords) or preparing listing images (icon, feature graphic, screenshots, preview video).
Install
npx skills add https://github.com/evanca/flutter-ai-rules/tree/main/skills/store-listing-assets
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install evanca-flutter-ai-rules@llmmart
git clone https://github.com/evanca/flutter-ai-rules.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole evanca/flutter-ai-rules collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Store Listing Assets & Copy
Prepare the metadata, copy, and visual assets that go into an App Store / Google Play phone listing, sized and length-fit to each store's exact requirements. This is the listing production skill; pair it with a separate review-readiness audit at submission time so the fields are polished and the app itself is ready for review.
Two references hold the authoritative specs; consult them for exact numbers rather than reciting from memory (they drift):
references/mobile_listing_checklist.md— the actionable checklist (shared prep → per-store required → recommended → final check)references/spec_reference.md— the full spec tables, minimal valid examples, store-specific traps, and known gaps to verify live
Default scope is phone-only. Skip tablet, iPad, desktop, Chromebook, TV, watch, Mac, and visionOS assets unless the user says the app supports them — and if they do, note that those are separate asset families outside these specs.
How to use this skill
- Gather the inputs once (shared prep): final app name, what the app does in one sentence, primary category, whether it has ads, whether it collects/shares/tracks data, privacy policy URL, support contact, and launch languages. These feed both stores.
- Confirm which store(s) the user is targeting — the required set differs enough that doing both blindly wastes effort.
- Produce copy AND/OR assets per the requests below, always checking generated text against the live character/byte limits and generated images against the exact pixel/format specs.
Writing store copy (fit to limits)
Character limits are hard constraints — always count and show the count. Key limits (full set in the references):
| Field | Google Play | Apple |
|---|---|---|
| App name | 30 chars | 2–30 chars |
| Subtitle | — (no field) | 30 chars |
| Short description | 80 chars | — (use Promotional Text, 170) |
| Full description | 4,000 chars | 4,000 chars, plain text |
| Keywords | — (no field; don't keyword-stuff the description) | ≤100 bytes, each keyword >2 chars |
Copywriting rules that keep the listing compliant:
- Lead with what the app does, in the first sentence — it's what shows before "more".
- Apple keywords are bytes, not characters, comma-separated with no spaces (
notes,checklists,tasks) to save bytes; non-ASCII eats more than one byte each. Keywords are invisible to users but drive search — don't repeat the app name or category (already indexed). - Avoid claim words: "best", "#1", "free" (unless unconditionally true), rankings, awards, and pricing claims — in text AND baked into images. These trigger rejection and are called out in both stores' policies.
- When both stores are in play, write once and adapt: Play's 80-char short description ≈ Apple's subtitle+promo-text job; Apple needs a keywords line Play doesn't.
- Offer to localize per launch language; note Apple defaults screenshots/shared metadata from the primary language when you add a localization, except description and keywords (write those per language).
Producing visual assets (exact specs)
When generating or resizing images with tooling (ImageMagick, etc.), hit these exactly — wrong format/alpha/dimension is an instant listing error:
Google Play
- Play icon: 512×512 px, 32-bit PNG with alpha, ≤1024 KB
- Feature graphic: 1024×500 px, JPEG or 24-bit PNG, no alpha — required to publish
- Phone screenshots: 2–8, JPEG or 24-bit PNG, no alpha, min side 320 px, max 3840 px, longest side ≤ 2× shortest. Recommended: ≥4 at 1080×1920 (portrait) or 1920×1080 (landscape)
Apple (iPhone)
- Icon: comes from the build (Xcode asset catalog, one 1024×1024 source) — not a separate listing upload
- iPhone screenshots: 1–10, .jpg/.jpeg/.png. Preferred 6.9": 1320×2868, 1290×2796, or 1260×2736 portrait; if not providing 6.9", 6.5" required: 1284×2778 or 1242×2688. Apple scales down to smaller iPhones
- App preview (optional): ≤3 per size/language, 15–30 s, ≤500 MB, ≤30 fps, H.264/.mp4 (reusable iPhone res 886×1920 / 1920×886)
Screenshot content rules: show real app UI in use (not splash/login/mockups), no unsupported devices, no fake UI, no misleading or pricing claims baked in. Verify generated images match the actual submitted build.
Deliverables
- Full listing copy set — name, subtitle/short description, full description, keywords, promotional text — each labeled with its character/byte count against the limit, per targeted store
- Asset spec sheet / production — the exact dimensions and formats the user needs, or the generated/resized images themselves (offer to run ImageMagick for resizing/format conversion)
- Fill-in-the-fields walkthrough — the checklist from
references/mobile_listing_checklist.mdadapted to the user's app, marking which conditional items apply (account deletion URL, app access instructions, restricted permissions, export compliance) - Pre-submission asset audit — the section 6 final check: assets match the build, no placeholder/staging content, name consistent everywhere, previewed in each language
At submission time, also run a review-readiness audit, and if RevenueCat/paywalls are involved, verify paywall clarity separately.
Files (flutter-ai-rules)
-
references
-
mobile_listing_checklist.md 4.3 KB
# Mobile-only Store Listing Checklist > Scope: **phone only**. Skip tablet, iPad, desktop, Chromebook, TV, watch, Mac, and visionOS assets unless your app supports them. ## 1. Shared prep - [ ] Confirm app name is final. - [ ] Prepare privacy policy URL. - [ ] Prepare support contact or support URL. - [ ] Decide primary category. - [ ] Decide target age group / age rating answers. - [ ] Confirm whether app contains ads. - [ ] Confirm whether app collects, shares, or tracks user data. - [ ] Prepare localized copy and assets for each launch language. ## 2. Google Play, required ### Store copy - [ ] App name, max **30 chars**. - [ ] Short description, max **80 chars**. - [ ] Full description, max **4,000 chars**. - [ ] Category. - [ ] Support email. - [ ] Privacy policy URL. ### Visual assets - [ ] App icon: **512 × 512 px**, PNG, 32-bit with alpha, max **1024 KB**. - [ ] Feature graphic: **1024 × 500 px**, JPG or 24-bit PNG, no alpha. - [ ] Phone screenshots: minimum **2**, maximum **8**. - [ ] JPG or 24-bit PNG. - [ ] No alpha. - [ ] Min side: **320 px**. - [ ] Max side: **3840 px**. - [ ] Longest side no more than **2×** shortest side. ### Console declarations - [ ] Data Safety form. - [ ] Content rating questionnaire. - [ ] Target audience declaration. - [ ] Contains ads: Yes / No. - [ ] App access instructions, only if login or gated content exists. - [ ] Account deletion URL, only if users can create accounts. - [ ] Restricted permission declarations, only if applicable. ## 3. Google Play, recommended - [ ] Use at least **4 phone screenshots**. - [ ] Preferred screenshot size: - [ ] Portrait: **1080 × 1920 px**. - [ ] Landscape: **1920 × 1080 px**. - [ ] Add preview video via YouTube URL. - [ ] Public or unlisted. - [ ] Embeddable. - [ ] Not age-restricted. - [ ] Ads / monetization disabled. - [ ] Localize title, descriptions, screenshots, icon, and feature graphic where useful. - [ ] Avoid "best", "#1", "free", rankings, awards, pricing claims, or misleading badges in title, icon, screenshots, and feature graphic. ## 4. Apple App Store, required ### App record - [ ] App name, **2 to 30 chars**. - [ ] Bundle ID. - [ ] SKU. - [ ] Primary language. - [ ] Primary category. - [ ] Copyright. ### Store copy - [ ] Subtitle, max **30 chars**. - [ ] Description, max **4,000 chars**, plain text. - [ ] Keywords, max **100 bytes**. - [ ] Support URL. - [ ] Privacy Policy URL. ### Visual assets - [ ] App icon included in the build. - [ ] Use Xcode asset catalog. - [ ] Source icon: **1024 × 1024 px**. - [ ] iPhone screenshots: minimum **1**, maximum **10**. - [ ] JPG, JPEG, or PNG. - [ ] Use modern iPhone size set. - [ ] Preferred 6.9-inch portrait sizes: - [ ] **1320 × 2868 px**, or - [ ] **1290 × 2796 px**, or - [ ] **1260 × 2736 px**. - [ ] Or 6.5-inch portrait sizes if not using 6.9-inch: - [ ] **1284 × 2778 px**, or - [ ] **1242 × 2688 px**. ### App Store Connect declarations - [ ] App Privacy answers. - [ ] Age rating questionnaire. - [ ] Export compliance answers, especially if app uses encryption. - [ ] Regulated content / medical declarations, only if applicable. ## 5. Apple App Store, recommended - [ ] Add Promotional Text, max **170 chars**. - [ ] Add Marketing URL. - [ ] Add app preview video, optional. - [ ] Up to **3** per device size and language. - [ ] **15 to 30 seconds**. - [ ] Max **500 MB**. - [ ] Up to **30 fps**. - [ ] H.264 or ProRes 422 HQ. - [ ] `.mov`, `.m4v`, or `.mp4` depending on codec. - [ ] Localize app name, subtitle, description, keywords, URLs, screenshots, and previews. - [ ] Keep screenshots focused on real app UI. - [ ] Do not show unsupported devices, fake UI, misleading claims, or pricing claims that may change. ## 6. Final submission check - [ ] No tablet, iPad, desktop, Chromebook, Mac, TV, watch, or visionOS assets included unless supported. - [ ] All screenshots match the submitted app build. - [ ] All privacy answers match actual SDK and app behavior. - [ ] Privacy policy is live, public, and not a PDF. - [ ] Support contact works. - [ ] App name is consistent across app, store, website, and privacy policy. - [ ] No placeholder text, test accounts, debug UI, staging URLs, or lorem ipsum. - [ ] Build uploaded and selected for review. - [ ] Release notes added where required. - [ ] Store listing preview checked in each launch language. -
spec_reference.md 8.5 KB
# Mobile-Only Store Listing Minimum for Google Play and Apple App Store Sourced from official Google Play Console/policy help and Apple App Store Connect/Xcode docs. Compiled 2026-07. **Specs change over time — re-verify against the live console at submission, especially the "not stated / verify" items.** ## Executive summary For a **mobile-only launch**, the minimum submission set differs between the stores: - **Google Play (phone)**: separate **Play icon**, **feature graphic** (now required to publish), **short description**, **full description**, **≥2 screenshots**, plus **category**, **support email**, **privacy policy**, **Data safety**, **content rating**, **target audience**, and an **ads yes/no** declaration. No keywords field. - **Apple App Store (iPhone-only)**: **app icon supplied in the build**, **app name**, **subtitle**, **description**, **keywords**, **support URL**, **privacy policy URL**, **copyright**, **category**, **age rating**, **App Privacy answers**, and **≥1 iPhone screenshot**. App previews optional. Key contrasts: Google requires a feature graphic + 2 screenshots but has no keywords; Apple requires keywords + support URL but only 1 screenshot minimum and the icon comes from the build (not a separate listing upload). Apple has stricter device-family screenshot rules. ## Google Play — required fields and assets (phone only) | Item | Status | Specs / limits | Notes | |---|---|---|---| | App name | Required | 30 chars max, one localized name per language | Public listing title; must be policy-compliant | | Short description | Required | 80 chars max | Shown first on the detail page; localize when possible | | Full description | Required | 4,000 chars max | Google warns against repetitive/irrelevant keywords | | Play icon | Required | 32-bit PNG with alpha, 512×512 px, max 1024 KB | Separate store icon; no misleading badges/ranking text | | Feature graphic | Required | JPEG or 24-bit PNG, no alpha, 1024×500 px; no standalone max file size stated | Large-format art + preview-video cover; **required to publish** | | Phone screenshots | Required | Min 2 to publish; JPEG or 24-bit PNG, no alpha; min side 320 px, max 3840 px; longest side ≤ 2× shortest; up to 8 per device type | Google recommends ≥4 at 1080×1920 portrait or 1920×1080 landscape for featuring | | Preview video | Optional, recommended | 1 YouTube URL (no direct upload); public/unlisted, embeddable, not age-restricted, ads/monetization disabled | Strongly recommended for games | | Category | Required | Select app/game type + category in Store settings | Tags optional, up to 5 | | Support email | Required | Email required; website/phone optional | Displayed on listing | | Privacy policy URL | Required | Active, public, non-geofenced, non-editable, no PDFs | Required for ALL apps, even those collecting no data | | Data safety form | Required | Console declaration, no char limit | Required for all published apps except internal-testing-only | | Content rating | Required | IARC questionnaire | Result shown on listing | | Target audience | Required | Target age group declaration in App content | Children → Families policy applies | | Contains ads | Required | Yes/No in App content | If yes, "Contains ads" label shown | | Conditional disclosures | Only if applicable | Restricted-permission declarations, app access instructions for gated areas, News app declaration, account deletion URL if accounts exist | Not universal | ## Apple App Store — required fields and assets (iPhone only) | Item | Status | Specs / limits | Notes | |---|---|---|---| | App name | Required | 2–30 chars, localized | Public product-page name | | Subtitle | Required (per Apple's required-properties reference) | 30 chars max, localized | Under the app name on the product page | | Description | Required | 4,000 chars max, plain text, localized | Public product-page copy | | Keywords | Required | ≤100 bytes total, each keyword >2 chars, localized | Not shown publicly; search metadata | | Support URL | Required | Full URL incl. protocol, localized | Must lead to real contact info | | Privacy Policy URL | Required | Full URL | Separate from App Privacy answers | | App Privacy | Required | Questions/data types in ASC | "No, we do not collect data" path allowed | | Age rating | Required | Apple questionnaire | Unrated apps cannot publish | | Category metadata | Required | Primary Category (Secondary also listed as required); Games/Stickers need subcategories | | | Copyright | Required | Free text, © added automatically | | | iPhone screenshots | Required | 1–10 in .jpeg/.jpg/.png. Preferred 6.9": 1320×2868, 1290×2796, or 1260×2736 portrait (or landscape). If not providing 6.9", 6.5" required: 1284×2778 or 1242×2688 | Apple scales down to smaller iPhones; no standalone max file size stated | | App preview | Optional, recommended | Up to 3 per size/language; H.264 or ProRes 422 HQ; .mov/.m4v/.mp4; max 500 MB; 15–30 s; ≤30 fps; reusable iPhone res 886×1920 portrait / 1920×886 landscape | Previews appear before screenshots | | App icon | Required | Supplied in Xcode build (not a separate ASC upload); iOS auto-generates variations from one 1024×1024 image | Comes from build pipeline; no standalone max file size stated | | Marketing URL | Optional | Full URL, localizable | | | Promotional Text | Optional | 170 chars max | Editable without a new version submission | | Conditional disclosures | Only if applicable | Export-compliance answers (encryption), regulated-medical-device status, regional compliance | Not universal | ## Minimal valid examples (syntactic, not optimized marketing) ### Google Play | Field | Example | |---|---| | App name | `Acorn Notes` | | Short description | `Fast notes and checklists that sync across your devices.` | | Full description | `Acorn Notes lets you capture notes, build checklists, and keep everything organized. Create lists, pin important items, and sync your content across your signed-in devices.` | | Category | `Productivity` | | Support email | `support@example.com` | | Privacy policy URL | `https://example.com/privacy` | | Contains ads | `No` | | Data safety | `No data collected` | | Target audience | `Ages 16-17 and 18+` | | Preview video URL | `https://www.youtube.com/watch?v=EXAMPLE12345` | ### Apple App Store | Field | Example | |---|---| | App name | `Acorn Notes` | | Subtitle | `Fast lists and notes` | | Description | `Acorn Notes helps you capture ideas, build checklists, and stay organized. Create notes, group lists, and keep important items easy to find.` | | Keywords | `notes,checklists,tasks,organizer,sync` | | Support URL | `https://example.com/support` | | Privacy Policy URL | `https://example.com/privacy` | | Primary Category | `Productivity` | | Secondary Category | `Utilities` | | Copyright | `2026 Acorn Labs LLC` | | App Privacy | `No, we do not collect data from this app` | | Age rating | `No objectionable content; no unrestricted web access` | | Optional app preview | `886×1920 H.264 .mp4, 20 seconds` | ## Store-specific notes - **Google Play trap:** the current minimum requires BOTH a 512×512 icon AND a 1024×500 feature graphic to publish, plus ≥2 screenshots. Tablet/Chromebook screenshots have a separate minimum of 4 (out of scope here). - **Apple trap:** device-family specificity. iPhone and iPad media are separate; Apple scales from the highest required size down. iPhone-only = a single iPhone family set. iPad support adds a separate requirement outside this scope. - **Localization:** Google — one localized name per language plus localized text/screenshots/graphics; falls back to default or auto-translation. Apple — metadata localizations selected by user language/storefront; localized keywords affect search; adding a localization defaults screenshots and shared properties from the primary language except description and keywords. ## Known gaps ("not stated on cited page" — verify at submission) - Apple screenshot spec page publishes formats/counts/pixel dimensions but **not a standalone max screenshot file size**; same for the Apple icon source asset. - Google preview-assets page publishes screenshot formats and pixel constraints but **not a separate screenshot file-size cap** (icon cap is 1024 KB). - Apple's required-properties reference lists Subtitle and Secondary Category as required but the web table's yes/no markers don't parse cleanly for every row — treat as required, confirm in ASC. - Google says min 2 screenshots "across different device types" to publish while also allowing up to 8 per device type; for mobile-only, treat 2 phone screenshots as the minimum and sanity-check the live Play Console UI.
-
-
SKILL.md 5.5 KB
--- name: store-listing-assets description: "Use when writing store copy to character limits (name, subtitle, descriptions, keywords) or preparing listing images (icon, feature graphic, screenshots, preview video)." license: MIT --- # Store Listing Assets & Copy Prepare the metadata, copy, and visual assets that go into an App Store / Google Play **phone** listing, sized and length-fit to each store's exact requirements. This is the *listing production* skill; pair it with a separate review-readiness audit at submission time so the fields are polished and the app itself is ready for review. Two references hold the authoritative specs; consult them for exact numbers rather than reciting from memory (they drift): - `references/mobile_listing_checklist.md` — the actionable checklist (shared prep → per-store required → recommended → final check) - `references/spec_reference.md` — the full spec tables, minimal valid examples, store-specific traps, and known gaps to verify live **Default scope is phone-only.** Skip tablet, iPad, desktop, Chromebook, TV, watch, Mac, and visionOS assets unless the user says the app supports them — and if they do, note that those are separate asset families outside these specs. ## How to use this skill 1. **Gather the inputs once** (shared prep): final app name, what the app does in one sentence, primary category, whether it has ads, whether it collects/shares/tracks data, privacy policy URL, support contact, and launch languages. These feed both stores. 2. **Confirm which store(s)** the user is targeting — the required set differs enough that doing both blindly wastes effort. 3. **Produce copy AND/OR assets** per the requests below, always checking generated text against the live character/byte limits and generated images against the exact pixel/format specs. ## Writing store copy (fit to limits) Character limits are hard constraints — always count and show the count. Key limits (full set in the references): | Field | Google Play | Apple | |---|---|---| | App name | 30 chars | 2–30 chars | | Subtitle | — (no field) | 30 chars | | Short description | 80 chars | — (use Promotional Text, 170) | | Full description | 4,000 chars | 4,000 chars, plain text | | Keywords | — (no field; don't keyword-stuff the description) | ≤100 **bytes**, each keyword >2 chars | Copywriting rules that keep the listing compliant: - **Lead with what the app does**, in the first sentence — it's what shows before "more". - **Apple keywords are bytes, not characters**, comma-separated with no spaces (`notes,checklists,tasks`) to save bytes; non-ASCII eats more than one byte each. Keywords are invisible to users but drive search — don't repeat the app name or category (already indexed). - **Avoid claim words**: "best", "#1", "free" (unless unconditionally true), rankings, awards, and pricing claims — in text AND baked into images. These trigger rejection and are called out in both stores' policies. - When both stores are in play, write once and adapt: Play's 80-char short description ≈ Apple's subtitle+promo-text job; Apple needs a keywords line Play doesn't. - Offer to localize per launch language; note Apple defaults screenshots/shared metadata from the primary language when you add a localization, **except description and keywords** (write those per language). ## Producing visual assets (exact specs) When generating or resizing images with tooling (ImageMagick, etc.), hit these exactly — wrong format/alpha/dimension is an instant listing error: **Google Play** - Play icon: **512×512 px**, 32-bit PNG **with alpha**, ≤1024 KB - Feature graphic: **1024×500 px**, JPEG or 24-bit PNG, **no alpha** — required to publish - Phone screenshots: 2–8, JPEG or 24-bit PNG, no alpha, min side 320 px, max 3840 px, longest side ≤ 2× shortest. Recommended: ≥4 at 1080×1920 (portrait) or 1920×1080 (landscape) **Apple (iPhone)** - Icon: comes from the **build** (Xcode asset catalog, one 1024×1024 source) — not a separate listing upload - iPhone screenshots: 1–10, .jpg/.jpeg/.png. Preferred 6.9": **1320×2868**, 1290×2796, or 1260×2736 portrait; if not providing 6.9", 6.5" required: **1284×2778** or 1242×2688. Apple scales down to smaller iPhones - App preview (optional): ≤3 per size/language, 15–30 s, ≤500 MB, ≤30 fps, H.264/.mp4 (reusable iPhone res 886×1920 / 1920×886) Screenshot content rules: show **real app UI in use** (not splash/login/mockups), no unsupported devices, no fake UI, no misleading or pricing claims baked in. Verify generated images match the actual submitted build. ## Deliverables - **Full listing copy set** — name, subtitle/short description, full description, keywords, promotional text — each labeled with its character/byte count against the limit, per targeted store - **Asset spec sheet / production** — the exact dimensions and formats the user needs, or the generated/resized images themselves (offer to run ImageMagick for resizing/format conversion) - **Fill-in-the-fields walkthrough** — the checklist from `references/mobile_listing_checklist.md` adapted to the user's app, marking which conditional items apply (account deletion URL, app access instructions, restricted permissions, export compliance) - **Pre-submission asset audit** — the section 6 final check: assets match the build, no placeholder/staging content, name consistent everywhere, previewed in each language At submission time, also run a review-readiness audit, and if RevenueCat/paywalls are involved, verify paywall clarity separately.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.