- `storebound console plan <form> [--json] [--lookup]`: read-only plan for an AI agent that drives the browser itself: start URL (deep links), ordered steps, answer sheet with the console's exact labels (certain / ask owner, curly quotes noted), never-press list, verified UI facts, driving guidance (in-page async loop + window.__log), verify instructions. All six forms. - `storebound console verify <form> [--from-text <file|->]`: App Privacy per-type summaries from page text, Play Create app from input states, content rating / target audience summaries, App Store record and age rating from the API; exit 1 on a mismatch. - MCP: console_plan, console_verify (read-only); console fill stays off MCP. - App Privacy (verified 2026-10-12): two information steps, unlabeled purpose checkboxes (nearest parent text), "Definitions and Examples" never pressed; fixture and engine follow. - Play Create app (verified 2026-10-12): /developers/<id>/create-new-app, App package name + read-only Check availability, material-radio inner [role=radio] click, app dashboard URL and play.appId, service account "Add app" as an owner step. - console-autofill skill rewritten agent-first; agents-core rule 10; README; pitfalls 12, 18 (confirmed sign-out), 19; CHANGELOG; play-first-release.
99 lines
10 KiB
Markdown
99 lines
10 KiB
Markdown
<!-- generated by tools/gen-adapters.ts from docs/agents-core.md and skills/*/SKILL.md; do not edit -->
|
|
|
|
# storebound
|
|
|
|
Toolchain for taking mobile apps and games from nothing to "Submit for review" on Google Play and the App Store.
|
|
Before a store task, open the matching skill
|
|
file below and follow it step by step.
|
|
|
|
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/<profile>.json`, named by `--account <profile>` 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 <form> --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 <form>`.
|
|
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 <command>` (`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 <operationId>` (skill store-api). GETs run; writes are dry unless the owner adds `--yes` in a terminal; MCP has the read-only `api_get`.
|
|
|
|
## Skills
|
|
|
|
- `skills/account-deletion/SKILL.md`: Make account deletion pass App Store and Google Play review for an app with sign-up or sign-in
|
|
- `skills/adhoc-distribution/SKILL.md`: Get a test build of a mobile app or game onto specific devices without a store review
|
|
- `skills/ads-levelplay-checks/SKILL.md`: 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
|
|
- `skills/ads-mediation-checks/SKILL.md`: Diagnose and verify ad mediation in a mobile app or game before and after store release
|
|
- `skills/app-icons/SKILL.md`: Generate every icon a mobile app or game needs from one artwork
|
|
- `skills/app-previews/SKILL.md`: 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)
|
|
- `skills/app-store-promotion/SKILL.md`: App Store promotion tools for a mobile app or game through the App Store Connect API
|
|
- `skills/apple-ads/SKILL.md`: 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
|
|
- `skills/appstore-first-release/SKILL.md`: Step-by-step first (and later) App Store release of a mobile app or game
|
|
- `skills/aso-basics/SKILL.md`: App store optimization basics for a mobile app's or game's text
|
|
- `skills/build-and-sign/SKILL.md`: Sign, build and upload a mobile app or game from the terminal
|
|
- `skills/console-autofill/SKILL.md`: 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
|
|
- `skills/export-compliance/SKILL.md`: Answer App Store export compliance (encryption) for a mobile app or game correctly
|
|
- `skills/listing-localization/SKILL.md`: Translate the store listing of a mobile app or game into more languages
|
|
- `skills/migrate-from-fastlane/SKILL.md`: Move a mobile app or game from fastlane (deliver, supply, snapshot / screengrab, Appfile, Deliverfile) to storebound with `storebound import fastlane`
|
|
- `skills/play-first-release/SKILL.md`: Step-by-step first (and later) Google Play release of a mobile app or game
|
|
- `skills/portfolio-originality/SKILL.md`: Originality gate for studios and developers that ship many similar mobile apps or games (templates, white-label apps, reskins)
|
|
- `skills/ppp-pricing/SKILL.md`: 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`
|
|
- `skills/privacy-manifest/SKILL.md`: Add and check Apple privacy manifests (PrivacyInfo.xcprivacy) for an iOS app or game
|
|
- `skills/privacy-policy/SKILL.md`: Write and host one studio-wide privacy policy page for all of a developer's mobile apps and games
|
|
- `skills/release-flows/SKILL.md`: Repo-local workflows for a mobile app or game
|
|
- `skills/release-management/SKILL.md`: Ship updates safely after the first release
|
|
- `skills/revenuecat-sync/SKILL.md`: Optional adapter that keeps a RevenueCat project's catalog in step with the storebound config
|
|
- `skills/review-access/SKILL.md`: Give App Store and Google Play reviewers working access to an app behind a sign-in
|
|
- `skills/review-rejections/SKILL.md`: Triage and answer an App Store or Google Play rejection, policy warning or strike for a mobile app or game
|
|
- `skills/review-replies/SKILL.md`: Reply to App Store and Google Play reviews of a mobile app or game the safe way
|
|
- `skills/store-analytics/SKILL.md`: 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
|
|
- `skills/store-api/SKILL.md`: Call any App Store Connect API or Google Play Developer API operation that storebound's commands do not wrap, safely
|
|
- `skills/store-declarations/SKILL.md`: Answer the store compliance forms for a mobile app or game
|
|
- `skills/store-health/SKILL.md`: Watch a released mobile app's or game's crash and ANR health on both stores
|
|
- `skills/store-iap-setup/SKILL.md`: 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
|
|
- `skills/store-pitfalls/SKILL.md`: Known pitfalls with App Store Connect, Google Play and storebound itself, learned from real releases, and what to do about each
|
|
- `skills/store-preflight/SKILL.md`: Run and read the storebound readiness checks before submitting a mobile app or game
|
|
- `skills/store-screenshots/SKILL.md`: Produce store screenshots and the Play feature graphic for a mobile app or game in every required size and many languages
|
|
- `skills/store-subscriptions/SKILL.md`: Set up auto-renewable subscriptions on the App Store and Google Play from one config
|
|
- `skills/testflight/SKILL.md`: Run TestFlight for a mobile app or game through the App Store Connect API
|
|
- `skills/web-presence/SKILL.md`: Set up the web side of a mobile app or game
|
|
- `skills/whats-new/SKILL.md`: Write user-facing release notes ("What's new") for a mobile app or game update from the git log since the last tag
|
|
|
|
## Working on storebound itself
|
|
|
|
- Bun + TypeScript strict, zero runtime dependencies. `bun run ci` must pass (adapters fresh, tests, typecheck, scrub).
|
|
- Inner loop: `bun run ci:quick` (typecheck, the tests related to your change against origin/main, scrub; seconds).
|
|
Before every push: the full `bun run ci` (every check and test, in parallel shards), and check its exit code.
|
|
- Skills are the single source: edit `skills/*/SKILL.md` or `docs/agents-core.md`, then `bun tools/gen-adapters.ts`.
|
|
- Never commit credentials, account / team / issuer / key / app ids or personal data; placeholders use example.com.
|