aso-keywords
Skill from yybd/app-factory
Install
npx skills add yybd/app-factory --skill aso-keywords
Runs the open skills CLI and installs the skill for your agent (Claude Code, Codex, Cursor …). Alternatively copy the skill folder into .claude/skills/ or upload it in Claude.ai under Settings → Skills.
As a Claude Code plugin
/plugin marketplace add yybd/app-factory
/plugin install apple-track@app-factory
This skill is part of the plugin “apple-track”. In Claude Code the plugin installs it together with the plugin’s other skills, commands and hooks.
What does the aso-keywords skill do?
Description from the SKILL.md in the source repository.
Questions about aso-keywords
What does the aso-keywords skill do?
App Store Optimization for APPLE search, done the way an ASO analyst does it: research real search terms per storefront with data (App Store autocomplete, the store's own results, rating counts; Apple Ads popularity when a key is present), score them for relevance, popularity and difficulty, pack the name, subtitle and 100-character keywords field per locale, record the change as an experiment, and review the ranks four weeks later. Use when the user wants better App Store search ranking or discoverability, keyword research, to audit or rewrite the keywords field, to choose between name, subtitle and keywords, to track ranks, or to review a past keyword change ("מילות מפתח", "דירוג בחיפוש", "ASO", "למה לא מוצאים את האפליקציה"). Works fully with no Apple Ads account. It owns the keyword strategy and the 100-character field; app-store-metadata owns the files. Not for Google Play, which has no keywords field — play-store-metadata writes Play's visible copy.
How do I install aso-keywords?
In a terminal: npx skills add yybd/app-factory --skill aso-keywords. The skills CLI asks which agents to install it for. In Claude.ai you can upload the skill folder as a ZIP under Settings → Skills.
Which agents can use aso-keywords?
Skills use the open SKILL.md format, which Claude Code, Claude.ai, the Claude API, OpenAI Codex, Cursor, Gemini CLI and other agents support.
Is aso-keywords safe to use?
Our automatic check found patterns worth a look (see “Check”). That is not proof of anything bad – read the SKILL.md and scripts before installing.
More skills from yybd/app-factory
Audit and manage the in-app localization of a Capacitor / web-shell app, whose UI strings live in JavaScript and HTML rather than in .strings, .xcstrings or strings.xml. Use whenever such an app needs a language checked, added or fixed, when a screen shows the wrong language or an empty label, when asked to find untranslated or hardcoded UI text, or when handling RTL in a bilingual app ("שפה לא נכונה", "תרגום באפליקציה"). It finds the failure this architecture hides: a lookup that falls back instead of failing, so a missing translation ships silently as the wrong language. For an Xcode project whose strings really are in String Catalogs, use localization-i18n instead — that skill has nothing to work on here. It covers the web layer's strings; native Apple localization is localization-i18n's job.
Tighten existing product copy — App Store / Google Play listing text, marketing and product sites, README marketing sections, in-app strings, replies to store reviews — when it reads clumsily: long sentences, stacked clauses, the same point made twice, throat-clearing openers, jargon the buyer does not know, or a translation that reads as a translation rather than as the language. Use when the user says copy is convoluted, wordy, clunky, unprofessional, hard to read, sounds machine-written, "מסורבל", "מנוסח רע", "נשמע כאילו מודל כתב", or asks to rewrite, tighten, sharpen or polish existing text in any language. This skill EDITS text that already exists; it does not decide what to say. Run it before delivering copy to a store or deploying a site.
Build an app's product profile — the one document every piece of copy about it is later derived from: store listings, site pages, campaigns. Use when onboarding a new app, before writing any copy for it, or when the user asks to "analyze my app", "write up what my app does", "build the marketing profile", "document the app's advantages" ("נתח את האפליקציה", "בנה פרופיל"). It reads the app's source like a product analyst, interviews the owner for what code cannot reveal, researches the real competitors, and proposes a feature and advantage list for the owner to edit before anything is written. Writes `profile.md`, an owner-facing translation beside it, and prepares the media folder. It does NOT capture media (appstore-media does), does NOT write store listing text (store-metadata-writer does), and never writes the app's name or subtitle — those live in the app's README, owned by app-identity.
Decide an app's NAME for both stores, and own the project README as the source of truth for the name, subtitle / short description, and detected feature list. Use when the user wants to name or rename an app, asks "what should I call my app", wants to change the name under the icon or in a store listing, or wants the README's feature list written or refreshed ("תן שם לאפליקציה", "עדכן את ה-README"). Run it when the app is feature-complete, and always BEFORE app-store-metadata, play-store-metadata, aso-keywords and appstore-media, which all read the name and feature list from here. It scans the code for features and monetization, proposes ASO-aware candidates, and DISCUSSES them: it never picks a name on its own. Once decided it writes the display name into the Apple build settings and into Android's strings.xml, and owns the README's version label and changelog. It does NOT write the store metadata files or the keyword field — app-store-metadata, play-store-metadata and aso-keywords own those.
Set up the app factory in a repo, or say why its skills are not loading. Use when a store or release skill that should exist is missing, when the user asks "why aren't the skills loading here", "set up the factory", "enable the tracks", "which tracks does this repo need" ("למה אין לי את הסקילים", "תפעיל את המסלולים"), or after installing the marketplace for the first time. It reads the repo to decide what it is, proposes the tracks that follow, and writes the repo's own .claude/settings.json. It does NOT install plugins, does NOT change the machine's global settings, and does NOT commit — enabling a track is a fact about one repo.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling or beautifying any web UI; "תעצב את הדף", "שפר את העיצוב"). Generates creative, polished code and UI design that avoids generic AI aesthetics. It does NOT decide a page's structure — `page-builder` does that first — and does NOT audit the result (`web-design-guidelines`).
Verify an Apple app is submission-ready and ship it — the FINAL App Store / Mac App Store step: confirm the content is already in place (signing, compliance, metadata, screenshots, app record), then archive, upload, complete the App Store Connect website steps, and submit. Use this when the user wants to release, publish, submit or upload an iOS or Mac build ("תעלה לאפסטור", "תשלח לבדיקה"), asks "how do I upload or submit to the App Store", or is at the end of the process and wants the verify → upload → submit checklist. This skill does NOT produce the listing copy, screenshots, compliance fixes, or signing — those are owned by their focused skills (app-store-metadata, appstore-media, app-store-review-compliance, apple-credentials, code-signing-provisioning). It VERIFIES their output is present and valid, then builds, uploads, and submits (including the website-only steps fastlane can't do).
Set up direct (outside the Mac App Store) distribution for a macOS Xcode app: a dedicated "Direct" target — sandbox off, hardened runtime on, a DIRECT flag, direct-only frameworks linked to it alone — wired to Sparkle auto-updates with EdDSA signing keys, a SUFeedURL, a "Check for Updates" menu item and an appcast signing script — and, for selling that build, a licence key from a hosted checkout, kept out of the App Store build. Use whenever the user wants automatic updates for a Mac app sold outside the App Store ("הפצה ישירה", "עדכונים אוטומטיים"), add Sparkle, create a second non-MAS target alongside an App Store build, set up an appcast, sell the direct build with a licence key ("מפתח רישיון", Lemon Squeezy), or ask how to keep Sparkle or licensing out of the App Store build. Pairs with `notarize-and-distribute`, which builds the signed DMG this skill's appcast points at.
Related skills in Research & Web
Rigor Explore compatible skill slug for meaningful and potentially novel deep learning research candidates. Use when the researcher has chosen the task family, dataset, benchmark, evaluation method, provided SOTA references, and wants candidate-only exploration on top of `current_research` with auditable repo understanding, idea gating, fair comparison, and governed experiments written to `explore_outputs/`. Do not use for README-first trusted reproduction, open-ended direction finding, narrow code-only or run-only exploration, passive repo analysis, verified novelty claims, or implicit experimentation.
Rigor Reproduce compatible skill slug for README-first deep learning repository reproduction. Use when the user wants an end-to-end, minimal-trustworthy flow that reads the repository first, selects the smallest documented inference or evaluation target, coordinates intake, setup, trusted execution, optional trusted training, optional repository analysis, and optional paper-gap resolution, enforces conservative patch rules, records evidence assumptions deviations and human decision points, and writes the standardized `repro_outputs/` bundle. Do not use for paper summary, generic environment setup, isolated repo scanning, standalone command execution, silent protocol changes, score chasing, or broad research assistance outside repository-grounded reproduction.
Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized `train_outputs/`. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.
Rigor Improve / Rigor Explore run leaf skill for bounded exploratory evidence in deep learning research repositories. Use when the researcher explicitly authorizes exploratory runs such as small-subset validation, short-cycle guess-and-check, batch sweeps, idle-GPU search, or quick transfer-learning trials, with fair-comparison caveats and no-overclaim summaries in `explore_outputs/`. Do not use for end-to-end exploration orchestration on top of `current_research`, trusted baseline execution, conservative training verification, default routing, verified SOTA claims, or implicit experimentation.
Search, scrape, crawl, extract structured data, and monitor web pages via the ScrapeGraph AI CLI. Use when the user asks to search the web, scrape a webpage, grab content from a URL, extract JSON from a site, crawl documentation or site sections, monitor a page for changes, inspect request history, check ScrapeGraph credits, or validate API setup.
When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also use when the user mentions 'sales deck,' 'pitch deck,' 'one-pager,' 'leave-behind,' 'objection handling,' 'deal-specific ROI analysis,' 'demo script,' 'talk track,' 'sales playbook,' 'proposal template,' 'buyer persona card,' 'battle card,' 'battlecard,' 'competitive one-pager,' 'win-loss analysis,' 'why are we losing deals,' 'loss reasons,' 'how do I respond to this objection,' 'prospect just said,' 'help my sales team,' 'sales materials,' or 'what should I give my sales reps,' 'cold call script,' or 'voicemail script.' Use this for any document or asset that helps a sales team close deals. For public competitor comparison pages, see competitors. For running buyer interviews or churn research, see customer-research. For marketing website copy, see copywriting. For cold outreach emails, see cold-email. For the offer being sold (bonuses, guarantees, pricing structure), see offers.
Web search and content extraction with Tavily and Exa via inference.sh CLI. Apps: Tavily Search, Tavily Extract, Exa Search, Exa Answer, Exa Extract. Capabilities: AI-powered search, content extraction, direct answers, research. Use for: research, RAG pipelines, fact-checking, content aggregation, agents. Triggers: web search, tavily, exa, search api, content extraction, research, internet search, ai search, search assistant, web scraping, rag, perplexity alternative
When the user wants to conduct, analyze, or synthesize customer research. Use when the user mentions "customer research," "ICP research," "talk to customers," "analyze transcripts," "customer interviews," "survey analysis," "support ticket analysis," "voice of customer," "VOC," "build personas," "customer personas," "jobs to be done," "JTBD," "what do customers say," "what are customers struggling with," "Reddit mining," "G2 reviews," "review mining," "digital watering holes," "community research," "forum research," "competitor reviews," "customer sentiment," "PMF survey," "product/market fit survey," "customer interview questions," "interview outreach," "Sales Safari," or "find out why customers churn/convert/buy." Use for analyzing existing research assets, mining online sources, AND running primary research (interviews and surveys). For writing copy informed by research, see copywriting. For acting on research to improve pages, see cro.