- cli/lib/rt.ts: the runtime layer on node: modules (spawn / spawnSync with Bun's defaults, exit codes and "Executable not found", which with PATHEXT, sleep, serve, Glob, hasher, gunzip, stdin, SQLite, packageRoot, config imports with a type-stripping fallback for Node 20); every Bun.* use in cli/ goes through it - tools/gen-embedded.ts -> cli/lib/embedded.ts: templates/, cli/shots/*.html and Play's Data safety form embedded (replaces Bun text imports; the bundle and the compiled sidecar carry them), checked fresh by bun run ci - package.json: bin dist/storebound.mjs (Node ESM bundle, tools/build-node.ts, prepack), engines node >=20 - bun run ci: node bundle + node smoke (real node: --version, help, check same as Bun, scan, release plan --help, init, MCP handshake + tool call); Forgejo CI sets up Node 20; tests/node-compat.test.ts guards cli/ - install writes npx MCP commands when run with Node; bin/storebound falls back to Node - docs: npx storebound init (Node 20+) or bunx storebound init
51 lines
3.8 KiB
Markdown
51 lines
3.8 KiB
Markdown
# FAQ
|
|
|
|
**Is it only for games?** No. It started with my game, but every command is about store records, not engines or
|
|
genres. `init --profile app` and `--profile subscription-app` give you templates for a utility app with accounts and
|
|
for a subscription app (Data safety, App Privacy, declarations, listing and screenshot copy), the `app` screenshot
|
|
style, account deletion and demo account checks, and subscriptions on both stores. Game-only advice (IARC game
|
|
questions, gameplay footage, ad mediation) is marked as such in the skills.
|
|
|
|
**Do I need Claude (or any AI tool)?** No. The CLI is a normal command and the skills are Markdown checklists you can
|
|
read yourself. The AI integrations are optional adapters generated from the same files.
|
|
|
|
**Does it fill the questionnaires?** The ones with an API, yes: Play Data safety (the whole form from `dataSafety` in
|
|
the config; the import replaces the form, so the config is the single truth), Apple age rating, content rights,
|
|
categories, price and availability, the export compliance answer and the App Review details. The stores have no
|
|
public API for Play's App content cards (IARC content rating, target audience, ads, advertising ID, app access,
|
|
government / financial / health / news) or for Apple's App Privacy labels. For those, `init` gives you prepared
|
|
answers (`store/declarations.md`, `store/app-privacy.md`, per profile: a utility app with an account, a subscription
|
|
app, or a free-to-play game with ads and IAP),
|
|
and the `store-declarations` skill has the exact clicks: an agent with browser tools can fill them in while you
|
|
watch, or you copy them in yourself. Either way the answers are your statements to the stores: change what does not
|
|
match your app, and the agent asks you whenever the code does not prove an answer. `validate` cannot see these
|
|
forms, so `store-preflight` lists them as a manual check.
|
|
|
|
**My app or game is Unity / Godot / Flutter / React Native / native, not web.** Screenshots and clips come from the iOS Simulator
|
|
(`ios-sim`), an Android emulator or device (`android-emu`) or a folder you fill with any tool; only the rendering of
|
|
the store images uses a headless browser. The store commands do not care about the engine at all: they work on
|
|
your AAB / build numbers and listing files.
|
|
|
|
**Is my store account safe?** storebound uses the official APIs with keys you create and can revoke, never your
|
|
password. Store writes are dry runs until you say otherwise, and the public steps (submit, release) stay with you.
|
|
Use an App Store Connect key with the App Manager role and a Play service account limited to your app.
|
|
|
|
**Why Bun, and does it need Bun?** storebound is developed and tested on Bun (TypeScript, `fetch`, a test runner built in),
|
|
with zero runtime dependencies. You do not need Bun to use it: the npm package runs on Node 20+ (`npx storebound`),
|
|
and `bunx storebound` runs the same CLI on Bun 1.1+.
|
|
|
|
**Does it upload my video to YouTube?** No. Play only takes a YouTube URL, and uploading to YouTube needs your Google
|
|
account; `shots video` makes the file, you upload it and paste the URL into `play.video`.
|
|
|
|
**Can it run store experiments for me?** On the App Store, mostly: `apple ppo create / upload` builds a Product Page
|
|
Optimization test from your `shots` variants (treatments, locales, screenshots) and you start it (`apple ppo start`
|
|
asks first). Results per treatment are only shown in App Store Connect. Play store listing experiments have no API:
|
|
storebound renders and checks the variant images, you set the experiment up in Play Console.
|
|
|
|
**Does it answer reviews by itself?** No. It drafts one file per review, your agent helps write the replies, and only
|
|
the drafts you mark `approved: true` are sent, by you, after a confirmation. Replies that offer something for a rating
|
|
are refused.
|
|
|
|
---
|
|
|
|
[All docs](README.md) · [README](../README.md)
|