[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6M94DNAMH5CE86P6597WCDV":3,"skill-same:01M6M94DNAMH5CE86P6597WCDV":112},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6M94DNAMH5CE86P6597WCDV","suede-aso",null,"Suede AI App Store Optimization Skills. Use when asked to \"improve our App Store listing\" or prepare prelaunch keyword, title, subtitle, description and screenshot fields from app and console evidence. NOT FOR: app builds (android-app-factory or site-to-ios-app), release rollout (suede-play-release), paid assets (suede-ad-creative), or install instrumentation (suede-analytics).","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1554,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"suede aso","aso","evidence","paid","listing","when","title","app store","for","ad","store","app","instrumentation","android","rollout","use","install","improve","Optimization","screenshot","play","release","analytics","2026-11-10 10:12:30",false,"---\nname: suede-aso\ndescription: \"Suede AI App Store Optimization Skills. Use when asked to \\\"improve our App Store listing\\\" or prepare prelaunch keyword, title, subtitle, description and screenshot fields from app and console evidence. NOT FOR: app builds (android-app-factory or site-to-ios-app), release rollout (suede-play-release), paid assets (suede-ad-creative), or install instrumentation (suede-analytics).\"\nmetadata:\n  display-name: \"Suede AI App Store Optimization Skills\"\n  version: 2.0.1\n---\n\n# Suede AI App Store Optimization Skills\n\nRead [the worked delivery contract](references\u002Fworked-contract.md) for a concrete\ninput, expected artifact, failure response and validation example.\n\n## Compatibility\n\nWorks with live listing URLs or a prelaunch feature brief; web access for current official store field rules, console exports for performance evidence. Store write access is unnecessary for an audit or metadata draft.\n\nAnalyze App Store and Google Play listings with the Suede ASO scoring system. Fetch\nlive listing data, score metadata, visuals, and ratings, then produce a\nprioritized action plan.\n\n## Before Auditing\n\n**Check for product marketing context first:**\nIf `.agents\u002Fproduct-marketing.md` exists (or `.claude\u002Fproduct-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.\n\n## Phase 1: Identify Store & Fetch\n\n### Detect store type from URL\n\n```\nApple:  apps.apple.com\u002F{country}\u002Fapp\u002F{name}\u002Fid{digits}\nGoogle: play.google.com\u002Fstore\u002Fapps\u002Fdetails?id={package}\n```\n\nIf the user gives an app name instead of a URL, search the web for:\n`site:apps.apple.com \"{app name}\"` or `site:play.google.com \"{app name}\"`\n\n### Fetch the listing\n\nUse WebFetch to retrieve the listing page. Extract every available field:\n\n**Apple App Store fields:**\n\n- App name (title): 30 char limit\n- Subtitle: 30 char limit\n- Description (long): not indexed for search, but matters for conversion\n- Promotional text: 170 chars, updatable without new release\n- Category (primary + secondary)\n- Screenshots (count, order, caption text)\n- Preview video (presence, duration)\n- Rating (average + count)\n- Recent reviews (visible ones)\n- Price \u002F in-app purchases\n- Developer name\n- Last updated date\n- Version history notes\n- Age rating\n- Size\n- Languages \u002F localizations listed\n- In-app events (if any visible)\n\n**Google Play fields:**\n\n- App name (title): 30 char limit\n- Short description: 80 char limit\n- Full description: 4,000 char limit, IS indexed for search\n- Category + tags\n- Feature graphic (presence)\n- Screenshots (count, order)\n- Preview video (presence)\n- Rating (average + count)\n- Recent reviews (visible ones)\n- Price \u002F in-app purchases\n- Developer name\n- Last updated date\n- What's new text\n- Downloads range\n- Content rating\n- Data safety section\n- Languages listed\n\nIf WebFetch returns incomplete data (stores render client-side), note gaps and\nwork with what's available. Ask the user to paste missing fields if critical.\n\n### Visual asset assessment\n\nWebFetch cannot extract screenshot images or caption text. **Take a screenshot\nof the listing page** to get visual data:\n\n1. Navigate to the listing URL and capture a full-page screenshot\n2. Assess the screenshot for: icon quality, screenshot count, caption text,\n   messaging quality, preview video presence, feature graphic (Google Play)\n3. If browser tools are unavailable, ask the user to share a screenshot of the\n   listing page\n\n**Promotional text (Apple):** This 170-char field appears above the description\nbut is often indistinguishable from it in scraped HTML. If you cannot confirm\nits presence, note this and recommend the user check App Store Connect.\n\n---\n\n## Phase 1.5: Assess Brand Maturity\n\nBefore scoring, classify the app into one of three tiers. This determines how\nyou interpret \"textbook ASO\" deviations: a deliberate brand choice by a\nhousehold name is not the same as a missed opportunity by an unknown app.\n\n### Tier definitions\n\n| Tier            | Signals                                                                                                                              | Examples                                    |\n| --------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- |\n| **Dominant**    | Household name, 1M+ ratings, top-10 in category, near-universal brand recognition. Users search by brand name, not generic keywords. | Instagram, Uber, Spotify, WhatsApp, Netflix |\n| **Established** | Well-known in their category, 100K+ ratings, strong organic installs, recognized brand but not universally known.                    | Strava, Notion, Duolingo, Cash App, Calm    |\n| **Challenger**  | Building awareness, \u003C100K ratings, needs discovery through keywords and ASO tactics. Most apps fall here.                            | Your app, most indie\u002Fstartup apps           |\n\nClassification happens here, before any scoring. The per-dimension adjustments\neach tier earns live under \"Brand Maturity Adjustments\" in\n`references\u002Fscoring-criteria.md`, which Phase 2 loads before scoring: do not\nrestate or re-derive them here.\n\n**Key principle:** Before docking points, ask: \"Is this a mistake or a deliberate\nchoice by a team that has data I don't?\" If the app has 1M+ ratings and a\ndedicated ASO team, assume their choices are data-informed unless clearly wrong.\n\n---\n\n## Phase 2: Score Each Dimension\n\nScore each dimension 0-10 using the criteria in `references\u002Fscoring-criteria.md`.\nApply the brand maturity tier adjustments from Phase 1.5.\n\nReference files for platform specs and benchmarks:\n\n- `references\u002Fapple-specs.md`: Official Apple character limits, screenshot\u002Fvideo specs, CPP\u002FPPO rules, rejection triggers\n- `references\u002Fgoogle-play-specs.md`: Official Google Play limits, screenshot specs, Android Vitals thresholds, policies\n- `references\u002Fbenchmarks.md`: How to use (and not use) third-party benchmarks, directional patterns, and how to build a client baseline from console data\n\n### Dimensions and Weights\n\n| #   | Dimension            | Weight | What It Covers                                                            |\n| --- | -------------------- | ------ | ------------------------------------------------------------------------- |\n| 1   | Title & Subtitle     | 20%    | Character usage, keyword presence, clarity, brand + keyword balance       |\n| 2   | Description          | 15%    | First 3 lines, natural use of core terms (Google), CTA, structure, promotional text |\n| 3   | Visual Assets        | 25%    | Screenshot count\u002Fquality\u002Fmessaging, video, icon, feature graphic          |\n| 4   | Ratings & Reviews    | 20%    | Average rating, volume, recency, developer responses                      |\n| 5   | Metadata & Freshness | 10%    | Category choice, update recency, localization count, data safety          |\n| 6   | Conversion Signals   | 10%    | Price positioning, IAP transparency, social proof, download range         |\n\n**Final score** = weighted sum of the dimensions that were actually observed.\n\n### Unassessable dimensions (read before computing any score)\n\n`references\u002Fscoring-criteria.md` defines score 0 as \"cannot assess (data\nunavailable)\". Missing data is the normal case here, not the exception:\nWebFetch cannot extract screenshots or caption text, and promotional text is\nindistinguishable in scraped HTML. A 0 for unfetched data is not a bad listing;\nscoring it as one fabricates a failing grade (an unobserved Visual Assets\ndimension at 25% weight silently drops an A listing to D).\n\nHouse rule:\n\n1. A dimension you could not observe is **excluded from the weighted\n   denominator**, not scored 0. Rescale the remaining weights and state the\n   denominator used (\"74\u002F100 across 4 dimensions carrying 75% weight\").\n2. List every excluded dimension as **not assessed**, with the reason and what\n   the user would need to supply to close it (a screenshot of the listing page,\n   App Store Connect access).\n3. If **more than 25% of total weight** is unassessed, **withhold the letter\n   grade entirely.** Report the partial scores and the blocked dimensions\n   instead; do not present a grade the evidence cannot support.\n\n### Score interpretation\n\n| Score  | Grade | Meaning                                                   |\n| ------ | ----- | --------------------------------------------------------- |\n| 85-100 | A     | Well-optimized; focus on A\u002FB testing and iteration        |\n| 70-84  | B     | Good foundation; clear opportunities to improve           |\n| 50-69  | C     | Significant gaps; prioritized fixes will have high impact |\n| 30-49  | D     | Major optimization needed across multiple dimensions      |\n| 0-29   | F     | Listing needs a complete overhaul                         |\n\n---\n\n## Phase 3: Competitor Comparison (Optional)\n\nIf the user provides competitor URLs or asks for comparison:\n\n1. Fetch 2-3 top competitors in the same category\n2. Run the same scoring on each\n3. Build a comparison table highlighting where the user's app is weaker\u002Fstronger\n4. Identify keyword gaps: terms competitors rank for that the user's app doesn't target\n\nIf no competitors are specified, suggest the user provide 2-3 or offer to search\nfor top apps in their category.\n\n---\n\n## Phase 4: Generate Report\n\nUse the template in `references\u002Freport-template.md` to structure the output.\n\nThe report must include:\n\n1. **Score card**: table with all 6 dimensions, scores, the weighted denominator\n   actually used, and the grade (withheld per the unassessable-dimension rule\n   when more than 25% of weight went unassessed)\n2. **Top 3 quick wins**: changes that take \u003C1 hour and have highest impact\n3. **Detailed findings**: per-dimension breakdown with specific issues and fixes\n4. **Keyword suggestions**: based on title\u002Fdescription analysis and competitor gaps\n5. **Visual asset recommendations**: specific screenshot\u002Fvideo improvements\n6. **Priority action plan**: ordered list of changes by impact vs effort\n\n### Report rules\n\n- Every recommendation must be **specific and actionable** (\"Change subtitle from X to Y\" not \"Improve subtitle\")\n- Include character counts for all text recommendations\n- Flag platform-specific differences (Apple vs Google) when relevant\n- Note what CANNOT be assessed without paid tools (search volume, exact rankings)\n- When suggesting keyword changes, explain WHY each keyword matters\n\n---\n\n## Platform-Specific Rules\n\nCharacter limits, screenshot and video specs, CPP and experiment rules, policy\nprohibitions, Android Vitals thresholds, editorial curation, and rejection\ntriggers are versioned in the three reference files listed in Phase 2. Read the\none for the store being audited before scoring any dimension against a spec:\nthey are the source of truth, and dated platform facts are not repeated here.\n\nThe one comparison that drives scoring on every audit stays inline:\n\n### What Apple Indexes vs What Google Indexes\n\n| Field                 | Apple Indexed?   | Google Indexed?        |\n| --------------------- | ---------------- | ---------------------- |\n| Title                 | Yes              | Yes (strongest signal) |\n| Subtitle \u002F Short desc | Yes              | Yes                    |\n| Keyword field         | Yes (hidden)     | Does not exist         |\n| Long description      | No               | Yes (heavily)          |\n| Screenshot captions   | Unconfirmed      | No                     |\n| In-app events         | Yes              | N\u002FA (LiveOps instead)  |\n| Developer name        | No               | Partial                |\n| IAP names             | Yes              | Yes                    |\n\n### Store listings outside the store\n\nApp Store and Google Play pages are indexed by web search and often cited by\nAI assistants when someone asks \"best app for [job]\". Two checks on every\naudit:\n\n- **Entity match**: developer name, app name, and the one-line description\n  match the brand's canonical entity facts (see `suede-ai-seo`). A developer\n  name that still shows an old company name splits the entity.\n- **Web landing page**: the app has a crawlable page on the brand's site that\n  states what it does, links to both store listings, and carries\n  `SoftwareApplication` (or `MobileApplication`) JSON-LD matching the store\n  facts. Route the page itself to `suede-seo-audit`.\n\n## Pre-Launch Metadata Mode\n\nUse this mode when the app has no live listing yet, so there is no URL to audit.\nSearch language belongs in the keyword surfaces; product differentiation belongs\nin screenshots, the description body, and promo text.\n\n1. Pick one winnable target keyword before the listing is written: users\n   plausibly search it, competitors exist but are not all dominant incumbents,\n   recent apps show the niche is alive, the app satisfies the searcher's job\n   directly, and the term is not a competitor trademark.\n2. Write name, subtitle, and keyword field inside the hard App Store limits\n   below. Do not repeat a word across the three fields, use no spaces after\n   commas in the keyword field, keep one of singular or plural, and front-load\n   the highest-value terms.\n3. Plan screenshots outcome first: screenshot 1 sells the result, screenshot 2\n   sells the differentiator, captions use the searcher's words.\n4. Run every claim through a feature-truth check. Never advertise a feature the\n   build does not have.\n5. Set a 2 to 4 week measurement plan for rankings, impressions, product page\n   conversion, and promo text or caption rotation.\n\nHard limits (confirm against the dated Apple reference file before shipping):\napp name 30 characters, subtitle 30, keyword field 100 (comma-separated),\npromotional text 170.\n\nOutput artifacts:\n\n- `aso\u002Fkeywords.md` and `aso\u002Faso-doc.md`\n- `fastlane\u002Fmetadata\u002F\u003Clocale>\u002Fname.txt`, `subtitle.txt`, `keywords.txt`,\n  `description.txt`, and `promotional_text.txt`\n- a screenshot title plan and the ordered screenshot asset list\n\n---\n\n## Common Issues Checklist\n\nFlag these if found. Items marked _(tier-dependent)_ should be evaluated against\nthe app's brand maturity tier: they may be deliberate choices for Dominant apps.\n\nEvery flag carries an **author action**, so the reader knows what to do with it:\n\n| Action | Meaning |\n|---|---|\n| **Blocks the listing** | Risks rejection, removal, or ranking suppression. Fix before the next submission. |\n| **Required** | Costs measurable installs or conversion. Fix in the next release cycle. |\n| **Optional** | Upside, not a defect. Ship if capacity allows. |\n\n**Always flag (all tiers):**\n\n- [ ] Rating below 4.0: **required**\n- [ ] Last update > 3 months ago: **required**\n- [ ] Google Play description never names the core use-case terms in natural language, or stuffs them as keyword lists: **required**\n- [ ] Google Play missing feature graphic: **blocks the listing** (no featured placement without it)\n- [ ] Apple keyword field likely has repeated words (inferred from title+subtitle): **required**\n- [ ] Category mismatch (app would face less competition in a different category): **required**\n- [ ] Fewer than 5 screenshots: **required**\n\n**Flag for Challenger\u002FEstablished only** _(not mistakes for Dominant apps):_\n\n- [ ] Title wastes characters on brand name only (no keywords): **required** _(Dominant: brand IS the keyword)_\n- [ ] Subtitle\u002Fshort description duplicates title keywords: **required**\n- [ ] Description first 3 lines are generic: **required** _(Dominant: may be brand-voice choice)_\n- [ ] No preview video: **optional** _(Dominant: may be rational if product is hard to demo)_\n- [ ] Screenshots are just UI dumps with no messaging\u002Fcaptions: **required** _(Dominant: lifestyle\u002Fbrand shots may convert better)_\n- [ ] Only 1-2 localizations: **optional** _(score relative to actual market, not absolute count)_\n- [ ] No in-app events or promotional content: **optional** _(Dominant utility apps may not need discovery help)_\n\n**Flag for all tiers but note context:**\n\n- [ ] No developer responses to negative reviews: **required** _(note volume: responding at 10M+ reviews is a different challenge than at 1K)_\n- [ ] Generic \"What's New\" text: **optional** _(Apple 2.3.12 makes it **blocks the listing** when the release carries significant changes)_\n\nProhibited title metadata (emojis, ALL CAPS, \"best\"\u002F\"#1\"\u002F\"free\", CTAs on Google\nPlay) is always **blocks the listing**: see `references\u002Fgoogle-play-specs.md`.\n\n---\n\n## Task-Specific Questions\n\n1. What is the App Store or Google Play URL?\n2. Is this your app or a competitor's?\n3. What category does the app compete in?\n4. Do you have competitor URLs to compare against?\n5. Are you focused on search visibility, conversion rate, or both?\n6. Do you have access to App Store Connect or Google Play Console data?\n\n---\n\n## Boundaries\n\n- Do not claim keyword rank, conversion lift, review status, or store approval without a current source or console readback.\n- Do not edit or submit store metadata, screenshots, builds, prices, or releases without explicit authorization.\n- Do not invent competitor performance, customer sentiment, or platform benchmarks; label estimates and their source dates.\n- Do not reuse copyrighted competitor assets or generate an alternate Suede S in screenshot recommendations.\n\n## Routing\n\n- Need paid app-install creative -> use `suede-ad-creative`.\n- Need install attribution or in-app events -> use `suede-analytics`.\n- Need customer language for listing copy -> use `suede-customer-research`.\n- Need an iOS or Android product build -> use `site-to-ios-app` or `android-app-factory`; native iOS from scratch is a private Suede AI companion, not in this pack: ios-app-factory.\n- Need App Store metadata authored for an app that has not shipped yet -> stay in `suede-aso` and run Pre-Launch Metadata Mode.\n- From those skills, route listing audits, metadata strategy, and screenshot sequencing back to `suede-aso`.\n","# Suede AI App Store Optimization Skills\n\nRead [the worked delivery contract](references\u002Fworked-contract.md) for a concrete\ninput, expected artifact, failure response and validation example.\n\n## Compatibility\n\nWorks with live listing URLs or a prelaunch feature brief; web access for current official store field rules, console exports for performance evidence. Store write access is unnecessary for an audit or metadata draft.\n\nAnalyze App Store and Google Play listings with the Suede ASO scoring system. Fetch\nlive listing data, score metadata, visuals, and ratings, then produce a\nprioritized action plan.\n\n## Before Auditing\n\n**Check for product marketing context first:**\nIf `.agents\u002Fproduct-marketing.md` exists (or `.claude\u002Fproduct-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.\n\n## Phase 1: Identify Store & Fetch\n\n### Detect store type from URL\n\n```\nApple:  apps.apple.com\u002F{country}\u002Fapp\u002F{name}\u002Fid{digits}\nGoogle: play.google.com\u002Fstore\u002Fapps\u002Fdetails?id={package}\n```\n\nIf the user gives an app name instead of a URL, search the web for:\n`site:apps.apple.com \"{app name}\"` or `site:play.google.com \"{app name}\"`\n\n### Fetch the listing\n\nUse WebFetch to retrieve the listing page. Extract every available field:\n\n**Apple App Store fields:**\n\n- App name (title): 30 char limit\n- Subtitle: 30 char limit\n- Description (long): not indexed for search, but matters for conversion\n- Promotional text: 170 chars, updatable without new release\n- Category (primary + secondary)\n- Screenshots (count, order, caption text)\n- Preview video (presence, duration)\n- Rating (average + count)\n- Recent reviews (visible ones)\n- Price \u002F in-app purchases\n- Developer name\n- Last updated date\n- Version history notes\n- Age rating\n- Size\n- Languages \u002F localizations listed\n- In-app events (if any visible)\n\n**Google Play fields:**\n\n- App name (title): 30 char limit\n- Short description: 80 char limit\n- Full description: 4,000 char limit, IS indexed for search\n- Category + tags\n- Feature graphic (presence)\n- Screenshots (count, order)\n- Preview video (presence)\n- Rating (average + count)\n- Recent reviews (visible ones)\n- Price \u002F in-app purchases\n- Developer name\n- Last updated date\n- What's new text\n- Downloads range\n- Content rating\n- Data safety section\n- Languages listed\n\nIf WebFetch returns incomplete data (stores render client-side), note gaps and\nwork with what's available. Ask the user to paste missing fields if critical.\n\n### Visual asset assessment\n\nWebFetch cannot extract screenshot images or caption text. **Take a screenshot\nof the listing page** to get visual data:\n\n1. Navigate to the listing URL and capture a full-page screenshot\n2. Assess the screenshot for: icon quality, screenshot count, caption text,\n   messaging quality, preview video presence, feature graphic (Google Play)\n3. If browser tools are unavailable, ask the user to share a screenshot of the\n   listing page\n\n**Promotional text (Apple):** This 170-char field appears above the description\nbut is often indistinguishable from it in scraped HTML. If you cannot confirm\nits presence, note this and recommend the user check App Store Connect.\n\n---\n\n## Phase 1.5: Assess Brand Maturity\n\nBefore scoring, classify the app into one of three tiers. This determines how\nyou interpret \"textbook ASO\" deviations: a deliberate brand choice by a\nhousehold name is not the same as a missed opportunity by an unknown app.\n\n### Tier definitions\n\n| Tier            | Signals                                                                                                                              | Examples                                    |\n| --------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- |\n| **Dominant**    | Household name, 1M+ ratings, top-10 in category, near-universal brand recognition. Users search by brand name, not generic keywords. | Instagram, Uber, Spotify, WhatsApp, Netflix |\n| **Established** | Well-known in their category, 100K+ ratings, strong organic installs, recognized brand but not universally known.                    | Strava, Notion, Duolingo, Cash App, Calm    |\n| **Challenger**  | Building awareness, \u003C100K ratings, needs discovery through keywords and ASO tactics. Most apps fall here.                            | Your app, most indie\u002Fstartup apps           |\n\nClassification happens here, before any scoring. The per-dimension adjustments\neach tier earns live under \"Brand Maturity Adjustments\" in\n`references\u002Fscoring-criteria.md`, which Phase 2 loads before scoring: do not\nrestate or re-derive them here.\n\n**Key principle:** Before docking points, ask: \"Is this a mistake or a deliberate\nchoice by a team that has data I don't?\" If the app has 1M+ ratings and a\ndedicated ASO team, assume their choices are data-informed unless clearly wrong.\n\n---\n\n## Phase 2: Score Each Dimension\n\nScore each dimension 0-10 using the criteria in `references\u002Fscoring-criteria.md`.\nApply the brand maturity tier adjustments from Phase 1.5.\n\nReference files for platform specs and benchmarks:\n\n- `references\u002Fapple-specs.md`: Official Apple character limits, screenshot\u002Fvideo specs, CPP\u002FPPO rules, rejection triggers\n- `references\u002Fgoogle-play-specs.md`: Official Google Play limits, screenshot specs, Android Vitals thresholds, policies\n- `references\u002Fbenchmarks.md`: How to use (and not use) third-party benchmarks, directional patterns, and how to build a client baseline from console data\n\n### Dimensions and Weights\n\n| #   | Dimension            | Weight | What It Covers                                                            |\n| --- | -------------------- | ------ | ------------------------------------------------------------------------- |\n| 1   | Title & Subtitle     | 20%    | Character usage, keyword presence, clarity, brand + keyword balance       |\n| 2   | Description          | 15%    | First 3 lines, natural use of core terms (Google), CTA, structure, promotional text |\n| 3   | Visual Assets        | 25%    | Screenshot count\u002Fquality\u002Fmessaging, video, icon, feature graphic          |\n| 4   | Ratings & Reviews    | 20%    | Average rating, volume, recency, developer responses                      |\n| 5   | Metadata & Freshness | 10%    | Category choice, update recency, localization count, data safety          |\n| 6   | Conversion Signals   | 10%    | Price positioning, IAP transparency, social proof, download range         |\n\n**Final score** = weighted sum of the dimensions that were actually observed.\n\n### Unassessable dimensions (read before computing any score)\n\n`references\u002Fscoring-criteria.md` defines score 0 as \"cannot assess (data\nunavailable)\". Missing data is the normal case here, not the exception:\nWebFetch cannot extract screenshots or caption text, and promotional text is\nindistinguishable in scraped HTML. A 0 for unfetched data is not a bad listing;\nscoring it as one fabricates a failing grade (an unobserved Visual Assets\ndimension at 25% weight silently drops an A listing to D).\n\nHouse rule:\n\n1. A dimension you could not observe is **excluded from the weighted\n   denominator**, not scored 0. Rescale the remaining weights and state the\n   denominator used (\"74\u002F100 across 4 dimensions carrying 75% weight\").\n2. List every excluded dimension as **not assessed**, with the reason and what\n   the user would need to supply to close it (a screenshot of the listing page,\n   App Store Connect access).\n3. If **more than 25% of total weight** is unassessed, **withhold the letter\n   grade entirely.** Report the partial scores and the blocked dimensions\n   instead; do not present a grade the evidence cannot support.\n\n### Score interpretation\n\n| Score  | Grade | Meaning                                                   |\n| ------ | ----- | --------------------------------------------------------- |\n| 85-100 | A     | Well-optimized; focus on A\u002FB testing and iteration        |\n| 70-84  | B     | Good foundation; clear opportunities to improve           |\n| 50-69  | C     | Significant gaps; prioritized fixes will have high impact |\n| 30-49  | D     | Major optimization needed across multiple dimensions      |\n| 0-29   | F     | Listing needs a complete overhaul                         |\n\n---\n\n## Phase 3: Competitor Comparison (Optional)\n\nIf the user provides competitor URLs or asks for comparison:\n\n1. Fetch 2-3 top competitors in the same category\n2. Run the same scoring on each\n3. Build a comparison table highlighting where the user's app is weaker\u002Fstronger\n4. Identify keyword gaps: terms competitors rank for that the user's app doesn't target\n\nIf no competitors are specified, suggest the user provide 2-3 or offer to search\nfor top apps in their category.\n\n---\n\n## Phase 4: Generate Report\n\nUse the template in `references\u002Freport-template.md` to structure the output.\n\nThe report must include:\n\n1. **Score card**: table with all 6 dimensions, scores, the weighted denominator\n   actually used, and the grade (withheld per the unassessable-dimension rule\n   when more than 25% of weight went unassessed)\n2. **Top 3 quick wins**: changes that take \u003C1 hour and have highest impact\n3. **Detailed findings**: per-dimension breakdown with specific issues and fixes\n4. **Keyword suggestions**: based on title\u002Fdescription analysis and competitor gaps\n5. **Visual asset recommendations**: specific screenshot\u002Fvideo improvements\n6. **Priority action plan**: ordered list of changes by impact vs effort\n\n### Report rules\n\n- Every recommendation must be **specific and actionable** (\"Change subtitle from X to Y\" not \"Improve subtitle\")\n- Include character counts for all text recommendations\n- Flag platform-specific differences (Apple vs Google) when relevant\n- Note what CANNOT be assessed without paid tools (search volume, exact rankings)\n- When suggesting keyword changes, explain WHY each keyword matters\n\n---\n\n## Platform-Specific Rules\n\nCharacter limits, screenshot and video specs, CPP and experiment rules, policy\nprohibitions, Android Vitals thresholds, editorial curation, and rejection\ntriggers are versioned in the three reference files listed in Phase 2. Read the\none for the store being audited before scoring any dimension against a spec:\nthey are the source of truth, and dated platform facts are not repeated here.\n\nThe one comparison that drives scoring on every audit stays inline:\n\n### What Apple Indexes vs What Google Indexes\n\n| Field                 | Apple Indexed?   | Google Indexed?        |\n| --------------------- | ---------------- | ---------------------- |\n| Title                 | Yes              | Yes (strongest signal) |\n| Subtitle \u002F Short desc | Yes              | Yes                    |\n| Keyword field         | Yes (hidden)     | Does not exist         |\n| Long description      | No               | Yes (heavily)          |\n| Screenshot captions   | Unconfirmed      | No                     |\n| In-app events         | Yes              | N\u002FA (LiveOps instead)  |\n| Developer name        | No               | Partial                |\n| IAP names             | Yes              | Yes                    |\n\n### Store listings outside the store\n\nApp Store and Google Play pages are indexed by web search and often cited by\nAI assistants when someone asks \"best app for [job]\". Two checks on every\naudit:\n\n- **Entity match**: developer name, app name, and the one-line description\n  match the brand's canonical entity facts (see `suede-ai-seo`). A developer\n  name that still shows an old company name splits the entity.\n- **Web landing page**: the app has a crawlable page on the brand's site that\n  states what it does, links to both store listings, and carries\n  `SoftwareApplication` (or `MobileApplication`) JSON-LD matching the store\n  facts. Route the page itself to `suede-seo-audit`.\n\n## Pre-Launch Metadata Mode\n\nUse this mode when the app has no live listing yet, so there is no URL to audit.\nSearch language belongs in the keyword surfaces; product differentiation belongs\nin screenshots, the description body, and promo text.\n\n1. Pick one winnable target keyword before the listing is written: users\n   plausibly search it, competitors exist but are not all dominant incumbents,\n   recent apps show the niche is alive, the app satisfies the searcher's job\n   directly, and the term is not a competitor trademark.\n2. Write name, subtitle, and keyword field inside the hard App Store limits\n   below. Do not repeat a word across the three fields, use no spaces after\n   commas in the keyword field, keep one of singular or plural, and front-load\n   the highest-value terms.\n3. Plan screenshots outcome first: screenshot 1 sells the result, screenshot 2\n   sells the differentiator, captions use the searcher's words.\n4. Run every claim through a feature-truth check. Never advertise a feature the\n   build does not have.\n5. Set a 2 to 4 week measurement plan for rankings, impressions, product page\n   conversion, and promo text or caption rotation.\n\nHard limits (confirm against the dated Apple reference file before shipping):\napp name 30 characters, subtitle 30, keyword field 100 (comma-separated),\npromotional text 170.\n\nOutput artifacts:\n\n- `aso\u002Fkeywords.md` and `aso\u002Faso-doc.md`\n- `fastlane\u002Fmetadata\u002F\u003Clocale>\u002Fname.txt`, `subtitle.txt`, `keywords.txt`,\n  `description.txt`, and `promotional_text.txt`\n- a screenshot title plan and the ordered screenshot asset list\n\n---\n\n## Common Issues Checklist\n\nFlag these if found. Items marked _(tier-dependent)_ should be evaluated against\nthe app's brand maturity tier: they may be deliberate choices for Dominant apps.\n\nEvery flag carries an **author action**, so the reader knows what to do with it:\n\n| Action | Meaning |\n|---|---|\n| **Blocks the listing** | Risks rejection, removal, or ranking suppression. Fix before the next submission. |\n| **Required** | Costs measurable installs or conversion. Fix in the next release cycle. |\n| **Optional** | Upside, not a defect. Ship if capacity allows. |\n\n**Always flag (all tiers):**\n\n- [ ] Rating below 4.0: **required**\n- [ ] Last update > 3 months ago: **required**\n- [ ] Google Play description never names the core use-case terms in natural language, or stuffs them as keyword lists: **required**\n- [ ] Google Play missing feature graphic: **blocks the listing** (no featured placement without it)\n- [ ] Apple keyword field likely has repeated words (inferred from title+subtitle): **required**\n- [ ] Category mismatch (app would face less competition in a different category): **required**\n- [ ] Fewer than 5 screenshots: **required**\n\n**Flag for Challenger\u002FEstablished only** _(not mistakes for Dominant apps):_\n\n- [ ] Title wastes characters on brand name only (no keywords): **required** _(Dominant: brand IS the keyword)_\n- [ ] Subtitle\u002Fshort description duplicates title keywords: **required**\n- [ ] Description first 3 lines are generic: **required** _(Dominant: may be brand-voice choice)_\n- [ ] No preview video: **optional** _(Dominant: may be rational if product is hard to demo)_\n- [ ] Screenshots are just UI dumps with no messaging\u002Fcaptions: **required** _(Dominant: lifestyle\u002Fbrand shots may convert better)_\n- [ ] Only 1-2 localizations: **optional** _(score relative to actual market, not absolute count)_\n- [ ] No in-app events or promotional content: **optional** _(Dominant utility apps may not need discovery help)_\n\n**Flag for all tiers but note context:**\n\n- [ ] No developer responses to negative reviews: **required** _(note volume: responding at 10M+ reviews is a different challenge than at 1K)_\n- [ ] Generic \"What's New\" text: **optional** _(Apple 2.3.12 makes it **blocks the listing** when the release carries significant changes)_\n\nProhibited title metadata (emojis, ALL CAPS, \"best\"\u002F\"#1\"\u002F\"free\", CTAs on Google\nPlay) is always **blocks the listing**: see `references\u002Fgoogle-play-specs.md`.\n\n---\n\n## Task-Specific Questions\n\n1. What is the App Store or Google Play URL?\n2. Is this your app or a competitor's?\n3. What category does the app compete in?\n4. Do you have competitor URLs to compare against?\n5. Are you focused on search visibility, conversion rate, or both?\n6. Do you have access to App Store Connect or Google Play Console data?\n\n---\n\n## Boundaries\n\n- Do not claim keyword rank, conversion lift, review status, or store approval without a current source or console readback.\n- Do not edit or submit store metadata, screenshots, builds, prices, or releases without explicit authorization.\n- Do not invent competitor performance, customer sentiment, or platform benchmarks; label estimates and their source dates.\n- Do not reuse copyrighted competitor assets or generate an alternate Suede S in screenshot recommendations.\n\n## Routing\n\n- Need paid app-install creative -> use `suede-ad-creative`.\n- Need install attribution or in-app events -> use `suede-analytics`.\n- Need customer language for listing copy -> use `suede-customer-research`.\n- Need an iOS or Android product build -> use `site-to-ios-app` or `android-app-factory`; native iOS from scratch is a private Suede AI companion, not in this pack: ios-app-factory.\n- Need App Store metadata authored for an app that has not shipped yet -> stay in `suede-aso` and run Pre-Launch Metadata Mode.\n- From those skills, route listing audits, metadata strategy, and screenshot sequencing back to `suede-aso`.\n",{"name":5,"metadata":47,"description":7},{"version":48,"display-name":49},"2.0.1","Suede AI App Store Optimization Skills","main","2b63f856ce19c2a797929cacabd9e0fc936812fa","plugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso",468,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-11 02:22:54",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill suede-aso",{"tool":66,"command":67},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill suede-aso",{"tool":69,"command":70},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill suede-aso","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002FSKILL.md",true,[74,80,84,88,92,96,100,104,108],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"agents\u002Fopenai.yaml","REFERENCE","参考文档",583,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002Fagents\u002Fopenai.yaml",{"path":81,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":82,"sourceHtmlUrl":83},"CARD.md",4331,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002FCARD.md",{"path":85,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":86,"sourceHtmlUrl":87},"evals\u002Fevals.json",7799,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002Fevals\u002Fevals.json",{"path":89,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fapple-specs.md",7569,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002Freferences\u002Fapple-specs.md",{"path":93,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fbenchmarks.md",3269,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002Freferences\u002Fbenchmarks.md",{"path":97,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fgoogle-play-specs.md",6581,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002Freferences\u002Fgoogle-play-specs.md",{"path":101,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Freport-template.md",5115,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002Freferences\u002Freport-template.md",{"path":105,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fscoring-criteria.md",14128,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002Freferences\u002Fscoring-criteria.md",{"path":109,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":110,"sourceHtmlUrl":111},"references\u002Fworked-contract.md",1857,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-aso\u002Freferences\u002Fworked-contract.md",[113,139,164,198,217,231],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":42},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[120,121,122,123,124,125,126,127,128,129,130,24,131,132,133,134,135,136,137,138],"search","deja search","error","ready","never","memory","re","decide","fix","design","debugging","you","done","reviewer","io","change","cli","merge","past",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":42},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[146,147,148,149,125,150,151,152,153,154,155,156,157,134,158,159,160,161,162,163],"reflect","deja reflect","brew","remember","project rules","project","session","end","reflection","Rules","decisions","review","with","record","github","next","https","node",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":181,"publishedAt":42},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[170,175,178],{"categoryNo":171,"categoryName":172,"taxonomyType":173,"taxonomyTypeDesc":174},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":176,"categoryName":177,"taxonomyType":173,"taxonomyTypeDesc":174},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":179,"categoryName":180,"taxonomyType":173,"taxonomyTypeDesc":174},"01JBSEEDCAT000000000000023","Skill与智能体开发",[166,182,183,184,185,186,151,187,126,188,189,190,191,24,192,193,194,195,196,197],"Video","short-form","standalone","PDF","viral","tiktok","short","social","MCP","song","URL","image","mcp server","schedule","api","publish",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":204,"publishedAt":42},"01M71569ZM2X3H5RBFK8PVKMK2","review-study","Review a QuestionPunk survey before launch for wording, answer choices, branching, and missing settings. Use for check my survey or review this draft before publishing.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fquestionpunk\u002Fcodex-plugin\u002Fskills\u002Freview-study\u002FSKILL.md",[],[205,206,157,27,207,208,209,210,34,211,212,213,214,215,216],"study","review study","answer","missing","survey","publishing","check","draft","settings","launch","my","branching",{"skillNo":218,"name":219,"nameZh":6,"description":220,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":221,"categories":222,"keywords":223,"publishedAt":42},"01M71567GV0C35YQBY0DPGR86B","manage-study","Find QuestionPunk studies, check status, publish an explicitly requested draft, or retrieve its participant link. Use for find my survey, publish this study, or how many people responded.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fquestionpunk\u002Fcodex-plugin\u002Fskills\u002Fmanage-study\u002FSKILL.md",[],[224,205,225,27,209,34,226,211,212,197,227,228,229,230,215],"manage study","manage","people","how","find","link","status",{"skillNo":232,"name":233,"nameZh":6,"description":234,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":235,"categories":236,"keywords":237,"publishedAt":42},"01M71565A8TCA01AZQZRGRYMFZ","create-study","Create a saved QuestionPunk survey draft from a research brief or edit specified questions. Use for requests such as make a customer feedback survey or shorten my onboarding study.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fquestionpunk\u002Fcodex-plugin\u002Fskills\u002Fcreate-study\u002FSKILL.md",[],[238,205,239,240,241,242,27,243,209,244,34,245,246,212,247,248,249,250,251,215],"create study","create","brief","as","feedback","customer feedback","research brief","shorten","saved","research","requests","customer","questions","edit"]