# storebound for GitHub Copilot Mobile app and game store releases (Google Play, App Store). Skills live in `skills//SKILL.md` (Agent Skills format; `storebound install --agent copilot` copies them to `.github/skills/` of an app or game project). These rules apply to every AI tool that uses storebound (skills, MCP server or the CLI in a terminal). **Read `skills/store-pitfalls/SKILL.md` before any store task.** It lists the mistakes already made in real releases (store lists that lag after a create, dry runs without a plan, taken App Store names, byte limits, ...) and what to do. 1. **The owner decides public and irreversible steps.** Submitting for review (App Review or Beta App Review), releasing a version, resuming or completing a rollout, canceling a submission, deleting products or listings, accepting agreements, sending review replies, inviting or removing testers, changing prices, starting or stopping a store experiment: explain what will happen and let the owner do it (or run the command only after a clear yes in chat). storebound's MCP server does not offer these at all. 2. **Dry run first.** Every write command has `--dry` (MCP: `dry_run`, default true). Show the dry run (the rows that change, not just a count), then run it for real only after the owner agrees. 3. **Read before you write.** `storebound scan` (offline: rejection risks in the project itself), `storebound check` (offline) and `storebound validate` (read-only, both stores) tell you what is missing and in which order to fix it. 4. **Credentials only from the environment, `.storebound/`** in the project (gitignored) **or a credential profile** (`~/.storebound/credentials/.json`, named by `--account ` or a workspace). Never ask for keys, passwords or tokens in chat, never print them, never write them into the config, docs or commits. The same goes for the App Review demo account (`reviewDemoAccount` in `.storebound/credentials.json`): the owner puts it there. 5. **Never answer a compliance question you cannot know.** Export compliance, Data safety, App Privacy, age rating, target audience: ask the owner when the code does not prove the answer. A wrong "no" is worse than a slow "ask". 6. **Pick builds by explicit number.** Use the build number / versionCode you just uploaded, never "the latest". 7. **Long uploads run in the background with a log** (`storebound play images > .storebound/images.log 2>&1 &`) and you report the progress lines, not guesses. 8. **No manipulative tactics** with reviewers, players or store policies: no fake reviews, no incentives for ratings, no hidden features, no misleading screenshots, no keyword stuffing. 9. **Personal data stays local.** Tester lists, review reply drafts, health reports and analytics snapshots live in `.storebound/` (gitignored). Never put tester emails, reviewer names or crash logs into issues, docs or commits, and never ask for tester emails in chat (storebound masks them in its output). 10. **Console forms without an API: drive them yourself, agent-first.** `storebound console plan
--json` (MCP `console_plan`) gives the start URL, steps, the answer sheet, the buttons you must never press and the verified UI facts. Drive the page with your own browser tool, adapt to what it shows, run long flows as an in-page async loop that writes `window.__log` (one evaluate call times out around 45 s), stop before the final button (Publish, Submit, Create, a final Save) and tell the owner exactly what to press, then `storebound console verify `. Never sign in, accept an agreement or grant a permission (a service account's app access) for the owner. `storebound console fill` is the optional scripted fast path; it never blocks you. ## Tools - CLI: `storebound ` (`storebound help`); config `storebound.config.ts`, credentials in env or `.storebound/`. - MCP: `storebound mcp` (stdio). MCP 2026-07-28 + 2025-11-25. Write tools default to `dry_run: true`; submit / release / cancel / delete / send are not exposed. - Readiness: `storebound scan` (offline rejection risks in the project files), `storebound check` (offline), `storebound validate` (read-only, both stores). - Every endpoint: `storebound api apple|play ` (skill store-api). GETs run; writes are dry unless the owner adds `--yes` in a terminal; MCP has the read-only `api_get`. ## Skills | skill | for | |---|---| | `account-deletion` | Make account deletion pass App Store and Google Play review for an app with sign-up or sign-in | | `adhoc-distribution` | Get a test build of a mobile app or game onto specific devices without a store review | | `ads-levelplay-checks` | Renamed to ads-mediation-checks (AdMob, AppLovin MAX and Unity LevelPlay / ironSource). Kept so existing installs and links keep working. Use ads-mediation-checks for any ad mediation, app-ads.txt, SKAdNetwork or "no fill" question | | `ads-mediation-checks` | Diagnose and verify ad mediation in a mobile app or game before and after store release | | `app-icons` | Generate every icon a mobile app or game needs from one artwork | | `app-previews` | Make App Store app preview videos and a Google Play promo video for a mobile app or game from real footage (gameplay or app flows) | | `app-store-promotion` | App Store promotion tools for a mobile app or game through the App Store Connect API | | `apple-ads` | Read Apple Ads (formerly Apple Search Ads) results for a mobile app or game and make small, owner-approved bid, daily budget and pause changes | | `appstore-first-release` | Step-by-step first (and later) App Store release of a mobile app or game | | `aso-basics` | App store optimization basics for a mobile app's or game's text | | `build-and-sign` | Sign, build and upload a mobile app or game from the terminal | | `console-autofill` | Fill App Store Connect and Google Play Console forms that have no API (New App, App Privacy, Play Create app, the IARC content rating, Target audience and content plus Ads; the App Store age rating is guidance because the API sets it). Agent-first by default | | `export-compliance` | Answer App Store export compliance (encryption) for a mobile app or game correctly | | `listing-localization` | Translate the store listing of a mobile app or game into more languages | | `migrate-from-fastlane` | Move a mobile app or game from fastlane (deliver, supply, snapshot / screengrab, Appfile, Deliverfile) to storebound with `storebound import fastlane` | | `play-first-release` | Step-by-step first (and later) Google Play release of a mobile app or game | | `portfolio-originality` | Originality gate for studios and developers that ship many similar mobile apps or games (templates, white-label apps, reskins) | | `ppp-pricing` | Propose purchasing power parity (PPP) prices for a mobile app's or game's in-app products in every App Store territory and Google Play region with `storebound prices ppp` | | `privacy-manifest` | Add and check Apple privacy manifests (PrivacyInfo.xcprivacy) for an iOS app or game | | `privacy-policy` | Write and host one studio-wide privacy policy page for all of a developer's mobile apps and games | | `release-flows` | Repo-local workflows for a mobile app or game | | `release-management` | Ship updates safely after the first release | | `revenuecat-sync` | Optional adapter that keeps a RevenueCat project's catalog in step with the storebound config | | `review-access` | Give App Store and Google Play reviewers working access to an app behind a sign-in | | `review-rejections` | Triage and answer an App Store or Google Play rejection, policy warning or strike for a mobile app or game | | `review-replies` | Reply to App Store and Google Play reviews of a mobile app or game the safe way | | `store-analytics` | Take store analytics snapshots for a mobile app or game (App Store impressions, product page views, downloads and conversion through the Analytics Reports API; Google Play store listing visitors, acquisitions and installs from the Play reports bucket) and compare them with listing, screenshot and experiment changes from git; download App Store sales / finance reports and Play earnings / sales reports with a summary per product and currency | | `store-api` | Call any App Store Connect API or Google Play Developer API operation that storebound's commands do not wrap, safely | | `store-declarations` | Answer the store compliance forms for a mobile app or game | | `store-health` | Watch a released mobile app's or game's crash and ANR health on both stores | | `store-iap-setup` | Create and price in-app purchases (consumables, non-consumables like "remove ads" or a Pro unlock, non-renewing passes, coin/gem packs, starter packs) on Google Play and App Store Connect from one product list | | `store-pitfalls` | Known pitfalls with App Store Connect, Google Play and storebound itself, learned from real releases, and what to do about each | | `store-preflight` | Run and read the storebound readiness checks before submitting a mobile app or game | | `store-screenshots` | Produce store screenshots and the Play feature graphic for a mobile app or game in every required size and many languages | | `store-subscriptions` | Set up auto-renewable subscriptions on the App Store and Google Play from one config | | `testflight` | Run TestFlight for a mobile app or game through the App Store Connect API | | `web-presence` | Set up the web side of a mobile app or game | | `whats-new` | Write user-facing release notes ("What's new") for a mobile app or game update from the git log since the last tag |